Upgrade 4.3.3 - AverageSince funktioniert nicht mehr

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
oschwabe
Beiträge: 9
Registriert: 18. Aug 2022 08:08
Answers: 0
Wohnort: Biberach

Upgrade 4.3.3 - AverageSince funktioniert nicht mehr

Beitrag von oschwabe »

Hallo zusammen,
seit dem Update auf 4.3.3 funktioniert die Berechnung des Mittelwertes nicht mehr.

ich will in das Item "pvPower_erzeugung_5" (number) den Durchschnittswert des Items pvPower (number) letzten 5 Minuten schreiben.

Code: Alles auswählen

pvPower_erzeugung_5.postUpdate(pvPower.averageSince(now.minusMinutes(5), "rrd4j"))
und bekomme folgende Fehlermeldung:
[ERROR] [.handler.AbstractScriptModuleHandler] - Script execution of rule with UID 'pvanlage' failed: The argument 'state' must not be null. in pvanlage.
mit der Fehlermeldung kann ich nicht viel anfangen.

hat sich in 4.3.3 etwas verändert oder warum plötzlich der Fehler?
Pi5/8GB/SSD 120GB - OH4.3.3 openhabian 64bit

nw378
Beiträge: 295
Registriert: 22. Sep 2018 10:38
Answers: 5

Re: Upgrade 4.3.3 - AverageSince funktioniert nicht mehr

Beitrag von nw378 »

The argument 'state' must not be null. in pvanlage.
Klingt eher, als ob (noch) keine Daten vorliegen. Persistence läuft? Update nach Sonnenuntergang gemacht?
openHAB 4.3.3 @ RPi 4 / SSD - InfluxDB2 und Grafana @ Synology Docker - KNX

oschwabe
Beiträge: 9
Registriert: 18. Aug 2022 08:08
Answers: 0
Wohnort: Biberach

Re: Upgrade 4.3.3 - AverageSince funktioniert nicht mehr

Beitrag von oschwabe »

so wie ich das sehe tritt der Fehler auf, wenn der Wert auf 0 (nicht NULL) geht. In meinem Fall wenn die Sonne untergegangen ist.
Als Workaround habe ich jetzt eine IF Abfrage herum gebaut welche das Kommando nur ausführt wenn Wert nicht 0.
wie gesagt - die Rule lief bis zu dem Update auf 4.3.3 am Sonntag 3.3.25.
Pi5/8GB/SSD 120GB - OH4.3.3 openhabian 64bit

Benutzeravatar
udo1toni
Beiträge: 15240
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Upgrade 4.3.3 - AverageSince funktioniert nicht mehr

Beitrag von udo1toni »

Nein, die Fehlermeldung ist hier eindeutig.
null ist übrigens etwas anders als NULL (und etwas völlig anderes als 0)
Du kannst vor dem postUpdate() eine Zeile in openhab.log ausgeben lassen:

Code: Alles auswählen

val nowMinus5 = now.minusMinutes(5)
val avgSince = pvPower.averageSince(nowMinus5,"rrd4j")
logInfo("pvPower","Durchschnitt ab {}  ist {}",nowMinus5,avgSince)
if(avgSince !== null)
    pvPower_Erzeugung_5.postUpdate(avgSince)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

oschwabe
Beiträge: 9
Registriert: 18. Aug 2022 08:08
Answers: 0
Wohnort: Biberach

Re: Upgrade 4.3.3 - AverageSince funktioniert nicht mehr

Beitrag von oschwabe »

das ist jetzt der Code mit den Veränderungen von Udo.

Code: Alles auswählen

	
	val nowMinus5 = now.minusMinutes(5)
	val avgSince = pvPower.averageSince(nowMinus5,"rrd4j")
	logInfo("pvPower","Durchschnitt ab {}  ist {}",nowMinus5,avgSince)
	//if (pvPower.state != 0)
	//{
	logInfo("PVInfo", "PVInfo Durschnitt 5 berechnen - HomePower: " + homePower_W.state + "W GridPower: " + gridPower_W.state + "W PV-Power: " + pvPower_W.state + "  BatteryPower: " + batteryPower_W.state)
	pvPower_erzeugung_5.postUpdate(pvPower.averageSince(now.minusMinutes(5), "rrd4j"))
	//}
Für mich sieht das so aus, dass solange der berechnete Durschnitt einen Wert größer 0 hat kommt kein Fehler auch wenn Wert des Items pvPower bereits 0 ist.

Code: Alles auswählen

2025-03-05 18:19:24.891 [INFO ] [.model.script.pvPower] - Durchschnitt ab 2025-03-05T18:14:24.889680579+01:00[Europe/Berlin]  ist 0.1503671111111111
2025-03-05 18:19:24.892 [INFO ] [org.openhab.core.model.script.PVInfo] - PVInfo Durschnitt 5 berechnen - HomePower: 2565W GridPower: -24W PV-Power: 0 W  BatteryPower: 2607
erst wenn der berechnete Durchschnitt den Wert 0 wird, taucht der Fehler im LOG auf.

Code: Alles auswählen

2025-03-05 18:29:55.142 [INFO ] [.model.script.pvPower] - Durchschnitt ab 2025-03-05T18:24:55.140490490+01:00[Europe/Berlin]  ist 0
2025-03-05 18:29:55.143 [INFO ] [org.openhab.core.model.script.PVInfo] - PVInfo Durschnitt 5 berechnen - HomePower: 2817W GridPower: 65W PV-Power: 0 W  BatteryPower: 2677
2025-03-05 18:29:55.144 [ERROR] [.handler.AbstractScriptModuleHandler] - Script execution of rule with UID 'pvanlage_wallbox_evcc-1' failed: The argument 'state' must not be null. in pvanlage_wallbox_evcc
Das ist aber erst seit dem Upgrade auf 4.3.3 so - Problem in Openhab oder gab es eine "Verbesserung"?
Pi5/8GB/SSD 120GB - OH4.3.3 openhabian 64bit

Benutzeravatar
udo1toni
Beiträge: 15240
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Upgrade 4.3.3 - AverageSince funktioniert nicht mehr

Beitrag von udo1toni »

Warum verwendest Du nicht die Variable beim postUpdate? Das erneute Abfragen der Datenbank führt fast zwingend zu einem anderen Ergebnis.
Bitte nicht einfach Code abändern, es hat schon einen Grund, warum ich in meinem Code eine Variable nutze.

Ganz korrekt wäre der Code so:

Code: Alles auswählen

val nowMinus5 = now.minusMinutes(5)
val avgSince = pvPower.averageSince(nowMinus5,"rrd4j")
logInfo("pvPower","Durchschnitt ab {}  ist {}",nowMinus5,avgSince)
if(avgSince instanceof Number)
    pvPower_Erzeugung_5.postUpdate(avgSince)
Es geht hier darum, dass sichergestellt ist, dass ein gültiger Zahlenwert geliefert wird. Das ist aber nur für die Variable sichergestellt, nicht für eine erneute Abfrage der Datenbank.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten