Balkonkraftwerk / Stromerzeugung berechnen (erledigt)

Für welche Projekte verwendet Ihr OpenHAB? Was habt Ihr automatisiert? Stellt eure Projekte hier vor.

Moderatoren: Cyrelian, seppy

Antworten
Nybass
Beiträge: 43
Registriert: 25. Mär 2017 11:15

Balkonkraftwerk / Stromerzeugung berechnen (erledigt)

Beitrag von Nybass »

Hallo zusammen,

aktuell habe ich ein Balkonkraftwerk in Betrieb genommen und erfasse bereits die aktuelle Leistung der kleinen PV-Anlage.
Ich bekomme fast minütlich einen Wert, sodass ich mir wie folgt die Tageserzeugung ausrechne:

Code: Alles auswählen

rule "Balkonkraftwerk Gesamterzeugung"
when
   Item Balkonkraftwerk_CurrentWatt changed
then
   if(Balkonkraftwerk_CurrentWatt.state instanceof Number == false)
   {
      logWarn("filename", "Balkonkraftwerk_CurrentWatt.state not a Number: {}", Balkonkraftwerk_CurrentWatt.state)
      return;
   }

   // CurrentWatt entspricht Leistung einer Stunde
   // Umrechnung nach kWh
   var Number temp = (Balkonkraftwerk_CurrentWatt.state as Number / 60 / 1000) 
   var Number actualDay = Balkonkraftwerk_ActualDay.state as Number + temp
   
   Balkonkraftwerk_ActualDay.postUpdate(actualDay)
end
Die Werte kommen aber leider nicht genau jede Minute rein ....

Code: Alles auswählen

        Line 20245: 2021-09-06 13:45:04.391 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Balkonkraftwerk_CurrentWatt' changed from 575.85 to 574.90
	Line 20276: 2021-09-06 13:46:04.565 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Balkonkraftwerk_CurrentWatt' changed from 574.90 to 575.47
	Line 20297: 2021-09-06 13:47:04.722 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Balkonkraftwerk_CurrentWatt' changed from 575.47 to 573.21
	Line 20368: 2021-09-06 13:49:05.021 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Balkonkraftwerk_CurrentWatt' changed from 573.21 to 571.15
	Line 20403: 2021-09-06 13:50:05.193 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Balkonkraftwerk_CurrentWatt' changed from 571.15 to 571.34
	Line 20437: 2021-09-06 13:51:05.356 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Balkonkraftwerk_CurrentWatt' changed from 571.34 to 573.39
	Line 20463: 2021-09-06 13:52:05.520 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Balkonkraftwerk_CurrentWatt' changed from 573.39 to 572.64
	Line 20492: 2021-09-06 13:53:05.691 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Balkonkraftwerk_CurrentWatt' changed from 572.64 to 570.22
	Line 20538: 2021-09-06 13:54:05.845 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Balkonkraftwerk_CurrentWatt' changed from 570.22 to 567.44
	Line 20566: 2021-09-06 13:55:06.009 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Balkonkraftwerk_CurrentWatt' changed from 567.44 to 568.37
Daher hatte ich mich gefragt, ob es eine Möglichkeit gibt herauszufinden wann die Regel zuletzt aufgerufe wurde. Anhand des Zeitstempels könnte ich die Berechnung sicherlich besser gestalten. Oder gibt es noch ganz andere Ideen?

In Verwendung ist auch ein HM-ES-TX-WM ... Damit ist geplant dann zu berechnen wieviel der Leistung auch verbraucht wurde und wieviel "verschenkt" wurde. Leider liefert mir dieser Sensor aber die Werte nur sehr sporadisch :/

Ich freue mich auf eure Unterstützug / Ideen / Anregungen.
Zuletzt geändert von Nybass am 19. Sep 2021 10:26, insgesamt 1-mal geändert.

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

Re: Balkonkraftwerk / Stromerzeugung berechnen

Beitrag von udo1toni »

Ich fürchte, die näherungsweise Berechnung lässt sich nicht viel besser gestalten. Du könntest natürlich sekündlich den passenden Wert aufaddieren, da kommst Du dann aber schon in den Bereich, wo openHAB selbst nicht mehr sicher "pünktlich" ist. Das ist also nicht genauer (vorausgesetzt, dass die Daten zuverlässig alle ca. 60,2 Sekunden kommen und nicht grobe Ausreißer zu finden sind (als z.B. schon nach 30 Sekunden).

Dazu muss man vielleicht noch erwähnen, dass openHAB keinesfalls ein System zur Messwerterfassung ist. Nicht einmal die Aufsummierung ist eine Aufgabe, die man openHAB überlassen will... ;)

Grundsätzlich kannst Du auf den Zeitstempel mit Item.lastUpdate.millis zugreifen. Du könntest also den Zeitstempel bei jedem Update mit dem vorhergehenden Zeitstempel vergleichen bzw. die exakte Zeitspanne nutzen, die zwischen zwei Messpunkten liegt. Du müsstest dann den Messwert durch 3600000 teilen (eben in die Anzahl Millisekunden einer Stunde) und anschließend mit der Differenz des letzten und des aktuellen Updates multiplizieren.
Allerdings... es steht eben nur der letzte Zeitpunkt zur Verfügung,nicht der vorletzte. Das bedeutet, dass Du jedes Mal den Zeitstempel "retten musst.
aber denke daran, dass Du den vorherigen wert verwenden musst (previousState), der aktuelle wert kann erst zur Berechnung herangezogen werden, wenn ein neuer wert vorliegt.

Wenn Du das Item persistierst, kannst Du mit averageSince(Zeitstempel) den Durchschnitt für einen beliebigen Zeitraum ausgeben lassen. Wobei ich nicht glaube, dass der Durchschnitt gewichtet ist ;) Das wird also auch nicht genauer sein, dafür aber simpel.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Nybass
Beiträge: 43
Registriert: 25. Mär 2017 11:15

Re: Balkonkraftwerk / Stromerzeugung berechnen

Beitrag von Nybass »

Danke fürs Brainstorming.

Hatte gestern Abend auch noch daran gedacht einfach eine Regel minütlich aufrufen zu lassen (per Time Cron) und dann den alten Wert zu verwenden…. Vor allem da der Stromzähler im Keller so wenig Werte liefert, das macht es ja bereits sehr ungenau.

Aber auch gut zu wissen mit dem Zeitstempel herausfinden, das werde ich jedenfalls mal testen, wer weiß für was man das noch gebrauchen kann.

Die Daten werden auch per influxdb geloggt und testweise in grafana mal angezeigt. Ist aber alles Neuland für mich und wollte auch in der openHAB Sitemap etwas sichtbares haben…

Antworten