Software > Skin Belchertown

Conectar web weewx Belchertown skin a través de MQTT

<< < (2/5) > >>

dtalens:

--- Cita de: jmviper 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...
--- Fin de la cita ---

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.


--- Cita de: jantoni en 16 de Abril del 2021, 10:07:16 am ---
--- Cita de: jmviper en 16 de Abril del 2021, 09:19:41 am ---Qué derroche de recursos ??

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

--- Fin de la cita ---

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. *-* *-* *-* *-*

--- Fin de la cita ---

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

jmviper:

--- Cita de: jantoni en 16 de Abril del 2021, 10:07:16 am ---
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.


--- Fin de la cita ---

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.


--- Cita de: dtalens en 16 de Abril del 2021, 11:15:53 am ---
--- Cita de: jmviper 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...
--- Fin de la cita ---

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.


--- Fin de la cita ---

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 .

jantoni:
A ver si, al final, me vas a convencer

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

dtalens:
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: ---/etc/weewx/skins/Belchertown/js/belchertown.js.tmpl
--- Fin del código ---
Aclarar 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: ---[[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

--- Fin del código ---


jmviper:

--- Cita de: jantoni en 16 de Abril del 2021, 16:52:07 pm ---A ver si, al final, me vas a convencer

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

--- Fin de la cita ---

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

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior

Ir a la versión completa