El termostato de la caldera en Home Assistant
La temporada pasada implementé desde cero mi propio termostato sobre la raspberry usando python, flask y muchas horas de desarrollo. Ahora he conseguido implementarlo desde cero en Home Assistant en menos de una hora gracias a ESPHome.
Termostato
Tomaré como sensor la DHT22 conectada al ESP32 del salón (En HA la tengo definida como “sensor.temperatura_salon”) y como relé el conectado al ESP01 de la caldera (En HA lo tengo definido como “switch.rele”) que ya tengo creados gracias a ESPHome. Muy buenos resultados con unas pocas líneas de configuración que añadiremos al archivo “configuration.yaml”
climate:
- platform: generic_thermostat
name: Caldera
heater: switch.rele
target_sensor: sensor.temperatura_salon
min_temp: 16
max_temp: 24
ac_mode: false
target_temp: 19
cold_tolerance: 0.2
hot_tolerance: -0.1
min_cycle_duration:
seconds: 300
keep_alive:
minutes: 3
initial_hvac_mode: "heat"
away_temp: 16
precision: 0.1
La utilidad de cada uno de los parámetros están definidos en la [configuración del termostato genérico] y ya esposible añadir una tarjeta de resumen con una apariencia como la siguiente.
Ajustes avanzados
Ya tenemos la funcionalida básica, ahora vamos a dotarla de unas nuevas posibilidades.
- Ajuste de temperaturas “Cómoda” y “Eco”
- Disminución de la temperatura cuando no hay nadie en casa
- Establecer unas horas de “Levantarse” e “irse a dormir”
- Establecer un modo “Fuera de casa”
Para esto tengo creados unos ayudantes con los que conseguir estas caracterísicas y que son facilmente accesibles desde el resumen de Home Assistant
Ayudantes
Para el interruptor que indique a home assistant que estamos fuera de casa usaremos un interrutor booleano del tipo “alternar” que sólo permite encendido o apagado.
Le ponemos el nombre correspondiente, el icono de una casa saliendo y poco más hay que hacer con el.
Para la selección de temperaturas crearemos dos ayudantes de tipo número, uno para la temperatura “eco” y oro para la temperatura “cómoda”.
Asignamos el nombre, el icono, los valores maximo y mínimo que se podrán introducir, el tamaño del paso y las unidades.
Para determinar cuales van a ser las horas a las que no levantamos y nos acostamos crearemos dos ayudantes de hora (Sólo hora).
Poner nombre, seleccionar que vamos a introducir una hora y ya está.
Cálculo de consigna
Podríamos crear unas cuantas automatizaciones a partir de los ayudantes anteriores para que se modificara la temperatura de la calefacción pero no me pareció que esta fuera una solución “elegante” por lo que he creado un sensor virtual que calcula el valor de temperatura al que tiene que estar la calefacción en función de los ayudantes anteriores y que está explicado en el apartado de Cálculo de consigna.
Automatización
Con todo lo anterior, ya sólo resta crear una automatización bastante sencilla que lo único que haga sea modificar la temperatura de la calefacción cuando la consigna cambie.
alias: Caldera - Establecer consigna
description: ''
trigger:
- platform: state
entity_id: sensor.consigna_caldera
condition: []
action:
- service: climate.set_temperature
data_template:
entity_id: climate.caldera
temperature: '{{ states.sensor.consigna_caldera.state }}'
mode: single