Tema
Trabajar con el invernadero real
Todo el módulo se hace con el simulador: funciona en cualquier sitio, tiene salida a Internet, nadie más toca tu bomba y puedes provocar fallos cuando quieras. Lo que aprendes de Node-RED es lo mismo con el simulador que con los dispositivos físicos.
El simulador reproduce el invernadero del laboratorio: publica los mismos topics y con el mismo formato que sus ESP32, y responde a los comandos como sus dos Shelly. Por eso tus flujos funcionan también contra el invernadero real sin tocarlos. Esta página reúne lo que cambia si, cuando lo indique el profesorado, conectas tu Node-RED a los dispositivos físicos.
Cómo es el invernadero real
| Elemento | Función |
|---|---|
| Router Wi-Fi | Red propia del invernadero, sin salida a Internet. Las credenciales te las da el profesorado. |
| ESP32 (varios) | Ya programados. Cada uno publica sus lecturas en su propio broker MQTT embebido. |
ESP32 actuador | Aloja el broker al que se conectan los dos Shelly Plug S (bomba y ventilador). |
| Raspberry Pi | Broker MQTT central (Mosquitto, 192.168.0.10). Reúne los brokers de los ESP32 mediante bridges y lo publica todo bajo invernadero/.... Es el único broker al que te conectas. |
Es la misma jerarquía de topics que publica el simulador (Qué publica). Lo que no existe en el invernadero real son los topics simulador/...: el panel del simulador, los escenarios y los fallos provocados son solo del simulador.
Conectarse
Conecta tu PC a la Wi-Fi del router del invernadero, no a la red de la universidad, o Node-RED no alcanzará la Raspberry Pi.
Abre el
.envde tu carpetadocker. Pon#delante de las dos líneas del bloque del simulador y quítalo de las del invernadero real:ini# COMPOSE_PROFILES=simulador # MQTT_HOST=mosquitto COMPOSE_PROFILES= MQTT_HOST=192.168.0.10Con
COMPOSE_PROFILESvacío no arrancan ni elmosquittolocal ni el simulador.Sustituye los IDs de los Shelly del simulador por los reales que te dé el profesorado (formato
shellyplug-s-XXXXXXXXXXXX). Si las líneas no están, añádelas:iniSHELLY_BOMBA=shellyplug-s-XXXXXXXXXXXX SHELLY_VENTILADOR=shellyplug-s-XXXXXXXXXXXXAplica los cambios. El contenedor solo lee el
.enval recrearse:bashdocker compose up -d docker compose exec node-red printenv MQTT_HOST SHELLY_BOMBAEn Node-RED, abre el nodo de configuración
Broker invernadero(doble clic en cualquiermqtt in→ lápiz de Server) y, en la pestaña Security, escribe la contraseña del usuarioalumnoque te dé el profesorado. Si pusiste esa misma contraseña enMQTT_ALUMNO_PASSdel.env, no tienes que cambiar nada.
Qué debes ver. printenv escribe 192.168.0.10 y el ID real de la bomba. Los mqtt in muestran connected y llegan lecturas del invernadero.
Para volver al simulador, deshaz el punto 2 (y el 3, si quieres) y repite docker compose up -d.
Si no funciona.
- Los
mqtt inse quedan enconnecting: comprueba que estás en la Wi-Fi del invernadero y el usuario y la contraseña de la pestaña Security. printenvsigue escribiendomosquittooshellyplug-s-SIM001: no has guardado el.env, o lo has cambiado después dedocker compose up -d. Corrígelo y repite el punto 4.
Qué cambia en cada sesión
| Sesión | Con el invernadero real |
|---|---|
| 1 | Las lecturas cambian despacio, a ritmo real: no verás secarse el suelo en minutos. |
| 2 | No se puede hacer: la Wi-Fi del invernadero no tiene Internet y las peticiones a Open-Meteo fallan con ENOTFOUND o ETIMEDOUT. Usa el simulador. |
| 3 | Los Shelly son compartidos y controlan equipos reales: envía comandos solo cuando lo indique el profesorado, por turnos. Los fallos de sensor no se provocan desde el panel: los provoca el profesorado desconectando un sensor. Para comprobar el birth/will, mira Ver los mensajes del broker. |
| 4 | Cualquier clic en los interruptores del panel enciende la bomba real para toda la clase. Las distancias de depósito lleno y vacío son las del simulador: mide el depósito real y cámbialas. |
| 5 | La hora simulada y la real coinciden: en una hora de gráfica verás una hora del invernadero, no dos días y medio. |
Ver los mensajes del broker
Con el simulador, docker compose exec mosquitto mosquitto_sub ... usa el cliente del contenedor mosquitto. Con el invernadero real ese contenedor no arranca, así que lanza uno de un solo uso con la misma imagen y apúntalo a la Raspberry Pi con -h:
bash
docker run --rm -it eclipse-mosquitto:2 mosquitto_sub -h 192.168.0.10 -u alumno -P <contraseña> -v -t "invernadero/#"Cambia el topic según lo que quieras ver; por ejemplo, "alumnos/+/nodered" para el birth/will de la sesión 3, donde verás también el online/offline de tus compañeros. Sal con Ctrl+C.
Los equipos son reales
La bomba y el ventilador del invernadero los comparte toda la clase. Un flujo que encienda la bomba en bucle la deja regando para todos. Prueba siempre tus flujos con el simulador antes de conectarlos al invernadero real.