Archivo de la categoría: Saber más

Diario Curso: Raspberry Pi y Node-RED. 2ª ed

Curso «Raspberry Pi y Node-RED para IoT 2022. 2ª ed.»: https://www.aprendiendoarduino.com/raspberry-pi-y-node-red-para-iot-2a-ed/

Día 1 (13/06/2022) – «Presentación del Curso»

Hoja de préstamo de material.

Capítulos vistos:

Día 2 (14/06/2022) – «Raspberry Pi OS y Linux»

Resumen de lo hecho el día 1: Raspberry Pi instalada y configurada con acceso remoto por VNC, incluso por cloud. ¿Dudas del proceso?

ssh: https://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-rg-es-4/ch-ssh.html

Raspberry Pi Compute Module 4s: https://www.muycomputer.com/2022/04/06/raspberry-pi-compute-module-4s/

mDNS: https://en.wikipedia.org/wiki/Multicast_DNS

Capítulos vistos:

Día 3 (15/06/2022) – «Linux e Instalación Servicios»

Resumen de lo hecho el día 2: Configurado acceso remoto a Raspberry Pi y redes virtuales.

Planificación para jueves o viernes: Node-RED y MQTT

Acceso a Raspberry Pi de casa con Zero Tier:

  • Instalar Zero Tier en Raspberry Pi de casa: curl -s https://install.zerotier.com | sudo bash
  • Unirse a la red: sudo zerotier-cli join [network-id] with [device-id]
  • Autorizar a la Raspberry Pi a entrar en la red desde el panel de control de Zero Tier
  • Comprobar que está en la red: sudo zerotier-cli listnetworks
  • Probar desde las otras Raspberry Pi en red Zero Tier que hace ping a Raspberry de Casa
  • Instalar Zero Tier en los PCs del aula y unirse a la red
  • Comprobar que se llega a los Node-RED (puertos 1880, 1881 y 1882) y Grafana (puerto 3000) de Raspberry Pi casa
  • Abandonar la red: sudo zerotier-cli leave [network-id]
  • Eliminar Raspberry Pi del panel de control de Zero Tier

Servicios como ZeroTier o Remote.it nos permite administrar redes virtuales y entender el funcionamiento de las VPNs o los túneles.

Zero Tier self-hosted: https://docs.zerotier.com/self-hosting/network-controllers/?utm_source=ztp

Acceso P2P con remote.it

MOOCs recomendados:

Capítulos vistos:

Día 4 (16/06/2022) – «Node-RED»

Resumen de lo hecho: Configurado acceso remoto a Raspberry Pi, acceso remoto y gestión Raspberry Pi via web.

  • Podemos programarla Node-RED
  • Podemos administrarla con Webmin
  • Podemos almacenar datos con SQLite
  • Y todo en local o en remoto.

Todo lo aprendido con Raspberry Pi es extensible a cualquier dispositivo con Linux, especialmente sistemas embebidos, gateways y servidores (publicos o privados).

Capítulos vistos:

Día 5 (17/06/2022) – «MQTT»

Open Weather Map:

Servidor MQTT:

  • Host: aprendiendonodered.com
  • Port: 8883
  • username: cursomqtt
  • Topic: cursomqtt/#

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

Capítulos vistos:

Día 6 (20/06/2022) – «Node-RED y MQTT»

Ecuador del curso: Todo listo para configurar Node-RED y programar con Node-RED.

Documentación final actualizada y publicada.

Control de Acceso con MQTT: https://es.aliexpress.com/item/1005003127209417.html

Dispositivos instalados, número de clientes en broker y carga del servidor

top -p `pgrep "mosquitto"`
tail -f /var/log/mosquitto/mosquitto.log

MOOCs:

Conectar los Arduinos

Capítulos vistos:

Día 7 (21/06/2022) – «Desarrollo Node-RED»

Más de MQTT en: 4.1.- Protocolo MQTT

Software MQTT: https://mqtt.org/software/

Broker MQTT público: https://www.hivemq.com/mqtt-cloud-broker/

Broker privado con MQTT en 1 min. Aedes: https://flows.nodered.org/node/node-red-contrib-aedes

MQTT Clean Session: http://www.steves-internet-guide.com/mqtt-clean-sessions-example/

Topic restriction: http://www.steves-internet-guide.com/topic-restriction-mosquitto-configuration/

Automatizar con Node-RED y MQTT:

  • Encender y apagar tras dos segundos con delay
  • Encender y apagar tras dos segundos con trigger
  • Encender con una pulsación y apagar con otra con toggle
  • Encender con temperatura > 25 grados y apagar cuando es menor

Programación distribuida. Envío de mensaje e instrucciones entre instancias de Node-RED para delegar funciones:

  • Publicar en cursomqtt/{nombre}/clima el nombre de una ciudad española mediante un inject
  • Suscribirse a cursomqtt/enrique/clima/resultado devuelve el clima para esa ciudad
  • Si se usara el mismo topic para responder a todos, todos recibiríamos las respuestas a las preguntas de todos.
  • Si usamos el mismo topic para responder, creamos un bucle

Lógica para programar la función anterior:

  • Suscribirse al topic cursomqtt/{nombre}/clima y consultar el clima actual con openweathermap, de la ciudad española que pasemos
  • Devolver el resultado en un JSON en cursomqtt/{nombre}/clima/resultado
  • No devolver el mensaje en el mismo topic. Peligro de hacer un bucle!!!

Capítulos vistos:

Día 8 (22/06/2022) – «Dashboard Node-RED»

Precio electricidad: https://www.ree.es/es/apidatos

Catálogo de datos del gobierno: https://datos.gob.es/es/catalogo

Programación visual para microcontroladores: https://xod.io/

Capítulos vistos:

Día 9 (23/06/2022) – «Configuración Node-RED»

Resumen de lo visto en el curso y lo que haremos los dos últimos días.

Owntracks: https://owntracks.org/

Worldmap : https://flows.nodered.org/node/node-red-contrib-web-worldmap

Ejemplo terremotos mejorado: https://flows.nodered.org/flow/002f4173484dabaf3d6742b8da9642ee

Demo 2N. Integrar control de accesos de 2N:

Capítulos vistos:

Día 10 (24/06/2022) – «Proyectos Finales con Node-RED»

Resumen de lo visto en el curso

MOOC Introducción a Docker y Contenedores: https://www.coursera.org/learn/introduccion-a-contenedores-con-docker

Netflix usa MQTT: https://www.hivemq.com/case-studies/netflix/

Nodo generador y decodificador de códigos QR: https://flows.nodered.org/node/node-red-contrib-image-tools

Curso Node-RED Developer: https://www.aprendiendoarduino.com/cursos/node-red-developer-professional/

Seguridad Node-RED:

  • Node-RED usa oauth2.0 para securiza la admin api
  • Usa auth bearer token. Expira en: 604800 segundos (7 días)
  • El navegador guarda el token y luego cuando vuelves a acceder no pide la contraseña. Puedes ver los token en el fichero /home/pi/-node-red/.sessions.json

El acceso al Dashboard y rutas HTTP usa basic Auth:

Eliminar contraseñas de los ordenadores!!!!

Recoger material.

Y cualquier duda a aprendiendoarduino@gmail.com

Capítulos vistos:

Capítulos para más información:

Saber más: Raspberry Pi y Node-RED para IoT

Curso Raspberry Pi y Node-RED para IoT 2022: https://www.aprendiendoarduino.com/cursos/raspberry-pi-y-node-red-para-iot/

Día 1 (19/04/2022) – «Presentación del Curso»

Hoja de préstamo de material.

10 años de Raspberry Pi: https://www.youtube.com/watch?v=eiwm5TMHIy8 

Raspberry Pi Compute Module 4s: https://www.muycomputer.com/2022/04/06/raspberry-pi-compute-module-4s/

Día 2 (20/04/2022) – «Raspberry Pi OS y Linux»

Think TIC: https://www.larioja.org/thinktic/fr/contacto/think-tic

mDNS: https://en.wikipedia.org/wiki/Multicast_DNS

Conectar mediante SSH en Windows 10: ssh -l pi 192.168.6.xx

Raspberry Pi con Ethernet

Raspberry Pi con SSD: https://www.youtube.com/watch?v=gp6XW-fGVjo

Resumen día 1: Paso a Paso: Instalar Raspberry Pi OS

Continuar con:

Día 3 (21/04/2022) – «Linux e Instalación Servicios»

Servicios como ZeroTier o Remote.it nos permite administrar redes virtuales y entender el funcionamiento de las VPNs o los túneles.

Acceso por VNC usando remote.it. Añadir el servicio VNC en Remote.it

Comprobado el acceso a las Raspberry Pi desde Casa:

  • ZeroTier: conectado a la red ThinkTIC
  • Remote.it: acceso por SSH a Raspberry Pi
  • VNC: escritorio remoto

Contraseña por defecto Raspberry Pi: https://www.adslzone.net/noticias/seguridad/grave-fallo-raspberry-cambiar-contrasena/

Raspberry Pi OS elimina el usuario por defecto: https://www.muyseguridad.net/2022/04/13/raspberry-pi-usuario-por-defecto/

Ejercicio Paso a Paso: Instalar Node-RED, Webmin y SQLite

Día 4 (22/04/2022) – «Node-RED e Instalación de Servicios»

Resumen de lo visto hasta ahora y lo que veremos los próximos días.

Tenemos una Raspberry Pi instalada, configurada y con acceso remoto.

  • Podemos programarla con Python y Node-RED
  • Podemos administrarla con Webmin
  • Podemos almacenar datos con SQLite
  • Y todo en local o en remoto.

Acceso Remote.it a Node-RED HTTP y HTTPS.

Ejecutar un programa en el inicio en Raspberry Pi: https://www.dexterindustries.com/howto/run-a-program-on-your-raspberry-pi-at-startup/

Open Weather Map:

Día 5 (23/04/2022) – «MQTT»

Hacer copia de seguridad de la tarjeta SD.

Servidor MQTT:

  • Host: aprendiendonodered.com
  • Port: 8883
  • username: cursomqtt
  • Topic: cursomqtt/#

Encuesta Node-RED 2019: https://nodered.org/about/community/survey/2019/

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

Día 6 (25/04/2022) – «MQTT y Fundamentos Node-RED»

Resumen de lo visto en el ecuador del curso y lo que nos queda.

Dispositivos instalados, número de clientes en broker y carga del servidor

Aedes: https://flows.nodered.org/node/node-red-contrib-aedes

Xiaomi MiFlora: https://www.banggood.com/es/Global-Version-Xiaomi-4-In-1-Flower-Plant-Light-Temperature-Tester-Garden-Soil-Moisture-Nutrient-Monitor-p-1068369.html

Escanear dispositivos bluetooth: sudo hcitool lescan o bluetoothctl y luego poner scan on

zigbee2mqtt: https://www.zigbee2mqtt.io/

Ejercicio Paso a Paso: Node-RED y MQTT

Día 7 (26/04/2022) – «Instalación Node-RED»

Broker MQTT público: https://www.hivemq.com/mqtt-cloud-broker/

InfluxDB cloud: https://www.influxdata.com/products/influxdb-cloud/

MQTT broker escalable: https://vernemq.com/

Low Code Programming: https://aprendiendoarduino.wordpress.com/2021/11/07/low-code-programming/

Ejercicio Paso a Paso: Configurar Node-RED

Día 8 (27/04/2022) – «Programación Node-RED»

Eliminar o deshabilitar los flujos y empezamos desde cero.

Logs remote.it. Caída a las 0:14

MQTT Clean Session: http://www.steves-internet-guide.com/mqtt-clean-sessions-example/

Topic restriction: http://www.steves-internet-guide.com/topic-restriction-mosquitto-configuration/

Día 9 (28/04/2022) – «Programación Node-RED II»

Filtrar datos de un csv.

Precio de los combustibles: https://datos.gob.es/es/catalogo/e05068001-precio-de-carburantes-en-las-gasolineras-espanolas

Precio electricidad: https://www.ree.es/es/apidatos

Edge Computing: https://aprendiendoarduino.wordpress.com/2020/07/24/node-red-y-edge-computing/

Owntracks: https://owntracks.org/

Worldmap : https://flows.nodered.org/node/node-red-contrib-web-worldmap

Arte con Raspberry Pi y Node-RED

Día 10 (29/04/2022) – «Desarrollo con Node-RED»

Resumen de lo visto en el curso

Segunda edición del curso: https://www.larioja.org/thinktic/es/cursos-eventos/proximos-cursos-eventos/curso-raspberry-pi-node-red-iot

Curso Node-RED Developer

Códigos de los ejemplos del curso:

Alexa y Node-RED:

Flujo de node-red https://flows.nodered.org/node/node-red-contrib-amazon-echo sin skills. Se pone a escuchar Node-RED en el puerto 80 y debe estar Node-RED en la misma red que el amazon echo. En caso que el puerto 80 esté usado hay que usar un proxy. Proxy https://github.com/datech/node-red-contrib-amazon-echo/issues/89

Este nodo simula una lámpara HUE en Node-RED con las llamadas a la API de HUE, pero se puede usar para otras cosas. Simula una bombilla inteligente y como pone en el description solo tiene unas funciones limitadas, emula una Philips Hue bridge. Ver http://192.168.1.12/api/name (192.168.1.12 es la IP de Node-RED en una Raspberry Pi)
Al poner el node abre el puerto indicado mostrando http://192.168.1.12:8008/description.xml

Otra opción sin skills ni registro https://flows.nodered.org/node/node-red-contrib-alexa-local similar.

Opción con skill: https://flows.nodered.org/node/node-red-contrib-alexa-smart-home

Seguridad Node-RED:

  • Node-RED usa oauth2.0 para securiza la admin api
  • Usa auth bearer token. Expira en: 604800 segundos (7 días)
  • Ver https://discourse.nodered.org/t/node-red-configuration-adminauth-sessionexpirytime/8261/2. Parámetro sessionExpiryTime en settings.js
  • Ver AccessToken en Application – Storage – Local Storage
  • El navegador guarda el token y luego cuando vuelves a acceder no pide la contraseña. Puedes ver los token en el fichero /home/pi/-node-red/.sessions.json

El acceso al Dashboard y rutas HTTP usa basic Auth:

Nodos Node-RED y Prácticas!!!

Eliminar contraseñas de los ordenadores!!!!

Recoger material.

Y cualquier duda a aprendiendoarduino@gmail.com

Saber Más Fundamentos IoT para Formación Profesional

La imagen tiene un atributo ALT vacío; su nombre de archivo es aprendiendoarduino_logo.png

Curso Semipresencial “Fundamentos IoT para Formación Profesional”: https://www.aprendiendoarduino.com/cursos/fundamentos-iot-open-source-para-formacion-profesional/

Sesión 1 (on-line)

Puntos vistos:

Otros temas:

Sesión 2 (on-line)

Puntos vistos:

Otros temas:

  • Enlaces adicionales del lunes
  • Disponibilidad del material de prácticas
  • Entraremos en temas prácticos desde hoy e intercalaremos otros temas más teóricos
  • Tener Node-RED instalado y funcionando desde sesión 3 o 4 para ir conociendo y hacer ejemplos aunque no entendamos al 100%, nos servirá como «pegamento» entre los conceptos que veamos. Dar un poco de ritmo al curso.
  • Node-RED con 2021: https://nodered.jp/noderedcon2021/index-en.html

Sesión 3 (on-line)

Puntos vistos:

Otros temas:

Sesión 4 (on-line)

Puntos vistos:

Otros temas:

Sesión 5 (on-line)

Puntos vistos:

Otros puntos:

xkcd: Dependency

Sesión 6 (on-line)

Puntos vistos:

Otros puntos:

Sesión 7 (on-line)

Puntos vistos:

Otros puntos:

Sesión 8 (on-line)

Puntos vistos:

Otros puntos:

  • Integrar sistemas con Node-RED: «pegamento». Cualquier «cosa» con IP puede manejarse con Node-RED y facilita el consumo de datos IP (APIs).
  • Con Node-RED puedo hacer todo lo que hace IFTTT: https://ifttt.com/
  • Ejemplo IoT: monitorizar estructuras de edificios. ¿HW? ¿Comunicaciones? ¿Protocolo? ¿Gestión y almacenamiento de datos? ¿Gestión de dispositivos (alta, baja, avería, alerta, error de comunicación, etc…)? ¿Programación Node-RED? ¿Algo más?
  • Material alumnos para sesiones presenciales:
    • Ordenador o portátil por cada alumno
    • Acceso a su Raspberry Pi o instancia Node-RED, puede ser en local o instalada en casa con acceso por VNC o similar. Puedo proporcionar instancia de Node-RED.
    • Placas o dispositivos para conectar. Si es posible configuradas, pero sino las configuraremos en el aula.
    • Otros dispositivos a integrar con Node-RED: Gateway y dispositivos LoRa, PLCs Siemens, gateway KNX y dispositivos KNX, Asterisk, gateway y dispositivos Z-Wave, hub delta dore y dispositivos, etc… (comprobar requisitos del aula e indicar si es necesario alguno adicional)
  • Material aula para sesiones presenciales:
    • Proyector con HDMI o VGA
    • Pizarra y rotuladores de pizarra
    • Red Wifi protegida con acceso a Internet
    • Uno o varios switches con al menos 10 bocas, IP por DHCP y acceso a internet
    • Cables ethernet varios
    • Un par de cables HDMI y un par de teclados y ratones para conectar a las Raspberry Pi
    • Varias regletas eléctricas
    • Alimentadores USB si es posible

Sesión 9 (presencial)

Puntos vistos:

  • Proyecto Final
  • Conectar dispositivos
  • Conectar Raspberry Pis y otros Node-RED

Otros puntos:

Sesión 10 (on-line)

Puntos vistos:

Otros puntos:

IoT Reference Model | CC BY-SA @tamberg, FHNW | Thomas Amberg | Flickr

Sesión 11 (on-line)

Puntos vistos:

Otros puntos:

Sesión 12 (presencial)

Puntos vistos:

[{"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"]]}]
INSERT INTO `Datos_Node` (`nodo`, `json`) VALUES ('nodo00', '{\"temp\":53,\"CPU\":30\",\"mem\":120\"}');

Otros puntos:

Otro Material no Visto

Saber Más Fundamentos IoT CEFIRE

La imagen tiene un atributo ALT vacío; su nombre de archivo es aprendiendoarduino_logo.png

Curso On-Line “Fundamentos IoT”: https://www.aprendiendoarduino.com/cursos/fundamentos-iot-open-source-para-aplicaciones-industriales/

Semana 1

Darse de alta en los servicios Thingspeak y Grafana Cloud

Práctica 1: Instalación y configuración Raspberry Pi OS. Para este fin de semana, mandar comentarios y tutoria si es necesario

Vídeo tutoriales de instalación Raspberry Pi OS Headless:

Video en drive

Monitorización para principiantes: https://endef.com/monitorizacion-ee-para-principantes/

Simatic IoT2050:

Limitación RPi virtual vs Rpi OS:

  • Ojo a las redes
  • Algún SW no viene instalado
  • Versión de kernel antigua 5.4 vs 4.19

Raspberry Pi 64 bits:

Semana 2

  • Programa del curso
  • Modo Kiosko
  • Problema con dashboard y muchos puntos en la gráfica
  • Demo y Dashboard Node-RED en móvil
  • Sensores
  • Actuadores y Periféricos
  • Librerías
  • Práctica 2
  • Consultas

Semana 3 Lunes

Semana 3 Miércoles

Semana 4 Lunes

Semana 4 Miércoles

Código para obtener los datos Raspberry Pi y mandar a MQTT: https://github.com/jecrespo/Curso-Node-RED/blob/master/Monitor%20Raspberry%20Pi/monitor_raspberrypi.json

Clonar imágenes Raspberry Pi:

Cómo funciona Node-RED: Arquitectura asíncrona y basada en eventos.

Cuando se hace clic en el botón de despliegue, el editor crea la representación JSON completa de su configuración de flujo. Esto se pasa a través de una petición HTTP Post al tiempo de ejecución. Asumiendo que se está haciendo un «despliegue completo», el tiempo de ejecución detiene todos los nodos actuales y los descarta. A continuación, recorre cada nodo de la definición de flujo JSON y crea un nuevo objeto nodo del tipo apropiado, pasando su configuración.

Instalado en /usr/lib/node_modules/node-red y se ejecuta el fichero red.js

Semana 5 Lunes

Tutoría Fin de Curso

Puntos saltados que veremos lo que más interesen

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