Hi everyone,
I’m writing a template_sensor which should fetch another sensor and do some basic calculations.
Basically I’m using:
- platform: template
sensors:
all_3_phases_power:
friendly_name: "All Phases Power"
value_template: >-
{% set phases = (states('sensor.phase_1_power') | float + states('sensor.phase_2_power') | float + states('sensor.phase_3_power') | float) | round(2) %}
{% set phase_1_updated = (now().timestamp() - states.sensor.phase_1_power.last_changed.timestamp()) < 1 %}
{% set phase_2_updated = (now().timestamp() - states.sensor.phase_2_power.last_changed.timestamp()) < 1 %}
{% set phase_3_updated = (now().timestamp() - states.sensor.phase_3_power.last_changed.timestamp()) < 1 %}
{% set all_phases_updated = phase_1_updated and phase_2_updated and phase_3_updated %}
{% if phases != 'unavailable' and phases > 0.0 %}
{% if all_phases_updated %}
{{ phases | float | round(2) }}
{% endif %}
{% else %}
{{ 'unavailable' }}
{% endif %}
unit_of_measurement: "W"
icon_template: mdi:power
The problem is if all_phases_updated
is False, the sensor gets an empty value, and I just want it to stay at the last value (Not pushing the value).
The reason I need to push if all_phases_updated
is True is because it updates 3 times in rapid sucession to every update in the 3 phases (every 5s), so I watch first if all 3 phases have updated in the last 1 sec and only then push the value to the template.
So, the question is: How do I avoid a empty value in the template when the value isn’t “ready” (aka. How do I not push a value to the template/ignore this iteration)?
Thanks in advance