I've read a bunch about MQTT, Belchertown, and Weewx so I thought I would able to get this working. From the pages I read on github and such, it didn't seem like it took a lot of configuration to mosquitto to get it working. From the links I posted above that I followed, it didn't seem that I needed to have SSL certs working yet to get it working locally. I figured I would do that first before venturing out to get this working on a website. So I'll go back and see what I can configure to get the certs added to my conf files.
Do you have any websites that you suggest to use to get this working? I feel like I'm close. On Friday, August 2, 2024 at 8:41:28 AM UTC-4 gary....@gmail.com wrote: > I see you haven't done much research. > If you want to understand this and get the Belchertown skin to work, you > need to do some. > A default mosquitto.conf isn't going to work as you want. > You will likely need SSL certs in order to have websockets work via the > internet vs local LAN. > You should have writing to mosquitto password protected, but > allow anonymous reading. > > When MQTT/Websockets works, it is great. Getting there requires a passing > familiarity with the care and feeding of mosquitto. > > On Thursday, August 1, 2024 at 11:38:28 PM UTC-4 M&M wrote: > >> Where can I find out if I have acl? >> >> My mosquitto.conf file looks a bit different. I didn't change any of it >> after it was installed besides the two listener lines. It looks like this: >> >> pi@raspberrypi:~ $ more /etc/mosquitto/mosquitto.conf >> # Place your local configuration in /etc/mosquitto/conf.d/ >> # >> # A full description of the configuration file is at >> # /usr/share/doc/mosquitto/examples/mosquitto.conf.example >> >> pid_file /run/mosquitto/mosquitto.pid >> >> persistence true >> persistence_location /var/lib/mosquitto/ >> >> log_dest file /var/log/mosquitto/mosquitto.log >> >> include_dir /etc/mosquitto/conf.d >> >> listener 1883 >> listener 9001 >> protocol websockets >> >> On Thursday, August 1, 2024 at 9:38:48 AM UTC-4 gary....@gmail.com wrote: >> >>> Do you have an acl and does it resemble this? >>> # Allow anonymous access to the sys >>> topic read $SYS/# >>> >>> # Allow anonymous to read weather >>> topic read weather/# >>> topic read tester/# >>> >>> # weewx readwrite to the loop >>> user weewx >>> topic weather/# >>> topic tester/# >>> >>> Did you create a password for the weewx user (not the linux user, the >>> mqtt user)? >>> >>> Does your mosquitto conf file resemble this? >>> persistence false >>> allow_anonymous true >>> password_file /etc/mosquitto/pwfile >>> acl_file /etc/mosquitto/acl >>> # Insecure mqtt to localhost only, and secure mqtt >>> listener 1883 >>> listener 8883 >>> certfile /etc/mosquitto/certs/cert.pem >>> cafile /etc/mosquitto/certs/chain.pem >>> keyfile /etc/mosquitto/certs/privkey.pem >>> protocol mqtt >>> >>> # websockets >>> listener 8080 >>> certfile /etc/mosquitto/certs/cert.pem >>> cafile /etc/mosquitto/certs/chain.pem >>> keyfile /etc/mosquitto/certs/privkey.pem >>> protocol websockets >>> On Wednesday, July 31, 2024 at 11:47:46 PM UTC-4 M&M wrote: >>> >>>> I checked mosquitto.conf and it has "listener 1883" in it. I also >>>> disabled my pihole and checked that my raspberry pi is listening on port >>>> 1883. >>>> >>>> On Friday, July 26, 2024 at 11:23:25 PM UTC-4 M&M wrote: >>>> >>>>> I checked journalctl and now I'm seeing this error: >>>>> >>>>> Jul 26 23:16:30 raspberrypi weewxd[1141]: ERROR >>>>> user.ambientweatherapi: AmbientAPI get_devices() returned empty dict >>>>> Jul 26 23:16:30 raspberrypi weewxd.py[1141]: ambientweatherapi driver >>>>> encountered an error. >>>>> Jul 26 23:16:30 raspberrypi weewxd[1141]: ERROR >>>>> user.ambientweatherapi: ambientweatherapi driver encountered an error. >>>>> Jul 26 23:16:30 raspberrypi weewxd.py[1141]: Error caught was: >>>>> AmbientAPI get_devices() returned empty dict >>>>> Jul 26 23:16:30 raspberrypi weewxd[1141]: ERROR >>>>> user.ambientweatherapi: Error caught was: AmbientAPI get_devices() >>>>> returned >>>>> empty dict >>>>> Jul 26 23:16:30 raspberrypi weewxd.py[1141]: ambientweatherapi driver >>>>> had an error sending data to weewx. >>>>> Jul 26 23:16:30 raspberrypi weewxd[1141]: ERROR >>>>> user.ambientweatherapi: ambientweatherapi driver had an error sending >>>>> data >>>>> to weewx. >>>>> Jul 26 23:16:30 raspberrypi weewxd.py[1141]: Error caught was: >>>>> Previous error occured, skipping packet build. >>>>> Jul 26 23:16:30 raspberrypi weewxd[1141]: ERROR >>>>> user.ambientweatherapi: Error caught was: Previous error occured, >>>>> skipping >>>>> packet build. >>>>> >>>>> On Friday, July 26, 2024 at 11:20:51 PM UTC-4 M&M wrote: >>>>> >>>>>> Making some progress. I am back to having weewx running and I now >>>>>> have mosquito running as well. I was able to test that service by >>>>>> mosquitto_sub and mosquitto_pub which worked by sending "hello world". >>>>>> However when I check my local Belchertown page, it now says this at the >>>>>> top: >>>>>> >>>>>> Failed connecting to the weather station. Please try again later! >>>>>> Last Updated 26 July 2024, 23:10:00 >>>>>> >>>>>> On Friday, July 26, 2024 at 2:02:17 PM UTC-4 M&M wrote: >>>>>> >>>>>>> Oh thats right! I edited the /etc/default/locales file. I changed >>>>>>> it from en_GB.UTF-8 to en_US.UTF-8 since I was trying to fix the time >>>>>>> in >>>>>>> Belchertown skin to show a 12h time format. I believe I fixed it and >>>>>>> for >>>>>>> some reason, i decided to edit the locales file. I'll change that back >>>>>>> when I get to that system. >>>>>>> >>>>>>> Thanks. I believe that is what will fix it. >>>>>>> >>>>>>> On Friday, July 26, 2024 at 12:17:42 PM UTC-4 vince wrote: >>>>>>> >>>>>>>> >>>>>>>> https://stackoverflow.com/questions/14547631/python-locale-error-unsupported-locale-settling >>>>>>>> >>>>>>>> Have you messed with system locale at the os level or edited it in >>>>>>>> some weewx or mqtt config file ? There have been some skeletal reports >>>>>>>> about this over the years but I've never really understood the >>>>>>>> explanations. >>>>>>>> >>>>>>>> On Friday, July 26, 2024 at 3:41:42 AM UTC-7 Mark Jenks wrote: >>>>>>>> >>>>>>>>> Make sure MQTT is running correctly. You can test it via CLI. >>>>>>>>> This page goes into configuring a cert, you can stop reading at that >>>>>>>>> point. >>>>>>>>> >>>>>>>>> >>>>>>>>> https://medium.com/gravio-edge-iot-platform/how-to-set-up-a-mosquitto-mqtt-broker-securely-using-client-certificates-82b2aaaef9c8 >>>>>>>>> >>>>>>>>> >>>>>>>>> On Thursday, July 25, 2024 at 10:27:54 PM UTC-5 M&M wrote: >>>>>>>>> >>>>>>>>>> Also I tried commenting out all of the MQTT lines in weewx.conf >>>>>>>>>> so that I could get the service running again but it isn't running >>>>>>>>>> at all. >>>>>>>>>> Giving me the same error as I posted above. >>>>>>>>>> >>>>>>>>>> On Thursday, July 25, 2024 at 11:11:15 PM UTC-4 M&M wrote: >>>>>>>>>> >>>>>>>>>>> I'm getting closer. Mosquito service is running but weewx gives >>>>>>>>>>> me the follow error in journalctl: >>>>>>>>>>> >>>>>>>>>>> Jul 25 22:59:55 raspberrypi weewxd[25852]: INFO __main__: >>>>>>>>>>> Terminating weewx version 5.0.2 >>>>>>>>>>> Jul 25 22:59:55 raspberrypi systemd[1]: weewx.service: Succeeded. >>>>>>>>>>> Jul 25 22:59:55 raspberrypi systemd[1]: Stopped WeeWX. >>>>>>>>>>> Jul 25 22:59:55 raspberrypi systemd[1]: weewx.service: Consumed >>>>>>>>>>> 3h 44min 13.462s CPU time. >>>>>>>>>>> Jul 25 23:00:51 raspberrypi systemd[1]: Started WeeWX. >>>>>>>>>>> Jul 25 23:00:53 raspberrypi weewxd[28347]: INFO __main__: >>>>>>>>>>> Initializing weewxd version 5.0.2 >>>>>>>>>>> Jul 25 23:00:53 raspberrypi weewxd[28347]: INFO __main__: >>>>>>>>>>> Command line: /usr/share/weewx/weewxd.py /etc/weewx/weewx.conf >>>>>>>>>>> Jul 25 23:00:53 raspberrypi weewxd[28347]: Traceback (most >>>>>>>>>>> recent call last): >>>>>>>>>>> Jul 25 23:00:53 raspberrypi weewxd[28347]: File >>>>>>>>>>> "/usr/share/weewx/weewxd.py", line 265, in <module> >>>>>>>>>>> Jul 25 23:00:53 raspberrypi weewxd[28347]: main() >>>>>>>>>>> Jul 25 23:00:53 raspberrypi weewxd[28347]: File >>>>>>>>>>> "/usr/share/weewx/weewxd.py", line 107, in main >>>>>>>>>>> Jul 25 23:00:53 raspberrypi weewxd[28347]: weewx_root, >>>>>>>>>>> user_module = weeutil.startup.initialize(config_dict) >>>>>>>>>>> Jul 25 23:00:53 raspberrypi weewxd[28347]: File >>>>>>>>>>> "/usr/share/weewx/weeutil/startup.py", line 67, in initialize >>>>>>>>>>> Jul 25 23:00:53 raspberrypi weewxd[28347]: >>>>>>>>>>> importlib.import_module('user.extensions') >>>>>>>>>>> Jul 25 23:00:53 raspberrypi weewxd[28347]: File >>>>>>>>>>> "/usr/lib/python3.9/importlib/__init__.py", line 127, in >>>>>>>>>>> import_module >>>>>>>>>>> Jul 25 23:00:53 raspberrypi weewxd[28347]: return >>>>>>>>>>> _bootstrap._gcd_import(name[level:], package, level) >>>>>>>>>>> Jul 25 23:00:53 raspberrypi weewxd[28347]: File "<frozen >>>>>>>>>>> importlib._bootstrap>", line 1030, in _gcd_import >>>>>>>>>>> Jul 25 23:00:53 raspberrypi weewxd[28347]: File "<frozen >>>>>>>>>>> importlib._bootstrap>", line 1007, in _find_and_load >>>>>>>>>>> Jul 25 23:00:53 raspberrypi weewxd[28347]: File "<frozen >>>>>>>>>>> importlib._bootstrap>", line 986, in _find_and_load_unlocked >>>>>>>>>>> Jul 25 23:00:53 raspberrypi weewxd[28347]: File "<frozen >>>>>>>>>>> importlib._bootstrap>", line 680, in _load_unlocked >>>>>>>>>>> Jul 25 23:00:53 raspberrypi weewxd[28347]: File "<frozen >>>>>>>>>>> importlib._bootstrap_external>", line 790, in exec_module >>>>>>>>>>> Jul 25 23:00:53 raspberrypi weewxd[28347]: File "<frozen >>>>>>>>>>> importlib._bootstrap>", line 228, in _call_with_frames_removed >>>>>>>>>>> Jul 25 23:00:53 raspberrypi weewxd[28347]: File >>>>>>>>>>> "/etc/weewx/bin/user/extensions.py", line 18, in <module> >>>>>>>>>>> Jul 25 23:00:53 raspberrypi weewxd[28347]: >>>>>>>>>>> locale.setlocale(locale.LC_ALL, '') >>>>>>>>>>> Jul 25 23:00:53 raspberrypi weewxd[28347]: File >>>>>>>>>>> "/usr/lib/python3.9/locale.py", line 610, in setlocale >>>>>>>>>>> Jul 25 23:00:53 raspberrypi weewxd[28347]: return >>>>>>>>>>> _setlocale(category, locale) >>>>>>>>>>> Jul 25 23:00:53 raspberrypi weewxd[28347]: locale.Error: >>>>>>>>>>> unsupported locale setting >>>>>>>>>>> Jul 25 23:00:53 raspberrypi systemd[1]: weewx.service: Main >>>>>>>>>>> process exited, code=exited, status=1/FAILURE >>>>>>>>>>> Jul 25 23:00:53 raspberrypi systemd[1]: weewx.service: Failed >>>>>>>>>>> with result 'exit-code'. >>>>>>>>>>> Jul 25 23:00:53 raspberrypi systemd[1]: weewx.service: Consumed >>>>>>>>>>> 2.050s CPU time. >>>>>>>>>>> >>>>>>>>>>> On Thursday, July 25, 2024 at 1:47:21 PM UTC-4 vince wrote: >>>>>>>>>>> >>>>>>>>>>>> Pat's docs are authoritative for Belchertown and the MQTT stuff >>>>>>>>>>>> looks ok to me. Just follow that. >>>>>>>>>>>> >>>>>>>>>>>> https://github.com/weewx/weewx/wiki/mqtt has Tom's >>>>>>>>>>>> instructions for installing the MQTT extension. You can check it >>>>>>>>>>>> at least >>>>>>>>>>>> minimally by running "weectl extension list" and it should show up >>>>>>>>>>>> in the >>>>>>>>>>>> list of installed extensions. >>>>>>>>>>>> >>>>>>>>>>>> Your config file stuff for weewx that you posted looked ok to >>>>>>>>>>>> me. >>>>>>>>>>>> >>>>>>>>>>>> On Thursday, July 25, 2024 at 9:54:13 AM UTC-7 M&M wrote: >>>>>>>>>>>> >>>>>>>>>>>>> That is correct that I have the MQTT installed as an extension >>>>>>>>>>>>> for weewx which is running on the pi. I checked for a >>>>>>>>>>>>> mqtt.service and I'm >>>>>>>>>>>>> not seeing one on there. I'm also not seeing a mosquitto_sub or >>>>>>>>>>>>> pub >>>>>>>>>>>>> installed so I think I must have missed anothe page to get this >>>>>>>>>>>>> installed >>>>>>>>>>>>> and working. From searching around right now, it looks like I >>>>>>>>>>>>> need to >>>>>>>>>>>>> follow this page: >>>>>>>>>>>>> https://obrienlabs.net/how-to-setup-your-own-mqtt-broker/ >>>>>>>>>>>>> >>>>>>>>>>>>> I'm hoping to get this on a website that doesn't cost anything >>>>>>>>>>>>> but one step at a time. >>>>>>>>>>>>> >>>>>>>>>>>>> Am I on the right track? >>>>>>>>>>>>> >>>>>>>>>>>>> On Wednesday, July 24, 2024 at 10:50:45 PM UTC-4 vince wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> Connection refused generally means the remote computer is not >>>>>>>>>>>>>> accepting incoming connections on that port. It looks to me >>>>>>>>>>>>>> like you are >>>>>>>>>>>>>> trying to connect to the MQTT server on the same pi ? Did you >>>>>>>>>>>>>> enable and >>>>>>>>>>>>>> start the MQTT server ? >>>>>>>>>>>>>> >>>>>>>>>>>>>> Did you test it with mosquitto_sub and mosquitto_pub to know >>>>>>>>>>>>>> that the MQTT server is working ok ? >>>>>>>>>>>>>> >>>>>>>>>>>>>> The authoritative belchertown docs are at >>>>>>>>>>>>>> https://github.com/poblabs/weewx-belchertown?tab=readme-ov-file#mqtt-and-mqtt-websockets-optional >>>>>>>>>>>>>> >>>>>>>>>>>>>> if you haven't gone through them already. Note that it has a >>>>>>>>>>>>>> prerequisite >>>>>>>>>>>>>> to install the MQTT extension which itself has prerequisite >>>>>>>>>>>>>> python modules. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Test with mosquitto_sub/pub first to know your MQTT server is >>>>>>>>>>>>>> working as desired, then do the weewx part. >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Wednesday, July 24, 2024 at 7:30:33 PM UTC-7 M&M wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>>> Somewhat of a new user here to Weewx. I am running it on a >>>>>>>>>>>>>>> Raspberry Pi Zero W (192.168.0.196) and also installed the >>>>>>>>>>>>>>> Belchertown >>>>>>>>>>>>>>> skin. I followed these steps ( >>>>>>>>>>>>>>> https://www.wxforum.net/index.php?topic=43377.0) to install >>>>>>>>>>>>>>> and configure MQTT but I'm running into some errors. Here is >>>>>>>>>>>>>>> what part of >>>>>>>>>>>>>>> my weewx.conf file looks like for the MQTT stuff: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> [[MQTT]] >>>>>>>>>>>>>>> server_url = mqtt:// >>>>>>>>>>>>>>> random_username:random_...@192.168.0.196:1883 >>>>>>>>>>>>>>> <http://random_username:random_password@192.168.0.196:1883> >>>>>>>>>>>>>>> unit_system = US >>>>>>>>>>>>>>> topic = weather >>>>>>>>>>>>>>> binding = archive, loop >>>>>>>>>>>>>>> aggregation = aggregate >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> [[Belchertown]] >>>>>>>>>>>>>>> skin = Belchertown >>>>>>>>>>>>>>> HTML_ROOT = /var/www/html/weewx/belchertown >>>>>>>>>>>>>>> enable = true >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> [[[Extras]]] >>>>>>>>>>>>>>> #--- MQTT Websockets (for Real Time Streaming) >>>>>>>>>>>>>>> Options --- >>>>>>>>>>>>>>> mqtt_websockets_enabled = 1 >>>>>>>>>>>>>>> mqtt_websockets_host = 192.168.0.x >>>>>>>>>>>>>>> mqtt_websockets_port = 9001 >>>>>>>>>>>>>>> mqtt_websockets_ssl = 0 >>>>>>>>>>>>>>> mqtt_websockets_topic = weather/loop >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> I also added user.mqtt.MQTT to restful_services at the end >>>>>>>>>>>>>>> of the file. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> The error I'm seeing in journalctl is: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Jul 24 22:16:40 raspberrypi weewxd[25776]: ERROR user.mqtt: >>>>>>>>>>>>>>> Failed to connect to MQTT server (mqtt:// >>>>>>>>>>>>>>> random_username:x...@192.168.0.196:1883 >>>>>>>>>>>>>>> <http://random_username:xxx@192.168.0.196:1883>): [Errno >>>>>>>>>>>>>>> 111] Connection refused >>>>>>>>>>>>>>> Jul 24 22:16:40 raspberrypi weewxd[25776]: ERROR >>>>>>>>>>>>>>> weewx.restx: MQTT: Failed to publish record 2024-07-24 22:15:00 >>>>>>>>>>>>>>> EDT >>>>>>>>>>>>>>> (1721873700): MQTT client not available >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Any ideas what I'm missing? >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> -- You received this message because you are subscribed to the Google Groups "weewx-user" group. To unsubscribe from this group and stop receiving emails from it, send an email to weewx-user+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/weewx-user/2b8f1d9c-a456-4e9e-bbaa-782749a14629n%40googlegroups.com.