Hy
Ich wollte das neue Modul 98_statistics.pm für meinen Stromzähler ausprobieren. Für das auslesen meines Zählers nutzte ich das Module Volkszähler.
Die Definition sieht folgendermaßen aus:
define Statistik_NT statistics NT total
Leider bekommeich folgende Meldung
monitoredDevicesUnsupported NT#VOLKSZAEHLER
Deshalb meine Frage wird das Volkszähler Modul überhaupt unterstütz oder stimmt an meinem Code etwas nicht?
Hallo,
ich mache die statistischen Werte für meine Stromzähler mit average. Der macht etwas ähnliches. Als "Methode" habe ich Counter gewählt. Ich bekomme eine Summe für Monat und Tag, den Durchschnittswert für Monat und Tag und die Anzahl der eingegangenen Werte (eher weniger interessant). Dann habe ich einen at gebaut, der mir die Tageswerte in ein Log schreibt.
Gruß Christoph
Kannst du den Code mal Posten?
Würde ich gerne mal ausprobieren! ;)
Ich hab das Modul average jetzt mal ausprobiert. Leider liefert es nicht die Daten die ich benötige.
Zur Erklärung kurz ich logge jede stunde einmal den Zählerstand.
Nun möchte ich die verbrauchten kw/h statistisch erfassen.
Es müsste nun also die Differenz der Werte erfasst werden
Hallo,
ich setzte den Panstamp nach jedem Senden auf 0. Deshalb klappt das mit average. Es gibt aber noch difference oder differential - das könnte etwas für Dich sein, wenn der Zähler nicht zurückgesetzt wird. Der eine macht nur die Differenz (wie der Name schon sagt). Der differtial teilt die Differenz zwischen den beiden Werten durch die Sekunden zwischen den beiden Zeitstempeln. Ich habe mit beiden noch nicht gearbeitet.
Gruß Christoph
Wie heißt das Reading für das die Statistik erstellt werden soll?
Der "last" Wert
hier noch mal der Wiki eintrag für den Volkszähler
http://www.fhemwiki.de/wiki/Volkszaehler (http://www.fhemwiki.de/wiki/Volkszaehler)
Was stellt dieser Wert denn da?
Am besten Du postest Mal ein "list <device>".
Hallo,
änder doch bitte mal den Titel.
Ein "Satistics Modul" gibt es nicht - wir haben hier hoffentlich keine Satanisten ;D
Ich weiß nicht ob die Suchfunktion das unterscheiden kann, hab ich noch nicht versucht.
Aber auch Anfänger mit dem richtigen Suchbegriff sollten nicht unnötig in die Irre geführt werden ;)
Danke.
Grüße
Ups da ändere ich doch gleich mal den titel ::)
Hier mal die readings von dem Volkszähler modul
Der Wert wird alle Stunde ausgelesen und beinhaltet den Zählerstand in kw/h
@tupol
ist es normal, dass ich jede Stunde im Log 2 Einträge bekomme? Einer würde doch auch reichen!
2014-05-23_09:59:54 B_RGR918 statRain_total: Hour: 0 Day: 2.0 Month: 2.0 Year: 2.0 (since: 2014-05-19 )
2014-05-23_10:00:37 B_RGR918 statRain_total: Hour: 0.0 Day: 2.0 Month: 2.0 Year: 2.0 (since: 2014-05-19 )
Billy
statRain_total wird zu jeder Stunde berechnet und jedes Mal, wenn das Gerät über eine Werteänderung benachrichtigt.
Logs Du den Wert nach jedem update anstatt nach jedem change?
Nach jedem Update sollte man nur für statRain_totalLast nehmen.
Zitat von: tupol am 23 Mai 2014, 14:43:29
statRain_total wird zu jeder Stunde berechnet und jedes Mal, wenn das Gerät über eine Werteänderung benachrichtigt.
Logs Du den Wert nach jedem update anstatt nach jedem change?
Nach jedem Update sollte man nur für statRain_totalLast nehmen.
Ich logge wie folgt:
event-on-change-reading --> statRain_totalLast --> statRain_total
Die Frage ist ja warum er 2mal ins Log schreibt? -->
vermute es liegt am --> Hour: 0 --> Hour: 0.0das wäre ja ein event-on-change!
2014-05-23_13:59:54 B_RGR918 statRain_total:
Hour: 0 Day: 2.0 Month: 2.0 Year: 2.0 (since: 2014-05-19 )
2014-05-23_14:00:19 B_RGR918 statRain_total:
Hour: 0.0 Day: 2.0 Month: 2.0 Year: 2.0 (since: 2014-05-19 )
im Reading steht aber immer
statRain_total:
Hour: 0.0 Day: 2.0 Month: 2.0 Year: 2.0 (since: 2014-05-19 )
Billy
Danke für den Hinweis. Neue Version eingecheckt. Kann morgen runtergeladen werden.
Für andere Nutzer, das Modul braucht nur einmal mit "Regulären Ausdrücken" als deviceName angelegt zu werden. Mehrere "defines" verlangsamen FHEM.
Zitat von: PowderK am 22 Mai 2014, 23:00:37
Hier mal die readings von dem Volkszähler modul
Jetzt bin ich irritiert. Wäre CONSUMPTION nicht der richtige Wert. Das neue Modul enthält jetzt die Attribute "deltaReadings", "durationReadings", "minAvgMaxReadings". Bitte den Readingnamen dort eintragen, testen und mir das Attribut und Resultat mitteilen.
Wäre es möglich, dass jemand mit dem Volkszähler-Modul hier das JSON-File der Middleware publiziert. Ich denke, dass könnte man auch recht einfach in das JSONMETER einbauen. Das würde dann auch zeitabhängige Tarife verarbeiten können und es läuft auf der FB ohne zusätzliche Module.
Zitat von: tupol am 23 Mai 2014, 18:50:14
Danke für den Hinweis. Neue Version eingecheckt. Kann morgen runtergeladen werden.
Hi Tupol
Da gibt es zumindest bei mir noch ein kleines Problem! :-\
Beim Tageswechsel wird um 10 Sec zu früh auf null gesetzt --> 2014-05-25_
23:59:502014-05-25_23:47:24 B_RGR918 statRain_total: Hour: 3.0 Day: 3.0 Month: 9.0 Year: 9.0 (since: 2014-05-23 )
2014-05-25_23:59:50 B_RGR918 statRain_total: Hour: 0.0 Day: 0.0 Month: 9.0 Year: 9.0 (since: 2014-05-23 )
2014-05-25_23:59:50 B_RGR918 statRain_totalLast: Hour: 3.0 Day: 3 Month: - Year: -
Mit dem negativen Effekt, dass der Tageswert im Plot (Label) statt der 3 mm/hr mit null angezeigt wird.
Müsste aus meiner Sicht im Plot z.B. so aussehen. Falls das geht?
2014-05-25_23:47:24 B_RGR918 statRain_total: Hour: 3.0 Day: 3.0 Month: 9.0 Year: 9.0 (since: 2014-05-23 )
2014-05-26_00:00:10 B_RGR918 statRain_total: Hour: 0.0 Day: 0.0 Month: 9.0 Year: 9.0 (since: 2014-05-23 )
2014-05-26_23:59:50 B_RGR918 statRain_totalLast: Hour: 3.0 Day: 3 Month: - Year: -
Billy
Bin mir nicht sicher, ob ich Dich richtig verstanden habe. Aber hast Du die aktuelle commandref gelesen?
◦periodChangePreset <Sekunden>
Start of the calculation of periodical data, default is 5 Sekunden before each full hour,
Allows the correct timely assignment within plots, can be adapted to the cpu load.
Kannst Du im Label nicht besser den Tages-Max-Wert oder noch besser den Last-Wert nehmen? Ein zweiter Aufruf nach 20s verdoppelt die CPU-Load.
Zitat von: tupol am 26 Mai 2014, 16:53:42
Bin mir nicht sicher, ob ich Dich richtig verstanden habe. Aber hast Du die aktuelle commandref gelesen?
Versuche nochmals das Problem zu erklären.
Im augenblicklichen Tagesplot wird im Label alles richtig angezeigt!
z.B Jetzt
Aktuell: 1.0, Tageswert: 16.0 l/m² -- Stundenwert Max 8.0 l/m² -
Wenn ich mit der Pfeiltaste über dem Plot (prev) den Vortag wähle also zurückblättere,
Dann wird angezeigt
Aktuell: 0.0,
Tageswert: 0.0 l/m² -- Stundenwert Max 3.0 l/m²
obwohl der Tageswert ja 3mm war.
Das Label bezieht sich ja immer auf den letzten Ploteintrag !
Wenn ich den Ploteintrag von Hand auf den Wert 10 Sec nach Mitternacht (00:00:10) verändere stimmt alles!
Der Last wert hift mir in Diesem Plot nichts, da er ja den lfd. tag nicht abbildet!
Hoffe das war verständlich.
Billy
Bitte die Wertetypen die Willi in den TRX Modulen definiert hat auch noch hinzufügen, z.B.:
OWL Stromzähler
,["energy_current", 1, 1]
,["energy_total", 2, 3]
Oregon Regen
,["rain_rate", 1, 1]
Oregon Wind
,["wind_speed", 1, 1]
RFXTRX433 Standardgeräte mit String States
,["window", 3, ?]
,["lightsensor", 3, ?]
,["motion", 3, ?]
,["lock", 3, ?]
Es gibt noch einige mehr!
Bitte einfach mal in 46_TRX_ELSE, 46_TRX_LIGHT, 46_TRX_SECURITY, 46_TRX_WEATHER nachsehen.
Zitat von: Billy am 26 Mai 2014, 17:38:02
Im augenblicklichen Tagesplot wird im Label alles richtig angezeigt!
z.B Jetzt
Aktuell: 1.0, Tageswert: 16.0 l/m² -- Stundenwert Max 8.0 l/m² -
Wenn ich mit der Pfeiltaste über dem Plot (prev) den Vortag wähle also zurückblättere,
Dann wird angezeigt
Aktuell: 0.0, Tageswert: 0.0 l/m² -- Stundenwert Max 3.0 l/m²
obwohl der Tageswert ja 3mm war.
Das Label bezieht sich ja immer auf den letzten Ploteintrag !
OK. Dann habe ich Dich doch verstanden. Was zeigst Du denn im Label an_ Korrekter Weise sollte dort $data{max1} für den höchsten Tageswert stehen. Wobei die "1" für die Position im gplot-File steht.
Morgen im update. :-)
Single Delta Werte werden nicht in der DB gespeichert, weshalb da leider noch gar nichts stimmt.
Min/Max/Avg scheint zu funktionieren.
Den Bug in den singularReadings habe ich gestern entdeckt und gefixt. Heute sollte es also nach dem Update funktionieren.
Kannst Du bitte auch noch "statEnergyDayLast" bei den singularReadings fixen, danke (tolles Modul!)
Zitat von: kkoeniger am 27 Mai 2014, 10:13:34
Kannst Du bitte auch noch "statEnergyDayLast" bei den singularReadings fixen, danke (tolles Modul!)
Das sollte eigentlich auch mit dem heutigen Update gefixt sein. Sieht man allerdings erst nach dem dayChange oder in statEnergyHourLast.
Danke, ich werde es morgen beobachten.
Gerade sieht es so aus:
Das Speichern der Delta Werte funktioniert leider immer noch nicht.
Bei mir kommt in der DB nichts an.
edit: für die ...DayLast Werte tauchte um Mitternacht jeweils 0 in der DB auf, stündlich tut sich nichts.
Danke für die anderen Readings!
Seltsam. Bei mir funktioniert es. Hast Du gestern ein update durchgeführt?
Kannst Du nochmal ein "list" beider Geräte einstellen.
PS: DayLast wird natürlich nur um Mitternacht erzeugt. Es sollte jedoch in die DB wandern und dem gestrigen Day-Wert entsprechen.
Zitat von: tupol am 23 Mai 2014, 18:50:14
Für andere Nutzer, das Modul braucht nur einmal mit "Regulären Ausdrücken" als deviceName angelegt zu werden. Mehrere "defines" verlangsamen FHEM.
fuer mehrere Geraete reicht auch ein define? wie kann ich im regulaeren ausdruck wert1 von geraet1 und wert2 von geraet2 erfassen?
danke,
markus
Bitte die commandref lesen. Man gibt nur Gerätewerte an. falls noch nicht geschehen, dann am besten auch mit regulären Ausdrücken beschäftigen. Ist sinnvoll in fhem :-)
Ansonsten geht es einfach mit: device1|device2|device3
danke :)
Zitat von: tupol am 27 Mai 2014, 11:56:55
Das sollte eigentlich auch mit dem heutigen Update gefixt sein. Sieht man allerdings erst nach dem dayChange oder in statEnergyHourLast.
Hallo,
wirklich eine tolle Arbeit die du hier leistest, wie schon beim JSONMETER-Modul. Recht vielen Dank. Ich kreiere bei meinen FritzDect200-Modulen ein "energy_kWh"-Reading wie auch bei meinem LS110 "electricityConsumed_kWh". Könnte dies bitte noch mit aufgenommen werden?
Danke und Gruß rabbe
Danke :)
Da es sehr speziell ist, sollte das über das Attribut "deltaReadings" gelöst werden.
attr <device> deltaReadings energy_kWh,electricityConsumed_kWh
Ist auch bei Anderen das Attribut "singularReadings" seit dem heutigen Update nicht mehr definierbar?
Irgendwie hat es mir alle singularReadings aus der fhem.cfg gelöscht.
Upps. Da ist habe ich versehentlich die Zeile 103 gelöscht.
."singularReadings "
Morgen ist es wieder OK. Für heute vielleicht einfach selber im Modul ändern. :-[
Hi,
Was muss ich eigentlich einstellen, um bei den AVM Teilen einen Stündlichen Mittelwert zu bekommen?
Gruß
Gerd
Ich verstehe die Frage leider nicht.
Ich habe durch
define FBDECT_1000_STAT statistics FBDECT_1000
attr FBDECT_1000_STAT excludedReadings FBDECT_1000:energy
die Statistik für den AVM Adapter aktiviert, durch
attr FBDECT_1000_STAT singularReadings FBDECT_1000:power:Delta:(Hour|Day)
bekomme ich aber keine extra Readings.
Das ist korrekt. power ist kein kumulierter sondern ein Momentan-Wert. Deshalb funktioniert Delta nicht sondern nur Average.
attr FBDECT_1000_STAT singularReadings FBDECT_1000:power:Average:Day
Allerdings habe ich hier Hour nicht vorgesehen, da man aufgrund des Polling-Mechanismus von FBDECT hier besser energy benutzt.
attr FBDECT_1000_STAT singularReadings FBDECT_1000:energy:Delta:Hour
PS: Habe gerade einen bugfix für den Tageswechsel hochgespielt. Tägliche Statistiken sollte ab morgen wieder funktionieren.
Wenn ich "statEnergyLast" aus DbLog auswerten möchte bekomme ich nur den ersten Wert angezeigt.
Die anderen Werte werten unterschlagen.
statEnergyLast Hour: 39 Day: 300 Month: - Year: - (since: 2014-06-05_10:10:10 )
Muss ich jetzt für die anderen Werte Einzelreadings anlegen?
get myDbLog - - 2014-06-05 2014-06-06 FBDECT_1000:statEnergyLast
2014-06-05_14:59:55 20
2014-06-05_15:59:55 22
2014-06-05_16:59:55 21
2014-06-05_17:59:55 29
2014-06-05_18:59:55 35
2014-06-05_19:59:55 30
2014-06-05_20:59:55 115
2014-06-05_21:59:55 58
2014-06-05_22:59:55 59
2014-06-05_23:59:55 51
#FBDECT_1000:statEnergyLast:::
Es liegt an DbLog, es verwirft bei FBDECT alles andere.
So richtig verstehe ich nicht was Du tun willst. Falls es um Plots geht, schau mal nach bei http://forum.fhem.de/index.php/topic,23052.msg165136.html#msg165136 (http://forum.fhem.de/index.php/topic,23052.msg165136.html#msg165136)
Naja, das Reading lautet ja so:
2014-06-06 21:59:55 statEnergyLast Hour: 77 Day: 1383 Month: - Year: -
in der DbLog wurde aber nur:
2014-06-05_21:59:55 77
geloggt, der Rest ist nicht vorhanden.
Und wie man sieht ist da nichts von Day und sw. zu sehen, also kannman auch nichts mehr darstellen.
Das Device ist vom TYPE=FBDECT und wird in der DbLog speziell behandelt.
Edith: Falsch, Es ist alles drin, nur im Value der DB steht nicht alles drin was durch $val ausgewertet wird.
2014-06-06 12:59:55: FBDECT_1000, FBDECT, statEnergyLast: Hour: 63 Day: 300 Month: - Year: - (since: 2014-06-05_10:10:10 ), statEnergyLast, 63, D
Hallo tupol,
da bei mir singularReadings keinen Wert liefert hätte ich bzgl Definition eine Frage. Wie muss es nun korrekt lauten:
CUL_HM_HM_WDS40_TH_I_2513EC:temperature:Average:1h
oder so wie in der commandRef angegeben:
CUL_HM_HM_WDS40_TH_I_2513EC:temperature:Avg:1h
Wobei ich beides ausprobiert habe und weder beim ersten noch beim zweiten einen Wert bekomme.
Ist da noch irgendwo ein Fehler drin? Aber bei anderen Usern scheint es ja auch zu funktionieren. Update von fhem wurde gestern durchgeführt.
Danke
Gruß,
Tino
CUL_HM_HM_WDS40_TH_I_2513EC:temperature:Avg:Day|Month|Year
Werde das in der Commandref mal eindeutiger formulieren.
Hallo,
hierzu habe ich noch eine Frage, warum schreibt es mir nicht die stat* Readings in ein Logfile? Ich habe verschiedene Einstellungen in der DEF für das Logfile durchgeführt, es wird immer nur der State bzw. die setreadings in das File geschrieben. Ist dies so gewollt? Muss ich die stat* Readings erst wieder per notify auslesen um diese dann in ein Logfile schreiben zu können?
Danke
Gruß,
Tino
Also bei mir tut es das. Allerdings ist Deine Frage sehr unspezifisch. Da brauch ich mehr Futter ;-)
Hi,
ja sorry, ich hatte von unterwegs geschrieben und nicht gleich das Beispiel zur Hand ;-) Ich hole es hiermit nach. Ich habe wie in der commandref definiert das Logfile angelegt. atempval ist das Dummy wo die Readings reingeschrieben werden.
Zum Beispiel:
./log/Test_dummy.log atempval:(statTemperatureHourLast|statTemperatureMonth).*
oder:
./log/Test_dummy.log atempval:statTemperatureHourLast
oder
./log/Test_dummy.log atempval:.*
tut sich nichts. Ich meine ich hatte noch weitere verschiedene Version versucht. Aber es tut sich nichts.
Es werden nur die Readings temperature und state geschrieben wenn dies so
./log/Test_dummy.log atempval
angelegt ist.
Ich weiß nur eben nicht warum. Was ist den oben falsch?
Danke
Gruß,
Tino
Hallo,
also ich habe jetzt noch einen Versuch gestarte und dies eingetragen:
./log/Test_dummy.log atempval:.*(temperature|statTemperatureHourLast|statTemperatureHour).*
Und nichts. Im Gegensatz zu temperature wird statTemperaturHourLast und statTemperaturHour nicht ins Logfile geschrieben. Ich versteh es nicht.
Gruß,
Tino
Ist das der komplete Befehl? Wieso schreibst Du die Readings in einen dummy? Irgendwie scheinst Du eine sehr spezielle Installation zu haben und mir fehlen alle Infos, um den Fehler einkreisen zu können.
Hallo,
ich habe das FileLog nochmals neu angelegt. Jetzt funktioniert es. Allerdings erkenne ich keinen Grund warum dies voher nicht funktionierte, da dies von den Einstellungen nichts anderes ist.
Bzgl Reading im Dummy, ich lese jede Minute über ModBus Werte aus und las diese in ein Dummy schreiben. Das funktioniert ohne Probleme. Bisher habe ich die Mittelwerte immer aus dem LogFile mit Average ermittelt. Dies ist soweit auch in Ordnung. Allerdings nehme ich an, dass das Statistic Modul für solche Zwecke besser ist, da es bestimmt die Fritzbox nicht so belastet ;-) Von daher der Umstieg.
Danke
Gruß,
Tino
Hallo tupol,
gibt es eine Möglichkeit das reading
statEnergy_total
welches bei mir als Ergebnis das anzeigt:
Hour: 0.4676 Day: 1.4441 Month: 1.4441 Year: 1.4441 (since: 2014-11-02_13:47:50 )
etwas anders zu formatieren?
Gerne hätte ich die Begriffe in Deutsch und gerne ohne den Zeitstempel. Dann siehts im Floorplan auch nett aus. :)
Vielen Dank für das tolle Modul!
Olli
Zum Umformatieren kann man 'userReadings' nutzen.
Hallo tupol,
vielen Dank für deine fixe Antwort.
Leider verstehe ich die, bei userreadings in der commandref stehenden, Sachen nicht. Mangels Perl-Wissen habe ich keinerlei Idee wie ich so etwas formatieren soll...
Jemand ne Idee?
Viele Grüße,
Edit: Jetzt muss ich mich nochmal melden - meine Statistik wurde um 00:00 Uhr resettet - wieso das denn?
Hour: 0.0656 Day: 2.0190 Month: 2.0190 Year: 2.0190 (since: 2014-11-03 )
Nur das Energy_totallast wird weitergezählt...
statEnergy_totalLast
Hour: 0.4462 Day: 5.0802 Month: - Year: - (since: 2014-11-02_13:47:50 )
Zitat von: olli84 am 02 November 2014, 22:50:54
Edit: Jetzt muss ich mich nochmal melden - meine Statistik wurde um 00:00 Uhr resettet - wieso das denn?
Hour: 0.0656 Day: 2.0190 Month: 2.0190 Year: 2.0190 (since: 2014-11-03 )
Das ist gewollt und passiert nur einmal vor dem ersten vollen Tag.
gerade gemerkt - einfach zu ungeduldig.
Herzlichen Dank. :)
Zitat von: olli84 am 02 November 2014, 22:50:54
Leider verstehe ich die, bei userreadings in der commandref stehenden, Sachen nicht. Mangels Perl-Wissen habe ich keinerlei Idee wie ich so etwas formatieren soll...
Jemand ne Idee?
attr <name> userReadings neuesReading {ReadingsVal("Stromzaehler","statElectricityConsumed","") =~ /Hour: (\d+\.*\d*) Day: (\d+\.*\d*) Month: (\d+\.*\d*) Year: (\d+\.*\d*)/;; return "Stunde: $1 Tag: $2 Monat: $3 Jahr: $4";;}
Hallo Tupol!
Vielen Dank für deine Hilfe! Das hätte ich niemals alleine hinbekommen! Danke!
Grüßle,
Olli
Hallo,
Ich versuche dieses Modul für meinen OWL CM160 zu verwenden um Monats und Jahreswerte zu bekommen.
Das Problem das ich habe ist, dass die Readings voller Nullen geschrieben werden.
Darauf hin habe ich das Modul nicht mehr CM160 zugewiesen sondern einem Dummy der von CM160 beliefert wird. Leider hat auch er das gleiche Problem mit den Nullen.
Hier mein Code:
define stromstats statistics AktuellerVerbrauch
attr stromstats singularReadings AktuellerVerbrauch:state:Duration:Day|Month|Year
So sieht der Log dazu aus
2014-01-19_09:36:25 AktuellerVerbrauch 574.56 W
2014-01-19_09:37:50 AktuellerVerbrauch 606.48 W
2014-01-19_09:38:00 AktuellerVerbrauch 590.52 W
2014-01-19_09:39:00 AktuellerVerbrauch 670.32 W
Richtig. So ist es in der commandref beschrieben. Statistics sagt dir, wie lange der jeweilige state (= Status wie offen, geschlossen, an, aus) existiert hat und gibt Dir für jeden möglichen Wert die Dauer zurück. :-)
In Deinem singularReading fehlt die Bezeichnung des Readings.
statistics bietet keine Integralfunktion, um von der Leistung auf die Energie zu kommen. Die gehört ins OWL-Modul oder in ein generelles Integral-Modul.
Bin auf dem Weg, ein Freund von Statistics zu werden, weil mir im Vergleich zu Average die Option besser gefällt, die auszuwertenden Readings zu bestimmen. Heute hatten wir hier nun einen Tag mit Temperaturen erstmals komplett unter 0 (so -0.3 bis -0.7) Dennoch zeigen mir alle Statistiken als Minimumwert 0.0. Was mache ich falsch? Sicherheitshalber mal meine Defintion:
DEF Wetterstation|CC.[^(t)]*?|TF.*|T_.*
DEV_REGEXP Wetterstation|CC.[^(t)]*?|TF.*|T_.*
NAME Statistik
NR 729
NTFY_ORDER 10-Statistik
PREFIX stat
STATE Updated stats for: T_Heizung
TYPE statistics
Readings:
2014-11-29 16:32:07 monitoredDevicesCUL_HM CC_Bad_EG,CC_Bad_OG,CC_Jula,CC_Kueche,CC_Schlafzimmer,CC_Suedzimmer,CC_Wohnzimmer,TF_Waschkueche,T_Galerie_Fussboden,Wetterstation
2014-11-29 16:32:05 monitoredDevicesOWMULTI TF_Galerie
2014-11-29 16:32:07 monitoredDevicesOWTHERM T_Heizung,T_Ruecklauf,T_Ruecklauf_Anhebung,T_Vorlauf_FBH,T_Warmwasser
2014-11-29 16:32:05 monitoredDevicesUnsupported CC_Bad_EG_WindowRec#CUL_HM,CC_Bad_OG_WindowRec#CUL_HM,CC_Jula_WindowRec#CUL_HM,CC_Kueche_WindowRec#CUL_HM,CC_Schlafzimmer_WindowRec#CUL_HM,CC_Suedzimmer_WindowRec#CUL_HM,CC_Wohnzimmer_WindowRec#CUL_HM
2014-11-30 15:59:55 nextPeriodChangeCalc 2014-11-30 16:59:55
2014-11-30 16:35:12 state Updated stats for: T_Heizung
Fhem:
modulVersion $Date: 2014-11-13 21:44:43 +0100 (Thu, 13 Nov 2014) $
Helper:
Bm:
Statistics_notify:
cnt 433
dmx 0
max 462
tot 26461
mAr:
HASH(0x170edd0)
HASH(0x15b9098)
Attributes:
deltaReadings rain
minAvgMaxReadings measured-temp,brightness,humidity,temperature,windSpeed
room Unsorted
tendencyReadings Rel_Luftdruck
Beispiel eines Readings mit Minus-Wert:
2014-11-30 16:36:51 temperature -0.5
Danke für sachdienliche Hinweise im Voraus!
Christian
Bugfix im morgigem update
Vielen Dank für den bugfix - habe in aus dem Repository geladen und ausprobiert - der negative Wert wird jetzt Minimum genannt, aber leider ohne das Minus-Zeichen. Also: Beispiel:
-0.9 wird eingetragen als 0.9
Herzliche Grüße Christian
aller guten dinge sind 2. bugfixe auch. :-)
Jo, das klappt nun und somit wird meine Monatsstatistik ziemlich gut stimmen, weil ich in den Summen nur 22 Stunden falsche Min-Werte habe.
Vielen Dank!
Christian
Bei Statistik ist mir noch ein weiterer Fehler aufgefallen: Die Übergabe der min/avg/max-Werte um Mitternacht funktioniert m.E. weder beim Übergang von Day nach DayLast noch bei Month nach MonthLast.
Meiner Meinung nach wird der Min-Wert vom Vor-Tag/-Monat als MIN/AVG/MAX in -Last abgelegt.
Herzliche Grüße
Christian
Wie hast Du es getestet?
Einfach laufender Betrieb und in den letzten Tagen beobachtet: als min/avg/max des letzten Tages wurden der Min-Wert um Mitternacht eingetragen.
Beisiel: 23.59: -1,5 0,5 2,5
Lastday wird dann -1,5 -1,5 -1,5
Herzliche Grüße
Christian
Poste mal bitte ein "list" von statistics und dem auszuwertendem device.
gerne:
Internals:
DEF Wetterstation|CC.[^(t)]*?|TF.*|T_.*
DEV_REGEXP Wetterstation|CC.[^(t)]*?|TF.*|T_.*
NAME Statistik
NR 725
NTFY_ORDER 10-Statistik
PREFIX stat
STATE Updated stats for: T_Vorlauf_FBH
TYPE statistics
Readings:
2014-12-05 19:10:30 monitoredDevicesCUL_HM CC_Bad_EG,CC_Bad_OG,CC_Jula,CC_Kueche,CC_Schlafzimmer,CC_Suedzimmer,CC_Wohnzimmer,TF_Waschkueche,T_Galerie_Fussboden,Wetterstation
2014-12-05 19:10:28 monitoredDevicesOWMULTI TF_Galerie
2014-12-05 19:10:30 monitoredDevicesOWTHERM T_Heizung,T_Ruecklauf,T_Ruecklauf_Anhebung,T_Vorlauf_FBH,T_Warmwasser
2014-12-05 19:10:28 monitoredDevicesUnsupported CC_Bad_EG_WindowRec#CUL_HM,CC_Bad_OG_WindowRec#CUL_HM,CC_Jula_WindowRec#CUL_HM,CC_Kueche_WindowRec#CUL_HM,CC_Schlafzimmer_WindowRec#CUL_HM,CC_Suedzimmer_WindowRec#CUL_HM,CC_Wohnzimmer_WindowRec#CUL_HM
2014-12-06 06:59:55 nextPeriodChangeCalc 2014-12-06 07:59:55
2014-12-06 07:55:05 state Updated stats for: T_Vorlauf_FBH
Fhem:
modulVersion $Date: 2014-12-01 21:31:49 +0100 (Mon, 01 Dec 2014) $
Attributes:
deltaReadings rain
minAvgMaxReadings measured-temp,brightness,humidity,temperature,windSpeed
room Unsorted
tendencyReadings Rel_Luftdruck
Beispielhaft für die definierten Devices:
Internals:
CFGFN ./FHEM/wetter.cfg
CUL_0_MSGCNT 301
CUL_0_RAWMSG A13B286701DBB9A0000000029631520C000377909::-73.5:CUL_0
CUL_0_RSSI -73.5
CUL_0_TIME 2014-12-06 07:53:57
DEF 1DBB9A
IODev CUL_0
LASTInputDev CUL_0
MSGCNT 301
NAME Wetterstation
NR 545
STATE T: 4.1 H: 99 W: 0 R: 1595.36 IR: 0 WD: 275 WDR: 67.5 S: 121 B: 9
TYPE CUL_HM
lastMsg No:B2 - t:70 s:1DBB9A d:000000 0029631520C000377909
protLastRcv 2014-12-06 07:53:57
rssi_at_CUL_0 avg:-72.98 min:-75 max:-71.5 lst:-73.5 cnt:301
Readings:
2014-12-05 19:10:26 Activity alive
2014-07-26 15:19:19 D-firmware 1.3
2014-07-26 15:19:19 D-serialNr JEQ0532158
2014-12-06 07:55:56 Rel_Luftdruck 1023
2014-12-06 07:55:56 Sonnenstunden 31.5480555555556
2014-12-06 07:53:57 Taupunkt 4.0
2014-12-06 06:07:21 Windchill 4
2014-12-06 07:53:57 brightness 9
2014-11-28 11:23:59 brightness_cum_day 422768
2014-11-28 11:23:59 brightness_cum_month 26148591
2014-12-06 07:53:57 humidity 99
2014-12-06 07:53:57 isRaining 0
2014-12-06 07:53:57 rain 1595.36
2014-09-01 07:51:04 rain_calc_d_last 9.4
2014-12-06 06:50:01 rain_last_day 0
2014-12-06 07:55:56 statBrightnessDay Min: 8.0 Avg: 8.9 Max: 9.0
2014-12-05 23:59:57 statBrightnessDayLast Min: 9.0 Avg: 9.0 Max: 9.0
2014-12-06 07:55:56 statBrightnessHour Min: 9.0 Avg: 9.0 Max: 9.0
2014-12-06 06:59:57 statBrightnessHourLast Min: 8.0 Avg: 8.9 Max: 9.0
2014-12-06 07:55:56 statBrightnessMonth Min: 8.0 Avg: 9.6 Max: 30.0
2014-11-30 23:59:59 statBrightnessMonthLast Min: 9.0 Avg: 9.0 Max: 9.0
2014-12-06 07:55:56 statBrightnessYear Min: 0.0 Avg: 9.5 Max: 30.0 (since: )
2014-12-06 07:55:56 statHumidityDay Min: 94.0 Avg: 96.6 Max: 99.0
2014-12-05 23:59:57 statHumidityDayLast Min: 95.0 Avg: 95.0 Max: 95.0
2014-12-06 07:55:56 statHumidityHour Min: 99.0 Avg: 99.0 Max: 99.0
2014-12-06 06:59:57 statHumidityHourLast Min: 99.0 Avg: 99.0 Max: 99.0
2014-12-06 07:55:56 statHumidityMonth Min: 85.0 Avg: 91.9 Max: 99.0
2014-11-30 23:59:59 statHumidityMonthLast Min: 92.0 Avg: 92.0 Max: 92.0
2014-12-06 07:55:56 statHumidityYear Min: 0.0 Avg: 90.5 Max: 99.0 (since: )
2014-12-06 07:55:56 statRain Hour: 0.000 Day: 0.295 Month: 0.885 Year: 0.885 (since: 2014-11-28 )
2014-12-06 06:59:57 statRainLast Hour: 0.000 Day: 0.000 Month: 0.000 Year: -
2014-12-06 06:59:57 statRel_LuftdruckTendency 1h: +1.0 2h: +2.0 3h: +1.0 6h: +1.0
2014-12-06 07:55:56 statTemperatureDay Min: 2.8 Avg: 3.7 Max: 4.2
2014-12-05 23:59:57 statTemperatureDayLast Min: 2.8 Avg: 2.8 Max: 2.8
2014-12-06 07:55:56 statTemperatureHour Min: 4.1 Avg: 4.2 Max: 4.2
2014-12-06 06:59:57 statTemperatureHourLast Min: 4.0 Avg: 4.1 Max: 4.2
2014-12-06 07:55:56 statTemperatureMonth Min: -4.0 Avg: -0.4 Max: 4.2
2014-12-01 22:19:38 statTemperatureMonthLast Min: -0.9 Avg: 0.0 Max: 0.9
2014-12-06 07:55:56 statTemperatureYear Min: -4.0 Avg: 0.2 Max: 4.2 (since: )
2014-12-06 07:55:56 statWindSpeedDay Min: 0.0 Avg: 0.1 Max: 4.0
2014-12-05 23:59:57 statWindSpeedDayLast Min: 0.0 Avg: 0.0 Max: 0.0
2014-12-06 07:55:56 statWindSpeedHour Min: 0.0 Avg: 0.0 Max: 0.0
2014-12-06 06:59:57 statWindSpeedHourLast Min: 0.0 Avg: 0.0 Max: 0.0
2014-12-06 07:55:56 statWindSpeedMonth Min: 0.0 Avg: 2.7 Max: 19.0
2014-11-30 23:59:59 statWindSpeedMonthLast Min: 7.3 Avg: 7.3 Max: 7.3
2014-12-06 07:55:56 statWindSpeedYear Min: 0.0 Avg: 4.8 Max: 21.0 (since: )
2014-12-06 07:53:57 state T: 4.1 H: 99 W: 0 R: 1595.36 IR: 0 WD: 275 WDR: 67.5 S: 121 B: 9
2014-12-06 07:53:57 sunshine 121
2014-12-06 07:53:57 temperature 4.1
2014-12-06 07:53:57 windDirRange 67.5
2014-12-06 07:53:57 windDirection 275
2014-12-06 07:53:57 windSpeed 0
Helper:
_98_statistics Statistik
mId 0040
rxType 4
Io:
newChn +1DBB9A,00,01,FE1F
nextSend 1417848837.4151
prefIO
rxt 0
vccu
p:
1DBB9A
00
01
FE1F
Mrssi:
mNo B2
Io:
CUL_0 -71.5
Prt:
bErr 0
sProc 0
Q:
qReqConf
qReqStat
Role:
chn 1
dev 1
Rssi:
At_cul_0:
avg -72.9883720930233
cnt 301
lst -73.5
max -71.5
min -75
Attributes:
IODev CUL_0
actCycle 001:00
actStatus alive
autoReadReg 1_restart
event-on-change-reading state,windSpeed,humidity,brightness,temperature,Rel_Luftdruck,rain_last_day,rain
expert 2_full
firmware 1.3
model HM-WDS100-C6-O
peerIDs
room Wetter
serialNr JEQ0532158
subType THSensor
userReadings Sonnenstunden {24+(InternalVal("at_sunset","TRIGGERTIME","???")-InternalVal("at_sunrise","TRIGGERTIME","???"))/3600}
Danke für Deine Ursachensuche...
Christian
Ich vermute, es liegt daran, dass Du die readings die standardsmässig (s. commandref) schon auswertet werden, nochmals in den Attributen definiert hast. Sprich, sie werden zweimal ausgewertet. Ich schau es mir aber noch etwas genauer an.
Richtig, da war ich zu gründlich - werde jetzt also rain, humidity, temperature und brightness mal rausnehmen und berichten, was heute Nacht passiert.
Danke für den Tipp...
Zur commandref habe ich zwei Nachfragen:
dayChangeTime <time>
Time of day change. Default is 00:00. For weather data the day change can be set e.g. to 06:50.
Wenn ich alle Daten wie im Default zur vollen Stunde gerechnet haben will, die Regendaten aber (nach den internationalen Vorschriften der Wetterorganisationen) um 6.50/7.50 Uhr (MESZ, MEZ), dann muss ich doch entgegen der Empfehlung in einem früheren Beitrag von Dir doch zwei Statistics definieren, oder?
◾excludedReadings <DeviceRegExp:ReadingNameRegExp>
Regular expression of the readings that shall be excluded from the statistics.
The reading have to be entered in the form deviceName:readingName. E.g. "FritzDect:current|Sensor_.*:humidity"
In diesem Beispiel wird der RegEx in Hochkommata geschrieben - sind die notwendig bei definieren. (bei anderen Beispielen sind keine Anführungszeichen)
1. Ja 2.
2. Ja. Ohne "
1. Versuchte, das Prefix mit attr <MeinModulname> Prefix stat_ zu ändern, weil ich dann einfacher Readings von 98_statistics zum Beispiel vom state-Reading unterscheiden kann: Offenbar ist das setzen dieses Attributes aber entgegen der commandref nicht implementiert.
2. Zur Codeänderung von gestern Abend: Benutze ich diese mit der Definition:
Internals:
CFGFN
DEF Wetterstation|CC.[^(t)]*?|TF.*|T_.*|SW_.*
DEV_REGEXP Wetterstation|CC.[^(t)]*?|TF.*|T_.*|SW_.*
NAME Statistik
NR 745
NTFY_ORDER 10-Statistik
PREFIX stat
STATE Updated stats for: T_Heizung
TYPE statistics
Readings:
2014-12-06 23:30:24 monitoredDevicesCUL_HM CC_Bad_EG,CC_Wohnzimmer,CC_Bad_OG,CC_Jula,CC_Kueche,CC_Schlafzimmer,CC_Suedzimmer,SW_01_Ruecklaufanhebung,SW_02_WW_Pumpe,SW_03_Heizpumpe,SW_04_FBH_Pumpe,TF_Waschkueche,T_Galerie_Fussboden,Wetterstation
2014-12-06 23:30:22 monitoredDevicesOWMULTI TF_Galerie
2014-12-06 23:30:24 monitoredDevicesOWTHERM T_Heizung,T_Ruecklauf,T_Ruecklauf_Anhebung,T_Vorlauf_FBH,T_Warmwasser
2014-12-06 23:30:21 monitoredDevicesUnsupported CC_Bad_EG_WindowRec#CUL_HM,CC_Bad_OG_WindowRec#CUL_HM,CC_Jula_WindowRec#CUL_HM,CC_Kueche_WindowRec#CUL_HM,CC_Schlafzimmer_WindowRec#CUL_HM,CC_Suedzimmer_WindowRec#CUL_HM,CC_Wohnzimmer_WindowRec#CUL_HM
2014-12-07 06:59:55 nextPeriodChangeCalc 2014-12-07 07:59:55
2014-12-07 07:29:44 state Updated stats for: T_Heizung
Fhem:
modulVersion $Date: 2014-12-06 19:54:39 +0000 (Sat, 06 Dec 2014) $
Attributes:
minAvgMaxReadings measured-temp
room _house
tendencyReadings Rel_Luftdruck
werden nur die Readings brightness und humidity ausgelesen/aktualisiert. Habe dann sämtlich stat.*-Readings mit deleteReadings entfernt und mit gelöschter fhem.save neu gestartet. Auch nach vielen Stunden wurden keine temperature, windSpeed Readings gelesen. Wiederum nur brightness und humidity - keine Tendenz von Rel_Luftdruck!
Heute morgen habe ich nach derselben Vorbereitung wieder die Version vom 1.12. eingespielt und alle gewünschten Readings klappen.
3. An anderer Stelle wurde ja bereits die Überschneidung mit HourCounter angesprochen. Statistics kann dabei (fast) alles, außer die Zahl der Ein-/Ausschaltvorgänge zu zählen. Es macht ja einen Unterscheid, ob der Brenner einer Heizung am Tag 100mal 1 Minute läuft und 100mal 10 Minuten auskühlt, oder 2 * 50 Minuten läuft... Also: Ich könnte mir noch einen Statistiktyp "Count" vorstellen, der schlicht die Zahl der ON- und der OFF-Events [0|1, an|aus] zählt.
Viele Grüße
Christian
Grüße
Christian
1. ??? steht so aber nicht in der commandref
2. Danke. Habe die alte Version wieder eingestellt.
3. Gute Idee. Werde mal drüber nachdenken.
Gruß
tupol
zu 1. Richtig, lesen bringt den Vorteil, es ist eine Ergänzung der Definition - hab' gelernt. Und es funktiont! Danke schön.
Wenn ich zu unterschiedlichen Tageswechselzeiten Statistiken schreiben will, dann muss ich mehrere statistics-Devices definieren, schriebst Du in einem früheren Thread. Exkludiere ich z.B. Statistik1 [Tageswechsel Standard um 0:00) das Reading rain in meiner Wetterstation und definiere ich dies als singularReading in Statistik2 (Tageswechsel 6.50 Uhr), dann erhalte ich diese Fehlermeldung:
2014.12.07 18:57:34 3: statistics Statistik2: DoStatistics.386 Device 'Wetterstation' identified as supported but already servered by 'Statistik'.
Die macht ja Sinn als Warnung, aber ist es zwingend notwendig damit die Nutzung des Moduls statistics auf ein und dasselbe Device zu verhindern? Ich muss jetzt mit einem Dummy und einem Notify das Reading "kopieren"...
Habe eine neue Version aufgespielt. Sollte Deine Konfiguration ermöglichen, wenn Du das Prefix änderst.
Außerdem kommt ermöglicht die neue Version die vordefinierte Zuordnung von Readings zu Statistiktype zu ändern. D.h. sie kommt auch mit Doppeldeklarierungen zurecht.
Gruß
tupol
Hi tupol,
hatte ich gestern schon im Repository gesehen und ausprobiert. Dabei hatte ich aber einiges Durcheinander und wollte dies verifzieren und bin erstmal zur alten Version zurück. Heute Abend habe ich es noch einmal probiert:
Tatsächlich kann ich mit anderem Prefix über dasselbe Device noch einmal ein statistics-Device definieren. ABER: das zweite Device gräbt bei mir nur den State der Wetterstation ab, obwohl das Reading, auf das es schauen soll, definitiv existiert. Konsequenterweise hagelt es im fhem.log auch Fehlermeldung, da der State der Wetterstation so'n Konglomerat ist.
Fehlermeldung in fhem.log:
2014.12.10 22:16:59 1: PERL WARNING: Argument "WDR:" isn't numeric in numeric gt (>) at ./FHEM/98_statistics.pm line 971.
2014.12.10 22:16:59 1: PERL WARNING: Argument "B:" isn't numeric in numeric gt (>) at ./FHEM/98_statistics.pm line 971.
2014.12.10 22:16:59 1: PERL WARNING: Argument "IR:" isn't numeric in numeric gt (>) at ./FHEM/98_statistics.pm line 971.
2014.12.10 22:16:59 1: PERL WARNING: Argument "WD:" isn't numeric in numeric gt (>) at ./FHEM/98_statistics.pm line 971.
2014.12.10 22:16:59 1: PERL WARNING: Argument "S:" isn't numeric in numeric gt (>) at ./FHEM/98_statistics.pm line 971.
2014.12.10 22:16:59 1: PERL WARNING: Argument "R:" isn't numeric in numeric gt (>) at ./FHEM/98_statistics.pm line 971.
2014.12.10 22:16:59 1: PERL WARNING: Argument "W:" isn't numeric in numeric gt (>) at ./FHEM/98_statistics.pm line 971.
Listing der Wetterstation:
Internals:
CFGFN ./FHEM/wetter.cfg
CHANGED
CUL_0_MSGCNT 18
CUL_0_RAWMSG A13F486701DBB9A000000002A551545C04F41C109::-76.5:CUL_0
CUL_0_RSSI -76.5
CUL_0_TIME 2014-12-10 22:49:51
DEF 1DBB9A
IODev CUL_0
LASTInputDev CUL_0
MSGCNT 18
NAME Wetterstation
NR 543
STATE T: 4.2 H: 85 W: 7.9 R: 1606.275 IR: 0 WD: 325 WDR: 67.5 S: 193 B: 9
TYPE CUL_HM
lastMsg No:F4 - t:70 s:1DBB9A d:000000 002A551545C04F41C109
protLastRcv 2014-12-10 22:49:51
rssi_at_CUL_0 avg:-74.72 min:-76.5 max:-73 lst:-76.5 cnt:18
Readings:
2014-12-10 22:13:08 Activity alive
2014-12-07 16:56:18 D-firmware 1.3
2014-12-07 16:56:18 D-serialNr JEQ0532158
2014-12-10 22:51:30 Rel_Luftdruck 1013
2014-12-10 22:51:30 Sonnenstunden 31.4172222222222
2014-12-10 22:45:32 Taupunkt 1.9
2014-12-10 22:51:30 Wind_Bft 1
2014-12-10 22:49:51 Windchill 2.2
2014-12-10 22:49:51 brightness 9
2014-12-10 22:51:30 calcRegen 1368.2
2014-12-10 22:49:51 humidity 85
2014-12-10 22:49:51 isRaining 0
2014-12-10 22:49:51 rain 1606.275
2014-12-10 06:50:02 rain_last_day 0
2014-12-10 22:50:59 stat2_StateDay 1606.275 00:00:00 193 00:00:00 T:: 00:07:00 67.5 00:00:00 125 00:00:00 4.1 00:00:00 6.7 00:00:00 4.2 00:00:00 0 00:00:00 275 00:00:00 325 00:00:00 85 00:00:00 9.1 00:00:00 9 00:00:00 7.9 00:00:00 270 00:00:00 (since: 2014-12-10_22:43:59)
2014-12-10 22:50:59 stat2_StateMonth 1606.275 00:00:00 193 00:00:00 T:: 00:07:00 67.5 00:00:00 125 00:00:00 4.1 00:00:00 6.7 00:00:00 4.2 00:00:00 0 00:00:00 275 00:00:00 325 00:00:00 85 00:00:00 9.1 00:00:00 9 00:00:00 7.9 00:00:00 270 00:00:00 (since: 2014-12-10_22:43:59)
2014-12-10 22:50:59 stat_HumidityDay Min: 0 Avg: 90 Max: 97 (since: )
2014-12-10 22:50:59 stat_HumidityMonth Min: 0 Avg: 90 Max: 97 (since: )
2014-12-10 22:50:59 stat_HumidityYear Min: 0 Avg: 90 Max: 97 (since: )
2014-12-10 21:59:56 stat_Rel_LuftdruckTendency 1h: +1.0 2h: +0.0 3h: -1.0 6h: -1.0
2014-12-10 22:50:59 stat_TemperatureDay Min: 0.0 Avg: 4.7 Max: 7.0 (since: )
2014-12-10 22:50:59 stat_TemperatureMonth Min: 0.0 Avg: 4.7 Max: 7.0 (since: )
2014-12-10 22:50:59 stat_TemperatureYear Min: 0.0 Avg: 4.7 Max: 7.0 (since: )
2014-12-10 21:59:56 stat_WindSpeedDay Min: 1 Avg: 6 Max: 11 (since: 2014-12-10_20:55:33 )
2014-12-10 21:59:56 stat_WindSpeedHour Min: 3.6 Avg: 3.6 Max: 3.6
2014-12-10 21:59:56 stat_WindSpeedHourLast Min: 2 Avg: 6 Max: 11
2014-12-10 21:59:56 stat_WindSpeedMonth Min: 1 Avg: 6 Max: 11 (since: 2014-12-10_20:55:33 )
2014-12-10 21:59:56 stat_WindSpeedYear Min: 1 Avg: 6 Max: 11 (since: 2014-12-10_20:55:33 )
2014-12-10 22:49:51 state T: 4.2 H: 85 W: 7.9 R: 1606.275 IR: 0 WD: 325 WDR: 67.5 S: 193 B: 9
2014-12-10 22:49:51 sunshine 193
2014-12-10 22:49:51 temperature 4.2
2014-12-10 22:49:51 windDirRange 67.5
2014-12-10 22:49:51 windDirection 325
2014-12-10 22:49:51 windSpeed 7.9
Helper:
_98_statistics Statistik2
mId 0040
...
Listing von Statistik (soll temperature, humidity, windSpeed und den Relative Luftdruck auswerten)
Internals:
DEF Wetterstation|SW_.*|Switch_Heizkeller stat_
DEV_REGEXP Wetterstation|SW_.*|Switch_Heizkeller
NAME Statistik
NR 729
NTFY_ORDER 10-Statistik
PREFIX stat_
STATE Updated stats for: Wetterstation
TYPE statistics
Readings:
2014-12-10 22:13:10 monitoredDevicesCUL_HM SW_01_Ruecklaufanhebung,SW_02_WW_Pumpe,SW_03_Heizpumpe,SW_04_FBH_Pumpe,Wetterstation
2014-12-10 22:13:09 monitoredDevicesOWSWITCH Switch_Heizkeller
2014-12-10 22:13:09 nextPeriodChangeCalc 2014-12-10 22:59:55
2014-12-10 22:55:20 state Updated stats for: Wetterstation
Fhem:
modulVersion $Date: 2014-12-09 19:37:31 +0100 (Tue, 09 Dec 2014) $
Attributes:
durationReadings Brenner,Mischer_weniger,Mischer_mehr,Waschkueche,EWT
excludedReadings Wetterstation:rain.*|Wetterstation:brightness|Wetterstation:windSpeed
minAvgMaxReadings measured-temp
room _house
tendencyReadings Rel_Luftdruck
Statistik2 (soll eben obiges NICHT und ausschließlich calcRegen auswerten:
Internals:
DEF Wetterstation stat2_
DEV_REGEXP Wetterstation
NAME Statistik2
NR 731
NTFY_ORDER 10-Statistik2
PREFIX stat2_
STATE Updated stats for: Wetterstation
TYPE statistics
Readings:
2014-12-10 22:43:59 monitoredDevicesCUL_HM Wetterstation
2014-12-10 22:54:30 state Updated stats for: Wetterstation
Fhem:
modulVersion $Date: 2014-12-09 19:37:31 +0100 (Tue, 09 Dec 2014) $
Attributes:
dayChangeTime 06:50
deltaReadings calcRegen
excludedReadings Wetterstation:brightness|Wetterstation:humidity|Wetterstation:temperature|Wetterstation:rel_Luftdruck|Wetterstation:windSpeed|Wetterstation:rain|Wetterstation:state
room _house
Auch beim Switch_Heizkeller habe ich mit dieser Version plötzlich eine Statistik über das State dieses Devices mit 8 Schaltern, entsprechend gibt es auch hier vergleichbare Fehlermeldungen, weil der State nicht numerisch ist.
Die Aktivitäten der Schalter werden mit dieser Version nicht gelogt - vermutlich, weil er sie nicht als on/off-Devices erkennt.
Ich geh' jetzt erstmal wieder zurück zur Version 7113.
Danke Christian
Danke für die Rückmeldung. Sollte jetzt laufen. Am besten mal im Log mit Modul-verbose 5 zuschauen
Das klappt jetzt. Danke für den Bugfix
Nun fallen aber zwei weitere Sachen auf:
1. Für meine Regenmessung habe ich 06:50 als Tageswechselzeit eingegeben. Dann müsste also der aufgelaufene Regen (davon gibt's aktuell viel) von stat2_CalcRegen nach stat2_CalcRegenLast Übertragen werden. Das scheint aber um 6:59 Uhr zu passieren. Und im Log habe ich passend dazu eine Fehlermeldung:
2014.12.12 06:59:55 1: PERL WARNING: Use of uninitialized value $last[9] in concatenation (.) or string at ./FHEM/98_statistics.pm line 767.
2. Die Tageswertübertragung für die gesammelten Einschaltdauern geht etwas schief: Wenn der Schalter den ganzen Tag OFF-Zeit war, dann wird nach Last nur eine OFF-Zeit von 0:00:00 übertragen.
Herzliche Grüße
Christian
Für 1. habe ich gerade ein update hochgespielt. Bitte testen
Eingespielt gestern 22.19 Uhr - Neustart von FHEM. Dennoch heute morgen um 6.59 Daychange.
Internals:
DEF Wetterstation stat2_
DEV_REGEXP Wetterstation
NAME Statistik2
NR 731
NTFY_ORDER 10-Statistik2
PREFIX stat2_
STATE Updated stats for: Wetterstation
TYPE statistics
Readings:
2014-12-16 22:19:27 monitoredDevicesCUL_HM Wetterstation
2014-12-17 06:59:55 nextPeriodChangeCalc 2014-12-17 07:59:55
2014-12-17 07:34:50 state Updated stats for: Wetterstation
Fhem:
modulVersion $Date: 2014-12-16 19:37:55 +0100 (Tue, 16 Dec 2014) $
Attributes:
dayChangeTime 06:50
deltaReadings calcRegen
excludedReadings Wetterstation:brightness|Wetterstation:humidity|Wetterstation:temperature|Wetterstation:rel_Luftdruck|Wetterstation:windSpeed|Wetterstation:rain|Wetterstation:state
room _house
Nr.2 (ChangeDaylast bei Duration) ist aber gelöst - ich habe jetzt stimmige "Last"-Werte.
Das ist der Stundenwechsel. Der Tageswechsel sollte um 6:50 stattgefunden haben. Läßt sich mit modul-verbose 4 kontrollieren.
Perfekt. Genau so ist es:
Internals:
DEF Wetterstation stat2_
Readings:
2014-12-17 21:35:32 monitoredDevicesCUL_HM Wetterstation
2014-12-18 05:59:55 nextPeriodChangeCalc 2014-12-18 06:49:55 (Day Change)
2014-12-18 06:34:59 state Updated stats for: Wetterstation
Fhem:
modulVersion $Date: 2014-12-16 19:37:55 +0100 (Tue, 16 Dec 2014) $
Attributes:
dayChangeTime 06:50
deltaReadings calcRegen
excludedReadings Wetterstation:brightness|Wetterstation:humidity|Wetterstation:temperature|Wetterstation:rel_Luftdruck|Wetterstation:windSpeed|Wetterstation:rain|Wetterstation:state
room _house
verbose 4
Danke fürs Fixing!
Deine Konfiguration wird jetzt durch eine neues Attribut erleichtert: ignoreDefaultAssignments
das ist eine sehr gute Idee - freu mich und bin es schon am ausprobieren. Sieht gut aus.
Zitat von: cwagner am 07 Dezember 2014, 08:28:47
3. An anderer Stelle wurde ja bereits die Überschneidung mit HourCounter angesprochen. Statistics kann dabei (fast) alles, außer die Zahl der Ein-/Ausschaltvorgänge zu zählen. Es macht ja einen Unterscheid, ob der Brenner einer Heizung am Tag 100mal 1 Minute läuft und 100mal 10 Minuten auskühlt, oder 2 * 50 Minuten läuft... Also: Ich könnte mir noch einen Statistiktyp "Count" vorstellen, der schlicht die Zahl der ON- und der OFF-Events [0|1, an|aus] zählt.
Habe gerade ein Update hochgespielt. Bei Duration-Readings sollten jetzt auch die Anzahl als
state_Count angezeigt werden. Wie üblich lassen sie sich per singleReading auskoppeln.
Bitte testen.
PS: Was statistics nicht kann bzw. können will, ist die Integralfunktionen von HourCounter ersetzen.
Da freue ich mich auf das Ausprobieren - wegen WAF erst ab Morgen, nach dem Fest.
Bei der Gelegenheit: Du erwähnst singleReading nun zum zweiten Mal. Im Forum nennt die Suche Deine beiden Nachrichten als einzige Fundstellen, im Wiki und in der Commandref gibt es Null Teffer? Magst Du einen Tipp geben, wie man die statistics-Readings zerlegen kann?
Funzt. Und dass keine Wertesummen integriert werden, finde ich nicht schlimm. So haben beide Module ihren Sinn. Ich finde diesen Funktonsumfang gerade auf schwacher Hardware wie einer Fritzbox sehr gelungen.
Zitat von: cwagner am 26 Dezember 2014, 08:57:22
Bei der Gelegenheit: Du erwähnst singleReading nun zum zweiten Mal. Im Forum nennt die Suche Deine beiden Nachrichten als einzige Fundstellen, im Wiki und in der Commandref gibt es Null Teffer? Magst Du einen Tipp geben, wie man die statistics-Readings zerlegen kann?
Das Attribute von statistics heißt "singularReadings" und ist in der commandref erläutert.
Freut mich, dass das Zählen funktioniert. Allerdings bitte weiter beobachten. Benutze es selbst nur recht begrenzt.
Hallo zusammen,
ich lese meine Heizung per WebInterface mit HTTPMOD aus und schreibe ein Logfile das in etwa so aussieht
(Die Laufzeit des Brenners in Stunden wird also immer weiter hochgezählt, auch über Tageswechsel etc. hinweg)
2015-03-01_00:07:11 PHeiz BrennerLaufZeit: 3175
2015-03-01_05:58:45 PHeiz BrennerLaufZeit: 3176
2015-03-01_06:59:00 PHeiz BrennerLaufZeit: 3177
2015-03-01_22:12:54 PHeiz BrennerLaufZeit: 3185
2015-03-01_23:52:33 PHeiz BrennerLaufZeit: 3185
--- nur zur besseren Lesbarkeit eingefügt -------
2015-03-02_00:04:39 PHeiz BrennerLaufZeit: 3185
2015-03-02_05:18:55 PHeiz BrennerLaufZeit: 3186
2015-03-02_06:55:47 PHeiz BrennerLaufZeit: 3187
2015-03-02_10:11:55 PHeiz BrennerLaufZeit: 3189
2015-03-02_23:55:55 PHeiz BrennerLaufZeit: 3193
--- nur zur besseren Lesbarkeit eingefügt -------
2015-03-03_00:05:35 PHeiz BrennerLaufZeit: 3193
Nun möchte ich mit statistics (oder auch gern anders) die TagesSumme der Brennerstunden bilden um die später zu plotten
Also am 1.3: 3185 - 3175, also 10
Am 2.3: 3193 - 3185, also 8
Gemacht habe ich folgendes, das aber nicht funktioniert.
Verstanden habe ich, dass dadurch zusätzliche Zeilen ins LOG von PHeiz kommen sollen - ist das überhaupt richtig ?
define PHeizStat statistics PHeiz
attr PHeizStat singularReadings Pheiz:BrennerLaufZeit:Delta:(Hour|Day)
list PHeizStat
Internals:
DEF PHeiz
DEV_REGEXP PHeiz
NAME PHeizStat
NR 103
NTFY_ORDER 10-PHeizStat
PREFIX stat
STATE Waiting for notifications
TYPE statistics
Readings:
2015-03-02 10:11:53 monitoredDevicesUnsupported PHeiz#HTTPMOD
2015-03-02 10:11:53 nextPeriodChangeCalc 2015-03-02 10:59:55
Fhem:
modulVersion $Date: 2015-01-09 22:00:59 +0100 (Fri, 09 Jan 2015) $
Attributes:
room Statistik
singularReadings Pheiz:BrennerLaufZeit:Delta:(Hour|Day)
list PHeiz
Internals:
BUSY 0
DEF http://192.168.68.250/?action=get&attr=1 180
HTTPHEADER
Interval 180
LASTSEND 1425288466.49493
MainURL http://192.168.68.250/?action=get&attr=1
NAME PHeiz
NR 57
STATE ???
TYPE HTTPMOD
addr http://192.168.68.250:80
buf HTTP/1.1 200 OK
Set-Cookie: pksession=37567; Expires=Tue, 19 Jan 2038 04:13:43 CET; Max-Age=600; Path=/; Version="1"
Connection: close
Content-Type: application/json; charset=utf-8
Cache-Control: no-cache
[{"formatTexts":"","shortText":"Aussentemp Ist","unitText":"°C","lowerLimit":"???","upperLimit":"???","name":"CAPPL:LOCAL.L_aussentemperatur_ist","value":"77","divisor":"10","status":"OK","unitTextImperial":"°F"},{"formatTexts":"","shortText":"Kesseltemperatur","unitText":"°C","lowerLimit":"???","upperLimit":"???","name":"CAPPL:FA[0].L_kesseltemperatur","value":"595","divisor":"10","status":"OK","unitTextImperial":"°F"},{"formatTexts":"","shortText":"Vorlauftemperatur Ist","unitText":"°C","lowerLimit":"???","upperLimit":"???","name":"CAPPL:LOCAL.L_hk[0].vorlauftemp_ist","value":"455","divisor":"10","status":"OK","unitTextImperial":"°F"},{"formatTexts":"","shortText":"Vorlauftemperatur Ist","unitText":"°C","lowerLimit":"???","upperLimit":"???","name":"CAPPL:LOCAL.L_hk[1].vorlauftemp_ist","value":"396","divisor":"10","status":"OK","unitTextImperial":"°F"},{"formatTexts":"","shortText":"Einschaltfühler Ist","unitText":"°C","lowerLimit":"???","upperLimit":"???","name":"CAPPL:LOCAL.L_ww[0].einschaltfuehler_ist","value":"615","divisor":"10","status":"OK","unitTextImperial":"°F"},{"formatTexts":"","shortText":"TPM ist","unitText":"°C","lowerLimit":"???","upperLimit":"???","name":"CAPPL:LOCAL.L_pu[0].einschaltfuehler_ist","value":"586","divisor":"10","status":"OK","unitTextImperial":"°F"},{"formatTexts":"","shortText":"TPO ist","unitText":"°C","lowerLimit":"???","upperLimit":"???","name":"CAPPL:LOCAL.L_pu[0].ausschaltfuehler_ist","value":"400","divisor":"10","status":"OK","unitTextImperial":"°F"},{"formatTexts":"","shortText":"Speichertemperatur","unitText":"°C","lowerLimit":"???","upperLimit":"???","name":"CAPPL:LOCAL.L_sk[0].speichertemp_ist","value":"328","divisor":"10","status":"OK","unitTextImperial":"°F"},{"formatTexts":"","shortText":"Kollektortemperatur","unitText":"°C","lowerLimit":"???","upperLimit":"???","name":"CAPPL:LOCAL.L_sk[0].kollektortemp_ist","value":"217","divisor":"10","status":"OK","unitTextImperial":"°F"},{"formatTexts":" Dauerlauf|Start|Zuendung|Softstart|Leistungsbrand|Nachlauf|Aus|Saugen|! Asche !|! Pellets !|Pell Switch|Störung|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|Aus|Aus|Aus|Aus|Aus","shortText":"Kesselstatus","unitText":"???","lowerLimit":"","upperLimit":"","name":"CAPPL:FA[0].L_kesselstatus","value":"99","divisor":"","status":"OK","unitTextImperial":"???"},{"formatTexts":" Dauerlauf|Start|Zuendung|Softstart|Leistungsbrand|Nachlauf|Aus|Saugen|! Asche !|! Pellets !|Pell Switch|Störung|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1|Aus|Aus|Aus|Aus|Aus","shortText":"Kesselstatus","unitText":"???","lowerLimit":"","upperLimit":"","name":"CAPPL:FA[0].L_kesselstatus","value":"99","divisor":"","status":"OK","unitTextImperial":"???"},{"formatTexts":"","shortText":"Saugintervall","unitText":"min","lowerLimit":"","upperLimit":"","name":"CAPPL:FA[0].L_saugintervall","value":"83","divisor":"","status":"OK","unitTextImperial":"min"},{"formatTexts":"","shortText":"Brennerlaufzeit","unitText":"h","lowerLimit":"","upperLimit":"","name":"CAPPL:FA[0].L_brennerlaufzeit_anzeige","value":"3189","divisor":"","status":"OK","unitTextImperial":"h"},{"formatTexts":"","shortText":"Tagesleistung","unitText":"kWh","lowerLimit":"???","upperLimit":"???","name":"CAPPL:LOCAL.ertrag[0].leistung_tag","value":"0","divisor":"10","status":"OK","unitTextImperial":"kWh"},{"formatTexts":" Aus|Auto|Ein","shortText":"Betriebsart FA","unitText":"???","lowerLimit":"","upperLimit":"","name":"CAPPL:FA[0].betriebsart_fa","value":"1","divisor":"","status":"OK","unitTextImperial":"???"}]
code 200
conn
data ["CAPPL:LOCAL.L_aussentemperatur_ist","CAPPL:FA[0].L_kesseltemperatur","CAPPL:LOCAL.L_hk[0].vorlauftemp_ist","CAPPL:LOCAL.L_hk[1].vorlauftemp_ist","CAPPL:LOCAL.L_ww[0].einschaltfuehler_ist","CAPPL:LOCAL.L_pu[0].einschaltfuehler_ist","CAPPL:LOCAL.L_pu[0].ausschaltfuehler_ist","CAPPL:LOCAL.L_sk[0].speichertemp_ist","CAPPL:LOCAL.L_sk[0].kollektortemp_ist","CAPPL:FA[0].L_kesselstatus","CAPPL:FA[0].L_kesselstatus","CAPPL:FA[0].L_saugintervall","CAPPL:FA[0].L_brennerlaufzeit_anzeige","CAPPL:LOCAL.ertrag[0].leistung_tag","CAPPL:FA[0].betriebsart_fa"]
displayurl http://192.168.68.250/?action=get&attr=1
header Accept-Language: de
Cookie: language=de; pksession=37567
host 192.168.68.250
httpheader HTTP/1.1 200 OK
Set-Cookie: pksession=37567; Expires=Tue, 19 Jan 2038 04:13:43 CET; Max-Age=600; Path=/; Version="1"
Connection: close
Content-Type: application/json; charset=utf-8
Cache-Control: no-cache
ignoreredirects 0
loglevel 4
path /?action=get&attr=1
protocol http
redirects 0
sid 37567
timeout 10
url http://192.168.68.250/?action=get&attr=1
QUEUE:
Readings:
2014-11-30 18:49:28 ARussentemp 4.3
2015-03-02 10:27:47 AussenTemp 7.7
2014-11-30 20:36:39 Aussentemp 4.3
2015-03-02 10:27:47 BetriebsArt 1
2015-03-02 10:27:47 BrennerLaufZeit 3189
2015-03-02 10:27:47 HeizKreis1_VL 45.5
2015-03-02 10:27:47 HeizKreis2_VL 39.6
2015-03-02 10:27:47 KesselStatus 0
2015-03-02 10:27:47 KesselTemp 59.5
2014-12-01 19:34:56 KesselTempMitte 33.8
2014-12-01 19:34:56 KesselTempOben 48.2
2014-12-01 19:34:56 KesselTempUnten 30.5
2014-11-30 20:36:39 Kesseltemp 62.6
2015-03-02 10:27:47 KollektorTemp 21.7
2014-11-30 20:36:39 Kollektortemp 4.2
2015-03-02 10:27:47 SaugIntervall 83
2015-03-02 10:27:47 SolarErtrag 0
2015-03-02 10:27:47 SpeicherTempMitte 40
2015-03-02 10:27:47 SpeicherTempOben 58.6
2015-03-02 10:27:47 SpeicherTempUnten 32.8
2015-03-02 10:27:47 WarmWasserTemp 61.5
Request:
data ["CAPPL:LOCAL.L_aussentemperatur_ist","CAPPL:FA[0].L_kesseltemperatur","CAPPL:LOCAL.L_hk[0].vorlauftemp_ist","CAPPL:LOCAL.L_hk[1].vorlauftemp_ist","CAPPL:LOCAL.L_ww[0].einschaltfuehler_ist","CAPPL:LOCAL.L_pu[0].einschaltfuehler_ist","CAPPL:LOCAL.L_pu[0].ausschaltfuehler_ist","CAPPL:LOCAL.L_sk[0].speichertemp_ist","CAPPL:LOCAL.L_sk[0].kollektortemp_ist","CAPPL:FA[0].L_kesselstatus","CAPPL:FA[0].L_kesselstatus","CAPPL:FA[0].L_saugintervall","CAPPL:FA[0].L_brennerlaufzeit_anzeige","CAPPL:LOCAL.ertrag[0].leistung_tag","CAPPL:FA[0].betriebsart_fa"]
header Accept-Language: de
Cookie: language=de; pksession=$sid
ignoreredirects 0
retryCount 0
type Update
url http://192.168.68.250/?action=get&attr=1
Helper:
_98_statistics PHeizStat
Attributes:
event-min-interval .*:600
event-on-change-reading .*
reAuthRegex Error 403: Forbidden
reading01Expr $val / 10
reading01Name AussenTemp
reading01Regex CAPPL:LOCAL.L_aussentemperatur_ist","value":"(-[0-9]+|[0-9]+)"
reading02Expr $val / 10
reading02Name KesselTemp
reading02Regex CAPPL:FA\[0\].L_kesseltemperatur","value":"([0-9]+)"
reading03Expr $val / 10
reading03Name HeizKreis1_VL
reading03Regex CAPPL:LOCAL.L_hk\[0\].vorlauftemp_ist","value":"([0-9]+)"
reading04Expr $val / 10
reading04Name HeizKreis2_VL
reading04Regex CAPPL:LOCAL.L_hk\[1\].vorlauftemp_ist","value":"([0-9]+)"
reading05Expr $val / 10
reading05Name WarmWasserTemp
reading05Regex CAPPL:LOCAL.L_ww\[0\].einschaltfuehler_ist","value":"([0-9]+)"
reading06Expr $val / 10
reading06Name SpeicherTempOben
reading06Regex CAPPL:LOCAL.L_pu\[0\].einschaltfuehler_ist","value":"([0-9]+)"
reading07Expr $val / 10
reading07Name SpeicherTempMitte
reading07Regex CAPPL:LOCAL.L_pu\[0\].ausschaltfuehler_ist","value":"([0-9]+)"
reading08Expr $val / 10
reading08Name SpeicherTempUnten
reading08Regex CAPPL:LOCAL.L_sk\[0\].speichertemp_ist","value":"([0-9]+)"
reading09Expr $val / 10
reading09Name KollektorTemp
reading09Regex CAPPL:LOCAL.L_sk\[0\].kollektortemp_ist","value":"(-[0-9]+|[0-9]+)"
reading10Expr { $val % 99 }
reading10Name KesselStatus
reading10Regex CAPPL:FA\[0\].L_kesselstatus","value":"([0-9]+)"
reading11Expr $val
reading11Name SaugIntervall
reading11Regex CAPPL:FA\[0\].L_saugintervall","value":"([0-9]+)"
reading12Expr $val
reading12Name BrennerLaufZeit
reading12Regex CAPPL:FA\[0\].L_brennerlaufzeit_anzeige","value":"([0-9]+)"
reading13Expr $val / 10
reading13Name SolarErtrag
reading13Regex CAPPL:LOCAL.ertrag\[0\].leistung_tag","value":"([0-9]+)"
reading14Expr $val
reading14Name BetriebsArt
reading14Regex CAPPL:FA\[0\].betriebsart_fa","value":"([0-9]+)"
requestData ["CAPPL:LOCAL.L_aussentemperatur_ist","CAPPL:FA[0].L_kesseltemperatur","CAPPL:LOCAL.L_hk[0].vorlauftemp_ist","CAPPL:LOCAL.L_hk[1].vorlauftemp_ist","CAPPL:LOCAL.L_ww[0].einschaltfuehler_ist","CAPPL:LOCAL.L_pu[0].einschaltfuehler_ist","CAPPL:LOCAL.L_pu[0].ausschaltfuehler_ist","CAPPL:LOCAL.L_sk[0].speichertemp_ist","CAPPL:LOCAL.L_sk[0].kollektortemp_ist","CAPPL:FA[0].L_kesselstatus","CAPPL:FA[0].L_kesselstatus","CAPPL:FA[0].L_saugintervall","CAPPL:FA[0].L_brennerlaufzeit_anzeige","CAPPL:LOCAL.ertrag[0].leistung_tag","CAPPL:FA[0].betriebsart_fa"]
requestHeader1 Accept-Language: de
requestHeader2 Cookie: language=de; pksession=$sid
room Heizung
set1Data {"CAPPL:FA[0].betriebsart_fa":"$val"}
set1Map 0:Aus,1:Auto,2:Ein
set1Name Betriebsart
setHeader1 Accept-Language: de
setHeader2 Cookie: language=de; pksession=$sid
setReAuthRegex Error 403: Forbidden
setURL http://192.168.68.250/?action=set
sid1Data username=xx&password=xxx&language=de&submit=Anmelden
sid1Header1 Accept-Language: de
sid1IDRegex pksession=([0-9]+);
sid1IgnoreRedirects 1
sidURL http://192.168.68.250/index.cgi
timeout 10
userattr event-min-interval event-on-change-reading reAuthRegex reading01Expr reading01Name reading01Regex reading02Expr reading02Name reading02Regex reading03Expr reading03Name reading03Regex reading04Expr reading04Name reading04Regex reading05Expr reading05Name reading05Regex reading06Expr reading06Name reading06Regex reading07Expr reading07Name reading07Regex reading08Expr reading08Name reading08Regex reading09Expr reading09Name reading09Regex reading10Expr reading10Name reading10Regex reading11Expr reading11Name reading11Regex reading12Expr reading12Name reading12Regex reading13Expr reading13Name reading13Regex reading14Expr reading14Name reading14Regex requestData requestHeader1 requestHeader2 set1Data set1Map set1Name setHeader1 setHeader2 setReAuthRegex setURL sid1Data sid1Header1 sid1IDRegex sid1IgnoreRedirects sidURL timeout
Das läuft bereits seit gestern, ein Tageswechsel war also schon da.
Danke für hilfreiche Tipps.
Jürgen
Du must erst ein deltareading definieren
Zitat von: tupol am 03 März 2015, 18:56:15
Du must erst ein deltareading definieren
Schon viel besser jetzt :-)
Jetzt muss ich nur noch rausfinden, wie ich den Tageswert da raus bekomme um den in meinem Logfile zu speichern.
Im Moment sieht das so aus.
define PHeizStat statistics PHeiz
attr PHeizStat deltaReadings BrennerLaufZeit
attr PHeizStat singularReadings Pheiz:BrennerLaufZeit:Delta:(Hour|Day)
define nt.PHeizTag notify nt.PHeizTag {\
fhem ('set PHeizTag_SolarErtrag ' .ReadingsVal('PHeiz','SolarErtrag','?'));;\
fhem ('set PHeizTag_BrennerStd ' .ReadingsVal('PHeiz','statBrennerLaufZeit','?'));;\
}
define FileLog_PHeizTag FileLog ./log/PHeizTag-%Y.log PHeizTag.*
Im Logfile PHeizTag.*:
2015-03-03_23:50:00 PHeizTag_SolarErtrag 0.1
2015-03-03_23:50:00 PHeizTag_BrennerStd Hour: 0 Day: 1 Month: 1 Year: 1 (since: 2015-03-03_20:29:48 )
Also das hier soll den "Day" Wert beinhalten:
fhem ('set PHeizTag_BrennerStd ' .ReadingsVal('PHeiz','statBrennerLaufZeit','?'));;\Vielen Dank
Jürgen
Hallo,
ich habe mich in den letzten Tagen mit dem Modul beschäftigt und die Werte werden "statistifiziert"statEnergy_export
Hour: 0.691 Day: 1.114 Month: 9.493 Year: 9.493 (since: 2015-04-10 )
2015-04-11 09:54:25
statEnergy_exportLast
Hour: 0.109 Day: 8.379 Month: - Year: -
2015-04-11 07:59:55
statEnergy_import
Hour: 0.001 Day: 0.709 Month: 2.403 Year: 2.403 (since: 2015-04-10 )
2015-04-11 09:54:25
statEnergy_importLast
Hour: 0.147 Day: 1.694 Month: - Year: -
2015-04-11 07:59:55
Ich habe bisher zwei Zähler SDM630M-DC, die ausgelesen werden. Es soll noch einer dazu kommen.
Es wird das Netz, die PV-Anlage und die Batterie überwacht. Die kWh werden als Energy_import und Energy_export ausgegeben.
Leider werde ich nicht so recht schlau, wie ich die einzelnen Werte für Day, Month, Year in den Floorplan bekomme. Es sollten nur die Werte angezeigt werden, Plotten etc mache ich (noch) nicht.
Wie kann ich das Reading auseinander nehmen?
Wenn ich in den "Fred" schaue sind bei Antwort #26 Einzelwerte zu sehen. Diese sind bei mir aber nicht vorhanden.
Danke für eine Idee im Voraus.
Steffen
Entweder singulare Readings definieren oder per Perlbefehl auseinandernehmen.
Wenn sich jemand mal zu einem Wiki-Eintrag durchringt, würde ich mich beteiligen. ;)
Das ging fix, danke.
Dann werde ich für Hour, Month und Year es mit je einem singularReading probieren, das ist für mich überschaubar. Leider ist Perl "noch" ein Buch mit sieben Siegeln, daher wäre ich für das Wiki ein schlechter Mitarbeiter.
Steffen
Hast du es schonmal mit dem Attribut "singularReadings" versucht?
Habe dies nun eingetragen:define SDM630_PV_Statistik statistics SDM630M_PV
attr SDM630_PV_Statistik deltaReadings Energy_export,Energy_import
attr SDM630_PV_Statistik singularReadings Energy_export:energy:Delta:Hour|Energy_export:energy:Delta:Day||Energy_export:energy:Delta:Month|Energy_export:energy:Delta:Year|Energy_import:energy:Delta:Hour|Energy_import:energy:Delta:Day|Energy_import:energy:Delta:Month|Energy_import:energy:Delta:Year
Die Werte stehen aber nach wie vor so im Reading:statEnergy_export
Hour: 1.692 Day: 7.288 Month: 7.288 Year: 7.288 (since: 2015-04-11 )
2015-04-11 12:44:10
statEnergy_exportLast
Hour: 2.096 Day: 0.000 Month: - Year: - (since: 2015-04-10_21:05:59 )
2015-04-11 11:59:55
statEnergy_import
Hour: 0.000 Day: 0.293 Month: 0.293 Year: 0.293 (since: 2015-04-11 )
2015-04-11 12:44:10
statEnergy_importLast
Hour: 0.000 Day: 0.055 Month: - Year: - (since: 2015-04-10_21:05:59 )
2015-04-11 11:59:55
Es sollte doch nun zumindest für den Stundenwert ein einzelner Wert erscheinen. Ist aber unverändert.
Müssen die alten Einträge erst aus der fhem.save gelöscht werden?
Steffen
Wenn ich das richtig verstehe:
singularReadings <DeviceRegExp:ReadingRegExp>:statTypes:period
dann fehlt bei dir das Device. Und was ist "energy" bei dir?
Probier mal
attr SDM630_PV_Statistik singularReadings SDM630M_PV:Energy_export:Delta:Hour
Danke für die Hilfe, das energy war ein Überbleibsel von einem "Versuch" aus einem anderen "Fred".
Ich hatte es heute Nachmittag so eingetragen aber das deltaReadings vergessen.
define SDM630_PV_Statistik statistics SDM630M_PV
attr SDM630_PV_Statistik deltaReadings Energy_export,Energy_import
attr SDM630_PV_Statistik singularReadings SDM630M_PV:Energy_export:Delta:Hour|SDM630M_PV:Energy_export:Delta:Day|SDM630M_PV:Energy_export:Delta:Month|SDM630M_PV:Energy_export:Delta:Year|SDM630M_PV:Energy_import:Delta:Hour|SDM630M_PV:Energy_import:Delta:Day|SDM630M_PV:Energy_import:Delta:Month|SDM630M_PV:Energy_import:Delta:Year
Nun scheint es zu funktionieren, vielen Dank für die Hilfe. Es war und ist für mich nicht zu erkennen, das ein singularReadings ein deltaReadings bedingt.
Gibt es eine Möglichkeit, die "Startwerte" zu ändern, da diese in Papierform vorliegen?
Steffen
Hallo,
ich hänge mich auch gleich mal wieder mit an. Ist es möglich diesen Ausdruck zu verkürzen? Und wenn ja, wie würde dieser dann aussehen?
solarlog_.*:solar:Max:Hour|solarlog_.*:solar:Max:Day|solarlog_.*:solar:Max:Month|solarlog_.*:solar:Max:Year|solarlog_.*:solar:Min:Hour|solarlog_.*:solar:Min:Day|solarlog_.*:solar:Min:Month|solarlog_.*:solar:Min:Year|solarlog_.*:solar:Avg:Hour|solarlog_.*:solar:Avg:Day|solarlog_.*:solar:Avg:Month|solarlog_.*:solar:Avg:Year
Danke,
Gruß
Tino
Hallo tupol,
die Statistikwerte meiner DS1820 Temperatursensoren (reading temperature) werden mit dem statistics Modul noch nicht korrekt berechnet. Das Problem liegt IMHO im sub statistics_doStatisticMinMax (Zeile 495). Der Wert ' 25.9' wird z.B. bei $value =~ s/(-?[\d.]).*/$1/e; gelöscht.
Mit $value =~ s/(-?[\d.]*)/$1/e funktioniert es bei mir.
Kannst Du mir noch einen Tipp geben, wie ich den Tagesdurchschnitt nur einmal am Tag in ein Logfile bringe?
@Tino: versuchs mal mit:
solarlog_.*:solar:(Max|Min|Avg):(Hour|Day|Month|Year)
Der Fehler ist schon seit mehreren Monaten behoben.
Zum Loggen bieten sich die last-Readings an.
ZitatDer Fehler ist schon seit mehreren Monaten behoben.
Ich verwende die neueste statistics Version vom 9.1.15. Es Funktioniert bei mir nur mit
$value =~ s/(-?[\d.]*)/$1/e
Aus dem sub statistics_maxDecPlaces erhalte ich die Meldung: Argument "ShowDate:" isn't numeric in numeric eq (==)
Folgendes liefert Dumper für @hidden in der aufrufenden Routine vor Übergabe:
$VAR1 = 'Sum:';
$VAR2 = 0;
$VAR3 = 'Time:';
$VAR4 = '21448087267';
$VAR5 = 'LastValue:';
$VAR6 = '';
$VAR7 = '19.5';
$VAR8 = 'LastTime:';
$VAR9 = '1429873996';
$VAR10 = 'ShowDate:';
$VAR11 = 'ShowDate:';
$VAR12 = 'DecPlaces:';
$VAR13 = '1';
Auch nachdem ich ein neues Statistik-device für die Temperaturen erstellt habe, kommen die gleichen Fehler.
In der Version vom 9.1.15 sollte
495 $value =~ s/(-?[\d.]*).*/$1/e;
stehen (siehe auch SourceForge) und das entspricht Deinem Term.
Kannst Du bitte für das statistics-Device ein
attr global showInternalValues 1
list <device>
attr global showInternalValues 0
hier posten. Da ist vermutlich, etwas mit den Summen-Werten durcheinander geraten.
Zitat495 $value =~ s/(-?[\d.]*).*/$1/e;
Mein Term funktioniert nur ohne ".*" !
Anbei mein device-list der Statistik:
Internals:
DEF T_Wohnen
DEV_REGEXP T_Wohnen
NAME Heiz_Statistik
NR 76
NTFY_ORDER 10-Heiz_Statistik
PREFIX stat
STATE Updated stats for: T_Wohnen
TYPE statistics
Readings:
2015-04-24 12:50:57 .Puffer_mitte:temperatureDay Sum: 0 Time: 4289614866 LastValue: 41.2 LastTime: 1429872657 ShowDate: ShowDate: DecPlaces: 1
2015-04-24 12:50:57 .Puffer_mitte:temperatureMonth Sum: 0 Time: 4289614866 LastValue: 41.2 LastTime: 1429872657 ShowDate: ShowDate: DecPlaces: 1
2015-04-24 12:50:57 .Puffer_mitte:temperatureYear Sum: 0 Time: 4289614866 LastValue: 41.2 LastTime: 1429872657 ShowDate: ShowDate: DecPlaces: 1
2015-04-27 22:06:06 .T_Wohnen:temperatureDay Sum: 0 Time: 331790443277 LastValue: 19.9 LastTime: 1430165166 ShowDate: ShowDate: DecPlaces: 1
2015-04-27 22:06:06 .T_Wohnen:temperatureMonth Sum: 0 Time: 1252689727025 LastValue: 19.9 LastTime: 1430165166 ShowDate: ShowDate: DecPlaces: 1
2015-04-27 22:06:06 .T_Wohnen:temperatureYear Sum: 0 Time: 1252689727033 LastValue: 19.9 LastTime: 1430165166 ShowDate: ShowDate: DecPlaces: 1
2015-04-26 15:04:24 monitoredDevicesGPIO4 T_Wohnen
2015-04-27 21:59:55 nextPeriodChangeCalc 2015-04-27 22:59:55
2015-04-27 22:06:06 state Updated stats for: T_Wohnen
Fhem:
modulVersion $Date: 2015-01-09 22:00:59 +0100 (Fri, 09 Jan 2015) $
Attributes:
verbose 3
list T_Wohnen (Temperatursensor):
Internals:
CHANGED
DEF 10-000801ff7e6f
ERRORCOUNT 0
INTERVAL 60
NAME T_Wohnen
NR 26
STATE T: 19.9 °C ▴ | 22:42
TYPE GPIO4
Readings:
2015-04-27 22:06:06 statTemperatureDay Min: 0.0 Avg: 0.0 Max: 20.1
2015-04-26 23:59:55 statTemperatureDayLast Min: 0.0 Avg: 0.0 Max: 20.4
2015-04-27 22:06:06 statTemperatureMonth Min: 19.3 Avg: 0.0 Max: 21.1
2015-04-27 22:06:06 statTemperatureYear Min: 19.3 Avg: 0.0 Max: 21.1
2015-04-27 22:42:36 state T: 19.9 °C ▴ | 22:42
2015-04-27 22:42:36 temperature 19.9
Fhem:
interfaces temperature
Helper:
_98_statistics Heiz_Statistik
Attributes:
event-on-change-reading temperature
model DS1820
room GPIO4
Bislang wurde der Tagesdurchschnitt auch noch nie berechnet.
Hoffe es hilft dir weiter.
Gruß
Karlheinz
Zitat von: optimizer am 27 April 2015, 22:48:27
Mein Term funktioniert nur ohne ".*" !
Bei Dir sind die Hidden-Werte durcheinander. Nach LastValue hast Du zwei Leerzeichen. Wo kommen die her? Hat Dein Reading ein Leerzeichen am Anfang?
ZitatHat Dein Reading ein Leerzeichen am Anfang?
Ja, das sieht ganz danach aus. Aber dafür sollte ja die $value Variable nur die Zahl weiterverarbeiten.
Bitte einmal die neue Version testen.
Hallo tupol,
mit der neuen Version funktioniert es bislang einwandfrei. Danke.
Einen Feature-Request hätte ich noch :-)
Bei Stromverbrauch und vor allem bei Stromerzeugung verwende ich lieber den rollierenden 12-Monatswert anstatt Jahreswert. Im Vergleich zur 12-M-Vorperiode (last) hat man damit stets die Veränderung trotz saisonalen Schwankungen auf einen Blick. Dazu müssten die letzten 24 Monatswerte zwischengespeichert bzw. nachgelesen werden.
Ist das als zusätzlicher Statistikwert machbar?
Gruß
Karlheinz
Das ist zu speziell. Das sollte besser über eine Datenbanken erfolgen.
ZitatDas ist zu speziell. Das sollte besser über eine Datenbanken erfolgen.
:'(
Eine Warnung bekomme ich noch beim FHEM-Start:
2015.05.02 23:34:15 1: PERL WARNING: Argument "ShowDate:" isn't numeric in numeric eq (==) at ./FHEM/98_statistics.pm line 550.
2015.05.02 23:34:15 1: PERL WARNING: Use of uninitialized value in string ne at fhem.pl line 3782.
Das liegt wohl an nicht richtig geschriebenen Datensatz: 2015-05-02 23:44:02 .T_Wohnen:temperatureMonth Sum: 1840948.5 Time: 409115106969 LastValue: 20.2 LastTime: 1430603042
ShowDate: ShowDate: DecPlaces: 1
Habe die Werte einfach durch
ShowDate: 0 in fhem.save ersetzt.
Das Energiemessgerät HM-ES-TX-WM hat ein neues Reading "energyCalc" spendiert bekommen, da das Gerät selber nach 832kW/h überlauf den Wert wieder von selber auf 0 setzt. Auf energyCalc wird dann das delta des resets addiert. Leider ignoriert Statistics das Reading, auch mein Singularreading HAUS.STROM:energyCalc:Delta:(Hour|Day|Month|Year) hilft nicht.
Liegt dies am Statistics modul das es angepasst werden muss?
Benutze bitte die Attribute: deltaReadings, durationReadings, minAvgMaxReadings, tendencyReadings
Hi,
mein Workaround war energyCalc zu den knowndevices hinzuzufügen aber ich hab im SVN gesehen das du es nun auch hinzugefügt hast. Danke!
VG
Hallo Tupol,
beim loggen eines energy-Readings (Zählerstand) verwende ich die Statistik-Berechnung bereits ausgiebig:
[font=courier]
energy 21402.5 2015-08-08 17:12:45
statEnergy Hour: 0.0 Day: 26.8 Month: 193.7 Year: 2173.5 (since: 2015-04-20 ) 2015-08-08 16:59:55
statEnergyDay 26.8 2015-08-08 16:59:55
statEnergyDayLast 27.6 2015-08-07 23:59:56
statEnergyLast Hour: 0.9 Day: 27.6 Month: 670.3 Year: - 2015-08-08 16:59:55[/font]
Zum Loggen von Delta-Tageswerten haben ich bereits ein singularReadings (vz280:energy:Delta:(Day|Month|Year)) angelegt.
Nun möchte ich ebenfalls einmal pro Tag den Zählerstand mitloggen:
vz280:energy:(Delta|Max):(Day|Month|Year)
Es wird aber nur ein statEnergyDayLast erzeugt.
Kann der *DayLast-Reading-Name beeinflusst werden um beide Readings zu erzeugen? Hast du einen anderen Vorschlag?
Gruß
optimizer
Max gibt es nicht bei delta readings. Versuch mal ein zweites statistics auf den stat wert. Bin mir aber nicht sicher, ob das funktioniert..
Wie vermutet wird auch in einer weiteren statistics-Definition kein Max-Eintrag bei Delta-Readings erzeugt.
Dass bei Delta-Reading von Haus aus kein MIN/MAX gerechnet wird, leuchtet mir ein.
Aber was spricht dagegen bei einem expliciten "singularReadings" die angegebenen statTypes zu errechnen, z.B. als statxxxxMaxDayLast?
Es würde das tägliche loggen von Zählerständen enorm erleichtern.
Wie hast du das neue statistics definiert?
ZitatWie hast du das neue statistics definiert?
Im Prinzip wie das erste, jedoch mit "Max" als Präfix nur mit einem singularreading:
Internals:
CFGFN
DEF vz280 Max
DEV_REGEXP vz280
NAME PV_Statistik_Max
NR 733
NTFY_ORDER 10-PV_Statistik_Max
PREFIX Max
STATE Updated stats for: vz280
TYPE statistics
Readings:
2015-08-21 15:35:39 monitoredDevicesVOLKSZAEHLER vz280
2015-08-23 21:59:55 nextPeriodChangeCalc 2015-08-23 22:59:55
2015-08-23 21:59:55 state Updated stats for: vz280
Fhem:
modulVersion $Date: 2015-07-27 17:56:28 +0200 (Mon, 27 Jul 2015) $
Attributes:
singularReadings vz280:energy:(Max):(Hour|Day)
Könntest du bei Delta-Readings nicht auch das DayLast für MinMax automatisch einmal am Tag zu erzeugen?
Mit dieser definition bildest du aber keine statistic des stat-wertes. Du must noch die readings definieren.
Moin,
mit dieser Definition erstelle ich ein Statistik-Device:
define Statistik statistics Wetterstation|SW_.*|Switch_Heizkeller stat_
Von meinen verschiedenen Switchen erhalte ich die Statistiken. Einen Switch und einzelne Readings von Wetterstation möchte ich ausschließen:
attr Statistik excludedReadings Wetterstation:(rain|brightness),SW_Radio:.*
oder auch
attr Statistik excludedReadings Wetterstation:(rain|brightness)|SW_Radio:.*
schließen die Statistiken für den SW_Radio leider nicht aus. Was mache ich falsch?
Hallo tupol,
dann hab ich wohl nicht verstanden, was du mit "statistic des stat-wertes" meinst. :-[
Mit einem separaten Reading (Kopie von energy) + minAvgMaxReadings auf Kopie + singularReadings würde es zwar funktionieren, ich suche aber nach einem einfacheren Weg.
Ich finde ein zusätzlicher MinAvgMax u. *Last auch bei Delta-Readings würde dein Modul aufwerten.
Hallo tupol,
ist es möglich das Modul zu erweitern um auch das Reading windGust auszuwerten? Der LaCrosse TX22 liefert Windgeschwindigkeit und Böen.
Ich habe folgendes konfiguriert:
attr Wetter.Statistik singularReadings Wetter.Terrasse:rain:Delta:(Hour|Day)|Wetter.*:temperature:(Avg|Max|Min):(Day|Week|Month|Year)|Wetter.Terrasse:(windSpeed|windGust):Max:(Hour|Day)
attr Wetter.Statistik excludedReadings Wetter.*:humidity
Der Sensor Wetter.Terrasse liefert u.a. diese Readings:
2015-09-08 20:52:33 statWindSpeedHour Min: 0.0 Avg: 0.5 Max: 1.5
2015-09-08 19:59:55 statWindSpeedHourLast Min: 0.0 Avg: 0.8 Max: 2.6
2015-09-08 20:52:33 statWindSpeedHourMax 1.5
2015-09-08 19:59:55 statWindSpeedHourMaxLast 2.6
2015-09-08 20:51:53 state T: 15.9 H: 57
2015-09-08 20:52:33 temperature 15.9
2015-09-08 20:52:33 windDirectionDegree 157.5
2015-09-08 20:52:33 windDirectionText SSE
2015-09-08 20:51:53 windGust 0.9
2015-09-08 20:52:33 windSpeed 0.4
windSpeed und die anderen Readings werden durch Wetter.Statistik korrekt berechnet. Nur bei windGust passiert leider nix.
Viele Grüße
oki
Ja ist möglich. Siehe commandref.
geht tatsächlich, ich hatte minAvgMaxReadings übersehen, peinlich :-[
Hi, ich häng meine Frage hier einfach mal dran.
Ich habe das Module aktiviert:
define ErtragWaermepumpe statistics ebus
attr ErtragWaermepumpe deltaReadings Energieertrag
Im Geräte ebus gibts 4 Readings, die minütlich aktualisiert werden. Das Reading "Energieertrag" wird nur aller 2 Stunden aktualisiert. Im Event monitor, sehe ich jedoch 4 Einträge für das Statistikmodul (wenn sich die minütlichen Readings aktualisieren).
2015-10-05 18:58:18 GAEBUS ebus Vorlauf: 34.19 ok
2015-10-05 18:58:18 GAEBUS ebus statEnergieertrag: Hour: 0 Day: 10 Month: 28 Year: 28 (since: 2015-10-03 )
2015-10-05 18:58:18 GAEBUS ebus Rücklauf: 25.44 ok
2015-10-05 18:58:18 GAEBUS ebus statEnergieertrag: Hour: 0 Day: 10 Month: 28 Year: 28 (since: 2015-10-03 )
2015-10-05 18:58:18 GAEBUS ebus Wärmepumpenstatus: heat
2015-10-05 18:58:18 GAEBUS ebus statEnergieertrag: Hour: 0 Day: 10 Month: 28 Year: 28 (since: 2015-10-03 )
2015-10-05 18:58:18 GAEBUS ebus Energieintegral: -20
2015-10-05 18:58:18 GAEBUS ebus statEnergieertrag: Hour: 0 Day: 10 Month: 28 Year: 28 (since: 2015-10-03 )
Ich habe schon die Optionen ignoreDefaultAssignments mit 0 und 1 probiert. excludedReadings ebenfalls auf diese 4 Reading gesetzt. Hat leider alles nichts geholfen.
Gibts dazu eine Idee?
Gruß Martin
Das ist korrekt. Die Statistik wird jedesmal aktualisiert, wenn ein notify-event auf dem Gerät erzeugt wird.
Danke für die Antwort. Gibts eine Möglichkeit das zu verhindern, oder macht das aus Architektursicht keinen Sinn?
Hallo,
wäre es möglich, das Modul um das reading temperature2
zu erweitern?
Ich möchte nämlich bei einem TX25IT den Wert vom Kabelsensor auch mit erfassen.
Gruß
Stefan
Hallo tupol,
im Sub statistics_doStatisticSpecialPeriod müsste while ( $#hidden > $specialPeriod ) {
meiner Meinung nach so lauten: while ( $#hidden >= $specialPeriod ) {
(s. Patch-Datei)
Diese Funktion hat mich dabei inspiriert, einen lang ersehnten Wunsch umzusetzen ;) : einen rollierenden Monatszeitraum (z.B. 12 Monate) mit dem davor liegenden Zeitraum vergleichen zu können.
Die neue Funktion "statistics_doStatisticSpecialPeriodMonth" mit dem neuen Attribut "specialDeltaPeriodMonth" erzeugt dann zwei Readings: stat*specialPeriodMonth u. stat*specialPeriodMonthLast
Eine weitere Funktion "ReadStatistik" hilft vielleicht auch anderen, die einen Hour/Day/Month/Year-StatistikWert aus so einem Reading
Hour: 0.2 Day: 11.8 Month: 11.8 Year: 123.0
ermitteln wollen: Z.B. gibt dann der Aufruf ReadStatistik("DeinDeviceName","statReadingName","Month") den jeweiligen Monatswert zurück.
Wäre schön, wenn du die Änderungen in das Modul aufnehmen könntest. (s. Patch-Datei)
Gruß
optimizer
PS: Als weitere Möglichkeit könnte man die Funktion noch allgemeiner gestalten, um alle Perioden und verschiedene Funktionen (sum, avg) zu ermöglichen.
z.B. mit Attribut specialDeltaPeriodNew 12 month avg
einen Durchschnitt über die letzten 12 Monate.
nur so 'ne Idee :)
Hallo Optimizer,
Danke für die Vorschläge.
Das mit dem "while" erschließt sich mir aber nicht. Meines Erachtens ist da kein Fehler.
Für die specialPeriods müsste etwas allgemeineres ähnlich der singularReadings aufgebaut werden - mit mehreren Perioden für definierte Readings. Da habe ich ein statistics_doStatisticSpecialPeriod2 angefangen, bin aber noch nicht weit gekommen. Insbesondere die Attribute-Definition wird einfach immer unübersichtlicher
ReadStatistiks ist sinnvoll aber besser in myUtils und der Wiki aufgehoben. Für das statistics-Modul gibt es ja bereits singularReadings
Gruß
tupol
Hallo tupol,
in der while Zeile sollte ">" durch ">=" ersetzt werden, sonst wird z.B. bei specialDeltaPeriodHour=2 eine Summe aus drei Readings gebildet.
<{ReadStatistik("DeinDeviceName","statEnergyGesamtverbrauch","Month")}> usw. verwende ich in einer readingsGroup Tabelle ohne für jede Periode ein singularReading erstellen zu müssen. Das ist natürlich Geschmackssache.
Ein Universal specialPeriod 2.0 hört sich noch besser an. Wenn man das nur für delta-Readings ohne Device-Nennung machen würde, stell ich mir das nicht ganz so kompliziert vor. Wenn du Unterstützung brauchst, melde dich.
Gruß
optimizer
Danke. "while"-bug ist gefixt.
Halo, da die Speicherkarte in meinem Raspi wieder mal defekt war, bin ich jetzt auf einen Cubietruck umgezogen. Das Statistics-Modul hatte bis November ohne Probleme bei mir funktioniert. Nach dem Umzug werden die Tagwerte endlos weitergezählt. Leider kann ich keinen Fehler bei mir finden. Ist aber eventuell auch meinem Wissen geschuldet.
In der fhem. cfg ist folgendes eingetragen:define SDM630_Haus_Statistik statistics SDM630M_Haus
attr SDM630_Haus_Statistik deltaReadings Energy_export,Energy_import
attr SDM630_Haus_Statistik singularReadings SDM630M_Haus:Energy_export:Delta:Hour|SDM630M_Haus:Energy_export:Delta:Day|SDM630M_Haus:Energy_export:Delta:Month|SDM630M_Haus:Energy_export:Delta:Year|SDM630M_Haus:Energy_import:Delta:Hour|SDM630M_Haus:Energy_import:Delta:Day|SDM630M_Haus:Energy_import:Delta:Month|SDM630M_Haus:Energy_import:Delta:Year
define SDM630_PV_Statistik statistics SDM630M_PV
attr SDM630_PV_Statistik deltaReadings Energy_export,Energy_import
attr SDM630_PV_Statistik singularReadings SDM630M_PV:Energy_export:Delta:Hour|SDM630M_PV:Energy_export:Delta:Day|SDM630M_PV:Energy_export:Delta:Month|SDM630M_PV:Energy_export:Delta:Year|SDM630M_PV:Energy_import:Delta:Hour|SDM630M_PV:Energy_import:Delta:Day|SDM630M_PV:Energy_import:Delta:Month|SDM630M_PV:Energy_import:Delta:Year
Es betrifft zwei "Stromzähler" SDM630, wo ich die Werte mit Energy_export und Energy_import auslese.
Dank im Voraus
Steffen
Das scheint korrekt zu sein. Allerdings reicht ein statistics zu mit "SDM630M_Haus|SDM630M_PV"
Mach mal modul-verbose 5 an und untersuche den Log beim Tageswechsel
Danke, mit "SDM630M_Haus|SDM630M_PV" würde doch aber bedeuten, das er alles in die statistics aufnimmt. Es werden auch noch andere Werte genutzt. Ich habe mal im log nachgeschaut, das einzige was da im Moment in Frage kommt ist eventuell backup (hatte ich bisher auf 23:59 eingestellt). Diese habe ich jetzt auf 00:05 eingestellt und werde den nächsten Tageswechsel mal mit verbose 5 anschauen.
Interessant ist, ob statistics im log den Tageswechsel erkennt. Dafür muss es kurz vor 24:00 laufen. Normalerweise 5 s.
Ich kann Entwarnung geben. Nachdem ich den backup Zeitpunkt nach Mitternacht verschoben habe, scheint es zu funktioniern. Es werden nun wieder korrekte Werte angezeigt.
hallo,
ich habe ein Frage zum statistics-Modul.
Ich nutze einen Temperatursensor (Bresser_Temp) für den ich Statistikwerte mit dem Modul erweitern möchte.
define Statistik statistics Bresser_Temp
attr Statistik ignoreDefaultAssignments 1
attr Statistik minAvgMaxReadings temperature,humidity,dewpoint
attr Statistik room TRX_WEATHER
attr Statistik singularReadings Bresser_Temp:temperature:Max:Day
attr Statistik tendencyReadings temperature,humidity,dewpoint
die minMaxAVG und Tendency-Readings werden sauber erzeugt. Das singularReading allerdings nicht.
Lösche ich die minMaxAvg und TendencyReadings, dann wird auch das singularReading erzeugt. Ist das normal?
Gruß Michael
Hallo zusammen
Ich habe mir Anfangs Februar mal das Statistics Modul definiert, um damit eine schöne Darstellung des Stromverbrauchs zu bekommen. Zu diesem Zweck habe ich dazumal "stat_Adapter_Waschmaschine" definiert. Da ich mittlerweilen jedoch den Stromverbrauch anders logge, habe ich dieses define wieder gelöscht. (Kommandozeile delete stat_Adapter_Waschmaschine). Das hat auch funktioniert.
Nur bekomme ich jetzt in unregelmässigen Abständen diese Meldung im Global Logfile:
2016.02.26 15:35:01 1: PERL WARNING: Argument "stat_Adapter_Waschmaschine" isn't numeric in subtraction (-) at ./FHEM/92_FileLog.pm line 752, <GEN23729> line 559.
2016.02.26 15:33:50 1: PERL WARNING: Argument "stat_Adapter_Waschmaschine" isn't numeric in subtraction (-) at ./FHEM/92_FileLog.pm line 752, <GEN23632> line 559.
2016.02.26 15:33:30 1: PERL WARNING: Argument "stat_Adapter_Waschmaschine" isn't numeric in subtraction (-) at ./FHEM/92_FileLog.pm line 752, <GEN23574> line 559.
2016.02.26 15:32:11 1: PERL WARNING: Argument "stat_Adapter_Waschmaschine" isn't numeric in subtraction (-) at ./FHEM/92_FileLog.pm line 752, <GEN23464> line 559.
2016.02.26 15:31:52 1: PERL WARNING: Argument "stat_Adapter_Waschmaschine" isn't numeric in subtraction (-) at ./FHEM/92_FileLog.pm line 752, <GEN23405> line 559.
2016.02.26 15:31:25 1: PERL WARNING: Argument "stat_Adapter_Waschmaschine" isn't numeric in subtraction (-) at ./FHEM/92_FileLog.pm line 752, <GEN23341> line 559.
2016.02.26 15:30:35 1: PERL WARNING: Argument "stat_Adapter_Waschmaschine" isn't numeric in subtraction (-) at ./FHEM/92_FileLog.pm line 752, <GEN23275> line 559.
2016.02.26 15:30:17 1: PERL WARNING: Argument "stat_Adapter_Waschmaschine" isn't numeric in subtraction (-) at ./FHEM/92_FileLog.pm line 752, <GEN23223> line 559.
ich habe die ganze cfg durchgesucht, es gibt nirgends mehr einen Eintrag der so lautet. Ebenso habe ich sämtliche FileLog die ich definiert habe durchgesucht, auch dort finde ich nirgends mehr einen Eintrag, dass noch auf das Statistics Modul verweiset...
hat jemand eine Idee wo ich noch suchen könnte oder woher das diese Meldung kommt?
Danke!
Hallo,
../log/fhem.save ?
Gruß Christoph
auch dort lässt sich keinerlei Eintrag mit stat_Adapter_Waschmaschine finden!
Hallo,
es gibt noch eine Datei Event.types oder so ähnlich, da könnte noch etwas drinstehen. Kommen die Meldungen auch noch nach einem Neustart ?
Gruß Christoph
Du meinst vermutlich die Datei eventTypes.txt, welche im log Verzeichnis liegt!?
Auch in dieser steht nirgends was von stat_Adapter_Waschmaschine und allgemein vom Statistics Modul :-\
sonst noch eine Idee?
Vermutung: es ist noch ein SVG definiert, dass auf die Daten zugreifen möchte.
Sonst: attr global stacktrace 1
@dev0
Danke! Genau das war es. Obwohl ich die svg Dateien mehrfach angeschaut habe, ob da noch was definiert ist, habe ich die Plots alle gelöscht. Und siehe da, seit einer Woche keine Abstürze mehr.
Vielen Dank!
Hallo alle zusammen,
ich habe den Gassensor von Homematic, der wird auch nicht vom Statistic Modul unterstützt.
Nachdem ich aber 2 userreading mit "power" und "energy" mittels attribute erstellt habe,
wird auch der jetzt unterstützt, also das geht hervorragend. :-)
Gruss, Ingolf.
Hallo,
ich versuche mich auch gerade an statistics mit einem KNX-Aktor.
Ich möchte gern die Aussentemperatur auswerten.
definiert habe ich:
define Garten_temp EIB 10c8
attr Garten_temp IODev EIB
attr Garten_temp alias Temperatur außen
attr Garten_temp dummy 1
attr Garten_temp model tempsensor
attr Garten_temp room Wetter
define Garten_temp_statistic statistics Garten_temp
attr Garten_temp_statistic room Wetter
Nun bekomme ich aber als Readings folgendes angezeigt:
ZitatstatStateDay
statStateDay
7.7_°C: 00:19:59 7.7_°C_Count: 1 7.9_°C: 00:09:59 7.9_°C_Count: 1 8.1_°C: 00:29:56 8.1_°C_Count: 1 8.2_°C 00:00:00 8.2_°C: 00:05:02 8.2_°C_Count 00:00:01 (since: 2016-03-27_21:11:16)
statStateMonth
7.7_°C: 00:19:59 7.7_°C_Count: 1 7.9_°C: 00:09:59 7.9_°C_Count: 1 8.1_°C: 00:29:56 8.1_°C_Count: 1 8.2_°C 00:00:00 8.2_°C: 00:05:02 8.2_°C_Count 00:00:01 (since: 2016-03-27_21:11:16)
statStateYear
7.7_°C: 00:19:59 7.7_°C_Count: 1 7.9_°C: 00:09:59 7.9_°C_Count: 1 8.1_°C: 00:29:56 8.1_°C_Count: 1 8.2_°C 00:00:00 8.2_°C: 00:05:02 8.2_°C_Count 00:00:01 (since: 2016-03-27_21:11:16)
state
7.7 °C
wie bekomme ich das in ein ordentliches Format was ich dann wieder mit einem notify einem dummy zuweisen kann?
Danke!
Ein min-max-Reading für den state definieren. State ist per default ein duration -Reading
Hallo tupol,
Du meinst folgendes?
attr Garten_temp_statistic minAvgMaxReadings state
DANKE!!!
Hallo,
ich möchte die Anzahl der state-Zustände "open" eines Sensors pro Stunde zählen. Standardmäßig werden für Duration-Readings nur Day|Month|Year unterstützt.
Definiere ich über Attribut "durationReadings state", werden auch nur statStateDay, statStateMonth und statStateYear im Gerät erstellt, obwohl zumindest in der deutschen Commandref http://fhem.de/commandref_DE.html#statistics (http://fhem.de/commandref_DE.html#statistics) auch "Stunde" funktionieren sollte.
Die Alternative eine expliziten "singularReadings" führt leider auch zu keinem Erfolg.
Internals:
CFGFN
DEF AL_AZ4_Sensor_Btn_0[1-5]
DEV_REGEXP AL_AZ4_Sensor_Btn_0[1-5]
NAME AL_statistics
NR 10709
NTFY_ORDER 10-AL_statistics
PREFIX stat
STATE Updated stats for: AL_AZ4_Sensor_Btn_03
TYPE statistics
Readings:
2016-04-24 13:34:37 monitoredDevicesCUL_HM AL_AZ4_Sensor_Btn_01,AL_AZ4_Sensor_Btn_02,AL_AZ4_Sensor_Btn_03,AL_AZ4_Sensor_Btn_04,AL_AZ4_Sensor_Btn_05
2016-04-24 14:59:56 nextPeriodChangeCalc 2016-04-24 15:59:55
2016-04-24 15:20:31 state Updated stats for: AL_AZ4_Sensor_Btn_03
Fhem:
modulVersion $Date: 2016-04-03 12:58:45 +0200 (Sun, 03 Apr 2016) $
nextPeriodChangeTime 1461506395
Attributes:
ignoreDefaultAssignments 1
room Administration
singularReadings AL_AZ4_Sensor_Btn_05:state:open:Hour
Für hilfreiche Hinweise bin ich dankbar.
Viele Grüße
Für was benötigst du das genau?
Bei dem Sensor handelt es sich um das 8-Kanal-Sendemodul HM-MOD-EM-8. An drei Kanaleingängen habe ich Bewegungssensoren angeschlossen. Die Sensoren wechseln bei Bewegung von "closed" auf "open". Ich möchte die Anzahl der Bewegungen über den Tag darstellen, um ein Bewegungsprofil darstellen zu können. Dazu reicht mir die Aggregation auf eine Stunde. Das könne ich auch mit dem Modul HourCounter realisieren, mit dem statistics-Modul wäre es aber eleganter.
Ich kann mir auch weitere Anwendungsfälle vorstellen, z.B. bei Verbrauchsmessungen auf Basis von Impulsen.
Viele Grüße
Es gibt im nächsten Update das Attribute durationPeriodHour
Für eine Verbrauchsmessung ist HourCounter besser geeignet.
Ich bin begeistert, wie schnell hier aus einer Frage eine Featurezusage wird. Vielen Dank!!
Zitat von: tupol am 25 April 2016, 19:08:31
Für eine Verbrauchsmessung ist HourCounter besser geeignet.
Servus
Aus welchen Grund ist bitte HourCounter besser geeignet?
Ich würde gerne specialDeltaPeriods für ein Fensterkontakt definieren.
Was gebe ich bitte unter dem Gerätewert an? Duration? Open?
specialDeltaPeriods <Gerät:Gerätewert:Zeitraum:Anzahl1:Anzahl2:...>
Sehr merkwürdig. :o
Obwohl ich so definiert habe:
## TEMP
define stats_temp1 statistics temp_.*
attr stats_temp1 minAvgMaxReadings temperature
attr stats_temp1 singularReadings temp_.*:temperature:(Min|Avg|Max):(Hour|Day|Month|Year)
legt er immer statHumidityDay an
Dabei hat der Temperatur Sensor nur "temperature" und "state" als Readings.
Zitat von: afloria am 24 August 2016, 00:08:06
Sehr merkwürdig. :o
Obwohl ich so definiert habe:
## TEMP
define stats_temp1 statistics temp_.*
attr stats_temp1 minAvgMaxReadings temperature
attr stats_temp1 singularReadings temp_.*:temperature:(Min|Avg|Max):(Hour|Day|Month|Year)
legt er immer statHumidityDay an
und auch schon selber gelöst.
Wenige Zeit später wird dann auch "humidity" als Reading angelegt durch das dewpoint module wenn ich das richtig sehe.
### ALLGEMEIN - HUMIDITY
define dew_all dewpoint dewpoint .* temperature humidity dewpoint
attr dew_all absFeuchte 1
Ich habe jetzt dht_.* als Device Regex eingetragen, so wird nicht mehr jedes Device versucht zu berechnen.
Könnte man bei Gelegenheit mal prüfen, warum das nicht zunächst prüft ob temperature und humidity auch vorhanden sind...
Dabei hat der Temperatur Sensor nur "temperature" und "state" als Readings.
Hallo allerseits,
ich habe vor meinen Stromverbrauch zu messen und will in einer Grafik monatlich angezeigt bekommen, welchen Verbrauch ich hatte.
Dabei habe ich mir mehrere Varianten der Umsetzung in fhem angeschaut. Diese hier scheint mir am vielversprechendsten zu sein.
Ich stelle mir aktuell die Frage, ob man das Statistics-Modul auch mit einer Datenbank kombinieren kann, da ich kein Fan von Textdateien bin und diese schnell unübersichtlich und statisch sind.
Zum anderen ist mir eines noch nicht ganz klar. Meine Aktoren, z.B. Fibaro WallPlugs liefern Werte in dessen Readings. Da ich diese Werte aber nach Möglichkeit nicht löschen möchte, ist die Frage, ob es Sinn macht, eigene Readings zu erstellen? Wenn ja, hat jemand Erfahrungen gemacht, wie man dies am elegantesten umsetzt?
Viele Grüße
Gruvol
Zitat von: Gruvol am 07 Oktober 2016, 16:04:13
Hallo allerseits,
ich habe vor meinen Stromverbrauch zu messen und will in einer Grafik monatlich angezeigt bekommen, welchen Verbrauch ich hatte.
Dabei habe ich mir mehrere Varianten der Umsetzung in fhem angeschaut. Diese hier scheint mir am vielversprechendsten zu sein.
Ich stelle mir aktuell die Frage, ob man das Statistics-Modul auch mit einer Datenbank kombinieren kann, da ich kein Fan von Textdateien bin und diese schnell unübersichtlich und statisch sind.
Zum anderen ist mir eines noch nicht ganz klar. Meine Aktoren, z.B. Fibaro WallPlugs liefern Werte in dessen Readings. Da ich diese Werte aber nach Möglichkeit nicht löschen möchte, ist die Frage, ob es Sinn macht, eigene Readings zu erstellen? Wenn ja, hat jemand Erfahrungen gemacht, wie man dies am elegantesten umsetzt?
Viele Grüße
Gruvol
Sollte grundsätzlich möglich sein, steht bei mir jedoch auch nur auf der Todo Liste. Wenn ich es mal erarbeitet habe... schreibe ich dir... oder wenn ich mal Zeit habe, könnten wir uns da zusammen dransetzen...
Hallo,
zur rollierenden Verbrauchsmessung finde ich das Attribut specialDeltaPeriods echt super. Damit man schnell die vorhergehende Periode vergleichen kan,n habe ich die Funktion statistics_doStatisticSpecialPeriod2 um eine Berechnung der Vorgängerperiode erweitert. Damit ist dann z.B. ein saisonbereinigter 12-Monats-Vergleich des Stromverbrauchs oder -erzeugung leicht möglich. In einem readingsgroup sieht das dann z.B. so aus wie im Anhang (12Monate u. vorher).
Wäre natürlich schön, wenn die Änderungen ins Modul einfliessen würden:
sub statistics_doStatisticSpecialPeriod2 ($$$$$$)
{
my ($hash, $dev, $readingName, $periodText, $decPlaces, $value) = @_;
my $name = $hash->{NAME};
my $pattern;
my $specialDeltaPeriods = AttrVal($name, "specialDeltaPeriods", "");
return unless $specialDeltaPeriods;
# Check if reading occures in attribute specialDeltaPeriods, extract period numbers
my $devName = $dev->{NAME};
$pattern = $devName . ":" . $readingName . ":" . $periodText . ':([\d:]+)';
#better userinput-error-handling needed. check for missing arguments
statistics_Log $hash, 3, "pattern: $pattern";
return unless $specialDeltaPeriods =~ $pattern;
#Determine number of periods and maximal number
my @periods = split /:/, $1;
my $maxNumber=0;
@periods = sort { $a <=> $b } @periods;
$maxNumber = $periods[$#periods];
my $PeriodsCount = @periods; #count elements in array, because $#periods not worked
#Determine reading names
my $statReadingName = $hash->{PREFIX} . ucfirst($readingName) . ucfirst($periodText);
my $hiddenReadingName = ".".$devName . ":" . $readingName . $periodText;
# Update hidden stack
my @hidden = ();
if (exists ($hash->{READINGS}{$hiddenReadingName}{VAL}))
{ @hidden = split / /, $hash->{READINGS}{$hiddenReadingName}{VAL}; }
unshift @hidden, $value;
statistics_Log $hash, 3, "Add $value to $hiddenReadingName";
while ( $#hidden >= ($maxNumber * 2 ) ) {
#while ( $#hidden >= ($maxNumber * 2 ) ) {
my $lastValue = pop @hidden;
statistics_Log $hash, 4, "Remove last value '$lastValue' from '$hiddenReadingName'";
}
#Calculate and write specialPeriodValues
my $result = 0;
my $counterHidden = 0;
my $counterPeriods = 0;
my @result_sum;
my @result_sumLast;
my @rValue;
my @rValueLast;
foreach (@periods) {
statistics_Log $hash, 3, "$statReadingName Loop period $_ counterPeriods '$counterPeriods+1' from $PeriodsCount";
$counterHidden = 0; # necessary for multiple periods
foreach (@hidden) {
$counterHidden++;
statistics_Log $hash, 3, "$statReadingName ItemLoop value $_ counterHidden: $counterHidden ";
if ( $counterHidden < $periods[$counterPeriods] ) {
$result_sum[$counterPeriods] += $_;
$rValue[$counterPeriods] = sprintf "%.".$decPlaces."f (%d %s)", $result_sum[$counterPeriods], $counterHidden, $periodText;
statistics_Log $hash, 3, "$statReadingName period $periods[$counterPeriods] not reaches yet. rValue $rValue[$counterPeriods] ";
}
elsif ( $counterHidden == $periods[$counterPeriods] ) {
$result_sum[$counterPeriods] += $_;
$rValue[$counterPeriods] = sprintf "%.".$decPlaces."f", $result_sum[$counterPeriods];
statistics_Log $hash, 3, "$statReadingName complete periode $periods[$counterPeriods] rValue $rValue[$counterPeriods] ";
}
#Begin Calc for Last Readings
if ( $counterHidden > ($periods[$counterPeriods] ) ) {
if ( $counterHidden < ($periods[$counterPeriods] * 2 ) ) {
$result_sumLast[$counterPeriods] += $_;
$rValueLast[$counterPeriods] = sprintf "%.".$decPlaces."f (%d %s)", $result_sumLast[$counterPeriods], ($counterHidden-$periods[$counterPeriods]), $periodText;
statistics_Log $hash, 3, "$statReadingName Last period $periods[$counterPeriods] not reaches yet. rValueLast $rValueLast[$counterPeriods] ";
}
elsif ( $counterHidden == ( $periods[$counterPeriods] * 2 ) ) {
#calc for complete Last reading.
$result_sumLast[$counterPeriods] += $_;
$rValueLast[$counterPeriods] = sprintf "%.".$decPlaces."f", $result_sumLast[$counterPeriods];
statistics_Log $hash, 3, "$statReadingName complete Last periode $periods[$counterPeriods] rValueLast: $rValueLast[$counterPeriods] ";
last; #calc is done. break out to next hidden item
}
}
}
#write readings
my $rName = $statReadingName . $periods[$counterPeriods];
statistics_Log $hash, 3, "Set '$rName = $rValue[$counterPeriods]'";
readingsBulkUpdate($dev, $rName, $rValue[$counterPeriods], 1);
#write last readings
$rName = $statReadingName . $periods[$counterPeriods] . "Last";
statistics_Log $hash, 3, "Set '$rName = $rValueLast[$counterPeriods]'";
readingsBulkUpdate($dev, $rName, $rValueLast[$counterPeriods], 1);
$counterPeriods++;
}
# Store hidden stack
$result = join( " ", @hidden );
readingsSingleUpdate($hash, $hiddenReadingName, $result, 0);
statistics_Log $hash, 3, "Set hidden $hiddenReadingName = $result ";
}
Gruß
optimizer
Hallo,
kurze Frage. Kann es sein, dass die Kombination der attribute minAvgMaxReadings und tendencyReadings bei dem Modul nicht funktioniert? Verwende ich eines von beiden, so werden die entsprechenden Readings angelegt, verwende ich beide, legt das Modul keine neuen Readings an, ein Verbose 5 zeigt folgendes:
017.09.03 14:11:17 3: statistics: set myStats doStatistics
2017.09.03 14:11:17 4: statistics myStats: DoStatisticsAll.381 Doing statistics (period 0) for device 'Balkon'
2017.09.03 14:11:17 5: statistics myStats: DoStatistics.432 Assigned reading 'temperature' from attribute 'minAvgMaxReadings' to statistic type 5.
2017.09.03 14:11:17 5: statistics myStats: DoStatistics.432 Assigned reading 'humidity' from attribute 'minAvgMaxReadings' to statistic type 5.
2017.09.03 14:11:17 5: statistics myStats: DoStatistics.432 Assigned reading 'pressure-nn' from attribute 'minAvgMaxReadings' to statistic type 5.
2017.09.03 14:11:17 5: statistics myStats: DoStatistics.432 Assigned reading 'temperature' from attribute 'tendencyReadings' to statistic type 4.
2017.09.03 14:11:17 5: statistics myStats: DoStatistics.432 Assigned reading 'humidity' from attribute 'tendencyReadings' to statistic type 4.
2017.09.03 14:11:17 5: statistics myStats: DoStatistics.432 Assigned reading 'pressure-nn' from attribute 'tendencyReadings' to statistic type 4.
2017.09.03 14:11:17 5: statistics myStats: Notify.259 Notifications of myself received.
2017.09.03 14:11:17 4: statistics myStats: DoStatisticsAll.381 Doing statistics (period 0) for device 'Pressure'
2017.09.03 14:11:17 5: statistics myStats: DoStatistics.432 Assigned reading 'temperature' from attribute 'minAvgMaxReadings' to statistic type 5.
2017.09.03 14:11:17 5: statistics myStats: DoStatistics.432 Assigned reading 'humidity' from attribute 'minAvgMaxReadings' to statistic type 5.
2017.09.03 14:11:17 5: statistics myStats: DoStatistics.432 Assigned reading 'pressure-nn' from attribute 'minAvgMaxReadings' to statistic type 5.
2017.09.03 14:11:17 5: statistics myStats: DoStatistics.432 Assigned reading 'temperature' from attribute 'tendencyReadings' to statistic type 4.
2017.09.03 14:11:17 5: statistics myStats: DoStatistics.432 Assigned reading 'humidity' from attribute 'tendencyReadings' to statistic type 4.
2017.09.03 14:11:17 5: statistics myStats: DoStatistics.432 Assigned reading 'pressure-nn' from attribute 'tendencyReadings' to statistic type 4
Hier die Definition, so wie ich sie verwenden möchte:
# Statistik für Temperatur und Luftfeuchtigkeit
define myStats statistics Balkon|Pressure
attr myStats DbLogExclude .*
attr myStats dayChangeTime 07:00
attr myStats excludedReadings Pressure:State|Pressure:temperature|Pressure:pressure
attr myStats ignoreDefaultAssignments 0
attr myStats minAvgMaxReadings dewpoint,temperature,humidity,pressure-nn
attr myStats room System
attr myStats singularReadings Balkon:temperature:(Min|Max):(Day|Week|Month|Year)|Balkon:humidity:(Min|Max):Day|Pressure:pressure-nn:(Min|Max):(Day|Week|Month|Year)
attr myStats tendencyReadings temperature,humidity,pressure-nn
Ok, scheint wohl ein bekanntes Problem zu sein:
https://forum.fhem.de/index.php/topic,38535.msg310357.html#msg310357 (https://forum.fhem.de/index.php/topic,38535.msg310357.html#msg310357)
Allerdings habe ich das auch nicht aus der CommandRef herauslesen können. Habe das Wiki mal aktualisiert.
Hallo,
Ich hab ein Problem oder besser gesagtFragen
Ich würde gern statistics verwenden um meinen Gasverbrauch zu ermitteln.
Die Daten kommen von einem Reedkontakt per knx als Gesamtanzahl Impulse und entsprechen somit genau der Anzeige am Zähler.
Devices: Medien_Gas_haupt
Statistics so definiert:
define myStatistics statistics Medien_Gas_haupt
attr myStatistics deltaReadings state
attr myStatistics singularReadings Medien_Gas_haupt:state:Delta:(Day|Month|Year)
Soweit so gut.
Erste Frage:
Nur warum gibt's die Statistic Readings 2 mal und das kleingeschriebene wird nicht aktualisiert? Siehe Bild
Und zweites Probelem:
Wenn ich state als deltareading definieren, wie kann ich dann mein Temperaturwerte eines anderen Devices, die bei knx auch wie alle über state kommen, als minmaxreading definieren?
Und die dritte frage (ergänzt)
Er rechnet falsch. Wenn ich gestern 293 und heute über 200 verbraucht habe, warum steht dann bei stateMonth und stateYear nur der Wert von heute und nicht die Gesamtsumme?
Danke für die Mühe für mein vielen Fragen!
1. Du must die default-Werte von statistics ausschalten.
2. weiteres statistics
3. Anzeige ist m.E. korrekt. (since ....)
Hallo zusammen.
Habe das Modul heute mal gestartet. Wollte auch ein ShellyEM der über MQTT eingebunden ist, mit in statistics aufnehmen.
Wird aber als unsuported angezeigt.
Warum ? Wie kann ich oder sonst wer abhilfe schaffen ?
Internals:
CID shellyem_B9E817
DEF shellyem_B9E817
DEVICETOPIC MQTT2_shellyem_B9E817
FUUID 5e283ef9-f33f-852e-13fa-b7e93869833a5502
FVERSION 10_MQTT2_DEVICE.pm:0.215180/2020-03-25
IODev mqtt
LASTInputDev mqtt
MSGCNT 1299
NAME MQTT2_shellyem_B9E817
NR 413
STATE ???
TYPE MQTT2_DEVICE
mqtt_MSGCNT 1299
mqtt_TIME 2020-03-26 17:21:15
READINGS:
2020-02-21 15:36:19 _powerKZbeginn 74656.8
2020-03-26 16:07:43 announce_fw_ver 20200309-104606/v1.6.0@43056d58
2020-03-26 16:07:43 announce_id shelly-EM_WK_KZ
2020-03-26 16:07:43 announce_ip 192.168.2.83
2020-03-26 16:07:43 announce_mac A4CF12B9E817
2020-03-26 16:07:43 announce_new_fw false
2020-03-26 17:20:00 emeter_0_energy 0
2020-03-26 17:21:15 emeter_0_power 0.00
2020-03-26 17:21:15 emeter_0_reactive_power 0.00
2020-03-26 17:20:00 emeter_0_returned_energy 0
2020-03-26 17:20:00 emeter_0_total 88009.8
2020-03-26 17:20:00 emeter_0_total_returned 2.2
2020-03-26 17:21:15 emeter_0_voltage 236.23
2020-03-26 17:20:00 emeter_1_energy 645
2020-03-26 17:21:15 emeter_1_power 128.18
2020-03-26 17:21:15 emeter_1_reactive_power 85.92
2020-03-26 17:20:00 emeter_1_returned_energy 0
2020-03-26 17:20:00 emeter_1_total 117877.2
2020-03-26 17:20:00 emeter_1_total_returned 130.4
2020-03-26 17:21:15 emeter_1_voltage 236.23
2020-03-26 16:07:43 online true
2020-03-26 17:21:15 relay_0 off
helper:
_98_statistics myStat
Attributes:
IODev mqtt
autocreate 1
readingList shellyem_B9E817:shellies/shelly-EM_WK_KZ/online:.* online
shellyem_B9E817:shellies/shelly-EM_WK_KZ/relay/0:.* relay_0
shellyem_B9E817:shellies/shelly-EM_WK_KZ/emeter/0/power:.* emeter_0_power
shellyem_B9E817:shellies/shelly-EM_WK_KZ/emeter/0/reactive_power:.* emeter_0_reactive_power
shellyem_B9E817:shellies/shelly-EM_WK_KZ/emeter/0/voltage:.* emeter_0_voltage
shellyem_B9E817:shellies/shelly-EM_WK_KZ/emeter/1/power:.* emeter_1_power
shellyem_B9E817:shellies/shelly-EM_WK_KZ/emeter/1/reactive_power:.* emeter_1_reactive_power
shellyem_B9E817:shellies/shelly-EM_WK_KZ/emeter/1/voltage:.* emeter_1_voltage
shellyem_B9E817:shellies/shelly-EM_WK_KZ/emeter/0/energy:.* emeter_0_energy
shellyem_B9E817:shellies/shelly-EM_WK_KZ/emeter/0/returned_energy:.* emeter_0_returned_energy
shellyem_B9E817:shellies/shelly-EM_WK_KZ/emeter/0/total:.* emeter_0_total
shellyem_B9E817:shellies/shelly-EM_WK_KZ/emeter/0/total_returned:.* emeter_0_total_returned
shellyem_B9E817:shellies/shelly-EM_WK_KZ/emeter/1/energy:.* emeter_1_energy
shellyem_B9E817:shellies/shelly-EM_WK_KZ/emeter/1/returned_energy:.* emeter_1_returned_energy
shellyem_B9E817:shellies/shelly-EM_WK_KZ/emeter/1/total:.* emeter_1_total
shellyem_B9E817:shellies/shelly-EM_WK_KZ/emeter/1/total_returned:.* emeter_1_total_returned
shellyem_B9E817:shellies/shelly-EM_WK_KZ/announce:.* { json2nameValue($EVENT, 'announce_', $JSONMAP) }
room 10_EG->KiZi,MQTT
setExtensionsEvent 1
Ich würde da gern die emeter_x_power und emeter_x_engery Readings einbeziehen !
Gruß und Danke !
Sascha