Shelly Verbrauchswerte Speichern
Moderator: seppy
- KellerK1nd
- Beiträge: 432
- Registriert: 17. Jun 2019 16:45
- Wohnort: Griesheim
Re: Shelly Verbrauchswerte Speichern
Ein weiterer Vorteil der time cron, man spart Rechenleistung. Macht ja schon einen Unterschied, ob man in 15 Minuten eine Rechenoperation hat oder 1000.
Betriebssystem: Proxmox 7.3-4
openHAB Container: debian11 LXC
openHAB Version: 3.4
Hardware: HomeServer Eigenbau mit einem Intel i5 9600K
Smarthome-Equipment:
- Rasperrymatic
- deConz
- HUE
- Shellys
- Mosquitto
- AVM Fritz!Box
openHAB Container: debian11 LXC
openHAB Version: 3.4
Hardware: HomeServer Eigenbau mit einem Intel i5 9600K
Smarthome-Equipment:
- Rasperrymatic
- deConz
- HUE
- Shellys
- Mosquitto
- AVM Fritz!Box
-
- Beiträge: 23
- Registriert: 14. Dez 2021 20:51
Re: Shelly Verbrauchswerte Speichern
nur zur Info. Shelly hat nach Update seinen Stand wieder auf 0 gesetzt und die Summe passt noch.
Danke nochmal für die Hilfe, aber dass es wirklich daran liegt dass das System den Change nicht mitbekommt, hätte ich nicht gedacht.
Das mit der Rechenleistung ist sicher auch noch ein Vorteil, zumal man ja so gut wie keine Information verliert.
Grüße
Daniel
Danke nochmal für die Hilfe, aber dass es wirklich daran liegt dass das System den Change nicht mitbekommt, hätte ich nicht gedacht.
Das mit der Rechenleistung ist sicher auch noch ein Vorteil, zumal man ja so gut wie keine Information verliert.
Grüße
Daniel
- PeterA
- Beiträge: 1052
- Registriert: 8. Feb 2019 12:12
Re: Shelly Verbrauchswerte Speichern
Also es kommt auch darauf an welchen Shelly man verwendet.
Hier sind es 6 x Shelly 2.5 für die Rollläden.
Wenn der entsprechende Rollladen gefahren wurde dauert es einen kleinen Moment bis der aktuelle Wert über MQTT reinkommt.
Und dann läuft die Rule. Funktioniert sehr gut!
Hier sind es 6 x Shelly 2.5 für die Rollläden.
Wenn der entsprechende Rollladen gefahren wurde dauert es einen kleinen Moment bis der aktuelle Wert über MQTT reinkommt.
Und dann läuft die Rule. Funktioniert sehr gut!
Code: Alles auswählen
rule "Shellies25 kWh aggregation" // Berechne den Shelly-kWh-Verbrauch basierend auf den kWh-Werten der Shelly
when
Member of gShellyConsumption changed // Gruppe mit Consumption Member
then
logInfo("ShellykWh", "Es gibt {} Member in der Consumption Gruppe.", gShellyConsumption.members.size)
val iSink = gShellykWh.members.filter[i|i.name.split("_").get(1) == triggeringItem.name.split("_").get(1)].head
val Number nDelta = (triggeringItem.deltaSince(now.minusMinutes(15)).floatValue) / 60000
logInfo("ShellykWh", "Quelle: {}, Ziel: {}, Delta: {}, before update: {}", triggeringItem.name, iSink.name, nDelta, iSink.state)
if(nDelta <= 0) // falls nDelta kleiner oder gleich 0
return; // Abbruch der Rule
if(!(iSink.state instanceof Number)) // Falls keine Zahl geliefert wird
iSink.postUpdate(nDelta) // nDelta als Wert setzen
else // ansonsten
iSink.postUpdate((iSink.state as Number) + nDelta) // nDelta zum aktuellen Wert addieren
end
- OpenHab 2.4
#PWRUP
#PWRUP
- KellerK1nd
- Beiträge: 432
- Registriert: 17. Jun 2019 16:45
- Wohnort: Griesheim
Re: Shelly Verbrauchswerte Speichern
Ich denke es kommt eher darauf an WO man den Shelly einsetzt. Bei einem Rolladen werden nicht so häufig changes kommen wie direkt an der Unterverteilung. Würde ich nen 3 EM spaßeshalber hinter ne Lampe hängen wird er nicht so häufig Änderungen melden, wie wenn ich den 3 EM direkt an Wohnungseinspeisung messen lasse.
Betriebssystem: Proxmox 7.3-4
openHAB Container: debian11 LXC
openHAB Version: 3.4
Hardware: HomeServer Eigenbau mit einem Intel i5 9600K
Smarthome-Equipment:
- Rasperrymatic
- deConz
- HUE
- Shellys
- Mosquitto
- AVM Fritz!Box
openHAB Container: debian11 LXC
openHAB Version: 3.4
Hardware: HomeServer Eigenbau mit einem Intel i5 9600K
Smarthome-Equipment:
- Rasperrymatic
- deConz
- HUE
- Shellys
- Mosquitto
- AVM Fritz!Box
-
- Beiträge: 23
- Registriert: 14. Dez 2021 20:51
Re: Shelly Verbrauchswerte Speichern
Hallo
Mir ist jetzt wieder ein Fall untergekommen, der bei meiner Herangehensweise doch zu einem Problem führt.
Ich schaue ja immer 15 Minuten zurück. Jetzt ist mein Server mal für 4 Stunden ausgefallen, diese 4 Stunden fehlen jetzt natürlich. Hier wäre schon gut wenn man au den Change triggern würde, weil der letzte wert vor dem Change ja auch die vier Stunden alt wäre und damit auch das delta.
Leider führt das zu den eingangs erwähnten Problemen.
Kellerkind, hattest du das Thema auch mal und wie gehst du damit um? Ich habe die Werte halt manuell nachgezogen, aber das kann man ja auch nicht immer machen.
Danke
Daniel
Mir ist jetzt wieder ein Fall untergekommen, der bei meiner Herangehensweise doch zu einem Problem führt.
Ich schaue ja immer 15 Minuten zurück. Jetzt ist mein Server mal für 4 Stunden ausgefallen, diese 4 Stunden fehlen jetzt natürlich. Hier wäre schon gut wenn man au den Change triggern würde, weil der letzte wert vor dem Change ja auch die vier Stunden alt wäre und damit auch das delta.
Leider führt das zu den eingangs erwähnten Problemen.
Kellerkind, hattest du das Thema auch mal und wie gehst du damit um? Ich habe die Werte halt manuell nachgezogen, aber das kann man ja auch nicht immer machen.
Danke
Daniel
- KellerK1nd
- Beiträge: 432
- Registriert: 17. Jun 2019 16:45
- Wohnort: Griesheim
Re: Shelly Verbrauchswerte Speichern
mmmhhhh....
Das würde ich dann bei system started abfangen. Mach doch einfach ein Proxyitem welches immer nur den letzten Wert speichert.
Das ganze könnte dann so aussehen:
Der erste Teil der Rule, fängt einen ungültigen Zustand des Shellys ab, die Rule arbeitet nur wenn der auch wirklich ein gültiger Zahlenwert ankommt.
So damit hast du den letzten Wert immer gespeichert, wichtig das Item muss persistiert werden, damit es beim Neustart von openHAB verfügbar ist, denn es ist ein ungebundenes Item.
Jetzt kommt der Neustart:
Das wäre jetzt mal meine Idee. Was diese Rule nicht abfangen kann, ist ein Ausfall beider Systeme... Mir fällt auch kein Weg ein, wie man das bewerkstelligen könnte (Stromausfall z.Bsp.), außer mit Average zu arbeiten, aber das wäre dann mehr raten.
Das würde ich dann bei system started abfangen. Mach doch einfach ein Proxyitem welches immer nur den letzten Wert speichert.
Code: Alles auswählen
Number Shelly_last (gMapdb)
Code: Alles auswählen
rule "Shelly current State speichern"
when
Item Shelly changed
then
if(!(Shelly.state instanceof Numbers)){
logWarn("Shelly","liefert keinen gültigen Zahlenwert.")
return;
}
var previouskwh = (Shelly.state as Number).floatValue()
Shelly_last.postUpdate(previouskwh)
end
So damit hast du den letzten Wert immer gespeichert, wichtig das Item muss persistiert werden, damit es beim Neustart von openHAB verfügbar ist, denn es ist ein ungebundenes Item.
Jetzt kommt der Neustart:
Code: Alles auswählen
rule "System gestartet"
when
System started
then
var Shelly_old = Shelly_last.state as Number
var Shelly_new = Shelly.state as Number.floatValue()
var Number Shelly_delta = Shelly_new - Shelly_old
if(Shelly_delta >= 0){ //Nur wenn das Delta im positiven Zahlenbereich ist
Shelly_delta.postUpdate(Shelly_new - Shelly_old)
}
end
Betriebssystem: Proxmox 7.3-4
openHAB Container: debian11 LXC
openHAB Version: 3.4
Hardware: HomeServer Eigenbau mit einem Intel i5 9600K
Smarthome-Equipment:
- Rasperrymatic
- deConz
- HUE
- Shellys
- Mosquitto
- AVM Fritz!Box
openHAB Container: debian11 LXC
openHAB Version: 3.4
Hardware: HomeServer Eigenbau mit einem Intel i5 9600K
Smarthome-Equipment:
- Rasperrymatic
- deConz
- HUE
- Shellys
- Mosquitto
- AVM Fritz!Box
- PeterA
- Beiträge: 1052
- Registriert: 8. Feb 2019 12:12
Re: Shelly Verbrauchswerte Speichern
Achtung "System Started" wird aber auch "getriggert" wenn man eine "Items" Datei Speichert...
- OpenHab 2.4
#PWRUP
#PWRUP
- KellerK1nd
- Beiträge: 432
- Registriert: 17. Jun 2019 16:45
- Wohnort: Griesheim
Re: Shelly Verbrauchswerte Speichern
Zumindest wenn man neue anlegt oder? Naja, ist ja in dem Fall nicht ganz so schlimm, es wird ja nur das Delta ermittelt, man kann das ja dann noch gegenchecken.
Betriebssystem: Proxmox 7.3-4
openHAB Container: debian11 LXC
openHAB Version: 3.4
Hardware: HomeServer Eigenbau mit einem Intel i5 9600K
Smarthome-Equipment:
- Rasperrymatic
- deConz
- HUE
- Shellys
- Mosquitto
- AVM Fritz!Box
openHAB Container: debian11 LXC
openHAB Version: 3.4
Hardware: HomeServer Eigenbau mit einem Intel i5 9600K
Smarthome-Equipment:
- Rasperrymatic
- deConz
- HUE
- Shellys
- Mosquitto
- AVM Fritz!Box
-
- Beiträge: 23
- Registriert: 14. Dez 2021 20:51
Re: Shelly Verbrauchswerte Speichern
danke für die Idee
Jede Eventualität wird man sowieso nicht abfangen können, aber damit wäre mir sicher schon geholfen. Stromausfall gibt es bei uns eigentlich so gut wie nie - kann mich gar nicht dran erinnern wann einer war. Warum mein Server da vier Stunden offline war, kann ich zwar auch nicht erklären, weil mein 2.5 läuft seit zwei Jahren 24/7 und der Server mit 3.x hat dann öfter mal einen Hänger - aber das ist ein anderes Thema.
Ärgerlich finde ich, dass man diese ganzen Kopfstände eigentlich nur machen muss, weil die Zähler nicht einfach den Gesamtwert immer speichern.
Bei den plugs verstehe ich das ja vielleicht noch irgendwie, aber das die 3em auch mal ihren Wert verlieren ärgert mich wahnsinnig und sollte meiner Meinung nach nicht sein.
Grüße
Daniel
Jede Eventualität wird man sowieso nicht abfangen können, aber damit wäre mir sicher schon geholfen. Stromausfall gibt es bei uns eigentlich so gut wie nie - kann mich gar nicht dran erinnern wann einer war. Warum mein Server da vier Stunden offline war, kann ich zwar auch nicht erklären, weil mein 2.5 läuft seit zwei Jahren 24/7 und der Server mit 3.x hat dann öfter mal einen Hänger - aber das ist ein anderes Thema.
Ärgerlich finde ich, dass man diese ganzen Kopfstände eigentlich nur machen muss, weil die Zähler nicht einfach den Gesamtwert immer speichern.
Bei den plugs verstehe ich das ja vielleicht noch irgendwie, aber das die 3em auch mal ihren Wert verlieren ärgert mich wahnsinnig und sollte meiner Meinung nach nicht sein.
Grüße
Daniel
- udo1toni
- Beiträge: 13948
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Shelly Verbrauchswerte Speichern
Nein, das ist einfach erklärbar.
Der Zähler müsste ja ständig (nicht nur, wenn openHAB danach fragt) aktuell gespeichert werden. Und was nutzen die Hersteller für persistente Daten? Flash Memory. Eine Speicherzelle hat dabei vielleicht einige tausend Schreibzyklen (eher einige hundert), allerdings werden immer Blöcke von Speicherzellen beschrieben, wegen der notwendigen Löschens der alten Werte. Ein immer aktueller Zählerstand im persistenten Speicher würde also die Lebensdauer eines solchen Geräte extrem verkürzen. Die einzig sinnvolle Möglichkeit, damit umzugehen, wäre, einen Puffer mit SRAM einzubauen (SRAM braucht viel weniger Strom als DRAM). Blöderweise kostet SRAM richtig Geld (so ca. Faktor 100 bis 1000), und auch wenn man ja nur wenige Bytes braucht, es also nur um wenige Cent geht, muss da ziemlich viel drumherum entwickelt werden, die Pufferbatterie mit Ladeschaltung wird gebraucht, und was soll das Teil machen, wenn es mal länger ohne Strom ist? Ein Shelly würde dann locker 60 bis 80 EUR kosten statt 20 EUR, wer wäre bereit, diese Summe zu zahlen, nur um ein besseres Zählwerk zu haben?
Die korrekte Lösung wäre also, überhaupt auf den Zähler zu verzichten und stattdessen ausschließlich Zählimpulse weiterzugeben. Fällt der Strom aus, so kann es auch keinen Verbrauch geben. Ist Strom da, so kann ein beteiligter Datensammler die Impulse auch verarbeiten. Handelsübliche Stromzähler arbeiten z.B. mit 1.000 Impulsen pro kWh, man könnte auch gerne 10.000 oder 36.000 Impulse pro kWh umsetzen, das würde einem Datensammler immer noch reichlich Zeit geben, dutzende oder gar hunderte Datenquellen aufzuzeichnen. Blöd halt, dass man sich da mit anderen Herstellern zusammensetzen müsste, um sowas umzusetzen...
Der Zähler müsste ja ständig (nicht nur, wenn openHAB danach fragt) aktuell gespeichert werden. Und was nutzen die Hersteller für persistente Daten? Flash Memory. Eine Speicherzelle hat dabei vielleicht einige tausend Schreibzyklen (eher einige hundert), allerdings werden immer Blöcke von Speicherzellen beschrieben, wegen der notwendigen Löschens der alten Werte. Ein immer aktueller Zählerstand im persistenten Speicher würde also die Lebensdauer eines solchen Geräte extrem verkürzen. Die einzig sinnvolle Möglichkeit, damit umzugehen, wäre, einen Puffer mit SRAM einzubauen (SRAM braucht viel weniger Strom als DRAM). Blöderweise kostet SRAM richtig Geld (so ca. Faktor 100 bis 1000), und auch wenn man ja nur wenige Bytes braucht, es also nur um wenige Cent geht, muss da ziemlich viel drumherum entwickelt werden, die Pufferbatterie mit Ladeschaltung wird gebraucht, und was soll das Teil machen, wenn es mal länger ohne Strom ist? Ein Shelly würde dann locker 60 bis 80 EUR kosten statt 20 EUR, wer wäre bereit, diese Summe zu zahlen, nur um ein besseres Zählwerk zu haben?
Die korrekte Lösung wäre also, überhaupt auf den Zähler zu verzichten und stattdessen ausschließlich Zählimpulse weiterzugeben. Fällt der Strom aus, so kann es auch keinen Verbrauch geben. Ist Strom da, so kann ein beteiligter Datensammler die Impulse auch verarbeiten. Handelsübliche Stromzähler arbeiten z.B. mit 1.000 Impulsen pro kWh, man könnte auch gerne 10.000 oder 36.000 Impulse pro kWh umsetzen, das würde einem Datensammler immer noch reichlich Zeit geben, dutzende oder gar hunderte Datenquellen aufzuzeichnen. Blöd halt, dass man sich da mit anderen Herstellern zusammensetzen müsste, um sowas umzusetzen...
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet