I had sensor.upstairs_consumed_energy_2 defined as (and yes, I should use modern format)
- platform: template
sensors:
upstairs_consumed_energy_2:
friendly_name: "Upstairs Consumed Energy 2"
value_template: >
{% if has_value('sensor.upstairs_consumed_energy') %}
{{ states('sensor.upstairs_consumed_energy') }}
{%- else -%}
states("sensor.upstairs_consumed_energy_2")
{%- endif %}
unit_of_measurement: 'kWh'
unique_id: upstairs_consumed_energy_2
device_class: energy
This morning, I fiddled with a access point and a switch, and after a few hours I saw this
resulting in this
I now have replaced the template with this :
sensors:
upstairs_consumed_energy_2:
friendly_name: "Upstairs Consumed Energy 2"
value_template: >
{% if (states('sensor.upstairs_consumed_energy') | float(0)) > (states('sensor.upstairs_consumed_energy_2') | float(0)) %}
{{ states('sensor.upstairs_consumed_energy') }}
{%- else -%}
states('sensor.upstairs_consumed_energy_2')
{%- endif %}
unit_of_measurement: 'kWh'
unique_id: upstairs_consumed_energy_2
device_class: energy
But why was the sensor with has_value not working ?
for complete information, source is a Tasmota device
- name: "Upstairs Consumed Energy"
state_topic: "electricity2/tele/RESULT"
value_template: >-
{% set message = value_json.SerialReceived %}
{% set payload = message[6:14] %}
{% set payload_len = (payload | length) %}
{% set result = namespace(value='') %}
{% for i in range(0, payload_len + 1) | reverse -%}
{%- if i is divisibleby 2 -%}
{%- set result.value = result.value + payload[i:i+2] -%}
{%- endif -%}
{%- endfor -%}
{{ (result.value|float(0)) / 100 }}
unit_of_measurement: 'kWh'
unique_id: "upstairs_consumed_energy"
device_class: energy
state_class: total_increasing
device:
identifiers:
- C21FF1
name: electricity2
model: Generic
sw_version: 8.4.0.3(0f1e4fc-tasmota)
manufacturer: Tasmota
and house consumption is defined as
- name: "House electricity energy"
unique_id: '0a7476cc-d6c1-40ba-8ae1-606518c3497f'
unit_of_measurement: 'kWh'
state: >
{{ ((states("sensor.mains_consumed_energy_2") | float(0)) + (states("sensor.upstairs_consumed_energy_2") | float(0)) + (states("sensor.extra_consumed_energy_2") | float(0)) )| round(2) }}
availability: >
{{ not states('sensor.mains_consumed_energy_2') in ["unavailable","unknown"] and
not states('sensor.upstairs_consumed_energy_2') in ["unavailable","unknown"] and
not states('sensor.extra_consumed_energy_2') in ["unavailable","unknown"] }}
device_class: energy
state_class: total_increasing