93_DbLog - Überlegungen zur Optimierung (RPI und andere Systeme)

Begonnen von JoeALLb, 27 Januar 2017, 22:16:19

Vorheriges Thema - Nächstes Thema

JoeALLb

#795
... Weil es mich so freut, hier nochmal ein Screenshot über die ganze Woche.
Man sieht schön, wo ich BulkInsert aktiviert habe! Die normale Speicherzeit von 1.3-6s liegt jetzt zwischen 0.6 und max. 1.8s ...
und belastet sicherlich auch die SD-Karte weniger!

sg Joe
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

DS_Starter

#796
Hallo miteinander,

seit längerer Zeit habe ich mich wieder mit DbLog beschäftigt.
Angeregt von unserem Stammtisch (https://forum.fhem.de/index.php/topic,52727.msg953319.html#msg953319) habe ich
ein Attribut "DbLogValueFn" eingeführt, welches in den Devices (so wie DbLogExclude) propagiert wird sofern DbLog genutzt wird.
Dadurch ist es möglich, gewünschte Manipulationen der zu loggenden Daten im Device vorzunehmen und nicht alles in der zentralen "valueFn" hinterlegen zu müssen. Dadurch wird "valueFn" nicht zu umfangreich falls man diese Möglichkeit umfangreich einsetzt.

Auszug:

* DbLogValueFn


    attr <device> DbLogValueFn {}
    Wird DbLog genutzt, wird in allen Devices das Attribut DbLogValueFn propagiert. Es kann über einen Perl-Ausdruck auf die   
    Variablen $TIMESTAMP, $READING, $VALUE (Wert des Readings) und $UNIT (Einheit des Readingswert) zugegriffen
    werden und diese verändern, d.h. die veränderten Werte werden geloggt. Außerdem hat man lesenden Zugriff auf $EVENT
    für eine Auswertung im Perl-Ausdruck. $EVENT kann nicht verändert werden.
    Soll $TIMESTAMP verändert werden, muss die Form "yyyy-mm-dd hh:mm:ss" eingehalten werden, ansonsten wird der
    geänderte $timestamp nicht übernommen. Zusätzlich kann durch Setzen der Variable "$IGNORE=1" der Datensatz vom
    Logging ausgeschlossen werden.
    Die devicespezifische Funktion in "DbLogValueFn" wird vor der eventuell im DbLog-Device vorhandenen Funktion im
    Attribut "valueFn" auf den Datensatz angewendet.

    Beispiel

    attr SMA_Energymeter DbLogValueFn
    {
      if ($READING eq "Bezug_WirkP_Kosten_Diff"){
        $UNIT="Diff-W";
      }
      if ($READING =~ /Einspeisung_Wirkleistung_Zaehler/){
        $IGNORE=1;
    }
          

Die Änderung ist zunächst per Download aus meinem contrib (Footer) verfügbar. Bitte benutzt den Downloadbutton in der Zeile des Moduls.

Grüße,
Heiko
ESXi@NUC+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

DS_Starter

Hallo zusammen,

in meinem contrib (siehe Footer) habe ich einen neue Version 4.3.0 bereitgestellt.
Diese Version erlaubt es das Datenbankschema mit dem Attribut "dbSchema" zu setzen (nicht bei SQLITE).
Hintergrund ist die Anfrage von volschin hier -> https://forum.fhem.de/index.php/topic,102679.0.html

Auch wenn die Änderung klein ist, habe ich jedes Statement anfassen müssen und bitte euch die Version herunterzuladen und zu testen !!

Es ist ein Restart erforderlich !

Grüße,
Heiko
ESXi@NUC+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

volschin

Hallo Heiko,
Funktioniert bisher ohne Auffälligkeiten sowohl für die Logs, als auch die Plot-Darstellung.
Intel NUC+Ubuntu 22.04+Docker+FHEM6
HomeMatic: HM-MOD-RPI-PCB+HM-USB-CFG2+hmland+diverse, HUE: Hue-Bridge, RaspBee+deCONZ+diverse
Amzn Dash-Buttons, Siro Rollos
4xRPi, 4xCO20, OWL+USB, HarmonyHub, FRITZ!Box 7590, Echo Dots+Show8, Logi Circle 2, HomeBridge
TIG Stack (Telegraf, InfluxDB, Grafana)

DS_Starter

Danke für die Rückmeldung volschin, Freut mich  :)

Heiko
ESXi@NUC+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

Morgennebel

Moin,


https://svn.fhem.de/trac/browser/trunk/fhem/contrib/dblog/db_create_postgresql.sql Zeile 72 fehlt ein ";" am Ende der Zeile.

Das gesamte Script funktioniert bei mir nicht wirklich - am Ende half es bei mir nur, die Kommandos mit Copy & Paste ins Terminal einzugeben.

Danke, -MN
Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA

volschin

Da hatte jetzt auch keiner was gefixt.


Gesendet von iPhone mit Tapatalk
Intel NUC+Ubuntu 22.04+Docker+FHEM6
HomeMatic: HM-MOD-RPI-PCB+HM-USB-CFG2+hmland+diverse, HUE: Hue-Bridge, RaspBee+deCONZ+diverse
Amzn Dash-Buttons, Siro Rollos
4xRPi, 4xCO20, OWL+USB, HarmonyHub, FRITZ!Box 7590, Echo Dots+Show8, Logi Circle 2, HomeBridge
TIG Stack (Telegraf, InfluxDB, Grafana)

DS_Starter

ESXi@NUC+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

DS_Starter

Hallo miteinander,

in meinen contrib (siehe footer) befindet sich die Version 4.6.0.
In diesem Thread -> https://forum.fhem.de/index.php/topic,97148.0.html  wurde angeregt bei der Verwendung von MinInterval die Events auch dann nicht zu loggen wenn sie sich gegenüber dem Vorwert unterscheiden.

Um das zu realisieren wurde ein optionaler Parameter "force" bei der Verwendung von MinInterval eingeführt.

Auszug aus ComRef:

Ist MinIntervall angegeben, wird der Logeintrag nicht geloggt, wenn das Intervall noch nicht erreicht und der Wert des Readings sich nicht verändert hat. Ist der optionale Parameter "force" hinzugefügt, wird der Logeintrag auch dann nicht geloggt, wenn sich der Wert des Readings verändert hat,z.B.

attr MyDevice2 DbLogExclude state,(floorplantext|MyUserReading):300:force,battery:3600:force

Würde mich über Meinungen und den einen oder anderen Tester freuen.

Grüße,
Heiko
ESXi@NUC+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

obi

Hallo zusammen,

ich hätte eine Feature-Wunsch:
Die Funktionalität von "MinIntervall" noch zusätzlich als allgemeines Attribut im DbLog Device hinzufügen. Dies gilt dann generell für alle Readings/Log-Einträge. So kann ich mir ersparen dies in allen meinen Geräten anzupassen. Eventuell auch als Regex um auf bestimmte Geräte/Readings einzugrenzen. Ich möchte generell keine Doppelten Einträge/gleiche Werte innerhalb eines Intervall erhalten.

Wäre schön wenn es umgesetzt wird :)

DS_Starter

ZitatDie Funktionalität von "MinIntervall" noch zusätzlich als allgemeines Attribut im DbLog Device hinzufügen. Dies gilt dann generell für alle Readings/Log-Einträge.
Ich habe die Idee auf meine ToDo-Liste gesetzt um es zu prüfen.

Möchte aber zunächst einmal den aktuellen Entwicklungsstand einchecken und schauen ob es eventuell noch irgendwo Nachbesserungsbedarf geben sollte.

Grüße,
Heiko
ESXi@NUC+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

frober

#806
Hallo Heiko,

zum dem hier https://forum.fhem.de/index.php/topic,99280.msg979679.html#msg979679 gelösten Problem ist mir noch eine Kleinigkeit aufgefallen.

Die Beschreibung incl. Anhänge habe ich im dem alten Thread eingefügt, da es ja daraus resultiert.

Gruß
Bernd
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

DS_Starter

Hallo miteinander,

ich habe eine neue DbLog-Version in meinem contrib zur Verfügung gestellt.
Es ist das SQL zur Ermittlung von Differenzen delta-h, delta-d neu aufgebaut. Die Grundlage für diesen Change ist die Diskussion in diesem Thread mit Bernd: https://forum.fhem.de/index.php/topic,99280.msg980406.html#msg980406

Die neue Version ist in meinem contrib. Zum Download in der FHEMWEB Kommandozeile inklusive der Ausführungszeichen angeben:

"wget -qO ./FHEM/93_DbLog.pm https://svn.fhem.de/fhem/trunk/fhem/contrib/DS_Starter/93_DbLog.pm"

Ich habe grundlegende Tests durchgeführt, aber kann natürlich nicht jede Variation abbilden.
Deswegen wäre es mir wichtig, dass ihr mich mit Tests der Version auf euren Systemen unterstützt. Es betrifft SVG-Generierungen die delta-h bzw. delta-d Berechnungen mit logproxy durchführen in der Art:


#myProxy1 DbLog:LogSQLITE:KS300:data::delta-h:$val=~s/.*\sR..([\d.]+)\s.*/$1/eg
#myProxy1 DbLog:LogPostgre:KS300:data::delta-h:$val=~s/.*\sR..([\d.]+)\s.*/$1/eg


Grüße,
Heiko
ESXi@NUC+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

frober

Hallo Heiko,

da passt was nicht :o

Zitat2019-10-09_00:30:00 -9.22337e+18
2019-10-09_01:30:00 0
2019-10-09_02:30:00 0
2019-10-09_03:30:00 0
2019-10-09_04:30:00 0
2019-10-09_05:30:00 0
2019-10-09_06:30:00 0
2019-10-09_07:30:00 0
2019-10-09_08:30:00 0
2019-10-09_09:30:00 0
2019-10-09_10:30:00 0
2019-10-09_11:30:00 0
2019-10-09_12:30:00 0
2019-10-09_13:30:00 0
2019-10-09_14:30:00 0
2019-10-09_15:30:00 0.3
2019-10-09_16:30:00 0.3
2019-10-09_17:30:00 0
2019-10-09_18:30:00 0
2019-10-09_19:30:00 0
2019-10-09_20:30:00 3.8
#KS300:data::delta-h:$val=~s/.*\sR..([\d.]*).*/$1/eg
2019-10-09_12:00:00 -9.22337e+18
#KS300:data::delta-d:$val=~s/.*\sR..([\d.]*).*/$1/eg

Gruß Bernd
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

DS_Starter

 ???
Hast du die gleichen Daten ausgewertet wie bei unserem Test ?
Bitte mal verbose 5 setzen, das SVG aufrufen und die Ausgabe posten. Möglicher Grund ... gibt es vielleicht keinerlei Daten in der Vorperiode ?

Grüße.
Heiko
ESXi@NUC+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