Diese springen teilweise auch stark ins Negative.
Woran könnte das liegen? Liegt es eventuell an stark schwankenden Eingangsgrößen und der zu langsamen Verarbeitung in HAOS?
Hier mal ein Beispiel für eine Netzeinspeisung mit Erklärungen im Code was da gemacht wird: Im Anschluss kannst du mit dem Sensor für Solarertrag und Netzeinspeisung den tatsächlichen Solarverbrauch (Tag) errechnen.
# Shelly 3em
# Stromverbrauch Shelly 3em Pro auslesen. Die aktuellen Verbräuche/Erträge je Phase werden in einen Wert zusammengefasst
- sensor:
- name: "Total Power"
device_class: power
state_class: measurement
unit_of_measurement: "W"
state: >
{{
(
states('sensor.shellypro3em_08d1f9130908_phase_a_active_power')|float(0) +
states('sensor.shellypro3em_08d1f9130908_phase_b_active_power')|float(0) +
states('sensor.shellypro3em_08d1f9130908_phase_c_active_power')|float(0)
) | round(1)
}}
# Dann wird ermittelt ob sich der Sensor im positiven Bereich bewegt, was Verbrauch
# bedeutet. Bei negativen Werten (Netzeinspeisung), wird der Sensor auf 0 gesetzt
- sensor:
- name: "Total Power Nur Verbrauch" #Das ist der reine Verbrauch ohne Einspeisungen ins Netz
unique_id: Stromleistung_nur_Verbrauch
device_class: power
unit_of_measurement: "W"
state: "{{ states('sensor.total_power')|float(0) if states('sensor.total_power')| int > 0 else 0 }}"
# Die folgenden beiden Sensoren ermitteln Netzeinspeisung anhand eines negativen
# Wertes. Ansonsten wird der Sensor auf 0 gestellt. In einem weiteren Sensor wird dann
# der negative Wert in einen positiven umgewandelt und wir haben den tatsächlichen
# Netzeinspeisewert
- sensor:
- name: "Solar Einspeisung Ausgelesen-negativ" #Das sind die reinen Einspeisungen ins Netz
device_class: power
unit_of_measurement: "W"
state: "{{ states('sensor.total_power')|float(0) if states('sensor.total_power')| int < 1 else 0 }}"
- sensor:
- name: "Solar Einspeisung Normiert-positiver_wert" #Das sind die reinen Einspeisungen ins Netz in einen positiven Wert verwandelt
device_class: power
unit_of_measurement: "W"
state: "{{ states('sensor.solar_einspeisung_ausgelesen_negativ')|float(0) * -1 | round (3) }}"
Danke für eure Hinweise. Ich bin erst jetzt auf die Idee gekommen einmal Google Gemini nach einer Lösung zu fragen und tatsächlich, das funktioniert sogar erstaunlich gut.
Für alles die es Interessieren sollte:
Mögliche Ursachen für negative Werte
Zeitversatz (Timing-Probleme):
Die wahrscheinlichste Ursache ist, dass die beiden Sensoren (sensor.power_total und sensor.balkonsolar_ertrag_switch_0_power) ihre Werte nicht exakt zum selben Zeitpunkt aktualisieren.
Szenario: Ihr Balkonsolar-Sensor meldet gerade eine hohe Leistung (z. B. 300 W). In diesem Moment schalten Sie einen großen Verbraucher ein (z. B. eine Kaffeemaschine). Ihr power_total Sensor aktualisiert sich daraufhin, aber bevor sich der Balkonsolar-Sensor wieder aktualisiert.
Rechenbeispiel:
balkonsolar_ertrag ist noch auf 300 W (alter Wert).
power_total springt auf -150 W (Einspeisung), weil der Verbraucher nun läuft.
Die Logik wird ausgelöst: Eigenverbrauch = -150 + 300 = 150 W. Das ist korrekt.
Problem-Szenario: Nehmen wir an, es ist Abend. Ihr Balkonsolar-Sensor meldet 5 W. Plötzlich schaltet er auf 0 W, aber der power_total Sensor hat sich noch nicht aktualisiert und meldet -10 W.
Falsche Berechnung: Eigenverbrauch = -10 (alter Wert von power_total) + 5 (alter Wert von balkonsolar_ertrag) = -5 W.
Dies kann zu kurzzeitigen "Glitches" führen, bei denen die Werte der beiden Sensoren nicht synchron sind und eine Momentaufnahme zu einer falschen Berechnung führt.
Fehlerhafte Sensorwerte:
Einer der beiden zugrunde liegenden Sensoren (insbesondere sensor.balkonsolar_ertrag_switch_0_power) könnte manchmal kurzzeitig einen falschen, negativen Wert liefern, z. B. aufgrund eines Kommunikationsfehlers oder einer fehlerhaften Messung. Wenn Ihr power_total Sensor dann ebenfalls einen kleinen negativen Wert hat, könnte das Ergebnis negativ werden.
Fehlinterpretation von power_total:
Es ist wichtig zu prüfen, wie genau sensor.power_total den Wert interpretiert.
Netzbezug: Ist der Wert positiv, wenn Sie Strom aus dem Netz beziehen?
Einspeisung: Ist der Wert negativ, wenn Sie Strom in das Netz einspeisen?
Wenn die Logik Ihres power_total Sensors anders ist (z. B. Einspeisung ist positiv, Bezug ist negativ), würde Ihre gesamte Logik umgekehrt funktionieren und zu falschen Ergebnissen führen. Die von Ihnen verwendete Logik ist jedoch die gängigste Konvention.