DbLog Datenbank aufräumen

Begonnen von mdorenka, 13 Dezember 2013, 10:12:03

Vorheriges Thema - Nächstes Thema

ChrisD

Hallo,

@Tobias: Performance-Probleme habe ich keine feststellen können, was aber wahrscheinlich mit der eingesetzten Hardware und Datenbank zusammenhängt. Bei mir ist der Unterschied nicht messbar.

@Joachim: Das funktioniert aber nicht mit endPlotNow, da hier die Plotwechselzeiten variabel sind.

Grüße,

ChrisD

Joachim

Moin ChrisD,
der Code-Schnipsel sollte als Anregung (ggf. zum abkupfern) dienen, und wenn soetwas integriert wird, dann mit einem attr steuerbar sein. Wer unbedingt endPlotNow benötigt, wird nicht drumherumkommen, wirklich alle Werte in der Datenbank zu halten.
Auf der anderen Seite ist es wirklich Irrsinn, von einem Device, dass nur 1 mal im Jahr (Batterie) seinen zustand ändert, alle 5 Minuten einen Eintrag in der Datenbank zu haben, nur damit der Plot vernünftig aussieht.

Gruß Joachim
FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

justme1968

wenn es um ein event geht das nur ein mal im jahr auftritt ist es aber sich unpassend eine kurve zu zeichnen. ein punkt oder ein histogramm hat die probleme mit den löcher nicht und ist viel passender. auch bei nur einem Wert im jahr.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Joachim

Mensch Andre,

das war nur ein Extrembeispiel mit der Batterie eines Sensors.

Fenster/Türüberwachung für eine Alarmanlage wäre z.B. ein anderes Beispiel. Hier ist es z.B. wichtig, in kurzen Abständen zu loggen, auch wenn die Terrassentür im Winter die ganze Zeit zu ist, also eine Statusänderung lange Zeit nicht erfolgt. Um trotzdem einen sinnvollen Plot zu erreichen, muss in entsprechend kurzen Zeiten ein event-min-intervall reading erzeugt werden (z.B. alle 10 Minuten also 144 Logeinträge am Tag gegen 4 mit dem Vorschlag / Codeschnipsel den ich gepostet habe.

Anderes Beispiel wäre im Frühjahr / Herbst der Heizungsthermostat, solange es warm genug ist, ist die Heizung aus, es wird aber trotzdem fleissig geloggt.

Und es gibt wahrscheinlich noch diverse weitere Beispiele, in denen es sinnvoll ist, nach event-on-change reading die Daten zu reduzieren.
Wer es nicht haben möchte, muss es ja nicht aktivieren.

Mein Vorschlag kam nur auf die Äußerung von Tobias
Zitatsoetwas steht schon auf meiner TODO Liste fürs DBLog Modul.
Mangels Zeit und detaillierteres Umsetzungskonzept noch nicht weiter dazu gekommen...
Der Codeschnipsel enthält zumindest ein Umsetzungskonzept, welches funktioniert, von mir schon ca 1 Jahr mit Filelog genutzt wurde, und "nur" noch auf DBLog adaptiert werden muss.

Habe teilweise das Gefühl dass Neuerungen ersteinmal zerredet werden.

Gruß Joachim
FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

justme1968

ich wollte weder etwas zerreden noch zweifle ich an das man das loggen und die plots noch deutlich optimieren kann. aber das beispiel mit der batterie war wirklich schlecht.

auf der anderen seite logge ich seit fast einem jahr auch sehr häufige events per sqlite und habe keine probleme damit. d.h. eine lösung sollte dann auch wirklich eine verbesserung sein die in jeder Zoom stufe und mit jedem plot range funktioniert.

vielleicht wäre eine möglichkeit sich mit limit 1 jeweils den tatsächlich jeweils ersten wert der rechts und links außerhalb liegt zu holen. das müsste in jeder zoom stufe funktionieren.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Joachim

Moin Andre,
Mal kurz ein Beispiel aus dem letzten Monat:

2013-12-04_22:10:03 HK_Regler_Gaestezimmer battery: ok
2013-12-04_22:10:03 HK_Regler_Gaestezimmer desiredTemperature: 15.0
2013-12-04_22:10:03 HK_Regler_Gaestezimmer valveposition: 0
2013-12-04_22:10:19 Temp_Sensor_Gaestezimmer temperature: 17.75 °C
2013-12-05_00:00:00 Temp_Sensor_Gaestezimmer temperature: 17.75 &deg;C     >>>Zeit durch Filelog geaendert um Logabriss zu verhindern<<<
2013-12-05_00:00:00 HK_Regler_Gaestezimmer battery: ok     >>>Zeit durch Filelog geaendert um Logabriss zu verhindern<<<
2013-12-05_00:00:00 HK_Regler_Gaestezimmer desiredTemperature: 15.0     >>>Zeit durch Filelog geaendert um Logabriss zu verhindern<<<
2013-12-05_00:00:00 HK_Regler_Gaestezimmer valveposition: 0     >>>Zeit durch Filelog geaendert um Logabriss zu verhindern<<<
2013-12-05_06:00:00 Temp_Sensor_Gaestezimmer temperature: 17.75 &deg;C     >>>Zeit durch Filelog geaendert um Logabriss zu verhindern<<<
2013-12-05_06:00:00 HK_Regler_Gaestezimmer battery: ok     >>>Zeit durch Filelog geaendert um Logabriss zu verhindern<<<
2013-12-05_06:00:00 HK_Regler_Gaestezimmer desiredTemperature: 15.0     >>>Zeit durch Filelog geaendert um Logabriss zu verhindern<<<
2013-12-05_06:00:00 HK_Regler_Gaestezimmer valveposition: 0     >>>Zeit durch Filelog geaendert um Logabriss zu verhindern<<<
2013-12-05_12:00:00 HK_Regler_Gaestezimmer battery: ok     >>>Zeit durch Filelog geaendert um Logabriss zu verhindern<<<
2013-12-05_12:00:00 HK_Regler_Gaestezimmer desiredTemperature: 15.0     >>>Zeit durch Filelog geaendert um Logabriss zu verhindern<<<
2013-12-05_12:00:00 HK_Regler_Gaestezimmer valveposition: 0     >>>Zeit durch Filelog geaendert um Logabriss zu verhindern<<<
2013-12-05_12:00:00 Temp_Sensor_Gaestezimmer temperature: 17.75 &deg;C     >>>Zeit durch Filelog geaendert um Logabriss zu verhindern<<<
2013-12-05_12:05:09 HK_Regler_Gaestezimmer temperature: 16.8
2013-12-05_16:04:18 HK_Regler_Gaestezimmer temperature: 16.8
2013-12-05_17:00:28 Temp_Sensor_Gaestezimmer temperature: 17.75 &deg;C
2013-12-05_17:05:28 Temp_Sensor_Gaestezimmer temperature: 17.63 &deg;C
2013-12-05_17:10:28 Temp_Sensor_Gaestezimmer temperature: 17.75 &deg;C
2013-12-05_17:20:38 Temp_Sensor_Gaestezimmer temperature: 17.75 &deg;C
2013-12-05_17:25:43 Temp_Sensor_Gaestezimmer temperature: 17.63 &deg;C
2013-12-05_17:30:48 Temp_Sensor_Gaestezimmer temperature: 17.75 &deg;C
2013-12-05_17:35:54 Temp_Sensor_Gaestezimmer temperature: 17.75 &deg;C
2013-12-05_17:40:59 Temp_Sensor_Gaestezimmer temperature: 17.63 &deg;C
2013-12-05_17:56:16 Temp_Sensor_Gaestezimmer temperature: 17.63 &deg;C
2013-12-05_18:00:00 HK_Regler_Gaestezimmer battery: ok     >>>Zeit durch Filelog geaendert um Logabriss zu verhindern<<<
2013-12-05_18:00:00 HK_Regler_Gaestezimmer desiredTemperature: 15.0     >>>Zeit durch Filelog geaendert um Logabriss zu verhindern<<<
2013-12-05_18:00:00 HK_Regler_Gaestezimmer valveposition: 0     >>>Zeit durch Filelog geaendert um Logabriss zu verhindern<<<
2013-12-05_18:01:20 Temp_Sensor_Gaestezimmer temperature: 17.75 &deg;C
2013-12-05_18:06:24 Temp_Sensor_Gaestezimmer temperature: 17.63 &deg;C
2013-12-05_18:11:29 Temp_Sensor_Gaestezimmer temperature: 17.75 &deg;C
2013-12-05_18:16:33 Temp_Sensor_Gaestezimmer temperature: 17.63 &deg;C
2013-12-05_19:11:32 Temp_Sensor_Gaestezimmer temperature: 17.63 &deg;C

Alle Readings waren auf 5 Minuten eingestellt.

Zitatd.h. eine lösung sollte dann auch wirklich eine verbesserung sein die in jeder Zoom stufe und mit jedem plot range funktioniert.
Ich glaube, die linke Seite des Filelogs wird so gemacht.
Zitat aus der 92_Filelog.pm:
Zitat# If no value found for some of the required columns, then look for the last
# matching entry outside of the range. Known as the "window left open
# yesterday" problem


Gruß Joachim
FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

ChrisD

Hallo,

Ich verwende die Version mit LIMIT 1 seit mehreren Monaten, allerdings nicht mit SQLite sondern leicht modifiziert mit SQL Server 2005. Der gepostete Code funktioniert aber so mit SQLite.

@Joachim: Mein Post sollte keine Kritik an deinem Code sein. Ich wollte nur darauf hinweisen dass er bei aktiviertem 'endPlotNow' den gewünschten Effekt nicht optimal erzielt.

Grüße,

ChrisD

Joachim

@ ChrisD und Andre,

Gut, vergeben, hatte mich nur geärgert, dass die Antworten nur "negatives" enthielten.

Der großte Vorteil für mich war, dass die Plots auf einer langsamen FB7570 nach Datenreduzierung genial schnell aufgebaut wurden, und das ohne nennenswerte Qualitätsverluste. Hatte allerdings nie endPlotnow in Betrieb.
Nachteil war die massive Beanspruchung des USB-Sticks, deshalb nie veröffentlicht.

Gruß Joachim
FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

Puschel74

Hallo,

ZitatNachteil war die massive Beanspruchung des USB-Sticks, deshalb nie veröffentlicht.
Ich hab an meinem RasPi eine USB-HDD für DbLog mit sqlite3 im Einsatz.

Darf ich dir beim testen helfen?
Kann ich dir überhaupt beim testen helfen?

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Joachim

Moin Puschel74,

noch gibt es nichts zu testen, es sei denn, Du willst wieder auf's FileLog umsteigen.

Gruß Joachim
FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

Puschel74

Hallo,

Zitat03 Januar 2014, 22:33:05
ZitatBin gerade erst auf DbLog umgestiegen, und habe noch viel zu viel anderes auf dem Zettel.

Ich dachte der Beitrag war auch von dir.
Sorry - hab ich mich vertan.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Joachim

Der Beitrag war von mir, allerdings hatte ich den Logauszug von Markus Niemann angepasst, um zu illustrieren, wie es aussehen könnte. Noch gibt es hier nichts, was man testen könnte.

Gruß Joachim
FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

Puschel74

Hallo,

ZitatNoch gibt es hier nichts, was man testen könnte.
Ok. Ich biet mich mal an wenn es soweit sein sollte  ;D

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Joachim

Mensch Puschel,

nicht so gierig.

Aber ich habe mir gerade mal DbLog angesehen, mein Code ist relativ einfach ab Zeile 392 zu integrieren.
Dafür muss noch nicht einmal was aus der Datenbank gelöscht werden, da das aktuelle reading in die Datenbank current geschrieben wird.
Das bedeutet,  wenn das aktuelle Reading identisch mit dem reading current und history ist, und Bedingung zum löschen gegeben ist,
aktuelles reading --> current
current nicht nach history
Rest bleibt unverändert.

mal sehen, was tobias dazu sagt.

Gruß Joachim
FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

Tobias

auf jeden fall hört sich das ganz gut an...
Macht doch einen Patch, dann checke ich das ins contrib ein zum breiten testen. Bitte diese Funktionalität per Attr steuern.
Auf meiner TODO-Liste steht die Idee mit der Aggregation und dem daraus resultierenden Löschen... Meine Postgresql-DB ist zZ. 2GB groß
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter