Berechnung Summe 2er Entitäten bei Aktualisierung von einer

Hallo,

bin neu in HomeAssistant und hätte gleich mal eine Frage.
Ich habe ein BKW welches mir über MQTT Daten schickt (AhoiDTU) und seit neustem ein Lesekopf an meinem Stromzähler.

Nun berechne ich aus der Leistung vom BKW und der Leistung vom Stromzähler den aktuellen Stromverbrauch des Hauses.
Leider bekomme ich die Werte vom Stromzähler alle 60s, die vom BKW alle ca. 30s.
Richtig synchron wird’s wohl eh nie werden,
daher meine Frage:
Wie ändere ich meine Berechnung der Hausleistung so, dass diese nur berechnet wird, wenn sich die Leistung des Stromzählers ändert?

Aktuell sieht das ganze so aus:

template:
  - sensor:
      - name: "Leistung Haus"
        unique_id: "LeistungHaus"
        unit_of_measurement: 'W'
        state: >
            {{ ((float(states('sensor.leistung_bkw'))) + (float(states('sensor.smart_meter_sum_active_instantaneous_power')))) | round(2) }}

Vielen Dank
Hawk

:crayon:by HarryP: Codezeilen in Code-TAG’s überführt

Ich verstehe ehrlich gesagt noch nicht das eigentliche Problem. Du hast einen Sensor, der die beiden Werte addiert, somit hast du doch immer die korrekte Summe, egal, wann und ob was aktualisiert wird.

Hallo,
vielleicht hilft ein Beispiel.
Annahme: ich verbrauche im Haus konstant 1000W.
das BKW liefert 600W und aus dem Stromnetz kommen 400W.
Somit zeigt mein Template Sensor (Leistung Haus) 1000W an. Soweit so gut.
Nun ändert sich der Wert des BKW schlagartig auf 0W (wird alle 30s abgefragt)
Der Template Sensor zeigt nun 400W an.
(400W vom Stromzähler, der noch nicht aktualisiert wurde + 0W vom BKW)
Das ist aber falsch, die Leistung im Haus bleibt ja bei 1000W.
Ursache, der Stromzähler Wert wird nur alle 60s abgefragt. Daran kann ich nichts ändern (EDL21 Integration)

Meine Idee war, den Wert für die Leistung vom Haus nur zu berechnen, wenn der Stromzähler Wert sich ändert.

Ein Kollege von mir meinte, ich solle das Ganze in eine if-Schleife packen, die abfragt, ob sich der Stromzählerwert geändert hat und erst dann die Berechnung machen.
Wie würde sich dann das template ändern?

Grüße
Hawk

Hast du schon versucht, in dein Template die Reihenfolge der beiden Werte zu ändern. Sprich statt BKW + Stromzähler änder in Stromzähler + BKW

Ich bin mir echt nicht sich, ob die State-Reihenfolge eine Rolle spielt beim triggern aber es wäre mal easy getestet :slightly_smiling_face:

Wenn das auch nicht hilft brauchst du wahrscheinlich einen Helfer und eine Automation

Hi,

habs probiert mit ändern der Reihenfolge.
Leider keine Änderung. Wert wird immer berechnet, sofern sich einer der beiden Entitäten ändert.

Grüße
Hawk

Schade aber danke für das testen, hat mich auch interessiert :grinning:

Mir fäll dann keine andere Lösung ein, als mit einer Automation und einen trigger nur auf deinen Stromzähler.

Selbst ein Vergleich ob BKW ist >0 würde dir nicht wirklich helfen, da er in der Nacht (keine Sonne W) dann nie rechnen würde

Du könntest Dir einen input_text.leistung_haus erstellen und eine Automation, die sowohl auf die eine als auch die Änderung der anderen Entität triggert. Das Ergebnis schreibst Du dann in den input_text. Berechnung aus Deinem Eingangspost.

Den Wert des input_text liest Du dann in dem template sensor ein, da Du ja sicherlich Richtung Verbrauchszähler für’s Energy Dashboard möchtest. Möglicherweise nimmt die integration Integration für die kWh-Umrechnung auch den input_text, müsste man testen.

Nur gebrainstormed, könnte aber so gehen.

EDITH: input_text wird die Riemann sum nicht nehmen. Also den input_text im template sensor floaten.