Statistics Module -> Werte ins Logfile

Begonnen von TomWest, 30 Dezember 2014, 10:35:02

Vorheriges Thema - Nächstes Thema

TomWest

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_BZWeitere 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.
FHEM on R-π - HM-TC-IT-WM-W-EU - HM-LC-Sw1-FM - HM-SCI-3-FM - HM-CC-RT-DN

Icinger

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
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

TomWest

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?
FHEM on R-π - HM-TC-IT-WM-W-EU - HM-LC-Sw1-FM - HM-SCI-3-FM - HM-CC-RT-DN

Icinger

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
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

TomWest

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.
FHEM on R-π - HM-TC-IT-WM-W-EU - HM-LC-Sw1-FM - HM-SCI-3-FM - HM-CC-RT-DN

Icinger

#5
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]
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

Rohan

@TomWest:

Vlt. hilft dir folgender Wiki-Beitrag weiter? Da werden S0-Zähler des Statistics-Modul erst mitgeloggt und anschließend auf verschiedene Logs aufgeteilt.

Gruß
Thomas
Fhem auf Mini-ITX mit Celeron 2-Core, HMLAN (> 55 Devices), CUL (FS20 und EM), RFXtrx 433E, Arduino (einige DS18B20), RPi mit 1-Wire (DS2423 für S0-Signale, DS18B20+), RPi/Arduino mit MQ-5 und MQ-9 (CO- und CNG/LPG-Sensor), CO-20 IAQ Sensor

TomWest

#7
@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.
FHEM on R-π - HM-TC-IT-WM-W-EU - HM-LC-Sw1-FM - HM-SCI-3-FM - HM-CC-RT-DN

Icinger

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
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

TomWest

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
FHEM on R-π - HM-TC-IT-WM-W-EU - HM-LC-Sw1-FM - HM-SCI-3-FM - HM-CC-RT-DN

Icinger

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)
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

TomWest

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
FHEM on R-π - HM-TC-IT-WM-W-EU - HM-LC-Sw1-FM - HM-SCI-3-FM - HM-CC-RT-DN

Icinger

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
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

TomWest

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!
FHEM on R-π - HM-TC-IT-WM-W-EU - HM-LC-Sw1-FM - HM-SCI-3-FM - HM-CC-RT-DN