93_DbLog - Umstellung Log-Funktion auf non-blocking

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

Vorheriges Thema - Nächstes Thema

Tedious

Zitat von: JoeALLb am 12 Januar 2017, 08:26:23
Eine wichtige Information fehlt: Die Fehlermeldung sollte jetzt weg sein?!?

Das ist in der Tat ein wichtiger Punkt :)

Nein, sind sie leider nicht!

2017-01-12 12:08:40 Revolt Revolt_38c3 P:   8.3 E: 395.05 V: 234 C:   0.08 F: 50 Pf: 0.46
2017-01-12 12:08:41 DbLog myDbLog connected
2017-01-12 12:08:41 DbLog myDbLog connected
2017-01-12 12:08:41 DbLog myDbLog connected
2017-01-12 12:08:41 DbLog myDbLog DBD::mysql::st execute_array failed: MySQL server has gone away [err was 2006 now 2000000000] executing 1 generated 1 errors at ./FHEM/93_DbLog.pm line 946.
2017-01-12 12:08:41 DbLog myDbLog DBD::mysql::st execute_array failed: Data too long for column 'VALUE' at row 1 [err was 1406 now 2000000000] executing 1 generated 1 errors at ./FHEM/93_DbLog.pm line 946.
2017-01-12 12:08:41 readingsGroup ZE.Batterie LaCrosse_0D.battery:  2017-01-12 12:08:42 LaCrosse LaCrosse_0D battery: ok
2017-01-12 12:08:42 LaCrosse LaCrosse_0D temperature: 16.6
2017-01-12 12:08:42 LaCrosse LaCrosse_0D humidity: 39
2017-01-12 12:08:42 LaCrosse LaCrosse_0D T: 16.6 H: 39 D: 2.6
2017-01-12 12:08:42 LaCrosse LaCrosse_0D dewpoint: 2.6
2017-01-12 12:08:43 DbLog myDbLog connected
2017-01-12 12:08:43 DbLog myDbLog connected
2017-01-12 12:08:43 DbLog myDbLog connected
2017-01-12 12:08:43 DbLog myDbLog DBD::mysql::st execute_array failed: MySQL server has gone away [err was 2006 now 2000000000] executing 1 generated 1 errors at ./FHEM/93_DbLog.pm line 946.
2017-01-12 12:08:43 DbLog myDbLog DBD::mysql::st execute_array failed: Data too long for column 'VALUE' at row 1 [err was 1406 now 2000000000] executing 1 generated 1 errors at ./FHEM/93_DbLog.pm line 946.
FHEM auf Proxmox-VM (Intel NUC) mit 4xMapleCUN (433,3x868) und Jeelink, HUE, MiLight, Max!, SonOff, Zigbee, Alexa, uvm...

JoeALLb

Zitat von: Tedious am 12 Januar 2017, 12:09:29
Nein, sind sie leider nicht!
Nun ok, da steht eindeutig drinnen, dass die Breite der Spalte "Value" zu klein ist...
Im Screenshot vorhin sieht man dass er bei dir 64 ist,
lt.
https://svn.fhem.de/trac/browser/trunk/fhem/contrib/dblog/db_create_mysql.sql
ist die aktuelle Breite 128. (die ich persöhnlich etwas für übertrieben halte ;-) )

Wie es scheint hast Du Module, die solch breite Value-Einträge erzeugen....

Das Beste ist wohl, Du verbreiterst diese Spalte ebenfalls.

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

JoeALLb

#257
@Heiko:
Noch zwei Wünsche hätte ich ;-)

1. Könnten wir ein "set DbLog flushCache" in Zukunft ergänzen?
2. Könnten wir für PlotAbriss eine direkte Schnittstelle zu DbLog bekommen, in der ich auch das datetime einstellen kann?
   https://wiki.fhem.de/wiki/Plot-Abriss_vermeiden

in DbRep gibt es ja schon die Möglichkeit des "inserts", nun möchte ich aber nicht für jegliches Device ein DbRep-Device anlegen.
Wäre es denkbar, ein

set DbLog addLog '2016-01-11', '00:00', 'DEVICE', 'READING', 'VALUE' wobei addCache auch denkbar wäre?

Dann könnte ich das direkt und ohne myUtils99 nutzen. Im Moment habe ich immer die Sorge, was passiert, wenn der Trigger länger als 1s dauert.
(zB da mein System gerade ausgelastet ist)
Dann bekomme ich keinen Eintrag um 23:59:59, sondern um 00:00:01, was mir nicht weiter hilft!

Edit1: zweiter Wunsch ergänzt.
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

Rewe2000

Hallo,

nur zur Info, auch bei mir kommt immer beim reopen der bekannte Fehler, unabhängig ob asyncMode 1 oder 0:
2017.01.12 17:46:45 3: Connecting to database mysql:database=fhem;host=localhost;port=3306 with user Reinhard
2017.01.12 17:46:45 3: Connection to db mysql:database=fhem;host=localhost;port=3306 established for pid 1323
2017.01.12 17:46:45 3: Connecting to database mysql:database=fhem;host=localhost;port=3306 with user Reinhard
2017.01.12 17:46:45 3: Connection to db mysql:database=fhem;host=localhost;port=3306 established for pid 1323
2017.01.12 17:46:45 3: Connection to db mysql:database=fhem;host=localhost;port=3306 established
2017.01.12 17:46:45 2: DbLog DBLogging -> Error: DBD::mysql::st execute_array failed: MySQL server has gone away [err was 2006 now 2000000000]
executing 1 generated 1 errors at ./FHEM/93_DbLog.pm line 951.

2017.01.12 17:46:45 3: Connecting to database mysql:database=fhem;host=localhost;port=3306 with user Reinhard
2017.01.12 17:46:45 3: Connection to db mysql:database=fhem;host=localhost;port=3306 established for pid 1323
2017.01.12 17:46:45 3: Connection to db mysql:database=fhem;host=localhost;port=3306 established
2017.01.12 17:46:45 3: Connection to db mysql:database=fhem;host=localhost;port=3306 established
2017.01.12 17:46:45 3: DBLogging_Reopen: Reopen executed.


Die Datenbank wird aber auch bei mir korrekt gefüllt.
Verwende derzeit "93_DbLog.pm 13039 2017-01-10 22:19:58Z"

Der andere Fehler "begin_work failed" tritt nicht mehr auf.

Gruß Reinhard
Fhem 6.3 auf Raspberry Pi4 SSD mit Raspbian Bookworm, Homematic, Homematic IP, CCU3 mit RapberryMatic, WAGO 750-880, E3DC S10E Hauskraftwerk, E3DC Wallbox, my-PV AC ELWA-E Heizstab, Fritz!Box 7590, KIA Bluelinky

DS_Starter

Hallo zusammen, hallo Reinhard,

ich bin der Meldung

mysql::st execute_array failed: MySQL server has gone away [err was 2006 now 2000000000]

auf der Spur.

Werde in Kürze eine Testversion bereitstellen, die dieses Problem beheben soll. Braucht nicht mehr gepostet werden.

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

Tedious

Zitat von: JoeALLb am 12 Januar 2017, 14:06:59

Wie es scheint hast Du Module, die solch breite Value-Einträge erzeugen....

Das Beste ist wohl, Du verbreiterst diese Spalte ebenfalls.

Joe

Das ist ja das spannende - habe ich nicht ;) Wenn ich mir die Eventlogs anschaue passiert das scheinbar immer wenn ein LacCrosse oder ein Revolt schreibt, die "langen" aus dem Sysmon laufen sauber durch.

Ich hatte heute Mittag ein Update gemacht, seit dem ist scheinbar Ruh' im grünen Kakadu. Aber ich bin da noch verhalten optimistisch, das hatte ich gestern auch schon mal..
FHEM auf Proxmox-VM (Intel NUC) mit 4xMapleCUN (433,3x868) und Jeelink, HUE, MiLight, Max!, SonOff, Zigbee, Alexa, uvm...

Loredo

Zitat von: Markus Bloch am 12 Januar 2017, 09:26:23
Ich persönlich würde diese Funktion dann erweitern um auch definitionsbezogene Funktionen aufzurufen. Momentan startet CallFn() nur Funktionen die in $modules{$hash->{TYPE}} definiert sind. Diese könnte man ja einfach erweitern um zuerst definitionsbezogene Funktionen unter $hash zu verwenden analog wie es Loredo vorgeschlagen hat. Falls nicht definiert, wird dann wie bisher die Funktion unter $modules verwendet.

Dadurch wäre es einheitlich für alle Module verfügbar und keine Insellösung.


Bin ich absolut für zu haben. Wer checkt die Zeile ein? ;)
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

DS_Starter

ZitatBin ich absolut für zu haben. Wer checkt die Zeile ein?

Mach ich gleich mit. Habe die nächste Version fast fertig. Noch ein paar Tests ....
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

Loredo

Ich glaube formell sollte das besser Rudi überlassen werden, aber ich kenne die neue Aufgabenteilung bei den Officials nicht...
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

DS_Starter

Das war ein Mißverständnis ... ich meinte natürlich jetzt im DbLog.
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

Hallo zusammen,

in der hier angehängten Version V2.9 sind folgende Änderungen enthalten:

* die Meldung "mysql::st execute_array failed: MySQL server has gone away [err was 2006 now 2000000000]" sollte eliminiert sein.

* neuer Befehl "set ... flushCache"
   im asynchronen Mode kann der Inhalt des Cache gelöscht werden. Joe, dein Wunsch 1 ist somit erledigt ;-)
   
* neuer Befehl "set ... syncCache"
   im asynchronen Mode wird der Cacheinhalt in die Datenbank weggeschrieben. Der interne Timer wird dabei neu gesetzt.
   Der Befehl kann nützlich sein um manuell bzw. von außen z.B. über ein AT den asynchronen Prozess neu zu initiieren
   falls nötig/gewünscht.

* die SplitFn habe ich so wie von Markus beschrieben implementiert

Bitte testet diese Version, insbesondere die User welche die "MySQL server has gone away"-Meldung erhalten.
FHEM Restart ist notwendig !

@Markus, Loredo ... schaut mal ob das so passt und mit dem kleinen Patch von Markus dann auch für Devices klappt.
Markus ... ich habe

if(defined($reading))
{
   return ($reading, $value, $unit);
}


geändert in

if($reading)
{
   return ($reading, $value, $unit);
}


Sonst wurden READING, VALUE, UNIT leer in die DB geschrieben wenn SplitFn im Eventsender nicht definiert ist.

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

Markus Bloch

Zitat von: Loredo am 12 Januar 2017, 21:35:08
Ich glaube formell sollte das besser Rudi überlassen werden, aber ich kenne die neue Aufgabenteilung bei den Officials nicht...

Die Zuständigkeiten bei der Entwicklung von FHEM ist unverändert. Änderungen in fhem.pl werden durch Rudi durchgeführt. Da es deine Anforderung ist, würde ich Dich bitten, einen entsprechenden Patch für CallFn() in FHEM Development einzureichen.  8) Wenn das OK für dich ist.

Viele Grüße

Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

JoeALLb

Zitat von: DS_Starter am 12 Januar 2017, 22:16:21
* neuer Befehl "set ... flushCache"
   im asynchronen Mode kann der Inhalt des Cache gelöscht werden. Joe, dein Wunsch 1 ist somit erledigt ;-)
Sehr schön, vielen vielen Dank!! Ich benötige das um Mitternacht um eine Berechnung über Stored Procedures durchzuführen.... und die macht nur Sinn wenn die Werte in der DB sind :D
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

Xcoder

Zitat von: DS_Starter am 12 Januar 2017, 22:16:21in der hier angehängten Version V2.9 sind folgende Änderungen enthalten:

* die Meldung "mysql::st execute_array failed: MySQL server has gone away [err was 2006 now 2000000000]" sollte eliminiert sein.

Sorry, hatte jetzt erst Zeit mich damit zu befassen. Die gone away Meldung erscheint mit V2.9 ach bei wildesten SVG Plot Orgien nicht mehr (synchron und asynchron).

Vielen Dank und Gruss,
Xcoder

DS_Starter

Guten Morgen,

Danke für die Rückmeldung xcoder ... Sehr schön !

@Joe ... Ich denke syncCache wäre die für dich richtige Funktion. FlushCache löscht lediglich den Cache 😉

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