Seite 3 von 4
Re: Shelly Stromverbrauch bei Stromausfall sichern
Verfasst: 24. Nov 2020 20:26
von PeterA
Also,
meine derzeitige Rule sieht wie folgt aus:
Code: Alles auswählen
rule "Shelly25_01 kWh"
when
Item Shellyswitch25_745118_energy received update
then
Shellyswitch25_745118_kWh.
postUpdate(Shellyswitch25_745118_energy.state as DecimalType / 60000)
end
Die macht erst mal nix anderes als den Wert den der Shelly (über Mqtt angebunden) in das Item _energy schreibt in kWh um zu rechnen.
Und das Item _kWh persistiere ich dann mit rrd4j.
Nach einem Stromausfall z.b setzt sich dieser Zähler auf Null und würde dann im Chart auch wieder bei Null beginnen und langsam wieder steigen.
Wie sähe denn eine "Auffsummierungs" rule aus die solche "Rücksetzungen" abfängt ?
Gruß
Peter
Re: Shelly Stromverbrauch bei Stromausfall sichern
Verfasst: 25. Nov 2020 14:32
von Detlef
Hallo
nach langen hin und her wird der momentan Stromverbrauch aufgerechnet.
Habe noch ein Problem bezüglich der 0 in der Rules vom Udo!! Ich habe aus der 0 die 0,0 gemacht, da die rrd4j Daten mit den Punkt ausliefert.
Code: Alles auswählen
rule "Stromerfassung Pumpe 1 und Pumpe 2 Momentverbrauch übergeben"
when
//Time cron "0 46 18 ? * *"
//Item Gartenpumpe_1_Momentverbrauch received update or
Item Gartenpumpe_2_Momentverbrauch received update // MomentverbrauchP1
then
val Number nStrom1 = if(Gartenpumpe_1_Momentverbrauch.state instanceof Number) (Gartenpumpe_1_Momentverbrauch.state as Number).floatValue else 0.8
val Number nStrom2 = if(Gartenpumpe_2_Momentverbrauch.state instanceof Number) (Gartenpumpe_2_Momentverbrauch.state as Number).floatValue else 0.0
Strom_Pumpe_moment.postUpdate(nStrom1 + nStrom2)
end
Zum Problem 1 ".floatValue else 0.0" habe die 0 auf 0.0 in der Rules geändert. Jetzt wird erstmal aufgerechnet.
Zum problem 2 im 2. Item " Item Gartenpumpe_1_Momentverbrauch " ist ein ständiger verbrauch von 0.8 Watt bis 0.9 Watt.
Den ständigen verbrauch von 0.8 braucht nicht berücksichtigt werden. Der verbrauch kann aber auch auf 1.5 Watt steigen.
Dies könnte ein Bewegungsmelder mit der Beleuchtung sein.
Frage Das " .floatValue else 0.8 ändern??" oder 0.0
Danke Udo läuft so langsam aber sicher.
Wenn jetzt am Shelly ein Stromausfall ist habe ich den Stromverbrauch.
Wie lange wird der Wert in der rrd4j aufgerechnet???
Danke
Code: Alles auswählen
Strategies
{
everyMinute : "0 * * * * ?"
everyHour : "0 0 * * * ?"
everyDay : "0 0 0 * * ?"
default = everyMinute
}
Items
{
Strom_Pump1_Garten: strategy = everyDay,restoreOnStartup // Gesamtwet Stromverbrauch P 1 u.P 2
//Strom_Pumpe_moment.sumSince(AbstractInstant)
//Aufrechnen des Monetverbrauch. Aber wie?????
Strom_Pumpe_moment:strategy = everyMinute, restoreOnStartup
Sommer_Winter: strategy = everyDay, restoreOnStartup
Rule_Betriebsart: strategy = everyDay, restoreOnStartup
EG_Stairwell_Heating: strategy = everyHour, restoreOnStartup
Doris_Bad_Temperatur_Soll_Setpoint: strategy = everyHour, restoreOnStartup
}
Re: Shelly Stromverbrauch bei Stromausfall sichern
Verfasst: 25. Nov 2020 15:16
von udo1toni
rrd4j speichert die Daaten default für ein Jahr. rrd4j macht das in mehreren Stufen, damit sind die Daten in der unmittelbaren Vergangenheit sehr fein aufgelöst, je länger die Messung her ist, desto mehr werte werden zu einem Wert zusammengefasst (Mittelwert, gültig für einen größeren Zeitbereich). Damit gibt es einen Kompromiss zwischen (zeitlicher) Genauigkeit und Speicherbedarf.
Mit sumSince(dateTimeType timestamp) kannst Du die kummulierten Werte anzeigen lassen.
Re: Shelly Stromverbrauch bei Stromausfall sichern
Verfasst: 26. Nov 2020 21:05
von Detlef
Hallo
schade ich habe gedacht das funktionier mit den überbrücken bei Stromausfall am Shelly 1 PM und den Stromverbrauchs Aufzeichnung.
Habe jetzt viel probiert und am Ende kam nicht heraus.
Grüße
Ich werde mir eine andere Lösung für das o.g. Problem suchen.
Ich habe "2 Moment verbrauche" und "2 Gesamtverbräuche" die bei Stromausfall von 0 wieder aufaddieren.
Danke
Re: Shelly Stromverbrauch bei Stromausfall sichern
Verfasst: 30. Nov 2020 15:44
von Detlef
Hallo und guten Tag
brauche nochmals Hilfe bezüglich die RRD4J Daten auslesen.
Zwei Zähler zusammen darstellen funktionier super. Danke
Code: Alles auswählen
rule "Stromerfassung 2 Zähler -Moment- übergabe item Strom_Pumpe_moment"
when
Item Gartenpumpe_2_Momentverbrauch received update
then
val Number nStrom1 = if(Gartenpumpe_1_Momentverbrauch.state instanceof Number) (Gartenpumpe_1_Momentverbrauch.state as Number).floatValue else 0
val Number nStrom2 = if(Gartenpumpe_2_Momentverbrauch.state instanceof Number) (Gartenpumpe_2_Momentverbrauch.state as Number).floatValue else 0
Strom_Pumpe_moment.postUpdate(nStrom1 + nStrom2)
end
Jetzt komme ich an die Daten des Momentverbrauch nicht eingelesen.
Diese Rule -unten- läuft überhaupt nicht. Hatte ich 100 mal geändert und getestet. Kann jemand einen oder zwei Tipps geben.
Daten kommen nicht aus der RRD4J Datenbank.
Code: Alles auswählen
rule "rule Power Gesamt Last"
when
Time cron "0 25 15 ? * *"
then
//Strom_Pumpe_moment_Power.postUpdate (Strom_Pumpe_moment.state as Number)
//Strom_Pumpe_moment_Power.postUpdate (Strom_Pumpe_moment.sumSince.state as Number)
//Strom_Pumpe_moment.sumSince.stat as DecimalType,"rrd4j")
end
Re: Shelly Stromverbrauch bei Stromausfall sichern
Verfasst: 30. Nov 2020 16:35
von udo1toni
Was willst Du denn genau erreichen?
Code: Alles auswählen
rule "rule Power Gesamt Last"
when
Time cron "0 25 15 ? * *"
then
Die Rule triggert exakt um 15:25:00 Uhr, täglich. Soll das so sein?
Code: Alles auswählen
//Strom_Pumpe_moment_Power.postUpdate (Strom_Pumpe_moment.state as Number)
//Strom_Pumpe_moment_Power.postUpdate (Strom_Pumpe_moment.sumSince.state as Number)
//Strom_Pumpe_moment.sumSince.stat as DecimalType,"rrd4j")
end
Nee. So funktioniert das sumSince nicht. Du musst der Methode sumSince schon mitteilen, welchen Zeitraum Du betrachten willst. Der Hinweis, aus welcher Datenbank die Daten kommen sollen(rrd4j) ist schon gut, allerdings gehört auch dieser zur Methode. Der korrekte Aufruf, um die Summe der letzten 24 Stunden aus dem Item Strom_Pumpe_moment in das Item Strom_Pumpe_moment_Power einzutragen, sähe so aus:
Code: Alles auswählen
Strom_Pumpe_moment_Power.postUpdate(Strom_Pumpe_moment.sumSince(now.minusDays(1),"rrd4j"))
Re: Shelly Stromverbrauch bei Stromausfall sichern
Verfasst: 30. Nov 2020 19:09
von Detlef
Danke das läuft wie geschnitten Brot. Die Daten sind aus der RRD4J ausgelesen.
Jetzt nur noch die Feinarbeiten.
Also die erste Rule zählt die Zähler zusammen.
Code: Alles auswählen
rule "Stromerfassung 2 Zähler -Moment- übergabe item Strom_Pumpe_moment"
when
Item Gartenpumpe_2_Momentverbrauch received update
then
val Number nStrom1 = if(Gartenpumpe_1_Momentverbrauch.state instanceof Number) (Gartenpumpe_1_Momentverbrauch.state as Number).floatValue else 0
val Number nStrom2 = if(Gartenpumpe_2_Momentverbrauch.state instanceof Number) (Gartenpumpe_2_Momentverbrauch.state as Number).floatValue else 0
Strom_Pumpe_moment.postUpdate(nStrom1 + nStrom2)
end
Die 2. Rule bringt mir die Gesamtzahl aus der RRD4J.
Code: Alles auswählen
rule "rule Power Gesamt Last"
when
Time cron "0 54 18 ? * *"
then
Strom_Pumpe_moment_Power.postUpdate(Strom_Pumpe_moment.sumSince(now.minusDays(1),"rrd4j"))
end
Die Daten aus der RRD4J brauche ich aber für 365 Tage als Gesamtzahlen. Nicht für 1 Tag.
Ich werde mal das jetzt erst einmal testen und melde mich dann.
Das mit Time cron "0 54 18 ? * *" kann ich jetzt noch nicht beurteilen. Daten sollten nur täglich aktuell sein.
Danke nochmal.
Re: Shelly Stromverbrauch bei Stromausfall sichern
Verfasst: 30. Nov 2020 19:39
von PeterA
Es ist aber auch Richtig:
Wenn ich mit rrd4j die kWh vom Shelly Persistiere, der Shelly nach einem Stromausfall wieder bei Null beginnt ich
mit "sumSince" ebenfalls den Energieverbrauch habe ?
Re: Shelly Stromverbrauch bei Stromausfall sichern
Verfasst: 30. Nov 2020 19:56
von Detlef
Hallo
Ich werte das testen und melde mich.
Wichtig ist den momentanen Verbrauch zu erfassen.
Da gehen die Shelly Zähler immer wieder auf null. Aber die Leistungsdaten werden in der RRD4J geschrieben und erfasst. Und zum Schluss werden eben diese Daten aus der RRD4J nach Wunsch wieder ausgelesen.
Ich werde testen testen und Strom abschalten und melde mich.
Wir aber so schon klappen. Nur ob die Daten genau genug sind ..
Grüße
Re: Shelly Stromverbrauch bei Stromausfall sichern
Verfasst: 30. Nov 2020 23:43
von udo1toni
Wenn Du die Summe immer aktualisiert haben willst, dann wirst Du vermutlich ein Jahr lang immer auf das gleiche Datum verweisen wollen (meinetwegen den 1. Januar des laufenden Jahres). Dann nimmst Du halt nicht now.minusDays(1) sondern new DateTypeType(jahr,monat,tag), die genaue Schreibweise muss ich aber auch nachschauen...
Die Berechnung erfolgt aber potenziell sekundengenau, das heißt: a) der Bezugspunkt muss mit Zeitstempel angegeben werden, wenn man es genau haben will. und b) die Summierung muss natürlich entweder minütlich upgedatet werden oder aber z.B. um Mitternacht., um einen fixen Bezugspunkt zu haben.