A ver, tras instalar el skin de
Belchertown en weewx como extensión y la extensión
paho-mqtt puse en el
weewx.conf esta sección en la sección
[StdRESTful][StdRESTful]
[[MQTT]]
server_url = mqtt://username:password@example.com:1883
topic = weather
binding = archive, loop
aggregation = aggregate
log_success = True
log_failure = True
Lo más importante es la línea
server_url donde se pone el usuario y contraseña y el servidor y puerto en el que
mosquitto va a estar escuchando. Por ejemplo yo le puse:
server_url = mqtt://minombre:micontraseña@localhost:1883de servidor le puse localhost ya que
mosquitto va a estar escuchando en la raspi en su puerto 1883 lo que publique weewx. Ese nombre y contraseña son los que generaremos con mosquitto:
sudo mosquitto_passwd -c /etc/mosquitto/passwd minombreAhí te preguntará de poner la contraseña dos veces para el usuario que le pongas y que será la que le pongamos a
server_urlUna vez generada la contraseña hay que generar un archivo
acl de acceso a mosquitto. En su interior:
# Allow anonymous access to the sys
topic read $SYS/#
# Allow anonymous to read weather
topic read weather/#
# weewx readwrite to the loop
user miusuariotopic weather/#
Sólo hay que cambiar la línea de
miusuario por el usuario que hayamos creado.
Después en
/etc/mosquitto/conf.d creamos un archivo llamado
weewx.conf con estas líneas:
persistence false
# mqtt
listener 1883
protocol mqtt
# websockets
listener 9001
protocol websockets
allow_anonymous true
password_file /etc/mosquitto/passwd
acl_file /etc/mosquitto/acl
Con esas líneas le estamos diciendo a mosquitto que escuche en el puerto 1883 lo que le envía weewx y que a su vez lo envíe por protocolo de websockets vía web al skin de Belchertown por el puerto 9001.
Ese puerto y servidor es lo que le pondremos al
skin.conf de Belchertown:
# MQTT Websockets defaults
mqtt_websockets_enabled = 1
mqtt_websockets_host = 192.168.1.100
mqtt_websockets_port = 9001
mqtt_websockets_ssl = 0
mqtt_websockets_topic = "weather/loop"
disconnect_live_website_visitor = 300000
Deberemos cambiar el
mqtt_websockets_host por la IP local de la raspi que deberá ser, como todo servidor, fija. En mi caso es la 192.168.1.100 así que habrá que cambiarla por la correspondiente.
Decir que todo esto es en local desde un PC conectado a la misma red que la raspi porque desde un navegador de la misma raspi sería poner en esa línea
localhost o
127.0.0.1Si va a ser para nuestro servidor web en local habrá que poner ahí el dominio de nuestra web y abrir ese puerto de websockets a la raspi en el router.
Si la web es externa habría que enviar a un servidor externo o tener mosquitto instalado en él.... ahí ya me pierdo un poco....
Lo más importante al principio es ver si tanto la extensión de weewx está enviando los datos a mosquitto como si este los está recibiendo.
Para ello si tenemos log separado de weewx vemos como lo sube con
sudo tail -f /var/log/weewx.log y si no tenemos log con
sudo tail -f /var/log/syslogPara ver si mosquitto lo está recibiendo
sudo tail -f /var/log/mosquitto/mosquitto.logEsto es para ver si está en funcionamiento de puesta en marcha al principio, una vez que vaya bien quitamos logs para que no esté machacando cada pocos segundos la tarjeta microSD. En weewx.conf ponemos en la sección de MQTT:
log_success = False
log_failure = False
y reiniciamos weewx.
En
/etc/mosquitto/mosquitto.conf cambiamos
log_dest file /var/log/mosquitto/mosquitto.log por
log_dest none y reiniciamos mosquitto.
Buuuuufffff después del tocho que he puesto....tendré que darle la razón a jantoni…. esto es para masoquistas