[Gelöst] DBLog Einträge (Anzahl) verringern (Daten nur in fester Frequenz in DB)

Begonnen von Hackstall, 30 April 2018, 08:15:33

Vorheriges Thema - Nächstes Thema

Hackstall

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



thgorjup

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


FHEM auf Ubuntu 18.04LTS, 2x nanoCUL, JeeLink, nanoPIR, MQTT, ESP-Easy, HUE.
Sensoren+Aktoren: HM, IT, Lacrosse, Multitrade-PIR, VU+, Somfy

Pfriemler

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.
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

thgorjup

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
FHEM auf Ubuntu 18.04LTS, 2x nanoCUL, JeeLink, nanoPIR, MQTT, ESP-Easy, HUE.
Sensoren+Aktoren: HM, IT, Lacrosse, Multitrade-PIR, VU+, Somfy

Hackstall

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

DS_Starter

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
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Hackstall

Hallo danke fuer die Antwort.
Waere meine Loesung aber was muss ich fuer <name> setzen?
Danke AK

DS_Starter

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
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Hackstall

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

DS_Starter

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


Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Hackstall

Hallo das wars.

Vielen Dank es funktioniert jetzt !!!!!!

MfG
Andreas