Hallo zusammen,
mir fehlt gerade eine Gehirnwindung, um folgendes Problem zu lösen:
Ich habe einen HM-SCI-3-FM per Relais an den Betriebsstundenzählerkontakt unseres Ölbrenners angeschlossen und erhalte nun regelmässig meine open/closed Meldungen (KEL_Heizung_BZ). Weiterhin habe ich auf dem entsprechenden Kanal das Statistics Modul aktiviert define KEL_Heizung_BZ statistics KEL_Heizung_BZ
Weitere Attribute habe ich bisher keine definiert, die Auswertungen auf den State reichen mir und liegen auch am Device in folgender Form vor:
statStateDay closed: 06:39:51 closed_Count: 42 open: 03:34:31 open_Count: 42 2014-12-30 10:14:18
statStateDayLast closed: 13:36:24 closed_Count: 85 open: 10:23:36 open_Count: 86 2014-12-29 23:59:55
statStateMonth closed: 5d 12:09:42 closed_Count: 127 open: 2d 08:27:18 open_Count: 128 (since: 2014-12-22_13:37:18) 2014-12-30 10:14:18
Ich würde jetzt gerne einen Plot erzeugen, in welchem ich die täglichen Brennerstarts und Brenndauer angezeigt bekomme. Dazu muss ich ja die Statistics Werte, optimalerweise einmal täglich, in ein Logfile speichern, aber wie? Welche Events werden denn wann und wie erzeugt, die ich dann in die Logfiledefinition packen kann? Ich bekomme immer nur folgenden Event zu sehen:
2014-12-30 10:34:24 statistics KEL_Heizung_BZ_Stat Updated stats for: KEL_Heizung_BZ
Vielen Dank für eure Hilfe,
Thomas
Teil 1 erledigt: Die Statistikinfo taucht jeden Tag um 23:59:xx als Event auf und kann ganz einfach mit
define FileLog_KEL_Heizung_BZ FileLog /opt/fhem/log/KEL_Heizung_BZ-%Y-%m.log KEL_Heizung_BZ::statStateDayLast:.*
ins FileLog geschreben werden.
Ich würde bis übermorgen warten (->Monatswechsel).
Dann hast du ein neues Reading, so wie "statStateDayLast" für das vergangene Monat, also "statStateMonthLast".
Das kannst du dann loggen und hast nur einen monatlichen Wert im Log.
Bzw. könntest du aus diesem "statStateMonthLast" dann mittels eines Userreadings spezielle Werte rausfiltern und die loggen, ganz nach Wunsch.
lg, Ici
Danke für den Tipp. Ich hätte aber schon gerne einen täglichen Wert, um bei Optimierungsversuchen an der Anlage, bzw. täglichen Temperaturänderungen die Auswirkungen auf Brenndauer etc. nachvollziehen zu können. Mir fehlt da im Moment die Idee, überhaupt ein Logfile mit den Statistiktageswerten zu definieren. Hat da nicht einer was bei sich in der Anwendung?
Im statistics-Modul das Attribut "singlarReadings" entsprechend setzen. Damit kannst du dann Stunde, Tage, Monatsweise einzelne Werte bekommen, ganz nach belieben.
Diese Werte kannst du dann loggen.
Nachdem mir meine Glaskugel nicht sagen kann, welche Readings du genau in KEL_Heizung_BZ hast (muss sie wohl doch mal reparieren lassen :( ), kann ich dir auch nix genaueres dazu sagen.
Aber die Commandref soll da recht hilfreich sein zu diesem Attribut, hab ich mir sagen lassen :P
lg, Ici
Danke für die Antwort. Ja Ja, immer dieser Ärger mit den unzuverlässigen Glaskugeln ... ;)
Ich glaube, mein Problem ist zu einfach für Dich. :D Ich habe bereits das richtige Reading (statStateDay closed: 06:39:51 closed_Count: 42 open: 03:34:31 open_Count: 42 2014-12-30 10:14:18), aber das wird nur direkt am Device auf der Detailseite angezeigt. Ich hätte das aber gerne in irgendeinem Logfile drin. weiß aber nicht, wie ich diesen Wert da hineinbekomme. Mein Problem ist also die Logfiledefinition, und da dieses Event scheinbar nur einmal am Tag um 23:55:00 vorkommt, würde experimentieren ziemlich lange dauern. Ich denke, ich versuche mal ein Logfile mit define FileLog_KEL_Heizung_BZ FileLog /opt/fhem/log/KEL_Heizung_BZ-%Y-%m.log KEL_Heizung_BZ:.*
und schau' mir an, wie das um 23:55:00 so aussieht.
Mit dem RegEx:
KEL_Heizung_BZ:.*
loggst du aber ALLE redings des Devices.
KEL_Heizung_BZ:statStateDayLast.*
loggt nur dieses eine Reading.
Mach mal ein "list KEL_Heizung_BZ" und poste das....Dann können wir das Statistics auch besser anpassen.[/code]
@TomWest:
Vlt. hilft dir folgender Wiki-Beitrag (http://www.fhemwiki.de/wiki/Readings_in_verschiedene_Log-Dateien_aufsplitten) weiter? Da werden S0-Zähler des Statistics-Modul erst mitgeloggt und anschließend auf verschiedene Logs aufgeteilt.
Gruß
Thomas
@Icinger:
Hier einmal das Listing:
Internals:
DEF 23F66001
NAME KEL_Heizung_BZ
NR 149
STATE open
TYPE CUL_HM
chanNo 01
device KEL_Heizung
Readings:
2014-12-07 11:43:09 R-eventDlyTime 0 s
2014-12-07 11:43:09 R-msgScPosA closed
2014-12-07 11:43:09 R-msgScPosB open
2014-12-07 11:43:09 R-sign off
2014-12-07 11:43:09 R-transmitTryMax 6
2014-12-07 11:43:09 RegL_01: 08:00 20:60 21:00 22:00 30:06 00:00
2014-12-30 11:52:59 contact open (to vccu)
2014-12-30 11:52:59 statStateDay closed: 07:28:15 closed_Count: 52 open: 04:24:48 open_Count: 52
2014-12-29 23:59:55 statStateDayLast closed: 13:36:24 closed_Count: 85 open: 10:23:36 open_Count: 86
2014-12-30 11:52:59 statStateMonth closed: 5d 12:58:06 closed_Count: 137 open: 2d 09:17:35 open_Count: 138 (since: 2014-12-22_13:37:18)
2014-12-30 11:52:59 state open
2014-12-30 11:52:59 trigger_cnt 221
Helper:
_98_statistics KEL_Heizung_BZ_Stat
Role:
chn 1
Attributes:
model HM-SCI-3-FM
peerIDs 00000000,
room Heizung
Den Artikel schau' ich mir sofort an ... Der Artikel passt prima. Jetzt muss ich nur noch im morgen im Logfile die regex Komponente herauslesen, dann sollte es hoffentlich klappen.
Also, ich persönlich würd auf jeden Fall noch ein
attr <statisticsdevice> KEL_Heizung_BZ:state:DurationState:(Hour|Day|Month|Year|1h|2h|3h|6h)
setzen.
wobei du <statisticsdevice> und (Hour|Day|Month|Year|1h|2h|3h|6h) an deine Bedürfnisse anpassen musst.
Damit hast du dann auch schön getrennte Statistics-Readings, die du loggen kannst oder auch zum Anzeigen verwenden kannst.
lg, Ici
Hi Ici,
danke für den Tipp. Allerdings kann ich das Attribut DurationState nirgends finden. Meinst Du vielleicht "durationReadings"? Das müsste ja dann
attr KEL_Heizung_BZ_Stat durationReading 1h
heißen, oder? Was macht das?
Bis dann,
Thomas
Mea culpa, mein Fehler.
So müssts sein:
attr KEL_Heizung_BZ_Stat singularReadings KEL_Heizung_BZ:state:DurationState:(Hour|Day|Month|Year|1h|2h|3h|6h)
Hab ich so eingetragen - was macht das denn genau? Wenn ich das Forum nach DurationState durchsuche, kommt nur dieser Beitrag, im Programmcode von '98 - statistics' finde ich das auch nur in der HTML Doku, aber da werde ich nicht schlau draus.
Vielen Dank,
Thomas
Steht in der commandref genau beschrieben:
Zitat
singularReadings <GeräteNameRegExp:GeräteWertRegExp:Statistiktypen:Zeitraum>
Statistiktypen: Min|Avg|Max|Delta|DurationState|Tendency
Zeitraum: Hour|Day|Month|Year|1h|2h|3h|6h
Regulärer Ausdruck statistischer Werte, die nicht nur in zusammengefassten sondern auch als einzelne Werte gespeichert werden sollen. Erleichtert die Erzeugung von Plots und anderer Auswertungen (notify). Für "duration"-Gerätewerte muss der Name des jeweiligen Statuswertes als Statistiktyp eingesetzt werden.
Beispiel: Wettersensor:rain:Delta:(Hour|Day)|FritzDect:power:Delta:Day
Badfenster:Window:(Open|Open_Count):Month
lg, Ici
Danke für die Info. Leider verstehe ich das nicht. Auch nicht nach dem erneuten Durchlesen. Was steht wann wo wenn ich das hier eintrage ??
attr KEL_Heizung_BZ_Stat singularReadings KEL_Heizung_BZ:state:DurationState:(Hour|Day|Month|Year|1h|2h|3h|6h)
Ich kann da auch nach fast einer Woche nichts Neues entdecken.
Vielen Dank für die Hilfe!