Skip to content

Instantly share code, notes, and snippets.

@pavax
Last active November 9, 2024 21:59
Show Gist options
  • Save pavax/8d6ed250765d89cb281d4a1762b8d2e8 to your computer and use it in GitHub Desktop.
Save pavax/8d6ed250765d89cb281d4a1762b8d2e8 to your computer and use it in GitHub Desktop.
z2m_aqara_trv_external_temperature.yaml
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: 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"
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
aqara_trv_sensor_mode_value_external: "external"
trigger:
- trigger: state
entity_id: !input external_temp_sensor
action:
- 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', aqara_trv_sensor_mode_value_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: "{{ not is_state(aqara_trv_select_entity, aqara_trv_sensor_mode_value_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}}"
@almirus
Copy link

almirus commented Oct 16, 2024

I suggest simplifying the code in the part where it interacts with the MQTT service. The integration offers easy access to setting the temperature through number.set_value.

action: number.set_value
metadata: {}
data:
  value: "{{ (states('sensor.sredniaia_temperatura_v_spalne')|float(0)|round(1)) }}"
target:
  entity_id: number.0x54ef4410005bae34_external_temperature_input

@pavax
Copy link
Author

pavax commented Oct 16, 2024

@almirus Thanks for your suggestion. I updated the script to be based on your suggestion. Can you try it and provide me with some feedback?

@pavax
Copy link
Author

pavax commented Oct 16, 2024

@fabibo89 I updated the blueprint to allow you also to fetch a Device with the name "Aqara Smart Radiator Thermostat E1 (SRTS-A01)"

@chEEzys
Copy link

chEEzys commented Oct 24, 2024

image
Hello! Please update to "Smart radiator thermostat E1 (SRTS-A01)" whith small "t"
Thanks

@pavax
Copy link
Author

pavax commented Oct 25, 2024

@chEEzys thanks - I updated the blueprint

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment