Para el curso on-line “Node-RED Developer Nivel 1”, el material necesario por parte de los alumnos para realizarlo es:
- 1 PC o Portátil con conexión a internet.
- Para seguir el curso on-line es recomendable dos pantallas, una para seguir el vídeo y otra para programar en Node-RED.
- Una cuenta en github o bitbucket.
- Opcionalmente software de virtualización instalado para ejecutar Node-RED. p.e. VirtualBox, VMWare Fusion o Docker.
- Opcionalmente una Raspberry Pi conectada a Internet. Estas Raspberry Pi podrían ser proporcionadas por el Think TIC y configurarlas para acceso remoto desde casa del alumno a los dispositivos ubicados en el Think TIC.
- Opcionalmente los alumnos con dispositivos IoT podrían conectarse e interactuar con ellos.
Todo el software y documentación utilizado en el curso es libre con licencia creative commons o similar.
Toda la documentación generada para la impartición de este curso será liberada con licencia Creative Commons y podrá ser utilizada bajo sus términos. La documentación estará disponible en https://www.aprendiendoarduino.com/
Entorno On-Line de Prácticas
Arquitectura
Se dispone de tres servidores:
- enriquecrespo.com (S.O. CentOS 8)
- Mosquitto
- Grafana
- Docker
- Otros servicios públicos
- aprendiendoarduino.com
- Documentación curso con WordPress
- BBDD MySQL públicas
Servidor cloud con las siguientes características:
- 1 vCPU
- 2 GB RAM
- 20 GB SSD
Node-RED
Cada alumno debe tener al menos una instancia de Node-RED instalada en el S.O. o virtualización que desee.
Opcionalmente se puede proporcionar una instancia en enriquecrespo.com. El usuario y contraseña se enviará por correo.
Broker MQTT. Mosquitto
Se usará un broker común para comunicar todos los dispositivos en la dirección: mqtt://enriquecrespo.com:1883
Los alumnos recibirán usuario y contraseña para acceder al broker con permisos de lectura y escritura en aprendiendonodered21/#
Opcionalmente hay una dirección de MQTT seguro en: mqtts://enriquecrespo.com:8883 y MQTT sobre websocket en ws://enriquecrespo.com:9001
Servicios
Base de datos MySQL en https://qaej225.aprendiendoarduino.com/ donde los alumnos podrán usar para almacenar datos. Recibirán por correo las credenciales de acceso.
Grupo de telegram para comunicarse y programar bots.
Hardware Usado para Interactuar
Para interactuar en el curso disponemos de diversos HW conectados.
M5stack: https://m5stack.com/collections/m5-core/products/basic-core-iot-development-kit
M5Stick-C con sensor ENV:
- https://m5stack.com/collections/m5-core/products/stick-c
- https://m5stack.com/collections/m5-hat/products/m5stickc-env-hat-sht30-bmp280-bmm150

Arduino UNO + GSM Shield con conexión móvil: https://store.arduino.cc/arduino-gsm-shield-2-integrated-antenna
Raspberry Pi Zero: Instalada en local con cámara y programada con Node-RED, usada como dispositivo remoto.
Raspberry Pi 3B: Instalada en local con Node-RED, Mosquitto y BBDD, usada como servidor.
Wibeee instalado y publicando datos.

Si el alumno tiene algún HW con que quiera interactuar, puede presentarlo y lo integramos en las prácticas.
Configuración de las Instancias de Node-RED Alumnos
Las instancias de Node-RED de los alumnos están desplegadas con Docker y con configuración personalizada y una serie de configuraciones adicionales ya hechas.
El acceso es a través de https://enriquecrespo.com:188xx/ siendo xx el número de alumno asignado.
Los puertos 88xx y 83xx también estarán disponibles para cada alumno para exponer una API/Websocket y MQTT respectivamente.
También hay una red interna para comunicar son servicios internos no expuestos como BBDD a las instancias de Node-RED
Comando para levantar el contenedor:
docker run –restart always -d -p 188xx:1880 -p 88xx:80 -p 83xx:1883 –network ‘alumnos’ -v /opt/docker_volumes/nodered_dataxx:/data –name noderedxx nodered/node-red
El fichero de configuración settings.js tiene estas modificaciones:
- password nodered:
adminAuth: {
type: "credentials",
users: [{
username: "admin",
password: "password cifrada usando node-red admin hash-pw",
permissions: "*"
}]
},
- password dahsboard y web estática
httpNodeAuth: {user:"user",pass:"password cifrada usando node-red admin hash-pw"},
httpStaticAuth: {user:"user",pass:"password cifrada usando node-red admin hash-pw"},
- activar SSL y certificados
https: {
key: require("fs").readFileSync('/data/certificates/privkey.pem'),
cert: require("fs").readFileSync('/data/certificates/cert.pem')
},
requireHttps: true,
- activar proyectos
editorTheme: {
projects: {
enabled: true
}
}
- activar grabar datos en local o en memoria (almacenamiento)
contextStorage: {
default: "memoryOnly",
memoryOnly: { module: 'memory' },
file: { module: 'localfilesystem' }
},