Skip to content

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 ​

ElementoFunción
Router Wi-FiRed 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 actuadorAloja el broker al que se conectan los dos Shelly Plug S (bomba y ventilador).
Raspberry PiBroker 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 ​

  1. 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.

  2. Abre el .env de tu carpeta docker. 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.10

    Con COMPOSE_PROFILES vacío no arrancan ni el mosquitto local ni el simulador.

  3. 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:

    ini
    SHELLY_BOMBA=shellyplug-s-XXXXXXXXXXXX
    SHELLY_VENTILADOR=shellyplug-s-XXXXXXXXXXXX
  4. Aplica los cambios. El contenedor solo lee el .env al recrearse:

    bash
    docker compose up -d
    docker compose exec node-red printenv MQTT_HOST SHELLY_BOMBA
  5. En Node-RED, abre el nodo de configuración Broker invernadero (doble clic en cualquier mqtt in → lápiz de Server) y, en la pestaña Security, escribe la contraseña del usuario alumno que te dé el profesorado. Si pusiste esa misma contraseña en MQTT_ALUMNO_PASS del .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 in se quedan en connecting: comprueba que estás en la Wi-Fi del invernadero y el usuario y la contraseña de la pestaña Security.
  • printenv sigue escribiendo mosquitto o shellyplug-s-SIM001: no has guardado el .env, o lo has cambiado después de docker compose up -d. Corrígelo y repite el punto 4.

Qué cambia en cada sesión ​

SesiónCon el invernadero real
1Las lecturas cambian despacio, a ritmo real: no verás secarse el suelo en minutos.
2No 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.
3Los 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.
4Cualquier 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.
5La 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.