93_DbLog - Umstellung Log-Funktion auf non-blocking

Begonnen von DS_Starter, 18 Dezember 2016, 20:03:56

Vorheriges Thema - Nächstes Thema

ghayne

Zitat von: DS_Starter am 27 Januar 2017, 22:53:14
Hi Gary,

Die V2.10.7 ist hier https://forum.fhem.de/index.php/topic,62998.msg570232.html#msg570232.
Aber wenn dein select * auf die Current-Tabelle kein Ergebnis bringt,  dann ist das wahrscheinlich auch die Ursache. Ist wirklich komisch.
Hast du einen SQL-Editor mit dem du dir den Inhalt der Tabelle Current anschauen kannst ?

Die Tabelle muß gefüllt werden und das funktioniert auch prinzipiell. Habe selbst eine SQLite Test-DB und klappt tadellos.

Grüße
Heiko

Hi Heiko, raw definition:

defmod logdb DbLog /opt/fhem/db.conf logdb:countHistory.*
attr logdb DbLogType Current/History
attr logdb room Unsorted

setstate logdb connected
setstate logdb 2017-01-27 21:59:18 countCurrent 1
setstate logdb 2017-01-27 21:59:18 countHistory 11
setstate logdb 2017-01-27 21:59:18 state connected

Gruss Garry

DS_Starter

#511
Hi Gary,

Zitatdefmod logdb DbLog /opt/fhem/db.conf logdb:countHistory.*

Damit "...logdb:countHistory.*" loggst du ja nur das logdb-Device selbst. Du möchtest doch sicherlich deine Device/Readings loggen.

Meine Test-Konfiguration für SQLite sieht zum Beispiel so aus:


defmod LogSQLITE DbLog ./db_sqlite.conf (STP_5000|MySTP_5000|MyWetter|sysmon|Dum.Energy|SMA_Energymeter):.*
attr LogSQLITE DbLogType Current/History
attr LogSQLITE asyncMode 1
attr LogSQLITE cacheEvents 2
attr LogSQLITE cacheLimit 50
attr LogSQLITE devStateIcon .*active:10px-kreis-gelb connected:10px-kreis-gruen .*disconnect:10px-kreis-rot
attr LogSQLITE disable 0
attr LogSQLITE room DbLog
attr LogSQLITE showNotifyTime 0
attr LogSQLITE showproctime 1
attr LogSQLITE syncInterval 70
attr LogSQLITE verbose 3


Die Konfig "...(STP_5000|MySTP_5000|MyWetter|sysmon|Dum.Energy|SMA_Energymeter):.*" loggt alle Events der Devices STP_5000, MySTP_5000, MyWetter, sysmon, Dum.Energy, SMA_Energymeter.
Sicherlich müßtest du deine Konfiguration etwas umändern.

EDIT:  Ist schon spät heute ... mache erstmal Schluß. Gute Nacht ....

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

ghayne

Zitat von: DS_Starter am 27 Januar 2017, 23:09:19
Hi Gary,

Damit "...logdb:countHistory.*" loggst du ja nur das logdb-Device selbst. Du möchtest doch sicherlich deine Device/Readings loggen.

Meine Test-Konfiguration für SQLite sieht zum Beispiel so aus:


defmod LogSQLITE DbLog ./db_sqlite.conf (STP_5000|MySTP_5000|MyWetter|sysmon|Dum.Energy|SMA_Energymeter):.*
attr LogSQLITE DbLogType Current/History
attr LogSQLITE asyncMode 1
attr LogSQLITE cacheEvents 2
attr LogSQLITE cacheLimit 50
attr LogSQLITE devStateIcon .*active:10px-kreis-gelb connected:10px-kreis-gruen .*disconnect:10px-kreis-rot
attr LogSQLITE disable 0
attr LogSQLITE room DbLog
attr LogSQLITE showNotifyTime 0
attr LogSQLITE showproctime 1
attr LogSQLITE syncInterval 70
attr LogSQLITE verbose 3


Die Konfig "...(STP_5000|MySTP_5000|MyWetter|sysmon|Dum.Energy|SMA_Energymeter):.*" loggt alle Events der Devices STP_5000, MySTP_5000, MyWetter, sysmon, Dum.Energy, SMA_Energymeter.
Sicherlich müßtest du deine Konfiguration etwas umändern.

EDIT:  Ist schon spät heute ... mache erstmal Schluß. Gute Nacht ....

Grüße
Heiko

Du hast rech aber ich habe kein Lust jetzt ein Leiter zu holen und hoch zu klettern zum Stromzaehler und das Photodiode am neu Pi3 anzusccliessen :)

Schlaf gut!

DS_Starter

Hallo Daniel,

mir ist noch eine Idee gekommen wie die Feldlängenproblematik beim Start gelöst werden könnte.
Bitte schau mal mit der angehängten V2.10.8 ob meine Idee  bei dir funktioniert.

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

ghayne

Zitat von: Garry Hayne am 27 Januar 2017, 23:31:08
Du hast rech aber ich habe kein Lust jetzt ein Leiter zu holen und hoch zu klettern zum Stromzaehler und das Photodiode am neu Pi3 anzusccliessen :)

Schlaf gut!

Heiko, es hat funktioniert! (2.10.7)

current hat zetzt 1 Eintrag und die SVG's funktionieren auch.

Gruss, A Happy Welshman looking out of the window at The Black Mountain with a smile on his face. - Garry

DS_Starter

Hi Garry,

ZitatA Happy Welshman looking out of the window at The Black Mountain with a smile on his face

That sounds great Garry ... so I'm happy too :)

Es würde mich freuen, wenn du Lust hast, dich auch am Test einer weiterentwickelten Version zu beteiligen.
Vielleicht (wenn ich es schaffe) stelle ich morgen eine weitere Version hier ein.

Have a nice weekend !

viele 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

ghayne

Zitat von: DS_Starter am 28 Januar 2017, 17:02:16
Hi Garry,

That sounds great Garry ... so I'm happy too :)

Es würde mich freuen, wenn du Lust hast, dich auch am Test einer weiterentwickelten Version zu beteiligen.
Vielleicht (wenn ich es schaffe) stelle ich morgen eine weitere Version hier ein.

Have a nice weekend !

viele Grüße
Heiko

Heiko,
ich werde gern mitmachen.

Schoenes Wochenende auch!

Regards, Garry

ioT4db

Zitat von: DS_Starter am 28 Januar 2017, 08:41:46
Hallo Daniel,

mir ist noch eine Idee gekommen wie die Feldlängenproblematik beim Start gelöst werden könnte.
Bitte schau mal mit der angehängten V2.10.8 ob meine Idee  bei dir funktioniert.

Grüße
Heiko

Nabend Heiko,
nach ein paar Tests würde ich sagen, dass es nun funktioniert! Top!
Ich beobachte es aber weiter. Spätestens wenn Du die nächste Version eincheckst, mach ich ein Update und muss restarten...

VG
FHEM auf Synology mittels Docker,  Jeelink-Clone 1x für PCA301 und 1x für Lacrosse, THZ304SOL, Homematic: CUL_HM / M-MOD-RPI-PCB, Pushover, Xiaomi s50

Pyromane

Hallo,

ich wollte auf meinen Testsystem(=SQLite) heute ein SVG erstellen und das DropDown blieb leer obwohl ich das Attribut "DbLogType" auf "Current/History " gesetzt habe.

Internals:
   COLUMNS    field length used for Device: 64,
                     Type: 64,
Event: 512,
Reading: 64,
Value: 128,
Unit: 32
   CONFIGURATION /opt/fhem/db.conf
   DBMODEL    SQLITE
   DEF        /opt/fhem/db.conf .*:.*
   MODE       synchronous
   NAME       myDbLog
   NR         19
   NTFY_ORDER 50-myDbLog
   PID        2440
   REGEXP     .*:.*
   STATE      connected
   TYPE       DbLog
   VERSION    2.10.4
   dbconn     SQLite:dbname=/opt/fhem/fhem.db
   dbuser
   Readings:
     2017-01-29 01:43:34   countCurrent    13
     2017-01-29 01:43:34   countHistory    209722
     2016-12-31 00:05:28   lastRowsDeleted 22663
     2017-01-29 02:00:55   state           connected
   Cache:
     index      0
Attributes:
   DbLogType  Current/History

Auf meinem Produktivsystem mit PostgreSQL habe ich das Problem nicht.

Grüße
Pyromane

DS_Starter

Hallo Pyromane,

eine ähnliche Situation mit SQLite hatte Garry. Mit der Version 2.10.7 https://forum.fhem.de/index.php/topic,62998.msg570232.html#msg570232 war es behoben.
Du kannst aber auch gleich die nächste V benutzen die ich gleich hier einstellen werde. Diese möchte ich nach der Testphase auch einchecken.

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

DS_Starter

#520
Hallo zusammen,

anbei die Version 2.11.

Diese Version beinhaltet alle Änderungen bzgl. Issues die seit Version 2.10.4 aufgetreten sind und mit den
Versionen 2.10.6, 2.10.7 bzw. 2.10.8 behoben wurden.
Mit dieser Version ist die Umstellung der Log-Funktion auf non-blocking auch in Bezug der Abgrenzung der Modul-internen Funktionen voneinander abgeschlossen.

Zusätzlich enthält diese Version noch eine Erweiterung des Befehls "set ... reopen". Man kann nun optional eine Zeit in Sekunden
mit angeben. Erst nach Ablauf dieser Zeit wird die Verbindung zur DB nach der Trennung wieder geöffnet.

Auszug aus der Commandref:
Zitat
set <name> reopen [n]

   Schließt die Datenbank und öffnet sie danach sofort wieder wenn keine Zeit [n] in Sekunden angegeben wurde.
   Dabei wird die Journaldatei geleert und neu angelegt.
   Verbessert den Datendurchsatz und vermeidet Speicherplatzprobleme.
   Wurde eine optionale Verzögerungszeit [n] in Sekunden angegeben, wird die Verbindung zur Datenbank geschlossen
   und erst nach Ablauf von [n] Sekunden wieder neu verbunden. Im synchronen Modus werden die Events in dieser Zeit
   nicht gespeichert. Im asynchronen Modus werden die Events im Cache gespeichert und nach dem Reconnect in die Datenbank
   geschrieben.

   
Bitte testet diese Version auf euren Systemen. Insbesondere die Erstellung der Drop-Down-Liste bei SVG's mit SQLite hatte in der
Vergangenheit bei dem einen oder anderen für Issues gesorgt.
Auf meinen Systemen mit MySQL/MariaDB und SQLite läuft alles tadellos sowohl synchron/asynchron  mit oder ohne plotfork.

Diese Version möchte ich nach einer gewissen Testphase einchecken.

viele Grüße und einen schönen Sonntag
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

Pyromane

Zitat von: DS_Starter am 29 Januar 2017, 09:53:50Bitte testet diese Version auf euren Systemen. Insbesondere die Erstellung der Drop-Down-Liste bei SVG's mit SQLite hatte in der
Vergangenheit bei dem einen oder anderen für Issues gesorgt.

Hallo Heiko,

ich habe auch in der Version 2.11 keine Auswahl im Dropdown beim SVG erstellen.
Internals:
   COLUMNS    field length used for Device: 64, Type: 64, Event: 512, Reading: 64, Value: 128, Unit: 32
   CONFIGURATION /opt/fhem/db.conf
   DBMODEL    SQLITE
   DEF        /opt/fhem/db.conf .*:.*
   MODE       synchronous
   NAME       myDbLog
   NR         19
   NTFY_ORDER 50-myDbLog
   PID        12341
   REGEXP     .*:.*
   STATE      connected
   TYPE       DbLog
   VERSION    2.11
   dbconn     SQLite:dbname=/opt/fhem/fhem.db
   dbuser
   Helper:
     COLSET     1
     DEVICECOL  64
     EVENTCOL   512
     READINGCOL 64
     TYPECOL    64
     UNITCOL    32
     VALUECOL   128
   Readings:
     2017-01-29 10:44:51   countCurrent    31
     2017-01-29 10:44:51   countHistory    216404
     2016-12-31 00:05:28   lastRowsDeleted 22663
     2017-01-29 10:56:58   state           connected
   Cache:
     index      0
Attributes:
   DbLogType  Current/Histor


Wünsche einen schönen Wochenausklang.
Pyromane

DS_Starter

Hallo Pyromane,

FHEM restartet ? Hast du die "Show Preprocessed input"  Werte ? Irgendwelche Fehler im Log ?
Ich kann mir keinen Grund vorstellen weshalb diese Drop-Down-Liste nicht erscheinen sollte sofern es Werte in der Current-Tabelle gibt.
Ein User hatte mal davon berichtet den Browser Cache geleert zu haben und dann ging es auch.

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

Pyromane

#523
Hallo Heiko,

ja "shutdown restart" nachdem ich die 2.11 eingespielt hatte und jetzt nocheinmal testweisen.
Da mein Dropdown leer ist, ist auch mein "Show Preprocessed input" leer.
Ich hatte testweise auch einen anderen Browser verwendet.

Ein "set myDbLog count" liefert mir im Reading "countCurrent" 0 zurück, somit scheinen keine Werte in die Tabelle geschrieben zu werden.
Mit verbose 5 sehe ich das eigentlich Einträge fehlerfrei in die current Tabelle geschrieben werden sollten bzw auch geupdatet. Jedoch scheinen die nicht wirklich anzukommen.

MfG
Pyro

Tante EDIT sagt:
Ich habe eben mit verbose 5 das PI neugestartet, dabei tauchen die Meldungen im Log auf:
2017.01.29 11:53:12 4: DbLog myDbLog -> ################################################################
2017.01.29 11:53:12 4: DbLog myDbLog -> ###              start of new Logcycle                       ###
2017.01.29 11:53:12 4: DbLog myDbLog -> ################################################################
2017.01.29 11:53:12 4: DbLog myDbLog -> amount of events received: 1 for device: MyBroker
2017.01.29 11:53:12 4: DbLog myDbLog -> check Device: MyBroker , Event: connection: connected
2017.01.29 11:53:12 4: DbLog myDbLog -> added event - Timestamp: 2017-01-29 11:53:12, Device: MyBroker, Type: MQTT, Event: connection: connected, Reading: connection, Value: connected, Unit:
2017.01.29 11:53:12 4: DbLog myDbLog -> processing event Timestamp: 2017-01-29 11:53:12, Device: MyBroker, Type: MQTT, Event: connection: connected, Reading: connection, Value: connected, Unit:
2017.01.29 11:53:12 4: DbLog myDbLog -> 1 of 1 events successfully inserted into table history
2017.01.29 11:53:12 4: DbLog myDbLog -> Failed to update in current, try to insert: MyBroker, connection, Status = 0
2017.01.29 11:53:12 4: DbLog myDbLog -> 1 of 1 events successfully inserted into table current
2017.01.29 11:53:12 5: DbLog myDbLog -> DbLog_Push Returncode: 0
2017.01.29 11:53:12 4: DbLog myDbLog -> ################################################################
2017.01.29 11:53:12 4: DbLog myDbLog -> ###              start of new Logcycle                       ###
2017.01.29 11:53:12 4: DbLog myDbLog -> ################################################################
2017.01.29 11:53:12 4: DbLog myDbLog -> amount of events received: 1 for device: MyBroker
2017.01.29 11:53:12 4: DbLog myDbLog -> check Device: MyBroker , Event: connection: active
2017.01.29 11:53:12 4: DbLog myDbLog -> added event - Timestamp: 2017-01-29 11:53:12, Device: MyBroker, Type: MQTT, Event: connection: active, Reading: connection, Value: active, Unit:
2017.01.29 11:53:12 4: DbLog myDbLog -> processing event Timestamp: 2017-01-29 11:53:12, Device: MyBroker, Type: MQTT, Event: connection: active, Reading: connection, Value: active, Unit:
2017.01.29 11:53:12 4: DbLog myDbLog -> 1 of 1 events successfully inserted into table history
2017.01.29 11:53:12 4: DbLog myDbLog -> 1 of 1 events successfully updated in table current
2017.01.29 11:53:12 5: DbLog myDbLog -> DbLog_Push Returncode: 0
2017.01.29 11:53:14 4: DbLog myDbLog -> ################################################################
2017.01.29 11:53:14 4: DbLog myDbLog -> ###              start of new Logcycle                       ###
2017.01.29 11:53:14 4: DbLog myDbLog -> ################################################################
2017.01.29 11:53:14 4: DbLog myDbLog -> amount of events received: 1 for device: ESPEasy_ESPTest_System
2017.01.29 11:53:14 4: DbLog myDbLog -> check Device: ESPEasy_ESPTest_System , Event: rss: -88
2017.01.29 11:53:14 4: DbLog myDbLog -> added event - Timestamp: 2017-01-29 11:53:14, Device: ESPEasy_ESPTest_System, Type: ESPEASY, Event: rss: -88, Reading: rss, Value: -88, Unit:
2017.01.29 11:53:14 4: DbLog myDbLog -> processing event Timestamp: 2017-01-29 11:53:14, Device: ESPEasy_ESPTest_System, Type: ESPEASY, Event: rss: -88, Reading: rss, Value: -88, Unit:
2017.01.29 11:53:14 4: DbLog myDbLog -> 1 of 1 events successfully inserted into table history
2017.01.29 11:53:14 4: DbLog myDbLog -> Failed to update in current, try to insert: ESPEasy_ESPTest_System, rss, Status = 0
2017.01.29 11:53:14 4: DbLog myDbLog -> 1 of 1 events successfully inserted into table current
2017.01.29 11:53:14 5: DbLog myDbLog -> DbLog_Push Returncode: 0


Ein "set myDbLog count" liefert aber dennoch das  Reading "countCurrent" 0 zurück.

DS_Starter

Hallo Pyro,

ZitatEin "set myDbLog count" liefert mir im Reading "countCurrent" 0 zurück, somit scheinen keine Werte in die Tabelle geschrieben zu werden

Das ist die Ursache für deine leere Drop-Down-Liste.

Eine andere Frage ist weshalb keine Werte in deiner Current-Tabelle zu finden sind obwohl sie offensichtlich geschrieben werden/wurden.
Das kann ich jetzt auch nicht wirklich beantworten. Hast du die Current-Tabelle mal mit einem externen SQL-Editor geöffnet und geschaut ob und was darin ist ?
Versuche auch in den asynchronen Modus zu wechseln. Vielleicht ergeben sich dann Hinweise weshalb die Current leer bleibt.

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