No siempre es posible medir directamente datos ambientales como la temperatura exterior. Aún así, a veces resulta útil. Por ejemplo, puede asegurarse de que los radiadores del interior solo se enciendan cuando hace frío afuera. Los calefactores que se encienden automáticamente en verano no sólo cuestan dinero sino también sudor. 🙂
Para obtener estos datos ambientales, necesitará su propia estación meteorológica, que alimentará al SmartHome con los datos correspondientes.
Sin embargo, puedes ahorrar este dinero. Gracias a servicios meteorológicos gratuitos de los que sólo tendrás que obtener estos datos. Uno de estos servicios meteorológicos es OpenWeatherMap.org.
En el siguiente artículo se explica cómo puede obtener datos meteorológicos de OpenWeatherMap.org y utilizarlos para su SmartHome.
Instrucciones de seguridad
Sé que las siguientes notas siempre son un poco molestas y parecen innecesarias. Desafortunadamente, muchas personas que sabían "mejor" han perdido ojos, dedos u otras cosas debido a un descuido o se lesionaron. La pérdida de datos es casi insignificante en comparación, pero incluso estos pueden ser realmente molestos. Por lo tanto, tómese cinco minutos para leer las instrucciones de seguridad. Porque incluso el proyecto más genial no vale la pena lesionarse u otros problemas.
https://www.nerdiy.de/sicherheitshinweise/
Enlaces afiliados / enlaces publicitarios
Los enlaces a las tiendas en línea enumerados aquí son los llamados enlaces de afiliados. Si hace clic en dicho enlace de afiliado y realiza una compra a través de este enlace, Nerdiy.de recibirá una comisión de la tienda en línea o el proveedor correspondiente. El precio no cambia para usted. Si realiza sus compras a través de estos enlaces, ayuda a Nerdiy.de a poder ofrecer otros proyectos útiles en el futuro. 🙂
Requisitos
Artículos útiles:
Para que pueda aceptar esta configuración, por supuesto, NodeRed ya debería estar instalado.
En los siguientes artículos se describe cómo preparar una RaspberryPi y luego instalar NodeRed en ella.
Los siguientes artículos describen lo que se debe hacer para preparar la RaspberryPi:
RaspberryPi: ¡configuración para nerdiys!
RaspberryPi – ¡La primera configuración!
RaspberryPi: controle el RaspberryPi a través de SSH
NodeRed: instalación de NodeRed en RaspberryPi
NodeRed – Instalar nuevos nodos
NodeRed - código de nodo de importación y exportación
Herramienta requerida:
-No-
Material requerido:
En la siguiente lista encontrará todas las piezas que necesita para implementar este artículo.
Inicie sesión en la interfaz de configuración de NodeRed
Antes de que pueda editar su configuración de NodeRed, debe, si está activado, primero iniciar sesión en la interfaz de configuración de NodeRed.
Registre la clave API de openWeatherMap
Instalar el nodo openWeatherMap
Importar código de nodo
La siguiente configuración debería ayudarle a comenzar. Para hacer esto, simplemente importe el siguiente código de nodo a su instalación de NodeRed. Cómo hacer esto está en el artículo. NodeRed - código de nodo de importación y exportación explicado.
Inmediatamente después hay que añadir a la configuración la clave API previamente registrada, como se describe a continuación.
Código de nodo:
[{"id":"85dcceee.5ca84","type":"change","z":"5ebf035f.49459c","name":"outsideTemperature","rules":[{"t":"set ","p":"carga útil","pt":"msg","to":"data.main.temp-273.15","tot":"jsonata"}],"action":""," propiedad":"","from":"","to":"","reg":false,"x":710,"y":200,"wires":[["6ab6bc17.16a144"] ]},{"id":"b36beeac.014ba","type":"json","z":"5ebf035f.49459c","name":"","property":"carga útil","acción" :"","pretty":false,"x":510,"y":200,"wires":[["85dcceee.5ca84","a0fb594.6e02ea8","7aa148d5.934fb8","8e550228.aae02 ","52536e82.1cb05","b22dec0e.d53f3","bcdf0d32.be17a","95d0a7a8.66b9e8","514584f.458327c"]]},{"id":"34eee9ed.b64d36","type": "inject","z":"5ebf035f.49459c","name":"Obtener datos manualmente","topic":"","payload":"","payloadType":"date","repeat": "","crontab":"","once":false,"onceDelay":0.1,"x":180,"y":260,"wires":[["d5a8c5aa.82b3c8"]]},{ "id":"a0fb594.6e02ea8","type":"change","z":"5ebf035f.49459c","name":"humedad exterior","rules":[{"t":"set", "p":"payload","pt":"msg","to":"data.main.humidity","tot":"jsonata"}],"action":"","property":" ","from":"","to":"","reg":false,"x":720,"y":320,"wires":[["b9f93625.5051b8"]]},{ "id":"7aa148d5.934fb8","type":"change","z":"5ebf035f.49459c","name":"presión del aire exterior","rules":[{"t":"set ", "p":"carga útil","pt":"msg","to":"data.main.pression","tot":"jsonata"}],"action":"","property" :" ","from":"","to":"","reg":false,"x":700,"y":360,"wires":[["fbf0a415.6ed9c8"]]} ,{ "id":"d5a8c5aa.82b3c8","type":"openweathermap","z":"5ebf035f.49459c","name":"","wtype":"actual","lon":" ", "lat":"","ciudad":"Bochum","país":"Alemania","idioma":"de","x":410,"y":260,"cables":[ [" b36beeac.014ba"]]},{"id":"67bf25e3.d1ce1c","type":"openweathermap in","z":"5ebf035f.49459c","name":"","wtype" :" actual","lon":"","lat":"","ciudad":"Bochum","país":"Alemania","idioma":"de","x":160," y" :200,"wires":[["b36beeac.014ba"]]},{"id":"8e550228.aae02","type":"debug","z":"5ebf035f.49459c"," name" :"Datos sin procesar","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","x":680,"y": 160," cables":[]},{"id":"6ab6bc17.16a144","type":"debug","z":"5ebf035f.49459c","name":"outsideTemperature","active" :true, "tosidebar":true,"console":false,"tostatus":false,"complete":"carga útil","x":990,"y":200,"wires":[]},{ "id" :"b9f93625.5051b8","type":"debug","z":"5ebf035f.49459c","name":"humedad exterior","active":true,"tosidebar":true,"consola ":false ,"tostatus":false,"complete":"carga útil","x":1000,"y":320,"wires":[]},{"id":"fbf0a415.6ed9c8"," type": "debug","z":"5ebf035f.49459c","name":"presión de aire exterior","active":true,"tosidebar":true,"console":false,"tostatus":false ,"completa": "carga útil","x":980,"y":360,"wires":[]},{"id":"52536e82.1cb05","type":"cambiar","z ":"5ebf035f. 49459c","name":"Fuerza del viento","rules":[{"t":"set","p":"carga útil","pt":"msg","to" :"data.wind.speed","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg" :false,"x" :690,"y":400,"wires":[["93256619.92a1b8"]]},{"id":"b22dec0e.d53f3","type":"cambiar","z ":"5ebf035f.49459c ","name":"Dirección del viento","rules":[{"t":"set","p":"payload","pt":"msg","to" :"data.wind.deg ","dead":"jsonata"}],"action":"","property":"","from":"","to":"","reg" :false,"x": 690,"y":440,"wires":[["d755f34d.fdefa"]]},{"id":"93256619.92a1b8","type":"debug","z ":"5ebf035f.49459c" ,"name":"Fuerza del viento","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"carga útil"," x":970,"y" :400,"wires":[]},{"id":"d755f34d.fdefa","type":"debug","z":"5ebf035f.49459c","name ":"Dirección del viento","active ":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":970,"y":440 ,"wires":[]}, {"id":"bcdf0d32.be17a","type":"change","z":"5ebf035f.49459c","name":"weatherDescription","reglas": [{"t":"set" ,"p":"payload","pt":"msg","to":"data.weather[0].description","tot":"jsonata"}] ,"action":""," property":"","from":"","to":"","reg":false,"x":720,"y":480,"wires" :[["a9876b9d.5e5be8"] ]},{"id":"a9876b9d.5e5be8","type":"debug","z":"5ebf035f.49459c","name":"weatherDescription"," active":true,"tosidebar": true,"console":false,"tostatus":false,"complete":"payload","x":1000,"y":480,"wires":[]} ,{"id":"95d0a7a8. 66b9e8","type":"change","z":"5ebf035f.49459c","name":"outsideTempMin","rules":[{"t":"set ","p":"carga útil" ,"pt":"msg","to":"data.main.temp_min-273.15","tot":"jsonata"}],"action":""," property":"","from" :"","to":"","reg":false,"x":700,"y":240,"wires":[["751ba810.fd1938"] ]},{"id":" 514584f.458327c","type":"change","z":"5ebf035f.49459c","name":"outsideTempMax","rules":[{"t": "set","p":" carga útil","pt":"msg","to":"data.main.temp_max-273.15","tot":"jsonata"}],"action":"" ,"property":""," from":"","to":"","reg":false,"x":700,"y":280,"wires":[["455148a8.ce5168 "]]},{"id" :"751ba810.fd1938","type":"debug","z":"5ebf035f.49459c","name":"outsideTempMin","active":true,"tosidebar ":true,"console":false ,"tostatus":false,"complete":"carga útil","x":980,"y":240,"wires":[]},{"id":" 455148a8.ce5168","type": "debug","z":"5ebf035f.49459c","name":"outsideTempMax","active":true,"tosidebar":true,"console":false," tostatus":false,"complete": "carga útil","x":980,"y":280,"wires":[]}]
Información adicional
Diviértete con el proyecto.
Espero que todo te haya funcionado como se describe. Si no es así, o si tiene alguna pregunta o sugerencia, hágamelo saber en los comentarios. Si es necesario, lo añadiré al artículo.
Las ideas para nuevos proyectos siempre son bienvenidas. 🙂
PS Muchos de estos proyectos, especialmente los proyectos de hardware, cuestan mucho tiempo y dinero. Por supuesto que hago esto porque lo disfruto, pero si crees que es genial que comparta la información contigo, me encantaría hacer una pequeña donación al fondo del café. 🙂
HOLA,
Genial, gracias por tus tutoriales 🙂
Tengo un problema.
Cuando muestro las temperaturas como texto, obtengo demasiados decimales detrás...
¿Cómo puedo redondear?
¡Muchas gracias!
Hola Adrián,
Gracias. 🙂
Siempre hago esto con un nodo de función y algo de JavaScript. (Estoy seguro de que hay otras formas potencialmente mejores).
Te subí un ejemplo aquí: https://pastebin.com/UesZyP2N
Debería poder importar el código fácilmente. Esperemos que se explique por sí mismo. De lo contrario, vuelva a preguntar. 🙂
Atentamente
Fabian
Funciona perfecto 🙂
¡Soporte súper rápido! Gracias
¡Excelente! Con alegría. 🙂 ¡Buena suerte!
Atentamente
Fabian
hola a todos
El post es un poco viejo, pero me ayudó mucho, ¡gracias!
Actualmente estoy construyendo Rhasspy en un OrangePi, la salida de voz de los datos meteorológicos.
toma forma gracias al código del nodo :). Mi problema es que tengo el individuo
No puedo resumir consultas en una salida, todavía tengo que usar texto estático
agregue algo como "El clima actual en..." o "El viento sopla desde la dirección..." y luego reenvíelo al servidor como msg.payload. Estaría muy abierto a un consejo, gracias.
saludos miguel
Hola Michael,
Creo que usé lo que estás buscando en esta publicación (para un propósito ligeramente diferente): https://nerdiy.de/howto-nodered-pushbullet-benachrichtigung-bei-ssh-login/
Si importa el código y luego mira el nodo de función, puede ver cómo se ensambla la nueva carga útil.
Espero que esto te ayude, de lo contrario, házmelo saber. 🙂
Atentamente
Fab
Sí, exactamente Fab, acertó con la punta, funciona muy bien, muchas gracias.
Ahora me gustaría completar "data.main.temp-273.15", para mí ese es msg.payload2, vi su consejo arriba "parseFloat(msg.payload).toFixed(2)".
¿Me pueden ayudar a dónde ir o hay otra manera?
saludos miguel
Hola Michael,
básicamente puedes poner eso en el mismo nodo de función. Por ejemplo como este:
var value=parseFloat(msg.payload2).toFixed(2)
msg.payload “Aquí está la oración que desea generar con el valor redondeado: “+Cadena(valor);
Espero que funcione.
Atentamente
Fabian
Genial, sí, así es exactamente como funciona, ¡funciona perfectamente!
gracias fabián
Genial, me alegro de que haya funcionado. 🙂