HA instalación de válvulas termostáticas ( TRV ) – Parte II – Sensores

En esta parte definiremos los sensores de la válvula termostática y crearemos alguna automatización para empezar a jugar con ellas.

Si todo ha ido bien en la parte I del articulo deberíamos tener nuestro termostato ya activo y funcionando

El nivel de batería nos llega con el sensor termostato_comedor_derecho_battery_low , que solo tiene dos valores , 1 batería baja y 0 para batería correcta, para mostrarlo en las graficas y en lovelace por el porcentaje de batería crearemos un nuevo sensor a partir de termostato_comedor_derecho_battery_low.

termostato_comedor_derecho_battery_level: friendly_name: Bateria termostato com. derecho value_template: > {% if is_state('binary_sensor.termostato_comedor_derecho_battery_low', 'off') %} 100 {% else %} 0 {% endif %} unit_of_measurement: '%' icon_template: > {% if is_state('binary_sensor.termostato_comedor_derecho_battery_low', 'on') %} mdi:battery-10 {% else %} mdi:battery {% endif %}
Lenguaje del código: PHP (php)

También nos llega la temperatura local de la válvula , le daremos forma a dicho sensor

- platform: mqtt name: termostato_comedor_derecho_local_temperature state_topic: "zigbee2mqtt/termostato_comedor_derecho" value_template: '{{ value_json.local_temperature|float }}' unit_of_measurement: °C force_update: true
Lenguaje del código: JavaScript (javascript)

A la válvula le pasaremos un offset de corrección de la temperatura de la estancia a partir de otro sensor de temperatura ( yo tengo un sensor que he calibrado previamente llamado temperatura_comedor_calibrada ) , de esta forma haremos que la válvula corrija su temperatura la cual habitualmente no es correcta , ya que simplemente entre otros factores es afectada por la proximidad al radiador , estas válvulas solo admiten un margen de corrección de +9ºC a -9ºC , yo he puesto como máximo un margen de ±5ºC . ya que de ser superior o inferior en las siguientes correcciones se va calibrando

- platform: template sensors: termostato_comedor_derecho_temperature_offset: friendly_name: 'Offset temperatura radiador com. derecho' value_template: >- {{ min(5, max( -5, ( (states.sensor.temperatura_comedor_calibrada.state | float(0)) | round(2) - (states.climate.termostato_comedor_derecho.attributes['local_temperature'] | float(0)) ))) | round(2) }} icon_template: >- mdi:temperature-celsius unit_of_measurement: °C
Lenguaje del código: JavaScript (javascript)

En la posición de la válvula podremos ver cuando abre y cierra así como el comportamiento en función del preset que utilicemos , estos cierres y aperturas son los que mas consumo tienen en las baterías de la válvula por lo que buscaremos la mas optima para alargar la batería.

Y en el fichero customize.yaml le pondriamos todos los atributos para que luzcan bien

binary_sensor.termostato_comedor_derecho_battery_low: friendly_name: Nivel bajo termostato radiador comedor der. icon: mdi:battery sensor.termostato_comedor_derecho_position: friendly_name: Posición valvula termostato com. derecho sensor.termostato_comedor_derecho_local_temperature: friendly_name: Temperatira medida en termostato com. derecho
Lenguaje del código: CSS (css)

Así nos quedaría nuestra tarjeta en lovelace

- type: entities show_name: true show_state: false show_header_toggle: false columns: 3 entities: - sensor.termostato_comedor_derecho_position - sensor.termostato_comedor_derecho_local_temperature - sensor.temperatura_comedor_calibrada - sensor.termostato_comedor_derecho_temperature_offset - sensor.termostato_comedor_derecho_battery_level
Lenguaje del código: CSS (css)

Una vez que ya tenemos los sensores creados y funcionando pasaremos a las automatizaciones , la primera es para que nos avise cuando alguno de los termostatos tenga la batería baja

- id: alerta_bateria_baja_telegram_termostatos alias: 'Alerta bateria baja termostatos' initial_state: 'on' trigger: - platform: state entity_id: - binary_sensor.termostato_oriol_battery_low - binary_sensor.termostato_matrimonio_battery_low - binary_sensor.termostato_comedor_derecho_battery_low - binary_sensor.termostato_comedor_izquierdo_battery_low from: 'off' to: 'on' condition: condition: and conditions: - condition: state entity_id: input_boolean.int_menos_notificaciones state: 'off' - condition: or conditions: - condition: template value_template: "{{ trigger.from_state.state != 'unknown' and trigger.to_state.state != 'unknown'}}" - condition: template value_template: "{{ trigger.to_state.state > 0 and trigger.to_state.state < 10 }}" action: - service: notify.notif_telegram_bot data_template: message: "\U0001f50b Atención! {{ trigger.to_state.name }} el nivel de bateria del termostato es bajo* \U0001f50b"
Lenguaje del código: JavaScript (javascript)

Esta automatización envía la calibración de temperatura a las válvulas cada 30 minutos siempre que el estado de la caldera sea calentando que es cuando nos interesa que la reciban.

###################################################################################################################### #Enviamos la calibracion de la temperatura local cuando arranca la caldera o cada 30 minutos mientras acta activa ###################################################################################################################### - id: Ajuste de calibracion de la temperatura de las valvulas termostato MQTT initial_state: 'on' alias: Ajuste de calibracion de la temperatura de las valvulas termostato MQTT trigger: - platform: state entity_id: climate.calefaccion_casa - platform: time_pattern minutes: '/30' seconds: 00 condition: - condition: template value_template: "{{(states.climate.calefaccion_casa.state == 'heat')}}" - condition: state entity_id: switch.rele_termostato_caldera state: 'on' action: - service: notify.notif_telegram_bot data: message: "*Ajuste valvula radiador : * ( Oriol )" - service: mqtt.publish data: topic: zigbee2mqtt/termostato_oriol/set payload: >- { "local_temperature_calibration": "{{ min(5, max( -5, ( (states.sensor.temperatura_oriol_calibrada.state | float(0)) | round(2) - (states.climate.termostato_oriol.attributes['local_temperature'] | float(0)) ))) | round(2) }}" } - service: notify.notif_telegram_bot data: message: "*Ajuste valvula radiador : * ( Matrimonio )" - service: mqtt.publish data: topic: zigbee2mqtt/termostato_matrimonio/set payload: >- { "local_temperature_calibration": "{{ min(5, max( -5, ( (states.sensor.temperatura_comedor_calibrada.state | float(0)) | round(2) - (states.climate.termostato_matrimonio.attributes['local_temperature'] | float(0)) ))) | round(2) }}" } - service: notify.notif_telegram_bot data: message: "*Ajuste valvula radiador : * ( Comedor derecho )" - service: mqtt.publish data: topic: zigbee2mqtt/termostato_comedor_derecho/set payload: >- { "local_temperature_calibration": "{{ min(5, max( -5, ( (states.sensor.temperatura_comedor_calibrada.state | float(0)) | round(2) - (states.climate.termostato_comedor_derecho.attributes['local_temperature'] | float(0)) ))) | round(2) }}" } - service: notify.notif_telegram_bot data: message: "*Ajuste valvula radiador : * ( Comedor izquierdo )" - service: mqtt.publish data: topic: zigbee2mqtt/termostato_comedor_izquierdo/set payload: >- { "local_temperature_calibration": "{{ min(5, max( -5, ( (states.sensor.temperatura_comedor_calibrada.state | float(0)) | round(2) - (states.climate.termostato_comedor_izquierdo.attributes['local_temperature'] | float(0)) ))) | round(2) }}" } - service: notify.notif_telegram_bot data: message: "*Fin de ajuste valvulas radiadores *"
Lenguaje del código: PHP (php)

Al minuto de arrancar Home Assistant enviamos la configuración de las válvulas según mas nos interese.

###################################################################################################################### #Enviamos la configuracion de las valvulas al arrancar el sistema ###################################################################################################################### - id: Envio configuracion valvulas termostaticas alias: Envio configuracion valvulas termostaticas initial_state: 'on' trigger: - event: start platform: homeassistant action: - delay: 00:01:00 #Temperaturas Termostatos valvulas radiadores climate - service: climate.set_preset_mode target: entity_id: - climate.calefaccion_casa - climate.termostato_oriol - climate.termostato_matrimonio - climate.termostato_comedor_derecho - climate.termostato_comedor_izquierdo data: preset_mode: 'none' - service: climate.set_temperature target: entity_id: - climate.calefaccion_casa - climate.termostato_oriol - climate.termostato_matrimonio - climate.termostato_comedor_derecho - climate.termostato_comedor_izquierdo data: temperature: '{{ states.input_number.temperatura_caldera.state | float(0) }}' - service: climate.set_hvac_mode target: entity_id: - climate.calefaccion_casa - climate.termostato_oriol - climate.termostato_matrimonio - climate.termostato_comedor_izquierdo - climate.termostato_comedor_derecho data: hvac_mode: 'off' - service: climate.turn_off entity_id: - climate.termostato_oriol - climate.termostato_matrimonio - climate.termostato_comedor_derecho - climate.termostato_comedor_izquierdo
Lenguaje del código: PHP (php)

Deja un comentario