Hallo ich bekomme jede Menge Daten und habe die Datenflut unterschätzt.
Nun möchte ich meine Datenflut einschränken.
Bisher kommen von einem Sensor bei Änderung so ca alle 30sec neue Daten die dann auch gespeichert werden.
a) Ich würde diese nun alle 5 min speichern wollen unabhängig ob der Wert sich zwischendrin geändert hat.
b) Ich möchte aber auch einen state alle 5 min speichern auch wenn dieser sich nur 2 mal am Tag ändert.
Gibt es da Möglichkeiten?
Vielen Dank für Eure Antworten
P.S.: Wie gesagt ich habe schon mit den Attributen mein Glück versucht aber bin gescheitert:
attr Plug_Ku_HdyLadeStation DbLogInclude current,energy,power,voltage,state
attr Plug_Ku_HdyLadeStation event-on-change-reading state,current,power,voltage
attr Plug_Ku_HdyLadeStation event-min-interval state:600,current:600,power:600,voltage:600
Der Code Auszug bring weiterhin folgende Einträge.
2018-04-30 04:55:11 Plug_Ku_HdyLadeStation ZWAVE power: 0 W previous: 0 delta_time: 301 s power 0 W previous: 0 delta_time: 301 s
2018-04-30 04:55:12 Plug_Ku_HdyLadeStation ZWAVE voltage: 237.98 V previous: 237.97 delta_time: 301 s voltage 237.98 V previous: 237.97 delta_time: 3
2018-04-30 04:55:13 Plug_Ku_HdyLadeStation ZWAVE current: 0 A previous: 0 delta_time: 301 s current 0 A previous: 0 delta_time: 301 s
2018-04-30 05:00:00 Plug_Ku_HdyLadeStation ZWAVE state: on state on
2018-04-30 05:00:06 Plug_Ku_HdyLadeStation ZWAVE power: 11.14 W previous: 0 delta_time: 296 s power 11.14 W previous: 0 delta_time: 296 s
2018-04-30 05:00:07 Plug_Ku_HdyLadeStation ZWAVE voltage: 237.91 V previous: 237.98 delta_time: 296 s voltage 237.91 V previous: 237.98 delta_time: 2
2018-04-30 05:00:08 Plug_Ku_HdyLadeStation ZWAVE current: 0.1 A previous: 0 delta_time: 296 s current 0.1 A previous: 0 delta_time: 296 s
2018-04-30 05:00:15 Plug_Ku_HdyLadeStation ZWAVE power: 14.84 W previous: 11.14 delta_time: 9 s power 14.84 W previous: 11.14 delta_time: 9
2018-04-30 05:00:16 Plug_Ku_HdyLadeStation ZWAVE voltage: 238.01 V previous: 237.91 delta_time: 9 s voltage 238.01 V previous: 237.91 delta_time: 9
2018-04-30 05:00:17 Plug_Ku_HdyLadeStation ZWAVE current: 0.12 A previous: 0.1 delta_time: 9 s current 0.12 A previous: 0.1 delta_time: 9 s
2018-04-30 05:00:22 Plug_Ku_HdyLadeStation ZWAVE power: 12.53 W previous: 14.84 delta_time: 7 s power 12.53 W previous: 14.84 delta_time: 7
2018-04-30 05:00:23 Plug_Ku_HdyLadeStation ZWAVE voltage: 237.84 V previous: 238.01 delta_time: 7 s voltage 237.84 V previous: 238.01 delta_time: 7
2018-04-30 05:00:24 Plug_Ku_HdyLadeStation ZWAVE current: 0.11 A previous: 0.12 delta_time: 7 s current 0.11 A previous: 0.12 delta_time: 7 s
2018-04-30 05:00:30 Plug_Ku_HdyLadeStation ZWAVE power: 10.87 W previous: 12.53 delta_time: 9 s power 10.87 W previous: 12.53 delta_time: 9
2018-04-30 05:00:31 Plug_Ku_HdyLadeStation ZWAVE voltage: 237.83 V previous: 237.84 delta_time: 9 s voltage 237.83 V previous: 237.84 delta_time: 9
2018-04-30 05:00:32 Plug_Ku_HdyLadeStation ZWAVE current: 0.1 A previous: 0.11 delta_time: 9 s current 0.1 A previous: 0.11 delta_time: 9 s
2018-04-30 05:00:43 Plug_Ku_HdyLadeStation ZWAVE power: 10.69 W previous: 10.87 delta_time: 13 s power 10.69 W previous: 10.87 delta_time: 13
Du hast das eigentlich schon richtig mit "event-min-interval" gemacht.
Ich mache das mit meinen Technoline TX-29 auch und es klappt einwandfrei.
Beispiel bei mir:
attr <device> event-min-interval temperature:600,humidity:600,battery:3600
Das Problem ist kein DBLog-spezifisches, sondern eher ein allgemeines über den Umgang mit anfallenden Daten.
Ich reduziere die Daten meiner Temperatursensoren, indem ich alle 15 Minuten die Daten diverser Sensoren in einen Dummy packe (mit setreading ... state), was ein Event erzeugt - nur dieses wird dann geloggt. Dabei ist es dann nämlich unerheblich, ob es in den letzten 15 Minuten 100 Daten oder gar keine gab. Ähnlich erzeuge ich jede Stunde bei meinen Anwesenheitsprotokollen ein Event, so funktionieren die Diagramme auch wenn ich den ganzen Tag zu Hause war ... ;)
Ob man dafür einen eigenen Dummy nimmt oder userreadings in den Devices, ist nur eine Glaubensfrage.
Funktionieren sollte das auch mit DBLog.
Jm2c.
Du kannst deine DB auch regelmäßig ausdünnen. Mit nachfolgendem Timer wird die DB um 01:00 Uhr geschrinked und zwar für alle Einträge die älter 30 Tage sind.
define DBLOG.Timer at *01:00:00 set DBLOG reduceLog 30
Hallo,
vielen Dank für Eure Antworten aber:
a) die werte in dummy sammeln würde mein Problem sicherlich lösen. Ist mir aber etwas umständlich.
Ich denke aus das dieses ein generisches Problem ist und sicherlich durch ein Modul auch gelöst werden könnte.
Vielleicht gibt es ja so ein Modul oder es geht vielleicht auch noch etwas eleganter.
b) Das ausdünnen über reduce log ist ok aber löst mein aktuelles Problem natürlich auch nicht.
Eine Idee wäre ja vielleicht noch über das Statistics Modul.
Hat hier irgendeiner eine Idee wie ich ein Reading vielleicht alle 5 min statistisch (Mittelung) erfasse und dann in der 5 min Periode logge.
Danke Andreas
Hallo zusammen,
Zitat
a) Ich würde diese nun alle 5 min speichern wollen unabhängig ob der Wert sich zwischendrin geändert hat.
b) Ich möchte aber auch einen state alle 5 min speichern auch wenn dieser sich nur 2 mal am Tag ändert
Quick & dirty Lösung ... Alles im Regex des DbLog-DEF ausschliessen, z.B.
define myDbLog DbLog /etc/fhem/db.conf aaaaaa:bbbbb
Das Attribute excludeDevs kann man dafür auch gut benutzen.
Dann zwei AT's einrichten die in den gewünschten Zeitabständen das in DbLog integrierte addlog aufrufen:
set <name> addLog <devspec>:<Reading>
Lies dazu mal die commandref in DbLog dazu.
VG,
Heiko
Hallo danke fuer die Antwort.
Waere meine Loesung aber was muss ich fuer <name> setzen?
Danke AK
ZitatWaere meine Loesung aber was muss ich fuer <name> setzen?
Der <name> wäre der Name deines DbLog-Devices. Deswegen auch bitte wegen dem addLog in die commandref von DbLog schauen und nicht den Beitrag "addLog" im Wiki verwenden. Die Dinge sind zwar ähnlich aber doch spezifisch und in DbLog umfassender.
VG,
Heiko
Hallo,
Leider ist mein Problem immer noch da:
mein Log.Device sieht so aus:
define DBLogging DbLog /opt/fhem/contrib/dblog/db.conf .*:.*
mein zu loggendes Device hat Readings: energy, state, voltage, etc und heisst so:
define Plug_Ku_HdyLadeStation ZWave abcdefg 9
attr Plug_Ku_HdyLadeStation DbLogExclude .*
ich will state unbedingt loggen aber es funktioniert so nicht:
define at_Plug_Ku_HdyLadeStation_Log at +*00:05:00 {set DBLogging addLog Plug_Ku_HdyLadeStation:state}
Übrigens kann ich leider in der CommandRef nichts über addLog finden.
Noch irgendetwas was ich falsch mache?
Danke Andreas
Hallo Andreas,
ZitatLeider ist mein Problem immer noch da:
Kann ich verstehen ;)
Zitatmein Log.Device sieht so aus:
Code: [Auswählen]
define DBLogging DbLog /opt/fhem/contrib/dblog/db.conf .*:.*
Vergleiche mal mit dem DbLog-Define was ich dir oben hingeschrieben habe ... (aaaaa:bbbbbb)
Zitat
mein zu loggendes Device hat Readings: energy, state, voltage, etc und heisst so:
Code: [Auswählen]
define Plug_Ku_HdyLadeStation ZWave abcdefg 9
attr Plug_Ku_HdyLadeStation DbLogExclude .*
Das attr DbLogExclude .* verhindert das Logging. Dafür gibt es bei addLog aber eine Option ...
Zitat
ich will state unbedingt loggen aber es funktioniert so nicht:
Code: [Auswählen]
define at_Plug_Ku_HdyLadeStation_Log at +*00:05:00 {set DBLogging addLog Plug_Ku_HdyLadeStation:state}
Ja ist ja auch nicht richtig bzw. nicht komplett.
So sollte es funktionieren:
define at_Plug_Ku_HdyLadeStation_Log at +*00:05:00 set DBLogging addLog Plug_Ku_HdyLadeStation:state !useExcludes
Und das ...
Zitat
Übrigens kann ich leider in der CommandRef nichts über addLog finden.
kann ich nun aber wirklich nicht verstehen. Der Absatz springt dich quasi an wenn du "help dblog" eintippst und dann runter scrollst bis zu den set-Kommandos. ;)
Grüße
Heiko
Hallo das wars.
Vielen Dank es funktioniert jetzt !!!!!!
MfG
Andreas