0% encontró este documento útil (0 votos)
42 vistas28 páginas

Manual Modulo4

Cargado por

Guillermo Torre
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
42 vistas28 páginas

Manual Modulo4

Cargado por

Guillermo Torre
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

DOMÓTICA & IoT

Módulo 4: NODE RED CONCEPTOS

BÁSICOS
MÓDULO
CONCEPTOS BÁSICOS DE NODE RED

Contenidos a desarrollar:

● ¿Qué es Node Red?


● Instalar Node Red en Windows 10
● Aplicación de Telegram con Node Red
Introducción a Node Red
Node-RED es una herramienta de programación visual destinada a conectar dispositivos de
hardware, API y servicios en línea de formas alternativas, sin la necesidad de una experiencia
de programación tradicional. El software proporciona un editor basado en navegador que
facilita la conexión de flujos entre sí utilizando la amplia gama de nodos de la paleta que se
pueden implementar en su tiempo de ejecución con un solo clic. Aunque el concepto de
flujos, nodos y paletas puede parecer poco familiar, Node-RED simplifica la programación
mediante el uso de una representación visual de código en bloques con líneas entre ellos.

Algunos ejemplos de las muchas funciones disponibles son:

● Clientes REST para consultar datos en otros servidores


● Cliente Modbus TCP para hablar con dispositivos IO remotos
● Las funciones de JavaScript se pueden crear dentro del editor de texto enriquecido
● Una biblioteca incorporada le permite guardar funciones, plantillas o flujos útiles para
su reutilización
● Los flujos creados en Node-RED se almacenan usando JSON que se puede importar y
exportar fácilmente para compartir con otros
● Una biblioteca de flujos en línea le permite compartir sus mejores flujos con el mundo.

JSON ( JavaScript Object Notation) es un formato que almacena información estructurada y


se utiliza principalmente para transferir datos entre un servidor y un cliente.

Se trata de un formato para guardar e intercambiar información que cualquier persona


pueda leer. Los archivos json contienen solo texto y usan la extensión .json.

El archivo es básicamente una alternativa más simple y liviana al XML (Lenguaje de marcado
extenso, por sus siglas en inglés) que cuenta con funciones similares.

Figura 1: ejemplo de archivo JSON


Programación basada en flujos
La programación basada en flujos es una forma de describir el comportamiento de una
aplicación como una red de cajas negras o "nodos", como se les llama en Node-RED. Cada
nodo tiene un propósito bien definido: recibe o captura algunos datos, realiza algún
tratamiento con esos datos y luego los pasa a uno o varios nodos con los que se enlaza. La
red constituye la configuración de cómo estos nodos se interconectan entre sí y es
responsable del mantenimiento del flujo de datos entre los nodos.

Figura 2: ejemplo de flujos

Editor de Flujos basado en navegador


Cuando una instancia de Node-RED se está ejecutando, bien como resultado de la invocación
de un script, corriendo como el ejecutable principal de un contenedor Docker, o bien como
un servicio Windows/Linux, expone un acceso Web (cuyo puerto y protección de acceso son
configurables) que permite levantar remotamente un editor gráfico de flujos basado
completamente en navegador.
Figura 3: navegador y espacio de trabajo de Node Red

Una vez dentro del navegador pueden crearse nuevos flujos arrastrando algunos de los tipos
de nodo disponibles en una paleta lateral en el espacio de trabajo, conectándose entre sí,
estableciendo el flujo de proceso de datos y configurando los parámetros y atributos de
dichos nodos.

Figura 4: navegador y espacio de trabajo de Node Red

Los nodos se conectan utilizando líneas de enlace ('wires') que unen sus puertos ('ports'). Un
nodo puede tener como máximo un puerto de entrada y uno o más puertos de salida.
Estas líneas de enlace ('wires') definen el flujo de datos que se establece entre los diferentes
nodos. Algunos puertos pueden tener una 'etiqueta asociada' que se muestra cuando el
ratón pasa sobre él para ofrecer una ayuda rápida sobre su función en el nodo. Por ejemplo,
el nodo 'Switch' de la imagen muestra la regla asociada a la activación de la salida de datos
por ese puerto:

Asimismo, se pueden especificar 'etiquetas' en cada 'nodo', para facilitar de un vistazo una
más rápida comprensión de su función/rol en el flujo de proceso de datos sin requerir entrar
en su diálogo de edición/configuración para entender su cometido o funcionalidad. Estas
etiquetas se personalizan en el cuadro de diálogo de edición/configuración de los nodos.

Figura 5: etiquetas en Node Red

Existen tres tipos de nodos:

● Nodos Iniciadores de flujo que ('Triggers') que inician o 'disparan' la ejecución de flujo
de proceso:

-Poseen únicamente 1 puerto de salida ('output').

-Pueden ser 'activos', como aquellos que de forma periódica supervisan la activación
de un evento determinado (un intervalo de tiempo, la llegada de un archivo en un
directorio, la llegada de un nuevo tópico de MQTT al que está subscrito,...).

-O bien 'pasivos', como aquellos que están 'a la escucha' de evento de activación
generado externamente (por ejemplo los que escuchan la recepción de una petición
API REST, gRPC o Websockets, por mencionar solo algunos).

● Nodos Intermedios que realizan acciones con la información que reciben en el flujo de
datos, realizan acciones con dicha información y traspasan los datos resultantes de
dicha acción a los nodos siguientes con los que está enlazado a través de su puerto o
puertos de salida:

Nodos de Ejecución de código:

-'function node' que permite la incorporación de código [Link] propio ('custom code')
para el tratamiento de los datos recibidos o realizar acciones especializadas. Para este
tipo de nodos se dispone de un editor 'rich-text' incorporado. Con más de 225.000
módulos en el repositorio de paquetes de Node, es fácil extender y agregar nuevas
capacidades con el único límite que impone la imaginación.

-'exec node' que permite la ejecución de 'scripts' o ejecutables accesibles en el entorno


de ejecución. Esto amplía las capacidades extraordinariamente permitiendo incorporar
o re-utilizar elementos desarrollados en otros lenguajes de programación (Python Java,
C++, Go...)

● Nodos Terminales de flujo ('end nodes') que se disponen al final de ramas del flujo de
datos y 'disparan' acciones específicas cuando el flujo de datos en dicha rama los
alcanzan:

-Poseen únicamente 1 puerto de entrada ('input').

-Entre las acciones que pueden 'disparar' (por mencionar las más frecuentes):

➔ Disparar la ejecución de otros flujos Node-Red.


➔ Invocar otros servicios expuestos externamente (enviado mensajes a un backend,
arrancando la ejecución de un workflow BPM, ...)
➔ Mostrar información de 'traza' con el contenido de los datos en el punto de flujo.
➔ Generar 'eventos de negocio' en sistemas de mensajería (AMQP, MQTT, ...) o
'eventos de notificación' en sistemas de mensajería social (Twitter, Telegram...)
Figura 6: tipos de nodos

Extensibilidad
La solución viene de partida ('out-of-the-box') con una amplia colección de nodos:

Figura 7: colección de nodos

Esta paleta de nodos puede ser simple, entonces puede extenderse mediante la instalación
de nuevos nodos especializados en forma de 'plugins oficiales' que la fundación que da
soporte a Node-RED proporciona, o bien en forma de 'plugins' que una amplia comunidad de
desarrolladores comparte y mantiene a NodeRed.
Preparación para un trabajo en equipo y la reusabilidad de
componentes
Toda la lógica resultante del trabajo realizado a través del editor se aloja internamente en un
archivo JSON. Esto permite que pueda ser fácilmente compartido por equipos de trabajo a
través de repositorios de gestión de fuentes y versiones, ser importado en otros entornos
Node-RED (desarrollo, calidad, producción, ...), o servir de plantilla de comienzo para la
creación de nuevos flujos en entornos separados y facilitar su incorporación en pipelines
CI/CD.

Este archivo contiene el conjunto de flujos que pueden configurarse de forma separada en el
editor organizados en pestañas

Figura 8: .JSON para descargar


Con un simple click sobre el desplegable de "Deploy", el flujo que se acaba de crear (o
modificar) se guarda y se despliega de vuelta (junto con los otros flujos que lo acompañan en
las otras pestañas) en el entorno donde se está ejecutando y el flujo de trabajo global se
reanuda.

Dashboards
Es importante destacar igualmente que una de sus capacidades menos conocida, pero no
por ello de menor importancia y utilidad, es la capacidad de poder crear y
desplegar 'Cuadros de Mando' ('Dashboards') a los que se puede acceder remotamente vía
navegador y cuyo acceso puede ser, al igual que lo descrito para el editor, protegido con
credenciales de acceso

Figura 9: el tablero de Node Red

Escenarios de uso
● Escenarios IoT ('Internet-of-Things', Internet de las cosas)

Como se ha mencionado, la herramienta Node-RED surge desde su nacimiento


estrechamente relacionada con la agilización de proyectos de IoT ('Internet-of-Things') y
como tal es en este tipo de escenarios donde su uso está más difundido.

Es frecuente verla presente en múltiples puntos/etapas/niveles de la red de procesamiento


de datos procedentes de sensores y su tratamiento, y canalización hacia los repositorios de
datos donde se integran y extrae información analítica de negocio

Práctica: crear un flujo simple


Crear una cuenta gratuita en FRED: [Link] con esto podemos crear
flujos en la nube sin necesidad de instalar nada, de manera muy simple. O por medio de la
instalación en Windows 10 que se indica más abajo.

Entonces, primeramente seleccionamos y arrastramos dos nodos, el Inject y el Debug como


se muestra en la figura 10. En la figura 11 y 12 se indican el paso a paso de la creación.

Figura 10: práctica de creación de un flujo simple

Figura 11: paso a paso en la creación


Figura 12: paso a paso en la creación

Práctica: importar un flujo simple

Figura 13: importación de flujos


Figura 14: importación de flujos

➔ Código a importar:

[{"id":"58ffae9d.a7005","type":"debug","name":"","active":true,"complete":false,"x":640,"y"
:200,"wires":[]},{"id":"17626462.e89d9c","type":"inject","name":"","topic":"","payload":"","r
epeat":"","once":false,"x":240,"y":200,"wires":[["2921667d.d6de9a"]]},{"id":"2921667d.d6d
e9a","type":"function","name":"Format timestamp","func":"// Create a Date object from the
payload\nvar date = new Date([Link]);\n// Change the payload to be a formatted Date
string\[Link] = [Link]();\n// Return the message so it can be sent on\nreturn
msg;","outputs":1,"x":440,"y":200,"wires":[["58ffae9d.a7005"]]}]

// Create a Date object from the payload

var date = new Date([Link]);

// Change the payload to be a formatted Date string [Link] = [Link]();

// Return the message so it can be sent on return msg;


Instalar Node-RED en Windows 10

Introducción
Node-RED es una herramienta de programación visual destinada a conectar dispositivos de
hardware, API y servicios en línea de formas alternativas, sin la necesidad de una experiencia
de programación tradicional. El software proporciona un editor basado en navegador que
facilita la conexión de flujos entre sí utilizando la amplia gama de nodos de la paleta que se
pueden implementar en su tiempo de ejecución con un solo clic. Aunque el concepto de
flujos, nodos y paletas puede parecer poco familiar, Node-RED simplifica la programación
mediante el uso de una representación visual de código en bloques con líneas entre ellos.
Algunos ejemplos de las muchas funciones disponibles son:
● Clientes REST para consultar datos en otros servidores
● Cliente Modbus TCP para hablar con dispositivos IO remotos
● Las funciones de JavaScript se pueden crear dentro del editor de texto enriquecido
● Una biblioteca incorporada le permite guardar funciones, plantillas o flujos útiles para
su reutilización
● Los flujos creados en Node-RED se almacenan usando JSON que se puede importar y
exportar fácilmente para compartir con otros
● Una biblioteca de flujos en línea le permite compartir sus mejores flujos con el mundo.

Instalando Node-RED
Node-RED usa un motor en tiempo de ejecución llamado [Link]. [Link] es un lenguaje de
programación basado en JavaScript y debe instalarse antes que Node-RED.
➔ ¿Qué es [Link]??

[Link] es un entorno de tiempo de ejecución de JavaScript (de ahí su terminación en .js


haciendo alusión al lenguaje JavaScript). Este entorno de tiempo de ejecución en tiempo real
incluye todo lo que se necesita para ejecutar un programa escrito en JavaScript.

[Link] fue creado por los desarrolladores originales de JavaScript. Lo transformaron en algo
que solo podía ejecutarse en el navegador en algo que se podría ejecutar en los ordenadores
como si de aplicaciones independientes se tratara. Gracias a [Link] se puede ir un paso más
allá en la programación con JavaScript no solo creando sitios web interactivos, sino teniendo
la capacidad de hacer cosas que otros lenguajes de secuencia de comandos como Python
pueden crear.

Tanto JavaScript como [Link] se ejecutan en el motor de tiempo de ejecución JavaScript V8


(V8 es el nombre del motor de JavaScript que alimenta Google Chrome. Es lo que toma
nuestro JavaScript y lo ejecuta mientras navega con Chrome). Este motor coge el código
JavaScript y lo convierte en un código de máquina más rápido. El código de máquina es un
código de nivel más bajo que la computadora puede ejecutar sin necesidad de interpretarlo
primero, ignorando la compilación y por lo tanto aumentando su velocidad.

➔ Para qué sirve [Link]

[Link] utiliza un modelo de entrada y salida sin bloqueo controlado por eventos que lo hace
ligero y eficiente (con entrada nos referimos a solicitudes y con salida a respuestas). Puede
referirse a cualquier operación, desde leer o escribir archivos de cualquier tipo hasta hacer
una solicitud HTTP.

La idea principal de [Link] es usar el modelo de entrada y salida sin bloqueo y controlado
por eventos para seguir siendo liviano y eficiente frente a las aplicaciones en tiempo real de
uso de datos que se ejecutan en los dispositivos.

La finalidad de [Link] no tiene su objetivo en operaciones intensivas del procesador, de


hecho, usarlo para programación de más peso eliminará casi todas sus ventajas. Donde
[Link] realmente brilla es en la creación de aplicaciones de red rápidas, ya que es capaz de
manejar una gran cantidad de conexiones simultáneas con un alto nivel de rendimiento, lo
que equivale a una alta escalabilidad.
➔ Cómo funciona [Link]
El funcionamiento interno del entorno de ejecución para JavaScript, [Link], es bastante
interesante. En comparación con las técnicas tradicionales de servicio web donde cada
conexión (que crea una solicitud) genera un nuevo subproceso, ocupando la RAM del
sistema y regularmente maximizando la cantidad de RAM disponible, [Link] opera en un
solo subproceso, utilizando el modelo entrada y, entrada sin bloqueo de la salida, lo que le
permite soportar decenas de miles de conexiones al mismo tiempo mantenidas en el bucle
de eventos.

El nodo está completamente controlado por eventos. Resumiendo podemos decir que el
servidor consta de un subproceso que procesa un evento tras otro.

Cuando hay una nueva solicitud se genera un tipo de evento. El servidor empieza a
procesarlo y, cuando hay una operación de bloqueo de entrada y salida, no espera hasta que
se complete y en su lugar crea una función de devolución de llamada. El servidor comienza
en el acto a procesar otro evento (tal vez otra solicitud) y cuando finaliza la operación de
entrada y salida, continuará trabajando en la solicitud ejecutando la devolución de llamada
tan pronto como tenga tiempo.

Por lo tanto, el servidor nunca necesita crear más subprocesos o cambiar entre subprocesos,
lo que significa que tiene muy poca sobrecarga.

Hay que mencionar que en el nivel más bajo de codificación (código C++), encontramos
varios subprocesos en [Link]: hay un grupo de eventos de entrada y salida cuyo trabajo es
recibir las interrupciones de los propios eventos de entrada y salida y poner los eventos
correspondientes en la cola para ser procesados por el hilo principal evitando así la posible
interrupción del mismo.

[Link] se puede descargar desde el sitio web oficial de [Link] official [Link] website. Al
instalar [Link] para usar con Node-RED, se recomienda que instale [Link].X. Variante LTS.
Una vez descargado hacemos doble click en el ejecutable

Una vez que se complete la instalación, abrir un símbolo del sistema de Windows, se puede
abrir un símbolo del sistema utilizando el método abreviado de teclado (tecla de Windows +
r), escribir cmd y luego, una vez que se haya abierto el símbolo del sistema, ingresar lo
siguiente:

Este comando verifica si tanto [Link] como NPM están instalados correctamente y, de ser
así, devolverá un número de versión. La salida debería verse así:

NPM es un administrador de paquetes para el lenguaje de programación JavaScript, esto es


necesario para instalar paquetes Node-RED adicionales que necesitaremos más adelante.
NPM debe instalarse de forma predeterminada al instalar [Link].

➔ Instalación de Node Red


Nuevamente abrimos la ventana de comandos de Windows y ejecutamos CMD como
administrador:

En la ventana CMD ingresamos el siguiente comando:


Tenga en cuenta que si el módulo no se instala y muestra mensajes de error relacionados con
los permisos, deberá ejecutar CMD en modo Administrador. Si tiene problemas con esto,
comuníquese con el administrador del sistema. Una vez que se ejecuta este comando, Node-
RED comenzará a instalarse. Tenga en cuenta que esto puede tardar algún tiempo en
completarse.

➔ Ejecutamos Node Red

En la ventana de comandos tecleamos:


node-red
Brindar permisos a NodeJS para conectarse a la RED.

En la ventana de comandos vemos que se ejecuta Node Red y la dirección donde está
corriendo

Ahora abrimos el explorador de internet y colocamos la dirección IP local del equipo o


en [Link]:1880 o localhost:1880
Figura 15: colocamos IP en el buscador

Figura 16: colocamos IP en el buscador y se abre NodeRed

Crear un Bot de Telegram con Node-RED


Requisitos:

● Cuenta de Telegram: [Link]


● Una cuenta gratuita en FRED: [Link]

Telegram y Node-RED
Se va a crear un Bot de Telegram y se va a programar usando Node-RED para interactuar con
cualquier servicio de Internet como Twitter, la luz de una casa, Arduino, conocer la
predicción del tiempo, Alexa, enviar un email o SMS etc.

Telegram Bots son cuentas especiales que no requieren un número de teléfono adicional
para configurar. Estas cuentas sirven para interactuar a través Telegram, simplemente para
tener una conversación o para encender la luz de una habitación.

Para programar el Bot de Telegram se va a usar Node-RED. Esta es una herramienta de


desarrollo basada en flujo para programación visual desarrollada originalmente por IBM para
conectar dispositivos de hardware, API y servicios en línea como parte de Internet de las
cosas.

Node Red permite programar de forma visual, es una herramienta muy potente de
programación, es un motor de flujos que permite definir gráficamente flujos de servicios, a
través de protocolos estándares como REST, MQTT, Websocket, AMQP… además de ofrecer
integración con apis de terceros, tales como Twitter, Facebook, Yahoo!…

Su punto fuerte es la sencillez. Permite utilizar tecnologías complejas sin tener que
profundizar hasta el más mínimo detalle en todas ellas. Nos quedamos en una capa inicial
donde nos centramos en lo importante y dejamos de lado aquello que no es práctico.

Crear un Bot de Telegram TUTORIAL


1_ Cuenta de Telegram y Node Red o en el Node Red de Windows: Lo primero que se
necesita es una cuenta de Telegram, Telegram es una aplicación de mensajería que puede
usarse desde el móvil, ordenador o web.
También se necesita ejecutar Node-RED. Darse de alta y elegir la versión gratuita llamada
short: [Link] O instalar Node Red en Windows 10.
Esta versión está limitada a 50 nodos y funcionamiento de 24 horas, luego hay que volver a
iniciar Node-RED.

2_Crear el Bot: Ir a Telegram e ingresar en BotFather, luego ejecutar /newbot


Figura 17: crear bot desde BotFather

Seguidamente elegimos un nombre para nuestro BOT y un nombre de usuario que termine
con la palabra BOT, vemos que se crea el BOT y se genera un TOKEN que deberemos guardar.

Ejecutamos el comando /setupuserpic para asignar un ícono a nuestro BOT y elegimos la


imagen que queramos.
Figura 18: elegimos imagen en bot

Ahora le vamos a asignar comandos que va a ejecutar nuestro bot con /setcommands

Figura 19: asignamos comandos a bot

Copiar y pegar los siguientes comandos:


start - inicio del bot
help - muestra los comandos
hola- saluda al bot
quetal - pregunta al bot que tal está
temperatura - temperatura en tu ciudad
humedad - humedad en tu ciudad
tiempo - que tiempo atmosférico hace en tu ciudad
hora - hora y día
enciende - enciende un led de un dispositivo conectado
apaga- apaga un led de un dispositivo conectado
sonido - emite un sonido en un dispositivo conectado
mensaje - muestra un mensaje en la pantalla de un dispositivo conectado
tweet - manda un tweet
mail - manda un email
foto - hace una foto y la muestra en telegram

Figura 20: probando comandos

Ya tenemos creado nuestro BOT

Programar Flujos en Node Red

Agregamos los siguientes nodos:


Figura 21: primeros nodos en NodeRed

Ahora configuramos el Nodo de Telegram, hacemos doble click en el nodo Telegram Receiver
y seleccionamos nuestro bot, y colocamos el TOKEN de nuestro bot.

Hacemos doble click en el nodo debug y seleccionamos lo siguiente:

Ahora agregamos los siguientes flujos


Doble click en el comando y colocamos /hola, doble click en el nodo text y escribimos el
mensaje que el bot nos va a devolver
Hacemos doble click en el nodo Telegram Sender para configurar y seleccionar nuestro bot

Siempre que hagamos un cambio seguidamente damos DEPLOY

También podría gustarte