Home Assistant: cabezal termostático de radiador con sensor externo de temperatura

Suguiendo con la integración de dispositivos de nuestra casa en el sistema de Domótica, esta vez le ha tocado el turno a los radiadores de la calefacción. En mi caso, tengo calefacción central, y eso simplifica la solución ya que no me tengo que preocupar por apagar/encender la caldera, eso es algo que se gestiona de forma automática y es externo a mi casa. Lo único que se necesita en este tipo de situaciones, es un cabezal termostático instalado en cada radiador sobre el que quieres controlar su temperatura.

A continuación vamos a ver qué son este tipo de cabezales, qué fabricantes existen, cómo es el proceso de instalación y cómo se integran en Home Assistant. Además, veremos un punto muy importante, que es la posibilidad de utilizar un sensor de temperatura externo para que el termostato del propio cabezal no se vea afectado por el calor que se concentra alrededor del radiador.

Requisitos para instalar un cabezal termostático de radiador

Para hacer esta instalación, aunque no voy a entrar en detalles de la parte más mecánica de instalación, necesitas que tus radiadores cuenten con una válvula termostatizable. ¿Esto qué significa?, pues que le puedes acoplar un cabezal que regule la temperatura de forma automática, es decir que la propia vávula pueda abrir y cerrar la entrada de agua caliente al radiador sin necesidad de que alguien realice esta acción de forma manual. Este tipo de válvulas tienen una pinta similar a lo siguiente:

Adaptador válvula Roca / BaxiRoca / Giacomini | Ahorrar en tu casa

Esa parte que sobresale de la válvula, es la que el cabezal presionará o soltará, para permitir o no la entrada de agua en el radiador. Evidentemente, tienes cabezales muy sencillos con distintos «grados» de calor, y son similares a esto:

Válvulas con cabezal termostático: así funcionan - Blog Calefacción

Pese a que este cabezal (TRV en inglés: Thermostatic Radiator Valves) puede realizar esa acción de abrir o cerrar la válvula, no tiene ninguna inteligencia adicional.

Fabricantes de cabezales inteligentes

Pero nosotros no queremos una válvula de este tipo, para integrarlo con nuestro sistema domótico necesitaremos una válvula termostática inteligente, que puedes encontrar de distintos fabricantes, estos son algunos de los más comunes que puedes comprar en Amazon:

  • Netamo: famoso por sus termostatos inteligentes, también tiene cabezales de radiador que se integran con los sistemas más utilizados (Alexa, Google Assistant, IFTTT) y por supuesto con Home Assistant. Es la opción más cara.
  • Tado: de origen alemán, también tiene todo tipo de termostatos compatibles con casi cualquier caldera, y también TRVs. Es ligeramente más barato que Netamo, aunque no mucho, pero ahora mismo tiene una mejor integración que el anterior en Home Assistant.
  • Meross/TUYA: bajo marca Meross o muchas otras (KKmoon, Snowinsprint, Vislone, …), son fabricantes chinos que fabrican distintos dispositivos que se gestionan con la misma aplicación: Tuya. También se integran con Alexa, Google Assistant, IFTTT y con Home Assistant, entre otros.

Componentes de la solución de cabezales inteligentes

En esta ocasión, por diversificar, he apostado por Tado y he adquirido de momento el Cabezal Termostático Kit de inicio. Este kit, que es similar al del resto de fabricantes contiene lo siguiente, imprescindible para empezar nuestra integración:

  • Bridge: Es un pequeño dispositivo, que va conectado a tu red local, normalmente a tu router FTTH/ADSL, y realiza dos funciones: por un lado, comunicarse con cada cabezal inteligente o termostato que instales, y por otro tener acceso a Internet para la comunicación con el servicio que ofrece Tado. Las comunicaciones entre el Bridge y los dispositivos no se realiza por WiFi, sino por un protocolo propietario y una frecuencia diferente a las típicas de 2,4 y 5Ghz, esto hace que el alcance sea mayor y que los dispositivos no consuman mucha batería.
Kit de Inicio Inteligente (v3) Tado° con Bridge de Internet y Termostato  Inteligente
  • Cabezal: Este es el dispositivo que instalarás en tu radiador, sustituyendo el anterior cabezal que tuvieras instalado. En el caso de Tado, trae adaptadores para las válvulas más comunes (Danfoss, Giacomini/Roca/Baxi, Caleffi, Comap/Herz/Terrier/Siemens/Olymp) y su instalación es muy sencilla.
tado° Cabezal Termostático Inteligente adicional al mejor precio por sólo  67,67 EUR - Compra tado online en Landashop

Instalación de cabezales inteligentes Tado

El proceso de instalación es muy sencillo, y comienza con la instalación de la aplicación Tado en tu móvil. A partir de ahí comienza un asistente que te va guiando en los pasos de la instalación, primero el Bridge y después el Cabezal.

Instalación del Bridge

  1. Inicia el asistente de la aplicación móvil
  2. Escanea el código QR del Bridge con la aplicación
  3. Conecta el cable RJ45 al router, y el USB al router o al enchufe de corriente

Instalación del cabezal

  1. Inicia el asistente de la aplicación móvil
  2. Instala la parte del cabezal que va al radiador
  3. Retira el plástico de las pilas para activarlo:

4. Pulsa el botón de Pairing durante 3 segundos:

5. Una vez emparejado, conecta el cabezal al soporte del radiador

Como ves, ambos procesos son muy muy sencillos, y siguiendo el asistente no deberías tener ningún problema en hacerlo. Una vez hecho esto, ya podemos pasar a configurar este nuevo dispositivo en nuestro Home Assistant.

Incluir cabezal Tado en Home Assistant

Como puedes imaginar, la integración de Tado en Home Assistant es muy muy sencilla, ya que está soportado de forma oficial. Basta ir al menú Configuración/Integraciones, incluir uno nuevo y seleccionar la opción de Tado:

Una vez hecho esto, te pedirá tu usuario y contraseña que has creado para acceder a los servicios de Tado:

Y ya estaría, después de eso ya verás que te aparece una nueva integración con 2 dispositivos y 11 entidades:

Los dos dispositivos son el Bridge y el Cabezal. Las 11 entidades, son la información que te proporciona el cabezal:

Como ves, tenemos toda la información del propio cabezal: temperatura, modo, estado de la batería, indicador de ventanas abiertas, estado de conexión, humedad, modo de heating, …

A partir de aquí ya puedes configurar tus escenas, tus programaciones o lo que necesites con este nuevo dispositivo.

Problemas de los cabezales termostáticos de radiador

Este tipo de dispositivos funcionan muy bien, nos proporcionan un sustancial ahorro (depende cómo lo configures y las necesidades que tengas) y sobre todo un gran confort, manteniendo cada habitación donde lo instales a la temperatura adecuada. Pero… tienen un gran problema, no solo Tado, sino este tipo de dispositivos que van conectados al radiador porque el termostato que mide la temperatura va incluido en el mismo.

Esto es un problema, porque como es lógico, un radiador genera una zona de mucho calor a su alrededor, que después se va disipando según aumenta la distancia. Si además, el radiador está «encajonado» con un hueco específico, debajo de un escritorio, detrás de unas cortinas, empeorará la situación. Por este motivo, medir la temperatura justo al lado del radiador cuando éste está caliente, supone asumir grandes variaciones con respecto a la temperatura real, lo que impacta directamente en el confort que puede proporcionar.

Hay varias soluciones a este problema, y en todos los casos implican utilizar un dispositivo adicional:

  • Sensor de temperatura Tado: en Septiembre de 2020 Tado presentó lo que muchos de sus usuarios esperaba desde hace años, un dispositivo que pudieras colocar en cualquier lugar de una habitación que midiera la temperatura, y que fuera el que utilizara el cabezal del radiador para su funcionamiento. La solución es ideal, sino fuera por el precio que le han asociado, que es más caro que el propio cabezal!! Es decir, ahora mismo puedes conseguir en Amazon el cabezal por unos 60€, pero este sensor de temperatura cuesta 80€!!! Por esta razón, y no otra, la mayoría de usuarios no lo comprará siendo la solución que necesitan.
  • Cabezal adicional: muchos usuarios de Tado, han optado por comprar un cabezal adicional y ponerlo en el lugar de la habitación donde quieren medir la temperatura. Si, has leído bien, compran un cabezal de radiador pero no lo conectan a ningún radiador, sino que lo dejan encima de una mesa, por ejemplo. De esta forma, el cabezal conectado al radiador puede utilizar la temperatura que le proporciona este segundo cabezal, para su funcionamiento. Evidentemente, esta solución no es la más elegante, ni la más apropiada.
  • Utilizar un sensor externo: esta es la solución más elegante, similar a la primera pero sin necesidad de que el sensor externo tenga que ser ese caro dispositivo de Tado. Cualquier sensor de temperatura integrado con Home Assistant, nos permitirá configurar la integración que te voy a contar a continuación.

Ajuste de cabezal Tado con sensor de temperatura externo

Como acabamos de comentar, la solución pasa porque Home Assistant nos ayude a «recalibrar» la temperatura del cabezal termostático Tado con la ayuda de un sensor de temperatura externo, para evitar las mediciones erróneas cuando el radiador esté muy caliente. Lo haremos de la siguiente forma:

  • Lo primero, necesitaremos un sensor externo. Para esto puedes utilizar cualquiera que puedas integrar en HASS: el sensor Xiaomi Mijia, MH-ET-Live ESP32, … En mi caso, ya cuento con una instalación de dispositivo Airzone de AA, y tengo un termostato en cada habitación, así que después de integrarlo en Home Assistant está listo para ser consultado.
  • El cabezal Tado permite configurar un Offset sobre la temperatura medida. Es decir, podemos indicarle cuánta variación existe entre la temperatura medida por el Cabezal y la temperatura real, medida en el sensor externo. Por ejemplo, si la temperatura que mide el cabezal es de 23º y la que mide nuestro sensor externo es de 22º, le indicaremos que el Offset es de -1º y así ajustará la temperatura de actuación del cabezal a los 22º reales.

¿Cómo implementamos este mecanismo de ajuste en Home Assistant? Vamos a verlo a continuación:

Lo primero que debemos hacer es crear varios sensores:

Obtener Token de Autenticación para el portal de Tado

Como vamos a hacer llamadas a la API de Tado, necesitamos obtener un Token de acceso que caduca cada 599 segundos, por eso lo actualizaremos cada 500 segundos:

  - platform: command_line
    name: tado_get_auth
    scan_interval: 500
    json_attributes:
      - access_token
      - token_type
      - refresh_token
      - expires_in
      - scope
      - jti
    command: 'curl -s "https://auth.tado.com/oauth/token" -d client_id=tado-web-app -d grant_type=password -d scope=home.user -d username="USUARIO_TADO" -d password="CONTRASEÑA_TADO" -d client_secret=CLIENT_SECRET'
    value_template: '{{ value_json.scope }}'

En lo anterior, tendrás que sustituir 3 valores:

  • USUARIO_TADO: El usuario para el acceso al servicio de Tado
  • CONTRASEÑATADO: La contraseña de acceso
  • CLIENT_SECRET: Este dato lo debes conseguir accediendo a la URL https://my.tado.com/webapp/env.js, donde aparece el campo clientSecret:

Obtener Offset actual

Una vez que ya tenemos el Token, vamos a definir un sensor para obtener el valor actual de Offset del Cabezal:

  - platform: 
    command_line name: radiador_salon_offset
    scan_interval: 120
    unit_of_measurement: 'ºC'
    json_attributes:
      - celsius
      - fahrenheit
    command: 'curl -s "https://my.tado.com/api/v2/devices/VA2748190720/temperatureOffset" -H "Authorization: Bearer {{ state_attr(''sensor.tado_get_auth'', ''access_token'') }}"'
    value_template: '{{ value_json.celsius }}'

Calcular Offset a aplicar

Consultando la temperatura del Cabezal y del sensor externo, calculamos cuál es el Offset que deberíamos aplicar en este momento:

  - platform: template
    sensors:
      radiador_salon_calculated_offset:
        friendly_name: "Offset Calculado Radiador Salon"
        unit_of_measurement: '°C'
        value_template: "{% if (state_attr('climate.sistema_1_salon','current_temperature')|float ) > 0 -%} {{((state_attr('climate.sistema_1_salon','current_temperature')|float) - ((states('sensor.salon_temperature')|float) - (state_attr('sensor.radiador_salon_offset','celsius')|float)))| round(2)}} {%- else -%} 0 {%- endif %}"

El valor state_attr(climate.sistema_1_salon’,’current_temperature’) es la medición de mi sensor externo, el valor states(‘sensor.salon_temperature’) es la medición del Cabezal del radiador, y el valor state_attr(‘sensor.radiador_salon_offset’,’celsius’) es el valor definido en el apartado anterior.

Calcular diferencia de Offset

Ahora, defino otro sensor para calcular la diferencia entre el Offset actualmente configurado en el Cabezal y el que debería establecer en base a las temperaturas actuales, calculado en el apartado anterior:

  - platform: template
    sensors:
      radiador_salon_offset_difference:
        friendly_name: "Offset Difference Radiador Salon"
        unit_of_measurement: '°C'
        value_template: "{{ ((states('sensor.radiador_salon_calculated_offset')|float ) - (states('sensor.radiador_salon_offset')|float))| round(2)}}"

Configurar un nuevo Offset

Por último, definimos el mecanismo para configurar un nuevo Offset, con el siguiente comando:

shell_command:
  radiador_salon_put_offset: 'curl -X PUT "https://my.tado.com/api/v2/devices/VA2748190720/temperatureOffset" -H "Authorization: Bearer {{ state_attr(''sensor.tado_get_auth'', ''access_token'') }}" -H "Content-Type: text/plain" --data-raw "{celsius: {{ ((states(''sensor.radiador_salon_calculated_offset'')|float))| round(2)}} }" '

Automatismo para aplicar cambios de Offset

Una vez que tenemos definido todo lo anterior, te recomiendo que revises si cada uno de esos valores se están calculando correctamente. Recuerda que el apartado de Developers te vendrá muy bien para ir revisando los cambios que se producen:

Ahora ya solo nos queda definir cómo y cuando aplicaremos los valores de Offset que nos interesa. Consideraciones a tener en cuenta:

  • Cada vez que se aplica un nuevo Offset, el cabezal mueve el eje. Esto produce un pequeño ruido, y un consumo adicional de batería. Hay una petición para que Tado corrija este comportamiento, pero no hay éxito en la petición todavía.
  • No queremos que la temperatura se ajuste de forma exacta a la temperatura real, podemos admitir un pequeño margen de error: 0.3º, 0.5º o lo que tu consideres como válido.
  • No queremos que se aplique a cada minuto que se compruebe la variación, podemos admitir un tiempo entre ajustes: 10 minutos, 15 minutos,…
  • No queremos aplicar estos ajustes a todas horas, todos los días y/o todos los meses. En mi caso, solo quiereo aplicarlo en los horarios que la calefacción está en funcionamiento, y solo en los meses que funciona.

En base a todo esto, he definido la siguiente automatización:

- id: 'xxxxxxxxxxxx'
  alias: Radiador Salon Establecer Offset de Temperatura
  description: Establecer el Offset del radiador a partir del termostato del AA
  trigger:
  - above: '0.4'
    entity_id: sensor.radiador_salon_offset_difference
    for: 00:15:00
    platform: numeric_state
    value_template: '{{ states(''sensor.radiador_salon_offset_difference'') }}'
  - below: '-0.4'
    entity_id: sensor.radiador_salon_offset_difference
    for: 00:10:00
    platform: numeric_state
    value_template: '{{ states(''sensor.radiador_salon_offset_difference'') }}'
  condition:
  - condition: template
    value_template: '{{ now().month >= 10 or now().month <= 4 }}'
  - condition: time
      after: '15:30:00'
      before: 00:00:00
  action:
  - entity_id: sensor.radiador_salon_put_offset
    service: shell_command.radiador_salon_put_offset
  mode: single

Esto, lógicamente lo puedes personalizar para tener en cuenta cuando no hay nadie en casa, los días de la semana donde te interesa personalizarlos de forma individual, que tenga en cuenta cuanta gente hay en casa, …

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.