--- 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 }}