Archivo de la categoría: Diario Curso

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:

Diario del Curso IoT, Smart Cities y Node-RED

El diario del curso es una herramienta para seguir los puntos vistos en cada sesión del curso, que permite conocer el avance sesión a sesión.

También sirve para documentar los puntos y dudas que surgen en el curso fuera del temario, pero que es importante tenerlo por escrito como: enlaces interesantes, ampliar un tema de interés, tecnologías relacionadas, etc…

Sesión 1 (3 de mayo) – «Presentación Curso»

Capítulos vistos:

Sesión 2 (4 de mayo) – «Hardware IoT»

Smart Spots: https://smartcities.hopu.eu/index.html

OPA LWM2M: https://en.wikipedia.org/wiki/OMA_LWM2M

Logroño ciudad Inteligente: https://ciudadinteligente.logrono.es/

Soldar Módulos Wemos D1 Mini:

  • Usar espadines hembra en los ESP8266
  • Usar espadines macho en los shields: relé, oled y led.
  • Usar espadines macho/hembra (los más alargados) en el resto de shields: DHT11, DS18B20, BMP180,

Nodos y Firmware: https://aprendiendoarduino.wordpress.com/2021/12/05/material-curso-node-red/

Capítulos vistos:

Sesión 3 (9 de mayo) – «Comunicaciones IoT»

Plataforma Smart cities: https://elliotcloud.com/smart-cities-2/

Acceso a los metadatos: https://sacseguridad.com/auto-entrenamiento-y-aprendizaje-de-las-camaras-de-video-bosch-o-camera-trainer/

Bosch Metadata Publisher
Es una herramienta gratuita que permite al desarrollador de aplicaciones utilizar el protocolo MQTT y así poder trabajar en ambientes de comunicación M2M (Machine to Machine) o IoT (Internet of Things), posibilitando el desarrollo de aplicaciones que involucren dispositivos de automatización industrial o de edificios con base en la generación de metadatos por parte de la cámara.

Metadata y eventos de analíticas vía ONVIF
Con la interfaz de conformidad ONVIF disponible en las cámaras Bosch con FW 6.10 y superior se es compatible para recibir eventos de análisis basados en el motor de reglas de IVA en el borde y la secuencia de metadatos en el formato ONVIF. Use esta funcionalidad para desarrollar interfaces de integración con sistemas VMS de terceros, o para desarrollar sus propias aplicaciones de software que toman como base el foro ONVIF.

Capítulos vistos:

Sesión 4 (11 de mayo) – «Protocolos IoT»

Actualizada parte de SQLite en Instalación de Servicios en Raspberry Pi OS

Actualizada lista de librerías en Sensorización IoT con ESP8266

Listado completo de firmware de shields: https://github.com/jecrespo/Curso-Node-RED/tree/master/Remote%20Nodes%20Firmware/Wemos%20Shields%20Usage

HW LoRaWAN:

LoRa Network Server: https://www.chirpstack.io/

Broker MQTT:

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

Capítulos vistos:

Sesión 5 (16 de mayo) – «MQTT»

Demo LoRa punto a punto: https://www.aprendiendoarduino.com/2018/03/07/demo-lora-con-moteino/

Datos enviados a Broker MQTT

Mosquitto Clients Count. Se quedan las conexiones al hacer un deploy. Probar con netstat -ntp | grep ESTABLISHED.*mosquitto

Configuración mosquitto: https://mosquitto.org/man/mosquitto-conf-5.html

  • message_size_limit
  • max_queued_messages
  • memory_limit
  • max_connections

Capítulos vistos:

Sesión 6 (18 de mayo) – «Instalación y Configuración Node-RED»

Problema en el cierre de socket en nodos MQTT: https://github.com/node-red/node-red/issues/3593

NodeRed 3.0.0-beta.1: https://discourse.nodered.org/t/node-red-3-0-0-beta-1-released/62124

Instalada beta en https://enriquecrespo.com:18809/

Instalar en Docker Node-RED dev: https://hub.docker.com/r/nodered/node-red-dev/tags

Demo Sigfox: https://www.aprendiendoarduino.com/2018/03/05/demo-mkrfox1200/

HW Sigfox:

Capítulos vistos:

Sesión 7 (23 de mayo) – «Node-RED»

TTN: The Things Network (TTN) es una iniciativa basada en la comunidad para establecer una red global de IoT. La iniciativa fue lanzada por Wienke Giezeman en 2015 y actualmente cubre más de 20.000 pasarelas LoRaWAN instaladas en más de 150 países. Los voluntarios se encargan de la construcción, el cuidado y el pago de los portales

Recomendado doble pantalla

Plantilla settings.js para Node-RED: https://github.com/jecrespo/configuracion-node-red

Múltiples instancias Node-RED con inicio mediante systemd:

  • https://nodered.org/docs/faq/customising-systemd-on-pi
  • Copiar el directorio completo .node-red: cp -R .node-red/ .node-red_1
  • Modificar en settings.js: uiPort: process.env.PORT || 1881 y userDir: ‘/home/pi/.node-red_1/’
  • sudo find / -name nodered.service (buscar donde está el servicio generalmente bajo /usr/lib/systemd/system/nodered.service)
  • sudo cp nodered.service nodered2.service
  • Añadir la línea: Environment=”NODE_RED_OPTIONS=-s /home/pi/.node-red2/settings.js”
  • sudo systemctl enable nodered2.service
  • sudo systemctl start nodered2.service

Capítulos vistos:

Sesión 8 (25 de mayo) – «Dashboard Node-RED»

7.1 – Fundamentos Programación Node-RED (Ejercicio final)

OJO: Al importar también importa el nodo de configuración, pero no las contraseñas

Práctica 3: Wifi + MQTT con ESP8266 (poner en funcionamiento nodo DS18B20 + Relé y/o DS18B20 + Oled)

Capítulos vistos:

Sesión 9 (30 de mayo) – «Desarrollo Node-RED I»

Organización de sesión presencial

  • Proyector con conector VGA o HDMI
  • Wifi con acceso a Internet
  • Un puerto ethernet con acceso a Internet

MQTT no publica arrays de datos como mensajes independientes. Ver ejemplo en https://enriquecrespo.com:1880/

Anidar referencias a los mensajes: https://nodered.org/blog/2021/04/08/version-1-3-released#referencing-msg-properties-in-change-switch-nodes. Útil para guardar en una variable de cotexto los últimos datos de MQTT.

Gateway Bluetooth con Raspberry Pi. Nodos BLE:

OJO BLE scanner de ble sense necesita de mandar un comando si Node-RED no se ejecuta como root. Ver la documentación del nodo

Ejemplo con Xiaomi Mi Flora:

Gateway Zigbee:

Capítulos vistos:

Sesión 10 (1 de junio) – «Desarrollo Node-RED I»

Organización sesión presencial

Instalar paquetes con npm:

  • npm install <nombre paquete> en el directorio .node-red
  • reiniciar node-red y refrescar navegador para ver el nuevo paquete
  • error «../libusb/libusb/os/linux_udev.c:40:10: fatal error: libudev.h: No such file or directory» – instalar sudo apt install libudev-dev
  • npm list – paquetes instalados y sus dependencias
  • npm list -g –depth=0 – paquetes instalados globalmente
  • npm outdated – paquetes desactualizados
  • npm install -g –unsafe-perm node-red – instalar node-red

Uso nodo email https://flows.nodered.org/node/node-red-node-email

Mejora ejemplo worldmap: limpiar capa. Probar https://flows.nodered.org/flow/002f4173484dabaf3d6742b8da9642ee

Nodo gefence y dibujar un polígono: https://flows.nodered.org/node/node-red-node-geofence

Buttons personalizados con nodo template.ui: https://tech.scargill.net/more-node-red-dashboard-success/

Nagios MQTT y Node-RED:

Capítulos vistos:

Sesión 11 (9 de junio – presencial)

Cualquier consulta o temas relacionados (p.e. cámaras Bosch) contacto en aprendiendoarduino@gmail.com

Ver plataforma con Node-RED de Smart City

OpenMQTTGateway https://docs.openmqttgateway.com/. Básicamente es un firmware que pones en un dispositivo como Arduino, ESP32, Raspberry Pi, etc… que conecta con redes LoRa, BLE, IR, etc… con una serie de dispositivos compatibles y los publica por MQTT.

Termostato al estilo de Nest con soporte táctil: https://flows.nodered.org/node/node-red-contrib-ui-thermostat

Node-RED y Elastic Search

Capítulos vistos:

Otros temas de interés

Puntos que no haya dado tiempo de ver