Templates Verbrauchszähler darf nicht 0 werden

Hallo,

ich habe hier ein Problem, bei dem ich nicht weiter komme. Es geht um einen Solax Solar Wechselrichter welcher per WLAN-Stick ins Heimnetz eingebunden ist, und per Template-Sensoren in HA seine Werte als Entitäten abgibt.
Der Wert für die gesamte erzeugte elektrische Arbeit (kWh) verschwindet auch in meinem Fall, sobald der WR sich schlafen legt. Problem dabei ist, dass er am nächsten Tag in den ersten Minuten nach dem Starten des WR 0 ist, und erst später den intern gespeicherten Wert übernimmt und an HA bereit stellt.
Dieses Verhalten schmeißt täglich mein Energiedashboard über den Haufen in dem er z.B. 1660 kWh für den 22.11. zwischen 7 und 8 Uhr meldet. Klingt traumhaft, ist es aber leider nicht.
Ich hatte mir schon versucht per Helfer “Verbrauchszähler” ein speicherndes Zählwerk zu basteln, habe dazu auch beim Erstellen die Option “Regelmäßige Rückstellung” verwendet, bringt aber leider nichts, da die grundlegende Entität beim Start scheinbar einige Male verschwindet, somit mehrfach addiert wird. Der Verbrauchzähler hat dann manchmal ein vielfaches des eigentlichen Wertes.
Dann habe ich diesen Thread gefunden und den erwähnten Template-Sensor übernommen und versucht anzupassen. Die Idee wäre, dass der Template-Sensor neben den Zuständen “unavailable” und “unkown” auch nicht 0 sein darf, erst wenn wieder ein Wert größer 0 kommt, soll dieser übernommen werden. Klappt aber leider auch nicht, bei “unavailable” und “unkown” behält er den alten Wert, bei 0 ist der Ausgangswert auch 0

Das Code-Schnipsel aus meiner configuration.yaml sieht momentan so aus:

template:
-sensor 
 - name: "Solax Energy Total"
    unit_of_measurement: "kWh"
    state: "{{ state_attr('sensor.solax_rest_local', 'Data')[11] | float / 10  }}"
    device_class: energy
    state_class: total_increasing
    icon: mdi:chart-line

  # Zwischenspeicherung Solax Energy Total
  - name: "Solax Energy Total cached"
    unit_of_measurement: "kWh"
    state: |
          {% set sensor = states('sensor.solax_energy_total') %}
          {% if sensor == 'unavailable' or sensor == 'unknown' % or sensor == 0}
          {{ this.state }}
          {% else %}
          {{ sensor }}
          {% endif %}
    device_class: energy
    state_class: total_increasing
    icon: mdi:chart-line

Das erste Template, ist der Sensor, welcher nachts verschwindet, der wird aus einem Sensor extrahiert, der per Modbus-Port 506 den WLAN-Stick am WR abfragt.
Der Zweite soll den zwischengespeicherten Sensor darstellen, ich denke mir, man könnte das sicher auch beides ineinander schachteln, aber erstmal Step-by-Step für die Fehlersuche.

Das Ganze sieht dann beim Start des WR so aus:

Blau ist der direkt am WR ausgelesene Wert, gelb(versteckt sich viel hinter dem blau) ist der zwischengepeicherte Wert, rot ist ein Verbrauchszähler-Helfer mit der aktivierten Option “Regelmäßige Rückstellung”, als Eingangs-Entität hatte beides “Solax Energy” testweise verwendet, zeigt immer das gleich Verhalten.
Wie bekomme ich es nun hin, das er die 0 nicht nimmt, sondern den alten Wert beibehält?
Einen Neustart von HA, wenn der WR bereits down ist, überlebt dieses gebastelte leider auch nicht.

In dem Thread aus dem ich den speichernden Templates-Senaor habe, steht auch etwas von “trigger:” das funktioniert bei mir scheinbar nicht, da stürzt die ganze configuration.yaml zusammen, dass heißt, nichts aus dieser, auch andere Template-Sensoren funktioniert mehr.

Ich bräuchte etwas Hilfe bei der korrekten Erstellung des Templates-Sensors, der den Verbrauchswert speichern soll, am besten so, das dieser auch einen Neustart von HA überlebt, also den Wert speichert, sollte die Quell-Entität im Moment des hochfahrena von HA nicht verfügbar sein.

Vielen Dank schonmal im voraus.

Gruß
SL

Liefert dir der WR auch die momentane Leistung?
Dann kannst du dir aus der momentanen Leistung einen Integralhelfer bauen.

  • Integralsensor
    • linke Riemansche Summe
    • Zeiteinheit: Stunden
    • Metrisches Präfix: k (kilo)
    • Genauigkeit: 2

Mal abgesehen von Deinem Template-Thema: Da muss Dein WR m.M.n. aber irgendwelche anderen “komischen” Werte außer einen Wert von 0 liefern. Das der WR sich abschaltet und in einen Standby-Mode wechselt wenn die Leistung der PV-Module nicht mehr ausreichend ist ist ja normal. Ebenso wie es normal ist das der WR morgens erst eine gewisse Startspannung (z.B. 50V) braucht um aus den Standby-Mode zu erwachen und er dann erst eine Weile einen Wert von Null liefert.

Beispiel mein Growatt WR:
HA_Growatt_DC
HA_Growatt_Energy_Total

All das hat aber eigentlich keinen Einfluss auf das Energy-Dashboard und die Werte dort. Was ich damit sagen will: Wenn Du jetzt irgendetwas bastelst was irgendwie einen 0-Wert als Bedingung beinhalten sollte, könnte das ggf. nicht funktionieren.

VG Jim

Hallo,

was der Wechselrichter früh morgen liefert, hatte ich versucht mit dem Screenshot vom Diagramm zu verdeutlichen, ich weiß ist etwas schwierig das Thema, da scheinbar hier die Besonderheit das er als erstes die 0 sendet.
Das würde ich gern unterdrücken, vielleicht gebe ich das if-Argument auch nur falsch an, oder es liegt am Datentyp der ausgewertet wird, da ja “unknown” “unavailable” Texte sind und 0 ein Zahlenwert.

Das Energiedashboard sieht dann in etwa so aus, das Bild ist von meinen Eltern, ebenfalls Solax-WR, ebenfalls der gleiche Stick, und auch die gleiche Integration ins HA.
Da ist es egal ob ich die Entität “Solax Energy total” nehme, oder zwischengeschalteten Verbrauchszähler-Helfer, es äußert sich meist so. Früh morgens, ein Vielfaches des eigentlichen Zählerwerts. Die eigentlichen Verbräuche verschwinden dann völlig, das muss ich dann immer per Verbrauchzähler kalibrieren und Statistiken bearbeiten glatt ziehen, nervt halt irgendwann.

Ne so schwierig ist das Thema eigentlich nicht, sprich mir ist schon klar was das Problem bei Dir ist. :slightly_smiling_face: Ich hatte ja geschrieben das das Verhalten von dem WR nichts Ungewöhnliches oder “Unnormales” ist sondern das das ganz normal ist. Auch mein WR liefert morgens, nachdem er über die Startspannung aus dem Standby-Mode geweckt wurde, erst einmal einen 0-Wert. Darum hatte ich hat auch den ersten Screenshot gepostet. :wink:

Der Ablauf bei dieser Art von WR (Growatt, Solax, Ginlong, …), die mit einem Wifi-Dongle und einer Hersteller-Cloud arbeiten, ist eigentlich immer gleich. Das Startverhalten hatte ich ja beschrieben. Wenn sich der WR dann im Betrieb befindet sendet der WR über den Wifi-Dongle üblicherweise alle 5 Minuten Werte in die Hersteller-Cloud. Zwischendurch werden die Werte halt im WR zwischengespeichert. Über den Modbus können die Werte des WR ausgelesen bzw. potokolliert werden.

In Verbindung mit HA und dem Energy-Dashboard sollte es dabei aber eigentlich zu keinem Problem kommen, sprich das morgens irgendwelche falschen Werte von dem WR an HA übermittelt werden und auch das der WR erst einen 0-Wert liefert, was Du ja als mögliche Ursache vermutest, kann m.M.n. eigentlich nicht die Ursache sein. Weil - wie schon geschrieben - dieser 0-Wert normal ist. D.h. m.M.n. müsste es da bei Dir ein anderes Problem geben. Vielleicht mit der Einrichtung, den verwendeten Modbus-Registern, der Firmware-Version, HA, oder was auch immer. Daher mein Hinweis (mehr sollte das gar nicht sein) :slightly_smiling_face: das Dir jetzt irgendwelche Templates mit irgendeiner Bedingung die irgendwelche 0-Werte beinhaltet, vermutlich gar nichts bringen werden.

Leider hast Du hier ja nicht das genaue Modell Deines Solax WR genannt, aber ich will es mal so sagen. Wenn es dieses von Dir beschriebene und ja eher schon schwerwiegende Problem grundsätzlich bei/mit Solax WR geben sollte, dann sollte man dazu eigentlich jede Menge Infos und auch Lösungen im I-Net finden. Auch wenn ich jetzt nicht großartig danach gesucht habe, aber ich kann mich nicht daran erinnern hier, oder im HA-Forum, oder im Photovoltaikforum, dazu schon jede Menge Problemmeldungen gelesen/gesehen zu haben.

Ich vermute mal das Du ja die homeassistant-solax-modbus Integration benutzt, die ich hier bei meinem Growatt WR zwar nicht benutze, aber die auch mit meinem Growatt WR funktionieren würde. Auch bei den dortigen Issues-Meldungen - die ich nur grob überflogen habe - sehe ich keine Meldungen von Usern die das von Dir beschriebene Problem haben.

Anm.: Mir ist schon klar das meine Infos hier nicht die Lösung für Dein Problem liefern und ich Dir hier jetzt auch leider keinen fertiges Template oder fertigen Helfer liefere, aber ich wollte auch nur darauf hinweisen das dieser 0-Wert ggf. gar nicht Dein Problem ist. D.h. ich an Deiner Stelle würde versuchen heraus zu bekommen warum es bei Deinem WR (und dem WR Deiner Eltern den Du ja vermutlich auch selber für HA eingerichtet hast) zu diesem Problem kommt. Ggf. ist da ja doch irgendetwas falsch einrichtet, oder es liegt ggf. an der verwendeten Firmware-Version, oder … Auch würde ich an Deiner Stelle - sofern nicht schon gemacht - bei der homeassistant-solax-modbus Integration bei Github mal eine entsprechende Issues-Meldung erstellen. Falls andere User das gleiche Problem wie Du hatten, oder ggf. haben sollten, dann sollte es dort eigentlich sehr schnell entsprechende Reaktionen geben.

Edit: Noch einmal ein paar Screeshots dazu.
DC Power: Heute morgen um 8.43 Uhr ist der WR aus dem Standby-Mode aufgewacht und hat dann bis 9.10 Uhr keinen Watt-Wert an HA geliefert.


Der dazugehörende Energy Total Wert sah dann so aus. Gestern ab ca. 17.00 Uhr ist der WR bereits wieder in den Standby-Mode gegangen und der letzte Energy Total Wert war 2.940,50 kWh. Heute morgen um 8.40 Uhr ist der Energy Total Wert dann wieder mit genau diesen 2.940,50 kWh gestartet. Ohne dann beim starten irgendwelche komischen Daten/werte an das Energy-Dashboard zu liefern.
Growatt_Energy_Total_Morgens
Den genauen Startablauf kann man auch gut sehen wenn man sich die Daten mal als CSV exportieren lässt. Das sieht für heute morgen dann so aus.
Growatt_CSV
Anm.: Die CSV-Werte basieren auf der Sommerzeit, sprich sind eine Stunde früher.
7.43 Uhr (Winterzeit 8.43 Uhr) bis 8.10 Uhr (Winterzeit 9.10 Uhr) der WR wechselt zwischen unavailable und 0-Werten und ab 8.10 Uhr (Winterzeit 9.10 Uhr) werden die ersten 34,1 Watt gemessen. D.h. ca. 25 Minuten lang hat der WR unavailable und 0-Werte an HA gemeldet ohne das das irgendwelche Auswirkungen auf das Energy-Dashboard hatte.

VG Jim

Du darfst keinen normalen Template Sensor verwenden. Statt dessen nimmst Du einen Trigger based Template Sensor, dieser überlebt auch einen Home Assistant Neustart.

Gruß
Osorkon

Ok, davon hatte ich im anderen Thread gelesen, hatte auch versucht das umzusetzen, das Ergebnis steht einen Absatz unter dem von mir zitierten. Er nimmt es nicht, wenn ich mit “trigger:” aufbaue, deshalb hatte ich es erstmal ohne zusammengebaut.

Muss für diese triggerbasierenden Templates noch irgendwo etwas aktiviert oder installiert werden?
Wie gesagt er nimmt die ganze configuration.yaml dann nicht mehr und tickt rum sobald “trigger:” drinnen steht.

Ich würde gerne herausfinden, ob es etwas bringt, oder eben nicht, es ist ja auch ein Lerneffekt für mich, sowas einmal anzuwenden, und ggf. für andere Anwendungsfälle zu nutzen Lassen wir also das WR-Thema mal beiseite und gehen mal davon aus, es wäre z.B. eine Temperatur, bei der ein Wert nicht angezeigt werden soll.

Gruß
SL