SmartMeter in OpenHab
-
- Beiträge: 5
- Registriert: 10. Nov 2023 10:06
SmartMeter in OpenHab
Guten Tag,
ich habe in meinem Haus ein SmartMeter am Stromzähler installiert, dass mir kontinuierlich (also bei jeglicher Änderung) folgende Werte liefert, die auch in OH persistiert werden
Gesamtenergieverbrauch in kWh
Momentanverbrauch aller Phasen in W
Momentanverbrauch der einzelnen Phasen in W
Nun möchte ich mehr oder weniger eine Berechnung der entsprechenden Werte auf Tages / Wochen / Monat und Jahresverbrauch machen.
Mit dem Gesamtenergieverbrauch hab ich das schon hinbekommen, da es ja genug Beispiele gab, um die Gesamtenergie entsprechend der Intervalle zu berechnen.
Jetzt würde ich das gleiche gerne mit dem Verbrauch der einzelnen Phasen machen, finde aber hierfür keinen Anhaltspunkt um das zu berechnen...
Theoretisch sollte es einfach sein, da diese Werte kontinuierlich aufgezeichnet werden... Sie müssten dann nur auf 24h hochgerechnet bzw. addiert werden und beim Tages / Wochen / Monatswechsel entsprechend genullt werden.
Vielleicht hat ja jemand eine Idee...
Gruß Daniel
ich habe in meinem Haus ein SmartMeter am Stromzähler installiert, dass mir kontinuierlich (also bei jeglicher Änderung) folgende Werte liefert, die auch in OH persistiert werden
Gesamtenergieverbrauch in kWh
Momentanverbrauch aller Phasen in W
Momentanverbrauch der einzelnen Phasen in W
Nun möchte ich mehr oder weniger eine Berechnung der entsprechenden Werte auf Tages / Wochen / Monat und Jahresverbrauch machen.
Mit dem Gesamtenergieverbrauch hab ich das schon hinbekommen, da es ja genug Beispiele gab, um die Gesamtenergie entsprechend der Intervalle zu berechnen.
Jetzt würde ich das gleiche gerne mit dem Verbrauch der einzelnen Phasen machen, finde aber hierfür keinen Anhaltspunkt um das zu berechnen...
Theoretisch sollte es einfach sein, da diese Werte kontinuierlich aufgezeichnet werden... Sie müssten dann nur auf 24h hochgerechnet bzw. addiert werden und beim Tages / Wochen / Monatswechsel entsprechend genullt werden.
Vielleicht hat ja jemand eine Idee...
Gruß Daniel
- udo1toni
- Beiträge: 14043
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: SmartMeter in OpenHab
Herzlich willkommen im openHAB Forum!
Warum willst Du denn da überhaupt rechnen? Dafür gibt es doch die Persistence!
Für den Momentanverbrauch ist es allerdings nicht sinnvoll, Summen oder Differenzen zu bilden, stattdessen benötigst Du den Mittelwert. Wenn die Werte persistiert werden, sollte eine Abfrage á la
ausreichen. Startzeitpunkt wäre dann z.B. now.with(LocalTime.MIDNIGHT) oder auch now.with(firstDayOfMonth).with(LocalTime.MIDNIGHT).
Wahlweise kann man auch
nutzen, um beliebige Zeiträume zu messen.
Das gleiche geht für den Zählerstand (kWh) mit deltaSince bzw. deltaBetween, hier wird dann die Differenz gebildet.
Für den Momentanverbrauch könnten auch noch minimumSince und maximumSince interesant sein (auch diese gibt es in der Between-Variante).
Warum willst Du denn da überhaupt rechnen? Dafür gibt es doch die Persistence!
Für den Momentanverbrauch ist es allerdings nicht sinnvoll, Summen oder Differenzen zu bilden, stattdessen benötigst Du den Mittelwert. Wenn die Werte persistiert werden, sollte eine Abfrage á la
Code: Alles auswählen
Momentanverbrauch.averageSince(Startzeitpunkt,"persistenceservice")
Wahlweise kann man auch
Code: Alles auswählen
Momentanverbrauch.averageBetween(Startzeitpunkt,Endzeitpunkt,"persistenceservice")
Das gleiche geht für den Zählerstand (kWh) mit deltaSince bzw. deltaBetween, hier wird dann die Differenz gebildet.
Für den Momentanverbrauch könnten auch noch minimumSince und maximumSince interesant sein (auch diese gibt es in der Between-Variante).
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.2.2, LXC), mit openHABian eingerichtet
-
- Beiträge: 5
- Registriert: 10. Nov 2023 10:06
Re: SmartMeter in OpenHab
Eigentlich geht es mir darum, zu ermitteln welche Phase über den Tag hinweg den meisten Verbrauch hat, da ich ein Balkonkraftwerk ohne Speicher installieren will.
Dieses soll dann an die entsprechende Phase geklemmt werden.
Danke schonmal für die Antwort vorher, dass bringt mich schon ein wenig weiter.
Dieses soll dann an die entsprechende Phase geklemmt werden.
Danke schonmal für die Antwort vorher, dass bringt mich schon ein wenig weiter.
-
- Beiträge: 199
- Registriert: 22. Sep 2018 10:38
Re: SmartMeter in OpenHab
Es sollte eigentlich egal sein, an welche Phase das BKW angeschlossen wird.
Spätestens wenn Du das BKW beim Netzbetreiber ameldest, tauschen die Dir ganz flink deinen Zähler aus, damit der nicht rückwärts läuft.
Die allermeisten (alle?) neuen Zähler (vllt. auch schon dein vorhandener) arbeiten saldierend, das heißt, die einzelnen Phasen werden gegeneinander verrechnet.
Also, auch wenn der BKW Strom eingespeist wird, und du auf einer anderen Phase Strom aus dem Netz beziehst, wird dies gegeneinander verrechnet.
siehe auch: https://machdeinenstrom.de/welchen-stro ... kraftwerk/
Spätestens wenn Du das BKW beim Netzbetreiber ameldest, tauschen die Dir ganz flink deinen Zähler aus, damit der nicht rückwärts läuft.
Die allermeisten (alle?) neuen Zähler (vllt. auch schon dein vorhandener) arbeiten saldierend, das heißt, die einzelnen Phasen werden gegeneinander verrechnet.
Also, auch wenn der BKW Strom eingespeist wird, und du auf einer anderen Phase Strom aus dem Netz beziehst, wird dies gegeneinander verrechnet.
siehe auch: https://machdeinenstrom.de/welchen-stro ... kraftwerk/
openHAB 4.1.0 @ RPi 4 / SSD - InfluxDB2 und Grafana @ Synology Docker - KNX
- udo1toni
- Beiträge: 14043
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: SmartMeter in OpenHab
Tatsächlich sollte der Anschluss keinen Einfluss auf die Stromrechnung haben, weil die Zähler des EVU saldierend zählen müssen (also eingespeister Strom auf z.B. Phase 1 muss vom bezogenen Strom aus Phase 2 und 3 abgezogen werden).
Technisch ist es natürlich sinnvoll, die Anlage tatsächlich dort einspeisen zu lassen, wo auch der Strombedarf herrscht.
Wie gesagt, es gibt für den maximalen Bezug maximumSince. averageSince solltest Du aber auch nicht außer Acht lassen. Die mittlere Abweichung (deviationSince) wäre in dem Zusammenhang vermutlich ebenfalls interessant.
Die möglichen Abfragen:
minimum -> Minimum
maximum -> Maximum
deviation -> mittlere Abweichung
evolution -> Entwicklung
Since -> seit Zeitpunkt x bis jetzt
Between -> zwischen Zeitpunkt x und Zeitpunkt y
Die Werte werden zeitlich gewichtet, das möchte man nicht zu Fuß erledigen.
Technisch ist es natürlich sinnvoll, die Anlage tatsächlich dort einspeisen zu lassen, wo auch der Strombedarf herrscht.
Wie gesagt, es gibt für den maximalen Bezug maximumSince. averageSince solltest Du aber auch nicht außer Acht lassen. Die mittlere Abweichung (deviationSince) wäre in dem Zusammenhang vermutlich ebenfalls interessant.
Die möglichen Abfragen:
minimum -> Minimum
maximum -> Maximum
deviation -> mittlere Abweichung
evolution -> Entwicklung
Since -> seit Zeitpunkt x bis jetzt
Between -> zwischen Zeitpunkt x und Zeitpunkt y
Die Werte werden zeitlich gewichtet, das möchte man nicht zu Fuß erledigen.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.2.2, LXC), mit openHABian eingerichtet
-
- Beiträge: 5
- Registriert: 10. Nov 2023 10:06
Re: SmartMeter in OpenHab
Vielen Dank... werde das gleich mal probieren
-
- Beiträge: 5
- Registriert: 10. Nov 2023 10:06
Re: SmartMeter in OpenHab
Hört sich jetzt vielleicht wie ein Anfänger an ....udo1toni hat geschrieben: ↑10. Nov 2023 22:34 Herzlich willkommen im openHAB Forum!
Warum willst Du denn da überhaupt rechnen? Dafür gibt es doch die Persistence!
Für den Momentanverbrauch ist es allerdings nicht sinnvoll, Summen oder Differenzen zu bilden, stattdessen benötigst Du den Mittelwert. Wenn die Werte persistiert werden, sollte eine Abfrage á laausreichen. Startzeitpunkt wäre dann z.B. now.with(LocalTime.MIDNIGHT) oder auch now.with(firstDayOfMonth).with(LocalTime.MIDNIGHT).Code: Alles auswählen
Momentanverbrauch.averageSince(Startzeitpunkt,"persistenceservice")
Wahlweise kann man auchnutzen, um beliebige Zeiträume zu messen.Code: Alles auswählen
Momentanverbrauch.averageBetween(Startzeitpunkt,Endzeitpunkt,"persistenceservice")
Das gleiche geht für den Zählerstand (kWh) mit deltaSince bzw. deltaBetween, hier wird dann die Differenz gebildet.
Für den Momentanverbrauch könnten auch noch minimumSince und maximumSince interesant sein (auch diese gibt es in der Between-Variante).
weiße ich das jetzt in einer Rule oder direkt per Item zu?
- udo1toni
- Beiträge: 14043
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: SmartMeter in OpenHab
Die "alte" Art das zu erledigen ist tatsächlich über zusätzliche Items und Rules, die den Items die entsprechenden Werte zuweisen.
Ich bin mit der Main UI bzw. deren Widgets noch nicht so vertraut, man kann dort aber auch sehr tiefgreifende Manipulationen mit Code vornehmen, sprich, eventuell könnte man auch direkt Widgets programmieren, welche die Werte dann darstellen.
Ich bin mit der Main UI bzw. deren Widgets noch nicht so vertraut, man kann dort aber auch sehr tiefgreifende Manipulationen mit Code vornehmen, sprich, eventuell könnte man auch direkt Widgets programmieren, welche die Werte dann darstellen.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.2.2, LXC), mit openHABian eingerichtet
-
- Beiträge: 5
- Registriert: 10. Nov 2023 10:06
Re: SmartMeter in OpenHab
Also das mit den Durchschnittsverbräuchen der einzelnen Phasen läuft jetzt wunderbar.
Jetzt hab ich nur noch ein Problem...
Es geht um die Gesamtverbräuche, aufgeschlüsselt nach Tag, Woche, Monat und Jahr...
Dazu gab es ja im Forum einige Beispiele.
Das mit dem Verbrauch pro Tag funktioniert einwandfrei, nur bei den Werten für Woche, Monat und Jahr gibt er derzeit als Ergebnis immer NULL aus.
Nach meinem Verständnis nach sollte er aber zumindest ein paar Werte ausspucken, zumindest seit dem der Grundwert persistiert ist.
Vielleicht kommt er auch nicht mit den grundlegenden Startwerten bzw. Auswertezeiträumen klar....
Ich poste mal anbei die entsprechende Rule...
Bei der Berechnung des Durchschnittverbrauches der einzelnen Phasen sieht es auch irgendwie viel einfacher aus... (Danke an udo1toni)
Vielen Dank
Gruß Daniel
Jetzt hab ich nur noch ein Problem...
Es geht um die Gesamtverbräuche, aufgeschlüsselt nach Tag, Woche, Monat und Jahr...
Dazu gab es ja im Forum einige Beispiele.
Das mit dem Verbrauch pro Tag funktioniert einwandfrei, nur bei den Werten für Woche, Monat und Jahr gibt er derzeit als Ergebnis immer NULL aus.
Nach meinem Verständnis nach sollte er aber zumindest ein paar Werte ausspucken, zumindest seit dem der Grundwert persistiert ist.
Vielleicht kommt er auch nicht mit den grundlegenden Startwerten bzw. Auswertezeiträumen klar....
Ich poste mal anbei die entsprechende Rule...
Code: Alles auswählen
rule "Stromverbrauch Tag/Woche/Monat/Jahr"
when
Time cron " 0/5 * * ? * * * " //alle 5 sec.
then
val ZonedDateTime zdt = ZonedDateTime.now()
val dayOfWeek = (ZonedDateTime.now.with(LocalTime.of(0,0,0,0)).getDayOfWeek.getValue)
var ZonedDateTime start_of_day = zdt.toLocalDate().atStartOfDay(zdt.getZone()) //Startpunkt Tagesverbrauch
var ZonedDateTime start_of_week2 = zdt.minusDays(7)(zdt.getZone()) //Startpunkt Wochenverbrauch Variante 1
var ZonedDateTime start_of_week = zdt.minusDays(dayOfWeek -1)(zdt.getZone()) //Startpunkt Wochenverbrauch Variante 2
var ZonedDateTime start_of_month = zdt.withDayOfMonth(1).toLocalDate().atStartOfDay(zdt.getZone()) //Startpunkt Monatsverbrauch
var ZonedDateTime start_of_year = zdt.withDayOfYear(332).toLocalDate().atStartOfDay(zdt.getZone()) //Startpunkt Jahresverbrauch
var strom_Heute = KEZaehlerTotal.deltaSince(start_of_day) as Number //Gesamtverbrauch pro Tag, Rücksetzung um Mitternach --> funktioniert
var strom_Woche = KEZaehlerTotal.deltaSince(start_of_week) as Number // --> funktioniert nicht
var strom_Woche2 = KEZaehlerTotal.deltaSince(start_of_week2) as Number // --> funktioniert nicht
var strom_Monat = KEZaehlerTotal.deltaSince(start_of_month) as Number // --> funktioniert nicht
var strom_Jahr = KEZaehlerTotal.deltaSince(start_of_year) as Number // --> funktioniert nicht
var StromL1 = KEZaehlerCL1.averageSince(now.with(LocalTime.MIDNIGHT),"rrd4j") //Durchschnittsverbrauch der einzelnen Phasen --> funktioniert
var StromL2 = KEZaehlerCL2.averageSince(now.with(LocalTime.MIDNIGHT),"rrd4j") //Durchschnittsverbrauch der einzelnen Phasen --> funktioniert
var StromL3 = KEZaehlerCL3.averageSince(now.with(LocalTime.MIDNIGHT),"rrd4j") //Durchschnittsverbrauch der einzelnen Phasen --> funktioniert
postUpdate(StromVerbrauchHeute, strom_Heute) // --> funktioniert
postUpdate(StromVerbrauchWoche, strom_Woche) // --> Ergebnis NULL
postUpdate(StromVerbrauchWoche2, strom_Woche2) // --> Ergebnis NULL
postUpdate(StromVerbrauchMonat, strom_Monat) // --> Ergebnis NULL
postUpdate(StromVerbrauchJahr, strom_Jahr) // --> Ergebnis NULL
postUpdate(DurchschnittL1, StromL1) // --> funktioniert
postUpdate(DurchschnittL2, StromL2) // --> funktioniert
postUpdate(DurchschnittL3, StromL3) // --> funktioniert
end
Vielen Dank
Gruß Daniel
-
- Beiträge: 199
- Registriert: 22. Sep 2018 10:38
Re: SmartMeter in OpenHab
Wie lange fütterst du denn schon deine Datenbank?
Wenn da noch keine Daten vorliegen, ist es klar, dass ein NULL folgt.
Wenn da noch keine Daten vorliegen, ist es klar, dass ein NULL folgt.
openHAB 4.1.0 @ RPi 4 / SSD - InfluxDB2 und Grafana @ Synology Docker - KNX