I've been trouble shooting getting the Belchertown skin MQTT Websocket real
time updates to work on my site shakerweather.com for a lot of this week.
I have WeeWx installed on a dedicated thin client on Ubuntu 20.04 LTS and
have Mosquitto and NGINX installed on the same machine. Running bare metal,
no docker or VMs here.
External access to WeeWx website is handled via NGINX reverse proxy manager
with SSL certs on a different server via docker. Requests to
shakerweather.com are sent to the proxy server and then to the WeeWx
machine.
With this setup, the site is served up fine internally and externally with
the updates at archive intervals every 5 minutes.
I know that the weewx-mqtt extension is installed correctly as I have been
able to test it locally and get the websocket updates to work perfectly
with the following configs:
*weewx.conf*
[[MQTT]]
server_url = mqtt://user:pw@localhost:8883/
topic = weather
unit_system = US
binding = archive, loop
aggregation = aggregate
*skin.conf*
# MQTT Websockets defaults
mqtt_websockets_enabled = 1
mqtt_websockets_host = "localhost"
mqtt_websockets_port = 8083
mqtt_websockets_ssl = 0
mqtt_websockets_topic = "weather/loop"
disconnect_live_website_visitor = 1800000
I am only able to see the the real time updates on the local machine only
with WeeWx and Mosquitto. If I try to access it by IP address elsewhere on
my LAN on other clients it does not connect and eventually fails. No luck
externally either - despite my NGINX Reverse Proxy Manger handling serving
the page and SSL certs the websocket real time updates don't pass through.
That was my original thought of how it would work.
After much trial and error, and reading every thread imaginable on this
along with many messages and some correspondence with Pat O'Brien I decided
to go ahead and setup a Digital Ocean Ubuntu VM and install Mosquito there
to serve as a cloud broker. I followed Pat's instructions exactly as he
outlines in setting up the cloud broker:
https://obrienlabs.net/how-to-setup-your-own-mqtt-broker/
I have the cloud MQTT broker installed correctly at Digital Ocean with
Let's Encrypt, and ran tests on it. Messages can be sent when
authenticated, ports are open, etc. However, I can get no further with the
websockets real time updates than "Connected. Waiting for data". If I
reboot the cloud MQTT broker I immediately get a disconnected message on
the website so it does appear to be connecting and waiting for data.
Somehow the data is simply not transferring from my WeeWx client to the
cloud MQTT broker at Digital Ocean. The other weird thing is if I try to
access shakerweather.com or the website by local IP address on the machine
that hosts WeeWx I always get a failed message, won't even connect to the
server. However, any other client on my LAN and external on WAN does not
have this issue.
Here are my current configs:
*weewx.conf*
[[MQTT]]
server_url = mqtt://user:[email protected]:8883/
topic = weather
unit_system = US
binding = archive, loop
aggregation = aggregate
[[[tls]]]
tls_version = tlsv1
ca_certs = /etc/ssl/certs/ca-certificates.crt
*skin.conf*
# MQTT Websockets defaults
mqtt_websockets_enabled = 1
mqtt_websockets_host = "mqtt.beldenserver.com"
mqtt_websockets_port = 8083
mqtt_websockets_ssl = 1
mqtt_websockets_topic = "weather/loop"
disconnect_live_website_visitor = 1800000
At this point, I have spent 20+ hours on this and hoping someone here can
point me in the right direction, it seems data is just not feeding the MQTT
topic. I'm fine with using Digital Ocean as a cloud MQTT server just to get
it up and running. My preferred state is eventually to selfhost it all.
Thanks in advance for anything I may be overlooking, advice or possible
solutions.
--
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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/weewx-user/38183ff6-d5d5-4151-a1b3-93fd618aef5cn%40googlegroups.com.