Shelly Verbrauchswerte Speichern
Moderator: seppy
-
- Beiträge: 55
- Registriert: 26. Feb 2021 07:38
Re: Shelly Verbrauchswerte Speichern
Hallo, an Kellerkind und Udo
deine Regel ist super, aber wenn ich die Werte des Shelly`s mit den Werten der Regel vergleiche ,dann hat die Regel mehr!
Werte Regel: 1,7 kW/h
Wert Shelly: 1,1 kW/h
bei einem Waschvorgang unserer Waschmaschine!
Gruß Rob
PS: Würdet ihr alle Energieregeln in einer Datei zusammen fassen oder jede seperat!
deine Regel ist super, aber wenn ich die Werte des Shelly`s mit den Werten der Regel vergleiche ,dann hat die Regel mehr!
Werte Regel: 1,7 kW/h
Wert Shelly: 1,1 kW/h
bei einem Waschvorgang unserer Waschmaschine!
Gruß Rob
PS: Würdet ihr alle Energieregeln in einer Datei zusammen fassen oder jede seperat!
- KellerK1nd
- Beiträge: 432
- Registriert: 17. Jun 2019 16:45
- Wohnort: Griesheim
Re: Shelly Verbrauchswerte Speichern
Eventuell wird die Regel zu oft getriggered, dadurch addiert sich dann etwas zu sehr auf.
Meine Regel läuft nur auf dem Change von dem Shelly, das heißt du brauchst für jedes Item eine Regel. Eventuell kann man das aber noch ändern indem man eine Regel schreibt die nur aller 15 Minuten läuft und somit das Delta der letzten 15 Minuten schreibt. Ich kann mich die Woche mal dransetzen, oder Udo ist schneller.
Meine Regel läuft nur auf dem Change von dem Shelly, das heißt du brauchst für jedes Item eine Regel. Eventuell kann man das aber noch ändern indem man eine Regel schreibt die nur aller 15 Minuten läuft und somit das Delta der letzten 15 Minuten schreibt. Ich kann mich die Woche mal dransetzen, oder Udo ist schneller.
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: 317
- Registriert: 29. Okt 2020 19:53
Re: Shelly Verbrauchswerte Speichern
Hallo,
ich wollte bei mir auch diese Rule umsetzten. Leider funktioniert es nicht so richtig. Der von der Rule berechnete Wert steigt exponentiell an. Es wird wohl immer wieder der kWh-Wert aufaddiert.
Ich hab mir deshalb ein logging in meine rule gebaut:
Man sieht dann, dass currentkwh und previouskwh immer gleich sind, woran kann das liegen?
ich wollte bei mir auch diese Rule umsetzten. Leider funktioniert es nicht so richtig. Der von der Rule berechnete Wert steigt exponentiell an. Es wird wohl immer wieder der kWh-Wert aufaddiert.
Ich hab mir deshalb ein logging in meine rule gebaut:
Code: Alles auswählen
val String logPrefix = "Shelly Verbrauch - "
rule "Shelly Plug 1 umrechnen"
when
Item C_Plug_1_shellyplug1_energy changed
then
var Number currentkwh = 0
if(C_Plug_1_shellyplug1_energy.state instanceof Number)
currentkwh = (C_Plug_1_shellyplug1_energy.state as Number).floatValue
var Number previouskwh = 0
if(C_Plug_1_shellyplug1_energy.previousState.state instanceof Number)
previouskwh = (C_Plug_1_shellyplug1_energy.previousState.state as Number).floatValue
var Number energy = 0
logInfo("rules", logPrefix + "currentkwh ({}) previouskwh ({}) ", currentkwh, previouskwh)
if(C_Plug_1_shellyplug1_energykwh.state instanceof Number)
energy = (C_Plug_1_shellyplug1_energykwh.state as Number).floatValue
energy = energy + currentkwh
if((currentkwh - previouskwh) > 0) //Wenn das Delta größer 0 ist
energy = energy - previouskwh
C_Plug_1_shellyplug1_energykwh.postUpdate(energy)
end
Code: Alles auswählen
2021-07-05 18:02:18.066 [INFO ] [org.openhab.core.model.script.rules ] - Shelly Verbrauch - currentkwh (0.6857833) previouskwh (0.6857833)
2021-07-05 18:03:15.180 [INFO ] [org.openhab.core.model.script.rules ] - Shelly Verbrauch - currentkwh (0.6858) previouskwh (0.6858)
2021-07-05 18:04:00.370 [INFO ] [org.openhab.core.model.script.rules ] - Shelly Verbrauch - currentkwh (0.68583333) previouskwh (0.68583333)
Servus
-
- Beiträge: 55
- Registriert: 26. Feb 2021 07:38
Re: Shelly Verbrauchswerte Speichern
Hallo,
Nur eine pauschale Frage .
Würdet ihr mehre Rules in eine Datei schreiben,
oder immer pro Rules eine Datei anlegen!
Hätte dann halt viele Dateien und so nur eine Datei in der viele einzelne Rules hinterlegt sind !
Gruß Rob
Nur eine pauschale Frage .
Würdet ihr mehre Rules in eine Datei schreiben,
oder immer pro Rules eine Datei anlegen!
Hätte dann halt viele Dateien und so nur eine Datei in der viele einzelne Rules hinterlegt sind !
Gruß Rob
-
- Beiträge: 55
- Registriert: 26. Feb 2021 07:38
Re: Shelly Verbrauchswerte Speichern
hey!
Zu Quautiputzli bei mir erscheint im Logfile nur der kW/h Wert!
Gruß Rob
Zu Quautiputzli bei mir erscheint im Logfile nur der kW/h Wert!
Gruß Rob
- KellerK1nd
- Beiträge: 432
- Registriert: 17. Jun 2019 16:45
- Wohnort: Griesheim
Re: Shelly Verbrauchswerte Speichern
Ich habs jetzt mal schnell umgeschrieben:
Aller 15 Minuten wird die Regel getriggert und das Delta der ltzten 15 Minuten für den Shelly ermittelt, anschließend wird dann das Delta plus der alte Wer addiert und im neuen Wert geschrieben. Ist im Grunde das selbe, vielleicht sogar etwas ressourcenschonender da es nicht mit jedem ändern des Wertes getriggered wird und man kann alle Shellies in eine Regel schreiben.
Code: Alles auswählen
rule "alle 15 Minuten"
when
Time cron "0 0/15 * 1/1 * ? *"
then
var Number Shelly10 = (Shelly10Energy.deltaSince(now.minusMinutes(15)).floatValue) /60000
var Number Shelly11 = (Shelly11Energy.deltaSince(now.minusMinutes(15)).floatValue) /60000
var Number Shelly13 = (Server_Consumption.deltaSince(now.minusMinutes(15)).floatValue) /60000
var Number Shelly14 = (GamingServer_Consumption.deltaSince(now.minusMinutes(15)).floatValue) /60000
var Number Shelly15 = (Shelly15Consumption.deltaSince(now.minusMinutes(15)).floatValue) /60000
var Number Shelly19 = (Shelly19Consumption.deltaSince(now.minusMinutes(15)).floatValue) /60000
Shelly10EnergykWh.postUpdate(Shelly10EnergykWh.state as Number + Shelly10)
Shelly11EnergykWh.postUpdate(Shelly11EnergykWh.state as Number + Shelly11)
Server_Consumption_kWh.postUpdate(Server_Consumption_kWh.state as Number + Shelly13)
GamingServer_Consumption_kWh.postUpdate(GamingServer_Consumption_kWh.state as Number + Shelly14)
Shelly15Gesamtverbrauch.postUpdate(Shelly15Gesamtverbrauch.state as Number + Shelly15)
Shelly19Gesamtverbrauch.postUpdate(Shelly19Gesamtverbrauch.state as Number + Shelly19)
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
- udo1toni
- Beiträge: 13864
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Shelly Verbrauchswerte Speichern
Bitte .state as Number grundsätzlich klammern. Also nicht
sondern
Diese Rule wird so funktionieren, ist aber nicht sonderlich elegant. Besser: zwei Group Items anlegen:
Weiterhin die Itemnamen so gestalten, dass sich die Items voneinander ableiten lassen:
Es gibt nun also für jeden Shelly zwei Items, die zueinander gehören und die sich jeweils in einer Gruppe befinden. Nun kann die Rule so aussehen:
Für jedes Item in der Gruppe gShellykWh wird das passende Item aus der Gruppe gShellyConsumption herausgesucht.
Anschließend werden die gleichen Schritte durchgeführt wie in der ursprünglichen Rule.
Wenn Du nun auf die Idee kommst, noch weitere Shelly zu verbauen, musst Du nur darauf achten, die Namenskonventionen einzuhalten und die Items in die passenden Gruppen zu packen. Die Rule kann sich um ein Item genausogut kümmern wie um 5 oder auch 1000, es spielt keine Rolle wieviele Itempaare genutzt werden.
Code: Alles auswählen
Shelly10EnergykWh.postUpdate(Shelly10EnergykWh.state as Number + Shelly10)
Code: Alles auswählen
Shelly10EnergykWh.postUpdate((Shelly10EnergykWh.state as Number) + Shelly10)
Code: Alles auswählen
Group gShellyConsumption
Group gShellykWh
Code: Alles auswählen
Number:Energy Shelly10_Consumption "label..." (gShellyConsumption)
Number:Energy Shelly11_Consumption "label..." (gShellyConsumption)
Number:Energy Server_Consumption "label..." (gShellyConsumption)
Number:Energy GamingServer_Consumption "label..." (gShellyConsumption)
Number:Energy Shelly15_Consumption "label..." (gShellyConsumption)
Number:Energy Shelly19_Consumption "label..." (gShellyConsumption)
Number Shelly10_kWh "label..." (gShellykWh)
Number Shelly11_kWh "label..." (gShellykWh)
Number Server_kWh "label..." (gShellykWh)
Number GamingServer_kWh "label..." (gShellykWh)
Number Shelly15_kWh "label..." (gShellykWh)
Number Shelly19_kWh "label..." (gShellykWh)
Code: Alles auswählen
rule "alle 15 Minuten"
when
Time cron "0 0/15 * * * ?" // alle Viertelstunde
then
gShellykWh.members.forEach[i|
val iSource = gShellyConsumption.members.filter[j|j.name.split("_").get(0) == i.name.split("_").get(0)].head
val Number nDelta = iSource.deltaSince(now.minusMinutes(15)).floatValue) / 60000
i.postUpdate((i.state as Number) + nDelta)
]
end
Anschließend werden die gleichen Schritte durchgeführt wie in der ursprünglichen Rule.
Wenn Du nun auf die Idee kommst, noch weitere Shelly zu verbauen, musst Du nur darauf achten, die Namenskonventionen einzuhalten und die Items in die passenden Gruppen zu packen. Die Rule kann sich um ein Item genausogut kümmern wie um 5 oder auch 1000, es spielt keine Rolle wieviele Itempaare genutzt werden.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet
- udo1toni
- Beiträge: 13864
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Shelly Verbrauchswerte Speichern
Ich habe fast alle Rules in einer Datei. Letztlich ist es Geschmackssache, bis auf ein paar Punkte:
1. globale Variablen können nur innerhalb der Rules verwendet werden, die in der gleichen Datei liegen.
2. je größer die Datei wird, desto länger dauert ein Reload.
3. je größer die Datei wird, desto länger braucht der Server, um die Datei zu checken,
Man wird also in der Praxis insbesondere beim Entwickeln einer Rule evtl. diese Rule zunächst in einer eigenen Datei pflegen, sobald die Rule aber "produktiv" geht, wird sie mit anderen Rules zusammen in eine Datei gepackt. Ab einer bestimmten Größe wird man Rules in mehrere Dateien aufteilen, wobei wobei zusammengehörige Rules natürlich in einer Datei bleiben.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 317
- Registriert: 29. Okt 2020 19:53
Re: Shelly Verbrauchswerte Speichern
Nach dem das mit currentkwh und previouskwh bei mir nicht hinhaut hab ich nun auch auf die "Viertel Studen Rule" umgestellt. Das scheint nun zu funktionieren. Ab und zu gibt es leichte Unterschiede. Der Fehler scheint aber nicht größer zu werden. Ich werde beobachten.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Servus
-
- Beiträge: 55
- Registriert: 26. Feb 2021 07:38
Re: Shelly Verbrauchswerte Speichern
Hallo,
Ich überlege gerade ob es nicht die Möglichkeit gibt die letzten Werte vor dem Reset zuspeichern und zu addieren,
so das ich nur die werte des letzten Werte des Shellys immer addiere !
Gruß Rob69
Ich überlege gerade ob es nicht die Möglichkeit gibt die letzten Werte vor dem Reset zuspeichern und zu addieren,
so das ich nur die werte des letzten Werte des Shellys immer addiere !
Gruß Rob69