hass-blueprints/blueprints/danfoss_ally_trv_external_sensor.yaml

80 lines
2.2 KiB
YAML

---
blueprint:
author: runejuhl
homeassistant:
min_version: 2024.6.0
name: Radiator external temperature sensor control (0.0.1-alpha)
description: |-
## Radiator external temperature sensor control
Version `0.0.1-alpha`.
Sets the `external_measured_room_sensor` value on Danfoss Ally TRV, enabling
the TRV to adjust the valve based on an external sensor.
domain: automation
source_url: https://git.petardo.dk/runejuhl/hass-blueprints/raw/branch/dev/blueprints/danfoss_ally_trv_external_sensor.yaml
input:
radiator:
name: Radiator thermostat
selector:
entity:
filter:
- domain: climate
climate_sensor:
name: Climate sensor temperature entity
selector:
entity:
filter:
- device_class:
- temperature
mode: queued
variables:
climate_entity: !input radiator
temperature_entity: !input climate_sensor
triggers:
- entity_id: !input climate_sensor
attribute: temperature
trigger: state
conditions:
# We only want to execute the action if the temperature has changed by at
# least 0.1 degress C, according to the Zigbee2MQTT documentation for the
# device: https://www.zigbee2mqtt.io/devices/014G2461.html
#
# `external_measured_room_sensor` defaults to `-8000`, so this will work in
# all cases.
- condition: template
value_template: >-
{{
(
(
state_attr(climate_entity, 'external_measured_room_sensor') -
trigger.to_state.attributes.temperature * 100)
| abs)
>= 10
}}
actions:
- variables:
# If we don't have a trigger ID the automation has been run manually, in
# which case we pull the temperature from the sensor instead of the
# trigger state.
external_temperature: >-
{% if trigger.id is not defined %}
{{ state_attr(temperature_entity, 'temperature') }}
{% else %}
{{ trigger.to_state.attributes.temperature }}
{% endif %}
- action: number.set_value
target:
entity_id: |-
number.{{ states[climate_entity].object_id }}_external_measured_room_sensor
data:
value: >-
{{
(external_temperature * 100) | int
}}