Interruptor inteligente del calentador
Motivación
Mi familia y yo vivimos desde hace unos veinte años en una casa unifamiliar en Sarre, Alemania. Además de una caldera de condensación de gas, calentamos el agua caliente con un sistema solar térmico. Para ahorrar los 12 vatios de consumo en espera, apago completamente la calefacción en verano, ya que la producción del sistema solar térmico suele ser suficiente para mantener el agua caliente. Hubo años en los que la apagaba a finales de abril y no volvía a encenderla hasta principios de noviembre. Este año fue diferente. Ha habido muchos periodos de mal tiempo que me han obligado a encender la calefacción de vez en cuando. El problema es que a veces me olvido de encenderla; solo me doy cuenta cuando alguien quiere ducharse y el agua no está lo bastante caliente. También puede ocurrir que me olvide de apagarla cuando el sol vuelve a brillar durante mucho tiempo. Pensé que era hora de automatizarlo todo.
Requisitos previos
- Ya utilizo algunos interruptores inteligentes Shelly para controlar persianas y lights, así que es natural que también utilice devices Shelly para este proyecto.
- Mi casa ya cuenta con un building de monitorización hecho por mí sistema de monitorización con unos 25 sensors, principalmente de temperatura, aunque también hay otros sensors ambientales.
- El sistema de monitorización se basa en MQTT y un broker de nube serverless de HiveMQ, que también quiero utilizar para comunicarme con el dispositivo Shelly.
- Ya había estado experimentando con Node-Red y pensé que este podría ser un buen caso de uso para un primer proyecto serio.
Instalación del interruptor inteligente Shelly
Dado que la corriente máxima de la caldera de condensación de gas es muy inferior a 8 A, elegí el Shelly 1PM Mini Gen3, lo que ofrece la ventaja adicional de permitirme medir el consumo de energía cuando el calentador está encendido. La instalación fue bastante sencilla, ya que hay suficiente espacio en la carcasa del calentador. El calentador está conectado directamente a la red eléctrica, justo detrás de un interruptor de emergencia en la habitación contigua. La foto de abajo muestra la instalación del interruptor.

Una vez configurada la conexión MQTT en el Shelly Smart Control app, todo debería estar listo para los siguientes pasos. Lo configuré como se muestra en el cuadro de diálogo de abajo (disculpen la interfaz en alemán), y una primera prueba con el cliente web proporcionado por HiveMQ funcionó de inmediato.
Sensores implicados
Al menos para la configuración inicial, comencé con tres sensores para la lógica de conmutación:
- El temperatura outdoor en el lado norte de la casa. Quiero que el calentador se encienda cuando la temperatura descienda por debajo de cierto nivel.
- El temperatura del agua caliente tanque. Tengo tres sensores conectados al tanque, pero para este caso de uso solo he seleccionado el del medio. Como antes, quiero que el calentador se encienda cuando la temperatura del agua caliente descienda por debajo de cierto nivel. El calentador comenzará a cargar el tanque inmediatamente.
- El tercero es el temperatura del flujo de retorno del circuito de carga. Si esta temperatura vuelve a descender por debajo de 50 °C, la carga ha terminado.
El primer sensor mencionado es un sensor inalámbrico de temperatura y humedad que leo mediante hardware de Tinkerforge. Los dos últimos sensores son sensores DS18B20 One-Wire conectados a una Raspberry Pi Pico W. La lógica detallada se mostrará más adelante en la función correspondiente del flujo de Node-Red.
Node-Red
Todos los datos de los sensores de la monitorización del building mencionada anteriormente se recopilan mediante un dispositivo periférico basado en una Raspbery Pi Zero que genera un paquete JSON comprimido. Los dispositivos Shelly envían y consumen sus cargas útiles específicas en temas MQTT concretos. Ahora necesitamos algo intermedio que lo conecte todo. Mi primera impresión de Node-Red fue que podía hacer precisamente eso. Actualmente, Node-Red se ejecuta en Kubernetes (consulta NodeRed-On-Rancher), pero para el uso en producción probablemente lo trasladaré a una Raspberry Pi. Este es el flujo que creé para consumir los datos de los sensores, aplicar la lógica de conmutación y enviar los comandos a Shelly PM1 Mini Gen3:

Explicación
- El nodos morados son los conectores MQTT. Todos están conectados al mismo bróker, pero el de la izquierda se suscribe a la monitorización de home y los dos de la derecha publican en el tema de comandos específico de Shelly.
- El nodo rojo es un subflujo que procesa el mensaje entrante. Los datos sin procesar son una estructura JSON comprimida y codificada en Base64. La salida del nodo es el JSON original.
- El nodos amarillentos es simplemente convertir la salida de la lógica de conmutación (0/1) en mensajes MQTT normales que pueda consumir el interruptor Shelly. En realidad, esto podría simplificarse a una sola rama, pero, para facilitar la comprensión y la depuración, mantuve las dos ramas para encender y apagar.
- El único propósito de los nodos verdes es producir la salida de depuración de la derecha.
- El nodo naranja denominada «Heater Switching Logic» es el nodo de trabajo real que decide si encender o apagar el calentador. ¡Consulta su función de JavaScript a continuación!
Función de trabajo

Mensajes de comandos de Shelly
Para completar, quiero explicar con más detalle los comandos MQTT de Shelly que controlan el interruptor de alimentación del calentador. También puedes verlos en la ventana de depuración junto al flujo de Node-Red.
Topic: shelly1pmmini3-
Payload: on|off
Más información sobre los comandos MQTT en la Shelly Technical Documentation.
Conclusión
- Esta combinación de componentes, con lo que me refiero a MQTT, Node-Red y Shelly devices, es bastante potente.
- He estado usando HiveMQ's free serverless cloud broker durante años y me parece muy seguro, fiable y práctico.
- En cuanto a Node-Red, soy principiante, pero creo que tiene un gran potencial para este tipo de conectividad y es divertido trabajar con él.
- Mientras tanto, me he convertido en un gran fan de Shelly devices. El Shelly 1PM MINI Gen3 Lo que utilicé para este proyecto es muy pequeño, pero aun así está repleto de funciones. Basta con ver todas las opciones que tienes en cuanto a lógica de conmutación, programador, medición de energía y control externo mediante MQTT, por mencionar solo las más importantes para mí.
Outlook
Como mencioné antes, el conjunto de herramientas que utilicé para este proyecto es bastante potente y me dio muchas ideas nuevas sobre cómo automatizar nuestro home. Por mencionar solo algunas:
- Algún tipo de geovalla que abra la puerta del garaje por mí cuando me acerque conduciendo. La puerta ya está equipada con un Shelly 1 MINI Gen3.
- Podría controlar el toldo de nuestro patio con un Shelly Plus 2PM conectado y un Shelly Plus AddOn y algunos sensors (velocidad del viento, radiación solar, precipitaciones).
- También sería interesante añadir los sensors del Shelly AddOn a mi sistema existente de supervisión del building. Esto debería ser posible usando MQTT.
En lo que respecta al proyecto actual, sin duda tendré que ajustar mi lógica de conmutación para el heating en invierno. Puede que sea suficiente para el verano, pero sospecho que necesitaré una lógica más sofisticada para el invierno.