Saber Más Node-RED Developer

Curso On-Line “Node-RED Developer para IoT (Nivel I)”: https://www.aprendiendoarduino.com/cursos/node-red-developer-para-iot-nivel-i/

Día 1 – “Presentación del Curso”

Reto/Ejercicio: Instalar una instancia privada de Node-RED en Raspberry Pi o en un PC/Portátil.

Instrucciones instalación Node-RED: https://nodered.org/#get-started

Instalar Rapsbian:

Puntos vistos:

Día 2 – “Programación Básica”

Reto/Ejercicio: Hacer los primeros flujos sencillos. Hacer que cuando la temperatura esté fuera de un rango entre 18 y 22 grados, ponga en rojo un elemento del dashboard y mande un email.

¿Qué tal la instalación de Raspbian y Node-RED?

Instalar MQTT Explorer: http://mqtt-explorer.com/

Proceso de instalación certificados letsencrypt: https://letsencrypt.org/

  • Certbot simplifica todo el proceso: https://certbot.eff.org/ 
  • sudo yum install epel-release
  • yum install certbot
  • Solo certificado: certbot certonly –standalone
  • Para renovar hacer: certbot renew
 Congratulations! Your certificate and chain have been saved at:
 /etc/letsencrypt/live/xxxxx/fullchain.pem
    Your key file has been saved at:
 /etc/letsencrypt/live/xxxxx/privkey.pem
    Your cert will expire on xxxx. To obtain a new or tweaked
    version of this certificate in the future, simply run certbot
    again. To non-interactively renew *all* of your certificates, run
    "certbot renew" 

Una vez tenemos los certificados TLS en la ruta indicada, dependiendo del software que los necesite configurarlo, indicando la ruta donde están los certificados.

Puntos vistos:

Día 3 – “Mensajes y Dashboard”

Reto/Ejercicio: Hacer un flujo para publicar datos de CPU, Memoria y temperatura de las Raspberry Pi de casa en MQTT topic aprendiendonodered/alumnoxx/raspberrypi/[CPU,Memoria,Temperatura] y que la instancia de Node-RED del curso las recoja y muestre en el dashboard. Para ello usar el broker MQTT. Opcionalmente usar el broker integrado en Node-RED aedes o HTTP endpoint.

Usar estos nodos:

[{"id":"af22b399.12614","type":"exec","z":"8a81314e.a0f79","command":"vcgencmd measure_temp","addpay":false,"append":"","useSpawn":"","timer":"","name":"RPi Temp.","x":325.2221908569336,"y":46.33333683013916,"wires":[["14f0a295.59181d"],[],[]]},{"id":"408435c9.447fec","type":"exec","z":"8a81314e.a0f79","command":"top -d 0.5 -b -n2 | grep \"Cpu(s)\"|tail -n 1 | awk '{print $2 + $4}'","addpay":false,"append":"","useSpawn":"","timer":"","name":"CPU Load","x":325.2221908569336,"y":126.33333683013916,"wires":[["2c7475c7.6cc01a"],[],[]]},{"id":"8fbcbdf9.549b7","type":"exec","z":"8a81314e.a0f79","command":"free | grep Mem | awk '{print 100*($4+$6+$7)/$2}'","addpay":false,"append":"","useSpawn":"","timer":"","name":"Free Memory","x":325.2222099304199,"y":190.55557250976562,"wires":[["daf6433c.bad81"],[],[]]},{"id":"14f0a295.59181d","type":"function","z":"8a81314e.a0f79","name":"","func":"str = msg.payload\nmsg.payload = str.substring(5,9);\nreturn msg;","outputs":1,"noerr":0,"x":471.888858795166,"y":33.00000190734863,"wires":[["46daa272.4333ac","334a9ddd.345602"]]},{"id":"daf6433c.bad81","type":"function","z":"8a81314e.a0f79","name":"","func":"str = msg.payload\nmsg.payload = parseInt(str.substring(0,str.length - 1));\nreturn msg;","outputs":1,"noerr":0,"x":530,"y":180,"wires":[["1ba39571.ba75ab"]]}]

Vídeos explicando como hacer determinadas cosas en Node-RED. Solicitar aquellos temas que no tengáis claro como hacer.

Datos publicados en Broker MQTT y disponibles para todos. Ver con MQTT Explorer.

Uso de nodo file storage en docker.

  • ruta de fichero en docker es /data
  • ruta por defecto /usr/src/node-red/

Puntos vistos:

Día 4 – “Dashboard y Mensajes”

Reto/Ejercicio: Hacer un dashboard para ver la temperatura de todas las Raspberry Pi publicada en MQTT y sus gráficas. Usar MQTT Explorer para ver que datos

Ejemplo sencillo de dashboard:

Ejercicio día 2:

Como se están publicando los datos en MQTT, verlos con MQTT Explorer. Y datos almacenados.

Puntos vistos:

Día 5 – “Industria y MQTT”

Reto/Ejercicio: Hacer un IFTTT con Node-RED. ¿Ideas?. P.e. si recibo un correo con el subject “twitter”, twittear el contenido del correo. P.e. si recibo una llamada por la el HTTP endpoint mandar un email.

IFTTT Propio. Como IFTTT es ahora de pago, hacer tu propio IFTTT con Node-RED. Planes IFTTT: https://ifttt.com/plans

Puntos vistos:

Día 6 – “MQTT y Estructura Flujos”

Reto/Ejercicio: Sobre el ejercicio del día 2, añadir de forma dinámica los umbrales máximos y mínimos de alerta mediante dos sliders en el dashboard.

Puntos del curso ordenados.

Más de 2.2M de datos generados.

Preparad para el próximo día la cuenta de github o bitbucket

Plataforma IoT Low Code: https://elliotcloud.com/. Cinco verticales:

Vídeo del ejercicio día 3:

Código ejercicio 3: https://github.com/aprendiendonodered/ejercicio03

Vídeo del ejercicio día 4:

Código del ejercicio 4: https://github.com/aprendiendonodered/ejercicio04

Puntos vistos:

Día 7 – “Proyectos”

Reto/Ejercicio: Hacer un subflujo con 3 salidas, que pasándole una variable de entorno del topic donde se suscriba y el número de datos a analizar, devuelva la media, máxima y mínima de esos datos por cada salida.

Posible error en web https://www.aprendiendoarduino.com/

Monitorizar el nivel de CO2 en las aulas: https://anaire.org/

Vídeo ejemplo de configuración del color del fondo usando otros botones: https://www.loom.com/share/01e0780081dc4489bf0542e1d8f3b8ec

[{"id":"bce47629.9fe348","type":"tab","label":"Flow 3","disabled":false,"info":""},{"id":"4af7152f.f760fc","type":"ui_button","z":"bce47629.9fe348","name":"Verde","group":"bffdcbc1.a72298","order":3,"width":0,"height":0,"passthru":false,"label":"Verde","tooltip":"","color":"","bgcolor":"green","icon":"","payload":"green","payloadType":"str","topic":"","x":160,"y":80,"wires":[["23266e50.ff3442"]]},{"id":"c80cb0ae.e9bf1","type":"ui_button","z":"bce47629.9fe348","name":"Rojo","group":"bffdcbc1.a72298","order":1,"width":0,"height":0,"passthru":false,"label":"Rojo","tooltip":"","color":"","bgcolor":"red","icon":"","payload":"red","payloadType":"str","topic":"","x":160,"y":160,"wires":[["23266e50.ff3442"]]},{"id":"d9f808b6.2de0e8","type":"ui_button","z":"bce47629.9fe348","name":"Negro","group":"bffdcbc1.a72298","order":2,"width":0,"height":0,"passthru":false,"label":"Negro","tooltip":"","color":"","bgcolor":"black","icon":"","payload":"black","payloadType":"str","topic":"","x":160,"y":260,"wires":[["23266e50.ff3442"]]},{"id":"ac22cd7c.00d88","type":"ui_button","z":"bce47629.9fe348","name":"","group":"bffdcbc1.a72298","order":4,"width":0,"height":0,"passthru":false,"label":"button","tooltip":"","color":"","bgcolor":"{{background}}","icon":"","payload":"","payloadType":"str","topic":"","x":630,"y":160,"wires":[[]]},{"id":"23266e50.ff3442","type":"change","z":"bce47629.9fe348","name":"","rules":[{"t":"set","p":"background","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":380,"y":160,"wires":[["ac22cd7c.00d88"]]},{"id":"bffdcbc1.a72298","type":"ui_group","name":"Default","tab":"601bd98f.ac6fc8","order":1,"disp":true,"width":"6","collapse":false},{"id":"601bd98f.ac6fc8","type":"ui_tab","name":"Home","icon":"dashboard","disabled":false,"hidden":false}]

Vídeos del ejercicio día 5

Código ejercicio día 5: https://github.com/aprendiendonodered/ejercicio05

Integración de Node-RED con email, twitter y HTTP endpoint:

Puntos vistos:

Día 8 – “Funciones”

Reto/Ejercicio: Clonar el proyecto https://github.com/aprendiendonodered/ejercicio04 y añadir toda la información de todas las Raspberry Pi que publican datos en mqtt://enriquecrespo.com:1883 y añadir las chart a cada datos, mostrando los datos de forma visual y personalizando el dashboard.

Corregido los códigos a importar del botón de cambia de color y subflow con variables de entorno MAX y MIN.

KNX en Node-RED: https://flows.nodered.org/node/node-red-contrib-knx-ultimate

Vídeo del ejercicio día 5 publicado.

Puntos vistos:

Día 9 – “Biblioteca Node-RED”

Reto/Ejercicio: Hacer una función que guarde los últimos 20 valores en una variable de contexto y una vez tenga los 20, mande la media, máximo y mínimos por tres salidas y en una cuarta mande los 20 mensajes que ha retenido de forma consecutiva.

Hacer también este mismo ejercicio buscando nodos en https://flows.nodered.org/ que hagan esas funciones.

Puntos vistos:

Día 10 – “Debug Node-RED”

Reto/Ejercicio: Hacer una aplicación con Node-RED y publicar. Recoger datos de una Raspberry Pi, ordenarlos y guardar en formato csv. Luego, obtener los datos pulsando un botón del dashboard y mostrarlos en un chart del dashboard.

Disponibilidad de los servicios tras el curso

  • nodered.enriquecrespo.com se apagará, pero si queréis usarlo durante un tiempo, lo puedo mantener un tiempo
  • mosquitto en enriquecrespo.com permanecerá activo. Si alguien desea un usuario con acceso exclusivo a un grupo de topics, puedo suministrarlo.
  • si alguien quiere una instancia de Node-RED basada en docker en enriquecrespo.com puedo suministrarla.

Nodos AI:

Puntos vistos:

Temas que mandaré la próxima semana:

  • Ejercicios resueltos del curso y vídeos: Ejercicios Resueltos del Curso
  • Tutorial Plataforma IoT segura en VPS o Servidor Público: Node-RED + Mosquitto + Servicios (p.e. InfluxDB y Grafana)

Otros puntos (no los vamos a ver pero hemos hablado de ello):

Otros puntos para futuros cursos:

  • Documentar Flujos
  • Control de Flujos
  • Trabajar con Datos Formateados
  • Ejemplos Node-RED y MQTT
  • Personalización Dashboard Node-RED
  • Ejemplos Dashboard Node-RED
  • Creación de Nodos

Un pensamiento en “Saber Más Node-RED Developer

  1. Pingback: Saber Más Node-RED Developer -

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios .