Tibber+PV: Kosten Wärmepumpe berechnen

Moin zusammen,

ich habe seit ca. 1 Monat eine Wärmepumpe und möchte wissen, was die so im laufenden Betrieb kostet. Meinen Strom beziehe ich über Tibber und habe dazu eine 10,6kWp PV-Anlage mit Speicher. Die aktuelle Leistungsdaten zu Netzbezug, Gesamtverbrauch und WP bekomme ich über entsprechende Sensoren.

Den Anteil des Netzbezugs am Gesamtverbrauch errechne ich mir nur über eine simplen Prozentsensor:

  - sensor:
      - name: "Anteil Netzbezug an Verbrauch"
        unit_of_measurement: "%"
        device_class: power_factor
        state_class: measurement
        state: >
          {% set verbrauch = states('sensor.solarnet_power_load_consumed') | float(0) %}
          {% set netz = states('sensor.solarnet_power_grid_import') | float(0) %}
          {{ iif(verbrauch != 0, ((netz / verbrauch) * 100), 0) | round(3, default=0) }}
        availability: >
          {{ states('sensor.solarnet_power_load_consumed') not in ['unknown', 'unavailable', 'none'] and
            states('sensor.solarnet_power_grid_import') not in ['unknown', 'unavailable', 'none'] }}

Dann den Anteil des aktuellen Wärmepumpenverbrauchs berechnen:

  - sensor:
      - name: "Anteil Netzbezug an Waermepumpe"
        unit_of_measurement: W
        device_class: power
        state_class: measurement
        state: >
          {% set loadheatpump = states('sensor.device_0_arotherm_plus_current_power') | float(0) %}
          {% set netz = states('sensor.solarnet_power_grid_import') | float(0) %}
          {% set sharenet = states('sensor.anteil_netzbezug_an_verbrauch') | float(0) %}
          {{ iif(loadheatpump > 0 and netz > 0, (loadheatpump * sharenet / 100), 0) | float(0) }}
        availability: >
          {{ states('sensor.device_0_arotherm_plus_current_power') not in ['unknown', 'unavailable', 'none'] and
            states('sensor.solarnet_power_grid_import') not in ['unknown', 'unavailable', 'none']  and
            states('sensor.anteil_netzbezug_an_verbrauch') not in ['unknown', 'unavailable', 'none'] }}

Über diesen Sensor habe ich dann einen Integral-Helfer in Wh (Riemann links) namens “sensor.netzverbrauch_warmepumpe” gesetzt und diesen dann zur Berechnung der aktuellen Kosten als Quelle in dem folgenden Sensor verwendet:

  - sensor:
      - name: "Kosten Netzbezug Wärmepumpe"
        unit_of_measurement: "€"
        device_class: monetary
        state_class: total
        state: >
          {% set netheatpump = states('sensor.netzverbrauch_warmepumpe') | float(0) %}
          {% set netprice = states('sensor.electricity_price_tibber') | float(0) %}
          {{ ((netheatpump /1000) * netprice) }}
        availability: >
          {{ states('sensor.netzverbrauch_warmepumpe') not in ['unknown', 'unavailable', 'none'] and
            states('sensor.electricity_price_tibber') not in ['unknown', 'unavailable', 'none'] }}

Das scheint soweit alles ganz ordentlich zu funktionieren, aber etwas macht mich trotzdem stutzig, wenn ich mir den Verlauf anschaue. Wenn der Tibber-Strompreis nach unten geht, dann macht auch mein Kosten-Sensor (oben) einen Sprung nach unten, obwohl der Netzverbrauch (unten) weiter steigt:

Mache ich einen Denkfehler in meinem Setup?

Bin für jeden Hinweis dankbar.

Viele Grüße
Wolle

Ich vermute, daß Problem liegt in Deinem “Kosten Netzbezug Wärmepumpe” Sensor. Du multiplizierst netzverbrauch_warmepumpe mit dem Tibber Preis. Und damit ändern sich auch die vergangenen Kosten aufgrund des stündlichen Preises.

Du meinst, weil die Dimension Wh - also stündlich - berechnet wird, ändert sich auch der Preis für alle vorherigen Sensorwerte in der jeweiligen Stunde, wenn Tibber den Preis alle 15 MInuten anpasst?
Hätte ich den Integralsensor netzverbrauch_warmepumpe dann auf Minutenbasis definieren sollen, sprich mit Dimension Wmin?

Ich bin ehrlich, ich nutze kein Tibber und verspüre wenig Lust, mich hier einzuarbeiten.
Aber hier im Forum gibt es genug Tibber User, die gerne einspringen dürfen.

Zumindestens habe ich noch die Suche getätigt

Generell würde ich sagen, man muß die Kosten stündlich berechnen; in dem Intervall wo sich die Preise ändern und dann “summieren”.

Danke für die Hinweise zu den anderen Tibber-Beiträgen. Ich hatte auch schon danach gesucht, aber die beschäftigen sich alle nicht mit dem neuen 15-Minuten-Intervall, dass seit dem 1.10. gilt.
Und eben wegen dieser Umstellung ist eine Berechnung auf stündlicher Basis nicht mehr möglich, weil die Preise innerhalb der 15 Minuten doch erheblich schwanken können. Da auch der Verbrauch einer Wärmepumpe sehr stark schwankt, ist eine einfache Durchschnittsberechnung pro Stunde nur sehr ungenau.

Anyway, ich habe meinen Integralsensor jetzt mal testweise auf Wmin umgestellt und dann natürlich auch den Kostensensor entsprechend angepasst.Trotzdem beobachte ich weiter im Verlauf, dass die Kurve nach unten geht, wenn der Strompreis runtergeht und die WP gerade wenig verbraucht.

Ich schätze, das das tatsächlich ein Problem der “Auflösung” ist. Der Kostensensor wird augenscheinlich alle 10 Sekunden aktualisiert und der Tibberpreis ändert sich immer ca. 30 Sekunden nach einer vollen Viertelstunde. Vermutlich erfolgt dann immer eine Korrektur des Wertes für die gesamte Minute und im Plot sieht das dann aus, als ob die Kosten runter gehen. Macht das Sinn?

Die Werte insgesamt scheinen aber soweit korrekt zu sein. Wenn ich mir ein x-beliebiges 15-Minuten Intervall anschaue und die Differenz zwischen Anfangs- und Endwert im Verbrauchs-Integral mit dem gültigen Strompreis für die Viertelstunde multipliziere, komme ich auf das gleiche Ergebnis wie im Kosten-Sensor.

Von daher scheint alles gut zu sein und es sieht nur einfach im Plot etwas schräg aus…