FHEM Forum

FHEM => Sonstiges => Thema gestartet von: Funsailor am 01 Februar 2018, 16:06:24

Titel: Selektives Loggen von einstelligen Bezeichnern mit DbLog
Beitrag von: Funsailor am 01 Februar 2018, 16:06:24
Um die Datenflut meiner Sensoren etc. besser in den Griff zu bekommen, habe ich das Log System auf eine SQLite Datenbank umgestellt.
Bin nach dieser Anleitung https://waschto.eu/dblog-datenbank-anstelle-von-logfiles/ vorgegangen, war im Prinzip kein Problem.

Mit der Definition habe ich auch die zu speichernden Readings beschränkt:

./db.conf .*:(temperature|T|humidity|voltage|current|power|energy|Leistung|motion|desired-temp|measured-temp|battery_level|battery).*

Jetzt kommt das Problem.
Ich habe ein paar Auriol Temperatursensoren in FHEM eingebunden. Die lieferten folgenden Eintrag im Log ab:

2017-12-31_23:56:56 KuechenTemperatur T: 21.1

Das dumme daran ist, das der Readingfilter nicht auf einen Buchstaben "T" reagiert.  Auch "T:" funktioniert nicht.
Die Daten sind nicht in der Datenbank gelandet.

Mit einer kleinen Änderung in der Definition der Logdatei bekomme ich nun diese Daten:

2018-02-01_15:53:45 KuechenTemperatur other: 20.6
2018-02-01_15:53:45 KuechenTemperatur T: 20.6

./db.conf .*:(temperature|other|humidity|voltage|current|power|energy|Leistung|motion|desired-temp|measured-temp|battery_level|battery).*

Jetzt werden zwar die Temperaturen als ,,other"  in der Datenbank gespeichert, aber schön ist das nicht. Auch das importieren der alten Log-Dateien funzt so nicht.

Hat da jemand eine Idee dazu?


LG Michael

Titel: Antw:Selektives Loggen von einstelligen Bezeichnern mit DbLog
Beitrag von: DS_Starter am 01 Februar 2018, 19:51:25
Hallo Michael,

auch das Loging von nur einem "T"-Reading funktioniert einwandfrei. Habe mir einen Dummy angelegt, Reading T.
Hier der Ausschnitt aus listCAche von DbLog im asynchronen Mode:


19 => 2018-02-01 19:32:05|Dum.Energy|DUMMY|T: 684.9|T|684.9|
20 => 2018-02-01 19:32:05|Dum.Energy|DUMMY|T: 684.9|T|684.9|
21 => 2018-02-01 19:32:05|Dum.Energy|DUMMY|T: 684.9|T|684.9|
22 => 2018-02-01 19:32:05|Dum.Energy|DUMMY|TotalConsumption: 681.4|TotalConsumption|681.4|W
23 => 2018-02-01 19:32:05|Dum.Energy|DUMMY|T: 681.4|T|681.4|
24 => 2018-02-01 19:32:05|Dum.Energy|DUMMY|T: 681.4|T|681.4|
25 => 2018-02-01 19:32:05|Dum.Energy|DUMMY|T: 681.4|T|681.4|


Mein Test-DEF sieht so aus:


./ftestmaria10.conf .*:(temperature|T|humidity).*


Ist also deinem nachempfunden und funktioniert. Es muss bei dir einen anderen Grund geben warum dieses Reading nicht geloggt wird.
Schalte dir mal verbose4 im DbLog ein und beachte Meldungen der Art:


2018.02.01 19:47:05.801 4: DbLog LogDB -> ################################################################
2018.02.01 19:47:05.801 4: DbLog LogDB -> ###              start of new Logcycle                       ###
2018.02.01 19:47:05.802 4: DbLog LogDB -> ################################################################
2018.02.01 19:47:05.803 4: DbLog LogDB -> number of events received: 2 for device: Dum.Energy
2018.02.01 19:47:05.805 4: DbLog LogDB -> check Device: Dum.Energy , Event: GridConsumption: 567.8
2018.02.01 19:47:05.806 4: DbLog LogDB -> check Device: Dum.Energy , Event: T: 571.4
2018.02.01 19:47:05.807 4: DbLog LogDB -> added event - Timestamp: 2018-02-01 19:47:05, Device: Dum.Energy, Type: DUMMY, Event: T: 571.4, Reading: T, Value: 571.4, Unit:


Ich gehe davon aus, dass das Reading auch Events erzeugt !? Beachte auch eventuell gesetzte Attribute DbLogInclude, DbLogExclude die zur Steuerung dienen.

Grüße
Heiko
Titel: Antw:Selektives Loggen von einstelligen Bezeichnern mit DbLog
Beitrag von: viegener am 01 Februar 2018, 20:20:29
Kann es sein, dass hier nicht ein Reading T beteiligt ist, sondern das state-Reading den Wert T: ... trägt?

Titel: Antw:Selektives Loggen von einstelligen Bezeichnern mit DbLog
Beitrag von: viegener am 01 Februar 2018, 20:21:46
Mach doch mal ein list des devices und poste es hier
Titel: Antw:Selektives Loggen von einstelligen Bezeichnern mit DbLog
Beitrag von: DS_Starter am 01 Februar 2018, 20:25:52
ZitatKann es sein, dass hier nicht ein Reading T beteiligt ist, sondern das state-Reading den Wert T: ... trägt?
Das ist sehr wahrscheinlich ...
Titel: Antw:Selektives Loggen von einstelligen Bezeichnern mit DbLog
Beitrag von: Funsailor am 01 Februar 2018, 23:42:32
Ja stimmt.
Beider Temperatur handelt es sich um ein state-Reading. Hab mir da noch keine Gedanken darüber gemacht, die Aufzeichnung im bisherigem Log Dateien undDarstellung im SVG Plot war ja OK.

Habe jetzt auch keine Idee wie ich die Temperatur als T: in die Datenbank bekomme, ist schon spät. Kann sein das ich erst wieder am Montag abend an die Kiste komme.
Oder einfach State in die Definition übernehmen? Das probier ich noch schnell.

OK mit dem state Eintrag sieht die Sache anders aus!
In der Datenbank ist jetzt der "other" Eintrag und state: T:

2018-02-01 23:39:25|KuechenTemperatur|CUL_TCM97001|other: 20.2|other|20.2|
2018-02-01 23:39:25|KuechenTemperatur|CUL_TCM97001|state: T: 20.2|state|T|20.2

Aber in der Plotliste taucht nur
KuechenTemperatur:other
KuechenTemperatur:state

auf.

Und mit dem state kann man keinen Temperatur darstellen, die würde nur zwischen 0 und 1 rumspringen;)
Da muss ich mich noch mal schlau machen.



nternals:
   CHANGED   
   CODE       CUL_TCM97001_125
   DEF        CUL_TCM97001_125
   IODev      mapleCUL2
   LASTInputDev mapleCUL2
   MSGCNT     843
   NAME       KuechenTemperatur
   NR         71
   RSSI       -81
   STATE      T: 20.3
   TYPE       CUL_TCM97001
   lastH      0
   lastT      1517523102
   mapleCUL2_MSGCNT 843
   mapleCUL2_RAWMSG s47D0CBA0F2;  464: 9520
   mapleCUL2_TIME 2018-02-01 23:11:42
   Helper:
     DBLOG:
       other:
         logdb:
           TIME       1517523067.79587
           VALUE      20.3
   READINGS:
     2018-01-30 23:59:20   battery         ok
     2018-01-30 23:59:20   channel         2
     2018-01-30 23:59:20   mode            normal
     2018-02-01 23:11:42   other           20.3
     2018-02-01 23:11:42   state           T: 20.3
Attributes:
   IODev      mapleCUL2
   event-min-interval .*:300
   event-on-change-reading .*
   model      Mebus
   room       Kueche
   verbose    4