Erstmal danke für deine Antwort
udo1toni hat geschrieben: ↑21. Dez 2023 01:12
Ich nehme mal an, Du meinst MWh, nicht mWh (Megawattstunden vs. Milliwattstunden)
natürlich mein ich Megawattsunden, entschuldige da hab ich mich vertan.
Die erste Frage ist: welche Version von openHAB nutzt Du?
4.0.4
Wenn Du openHAB3 oder openHAB4 nutzt, sollte das Fronius Binding direkt QuantityType liefern. Wenn Du über http mit openHAB3.4 oder openHAB4 weitere Daten einsammelst, kannst Du auch dort QuantityType verwenden.
Ich nutze das Fronius Binding, nutze aber kein QuantityType. Generell nutze ich das nicht, ich lasse mir nur nackte zahlen in meine InfluxDB schreiben.
Wenn Du openHAB4 verwendest, ist es sehr wichtig, bei QuantityType Items auch noch den unit Parameter korrekt zu setzen, sinnvollerweise setzt Du unit für alle Items gleich, die miteinander zu tun haben werden. unit bestimmt, wie der Wert von der Persistence gespeichert wird, denn die Persistence hat mit QuantityType nichts am Hut, sie speichert nur nackte Zahlen. Mein Tipp wäre, hier für beide Items kWh zu verwenden (Kilowattstunden). Achte auch darauf, was in den Variablen tatsächlich landet (also das Delta). Evtl. steht hier auch die Unit mit dabei, das kann beim Schreiben in ein Item ebenfalls zu Problemen führen.
Ganz allgemein sollte eine Abfrage des Wertes zum Jahresbeginn allerdings weder bei InfluxDB noch bei rrd4j sonderlich lange dauern, es geht ja nur um einen Einzelwert, nicht um alle Werte seitdem...
Stehen die Werte auch für die Zeitpunkte zur Verfügung? Das könnte sonst zum Problem werden.
Das problem ist schlicht ergreifend das openHAB es nichtschafft bekommt die werte richtig auszurechnen. Er probiert was zu berechnen, landet im minus was ständig hochgezählt wird. Dann geht ihn anscheinen der Speicher aus und er beginnt von vorne.
Zum thema Zeitpunkte:
Die Zeitpunkte erscheinen mir im Übrigen etwas seltsam. So sollte das für openHAB ab Version 3 aussehen:
Code: Alles auswählen
val startOfDay = now.with(LocalTime.MIDNIGHT)
val startOfMonth = startOfDay.withDayOfMonth(1)
val startOfYear = startOfDay.withDayOfYear(1)
Genau deswegen stehen die Zahlen auf den gewissen Tagen, weil ich ab dort daten hatte. Sonst funktioniert die Berechnung nicht. Darf man nur nicht vergessen am 1. die Berechnung umzustellen. Das funktioniert im übrigen mit der gleichen Rule in vielen Berechnungen seit teilweise weit über 1 Jahr absolut problemlos. Ich lese unter anderem auch den Smartmeter von meinen Netzbetreiber aus, dort geht das ebenfalls talldelos!
Hier mal die Ausgabe der Rule, wenn sie versucht den Tagesverbrauch zu berechnen, Das item gen24_yield_all liefert den Wert von Fronius Binding
Code: Alles auswählen
2023-12-21 22:08:45.761 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'gen24_yield_all' changed from -257.1177232694444005 to -257.0674895708332895
2023-12-21 22:08:45.788 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'gen24_yield_all' changed from -257.0674895708332895 to -265.1529058302777325
2023-12-21 22:08:45.788 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'gen24_yield_all' changed from -265.1529058302777325 to -265.1026721316666215
2023-12-21 22:08:45.813 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'gen24_yield_all' changed from -265.1026721316666215 to -273.1880883911110645
2023-12-21 22:08:45.813 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'gen24_yield_all' changed from -273.1880883911110645 to -273.1378546924999535
2023-12-21 22:08:45.838 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'gen24_yield_all' changed from -273.1378546924999535 to -281.2232709519443965
2023-12-21 22:08:45.839 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'gen24_yield_all' changed from -281.2232709519443965 to -281.1730372533332855
2023-12-21 22:08:45.863 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'gen24_yield_all' changed from -281.1730372533332855 to -289.2584535127777285
2023-12-21 22:08:45.864 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'gen24_yield_all' changed from -289.2584535127777285 to -289.2082198141666175
2023-12-21 22:08:45.892 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'gen24_yield_all' changed from -289.2082198141666175 to -297.2936360736110605
2023-12-21 22:08:45.892 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'gen24_yield_all' changed from -297.2936360736110605 to -297.2434023749999495
2023-12-21 22:08:45.920 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'gen24_yield_all' changed from -297.2434023749999495 to -305.3288186344443925
2023-12-21 22:08:45.921 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'gen24_yield_all' changed from -305.3288186344443925 to -305.2785849358332815
2023-12-21 22:08:45.946 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'gen24_yield_all' changed from -305.2785849358332815 to -313.3640011952777245
2023-12-21 22:08:45.946 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'gen24_yield_all' changed from -313.3640011952777245 to -313.3137674966666135
2023-12-21 22:08:45.971 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'gen24_yield_all' changed from -313.3137674966666135 to -321.3991837561110565
2023-12-21 22:08:45.971 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'gen24_yield_all' changed from -321.3991837561110565 to -321.3489500574999455
2023-12-21 22:08:45.996 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'gen24_yield_all' changed from -321.3489500574999455 to -329.4343663169443885
2023-12-21 22:08:45.996 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'gen24_yield_all' changed from -329.4343663169443885 to -329.3841326183332775
2023-12-21 22:08:46.027 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'gen24_yield_all' changed from -329.3841326183332775 to -337.4695488777777205
2023-12-21 22:08:46.027 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'gen24_yield_all' changed from -337.4695488777777205 to -337.4193151791666095
2023-12-21 22:08:46.053 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'gen24_yield_all' changed from -337.4193151791666095 to -345.5047314386110525
2023-12-21 22:08:46.053 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'gen24_yield_all' changed from -345.5047314386110525 to -345.4544977399999415
2023-12-21 22:08:46.078 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'gen24_yield_all' changed from -345.4544977399999415 to -353.5399139994443845
2023-12-21 22:08:46.078 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'gen24_yield_all' changed from -353.5399139994443845 to -353.4896803008332735
2023-12-21 22:08:46.104 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'gen24_yield_all' changed from -353.4896803008332735 to -361.5750965602777165
2023-12-21 22:08:46.105 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'gen24_yield_all' changed from -361.5750965602777165 to -361.5248628616666055
2023-12-21 22:08:46.130 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'gen24_yield_all' changed from -361.5248628616666055 to -369.6102791211110485
2023-12-21 22:08:46.130 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'gen24_yield_all' changed from -369.6102791211110485 to -369.5600454224999375
So rechnet er das ins unendliche, dann fängt er irgendwann wieder von vorne an.
deaktiviere ich die rule, dann springt der wert sofort wieder auf das richtige um
Code: Alles auswählen
2023-12-21 22:10:26.484 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'gen24_yield_all' changed from -2547.0945194083329095 to 8.0935349366666665
und hier von einen anderen Wert, wo die berechnung funktioniert. Rule ist dort wie gesagt die gleiche zur berechnung:
Code: Alles auswählen
2023-12-21 22:15:56.087 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'PowerIN_Today' changed from 35.30100000 to 35.30800000