Está en la página 1de 8

Curso de Node Red:

¿Por que NodeRed y no Homeassistant para hacer tus automatizaciones?:

Hassistant , ya parece tener todo incluido. Pero aun asi node red parece ser mucho
mas intuitivo. Es facil modificar y evolucionar.

Xq instalar homeassistant? : es xq es invatible como sistema para usarlo como


automatizador con los sensores y todo eso. Los dashboard de homeassistant son
mejores.

En nodered , tenemos un conjunto de bloques de entrada y salida.


Además tenemos bloques de debug para visualizar lo que tenemos en la salida.

En el bloque de configuración de envio de mensajes podemos combinar un mensaje


completo.

Que es un objetoJson? : es un diccionario clave-valor.

Para anidar correctamente un json se hace atraves de :


{
“clave”: “valor”
“dic1”:{
“clave_int1”:”valor_int1”
“clave_int2”:”valor_int2”
}
}

Donde se puede aplicar nodered:


• Automatización Industrial.
• Domotica/Inmotica
• Internetdelascosas
• Maker
• IIoT
• Industria 4.0
• Inteligencia Artificial.

Qué es nodered y como funciona:

Es una herramienta de programación visual. Familiar a visualbasic.


Creado en 2013. Fue liberado en github en ese mismo año de creación.
Buscar entregar hardware con otros servicios.

Esta creado a partir de nodejs. Es accesible a traves de un pagina web y no necesita


de IDE.

Su estructura minima son paletas llamados nodos.

Nodered se conecta a aplicaciones de terceros y se pueden utilizar protocolos de


comunicación a través de configuraciones.

Donde podemos instalar nodered?:


WINDOWS7-10-ETC.
Sistemas debian.
Basados en RPM.

Pre-requisitos
Version compatible de Node.js

Hardware: Rasberrypi y BeagleBoneBlack.

Instalación npm.
Instalacion docker.
Instalacion snap.

Los nodos ejecutan una funcion especificada por el usuario:


Existen los nodos cord: son los preinstalados. Ya vienen con el paquete:
-Nodos de salidas.
-Nodos de entrada.
-Nodos entrada/salida:Funcion.

Nodos salida:
inject:
Solo ofrecen datos tras recibirlos a través de diferentes métodos por ejemplo:
un mensaje mqtt
errores lanzados por los nodos
o como el caso del nodo inject , inyecta un mensaje en un flujo de forma manual o a
intervalos regulares.

Nodos de entrada:
Solo admiten datos de entrada para enviarlos a un sitio
Una base de datos
un indicador en un panel de control
O como el caso del nodo debug , recibe los datos y los muestra en la ventana de
propiedades debug. De forma predeterminada.

Nodos de entrada/salida:
Permiten la entrada de datos y luego ofrecen una o varias salidas , x ejemplo:
Podemos leer el valor de temperatura en grados Fahrenheit y convertilos a grados
celsius.
Podemos evaluar el valor de entrada y comparar con un valor
predeterminado(switch/case).
O como el nodo fuction , que nos permite ingresar código javascript para ejecutarse
contra los mensajes que recibe y devolver un objeto del mensaje (o varios del
mensaje).

En node-red , las ejecuciones se ejecutan de forma paralela a diferencia de arduino o


de un microcontrolador donde se ejecutan de manera que se ejecuta una tarea y
después la siguiente.

En el bloque function podemos ingresar codigo javascript , pero si ingresamos algo


incorrecto , esto nos va a generar un error.

Se pueden colocar mensajes en los nodos , al desarrollar un proyecto se generan


comentarios y indicar que realiza el nodo en nuestro proyecto.

Bloques MQTT:

Nodo mqtt in :
Configuras el servidor osea donde trabaja el broker.

En la parte de configuración podemos observar que nodos tienen ese tipo de


configuración.

Existe la pestaña de contexto.


Existen 3 tipos de variables a utilizar en node-red:

-Variables locales.
-Variables Flow:
-Variables Globales.

Contexto: Te recuerdas cuando en los demas lenguajes de programación utilizabas


una función para reutilizar codigo cada vez que la llamabas. Bueno en node-red se
utilizan los llamamos subflow para realizare esto.

Contexto de acceso a información de variables:


Variable Nodo su Scope(alcance):
Al crear una variable del tipo node o local , solo podemos acceder a la misma atravez
del mismo nodo. No se puede de un nodo diferente.

Variable del tipo FLOW: Son accesibles a traves de cualquier nodo que pertenezca a
ese flow. Pero no tienen acceso a esa variable desde otros flows.
Variable globales. Son accesibles en cualquiera de los nodos que pertenezcan a dicho
flow.

Introduccion a mensajes y tipos de datos:


El flujo en nodered funciona pasando mensajes entre los nodos , los mensajes son
objetos javascript. Que tiene pares de valor-clave. Los mensajes tienen propiedad
payload. Esta funciona en la mayoria de nodos.

El nodo switch es parecido a un IF en C. Nos permite identificar la propiedad del


mensaje.
la propiedad del msg.payload es la que determina que los inject envien sus valores.

Como controlar la velocidad de los mensajes que pasan atraves de un flow:

Estos nodos son :


Delay y Trigger.

El delay aplica un retraso a los mensajes que pasan x el.

Y el trigger , al activarse puede enviar un mensaje y opcionalmente un segundo


mensaje si se extienden y reestablecen mensajes.

El delay:

Terminos o conceptos importantes en nodered:


Partes o componentes del editor:
Paleta de nodos: Todos los nodos para utilizar.
Workspace:Flows o pestañas del proyecto.
Header:Cabezera.

Flow o Flujo de pestañas: Se indica para decir que existe un conjunto de nodos
interconectados.

NodeRedDebbuger:Herramienta.
Es un complemento para nodered2.0 , permite establecer puntos de interrupcion.
Permite pausar el tiempo de ejecucion manualmente.
Pausar el flujo , tambien inspeccionar los mensajes.
Basicamente funciona como el depurador de cualquier ide de codigo.

Nodos split y Join:


Split: El comportamiento esta dado por el tipo de msg.payload.
El nodo split separa los mensajes que envies deacuerdo como vos configures.
El nodo join trabaja en conjunto con el nodo split , de acuerdo a como configuraste el
nodo split , combina el mensaje.

El nodo join al trabajar sin el nodo split , debemos configurarlo en modo manual.

Nodos que nos permiten trabajar con el formato JSON:

Teoria: Que es JSON?: El intercambio de datos es fundamental. Para ello usamos


JSON(Java-script Object Notation). Es un formato de texto independiente del
lenguaje.
Al ser un formato independiente de cualquier lenguaje de programacion es que los
servicios que comparten información no necesariamente deben ser del mismo
“IDIOMA” ejemplo un receptor puede ser de python , en cambio el que envia
información puede ser de JAVA.
Formato comun para serealizar y deserealizar objetos en la mayoria de lenguajes.
Posee 2 estructura , es un par nombre/valor , es parecido a un diccionario.

JSON es representado por texto plano.

Un nodo json convierte el texto plano en formato JSON.

Para que nos sirve tener el objeto en nodered? Para acceder a valores o claves de
nuestro objeto.

Conceptos del nodo function:


El codigo ingresado en el nodo function representa el cuerpo de la función.
Lo mas simple de realizar es que devuelva el mensaje , como llego.

Segundo ejemplo , es si la funcion regresa null no regresa nada.

Tercer ejemplo , la funcion debe devolver siempre un objeto msg.

Cuarto ejemplo , borrar las propiedades del mensaje existente o no reenviarlas al


siguiente nodo.

Nodo link:
Al tener una gran cantidad de flows.
Tenemos conexiones virtuales. Osea cables virtuales.

NODE RED ESTA BASADO EN EL PROTOCOLO MQTT

Basicamente lo anterior ya lo conoces , salvo alguna información adicional. Pero lo


mas importante viene de los topicos , los comodines para subscribirse , los cuales
unicamente los utiliza el subscriptor.
Comodín de un solo nivel:
(“+”)

por ejemplo la subcripcion al topic:

micasa/ plantabaja / + / temperatura , te vas a subscribir a:

micasa/ plantabaja / cocina / temperatura.


micasa/ plantabaja / recamara / temperatura.
micasa/ plantabaja / patio / temperatura.
micasa/ plantabaja / comedor / temperatura.

Comodin de varios niveles:


“#”.

Debe ser el ultimo carácter del topic.

Lo cual te vas a subscribir a:

micasa/ plantabaja / #:

micasa/ plantabaja / cocina / temperatura.


micasa/ plantabaja / recamara / humedad.
micasa/ plantabaja / patio / corriente.
micasa/ plantabaja / comedor / presion.

Mejores practicas para usar los topics:


Nunca usar una contrabarra(\).
Osea se puede usar , pero lo que genera es que introduce un nivel de topic innecesario
con un carácter cero al principio. No proporciona beneficios y a menudo genera
confusión.

Nunca usar espacios en los topic:


Provocan dificultades al momento de la depuración del proyecto realizado.

Usar topic breves y concisos.


Bueno debido a que consume bytes y esa memoria es necesaria.

Utilizar unicamente caracteres ASCII , evitando los caracteres no imprimibles.

Que es el payload?: del ingles cargautil.


Conjunto de datos transmitidos que es en realidad el valor de la variable que envia el
cliente al broker.

Otros tipos de mensajes utilizados en MQTT:


Mensaje enviado sobre un topic para indicar que el cliente ha establecido una
conexión exitosa.

Puede ser configurado o no.

Otro es el close , es cuando el cliente se desconecta de nuestra red mqtt.

Otro tipo de mensaje es el last will and testament: Este se envia cuando se ha
desconectado nuestro cliente de manera inesperada.

Un mensaje retenido es un mensaje mqtt normal con el indicador establecido en true.


Almacenando el ultimo mensaje retenido y la calidad de servicio , el cual el cliente
subscripto a ese mensaje retenido lo recibira de inmediato al subscribirse de nuevo.
El broker solo almacena un mensaje retenido por topic.
Los mensajes retenidos son para que los clientes obtengan una actualizacion de stado
al subscribirse a un topic.

Calidad de servicio(esto ya conoces). Entre mas calidad de servicio , menor sera el


rendimiento.

Las sesiones persitentes son la información que guarda el broker , esto es conveniente
para los clientes con recursos limitados como los microcontroladores. Debido a que si
se cae la conexión a la subscripcion del broker , esto les puede generar problemas a
ellos.

Que almacena? *Existencia de una sesión.


*Todas las subscripciones del cliente.
*Todos los mensajes en un flujo (QoS). 1 o 2 que el cliente no ha confirmado.
*Todos los mensajes nuevos QoS 1o2 que el cliente perdio fuera de linea.
*Todos los mensajes QoS recibidos del cliente que aun no reconoce por completo.

Al igual que el broker almacena la información , también el cliente almacena la


siguiente información:

*Todos los mensajes en un flujo QoS 1 o 2 , que no han sido confirmados por el
broker.
*Todos los mensajes QoS 2 recibidos del broker que aun no se reconocen por
completo.

Buenas practicas de la sesión permanente:


El cliente debe recibir los mensajes de un topico determinado , mientras esta fuera de
linea. Deseando que el broker ponga en cola los mensajes para el cliente y los
entregue tan pronto como el lciente vuelva a estar en linea.
El cliente tiene recursos limitados. Donde el broker almacena la información de
subscripción del cliente y restaure la comunicación interrumpida rapidamente.
El cliente debe renaudar todos los mensajes de publicación de QoS 1 y 2 después de
una reconexión.

Sesion limpia:
El cliente solo publica mensajes en topics , el cliente no necesita subscribirse a topics.
No desea que el corredor almacene la información de la sesión o vuelta a intentar la
transmisión de los mensajes QoS 1 y 2.
El cliente necesita recibir mensajes que pierde cuando se encuentra fuera de linea.

El broker es el servidor(ya conoces esto guachh!!)

Propiedades de los nodos MQTT:

También podría gustarte