Autor Tema: Conectar web weewx Belchertown skin a través de MQTT  (Leído 2252 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado dtalens

  • Full Member
  • ***
  • Mensajes: 132
    • Ver Perfil
    • MeteoPego
  • Estación: ESPVA0300000003780H
Conectar web weewx Belchertown skin a través de MQTT
« en: 16 de Abril del 2021, 08:50:35 am »
Hola,

Al final he conseguido activar la actualización de la página weewx Belchertown a través de MQTT (ya veís que este skin me trae de cabeza...  *-* *-* *-*).
He seguido este tutorial https://potatoforinter.net/715/updated-guide-weewx-belchertown-mqtt-ws/3/ (en inglés) por si alguien se atreve.

Saludos,

Desconectado jantoni

  • Investigación
  • Hero Member
  • ******
  • Mensajes: 3.535
    • Ver Perfil
    • Rivas-Vaciamadrid Centro
  • Estación: ESMAD2800000028522A
Re:Conectar web weewx Belchertown skin a través de MQTT
« Respuesta #1 en: 16 de Abril del 2021, 09:15:18 am »
Ya sé que soy reiterativo, pero no encuentro sentido a tener las estaciones presentes en tiempo real.

No me imagino al visitante, mirando absorto como varía la velocidad del viento y la temperatura, arriba y abajo.

Siempre he dicho que es un derroche de recursos. Pero, a lo mejor, un día de estos me convencéis  *+* *+* *+*
Las opiniones que pueda escribir no suponen asesoramiento profesional. Cada usuario tomará sus decisiones bajo su propio riesgo.

Desconectado jmviper

  • Investigación
  • Hero Member
  • ******
  • Mensajes: 4.153
  • "Vortex Complex"
    • Ver Perfil
    • www.meteoarchena.es
  • Estación: Archena - ESMUR3000000030600B
Re:Conectar web weewx Belchertown skin a través de MQTT
« Respuesta #2 en: 16 de Abril del 2021, 09:19:41 am »
Qué derroche de recursos ??

Ni RAM ni CPU se disparan  *+* *+*



Archena, Valle de Ricote (Murcia). 120 msnm. 19.500 hab.
Davis Vantage Pro2 Plus

www.meteoarchena.es

Desconectado jmviper

  • Investigación
  • Hero Member
  • ******
  • Mensajes: 4.153
  • "Vortex Complex"
    • Ver Perfil
    • www.meteoarchena.es
  • Estación: Archena - ESMUR3000000030600B
Re:Conectar web weewx Belchertown skin a través de MQTT
« Respuesta #3 en: 16 de Abril del 2021, 09:22:53 am »
Yo también instalé lo del MQTT para Belchertown pero la pereza no me dejó hacer una especie de tutorial. Al ser en local había que abrir puerto al exterior para verlo en mi web.

Quizás me anime este finde a hacerlo para que otra gente se anime  *-* *-*

Por cierto....lo mejor es deshabilitar los logs del MQTT en weewx o está constantemente escribiendo SD, en mi caso puse los 3 segundos de actualización de la Davis y el log subía rápidamente.
« Última modificación: 16 de Abril del 2021, 09:25:27 am por jmviper »


Archena, Valle de Ricote (Murcia). 120 msnm. 19.500 hab.
Davis Vantage Pro2 Plus

www.meteoarchena.es

Desconectado jantoni

  • Investigación
  • Hero Member
  • ******
  • Mensajes: 3.535
    • Ver Perfil
    • Rivas-Vaciamadrid Centro
  • Estación: ESMAD2800000028522A
Re:Conectar web weewx Belchertown skin a través de MQTT
« Respuesta #4 en: 16 de Abril del 2021, 10:07:16 am »
Qué derroche de recursos ??

Ni RAM ni CPU se disparan  *+* *+*

Bueno, en eso discrepamos.

Los recursos no se circunscriben a la RAM y a la CPU.

Imagínate a millones de estaciones a lo largo del mundo, usando MQTT o similares, enviando paquetes de datos (millones x 2-3 segundos) que no ve nadie más que de vez en cuando. Es como estar lanzando pelotas al aire de forma continua, esperando que alguien lo vea un instante.

Pero es una opinión, insisto que, a lo mejor, hasta me convencéis de lo contrario. *-* *-* *-* *-*
Las opiniones que pueda escribir no suponen asesoramiento profesional. Cada usuario tomará sus decisiones bajo su propio riesgo.

Desconectado dtalens

  • Full Member
  • ***
  • Mensajes: 132
    • Ver Perfil
    • MeteoPego
  • Estación: ESPVA0300000003780H
Re:Conectar web weewx Belchertown skin a través de MQTT
« Respuesta #5 en: 16 de Abril del 2021, 11:15:53 am »
Yo también instalé lo del MQTT para Belchertown pero la pereza no me dejó hacer una especie de tutorial. Al ser en local había que abrir puerto al exterior para verlo en mi web...

Según el tutorial que he enlazado no hace falta abrir más puertos porqué te conectas a través del 443. En realidad si necesitas abrir un puerto pero sólo para tu red interna.

Qué derroche de recursos ??

Ni RAM ni CPU se disparan  *+* *+*

Bueno, en eso discrepamos.

Los recursos no se circunscriben a la RAM y a la CPU.

Imagínate a millones de estaciones a lo largo del mundo, usando MQTT o similares, enviando paquetes de datos (millones x 2-3 segundos) que no ve nadie más que de vez en cuando. Es como estar lanzando pelotas al aire de forma continua, esperando que alguien lo vea un instante.

Pero es una opinión, insisto que, a lo mejor, hasta me convencéis de lo contrario. *-* *-* *-* *-*

No he notado un aumento de recursos en mi server, de hecho, me parece que la web carga más rápido.

Igual me equivoco pero los datos mqtt se "leen" sólo cuando una persona se conecta a la web. La web si estas sin actividad durante un tiempo te desconnecta del mqtt. De todas formas, la mejora es relativa: el intervalo de actualización ha pasado de 2 min (sin mqtt) a un 1 min (ya que ese es el intervalo que guarda datos weewx), lo bueno es que no se recarga la página cada cierto tiempo, simplemente los datos van cambiando.

Yo si que me he quedado mirando la web un rato para ver como cambian las gráficas....  *-* *-* *-* *-*

Otro aspecto poco comentado es que la web accede a todo el topic MQTT "weather/loop" en el cual estan todos los datos que envia la estación. Si alguien se conecta a la consola de la web puede ver cualquier dato incluso la temperatura interna de mi casa.   :o :o :o
« Última modificación: 16 de Abril del 2021, 11:34:55 am por dtalens »

Desconectado jmviper

  • Investigación
  • Hero Member
  • ******
  • Mensajes: 4.153
  • "Vortex Complex"
    • Ver Perfil
    • www.meteoarchena.es
  • Estación: Archena - ESMUR3000000030600B
Re:Conectar web weewx Belchertown skin a través de MQTT
« Respuesta #6 en: 16 de Abril del 2021, 13:22:31 pm »

Imagínate a millones de estaciones a lo largo del mundo, usando MQTT o similares, enviando paquetes de datos (millones x 2-3 segundos) que no ve nadie más que de vez en cuando. Es como estar lanzando pelotas al aire de forma continua, esperando que alguien lo vea un instante.


Eso no es correcto... no se están lanzando pelotas al aire de forma continua.

El funcionamiento es: weewx envía datos en local gracias a una extensión (weewx-mqtt) al broker "mosquitto" que actúa como servidor al exterior enviando websockets al cliente que se los solicita (en este caso el navegador en el que vemos belchertown). Como es una conexión cliente-servidor solo se transmiten datos cuando el cliente los solicita.

No tendría ningún sentido enviar esas "pelotas al aire" para minimizar la emisión de datos con mqtt en sitios remotos. El que está constantemente enviando esas "pelotas al aire" es weewx a mosquitto pero es en local y no escribiendo SD ya que la conexión es de paquetes TCP/IP.

Yo también instalé lo del MQTT para Belchertown pero la pereza no me dejó hacer una especie de tutorial. Al ser en local había que abrir puerto al exterior para verlo en mi web...

Según el tutorial que he enlazado no hace falta abrir más puertos porqué te conectas a través del 443. En realidad si necesitas abrir un puerto pero sólo para tu red interna.


Sí, es un buen tutorial ya que te dice cómo configurar el servidor nginx con mosquitto. Con esa configuración puede usarse el mismo puerto de https (443) para enviar los websockets. Sin esa configuración mosquitto y nginx no podrían estar escuchando a la vez en el mismo puerto para la emisión de los websockets al exterior.

Faltaría ver cómo se hace para apache2, intentaré verlo esta tarde y configurarlo ya que yo abrí un puerto distinto para los websockets.

Yo el tutorial que seguí fue el del mismo autor del skin:

https://obrienlabs.net/how-to-setup-your-own-mqtt-broker/

no configurando el tema del SSL final (sinceramente es más trabajo que se esté encriptando/desencriptando cada paquete que hacerlo sin SSL). Esa sección es también con nginx pero hace la configuración principal del SSL en mosquitto .



Archena, Valle de Ricote (Murcia). 120 msnm. 19.500 hab.
Davis Vantage Pro2 Plus

www.meteoarchena.es

Desconectado jantoni

  • Investigación
  • Hero Member
  • ******
  • Mensajes: 3.535
    • Ver Perfil
    • Rivas-Vaciamadrid Centro
  • Estación: ESMAD2800000028522A
Re:Conectar web weewx Belchertown skin a través de MQTT
« Respuesta #7 en: 16 de Abril del 2021, 16:52:07 pm »
A ver si, al final, me vas a convencer

 *+* *+* *+* *+* *+* *+* *+* *+* *+* *+*
Las opiniones que pueda escribir no suponen asesoramiento profesional. Cada usuario tomará sus decisiones bajo su propio riesgo.

Desconectado dtalens

  • Full Member
  • ***
  • Mensajes: 132
    • Ver Perfil
    • MeteoPego
  • Estación: ESPVA0300000003780H
Re:Conectar web weewx Belchertown skin a través de MQTT
« Respuesta #8 en: 16 de Abril del 2021, 18:44:37 pm »
Esperad que ahora encuentro algunos "problemillas": el valor de partículas pm2,5 que sale en la página no es correcto. Me parece que el skin coge la media del valor de partículas. Si recargo la página momentáneamente se ve el valor actual pero en seguida vuelve a indicar la media. En la gráfica los valores son los esperados.


Creo que este "issue" está relacionado:
https://github.com/poblabs/weewx-belchertown/issues/648

ACTUALIZACIÓN: el error con las partículas tiene que ver con las unidades. Aquí lo resuelven: https://github.com/poblabs/weewx-belchertown/pull/653/commits/3539d64c40a4307072fa1e1ce360edb126296f89. Básicamente lo que he hecho es sobrescribir el archivo:
Código: [Seleccionar]
/etc/weewx/skins/Belchertown/js/belchertown.js.tmplAclarar que utilizo la versión 1.3b1 del skin en la cual hay bastantes cambios en el archivo "skin.conf"

Al modificar el archivo "belchertown.js.tmpl" no me mostraba correctamente los datos de lluvia acumulada... más problemas con las unidades. Hay que meterse en el archivo "weewx.conf" y indicar el apartado mqtt que coja los datos con las unidades adecuadas.
Código: [Seleccionar]
[[MQTT]]
        server_url = mqtt://user:pass@localhost:1883/
        topic = weather
        #retain = TRUE
        unit_system = METRIC
        binding = archive, loop
        log_success = False
        log_failure = True
        [[[inputs]]]
            [[[[dayRain]]]]
                units = mm
            [[[[rainRate]]]]
                units = mm_per_hour
            [[[[hourRain]]]]
                units = mm
            [[[[rain24]]]]
                units = mm
            [[[[dayRain]]]]
                units = mm


« Última modificación: 17 de Abril del 2021, 19:46:15 pm por dtalens »

Desconectado jmviper

  • Investigación
  • Hero Member
  • ******
  • Mensajes: 4.153
  • "Vortex Complex"
    • Ver Perfil
    • www.meteoarchena.es
  • Estación: Archena - ESMUR3000000030600B
Re:Conectar web weewx Belchertown skin a través de MQTT
« Respuesta #9 en: 16 de Abril del 2021, 20:43:03 pm »
A ver si, al final, me vas a convencer

 *+* *+* *+* *+* *+* *+* *+* *+* *+* *+*

No era mi intención  *-* *-*


Archena, Valle de Ricote (Murcia). 120 msnm. 19.500 hab.
Davis Vantage Pro2 Plus

www.meteoarchena.es

Desconectado ELX_CARRUS

  • Newbie
  • *
  • Mensajes: 28
    • Ver Perfil
  • Estación: ESPVA0300000003206A
Re:Conectar web weewx Belchertown skin a través de MQTT
« Respuesta #10 en: 23 de Octubre del 2021, 19:10:47 pm »
Hola a todos, estoy intentando configurar el MQTT en mi pagina, pero estoy un poco atascado. Llegado al punto 7 que es generar usuario y passw no lo entiendo y no consigo pasar de ahí.
No tengo todos los conocimientos de linux y voy probando.
Tengo instalado weewx con el skin Belchertown en https://meteoelx.com necesito por favor un empujón para salir del atasco.
muchas gracias.
Tengo la instalacion como usuario no-root en raspberrypi 
Saludos.
Bruno


service mosquitto restart
Now to generate some username and password details for /etc/mosquitto/passwd and access limits in /etc/mosquitto/acl!

mosquitto_passwd -c /etc/mosquitto/passwd -c /etc/mosquitto/passwd UserNameHere – You’re best to keep i

Desconectado jmviper

  • Investigación
  • Hero Member
  • ******
  • Mensajes: 4.153
  • "Vortex Complex"
    • Ver Perfil
    • www.meteoarchena.es
  • Estación: Archena - ESMUR3000000030600B
Re:Conectar web weewx Belchertown skin a través de MQTT
« Respuesta #11 en: 23 de Octubre del 2021, 19:55:03 pm »
Hola Bruno

Bufff yo lo conseguí y no sé ni cómo.... mañana le echo un vistazo si tengo tiempo a cómo lo tengo configurado y a ver si logro ayudarte.



Archena, Valle de Ricote (Murcia). 120 msnm. 19.500 hab.
Davis Vantage Pro2 Plus

www.meteoarchena.es

Desconectado ELX_CARRUS

  • Newbie
  • *
  • Mensajes: 28
    • Ver Perfil
  • Estación: ESPVA0300000003206A
Re:Conectar web weewx Belchertown skin a través de MQTT
« Respuesta #12 en: 23 de Octubre del 2021, 21:17:35 pm »
gracias jmviper, necesito esa información un poco mas detallada que en los tutoriales para comprenderlo todo bien.
saludos.
Bruno

Desconectado jantoni

  • Investigación
  • Hero Member
  • ******
  • Mensajes: 3.535
    • Ver Perfil
    • Rivas-Vaciamadrid Centro
  • Estación: ESMAD2800000028522A
Re:Conectar web weewx Belchertown skin a través de MQTT
« Respuesta #13 en: 24 de Octubre del 2021, 18:49:48 pm »
Te doy mi diagnóstico

MQTT ES SOLO PARA MASOQUISTAS

Dicho queda *+* *+* *+* *+* *+*
Las opiniones que pueda escribir no suponen asesoramiento profesional. Cada usuario tomará sus decisiones bajo su propio riesgo.

Desconectado jmviper

  • Investigación
  • Hero Member
  • ******
  • Mensajes: 4.153
  • "Vortex Complex"
    • Ver Perfil
    • www.meteoarchena.es
  • Estación: Archena - ESMUR3000000030600B
Re:Conectar web weewx Belchertown skin a través de MQTT
« Respuesta #14 en: 25 de Octubre del 2021, 16:41:19 pm »
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:1883

de 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 minombre

Ahí te preguntará de poner la contraseña dos veces para el usuario que le pongas y que será la que le pongamos a server_url
Una 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 miusuario
topic 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.1

Si 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/syslog

Para ver si mosquitto lo está recibiendo sudo tail -f /var/log/mosquitto/mosquitto.log

Esto 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  *+* *+*


Archena, Valle de Ricote (Murcia). 120 msnm. 19.500 hab.
Davis Vantage Pro2 Plus

www.meteoarchena.es