Curso On-Line “Node-RED Developer para IoT (Nivel I) 2021” de 30 horas de duración del 19 al 30 de abril de 2021 en Think TIC de Logroño.
Node-Red es una herramienta open source de desarrollo/programación basada en flujos. Es una programación visual desarrollada originalmente por IBM para conectar dispositivos de hardware, API y servicios en línea como parte del Internet de las cosas (IoT).
El objetivo de este curso es que el alumno aprenda el uso de Node-RED y la programación visual mediante flujos para su uso en entornos de domótica, IIoT e IoT. El alumno será capaz de instalar, configurar y realizar proyectos de dificultad intermedia usando Node-RED.
Node red es adecuado para profesionales dedicados al Internet de las cosas Industrial( IIoT) y personal dedicado al diseño y prueba de soluciones para la comunicación de equipos de planta con aplicaciones de IT. Dado que la mayoría de dispositivos IoT para industria 4.0 posibilitan realizar un programa de control con la herramienta de Node-Red, el dominio de dicha herramienta permitiría al equipo IIoT explorar y ampliar las soluciones que ofrece a la empresa que lo use.
Información e inscripciones: https://www.larioja.org/thinktic/es/cursos-eventos/proximos-cursos-eventos/curso-online-node-red-developer-iot-nivel-i
Sesión Día 1:
Ejercicio 1: Instalar instancia personal de la última versión de Node-RED.
Entregable: Mostrar la última versión instalada con un flujo básico desplegado. Captura de pantalla.
Sesión Día 2:
- Hecho con Node-RED: https://tinygs.com/
- Instalación de Node-RED, dudas y revisión de los métodos: Instalación de Node-RED
- Nodos del día (Inject & Debug): https://nodered.org/docs/user-guide/nodes
- Configurar y Securizar Node-RED
Ejercicio 2: Configurar https y contraseña en la instancia de Node-RED.
Entregable: Mostrar uso de https y contraseña en Node-RED. Captura de pantalla.
Sesión Día 3:
- Temas avanzados
- Próximos vídeos/post: activar SSL en Node-RED, Múltiples instancias en Node-RED
- Comandos para parar e iniciar Node-RED:
- node-red-stop to stop Node-RED
- node-red-start to start Node-RED again
- node-red-log to view the recent log output
- sudo systemctl enable nodered.service to autostart Node-RED at every boot
- sudo systemctl disable nodered.service to disable autostart on boot
- sudo systemctl status nodered.service to check service status
- sudo systemctl restart nodered.service to restart service
- Obtener contraseña cifrada bcrypt Node-Red. Usar esta web con 8 rounds: https://bcrypt-generator.com/
- node-red admin en docker: https://discourse.nodered.org/t/using-command-line-access-with-the-docker-install/30434/5
- Arquitectura Node-RED
- Proceso de arranque de Node-RED
- Problema con Themes: cuidado al poner cambios en sttings.js y seguir la jerarquía
- Nodo del día (change): https://nodered.org/docs/user-guide/nodes
- Programación Básica Node-RED
Ejercicio 3: Hacer el flujo del tutorial: https://nodered.org/docs/tutorials/second-flow
Entregable: Flujo programado con los datos recibidos.
Sesión Día 4:
- Nodos del día:
- Switch: https://nodered.org/docs/user-guide/nodes
- Switch Time: https://flows.nodered.org/node/node-red-contrib-time-switch
- http request: https://cookbook.nodered.org/http/simple-get-request
- http endpoint: https://cookbook.nodered.org/http/create-an-http-endpoint
- Ejemplo: https://nodered.org/docs/tutorials/second-flow
- Protocolo MQTT
- Mosquitto
- Instalar, Configurar y Securizar Mosquitto y Node-RED en Raspberry Pi
Ejercicio 4: Publicar los datos en el broker publico y suscribirse a los topics publicados con datos.
Entregable: Flujo programado con los datos recibidos.
Sesión Día 5:
- Ejemplo publicar datos aviones
- Nodo rbe (report by exception): https://flows.nodered.org/node/node-red-node-rbe
- Ejemplo Node-RED y MQTT, Wibeee: https://github.com/jecrespo/Wibeee-Data-Collector
- Instalar y securizar mosquitto
- Nodos del día:
- Proyectos con Node-RED
Ejercicio 5: Configurar y habilitar los proyectos en la instancia de Node-RED y publicar el primer flujo en Github/Bitbucket
Entregable: Repositorio en Github/Bitbucket público con al menos tres cambios.
Sesión Día 6:
- Vídeos https y Certificado Autofirmado para Node-RED:
- Node-RED y ML con TensorFlow: https://www.youtube.com/watch?v=cZj1d25eeWY
- Nodos del día:
- Versiones de Node-RED
- Dashboard Node-RED
Ejercicio 6: Crear un primer Dashboard con los datos disponibles en el Broker Público del curso.
Entregable: Repositorio en Github/Bitbucket público
Sesión Día 7:
- Entregable día 6
- Dudas Dashboard
- Dashboard ejemplo: https://github.com/aprendiendonodered/ejemplo-dashboard
- Ejercicios Node-RED + MQTT + Dashboard
- Obtener datos de CPU, Memoria y Temperatura de Raspberry Pi
- Nodos del día:
- Modbus: https://flows.nodered.org/node/node-red-contrib-modbus
- Siemens S7: https://flows.nodered.org/node/node-red-contrib-s7
- Protocolo comunicación S7: https://flows.nodered.org/node/node-red-contrib-s7comm
- OPC y OPC-UA: https://flows.nodered.org/search?term=opc&type=node&type=flow&type=collection&sort=downloads
- Manejar datos binarios Modbus: https://flows.nodered.org/node/node-red-contrib-buffer-parser
- Node-RED en la Industria
- Contexto y Variables de Entorno en Node-RED
Ejercicio 7: Publicar los datos de CPU, Memoria y Temperatura de la Raspberry Pi y en broker MQTT. Hacer un proyecto que publique los datos y los muestre. Puede usare como base este proyecto: https://github.com/aprendiendonodered/ejercicio03
Entregable: Repositorio en Github/Bitbucket público
Sesión Día 8:
- Entregable día 7
- Proyecto hasta final de curso, dashboard que muestre los datos de de CPU, Memoria y Temperatura de una o varias Raspberry Pi (propias o externas) que tenga un formulario de alertas y mande email o telegram cuando haya una alerta y cuando se reponga. Guardar los datos medios cada 5 minutos en un csv en local y crear varias acciones en el dashboard para que lo muestre en una gráfica, lo mande por email y lo borre. Opcionalmente guardar los datos en alguna BBDD. Solución en https://github.com/aprendiendonodered/proyecto-aprendiendonodered21
- Acabar: Contexto y Variables de Entorno en Node-RED
- Nodos del día:
- Telegram: https://flows.nodered.org/node/node-red-contrib-telegrambot
- Telegram2: https://flows.nodered.org/node/node-red-contrib-chatbot
- Mail: https://flows.nodered.org/node/node-red-node-email
- Nodos del día: file y file-in
- Node-RED y Edge Computing
- Node-Red en la Nube
- Uso del Editor de Node-RED
Ejercicio 8: Hacer un proyecto que le pase el valor de la alerta de la CPU o Temperatura de la Raspberry Pi mediante un formulario en Node-RED y mande una alerta por email cuando se supere y cuando se reponga el valor.
Entregable: Repositorio en Github/Bitbucket público
Sesión Día 9:
- Ejemplo de Dashboard: https://github.com/aprendiendonodered/proyecto-aprendiendonodered21
- Lenguajes a aprender para profundizar: javascript, node.js y Angular como framework para dashboard
- Opción “disableEditor” en settings.js. Los admin endpoints siguen activos.
- Deploy un cambio NO reinicia el contexto, pero si un reinicio de la instancia. Se puede crear un flujo que configure el contexto en el inicio de Node-RED usando el nodo inject.
- API Admin: https://nodered.org/docs/api/admin/methods/
- ¿Alguna sugerencia de Nodo para revisar?
- Uso de Middleware: http://expressjs.com/en/guide/using-middleware.html
- Nodos del día:
- MySQL: https://flows.nodered.org/node/node-red-node-mysql
- Probar una cuenta gratuita de: https://www.freemysqlhosting.net/
- InfluxDB: https://flows.nodered.org/node/node-red-contrib-influxdb
- Probar cuenta gratuita de: https://www.influxdata.com/influxdb-cloud-pricing/
- Uso del Editor de Node-RED
- Biblioteca Node-RED
- Mensajes Node-RED
Ejercicio 9: Partiendo del ejercicio 8, guardar los datos de Raspberry Pi en un fichero csv. Crear un botón para borrar fichero y otro para enviar el fichero por email como adjunto.
Entregable: Repositorio en Github/Bitbucket público
Sesión Día 10:
- Dudas sobre los ejercicios y el ejercicio final.
- Nodos del día:
- Debug Node-RED
- Manejo de Errores
- Funciones en Node-RED
- Nodos de Configuración en Node-RED
- Estructura de los Flujos en Node-RED
- Integración con Servicios de Terceros
- Ejercicios Resueltos del Curso
Ejercicio 10: Basado en el ejercicio 9, hacer un flujo que agrupe los datos en grupos de 25 y sacar los datos de media, máxima y mínima cada 25 valores y guardar en otro fichero llamado raspberrypi_agrupados.csv con los campos: timestamp,CPU_AVG,CPU_MAX,CPU_MIN,Memory_AVG,Memory_MAX,Memory_MIN,Temperature_AVG,Temperature_MAX,Temperature_MIN. Opcionalmente guardar en alguna base de datos.
Entregable: Repositorio en Github/Bitbucket público