Ich habe eine Photovoltaikanlage mit Speicher und 2 kaskadierte Stromzähler wo dazwischen die Wärmepumpe hängt. Diese ist so alt… (17 Jahre), dass sie mir ihren Verbrauch leider nicht mitteilen kann.
Die Stromzähler greife ich mittels iobroker und dem smartmeter aus und übermittle die Werte dann per mqtt an Home Assistant. Wie berechne ich jetzt die aktuelle Leistung der Wärmepumpe aus der “Differenz” der zwei Zähler?
Mein lokales gemma3:12b gibt mir das hier aus, aber mein HomeAssistant sagt: nö
template:
* sensor:
* name: “Leistung Wärmepumpe”
unit_of_measurement: W
* device_class: power
* unique_id: leistung_wp
state: >
{% set wp_leistung = states(‘sensor.mqtt_zähler_leistung_mit_wp’) | float %}
{% set ohne_wp_leistung = states(‘sensor.mqtt_zähler_leistung_ohne_wp’) | float %}
{% if wp_leistung < 0 and ohne_wp_leistung < 0 %}
{{ wp_leistung - ohne_wp_leistung }} {# Addiere, wenn beide negativ sind #}
{% elif wp_leistung < 0 %}
{{ wp_leistung }} {# Nur Wärmepumpe hat Einspeisung #}
{% elif ohne_wp_leistung < 0 %}
{{ -ohne_wp_leistung }} {# Nur Zähler ohne WP hat Einspeisung #}
{% else %}
{{ wp_leistung - ohne_wp_leistung }} {# Standardsubtraktion #}
{% endif %}
Kann mir jemand den Fehler bitte zeigen?
Vielen Dank im voraus
Fehlt da etwas vor dem Minus? Oder willst du einen negativen Wert ausgeben?
Wenn letzteres, dann multipliziere mit -1 oder baue dir einen String zusammen.
ich glaube die lokale “KI” (besser stochastische Mustererkennung) versteht nicht
beide Zähler können negativ oder positiv sein, also 4 Kombinationen sind möglich. Hier möchte ich aber immer den Abstand der 2 Zähler berechnet haben.
Und ich weiß nicht wie ich es formulieren soll, damit es (der Verbrauch der Wärmepumpe) stimmt
Nachtrag1:
ups:
template:
- sensor:
- name: "Wärmepumpe Bezug (Betrag)"
unit_of_measurement: W
device_class: power
unique_id: leistung_wp
state: >
{% set wp_leistung = states('sensor.stromzahler_leistung_mit_wp') | float %}
{% set ohne_wp_leistung = states('sensor.stromzaehler_leistung_ohne_wp') | float %}
{% if wp_leistung > 0 and ohne_wp_leistung > 0 %}
{{ wp_leistung - ohne_wp_leistung }} {# Standard: Beide verbrauchen #}
{% elif wp_leistung < 0 and ohne_wp_leistung < 0 %}
{{ abs(ohne_wp_leistung) - abs(wp_leistung) }}
{% elif wp_leistung > 0 and ohne_wp_leistung < 0 %}
{{ wp_leistung + abs(ohne_wp_leistung) }}
{% else %}
"Unbekannt" {# Falls ein Zähler keinen Wert hat #}
{% endif %}
ich nähere mich:
'abs' is undefined
template:
- sensor:
- name: "Wärmepumpe Bezug (Betrag)"
unit_of_measurement: W
device_class: power
unique_id: leistung_wp
state: >
"Unbekannt"
Nachtrag2:
Es wird besser. Wenn beide Werte positiv sind, kommen schon richtige Berechnungen. Nur bei negativen “states” erscheint immer “Unbekannt”
template:
- sensor:
- name: "Wärmepumpe Bezug (Betrag)"
unit_of_measurement: W
device_class: power
unique_id: leistung_wp
state: >
{% set wp_leistung = states('sensor.stromzahler_leistung_mit_wp') | float %}
{% set ohne_wp_leistung = states('sensor.stromzaehler_leistung_ohne_wp') | float %}
{% if wp_leistung > 0 and ohne_wp_leistung > 0 %}
{{ wp_leistung - ohne_wp_leistung }} {# Standard: Beide verbrauchen #}
{% elif wp_leistung < 0 and ohne_wp_leistung < 0 %}
{{ float(ohne_wp_leistung) - float(wp_leistung) }}
{% elif wp_leistung > 0 and ohne_wp_leistung < 0 %}
{{ wp_leistung + float(ohne_wp_leistung) }}
{% else %}
"Unbekannt" {# Falls ein Zähler keinen Wert hat #}
{% endif %}
Ich vermute das hier ist die Lösung, ich teste noch:
- name: "Wärmepumpe Bezug (Leistung)"
unit_of_measurement: W
device_class: power
state_class: measurement
unique_id: leistung_wp
state: >
{# Wir tauschen hier die Rollen der Sensoren #}
{% set messpunkt_netz = states('sensor.stromzaehler_leistung_ohne_wp') | float(0) %}
{% set messpunkt_haus = states('sensor.stromzahler_leistung_mit_wp') | float(0) %}
{# Differenz: Netzbezug minus das, was im Haus/PV passiert #}
{% set diff = messpunkt_netz - messpunkt_haus %}
{# Ergebnis muss positiv sein, da WP nur verbraucht #}
{{ [0, diff] | max | round(2) }}
availability: >
{{ is_number(states('sensor.stromzahler_leistung_mit_wp')) and
is_number(states('sensor.stromzaehler_leistung_ohne_wp')) }}
by HarryP:
. Zusammenführung Doppelpost (bei Änderungen oder hinzufügen von Inhalten bitte die „Bearbeitungsfunktion“ anstatt „Antworten“ zu nutzen)
. Code-/Logzeilen formatiert (bitte immer in </> einbinden)
. s.a.: (Neues Update & Features - Hier in der Community 🫶)