Hallo zusammen,
Ich lese meinen Stromzähler mit einen optisches USB Kabel und einen Script aus.
Er erhalte einige Werte
- Energie (Zählerstand komplett)
- Tarif 1 (Zählerstand Tarif1)
- Tarif 2 (Zählerstand Tarif 2)
Da ich ja immer nur die aktuellen Zählerstand habe würde ich gerne ausrechnen lassen die Differenz der stände ist.
Damit ich sehe wievielt ich dann verbraucht habe. Da ich keine Momentwert vom Zähler bekomme.
Die Daten bekomme ich im Durchschnitt alle 5 Minuten.
Ich habe mir mit Hilfe von aha1805 einen dummy mit ein Readings dafür angelegt
Und das Modul Statistic verwendet
Internals:
NAME dmy_strom
NR 345
STATE Tarif2 11451.764
TYPE dummy
Readings:
2015-01-03 19:52:13 statStateDay Tarif1_17881.915: 00:02:03 Tarif1_17881.915_Count: 71 Tarif1_17881.929: 00:00:02 Tarif1_17881.929_Count: 1 ..........
2015-01-02 23:59:55 statStateDayLast Tarif1_17873.953: 00:01:54 Tarif1_17873.953_Count: 71 Tarif1_17873.962: 00:00:02 Tarif1_17873.962_Count: 1 .........
2015-01-03 19:52:13 statStateMonth Tarif1_17866.405: 00:01:12 Tarif1_17866.405_Count: 50 Tarif1_17866.407: 00:00:02 Tarif1_17866.407_Count: 1 ..........
2014-12-31 23:59:55 statStateMonthLast Tarif1_17863.046: 00:00:01 Tarif1_17863.046_Count: 1 Tarif1_17863.097: 00:00:01 Tarif1_17863.097_Count: ...........
2015-01-03 19:52:13 state Tarif2 11451.764
Helper:
_98_statistics Statistik
Attributes:
room Strom
Internals:
DEF dmy.*
DEV_REGEXP dmy.*
NAME Statistik
NR 349
NTFY_ORDER 10-Statistik
PREFIX stat
STATE Updated stats for: dmy_strom
TYPE statistics
Readings:
2015-01-03 19:50:32 monitoredDevicesdummy dmy_strom
2015-01-03 19:59:55 nextPeriodChangeCalc 2015-01-03 20:59:55
2015-01-03 19:59:55 state Updated stats for: dmy_strom
Fhem:
modulVersion $Date: 2015-01-01 20:35:10 +0100 (Thu, 01 Jan 2015) $
Attributes:
dayChangeTime 00:00
room Strom
Leider komme ich damit jetzt nicht mehr weiter.
Dachte das mir das Modul die Differenz der beiden werte liefert.
Habt ihr für mich einen kleine Denkanstoß wie ich da vorgehen könnte.
Gruß Gerd
http://forum.fhem.de/index.php/topic,24904.msg179738.html#msg179738 (http://forum.fhem.de/index.php/topic,24904.msg179738.html#msg179738)
da du selber scriptest, schau mal ob du damit klar kommst
Auch auf die Gefahr, das ich total daneben liege. Bau dir doch für deinen Dummy ein userReading.
Bei meinen Stromzähler musste ich die 3 Kanäle zusammenbringen.
In deinen Fall müsstest du es halt umbauen.
Sieht bei mir so aus:
attr CM180i userReadings energy_current { (ReadingsVal("CM180i","energy_ch1",0))+(ReadingsVal("CM180i","energy_ch2",0))+(ReadingsVal("CM180i","energy_ch3",0));;;; }
Gruß Volker
Hallo zusammen für die Anregungen,
Habe mich mal mit dem userReadings beschäftigt. Leider habe es nur noch nicht ganz verstanden.
Bekomme alle 5 Minuten den Zählerstand der als reading --> energy z.Bp.: 2015-01-04_22:30:34 dmy_strom energy: 29361.142
mein dummy heißt --> dmy_strom
userReadings
energy_current difference { ReadingsVal("dmy_strom","energy",0);; }, Leistung differential { ReadingsVal("dmy_strom","energy",0);; }
nur leider bekomme ich dazwischen immer wieder eine null.
Was bedeutet die 0 in dem userReadings,
Wie muss ich dies konfigurieren habe ich da was übersehen.
Habe unten mal einen auszug von meine Strom Dummy gestellt.
Gruß und Danke
Gerd
2015-01-04_22:15:24 dmy_strom energy: 29360.973
2015-01-04_22:15:24 dmy_strom energy_current: 0.0390000000006694
2015-01-04_22:15:24 dmy_strom Leistung: 0.000128422415379899
2015-01-04_22:15:24 dmy_strom statEnergy: Hour: 0.206 Day: 21.387 Month: 21.387 Year: 21.387 (since: 2015-01-04_02:14:36 )
2015-01-04_22:15:24 dmy_strom energy_current: 0
2015-01-04_22:20:27 dmy_strom energy: 29361.022
2015-01-04_22:20:27 dmy_strom energy_current: 0.0489999999990687
2015-01-04_22:20:27 dmy_strom Leistung: 0.000161402680177432
2015-01-04_22:20:27 dmy_strom statEnergy: Hour: 0.255 Day: 21.436 Month: 21.436 Year: 21.436 (since: 2015-01-04_02:14:36 )
2015-01-04_22:20:27 dmy_strom energy_current: 0
2015-01-04_22:25:31 dmy_strom energy: 29361.073
2015-01-04_22:25:31 dmy_strom energy_current: 0.0509999999994761
2015-01-04_22:25:31 dmy_strom Leistung: 0.000168071014252932
2015-01-04_22:25:31 dmy_strom statEnergy: Hour: 0.306 Day: 21.487 Month: 21.487 Year: 21.487 (since: 2015-01-04_02:14:36 )
2015-01-04_22:25:31 dmy_strom energy_current: 0
2015-01-04_22:30:34 dmy_strom energy: 29361.142
2015-01-04_22:30:34 dmy_strom energy_current: 0.0689999999995052
2015-01-04_22:30:34 dmy_strom Leistung: 0.000227344851568683
2015-01-04_22:30:34 dmy_strom statEnergy: Hour: 0.375 Day: 21.556 Month: 21.556 Year: 21.556 (since: 2015-01-04_02:14:36 )
2015-01-04_22:30:34 dmy_strom energy_current: 0
ZitatBekomme alle 5 Minuten den Zählerstand der als reading --> energy z.Bp.: 2015-01-04_22:30:34 dmy_strom energy: 29361.142
Dann könntest du "meine" Berechnungsvariante benutzen und hier abgucken (http://www.fhemwiki.de/wiki/Stromz%C3%A4hler_und_1-Wire,_OWServer,_OWDevice) weiter unten bei "Berechnen, Loggen und Plotten von Strom- und Gasverbrauchswerten"
Gruß
Frank
Also vielen Dank für euere Infos.
@fiedel deine Option die Teste ich auch noch aus vielleicht ist dies dann sogar besser .. Aber noch am anpassen .... ??? :o
Soweit funktioniert es auch recht gut. ;D
define dmy_strom dummy
attr dmy_strom event-min-interval energy_current:180,Leistung:180
attr dmy_strom room Strom
attr dmy_strom setList setreading
attr dmy_strom userReadings energy_current difference { ReadingsVal("dmy_strom","energy",0);;;; }, Leistung differential { ReadingsVal("dmy_strom","energy",0);;;; }
define fl_strom FileLog ./log/Strom_aha-%Y-%m.log dmy_strom:.*
attr fl_strom room Strom
define Statistik statistics dmy.*
attr Statistik dayChangeTime 00:00
attr Statistik room Strom
Nur ich bekomme ab und zu eine Reading von von energy_current=0 >:(
Wegen dem Modul Statistic.
Jetzt meine Fragen kann man das irgendwie verhinder readings mit 0 ins log geschrieben wird.
Durch diesen Attribut habe ich es schon minimiert
attr dmy_strom event-min-interval energy_current:180,Leistung:180
Gruß und Danke :)
Was für einen Wert liefert Dir energy_current und wer liefert Dir diesen Wert? Im Grunde bedeutet energy_current ja nur dass es aktuell bei Dir dunkel sein sollte und dein Rechner gerade eben auf Akkubetrieb läuft. Ich nehme jetzt einfach mal an dass es sich um elektrische Energy (der Name suggeriert es) mit der Einheit kWh handelt.
Dann ist mir beim Studieren der Commandref aufgefallen dass beim differential durch die Anzahl der vergangenen Sekunden dividiert wird. d.h., wir hätten dann einen Wert kWh/s, demnach müsste man hier noch einen Korrekturfaktor (3600) mit einfliessen lassen und hätte dann aber die elektrische Leistung in kW.
Oder habe ich hier was falsch verstanden?
Hey DerFrickler,
Ach ja (peinlich) bei differential hab ich das voll vergessen. Da hast du recht. Das ist leider nur kwh/s.
Also ich lesen meinen Stromzähler aus. Ich bekomme leider immer nur den aktuellen Zählerstand zurück geliefert. Der hat die Reading Variable energy.
Bei dem Modul statistic gibt es die Variable energy_current. Der daraus eine Statistik macht. Das heißt der rechnet mit die Differenz zwischen den ausgelesen readings von energy aus.
Soweit so gut. Das macht er unmittelbar nach dem der reading an fhem übermittelt worden ist. Ich habe ihn schon zeitlich minimiert wann er das machen darf. Alle (180 Sekunden)
Jetzt kommt das Problem sobald ein neues Reading an fhem übermittelt wir schlägt auch das Attribut userreadings zu. Und bei der Berechnung der Statistikwerte zu jeder vollen Stunde werden dann die Reading neu geschrieben. Aber in der Zwischenzeit ist kein neuer Zählerstand eingelesen worden. Dadurch werden für current_energy und Leistung immer der Wert dann 0 erzeugt.
Wie kann ich das verhindern oder steuern das die userreadings nur erzeugt wenn auch das Reading energy kommt.
Danke für die Hilfe.
Gruß Gerd
Gesendet von meinem iPad mit Tapatalk
define dmy_strom dummy
attr dmy_strom event-min-interval energy_current:180,Leistung:180
attr dmy_strom room Strom
attr dmy_strom setList setreading
attr dmy_strom userReadings energy_current difference { ReadingsVal("dmy_strom","state",0);;;; }, Leistung differential { ReadingsVal("dmy_strom","state",0);;;; }
auf ein event-on-change-reading kann man hier sicherlich verzichten, da man immer von einem veränderten Zählerwert ausgehen kann... es sei denn du betreibst mehrere USVs die im Falle eines Black-Outs deine Netzwerkinfrastruktur weiter betreiben
Du definierst ein notify auf dein Device und dem relevanten Reading, das dir die Energiewerte liefert.
define notify.<mein Device>.energy notify <mein Device und das Reading welches den Messwert enthält>.* set dmy_strom $EVTPART1
D.h., das Reading state von dmy_strom enthält jetzt deinen aktuellen Zählerstand... ändert sich jetzt der Zählerstand (respektive der state), ändern sich auch die beiden userReadings.
die userReadings energy_current und Leistung enthalten jetzt Deine Werte, die eigentlich nur dann aktualisiert werden, wenn auch ein neuer Messwert übertragen wird. Demnach sollte keiner der Werte jemals noch eine 0 enthalten. Es sei denn (wie oben angedeutet) deine Netzwerkinfrastruktur übersteht auch einen Blackout und der Zähler zählt wirklich nichts innerhalb der Messperiode. Dann ist der Wert 0 aber auch richtig.
Und jetzt kommen wir zu der Frage was du erreichen willst... beide Tarife einzeln oder einen gesamten oder alles zusammen?
bei "alles zusammen" würde ich wie folgt vorgehen:
define dmy_strom dummy
attr dmy_strom room Strom
attr dmy_strom userReadings (der Übersicht halber liste ich jetzt mal die readings nicht syntaxgerecht auf)
energy_current_total
energy_current_tarif1
energy_current_tarif2 (alle 3 userReadings werden über ein jeweiliges Notify beschrieben)
delta_total difference { ReadingsVal("dmy_strom","energy_current_total",0);;;; }
delta_tarif1 difference { ReadingsVal("dmy_strom","energy_current_tarif1",0);;;; }
delta_tarif2 difference { ReadingsVal("dmy_strom","energy_current_tarif2",0);;;; }
über das Attribut stateFormat könnte man dann durchaus das Internal STATE noch schön mit den berechneten Werten herrichten um es dann anzeigen zu lassen.
delta_total, delta_tarif1 und delta_tarif2 werden dann ins Log-File geschrieben bzw. in die Statistik eingelesen... wie auch immer das dann geschieht.
Anmerkung meinerseits: Um sicherzugehen dass nicht ein ReadingsVal dir über den "default" eine 0 beschert, würde ich den Default-Wert in ReadingsVal einfach mal auf einen Fantasiewert setzen, den Du sofort im Log erkennen kannst.. z.B. "0110010001110101011011010110110101111001" ;) kannst den Wert ja mal umrechnen in ASCII.
EDIT: Die Idee mit dem kombinierten dummy wird so nicht funktionieren weil... ein Messwert geht ein und erzeugt ein Event, z.B. Tarif1, was passiert dann mit den anderen userReadings... werden die auch neu berechnet? Würde man dann grundsätzlich 0 Werte erzeugen weil sich ja mit dem Event für Tarif1 der Wert für Tarif2 noch nicht geändert hat? Kannst es ja mal ausprobieren und wenn es nicht klappt dann definierst du halt 3 dummies.
aber grundsätzlich sollte die Kausalkette wie folgt aussehen: Ein Messwert wird generiert und ein Event vom Device ausgelöst -> ein notify erkennt das event und schreibt den Value in das Reading state vom dummy -> wir gehen davon aus dass der Value grundsätzlich verschieden ist, ist er nicht verschieden, dann ist der Wert 0 korrekt oder der Zähler defekt -> das Reading state vom dummy ändert sich und führt dazu dass das userReading (oder die userReadings) neu ermittelt wird -> die Änderung des userReadings generiert ein Event was dann von einem Log-File oder von statistics erkannt wird ... und...und...und...
Danke Dir DerFrickler,
Das ist eine sehr gute Idee ....
Sieht soweit so gut aus.
energy_current difference { ReadingsVal("dmy_strom","state",0);; }, Leistung differential { ReadingsVal("dmy_strom","state",0)*3600;; }
define notify.dmy_strom.energy notify dmy_strom:energy:.* set dmy_strom $EVTPART1
ich bekomme auch im Status die erwünschten readings.
Nur leider weiß ich nicht warum in der log datei bei energy_current immer 0 drin steht aber in der reading Übersicht vom FHEM steht es richtig drinnen :o ???
Da muss ich morgen mal (heute abend) nochmals genau schauen.
Gruß Gerd
Und die Binär Code ist ein dummy :-)
Danke vorerst .. wird wenn ich ausgeschlafen bin nochmals getestet.
das hier:
Internals:
CFGFN
NAME test.energiebedarf
NR 203
STATE Zählerstand 54500 Wh
TYPE dummy
Readings:
2015-01-09 11:16:49 Energie 1
2015-01-09 11:16:49 Leistung 23.9440531098403
2015-01-09 11:16:49 Zaehlerstand 54500 Wh
2015-01-09 11:16:49 state 54500
Attributes:
room Test
stateFormat {sprintf("Zählerstand %.0f Wh",ReadingsVal($name,"state",0))}
userReadings Zaehlerstand {sprintf("%.0f Wh",ReadingsVal($name,"state",0))}, Energie difference {ReadingsVal($name,"state",0)}, Leistung differential {ReadingsVal($name,"state",0)*3600}
zusammen mit dem hier:
Internals:
CFGFN
DEF FBDECT_20000:energy:.* set test.energiebedarf $EVTPART1
NAME notify.test.energiebedarf
NOTIFYDEV FBDECT_20000
NR 204
NTFY_ORDER 50-notify.test.energiebedarf
REGEXP FBDECT_20000:energy:.*
STATE 2015-01-09 11:19:20
TYPE notify
Attributes:
room Test
und dem hier:
Internals:
CFGFN
DEF ./log/TestEnergiebedarf.log test.energiebedarf.*
NAME fl.test.energiebedarf
NR 205
NTFY_ORDER 50-fl.test.energiebedarf
REGEXP test.energiebedarf.*
STATE active
TYPE FileLog
currentlogfile ./log/TestEnergiebedarf.log
logfile ./log/TestEnergiebedarf.log
Attributes:
room Test
liefert folgenden Output:
2015-01-09_11:16:50 test.energiebedarf 54500
2015-01-09_11:16:50 test.energiebedarf Zaehlerstand: 54500 Wh
2015-01-09_11:16:50 test.energiebedarf Leistung: 23.9440531098403
2015-01-09_11:16:50 test.energiebedarf Energie: 1
2015-01-09_11:19:20 test.energiebedarf 54501
2015-01-09_11:19:20 test.energiebedarf Zaehlerstand: 54501 Wh
2015-01-09_11:19:20 test.energiebedarf Leistung: 23.9004200071221
2015-01-09_11:19:20 test.energiebedarf Energie: 1
Wichtig ist natürlich dass energy nur gesendet wird wenn auch Änderungen erfolgt sind, was bei einem Zähler am Hausanschluss sicherlich kein Problem sein sollte. So nebenbei beachte man auch bitte dass bei mir der Wert in Wh geliefert wird.
Zaehlerstand ist dann (wie der Name schon sagt) der aktuelle Zählerstand
Leistung die zuletzt ermittelte Leistung aus den Energiewerten. Im Grunde ist dieser Wert unsinnig, da eine Leistungsmessung eine Momentaufnahme sein sollte und nicht aus Zeitwerten ermittelt wird; möglicherweise wurde der hier berechnete Wert innerhalb der Messperiode nicht mal über einen repräsentativ langen Zeitraum erreicht. D.h., es würde nur dann ein sinnvoller Wert bei rauskommen wenn der Energiebedarf wirklich über dem Zeitraum konstant ist, was dann wohl eher theoretischer Natur ist. Bei meinen doch recht kleinen Werten weicht er grundsätzlich um 1,1 W ab. Hier passt hier dann irgendwie die Aussage: Wer misst misst Mist
Aber: Hier bin ich eher der Theoretiker der schon bei der Bezeichnung "Stromverbrauch" Plaque auf den Zähnen bekommt. Wenn es in der Praxis und im Volksmund anders gehandhabt wird, dann bitte.
Energie ist dann halt das Delta des Energiebedarfs über den Messzeitraum.
Fazit: Keine 0-Werte im Log! Das wars ja was du erreichen wolltest.
Ich interpretiere hier mal einfach das was in der commandref von statistics steht.
Ein Energieverbrauch (Zählerstand) muss als "deltareading" ausgewertet werden.
Wenn statistics das einzelne Reading nicht automatisch kennt und zuordnet, muss es explizit in dem entsprechenden Attribute angegeben werden.
z.B. "attr ... deltaReadings energy_current_total,energy_current_tarif1,energy_current_tarif2"
Wenn statistics kein Reading zuordnen kann, wertet es standardmässig den "state" als Duration aus.
statistics kann auch nicht ein einzelnes Reading aus einem Sammelreading extrahieren.
was man da so alles rauslesen kann ;)
bezogen auf die Inputdaten energy, Tarif1 und Tarif2 würde meines Erachtens für statistics eh nur ein Delta im Zusammenhang mit delta Readings (falls man das Delta aller Reading bestimmen möchte) oder auch singularReadings (dann halt für einzelne Readings) in Frage kommen. Min/Avg/Max gibt ja nur Startwert, Endwert und Mittelwert des Messzeitraums, Tendenz sollte naturgemäss steigend sein und da wir keine Zustände haben (abgesehen von zuViel ;D) macht Duration auch keinen Sinn.
demnach sollte das obige Verhalten auch über das statistics Modul mit dem Attribut singularReadings und dem Wert <device>:energy:Delta:Hour realisierbar sein, wobei hier das device nicht erst der dummy sein muss, sondern gleich der Stromzähler.
mal abwarten, für meine FBDECT gibt es dann in knapp 1 Stunde hoffentlich die ersten Werte.
Zu der Definition von Statistics selbst...
<GeräteNameRegExp>
Regulärer Ausdruck für den Gerätenamen. !!! Nicht die Gerätewerte !!!
gemäß den Beispiel in der Commandref habe ich folgendes eingegeben: define statistics.test.energiebedarf01 statistics FBDECT_2000
diese Definition "wartet sich jetzt nen Wolf..." Waiting for notifications. Allem Anschein nach passiert erst etwas wenn man dem FBDECT_2000 ein .* hinzufügt.
Noch mal eine Anmerkung: Falls das Stromzähler Device selbst auch userReadings zulässt und man lediglich Daten zum "loggen" bereitstellen will, kann man prinzipiell auch auf den Umweg mit dem Dummy verzichten und die userReadings im Stromzähler Device integrieren.
Zitat von: DerFrickler am 09 Januar 2015, 14:37:39
gemäß den Beispiel in der Commandref habe ich folgendes eingegeben: define statistics.test.energiebedarf01 statistics FBDECT_2000
diese Definition "wartet sich jetzt nen Wolf..." Waiting for notifications. Allem Anschein nach passiert erst etwas wenn man dem FBDECT_2000 ein .* hinzufügt.
Das wundert mich. Kann ich mal ein list von statistics und vom FB_DECT_2000 sehen?
singularReadings dient nur der Markierung von Readings die
zusätzlich einzeln aufgeführt werden sollen. DeltaReadings ist trotzdem notwendig. Plots kann man auch aus Sammelreadings bilden. Man muss es dann über reguläre Ausdrücke aufspalten.
Hallo zusammen,
Habe mein statisic modul so konfiguriert
Internals:
DEF dmy.*
DEV_REGEXP dmy.*
NAME Statistik
NR 346
NTFY_ORDER 10-Statistik
PREFIX stat
STATE Updated stats for: dmy_strom
TYPE statistics
Readings:
2015-01-08 23:02:05 monitoredDevicesdummy dmy_strom
2015-01-09 13:59:55 nextPeriodChangeCalc 2015-01-09 14:59:55
2015-01-09 14:38:01 state Updated stats for: dmy_strom
Fhem:
modulVersion $Date: 2015-01-01 20:35:10 +0100 (Thu, 01 Jan 2015) $
Attributes:
dayChangeTime 00:00
room Strom
In der Command ref steht das readings energy_current und energy unterstützt wird ohne groß was zu ändern.
Es unterscheidet in vier Statistik-Typen denen bereits standardmässig Gerätewerte zugeordnet sind:
Min|Avg|Max Minimum, Durchschnitt und Maximum von Momentanwerten:
über den Zeitraum Tag, Monat und Jahr:
brightness, current,[b] energy_current[/b], humidity, temperature, voltage
über den Zeitraum Stunde, Tag, Monat und Jahr:
wind, wind_speed, windSpeed
Delta Differenz zwischen Anfangs- und Endwerte innerhalb eines Zeitraums (Stunde, Tag, Monat, Jahr):
count, energy, energy_total, power, total, rain, rain_rate, rain_total
energy --> Zählerstand als reading durch das externe Script mit
setreading dmy_strom energy variable
energy_current --> Unterschied zählerstand = userReadings energy_current difference..... den Unterschied.
Listing von meinen dummy
Internals:
NAME dmy_strom
NR 344
STATE 29417.320
TYPE dummy
Readings:
2015-01-09 14:53:12 Leistung 0.284769418084352
2015-01-08 23:53:40 Version B150100
2015-01-09 14:53:12 energy 29417.320
2015-01-09 14:53:12 energy_current 0
2015-01-09 14:53:12 statEnergy Hour: 0.209 Day: 5.212 Month: 55.551 Year: 55.551 (since: 2015-01-05 )
2015-01-09 13:59:55 statEnergyLast Hour: 0.430 Day: 17.558 Month: - Year: -
2015-01-09 14:53:12 statEnergy_currentDay Min: 0.00000000000000000 Avg: 0.02799731328241071 Max: 0.13500000000203699
2015-01-08 23:59:55 statEnergy_currentDayLast Min: 0.00000000000000000 Avg: 0.05835877314813889 Max: 0.39700000000084401
2015-01-09 14:53:12 statEnergy_currentMonth Min: 0.00000000000000000 Avg: 0.03697583296683897 Max: 0.54100000000107695 (since: 2015-01-04_02:14:36 )
2015-01-09 14:53:12 statEnergy_currentYear Min: 0.00000000000000000 Avg: 0.03697599845866562 Max: 0.54100000000107695 (since: 2015-01-04_02:14:36 )
2015-01-09 14:53:12 state 29417.320
Helper:
_98_statistics Statistik
Attributes:
event-min-interval energy_current:250,Leistung:250
room Strom
userReadings energy_current difference { ReadingsVal("dmy_strom","energy",0);; }, Leistung differential { ReadingsVal("dmy_strom","energy",0)*3600;; }
Das mit dem status und dem notify ist eine sehr gute idee. Aber leider schreibt er mir den status den ich in meine Dummy bekomme nicht in das log file.
wenn ich aber manuell das mache mit set dmy_strom 12343 dann steht es schon im log drinnen. Ich bekomme auch die readings (state).
Zuhause forsche ich dann noch weiter .....
Vielen DANKE nochmals .....
Ja die DECT 200 sind ein gutes Versuchsopjekt da habe ich auch 3 ....
Internals:
CFGFN
DEF dmy_strom:energy:.* set dmy_strom $EVTPART1
NAME notify.dmy_strom.energy
NOTIFYDEV dmy_strom
NR 398
NTFY_ORDER 50-notify.dmy_strom.energy
REGEXP dmy_strom:energy:.*
STATE 2015-01-09 14:58:16
TYPE notify
Attributes:
room Strom
Internals:
DEF ./log/Strom_aha-%Y-%m.log dmy_strom:.*
NAME fl_strom
NOTIFYDEV dmy_strom
NR 345
NTFY_ORDER 50-fl_strom
REGEXP dmy_strom:.*
STATE active
TYPE FileLog
currentlogfile ./log/Strom_aha-2015-01.log
logfile ./log/Strom_aha-%Y-%m.log
Pos:
Attributes:
room Strom
die logs direkt unter FHEM
2015-01-09 15:13:26 dummy dmy_strom energy: 29417.481
2015-01-09 15:13:26 dummy dmy_strom energy_current: 0.0339999999996508
2015-01-09 15:13:26 dummy dmy_strom Leistung: 0.40310109631403
2015-01-09 15:13:26 dummy dmy_strom statEnergy: Hour: 0.125 Day: 5.373 Month: 55.712 Year: 55.712 (since: 2015-01-05 )
2015-01-09 15:13:26 dummy dmy_strom 29417.481
die Aussage:
Zitat
Zu der Definition von Statistics selbst...
Code: [Auswählen]
<GeräteNameRegExp>
Regulärer Ausdruck für den Gerätenamen. !!! Nicht die Gerätewerte !!!
gemäß den Beispiel in der Commandref habe ich folgendes eingegeben: define statistics.test.energiebedarf01 statistics FBDECT_2000
diese Definition "wartet sich jetzt nen Wolf..." Waiting for notifications. Allem Anschein nach passiert erst etwas wenn man dem FBDECT_2000 ein .* hinzufügt.
nehme ich mal zurück... Beim Namen des Gerätes hatte ich eine "0" vergessen, klar dass dann die Definition FBDECT_2000.* dann für FBDECT_20000 anspricht.
dem FBDECT_20000 wurden alle Werte hinzugefügt:
...
Readings:
2015-01-09 04:46:30 control disabled,on fn=1 > 0.00 delay:0sec do:state off
2015-01-09 16:20:14 current 0.1602 A
2015-01-09 16:20:15 energy 54615 Wh
2015-01-09 04:46:30 options powerOnState:last,lock:webUi,remoteFB,button
2015-01-09 16:20:15 power 22.67 W
2015-01-09 16:18:42 powerFactor 614.000
2015-01-09 16:20:14 statCurrentDay Min: 0.1530 Avg: 0.1573 Max: 0.1619 (since: 2015-01-09_14:14:52 )
2015-01-09 16:20:14 statCurrentMonth Min: 0.1530 Avg: 0.1573 Max: 0.1619 (since: 2015-01-09_14:14:52 )
2015-01-09 16:20:14 statCurrentYear Min: 0.1530 Avg: 0.1573 Max: 0.1619 (since: 2015-01-09_14:14:52 )
2015-01-09 16:20:14 statEnergy Hour: 8 Day: 48 Month: 48 Year: 48 (since: 2015-01-09_14:14:51 )
2015-01-09 15:59:55 statEnergyLast Hour: 23 Day: - Month: - Year: -
2015-01-09 16:20:14 statPowerDay Min: 22.53 Avg: 22.85 Max: 23.60 (since: 2015-01-09_14:14:52 )
2015-01-09 16:20:14 statPowerMonth Min: 22.53 Avg: 22.85 Max: 23.60 (since: 2015-01-09_14:14:52 )
2015-01-09 16:20:14 statPowerYear Min: 22.53 Avg: 22.85 Max: 23.60 (since: 2015-01-09_14:14:52 )
2015-01-09 16:20:14 statVoltageDay Min: 231.998 Avg: 234.000 Max: 235.101 (since: 2015-01-09_14:14:52 )
2015-01-09 16:20:14 statVoltageMonth Min: 231.998 Avg: 234.000 Max: 235.101 (since: 2015-01-09_14:14:52 )
2015-01-09 16:20:14 statVoltageYear Min: 231.998 Avg: 234.000 Max: 235.101 (since: 2015-01-09_14:14:52 )
2015-01-09 16:18:43 state on
2015-01-09 16:20:14 voltage 233.252 V
Helper:
_98_statistics statistics.test.energiebedarf02
Attributes:
...
@Inputsammler, hast Du jetzt ausreichend Input um den gewünschten Output zu generieren? Immerhin sollten es jetzt ja 2 Alternativen sein um zumindest den Verbrauch zu "loggen". Nebenbei würde ich dir aber auch gleich empfehlen auf DbLog zu setzten. Die Performance wird es dir (zumindest in der Zukunft) danken.
Hallo zusammen,
Danke an euch alle.
Ich habe durch eure Hilfe einen Weg gefunden wie ich meinen Stromzähler und das statistic Modul verwenden kann.
Vorgehensweise:
Das Script erzeugt auf meinen dummy_strom ein reading Status mit dem Zählerstand.
Dabei wird mit userreading der Zählerstand und die Unterschiede der einzielen Zählerstände berechnet und gerundet.
define dummy_strom dummy
attr dummy_strom userReadings energy { ReadingsVal($name,"state",0)}, Verbrauch difference {ReadingsVal($name,"state",0)}, Hochrechnung differential {ReadingsVal($name,"state",0)*3600},energy_current { use Math::Round qw/nearest/;; nearest('0.0001', ReadingsVal($name,"Verbrauch",0));; },Leistung { use Math::Round qw/nearest/;; nearest('0.0001', ReadingsVal($name,"Hochrechnung",0));; }
mit 3 notify übergeb ich es an ein neues dummy damit die userreadings nicht immer neu erzeugt werden.
define notify.dmy_strom.energy notify dummy_strom:energy:.* setreading dmy_strom energy $EVTPART1
define notify.dmy_strom.energy_current notify dummy_strom:energy_current:.* setreading dmy_strom energy_current $EVTPART1
define notify.dmy_strom.Leistung notify dummy_strom:Leistung:.* setreading dmy_strom Leistung $EVTPART1
Strom
Dadurch bekomme ich eine wunderbare statistik und schönde gerundete Werte.
... so und nun auf zum DBLOG --->
Danke euch nochmals
Gruß Gerd