hmmm…ein paar Sachen.
In der Reihenfolge und ich hoffe, dass ich nichts vergesse.
Ich habe den gleichen Trigger (Schwellwertsensor) erstellt wie du. Das hat funktioniert.
Zum Code:
Vorweg ich arbeite nicht mit der energy.yaml
ich denke man kann dort einfach yaml code auslagern.
ich mache das in der sensors.yaml, die ich in der config.yaml inkuldiert habe.
- platform: template
sensors:
grundlast_act:
unique_id: "Grundlast_aktuell"
device_class: power
unit_of_measurement: "W"
value_template: >
{% if is_state('binary_sensor.durchlauferhitzer_trigger', 'off') %}
{{ states('sensor.esphome_web_4eff0d_zaehler_wohnung')| float(0) }}
{% endif %}
- platform: template
sensors:
hotwater_pw_act:
unique_id: "Durchlauferhitzer_Power"
device_class: power
unit_of_measurement: "W"
value_template: >
{% if is_state('binary_sensor.durchlauferhitzer_trigger', 'on') %}
{{ states('sensor.esphome_web_4eff0d_zaehler_wohnung')| float(0) -
states('sensor.grundlast_act')| float(0) }}
{% else %}
{{ float(0) }}
{% endif %}
Ich setze den Wert für meinen Durchlauferhitzer(hotwater_pw_act) auf 0, wenn er aus ist. (mit dem else)
Sonst bleibt der Wert immer hoch.
Das dürfte ein Teil des Fehlers sein.
Ich setze in meiner Zuweisung “value_template” und nicht den “state”. (Bei state gab es einen Fehler, mag in der energy.yaml anders sein)
In Powercalc reicht dann auch:

Und du kannst einfach die aktuelle Leistung des Durchlauferhitzers zuweisen.
Schlussendlich noch zum Energy-Dashboard hinzufügen. Aber das hatte ja bereits geklappt.
PS: Die andere Lösung hatte ich für meine Thermostate der Infrarotheizung umgesetzt, da Trigger ich keinen Wert sondern nur das ein- und ausschalten und rechne je 1000W, wenn aktiv. Dann muss man einen virtuellen manuellen Zähler nehmen.
PPS: es wird wohl noch etwas umständlicher, da mir aufgefallen ist, dass der Wert der Grundlast höher ist als die tatsächliche Grundlast. Bei mir ca. 300W bei tatschlich 225W.
Das liegt wohl daran, wo der Trigger einsetzt.
Hast du den Trigger, wie ich, auf 600W gesetzt wird auch dort (abzüglich einer zeitlichen Verzögerung) die Grundlast berechnet. Die liegt durch den Anstieg der Leistung dann natürlich höher. Setzt du den Trigger niedriger wird realistischer gerechnet. Jedoch auch der Trigger mal falsch ausgelöst. Beim einschalten des Herdes z.B. Man könnte also auch einfach die Gesamtlast minus “Pi- mal-Daumen-Grundlast” rechnen. Oder die Intervallspeicherung nutzen für die Grundlastermittlung. Das habe ich aber noch nicht umgesetzt.