como-funciona-node-red-en-hassio

Node Red programador horario Leave a comment

node red

 

Bienvenido al segundo artículo dedicado a NodeRed y su integración con Home Assistant. Ahora veremos en detalle los conceptos básicos de la programación, cómo funcionan las variables y cómo se pasan los «mensajes» de un nodo a otro y finalmente construiremos una automatización node red que estoy seguro de que puede usar como punto de partida para sus necesidades vamos con node red hacemos un programador horario.

Si aún no lo has instalado mira como se hace AQUI.

OBJETOS Y VARIABLES:

Como se explicó la vez anterior, el elemento básico de NodeRed está en «nodos» y la forma en que están conectados determina su interacción; los nodos se comunican entre logotipos con «objetos» que son distintos de las variables y que a menos que se especifique lo contrario, existen solo dentro del nodo; cuando un nodo termina su tarea, pasa al siguiente nodo / s un objeto llamado «msg» cuyo componente que usaremos más es «msg.payload» que contiene por defecto el «resultado» del nodo del cual provienen todas las demás variables que finalmente se usan dentro de un nodo se destruyen cuando el «flow» pasa al siguiente nodo; Obviamente, es posible asegurarse de que se conserven ciertas variables, y para ello deberán definirse con su «alcance» de acuerdo con la siguiente tabla:

  • Variables «CONTEXT»: una variable de tipo «context» siempre estará accesible solo en el nodo en el que se definió, pero a diferencia de las variables normales, el contenido no se destruirá al final de cada ejecución del nodo y se encontrará allí en la siguiente llamada de ese nudo
  • «FLOW» variables: estas variables existen dentro de un «FLOW» (recuerde que el flow es el conjunto de secuencias de nodos en la misma página) y también puede acceder a ellas desde otras secuencias siempre que permanezcan en el mismo flow, la El contenido nunca será destruido si no voluntariamente.
  • Variables «GLOBAL»: similares a las variables «FLOW» pero también serán accesibles desde todos los otros flujos que habrá definido en NodeRed.

En este momento, todo esto puede parecer complejo, pero solo es cuestión de tomar la mano y comprender el potencial de este sistema de programación.

ACCESO DE ENTRADA Y DATOS DE HOME ASSISTANT Y MQTT:

Si observa la «paleta» a la izquierda de la pantalla de NodeRed, debe tener un grupo de nodos llamado «Home Assistant» y estos le permitirán interactuar con las entidades y sus valores, otros nodos fundamentales son aquellos relacionados con MQTT, que le permitirán realizar flujos cuando reciba un mensaje en un tema específico de MQTT o publicar datos / valores en un tema de MQTT.
Los nodos del grupo Home Assistant ya deben estar configurados para acceder al servidor si usa HassIO y ha instalado Node Red como un complemento siguiendo la guía anterior.
En lugar de MQTT, tendrá que configurar el acceso a su agente antes de poder usar los nodos relacionados; para hacer esto, agregamos un nodo de entrada MQTT simplemente arrastrándolo desde la paleta al área de trabajo:

node red

Una vez hecho esto, haga doble clic en el nodo recién agregado para editar sus funciones, en este momento solo estamos interesados ​​en configurar el agente para poder utilizarlo de ahora en adelante; esta operación se debe hacer solo una vez y luego sólo especifique usar siempre el mismo agente.
En la ventana de edición, tendrá en el campo del servidor la clave «Add new mqtt-broker …» precisamente porque NodeRed no encuentra ninguna definida.

node red

Haga clic en el icono de lápiz para configurar el acceso al server, primero déle un nombre al campo «Name», luego en el campo «Server» ingresará la IP o la URL de su agente, el puerto predeterminado es 1883, pero si usa uno diferente, modifíquelo aquí; Si tiene acceso al server de broker protegido por usuario a pw (altamente recomendado) ingrese las credenciales en la sección «Seguridad»; puede dejar el resto de los parámetros predeterminados y hacer clic en «AGREGAR» en la parte superior izquierda para guardar todo. En este punto, haga clic en «HECHO» para cerrar la ventana de configuración del nodo y eliminarla; No tengas miedo de que se guarden las configuraciones del server y no hayas perdido nada.

Node Red programador horario

EJEMPLO DE FLOW CON HOME ASSISTANT

Vamos a crear nuestro primer flow utilizando algunos de los nodos básicos e instalando un nuevo nodo.
Nuestra automatización tendrá que encender una (o más) luz los días de semana (lunes / viernes) de 6:30 a.m. a 8:00 a.m. y todos los días desde la puesta del sol hasta la medianoche, además (suponiendo que tenga un valor lógico que indique su presencia o no) de alguien en la casa) queremos que esto suceda solo si hay alguien en casa.
Necesitaremos los siguientes nodos:

  • current_state (asistente de casa)
  • call_service (asistente a domicilio)
  • interruptor (función básica)
  • light_scheduler (para instalar)

En primer lugar, compruebe si ya tiene el nodo light_scheduler; de lo contrario, la instalación es bastante simple, vaya al menú en la parte superior derecha y seleccione «Manage palette»

node red

En la ventana que se abre, puede ver en NODES todos los nodos ya instalados y que necesitan una posible actualización, mientras que en INSTALAR puede agregar nuevos nodos. Seleccione INSTALAR y luego escriba el campo de búsqueda «light-planificador»; si el nodo ya existe en su paleta, se indicará como «instalado» (vea mi caso); de lo contrario, tendrá un botón que le permitirá instalarlo; atención de que podría tener un mensaje de advertencia que le advierta que compruebe si hay «dependencias», ya que hay nodos que requieren que otros nodos ya estén presentes en Node Red antes de instalarse. Una vez completado el procedimiento, continuamos con la creación de nuestro flow.

Node Red programador horario

Inserte los nodos como se muestra en la imagen a continuación, como puede ver, aún no he realizado ninguna conexión:

node red

Comenzamos a configurar los dos programadores de luz, el primero verificará la primera condición (de lunes a viernes de 6.30 a 8.00) y deberá configurarse como se muestra a continuación, para seleccionar cuándo desea activar el programador, solo seleccione con el ratón en el «calendario» semanal un tanto simple e intuitivo, en el mensaje de carga de encendido / apagado, activamos y desactivamos (o lo que prefiera) y seleccionamos Output = «cuando están los cambios + inicio» para generar un evento cuando el estado cambia y cuando Node Red se inicia; finalmente, si desea introducir un poco de efecto «random», puede especificarlo en el campo «Randomness (in minutes)», por ejemplo, al ingresar 10, el comando se aleatorizará por +/- 10 minutos y esto es válido tanto para encender como para apagar. Terminamos todo lo que cerramos guardando el nodo.

Vayamos al segundo programador de luz que se configurará de la siguiente manera; Seleccioné desde las 5 p.m. hasta la medianoche en el programador, pero bajando al campo «Dusk / Dawn» (amanecer / anochecer) seleccioné «Only when dark», luego después de las 5 p.m. y no hasta que oscurezca; Otra joya es poder seleccionar el «threshold» que es cómo considerar «oscuro» según la altura del sol en el horizonte. Si quieres más detalles, google es tu amigo, elegí la «Golden Hour», que es prácticamente cuando el sol + 6 ° aún por encima del horizonte como de costumbre le damos un nombre y guardamos el nodo (la configuración de geolocalización ya debería estar en su lugar, ya que solo debe hacerse una vez)

En este punto de la automatización node red, conectamos las salidas de ambos nodos del programador a la entrada del nodo SWITCH, esto asegurará que cada vez que uno de los dos nodos del programador cambie de estado de ENCENDIDO a APAGADO y viceversa, y en cualquier caso se generará el inicio de NodeRed un mensaje de ENCENDIDO o APAGADO dentro de la variable msg.payload y esto será «pasado» al siguiente nodo, a saber, el INTERRUPTOR.

Node Red programador horario

El nodo SWITCH es bastante común ya que le permite realizar múltiples elecciones, incluso bastante complejas, en el valor que recibe como entrada y dejar que el flujo continúe en una de sus salidas (sí, en este momento solo ve una pero síganme y lo entenderá); Abrimos el nodo del switch con un doble clic y vemos cómo funciona.

Este nodo es comparable a un IF-THEN múltiple; en la práctica, en el primer campo de cada fila (y puede tener más de dos, por supuesto), seleccione la condición, en nuestro caso queremos una coincidencia exacta y luego «==», pero como puede ver en la imagen, las posibilidades son varias, y luego decimos que la comparación debe hacerse como una cadena alfanumérica (pero puede usar números, cadenas, expresiones JSON, variables externas, etc.) y debe compararse con el valor «ON»; si esta condición es verdadera, el flujo continuará hacia la salida número 1; Lo mismo ocurre con la siguiente línea, solo que esta vez comparamos con el valor «DESACTIVADO» y si la condición es verdadera, continuaremos hacia la salida 2.

Si hizo todo correctamente verá que el nodo de conmutación ahora tendrá dos salidas, la primera se activará cuando el mensaje entrante sea igual a «ON» y la segunda cuando sea igual a «OFF»; luego conectamos la primera salida al nodo «Current State» mientras que la segunda salida al nodo «Servicio de llamadas» en la parte inferior, finalmente conectamos la salida del nodo «Estado actual» al nodo «Servicio de llamadas» en la parte superior:

Primero completamos el flujo para apagar las luces, haga doble clic en el nodo «call service» en la parte inferior para abrir su contenido; aquí debería comenzar a ver algo familiar, ya que este nodo solo activa un servicio en Home Assistant en mi caso lo llamé «Apagar las lámparas en la sala de estar», el dominio es obviamente «light», el servicio al que quiero llamar es «turn_off» y en el campo ID de entidad puse una o más entidades de luz para enviar el comando a; Si desea configurar otros parámetros, utilice el campo «Datos» donde puede insertar un JSON completo con el que, por ejemplo, establezca un cierto brillo o un cierto color.

En este punto, como puede imaginar, para el otro nodo de Call Service puede proceder de la misma manera que en el anterior con la diferencia de que tendrá que llamar al servicio «turn_on» esta vez.

Ya casi hemos terminado y este último paso es una segunda comprobación que ejecute solo si tiene que encender las luces o cuando el programador crea un comando «ENCENDIDO» y que en el caso de apagado no es necesario. Para introducir esta condición secundaria, utilizamos un nodo «Estado actual» que, en la práctica, no hace nada más que analizar el estado de una entidad de asistencia domiciliaria y tomar una decisión determinada en función de ella.

Hacemos doble clic en este nodo para ver cómo configurarlo; primero le damos un nombre para que siempre entienda qué control ejecuta, en mi caso lo llamé «alguien en casa», luego debemos especificar qué entidad queremos analizar en el campo Id. de entidad y la condición en el campo «Si estado». en la práctica, si la condición que ha establecido es verdadera, entonces el flujo continuará hacia la primera salida de este nodo, y viceversa, con una condición falsa, el flujo continuará hacia la segunda salida; en el caso en cuestión, si el booleano está APAGADO (es decir, no hay nadie en la casa) el flujo se detendrá ya que, como verá más adelante, no conectaremos nada a la segunda salida, por lo que esta condición se lee como «continuar si el booleano está ENCENDIDO de lo contrario pare »

home assistant

Deberías tener algo como esto.

home assistant

Como recordará, los nodos de puntos azules indican aquellos que se han agregado o modificado y que aún no se han hecho efectivos en el servidor; Para finalizar y activar nuestra automatización, hacemos clic en el botón rojo «DEPLOY» en la esquina superior derecha.

home assistant

Hemos completado nuestro flujo y deberías notar que debajo de algunos de los nudos había algunos puntos y / o escritura de color; este es el estado que nos ayuda a entender lo que está sucediendo, por ejemplo, el programador debería mostrarnos si está en una situación de ENCENDIDO o APAGADO, el nodo de servicio de llamadas nos mostrará la última vez que se llamó, etc. ; Veremos que otros nodos tendrán su estado específico y, en el futuro, cuando escribamos el código de un nodo javascript, podremos visualizar su estado con la información que consideremos más útil.

Todo lo que tiene que hacer es probar su flujo, que debe activarse en los momentos seleccionados y desactivarse fuera de ellos; Si no desea administrar la condición de control de presencia, siempre puede eliminar ese nodo y conectar directamente la salida del conmutador al servicio de llamadas para encender las luces o puede ingresar otras condiciones según lo que desee obtener.

Espero que no te lleve demasiado tiempo a ver realizado esta automatización node red, pero ahora imagina por un momento crearla en un YAML en Home Assistant y no olvide que con Node Red no necesita reiniciar nada, tan pronto como haya ejecutado sus flujos, estos se activarán y se utilizarán de inmediato en Home Assistant. Node Red programador horario.

 

Fuente: HASSIOHELP

Deja un comentario

A %d blogueros les gusta esto: