diff --git a/blueprints/danfoss_ally_trv_external_sensor.yaml b/blueprints/danfoss_ally_trv_external_sensor.yaml index 80842cf..46325b8 100644 --- a/blueprints/danfoss_ally_trv_external_sensor.yaml +++ b/blueprints/danfoss_ally_trv_external_sensor.yaml @@ -41,15 +41,23 @@ triggers: 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 +# We only want to execute the action if +# +# * the temperature sensor is available, or +# +# * 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: |- - {% if state_attr(climate_entity, 'external_measured_room_sensor') == None %} + {# if the temperature entity doesn't have a state, e.g. if it's powered off #} + {% if states(temperature_entity) is none %} + False + {# if the radiator has been unavailable #} + {% elif state_attr(climate_entity, 'external_measured_room_sensor') is none %} True {% else %} {{ @@ -65,8 +73,8 @@ actions: # 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') }} + {% if (trigger.id is not defined) or (trigger.to_state.state in ['unavailable', 'unknown']) %} + {{ states(temperature_entity) }} {% else %} {{ trigger.to_state.state | float }} {% endif %}