Forked from pavax/z2m_aqara_trv_external_temperature.yaml
Last active
December 16, 2025 19:30
-
-
Save artyorsh/7883d60dec088ccf7a90cde09dcf3af8 to your computer and use it in GitHub Desktop.
z2m_aqara_trv_external_temperature.yaml
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| blueprint: | |
| name: Aqara TRV E1 External Temperature Control | |
| description: > | |
| This automation allows the Aqara TRV E1 Smart Radiator Thermostat to use temperature readings from an external sensor rather than its internal sensor. Whenever the temperature sensor reports a new value, it is sent to the TRV for more accurate climate control. | |
| domain: automation | |
| source_url: "https://gist.github.com/pavax/8d6ed250765d89cb281d4a1762b8d2e8" | |
| input: | |
| external_temp_sensor: | |
| name: External Temperature Sensor | |
| description: Select the temperature sensor that will provide temperature readings to the Aqara TRV. | |
| selector: | |
| entity: | |
| filter: | |
| domain: sensor | |
| device_class: | |
| - temperature | |
| aqara_trv_device: | |
| name: Aqara TRV Device | |
| description: Select the Aqara Smart Radiator Thermostat E1 that will receive the external temperature data. | |
| selector: | |
| device: | |
| multiple: false | |
| filter: | |
| - integration: mqtt | |
| manufacturer: Aqara | |
| model: Smart radiator thermostat E1 (SRTS-A01) | |
| - integration: mqtt | |
| manufacturer: Aqara | |
| model: Smart radiator thermostat E1 | |
| - integration: mqtt | |
| manufacturer: Aqara | |
| model: Aqara Smart Radiator thermostat E1 (SRTS-A01) | |
| - integration: mqtt | |
| manufacturer: Aqara | |
| model: Aqara smart radiator thermostat E1 (SRTS-A01) | |
| external_temperature_input_name: | |
| name: TRV's Input Sensor Name | |
| description: Enter a keyword or name used to identify the TRV's number sensor entity-id, which sets the external temperature value. Defaults to 'external'. | |
| selector: | |
| text: | |
| default: "external" | |
| skip_night_mode: | |
| name: Skip Night Hours | |
| description: Don't run automation during night hours (prevents updates at night) | |
| default: false | |
| selector: | |
| boolean: | |
| night_start_time: | |
| name: Night Start Time | |
| description: Time when night mode begins (automation will pause) | |
| default: "22:00:00" | |
| selector: | |
| time: | |
| night_end_time: | |
| name: Night End Time | |
| description: Time when night mode ends (automation will resume) | |
| default: "06:00:00" | |
| selector: | |
| time: | |
| mode: single | |
| max_exceeded: silent | |
| variables: | |
| aqara_trv_device: !input aqara_trv_device | |
| external_temp_sensor: !input external_temp_sensor | |
| external_temperature_input_name: !input external_temperature_input_name | |
| skip_night_mode: !input skip_night_mode | |
| night_start_time: !input night_start_time | |
| night_end_time: !input night_end_time | |
| trigger: | |
| - trigger: state | |
| entity_id: !input external_temp_sensor | |
| action: | |
| - if: | |
| - condition: template | |
| value_template: "{{ skip_night_mode }}" | |
| - condition: template | |
| value_template: >- | |
| {% set current = now().strftime('%H:%M:%S') %} | |
| {% set start = night_start_time %} | |
| {% set end = night_end_time %} | |
| {% if start < end %} | |
| {{ current >= start or current < end }} | |
| {% else %} | |
| {{ current >= start and current < end }} | |
| {% endif %} | |
| then: | |
| - stop: "Night mode active - skipping temperature update" | |
| - variables: | |
| aqara_trv_device_name: "{{ device_attr(aqara_trv_device, 'name') }}" | |
| aqara_trv_select_entity: >- | |
| {% set device_entities = device_entities(aqara_trv_device) %} | |
| {{ expand(states['select']) | |
| | selectattr('entity_id','in', device_entities) | |
| | selectattr('attributes.options', 'contains', 'external') | |
| | map(attribute='entity_id') | |
| | first | |
| }} | |
| aqara_trv_number_entity: >- | |
| {% set device_entities = device_entities(aqara_trv_device) %} | |
| {{ expand(states['number']) | |
| | selectattr('entity_id','in', device_entities) | |
| | selectattr('entity_id', 'contains', external_temperature_input_name) | |
| | map(attribute='entity_id') | |
| | first | |
| }} | |
| - if: | |
| - condition: template | |
| value_template: >- | |
| {{ is_state(external_temp_sensor, "unavailable") or is_state(external_temp_sensor, "unknown") }} | |
| then: | |
| - action: select.select_option | |
| target: | |
| entity_id: "{{aqara_trv_select_entity}}" | |
| data: | |
| option: internal | |
| - action: system_log.write | |
| data: | |
| level: error | |
| message: External temperature sensor unavailable | |
| logger: Aqara TRV | |
| - stop: External temperature sensor unavailable | |
| - if: | |
| - condition: template | |
| value_template: "{{ not is_state(aqara_trv_select_entity, 'external')}}" | |
| then: | |
| - action: select.select_option | |
| target: | |
| entity_id: "{{aqara_trv_select_entity}}" | |
| data: | |
| option: external | |
| - delay: | |
| hours: 0 | |
| minutes: 0 | |
| seconds: 10 | |
| milliseconds: 0 | |
| - action: number.set_value | |
| data: | |
| value: >- | |
| {{ (states(external_temp_sensor)|float(0)|round(1)) }} | |
| target: | |
| entity_id: "{{aqara_trv_number_entity}}" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment