FHEM Forum

FHEM => Automatisierung => Thema gestartet von: DS_Starter am 29 November 2022, 12:54:25

Titel: DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 29 November 2022, 12:54:25
Hallo zusammen,

in meinem contrib (siehe Fußtext) habe ich eine Testversion DbLog 5.0.0 zur Verfügung gestellt.

Für den asynchronen Betrieb habe ich nun anstelle des sich wiederholenden BlockingCall das SubProcess-Verfahren implementiert.
Das Verhalten ist wie bisher mit asyncMode = 1.

Wenn alles klappt wie ich es beabsichtige, werde ich auch das nicht-asynchrone Verfahren auf SubProcess umstellen und dadurch das Logging
generell non-blocking zur Verfügung stellen.

Das Ganze ist noch nicht fertig, läuft bei mir aber schon soweit reibungslos.

Ich würde mich freuen wenn sich ein paar Tester finden würden.
Denkt aber bitte daran, dass durchaus noch Fehler auftreten können und ihr solltet diesbezüglich eine gewisse Toleranz mitbringen.  ;)

LG,
Heiko
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: enno am 29 November 2022, 13:15:26
Moin Heiko,

2022.11.29 13:13:52.252 2: DbLog MYSQL - Subprocess "1643166" initialized ... ready for non-blocking operation

ich beobachte. Start schon mal ohne Auffälligkeiten.

Gruss
  Enno
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 29 November 2022, 13:19:39
Wow , du bist ja fix  :)
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: enno am 29 November 2022, 16:20:20
Moin Heiko,

solche Test würde ich nicht bei allen Modulen hier wagen. Da gibt es einige reguläre Module, die ich vom Update ausgeschlossen habe und erst mal ein paar Tage im Forum beobachte bevor ich die aktuellen Versionen einspiele, weil sie immer wieder mit kleinen Tippfehlern oder nicht angekündigten Änderungen aufschlagen.

Deine Testversion läuft bei mir ohne irgendwelche Probleme. Ich kann als User keine Unterschiede zu der normalen Version erkennen. So hatte ich es erwartet ;) Bin gespannt wie es weiter geht.

Gruss
  Enno
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: helmut am 29 November 2022, 17:07:13
Hallo Heiko,

auch bei mir sieht es bis jetzt gut aus und ich werde weiter beobachten.

list DbLog
[...]
   FVERSION   93_DbLog.pm:v1.1.1-s26750/2022-11-26


Gruss Helmut
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 29 November 2022, 17:21:19
Danke auch dir Helmut.
Die Version wird richtig nach einem FHEM Restart angezeigt:


FVERSION  93_DbLog.pm:v5.0.0-s26750/2022-11-26


Ein reload reicht da nicht.
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: helmut am 29 November 2022, 17:50:37
Hallo Heiko,

Du hast recht. Aber jetzt:

   FVERSION   93_DbLog.pm:v5.0.0-s26750/2022-11-26

Gruss Helmut
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: Jamo am 29 November 2022, 22:45:26
Habs auch am laufen, bisher unauffällig. Aus dem Log:
DbLog myDbLog - Subprocess "31088" initialized ... ready for non-blocking operation

Die Attribute, und die FVERSION
attr myDbLog DbLogType Current/History
attr myDbLog asyncMode 1
attr myDbLog bulkInsert 1
attr myDbLog syncInterval 120
...
#   FVERSION   93_DbLog.pm:v5.0.0-s26750/2022-11-26
#   MODE       asynchronous
#   MODEL      SQLITE
#   NAME       myDbLog
...
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: erwin am 30 November 2022, 08:35:00
läuft!
2022.11.30 08:09:13.590 2: DbLog myDbLog - Subprocess "22837" initialized ... ready for non-blocking operation
2022.11.30 08:09:13.889 3: DbLog myDbLog - Creating Push-Handle to database mysql:database=fhem;host=192.168.5.245;port=3306 with user fhemuser
2022.11.30 08:09:13.913 3: DbLog myDbLog - Push-Handle to db mysql:database=fhem;host=192.168.5.245;port=3306 created
2022.11.30 08:09:13.914 3: DbLog myDbLog - UTF8 support enabled
2022.11.30 08:09:13.946 2: DbLog CL_DbLog - Subprocess "22839" initialized ... ready for non-blocking operation
2022.11.30 08:09:13.974 3: DbLog CL_DbLog - Creating Push-Handle to database mysql:database=fhem;host=192.168.5.13;port=3306 with user fhemuser
2022.11.30 08:09:13.983 3: DbLog CL_DbLog - Push-Handle to db mysql:database=fhem;host=192.168.5.13;port=3306 created
2022.11.30 08:09:13.984 3: DbLog CL_DbLog - UTF8 support enabled


   FVERSION   93_DbLog.pm:v5.0.0-s26750/2022-11-26
   MODE       asynchronous
   MODEL      MYSQL
....
Attributes:
   DbLogSelectionMode Include
   DbLogType  History
   asyncMode  1
   bulkInsert 1
   cacheEvents 2
   colEvent   0
   excludeDevs myDbLog
   room       Global
   showproctime 1
   syncInterval 120
   timeout    86400

Was mir allerdings auffällt, ist das die geforkten Prozesse beinahe soviel CPU % brauchen - wie der main prozess.
...Ich habe 2 DbLog-defs auf diesem Test-system! - ist allerdings ein RPI-2!
22837 fhem      20   0  117552  84908   7404 S   9.2  9.0   2:10.21 perl
22839 fhem      20   0  117536  81480   3940 S   9.2  8.6   2:09.57 perl
22726 fhem      20   0  121136  93420  12312 S   8.9  9.9   4:44.90 perl

Danke für die Weiterentwicklung dieses wesentlichen Moduls!
l.g. erwin
Danke
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 30 November 2022, 08:52:57
Moin erwin,

danke für die Info.


  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
  713 fhem      20   0  430360 357900  22584 S   7,3  17,5   1:07.97 perl
  702 fhem      20   0  793016  83532  34832 S   2,3   4,1   0:04.31 homebridge
1697 fhem      20   0  401684 309404   1328 S   2,3  15,2   0:02.32 perl
1688 fhem      20   0  401368 309068   1328 S   2,0  15,1   0:02.56 perl
1693 fhem      20   0  401652 309288   1328 R   2,0  15,1   0:02.32 perl
1695 fhem      20   0  401652 309340   1328 S   1,7  15,2   0:02.35 perl
1698 fhem      20   0  401836 309484   1328 R   1,7  15,2   0:02.32 perl
1689 fhem      20   0  403044 313692   4332 S   1,3  15,4   0:02.39 perl
1690 fhem      20   0  401520 309136   1328 S   1,3  15,1   0:02.20 perl
1696 fhem      20   0  401652 309340   1328 S   1,3  15,2   0:02.31 perl


Habe gleich mal bei mir geschaut. Auf meinem Testsystem laufen 8 DbLog Instanzen.
Sie brauchen deutlich weniger CPU als der Hauptprozess. Ist allerdings ein Intel NUC mit VMWare + VM's.
Aber ich beobachte das mal.

LG
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: Sany am 30 November 2022, 09:47:18
Guten Morgen,

habe gerade die Version 5 auf einem meiner (Test)systeme eingebaut, das lief problemlos.
ZitatFVERSION   93_DbLog.pm:v5.0.0-s26750/2022-11-26
   MODE       asynchronous
   ...
   DbLogType  History
   asyncMode  1
   bulkInsert 1
   colEvent   0
...
es gibt hier aber nicht viele Devices, die Daten in die DB schreiben. Ich werde vermutlich keinen Unterschied in der Performance "spüren"

ein htop zeigt mir 4 zusätzliche instanzen von fhem, nur die Hautinstanz braucht ein paar %, die andern mehr oder weniger bei 0% (Raspi4).

Falls Du irgendwas getestet haben möchtest: einfach schreiben....

Gruß

Sany
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 30 November 2022, 10:49:35
Rein von der Bedienung und der "User Experiance" her sollte sich kein Unterschied zur offiziellen Version ergeben.

Das forken durch BlockingCall fällt weg und dadurch sollte ich ein stabiler RAM-Verbauch abzeichnen. Es gibt natürlich noch mehr Module die BlockingCall verwenden (zB. DbRep).
Das muss man bisschen berücksichtigen bei den Beobachtungen.

Ansonsten soll die Version ganz normal werkeln.

Ich habe gerade ein Update des Moduls ins contrib geladen.
Beim Shutdown werden die SubProzesse in der entsprechenden Funktion beendet und das auch mit verbose 2 im Logfile protokolliert.

Ich arbeite weiter an der Code-Überarbeitung, achte aber sehr darauf dass sich keine Inkompatibilitäten einschleichen.
Aber dafür testen wir ja zusammen ...  8)
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: erwin am 30 November 2022, 12:12:29
Ok, die neue version hab ich noch nicht,
aber einen Kommentar:
ein set ... reopen sollte den child prozess ebenfalls terminieren und neu starten, damit könnte man sich eine "dynamische" Übergabe von Parametern (cachelimit, syncinterval,...) evtl. ersparen.
l.g. erwin
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 30 November 2022, 12:30:43
Zitatein set ... reopen sollte den child prozess ebenfalls terminieren und neu starten ...
Guter Hinweis, sehe ich mit vor.
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: enno am 30 November 2022, 14:40:59
ich bin noch dabei.  :) 93_DbLog.pm:v5.0.0-s26750/2022-11-29 ich habe FHEM gestoppt und als keiner zugeschaut hat direkt in der fhem.cfg die Definition von DbLog hinter Global gespeichert. War bei mir vorher ca. im letzten Drittel. Top sagt aber zu Speicherverbrauch fast das Gleiche wie gestern:
559 fhem      20   0  338128 269904  18992 R  14,3   6,9   1:46.89 perl                                       
575 fhem      20   0  306820 228564   7340 R   8,3   5,9   0:37.08 perl


Ich bin auf einem NUC mit Proxmox CT und aktuellen Debian (Bullseye) unterwegs.

Gruss
  Enno
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 30 November 2022, 14:45:18
Du hast bestimmt hier (https://forum.fhem.de/index.php/topic,107150.msg1248574.html#msg1248574) gespickelt  :)
Ich muß noch den Start des Subprocesses in die DefFn vorziehen. Dann wäre das erfüllt was Rudi in dem Thread ausgeführt hatte. Das mache ich heute noch.
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 30 November 2022, 15:56:10
Gerade eben habe ich das Modul im contrib upgedated.

Der SubProzess wird nun gleich beim Define inititialisiert.
Bei "set ... reopen" erfolgt ebenfalls ein Schließen und Neustart des SubProzesses. Dadurch ist dann aber der Vorteil des zeitigen
Start im Define zunichte gemacht, aber das ist dann nicht zu ändern.
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: enno am 30 November 2022, 17:40:29
das sieht doch schon gut aus :)

93_DbLog.pm:v5.0.0-s26750/2022-11-30

7717 fhem      20   0  336156 267256  18572 S  14,6   6,8   1:16.70 perl     
7718 fhem      20   0   69940  60116   6900 S   8,6   1,5   0:14.04 perl
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: Beta-User am 30 November 2022, 19:32:18
Auch hier bisher keine Auffälligkeiten (Laufzeit aber auch erst knapp über eine Stunde).
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: Frank_Huber am 01 Dezember 2022, 08:55:44
So, hab die Version jetzt auch mal auf Zwei Instanzen laufen. bis jetzt keine Auffälligkeiten.
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: erwin am 01 Dezember 2022, 11:24:55
So, ich hab jetzt mal eine DbLog def in der cfg nach "vorne" geschoben, bringt definitiv was für mem use!
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
30337 fhem      20   0   44144  31368   1620 S   8.9  3.3   0:20.71 perl # dblog NR= 20
30343 fhem      20   0   83064  54696   1584 S   8.9  5.8   0:19.74 perl # dblog NR= 92
30330 fhem      20   0  118080  90284  12268 S   1.7  9.5   3:08.15 perl # main

Ein Versuch, $hash->{NR} automatisiert auf einen freien wert < 20 zu setzen, ist allerdings schiefgegangen....
l.g. erwin
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: Beta-User am 01 Dezember 2022, 11:51:04
Zitat von: erwin am 01 Dezember 2022, 11:24:55
Ein Versuch, $hash->{NR} automatisiert auf einen freien wert < 20 zu setzen, ist allerdings schiefgegangen....
l.g. erwin
Da $devcount bei jedem define erhöht wird, funktioniert das "ganzzahltig" vermutlich nie. Ein workaround könnte sein, das für alle DbLog-Instanzen auf 1.{random} zu setzen, wenn deren automatisch vergebene NR größer ist wie (sagen wir) 10 - count TYPE=DbLog. Ist aber ziemlich "dreckig"...

EDIT: Zu "dreckig". Beim Speichern wird eine ganzzahlige ID erwartet...
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 01 Dezember 2022, 12:40:10
Unter dem Gesichtspunkt des Speicher sparens ist meine jetzige Implementierung dass ein "reopen" den Subprozess beendet und dann neu startet sehr kontraproduktiv.
Dann macht man sich den Vorteil, den man sich über die Reihenfolge beim Start verschafft hat, wieder kaputt.

Ich werde es anders machen und nur die DB-Verbindung innerhalb des SP abbauen bzw. wieder aufbauen (passiert aktuell ohnehin im asynchronen Betrieb). Aber da bin ich noch dran.
Sollte der SP mal sterben wird er automatisch neu erstellt, was dann aber zwangsläufig ohne den "Speichervorteil" passiert.
Ist aber wegen der Betriebssicherheit nötig.

Wegen der Sortierung  $hash->{NR} könnten wir uns ja eine sichere! programmtechnische Routine erdenken. Mal schauen.

Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: Beta-User am 01 Dezember 2022, 12:46:01
Zitat von: DS_Starter am 01 Dezember 2022, 12:40:10
Wegen der Sortierung  $hash->{NR} könnten wir uns ja eine sichere! programmtechnische Routine erdenken. Mal schauen.
Na ja. Das ist ein Internal. Man bräuchte ja "nur" eine Schleife von aktueller Position bis 2 rückwärts durchfahren und alle um eins erhöhen. Am Ende dann die DbLog-Instanz neu unter 2 einsortieren, done... Vielleicht noch bedingt dadurch, dass die aktuelle Position nicht sowieso schon klein ist (was auch immer das heißen mag). Sonst kommt es ggf. zu einer Dauer-Umsortierung, v.a., wenn das dann jemand nachmacht ;) .
Wirkt dann halt erst nach dem nächsten "save" (+restart).

EDIT: Es wäre besser, man könnte eine Art "high prio"-Flag setzen, anhand dem dann fhem.pl diese Devices dann automatisch beim save nach vorne sortiert, also erstes Sortierkriterium die mit flag (NR nur Hilfskriterium), danach der Rest wie sich das aus der NR ergibt. Würde halt Änderungen dieser einen Schleife beim wegspeichern bedingen, aber das wäre es dann schon gewesen und man wäre m.E. die Konflikte los...
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: erwin am 01 Dezember 2022, 16:36:25
ZitatWegen der Sortierung  $hash->{NR} könnten wir uns ja eine sichere! programmtechnische Routine erdenken. Mal schauen.
Naja, das habe ich versucht:
- eine NR herausfinden, die 1) nicht belegt ist UND 2) < 20 ist.
- diese NR dann $hash->{NR} = .. setzten.

Das hat grundsätzlich funktioniert, INTERNAL NR war dann "richtig" gesetzt.
Allerdings: Nach einem save-shutdown-restart war das DbLog device dann nicht defined!!!

Interessant ist auch, dass ein nach vorne schieben in der cfg ein NR von 20 ergibt, obwohl zw. 1 und 19 noch etliche NICHT belegt sind...
Meine used NR's =< 20:

used NR: 5 WEB
used NR: 7 WEBphone
used NR: 9 WEBtablet
used NR: 14 autocreate
used NR: 16 eventTypes
used NR: 1 global
used NR: 19 initialUsbCheck
used NR: 20 myDbLog
used NR: 3 telnetPort
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: Beta-User am 01 Dezember 2022, 16:49:00
Witzig.

Auf dem Testsystem liefert
list NR~.|1. NR
in der Tat Lücken.

Lasse ich das auf mein Hauptstem los, sind lückenlos alle Nummern belegt. Unterschied: Das läuft auf configDB.

Unter den nicht genutzten Nummern scheint sich fhem.pl die Leerzeilen (und Kommentare etc.) zu merken.
(EDIT: ja, "$h = $comments{$i};" nach einer entsprechenden Abfrage.)
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: rudolfkoenig am 01 Dezember 2022, 17:42:13
Die Luecken koennen auch wegen temporaeren at, FHEMWEB/MQTT Verbindungen, usw. entstehen.
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 02 Dezember 2022, 20:16:41
Guten Abend zusammen,

soeben habe ich ein Update des Moduls in mein contrib geladen.

Die gesamte Steuerung bezüglich des SubProzess ist überarbeitet/ausgebaut. Das betrifft vor allem das Connect-Management zur DB, Management bei User/Passwort Änderungen bzw. Änderungen von Attributen die sich auf Connect-Paramter beziehen.

Weiterhin werden Änderungen durch das Online-Einlesen der Konfigdatei mit rereadcfg bzw. das Connect Management mit reopen im SubProzess gesteuert.
Der SubProzess selbst wird nicht mehr beendet (außer wenn der Prozess durch einen Fehler stirbt) um den Speichervorteil beim Start nicht zu verlieren.

Man kann aber mit dem neuen Setter "stopSubProcess" den SubProzess manuell beenden wenn man es braucht.

Das Attr "traceHandles" habe ich entfernt. Es war nur für mich für den Support vorhanden und nicht für den User bestimmt.
In der neuen Architektur hat es nun keinen Mehrwert mehr.

Die Ausgaben in state geben nun auch mehr Information an den User über den aktuellen Zustand des Devices in Verbindung mit SubProcess.

Es sind recht umfangreiche Weiterentwicklungen in der Logik und dem Code. Ich habe alles soweit getestet. Dennoch kann es natürlich das eine oder andere Problemchen geben.
Also mutig updaten und vor allem danach restarten.  :)

LG
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: enno am 02 Dezember 2022, 20:30:14
93_DbLog.pm:v5.0.0-s26750/2022-12-02 keine Fehler im Log und alles Andere wie immer ohne erkennbare Unterschiede ausser, das der Subprocess kleiner ist als bei der Version von gestern.
121358 fhem      20   0  343028 272084  18512 S  10,6   7,0   2:15.57 perl     
121359 fhem      20   0   70136  48032   6952 R   9,0   1,2   0:59.35 perl   
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 02 Dezember 2022, 20:39:23
Das ist schonmal sehr gut.  :)

Du kannst auch gerne mal verbose erhöhen und dir bei restart / reopen diverse Meldungen im Log anschauen die sich auf den
SubProzess beziehen.

Zitat
... ausser, das der Subprocess kleiner ist als bei der Version von gestern....
Die Umnumerierung die wir oben andiskutiert haben, ist noch nicht berücksichtigt.
Aber der SubProcess wird gleich beim Define gestartet. Wenn du DbLog "manuell" in der fhem.cfg weit vorn einsortiert hast, spielt sich die RAM-Ersparnis wie beabsichtigt aus.
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: erwin am 03 Dezember 2022, 10:04:25
... läuft unauffällig,

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
15083 fhem      20   0   53348  35096   5128 S   8.9  3.7   7:46.51 perl # "vorgeschummelte" instanz
15088 fhem      20   0   92544  58624   5216 S   8.9  6.2   7:44.97 perl # instanz NR=92
15082 fhem      20   0  121136  93440  12268 S   3.3  9.9   7:58.75 perl # main

ich denke, damit sind die Möglichkeiten einer "abwärtskompatiblen" Lösung ausgereizt.... ;D
in apptime sehe ich noch relativ lange Zeiten (im main thread) für:  tmr-DbLog_execmemcache, ich denke speziell das eval (in DbLog_Log) schlägt hier zu....
das zu transformieren ohne die Kompatibilität zu verlieren kann ich mir nicht wirklich vorstellen!
Danke nochmals für deine Energie!
l.g. erwin   
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 03 Dezember 2022, 11:04:54
Moin erwin,

Zitat
Danke nochmals für deine Energie!
Gerne  :)

Wenn tmr-DbLog_execmemcache rel. hohe Zeiten in apptime anzeigt liegt es meiner Meinung nach vermutlich an einer entsprechend hohen Anzahl von zu verarbeitenden Datensätzen im Memory Cache. In der Funktion, die unabhängig von der (Notify) Log-Funktion arbeitet, werden die gecachten Daten seriell verpackt und  an den Child Prozess gesendet.

Die Zeit, die in der Notify-Funktion (DbLog_Log) für einen Zyklus verbraucht wird,  kann man sich mit dem Attr showNotifyTime = 1 reporten lassen -> Reading notify_processing_time.

Inzwischen bin ich soweit auch den synchronen Log-Vorgang non-blocking über den SubProcess abwickeln zu können.
Ich teste diese Weiterentwicklung noch. Wenn ich soweit bin stelle ich euch die Version wieder im contrib zur Verfügung und beschreibe in der Hilfe auch genauer die jeweiligen Vorteile/Nachteile der jweilige asyncMode-Einstellungen.
Vermutlich sollte ich das Attr  asyncMode nun besser in operationMode umbenennen. Das kann ich ja für den User unschädlich im Code vornehmen.


Zum Thema {NR} Sortierung ...
Möglicherweise hat Rudi Lust und auch eine Idee die Nutzung von SubProcess global in der fhem.pl mit einer entsprechenden Sortierung zu unterstützen.  ;)
Beta-User hatte weiter vorn eine Art "high prio"-Flag ins Spiel gebracht.
Die Idee gefällt mir gut, weil es ja auch weitere Module gibt die SubProcess nutzen und im Prinzip vor der gleichen Problematik stehen sofern sie den SP nicht ständig starten und beenden.
Dadurch geht zwar ein bisschen die "Exklusivität" für DbLog verloren, aber das wäre vermutlich die sauberste weil zentrale Lösung für diese Sache.

LG,
Heiko


Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: rudolfkoenig am 03 Dezember 2022, 13:05:07
ZitatMöglicherweise hat Rudi Lust und auch eine Idee die Nutzung von SubProcess global in der fhem.pl mit einer entsprechenden Sortierung zu unterstützen.  ;)
Ich habe schon zwei Versuche hinter mir, beide waren problematisch.
Haken an dem high Prio Flag ist, dass configDB auch angepasst werden muss.
Haken an der Umnummerierung ist, dass NR von einigen Modulen verwendet wird, d.h. das ist nur mit anschliessenden save+restart machbar.
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 03 Dezember 2022, 13:40:58
Danke Rudi schonmal für das Aufgreifen eines solchen Ansatzes !  8)

Ich weiß nicht wie groß eine etwaige Anpassung in configDB wäre und wie betateilchen dazu steht.
Aber ich könnte mir vorstellen dass ein genereller Support für SubProcess unter den behandelten Gesichtspunkten
sinnvoll ist.
Es geht ja nicht nur um den jetzigen Einsatzfall.
Es gibt ja weitere Module, die SubProcess einsetzen und vllt. werden es ja noch mehr.



Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: erwin am 03 Dezember 2022, 18:31:51
Idee zum Thema HiPrio-Flag...

Nachdem ja "Lücken" in den NR's grundsätzlich erlaubt sind..., folgende idee:
Während CommandDefine einen niederen Bereich NR's für "spezielle" - explizit definerte Module freilassen - und alle übrigen Module z.B. ab 30 numerieren.
Das würde für bestehende defs beim nächsten start schlagend werden, für neue defs zur runtime!
Es braucht dann kein neues Flag, und alle bisherigen Module bleiben unberührt....
l.g. erwin
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: Beta-User am 03 Dezember 2022, 18:47:53
Na ja, wahrscheinlich bräuchte man gar nicht so viele Nummern, wenn man das beschränkt auf die Zeit nach $init_done (für bestehende Installationen dann: defmod, und die Instanz wandert nach vorne?).
Den Prio-Flag könnte man  direkt in "Initialize" setzen => nicht für den User sichtbar, aber zur define-Time schon bekannt?.

Beim Speichern/Neustart wird dann die nach vorne geholte Instanz "NR 31", und es wäre wieder Platz "vorne".
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 03 Dezember 2022, 22:48:46
In meinem contrib liegt die V 5.1.0.
Nun ist das Logging im synchronen Mode ebenfalls non-blocking über den SubProcess realisiert.

Ich habe die Hilfe zum Attr asyncMode ausgebaut. Der User sollte damit nun genau einschätzen können welcher Modus für seinen Einsatzzweck der richtige ist. Hier ein Auszug. Wenn ihr noch Ergänzung haben solltet nehme ich sie gerne entgegen.

asyncMode

    attr <device> asyncMode [0|1]

    Dieses Attribut stellt den Verarbeitungsprozess ein nach dessen Verfahren das DbLog Device die Daten in die Datenbank schreibt.
    DbLog verwendet zum Schreiben der Log-Daten in die Datenbank einen SubProzess.
    Dadurch erfolgt der Schreibprozess in die Datenbank generell nicht blockierend und FHEM wird im dem Fall,
    dass die Datenbank nicht performant arbeitet oder nicht verfügbar ist (Wartung, Fehlerzustand), nicht beeinträchtigt.
    (default: 0)

        0 -    Synchroner Log-Modus. Die zu loggenden Daten werden sofort nach dem Empfang in die Datenbank geschrieben.
           Vorteile:
           Die Daten stehen im Prinzip sofort in der Datenbank zur Verfügung.
           Bei einem Absturz von FHEM gehen sehr wenige bis keine Daten verloren.
           Nachteile:
           Die Daten werden nicht zwischengespeichert und gehen verloren wenn die Datenbank nicht verfügbar ist
           oder fehlerhaft arbeitet. Eine alternative Speicherung im Filesystem wird nicht unterstützt.
           
           
        1 -    Asynchroner Log-Modus. Die zu loggenden Daten werden zunächst in einem Memory Cache zwischengespeichert
           und abhängig von einem Zeitintervall bzw. Füllgrad des Caches in die Datenbank geschrieben.
           Vorteile:
           Die Daten werden zwischengespeichert und gehen nicht verloren wenn die Datenbank nicht verfügbar ist
           oder fehlerhaft arbeitet. Die alternative Speicherung im Filesystem wird unterstützt.
           Nachteile:
           Die Daten stehen zeitlich verzögert in der Datenbank zur Verfügung.
           Bei einem Absturz von FHEM gehen alle im Memory zwischengespeicherten Daten verloren.


LG
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: rudolfkoenig am 04 Dezember 2022, 11:12:01
ZitatWährend CommandDefine einen niederen Bereich NR's für "spezielle" - explizit definerte Module freilassen - und alle übrigen Module z.B. ab 30 numerieren.

Das habe ich jetzt implementiert und eingecheckt.
D.h. global kriegt weiterhin NR=1, alle anderen ab 30, es sei denn, InitilizeFn setzt im Modul-Hash prioSave=1.
Diese Definitionen kriegen die Nummer 2 bis 29.
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 04 Dezember 2022, 13:37:43
Danke Rudi.

Bin grad unterwegs. Wenn ich wieder zu Hause bin, werde ich das Feature ins Modul einbauen und testen.
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: erwin am 04 Dezember 2022, 13:40:57
@Rudi:
Danke, das funktioniert bestens!
@Heiko:
das reading CacheUsage benimmt sich komisch:- eventmonitor:

2022-12-04 13:26:16.132 DbLog myDbLog CacheUsage: 60
2022-12-04 13:26:16.132 DbLog myDbLog CacheUsage: 0
2022-12-04 13:26:16.162 DbLog myDbLog CacheOverflowLastNum: 0
2022-12-04 13:26:16.162 DbLog myDbLog CacheUsage: 0
2022-12-04 13:26:16.302 DbLog myDbLog background_processing_time: 0.1021
2022-12-04 13:26:16.302 DbLog myDbLog sql_processing_time: 0.0814
2022-12-04 13:26:16.302 DbLog myDbLog CacheUsage: 0

Damit sieht das für den User so aus, als ob nichts geloggt wird...

.. ich hab Rudi's Implementation probehalber im DbLog_Init eingebaut... nach einem save - shutdown - restart sind bede DbLog Instanzen ganz vorne!

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
6719 fhem      20   0   46912  29052   5152 S   9.2  3.1   1:54.50 perl
6720 fhem      20   0   46912  29004   5152 S   9.2  3.1   1:54.07 perl
6718 fhem      20   0  118844  91328  12484 S   6.9  9.6   4:14.75 perl
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 05 Dezember 2022, 10:48:21
Hallo zusammen,

habe das Prio Flag jetzt in DbLog eingebaut und getestet ... funktioniert auch bei mir bestens.

Neben dieser Änderung sind noch einige mehr Code-Änderungen eingeflossen  und ich habe auch begonnen Teile der CommandRef
auf die neue Architektur anzupassen.

Ich habe auch begonnen die SetFn umzubauen und muss nun noch schauen wie kompatibel die übrigen Kommandos (importCachefile,
reduceLog, etc.) sind bzw. sie kompatibel machen.

Neue Version liegt im contrib.

LG
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: erwin am 05 Dezember 2022, 11:06:50
Hallo Heiko,

ein kleines Problem ist aufgetaucht:
PERL WARNING: Use of uninitialized value $memcount in numeric ge (>=) at ./FHEM/93_DbLog.pm line 1632.
kommt ständig, offensichtlich dann, wenn es nichts zu loggen gibt. (war auch in der gestrigen version so, hab das gestern schon gepatcht gleichzeitig mit prioflag - und dann vergessen zu erwähnen...)
fix: im attachment.
Das prio-Flag funkt bestens, das hab ich gestern schon geschrieben.
Das Problem mit cacheUsage ist noch da!
ich verwende attr cacheEvents 2
l.g.erwin
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 05 Dezember 2022, 11:17:47
Moin erwin,

$memcount hatte ich auch gesehen und die Warnung kommt bei mir aktuell nicht mehr.

Bzgl. cacheUsage  schaue ich nochmal.

Weil ich inzwischen noch etwas weitergemacht hatte ... kannst du bitte nochmal aus dem contrib laden ?
Sonst komme ich mit den Zeilennummern im Patch nicht mehr klar...
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: Frank_Huber am 05 Dezember 2022, 11:21:05
kurze Rückmeldung. 5.2 läuft jetzt auch bei mir auf Zwei Instanzen. Nach dem ersten Reboot alles weiterhin Problemlos.
Hab das define noch dazu ganz nach vorne geholt in der cfg.

Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: SusisStrolch am 05 Dezember 2022, 11:57:33
Welches sind denn die Rahmenbedingungen für die 5.x Version?
Umgebung:
  FHEM Update am 5.12.2022 durchgeführt
  fhem.pl:26635/2022-11-01

Mein logdb Device:
Internals:
   COLUMNS    field length used for Device: 64, Type: 64, Event: 512, Reading: 64, Value: 128, Unit: 32
   CONFIGURATION ./contrib/dblog/MariaDB10.conf
   DEF        ./contrib/dblog/MariaDB10.conf .*:.*
   FUUID      5e0e63f1-f33f-6054-f97a-82f8e05ae3c5c61b
   FVERSION   93_DbLog.pm:v4.13.3-s26750/2022-11-26
   MODE       asynchronous
   MODEL      MYSQL
   NAME       logdb
   NR         6
   NTFY_ORDER 50-logdb
   PID        18098
   REGEXP     .*:.*
   STATE      connected
   TYPE       DbLog
   UTF8       1
   dbconn     mysql:database=fhem;host=192.168.254.20;port=3307
   dbuser     fhem
   eventCount 26
   HELPER:
     COLSET     1
     DEVICECOL  64
     EVENTCOL   512
     OLDSTATE   connected
     PACKAGE    main
     READINGCOL 64
     TC         current
     TH         history
     TYPECOL    64
     UNITCOL    32
     VALUECOL   128
     VERSION    4.13.3
   READINGS:
     2022-12-05 11:55:16   CacheOverflowLastNum 0
     2022-12-03 15:42:58   CacheOverflowLastState normal
     2022-12-05 11:55:23   CacheUsage      7
     2022-12-05 11:55:16   NextSync        2022-12-05 11:55:46 or if CacheUsage 500 reached
     2022-12-05 11:55:17   background_processing_time 0.5536
     2022-12-04 15:59:56   lastCachefile   ./log/cache_logdb_2022-12-02_07-20-22 import successful
     2022-12-05 11:55:23   notify_processing_time 0.0022
     2022-12-05 11:55:17   sql_processing_time 0.4971
     2022-12-05 11:55:17   state           connected
Attributes:
   DbLogExclude .*
   DbLogSelectionMode Exclude/Include
   DbLogType  Current/History
   asyncMode  1
   bulkInsert 0
   cacheEvents 2
   cacheOverflowThreshold 750
   colEvent   512
   colReading 64
   colValue   128
   disable    0
   event-on-change-reading CacheUsage,background_processing_time
   icon       security
   room       DbLog
   showNotifyTime 1
   showproctime 1
   timeout    86400
   verbose    3



Im FHEM-Log finde ich dann folgende Fehlermeldungen:
2022.12.05 11:32:50.070 1: PERL WARNING: Use of uninitialized value $memcount in numeric ge (>=) at ./FHEM/93_DbLog.pm line 1653.
2022.12.05 11:32:50.070 1: stacktrace:
2022.12.05 11:32:50.071 1:     main::__ANON__                      called by ./FHEM/93_DbLog.pm (1653)
2022.12.05 11:32:50.071 1:     main::DbLog_Log                     called by fhem.pl (3972)
2022.12.05 11:32:50.071 1:     main::CallFn                        called by fhem.pl (3884)
2022.12.05 11:32:50.071 1:     main::DoTrigger                     called by fhem.pl (4269)
2022.12.05 11:32:50.072 1:     main::Dispatch                      called by ./FHEM/00_MQTT2_SERVER.pm (580)
2022.12.05 11:32:50.072 1:     main::MQTT2_SERVER_doPublish        called by ./FHEM/00_MQTT2_SERVER.pm (460)
2022.12.05 11:32:50.072 1:     main::MQTT2_SERVER_Read             called by fhem.pl (3972)
2022.12.05 11:32:50.072 1:     main::CallFn                        called by fhem.pl (782)


Any ideas?
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 05 Dezember 2022, 12:02:26
Zitat
Any ideas?
Ja, ist nur eine Warnung und ist schon im Fokus ... siehe Beitrag drüber ...

Ansonsten keine besonderen Voraussetzungen, Version ist funktionskompatibel zur offiziellen Version.
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 05 Dezember 2022, 12:12:27
Die $memcount  Warnung sollte nun beseitigt sein.
Update im contrib.
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: erwin am 05 Dezember 2022, 12:14:34
re: patch/Zeilennummern...
der patch besteht aus einer Zeile, in DbLog_Log:
  if(AttrVal ($name, 'verbose', 3) == 4) {
      if($log4rel) {
          Log3 ($name, 4, "DbLog $name - ################################################################");
          Log3 ($name, 4, "DbLog $name - ###              start of new Logcycle                       ###");
          Log3 ($name, 4, "DbLog $name - ################################################################");
          Log3 ($name, 4, "DbLog $name - number of events received: $max of device: $dev_name");
      }
  }

  my ($event,$reading,$value,$unit,$memcount);
  $memcount = 0;  #<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  my $err;
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: erwin am 05 Dezember 2022, 13:21:58
Vorschlag zu cacheUsage:
dass passt m.M. auch besser zum wording in der cmd-ref.
gestestet allerdings nur mit cacheEvents 2!
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: SusisStrolch am 05 Dezember 2022, 13:45:19
Zitat von: erwin am 05 Dezember 2022, 12:14:34
re: patch/Zeilennummern...
der patch besteht aus einer Zeile, in DbLog_Log:

Danke. Dann kann ich mal mein UTF-8 Problemchen testen...
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 05 Dezember 2022, 13:56:03
Danke erwin,

fast getroffen denke ich  ;)
Habe es etwas verändert übernommen.
Gerne wieder aus contrib laden und gegenchecken.
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: erwin am 05 Dezember 2022, 14:55:00
Hallo Heiko,

Ja, das passt!
...auch wenn das readingsupdate ohne EVENT mir nicht ganz verständlich ist...
Aber aus Kompatibilitätsgründen macht das Sinn.
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 05 Dezember 2022, 15:00:27
Zitat
...auch wenn das readingsupdate ohne EVENT mir nicht ganz verständlich ist...

Naja, lt. ComRef und wie es von mir auch gedacht war liegt der Schwerpunkt  auf der Erzeugung von entsprechenden Events dieses Readings. Ursprünglich war die Verwendung den Füllgrad des Caches durch den User loggen/überwachen zu können.
Upgedated werden sollte es unabhängig von der Eventerstellung.
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: enno am 05 Dezember 2022, 21:55:36
Folgende Warnung habe ich im Log: 2022.12.05 21:41:14.371 1: PERL WARNING: Use of uninitialized value $v2[0] in regexp compilation at ./FHEM/93_DbLog.pm line 1516.

93_DbLog.pm:v5.2.0-s26750/2022-12-05 Sonst alles unauffällig.
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 05 Dezember 2022, 22:09:50
Hallo enno,

ich denke das kommt von einem DbLogInclude Attr bei dem das Reading fehlt/nicht mitkommt.
Das ist eine Stelle die im offiziellen Modul auch so definiert ist.
Ich weiß nicht wie oft die Warnung bei dir kommt, man bekommt es mit einem verbose 5 raus.

verbose 5 schmeißt aber viele Daten. Wenn du keine Idee hast, mache ich für dich eine Version um herauszubekommen
was genau bei dir diese Warnung erzeugt.

Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: enno am 05 Dezember 2022, 22:16:00
Ich glaube das lohnt nicht. Ich habe die Meldung das erste Mal gesehen. Wenn das öfter passiert, drehe ich am Verbose. Ich bebachte weiter.

Edit: Ich habe in der SQL-Datenbank um genaue die Uhrzeit zwei Einträge meiner Heizung. Der Fehler kam von meiner Heizung "km200". Das Modul hatte ich heute morgen nach langen Zögern doch aktualisiert. Nun habe ich plötzlich einen ganzen Sack mehr Readings dort. Beim Hinzufügen zum Attr DbLogInclude hat sich das System wohl kurz "verschluckt".
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 05 Dezember 2022, 22:17:25
Möglicherweise hilft dir auch das globale stacktrace einzuschalten.
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: SusisStrolch am 06 Dezember 2022, 09:11:03
SQL-Error Handling
Habe extra mal 'nen fehlerhaften Event via "importCache" eingespielt (Fragment im Anhang) und bewusst auf DbLogValueFN verzichtet.
Sobald MariaDB einen Fehler meldet wird der zu Grunde liegende MemCache verworfen und nicht in ein Cache-File gesichert.
Unangenehm wenn man aus Performance-Gründen auf Einzeltransaktionen verzichten muß/will.
2022.12.05 15:34:37.310 4: DbLog logdb - 40 of 40 events inserted into table history
2022.12.05 15:34:37.998 2: DbLog logdb - Error table history - DBD::mysql::st execute_array failed: executing 33 generated 1 errors at ./FHEM/93_DbLog.pm line 2428.

2022.12.05 15:34:38.319 4: DbLog logdb - commit inserted data table history
2022.12.05 15:34:38.323 4: DbLog logdb - begin transaction
2022.12.05 15:34:38.881 4: DbLog logdb - insert history rolled back
2022.12.05 15:34:38.924 5: DbLog logdb - DbLog_Push Returncode: DBD::mysql::st execute_array failed: executing 33 generated 1 errors at ./FHEM/93_DbLog.pm line 2428.



Der Vollständigkeit halber hier das DbLog Device:
defmod logdb DbLog ./contrib/dblog/MariaDB10.conf .*:.*
attr logdb DbLogExclude .*
attr logdb DbLogSelectionMode Exclude/Include
attr logdb DbLogType Current/History
attr logdb asyncMode 1
attr logdb bulkInsert 0
attr logdb cacheEvents 2
attr logdb cacheOverflowThreshold 750
attr logdb colEvent 512
attr logdb colReading 64
attr logdb colValue 128
attr logdb disable 0
attr logdb event-on-change-reading CacheUsage,background_processing_time
attr logdb icon security
attr logdb room DbLog
attr logdb showNotifyTime 1
attr logdb showproctime 1
attr logdb timeout 86400
attr logdb verbose 5
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 06 Dezember 2022, 09:53:54
Moin,

im asynch Mode und mit Transaktion (default) wird der übergebene Datenstack wieder an den Cache zurück gegeben.
Das sollte klappen.

Ich habe gerade eben die nächste V ins contrib geladen. Mit verbose 5 sieht man die zurück gegebenen Daten im Log:

  Log3 ($name, 5, "DbLog $name - rowlback to Cache: $key -> ".$rowlback->{$key});

Weiterhin habe ich noch den CPU-Verbrauch der/des SubProcesses deutlich reduzieren können.
Probiers mal aus.
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: SusisStrolch am 06 Dezember 2022, 10:49:16
Hmm, hat nicht so geklappt wie ich das erwartet habe.
Vorgehensweise:
Cache-File (1000 Zeilen) mit dem UTF-8 Fehler importiert.
Commit wurde abgebrochen. Ich hätte jetzt erwartet das die Cachegröße > 1000 ist und die Daten weiterhin im Cache stehen. Dies ist jedoch nicht der Fall.
defmod logdb DbLog ./contrib/dblog/MariaDB10.conf .*:.*
attr logdb DbLogExclude .*
attr logdb DbLogSelectionMode Exclude/Include
attr logdb DbLogType Current/History
attr logdb asyncMode 1
attr logdb bulkInsert 0
attr logdb cacheEvents 2
attr logdb cacheOverflowThreshold 750
attr logdb colEvent 512
attr logdb colReading 64
attr logdb colValue 128
attr logdb disable 0
attr logdb event-on-change-reading CacheUsage,background_processing_time
attr logdb icon security
attr logdb room DbLog
attr logdb showNotifyTime 1
attr logdb showproctime 1
attr logdb timeout 86400
attr logdb verbose 5

setstate logdb connected
setstate logdb 2022-12-06 10:36:44 CacheOverflowLastNum 0
setstate logdb 2022-12-03 15:42:58 CacheOverflowLastState normal
setstate logdb 2022-12-06 10:36:44 CacheUsage 19
setstate logdb 2022-12-06 10:36:44 NextSync 2022-12-06 10:37:14 or when CacheUsage 500 is reached
setstate logdb 2022-12-06 10:36:45 background_processing_time 0.2823
setstate logdb 2022-12-06 10:28:14 lastCachefile ./log/cache_logdb_2022-12-02-n1000 - Error - Resource temporarily unavailable
setstate logdb 2022-12-06 10:36:53 notify_processing_time 0.0048
setstate logdb 2022-12-06 10:36:45 sql_processing_time 0.2688
setstate logdb 2022-12-06 10:36:45 state connected



Im Filesystem ist auch keine neue Datei aufgetaucht, obwohl cacheOverflowThreshold auf 750 gesetzt ist.
Ich habe den entsprechenden Logfile-Auszug angehängt...
Titel: Antw:DbLog - Umstellung asynchroner Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 06 Dezember 2022, 11:21:38
Das hätte ich jetzt auch so nicht erwartet.
Ich glaube einen Fehler im Ablauf gefunden zu haben, korrigiert und ins contrib geladen.
Teste mal bitte mit verbose 5.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: SusisStrolch am 06 Dezember 2022, 13:03:55
Hmm...
# $Id: 93_DbLog.pm 26750 2022-12-06 16:38:54Z DS_Starter $

Aber das Repo zeigt Rev. 26793... von 10:20:32
Und das Modul sagt mir
93_DbLog.pm:v5.3.0-s26750/2022-12-06
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: SusisStrolch am 06 Dezember 2022, 13:10:54
anyway... hier das Log (verbose 5):
2022.12.06 13:06:03.559 5: DbLog logdb - DbLogExclude of "WZ.LCG.Environment": .*
2022.12.06 13:06:03.559 5: DbLog logdb - DbLogInclude of "WZ.LCG.Environment": humidity,pressure,temperature
2022.12.06 13:06:03.560 4: DbLog logdb - added event - Timestamp: 2022-12-06 13:06:03, Device: WZ.LCG.Environment, Type: LACROSSE, Event: pressure: 1018, Reading: pressure, Value: 1018, Unit:
2022.12.06 13:06:03.633 4: DbLog logdb - ################################################################
2022.12.06 13:06:03.634 4: DbLog logdb - ###         New database processing cycle - synchronous      ###
2022.12.06 13:06:03.634 4: DbLog logdb - ################################################################
2022.12.06 13:06:03.634 4: DbLog logdb - DbLogType is: Current/History
2022.12.06 13:06:03.634 4: DbLog logdb - AutoCommit mode: ON, Transaction mode: ON
2022.12.06 13:06:03.635 4: DbLog logdb - Insert mode: Array
2022.12.06 13:06:03.641 4: DbLog logdb - Primary Key used in history: none
2022.12.06 13:06:03.641 4: DbLog logdb - Primary Key used in current: DEVICE,READING
2022.12.06 13:06:03.642 4: DbLog logdb - processing event Timestamp: 2022-12-02 00:00:00, Device: Hauptzaehler, Type: ESPEASY, Event: Glitches: 657110016, Reading: Glitches, Value: 657110016, Unit:
...
2022.12.06 13:06:03.918 4: DbLog logdb - processing event Timestamp: 2022-12-02 00:13:49, Device: Teich.ModusTag, Type: ESPEASY, Event: Dusk: 61811, Reading: Dusk, Value: 61811, Unit:

2022.12.06 13:06:03.918 4: DbLog logdb - processing event Timestamp: 2022-12-02 00:13:49, Device: Teich.ModusTag, Type: ESPEASY, Event: Temp: 7.0, Reading: Temp, Value: 7.0, Unit:

2022.12.06 13:06:08.985 2: DbLog logdb - Error table history - DBD::mysql::st execute_array failed: executing 1000 generated 1 errors at ./FHEM/93_DbLog.pm line 2543.

2022.12.06 13:06:09.200 4: DbLog logdb - insert history rolled back
2022.12.06 13:06:09.860 5: DbLog logdb - DbLog_Push Returncode: DBD::mysql::st execute_array failed: executing 1000 generated 1 errors at ./FHEM/93_DbLog.pm line 2543.

2022.12.06 13:06:09.881 4: DbLog logdb - check Device: Verbrauch.Homeoffice , Event: power: 204.029879190957
2022.12.06 13:06:09.881 5: DbLog logdb - parsed Event: Verbrauch.Homeoffice , Event: power: 204.029879190957
2022.12.06 13:06:09.881 5: DbLog logdb - DbLogInclude of "Verbrauch.Homeoffice": .*
2022.12.06 13:06:09.882 4: DbLog logdb - added event - Timestamp: 2022-12-06 13:06:09, Device: Verbrauch.Homeoffice, Type: EC3000, Event: power: 204.029879190957, Reading: power, Value: 204.029879190957, Unit:
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 06 Dezember 2022, 13:34:29
Für uns zählt erstmal nur was das Modul sagt, die Repo Versionsangabe ist jetzt nebensächlich.
Trotzdem macht mich die Ausgabe stutzig.

Ich habe die Logausgabe besser identifizierbar editiert und sie sieht jetzt so aus für den synchronen Fall verbose 5:


2022.12.06 13:41:04.751 4: DbLog LogDB1 - ################################################################
2022.12.06 13:41:04.752 4: DbLog LogDB1 - ###      New database processing cycle - SBP synchronous     ###
2022.12.06 13:41:04.753 4: DbLog LogDB1 - ################################################################
2022.12.06 13:41:04.754 5: DbLog LogDB1 - Store contains: 22731 -> 2022-12-06 13:41:04|Dum.Energy|DUMMY||T|374.1|
2022.12.06 13:41:04.755 5: DbLog LogDB1 - Store contains: 22732 -> 2022-12-06 13:41:04|Dum.Energy|DUMMY||T|374.1|
2022.12.06 13:41:04.755 5: DbLog LogDB1 - Store contains: 22733 -> 2022-12-06 13:41:04|MySTP_5000|SMAINVERTER||etotal|50162.077|
2022.12.06 13:41:04.756 5: DbLog LogDB1 - Store contains: 22734 -> 2022-12-06 13:41:04|MySTP_5000|SMAINVERTER||etoday|0.36|
2022.12.06 13:41:04.757 5: DbLog LogDB1 - Store contains: 22735 -> 2022-12-06 13:41:04|MySTP_5000|SMAINVERTER||total_pac|0.047|
2022.12.06 13:41:04.758 5: DbLog LogDB1 - Store contains: 22736 -> 2022-12-06 13:41:04|MySTP_5000|SMAINVERTER||state|0.047|
2022.12.06 13:41:05.030 5: DbLog LogDB1 - DbLogType is: Current/History
2022.12.06 13:41:05.030 4: DbLog LogDB1 - AutoCommit mode: ON, Transaction mode: ON
2022.12.06 13:41:05.030 4: DbLog LogDB1 - Insert mode: Bulk
2022.12.06 13:41:05.032 4: DbLog LogDB1 - Primary Key used in fhemtest1.history: TIMESTAMP,DEVICE,READING
2022.12.06 13:41:05.032 4: DbLog LogDB1 - Primary Key used in fhemtest1.current: DEVICE,READING
2022.12.06 13:41:05.032 5: DbLog LogDB1 - processing 22731 -> TS: 2022-12-06 13:41:04, Dev: Dum.Energy, Type: DUMMY, Event: , Reading: T, Val: 374.1, Unit:
2022.12.06 13:41:05.032 5: DbLog LogDB1 - processing 22732 -> TS: 2022-12-06 13:41:04, Dev: Dum.Energy, Type: DUMMY, Event: , Reading: T, Val: 374.1, Unit:
2022.12.06 13:41:05.032 5: DbLog LogDB1 - processing 22733 -> TS: 2022-12-06 13:41:04, Dev: MySTP_5000, Type: SMAINVERTER, Event: , Reading: etotal, Val: 50162.077, Unit:
2022.12.06 13:41:05.032 5: DbLog LogDB1 - processing 22734 -> TS: 2022-12-06 13:41:04, Dev: MySTP_5000, Type: SMAINVERTER, Event: , Reading: etoday, Val: 0.36, Unit:
2022.12.06 13:41:05.032 5: DbLog LogDB1 - processing 22735 -> TS: 2022-12-06 13:41:04, Dev: MySTP_5000, Type: SMAINVERTER, Event: , Reading: total_pac, Val: 0.047, Unit:
2022.12.06 13:41:05.032 5: DbLog LogDB1 - processing 22736 -> TS: 2022-12-06 13:41:04, Dev: MySTP_5000, Type: SMAINVERTER, Event: , Reading: state, Val: 0.047, Unit:
2022.12.06 13:41:05.032 4: DbLog LogDB1 - begin transaction
2022.12.06 13:41:05.034 4: DbLog LogDB1 - commit inserted data table fhemtest1.history
2022.12.06 13:41:05.034 3: DbLog LogDB1 - INFO - 5 of 6 events inserted into table fhemtest1.history due to PK on columns TIMESTAMP,DEVICE,READING
2022.12.06 13:41:05.034 4: DbLog LogDB1 - begin transaction
2022.12.06 13:41:05.036 4: DbLog LogDB1 - 6 of 6 events updated in table fhemtest1.current using PK on columns DEVICE,READING
2022.12.06 13:41:05.037 4: DbLog LogDB1 - commit inserted data table fhemtest1.current


Im Kopf sieht man es ist der SBP = SubProcess.
Bitte nochmal aus dem contrib ziehen und vor allem restarten. reload reicht nicht.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 06 Dezember 2022, 14:36:27
Die set Funktionen "count" und "countNbl" sind nun ebenfalls auf SubProcess umgestellt.
countNbl ist mit count identisch und wird nicht mehr benötigt, bleibt zunächst aber wegen der Abwärtskompatibilität erhalten.

count ist dadurch per se non-blocking.

Update liegt im contrib.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: enno am 06 Dezember 2022, 16:11:09
Eben die neue Version eingspielt:
2022.12.06 16:00:44.266 1: PERL WARNING: "my" variable $name masks earlier declaration in same scope at ./FHEM/93_DbLog.pm line 2837, <$fh> line 32.
2022.12.06 16:00:45.324 2: DbLog MYSQL - Subprocess >326123< initialized ... ready for non-blocking operation
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 06 Dezember 2022, 16:14:46
Danke enno ... korrigiert.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 06 Dezember 2022, 20:44:32
Die set Funktionen "deleteOldDays" und "deleteOldDaysNbl" sind nun ebenfalls auf SubProcess umgestellt.
deleteOldDaysNbl ist mit deleteOldDays identisch und wird nicht mehr benötigt, bleibt zunächst aber wegen der Abwärtskompatibilität erhalten.

Update liegt im contrib.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 06 Dezember 2022, 22:28:00
userCommand ist nun auch noch auf SubProcess umgestellt.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: SusisStrolch am 07 Dezember 2022, 14:55:27
ZitatFür uns zählt erstmal nur was das Modul sagt, die Repo Versionsangabe ist jetzt nebensächlich.
Trotzdem macht mich die Ausgabe stutzig.
Da ich trotz eines neuen Downloads aus dem Repo und einem FHEM-Restart immer noch keine Fehlerbehandlung sehe:
root@fhem:/opt/fhem/FHEM# md5sum 93_DbLog.pm
9c5463f1697c386e2b6020ce49fbb979  93_DbLog.pm


Auch sehe ich im Log:
[code2022.12.07 09:50:53.758 4: DbLog logdb - ################################################################
2022.12.07 09:50:53.758 4: DbLog logdb - ###         New database processing cycle - synchronous      ###
2022.12.07 09:50:53.758 4: DbLog logdb - ################################################################
2022.12.07 09:50:53.759 4: DbLog logdb - DbLogType is: Current/History
2022.12.07 09:50:53.759 4: DbLog logdb - AutoCommit mode: ON, Transaction mode: ON
2022.12.07 09:50:53.759 4: DbLog logdb - Insert mode: Array
2022.12.07 09:50:53.783 4: DbLog logdb - Primary Key used in history: none
2022.12.07 09:50:53.783 4: DbLog logdb - Primary Key used in current: DEVICE,READING
][/code]
wobei mein Setting auf asynchron steht.
Habe ich da noch ein Attribut übersehen?

Hängt es daran das der "importCache" synchron ausgeführt wird?
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 07 Dezember 2022, 16:30:02
Zitat
Hängt es daran das der "importCache" synchron ausgeführt wird?

Ja, importCacheFile stelle ich gerade erst um. Hab ich auch nicht dran gedacht.  :(
Melde mich wieder wenn das erledigt ist.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 07 Dezember 2022, 21:21:40
Habe gerade die V 5.4.0 ins contrib geladen.

Jetzt sind auch die Befehle userCommand, exportCache und importCacheFile auf die neue Architektur angepasst.

Nun fehlt im Prinzip nur noch reduceLog bzw. reduceLogNbl ... kommt demnächst.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 09 Dezember 2022, 09:13:59
Guten Morgen,

im contrib liegt die V 5.5.0.

Es sind nun auch  reduceLog bzw. reduceLogNbl auf SubProcess umgestellt.
Die ComRef ist angepasst.

Edit: auch das Attr timeout ist auf die neue Struktur umgesetzt.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: SusisStrolch am 09 Dezember 2022, 12:16:36
Moin,

Habe die 5.5 eingespielt, die Lage ist jedoch unverändert.

Ablauf:
  importCache "Cache-Datei mit UTF-8 Fehler" um Fehler auf der mysql-Seite zu provizieren.

Erwartungshaltung:   
Hier der entsprechende Level 5 Trace:
2022.12.09 12:02:23.089 3: DbLog logdb - 33 rows read from ./log/cache_logdb_2022-12-02_00:10:05 into temporary Memory store
2022.12.09 12:02:23.090 5: DbLog logdb - DbLogType is: history
2022.12.09 12:02:23.091 4: DbLog logdb - AutoCommit mode: OFF, Transaction mode: OFF
2022.12.09 12:02:23.092 4: DbLog logdb - Insert mode: Array
2022.12.09 12:02:23.100 4: DbLog logdb - Primary Key used in history: none
2022.12.09 12:02:23.101 4: DbLog logdb - Primary Key used in current: DEVICE,READING
2022.12.09 12:02:23.101 4: DbLog logdb - add stored data: 0 -> 2022-12-02 00:10:05|Umwaelzung|ESPEASY|Pumpe: 0.0|Pumpe|0.0|
2022.12.09 12:02:23.101 4: DbLog logdb - add stored data: 1 -> 2022-12-02 00:10:05|Umwaelzung|ESPEASY|Ruecklauf: 15.2|Ruecklauf|15.2|
2022.12.09 12:02:23.102 4: DbLog logdb - add stored data: 2 -> 2022-12-02 00:10:05|Umwaelzung|ESPEASY|state: Pumpe: 0.0 Rueck: 15.2 Vorla: 33.3 delta: 0.0|state|Pumpe: 0.0 Rueck: 15.2 Vorla: 33.3 delta: 0.0|
2022.12.09 12:02:23.102 4: DbLog logdb - add stored data: 3 -> 2022-12-02 00:10:05|Umwaelzung|ESPEASY|Vorlauf: 33.3|Vorlauf|33.3|
2022.12.09 12:02:23.102 4: DbLog logdb - add stored data: 4 -> 2022-12-02 00:10:05|Verbrauch.Warmwasser|EC3000|power: 0.779215177016016|power|0.779215177016016|
2022.12.09 12:02:23.103 4: DbLog logdb - add stored data: 5 -> 2022-12-02 00:10:06|EMS_Boiler|MQTT2_DEVICE|serviceCode: 0�|serviceCode|0�|
2022.12.09 12:02:23.120 5: DbLog logdb - processing 32 -> TS: 2022-12-02 00:10:27, Dev: Hof.3erDose, Type: MQTT2_DEVICE, Event: Wifi_SSId: SusiconStrolch, Reading: Wifi_SSId, Val: SusiconStrolch, Unit:

2022.12.09 12:02:23.143 2: DbLog logdb - Error table history - DBD::mysql::st execute_array failed: executing 33 generated 1 errors at ./FHEM/93_DbLog.pm line 2908.

2022.12.09 12:02:23.160 4: DbLog logdb - ################################################################
2022.12.09 12:02:23.161 4: DbLog logdb - ###              start of new Logcycle                       ###
2022.12.09 12:02:23.161 4: DbLog logdb - ################################################################
2022.12.09 12:02:23.161 4: DbLog logdb - number of events received: 1 of device: logdb


Ergebnis:    
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 09 Dezember 2022, 13:08:33
An der Stelle hatte ich noch nichts gemacht.
Aber jetzt V 5.5.1 im contrib. Restart erforderlich !

Im Array-Modus (default) und abgeschalteter Transaktion werden die fehlerhaften Daten nicht in die DB geschrieben (die anderen commited) und mit verbose 4 protokolliert, aber nicht an den Cache zurück gegeben.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 09 Dezember 2022, 15:56:29
Habe noch etwas gefeilt....
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 09 Dezember 2022, 23:30:39
Und nicht mehr benötigten Code entfernt / aufgeräumt -> V 5.5.2
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 10 Dezember 2022, 16:16:36
 V 5.5.3 -> mehr Code rework und minor fixing
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: thburkhart am 11 Dezember 2022, 13:26:56
Zitat
Zitat
Da ich ja eh mit einer blanken Datenbank starten möchte, bietet sich ja die die neue DbLog Version 5.X geradezu zum Test an :-)

was muss ich dazu machen?
Wenn Fragen dazu sind, am Besten in dem anderen Thread.
Du lädst die Version aus meinem contrib  (siehe Fußtext)  mit dem Downloadbutton herunter und startest danach FHEM neu.


bin zu doof...
habe nun die 93_DbLog.pm auf'm PC .. mit FTP auf den RASPI ins FHEM Verzeichnis ?

Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 11 Dezember 2022, 13:33:59
Ich habe dir mal einen Screenshot gemacht.
Wenn du auf den Link im Fußtext drückst bekommst du das dargestellte Bild.
Dann rechts neben DbLog auf den Downloadbutton drücken und in Verz. FHEM speichern.
Dann FHEM restarten.

Gehe jetzt mal auf den Weihnachtsmarkt  ;)
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: enno am 11 Dezember 2022, 13:41:37
Zitat von: DS_Starter am 11 Dezember 2022, 13:33:59
Dann rechts neben DbLog auf den Downloadbutton drücken und in Verz. FHEM speichern.

oder die Datei auf dem Rechner lokal speichern, dann mit einem Editor öffnen und alles markieren "Strg+A" und in die Zwischenablage "Strg+C" kopieren. In FHEM "Edit files" und dort irgend eine Datei öffnen. Diese leeren und über die Zwischenablage "Strg+V" alles einfügen. Jetzt beim Speichern aufpassen, dass du "Save as" mit dem Namen "93_DbLog.pm" speicherst. Dann FHEM shutdown restart
Auf diese Weise ist die Datei im richtigen Verzeichnis mit den richtigen Rechten.

Gruss
  Enno

PS: Falls du unter Windows unterwegs bist, aufpassen, dass du dir keine Steuerzeichen (Zeilenumbrüche) mit reinbaust. Also am besten kein Textverarbeitungsprogramm nutzen.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 11 Dezember 2022, 13:48:24
Oder noch einfacher


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


in der FHEMWEB Kommandozeile und restarten.
Bin jetzt wirklich weg ...  ;)
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: betateilchen am 11 Dezember 2022, 13:54:44
Zitat von: DS_Starter am 11 Dezember 2022, 13:48:24
Bin jetzt wirklich weg ...  ;)

Ah, Du gehst Popcorn holen?
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: erwin am 11 Dezember 2022, 14:24:39
Hi Heiko!
das ist ja ein mächtiger Umbau!
bis jetzt keine Probleme auf dem Testsystem! DANKE!
Ich werde in den nächsten Tagen das mal auf's Produktiv-system kopieren und mal ein paar Tage laufen lassen...
l.g. erwin 
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: SusisStrolch am 11 Dezember 2022, 15:16:20
Grade mal die 5.5.3 probiert - die zeigt noch immer das gleiche Verhalten bei einem mysql-Fehler.
2022.12.11 14:44:14.212 4: DbLog logdb - ################################################################
2022.12.11 14:44:14.213 4: DbLog logdb - ###              start of new Logcycle                       ###
2022.12.11 14:44:14.213 4: DbLog logdb - ################################################################
2022.12.11 14:44:14.213 4: DbLog logdb - number of events received: 2 of device: EMS_Boiler
2022.12.11 14:44:14.214 4: DbLog logdb - check Device: EMS_Boiler , Event: flameCurr: 52.4
2022.12.11 14:44:14.215 5: DbLog logdb - parsed Event: EMS_Boiler , Event: flameCurr: 52.4
2022.12.11 14:44:14.215 5: DbLog logdb - DbLogExclude of "EMS_Boiler": .*,wW.*,tapwaterActive,sysPress,selFlowTemp,selBurnPow,retTemp,pump.*,lastCode,json.*
2022.12.11 14:44:14.215 5: DbLog logdb - DbLogInclude of "EMS_Boiler": burnWorkMin,flameCurr,boilTemp,exhaustTemp,outdoorTemp,serviceCode,serviceCodeNumber
2022.12.11 14:44:14.216 4: DbLog logdb - added event - Timestamp: 2022-12-11 14:44:14, Device: EMS_Boiler, Type: MQTT2_DEVICE, Event: flameCurr: 52.4, Reading: flameCurr, Value: 52.4, Unit:
2022.12.11 14:44:14.217 4: DbLog logdb - check Device: EMS_Boiler , Event: curFlowTemp: 66.5
2022.12.11 14:44:14.217 5: DbLog logdb - parsed Event: EMS_Boiler , Event: curFlowTemp: 66.5
2022.12.11 14:44:14.217 5: DbLog logdb - DbLogExclude of "EMS_Boiler": .*,wW.*,tapwaterActive,sysPress,selFlowTemp,selBurnPow,retTemp,pump.*,lastCode,json.*
2022.12.11 14:44:14.218 5: DbLog logdb - DbLogInclude of "EMS_Boiler": burnWorkMin,flameCurr,boilTemp,exhaustTemp,outdoorTemp,serviceCode,serviceCodeNumber
2022.12.11 14:44:14.540 3: DbLog logdb - 33 rows read from ./log/cache_logdb_2022-12-02_00:10:05 into temporary Memory store
2022.12.11 14:44:14.541 5: DbLog logdb - DbLogType is: history
2022.12.11 14:44:14.541 4: DbLog logdb - AutoCommit mode: OFF, Transaction mode: OFF
2022.12.11 14:44:14.541 4: DbLog logdb - Insert mode: Array
2022.12.11 14:44:14.548 4: DbLog logdb - Primary Key used in history: none
2022.12.11 14:44:14.548 4: DbLog logdb - Primary Key used in current: DEVICE,READING
2022.12.11 14:44:14.549 4: DbLog logdb - add stored data: 0 -> 2022-12-02 00:10:05|Umwaelzung|ESPEASY|Pumpe: 0.0|Pumpe|0.0|
2022.12.11 14:44:14.549 4: DbLog logdb - add stored data: 1 -> 2022-12-02 00:10:05|Umwaelzung|ESPEASY|Ruecklauf: 15.2|Ruecklauf|15.2|
...
2022.12.11 14:44:14.558 4: DbLog logdb - add stored data: 32 -> 2022-12-02 00:10:27|Hof.3erDose|MQTT2_DEVICE|Wifi_SSId: SusiconStrolch|Wifi_SSId|SusiconStrolch|
2022.12.11 14:44:14.558 4: DbLog logdb - logstore deleted - 33 stored datasets added for processing
2022.12.11 14:44:14.559 5: DbLog logdb - processing 0 -> TS: 2022-12-02 00:10:05, Dev: Umwaelzung, Type: ESPEASY, Event: Pumpe: 0.0, Reading: Pumpe, Val: 0.0, Unit:
2022.12.11 14:44:14.559 5: DbLog logdb - processing 1 -> TS: 2022-12-02 00:10:05, Dev: Umwaelzung, Type: ESPEASY, Event: Ruecklauf: 15.2, Reading: Ruecklauf, Val: 15.2, Unit:
...
2022.12.11 14:44:14.626 2: DbLog logdb - Error table history - DBD::mysql::st execute_array failed: executing 33 generated 1 errors at ./FHEM/93_DbLog.pm line 2903.
2022.12.11 14:44:14.773 4: DbLog logdb - commit inserted data table history



Zitat von: DS_Starter am 09 Dezember 2022, 13:08:33
Im Array-Modus (default) und abgeschalteter Transaktion werden die fehlerhaften Daten nicht in die DB geschrieben (die anderen commited) und mit verbose 4 protokolliert, aber nicht an den Cache zurück gegeben.

Obwohl 2022.12.11 14:44:14.541 4: DbLog logdb - AutoCommit mode: OFF, Transaction mode: OFF
2022.12.11 14:44:14.541 4: DbLog logdb - Insert mode: Array
wurden die Daten aus dem importCache nicht  weggeschrieben, einen Error-Dump gab es ebenfalls nicht.


Noch ne Kleinigkeit...
Beim FHEM Restart (sei es via "systemctl" oder "shutdown restart") verfällt FHEM erst einmal in eine "Schweigeminute".
Der Restart dauert knapp 2Min...
2022.12.11 14:40:14.313 4: DbLog logdb - ################################################################
2022.12.11 14:40:14.314 4: DbLog logdb - ###              start of new Logcycle                       ###
2022.12.11 14:40:14.315 4: DbLog logdb - ################################################################
2022.12.11 14:40:14.315 4: DbLog logdb - number of events received: 1 of device: global
2022.12.11 14:40:14.316 4: DbLog logdb - check Device: global , Event: SHUTDOWN
2022.12.11 14:40:14.318 5: DbLog logdb - parsed Event: global , Event: SHUTDOWN
2022.12.11 14:40:14.319 4: DbLog logdb - added event - Timestamp: 2022-12-11 14:40:14, Device: global, Type: GLOBAL, Event: SHUTDOWN, Reading: state, Value: SHUTDOWN, Unit:
2022.12.11 14:40:14.328 0: Server shutdown
2022.12.11 14:40:14.332 4: ESPEasy Hauptzaehler: Shutdown requested
2022.12.11 14:41:55.765 1: Verbrauch.Multimedia: no I/O device
2022.12.11 14:41:55.772 1: Verbrauch.Warmwasser: no I/O device
2022.12.11 14:41:55.780 1: Verbrauch.Waschmaschine: no I/O device





Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: thburkhart am 11 Dezember 2022, 16:20:39
sodele
nun läuft wohl die neue pm :-)
nternals
COLUMNS
field length used for Device: 64, Type: 64, Event: 512, Reading: 64, Value: 128, Unit: 32
CONFIGURATION
./configDB.conf
DEF
./configDB.conf .*:(temperature|humidity).*
FD
15
FUUID
6395a74c-f33f-fd5f-bf68-e3ca20a9e2cee3df
FVERSION
93_DbLog.pm:v5.5.3-s26750/2022-12-10
MODE
asynchronous
MODEL
MYSQL
NAME
dblog_THB
NR
2
NTFY_ORDER
50-dblog_THB
PID
18023
REGEXP
.*:(temperature|humidity).*
SBP_PID
18030
SBP_STATE
running
STATE
DBD::mysql::st execute_array failed: MySQL server has gone away [err was 2006 now 2000000000]
executing 42 generated 42 errors at ./FHEM/93_DbLog.pm line 2903.
TYPE
DbLog
UTF8
0
dbconn
mysql:database=fhem;host=localhost;port=3306
dbuser
fhemuser
eventCount
1
Readings
CacheOverflowLastNum
0
2022-12-11 16:13:43
CacheOverflowLastState
normal
2022-12-11 12:26:51
CacheUsage
2
2022-12-11 16:12:14
NextSync
2022-12-11 16:12:43 or when CacheUsage 500 is reached
2022-12-11 16:12:13
state
DBD::mysql::st execute_array failed: MySQL server has gone away [err was 2006 now 2000000000]
executing 42 generated 42 errors at ./FHEM/93_DbLog.pm line 2903.
2022-12-11 16:12:13
dblog_THB
room
xDBLog
Attributes
DbLogType
History,frontend
deleteattr
alias
dblog_THB
deleteattr
asyncMode
1
deleteattr
bulkInsert
0
deleteattr
cacheLimit
500
deleteattr
commitMode
ac:on_ta:off
deleteattr
event-min-interval
state:600
deleteattr
room
xDBLog
deleteattr
syncInterval
30
deleteattr
useCharfilter
1
deleteattr
verbose
2
deleteattr
Probably associated with
DbLog_THB_ZeilenHistorie
initialized
SVG
DbLog_reduce (DbLog_reducelog 1 1:40)
Next: 01:40:00
at
DbLog_reopen
Next: 01:30:00
at
Rep_MAX
connected » ProcTime: 0.0077 sec
DbRep
ReportDbLog_THB (Rep.Energy)
initialized
DbRep
SVG_MAX_ASTR_F1 (SVG_MAX_ASTR_F1 Kontakt Abstellraum heute)
initialized
SVG
SVG_MAX_BAD_F2 (SVG_MAX_BAD_F2 Kontakt Badtüre heute)
initialized
SVG
SVG_MAX_BAD_HT (MAX_Bad_HT 10 Tage)
initialized
SVG
SVG_MAX_BAD_WT (SVG_MAX_BAD_WT 10 Tage)
initialized
SVG
SVG_MAX_DIELE_F1 (SVG_MAX_DIELE_F1 Kontakt Haustüre heute)
initialized
SVG
SVG_MAX_DIELE_HT (SVG_MAX_DIELE_HT 10 Tage)
initialized
SVG
SVG_MAX_HWR_F1 (SVG_MAX_HWR_F1 Kontakt Aussentüre HWR heute)
initialized
SVG
SVG_MAX_HWR_F2 (SVG_MAX_HWR_F2 Kontakt Zimmertüre HWR heute)
initialized
SVG
SVG_MAX_HWR_HT
initialized
SVG
SVG_MAX_KCH_HT (SVG_Küche_HT 10 Tage)
initialized
SVG
SVG_MAX_PETRA_F4 (SVG_MAX_DIELE_F1 Kontakt Zimmertüre PETRA heute)
initialized
SVG
SVG_MAX_PETRA_O
initialized
SVG
SVG_MAX_PETRA_S1
initialized
SVG
SVG_MAX_PETRA_S2
initialized
SVG
SVG_MAX_PETRA_WT
initialized
SVG
SVG_MAX_Schlafzimmer_HT (SVG_SCHLAFEN)
initialized
SVG
SVG_MAX_Schlafzimmer_WT
initialized
SVG
SVG_MAX_THOMAS_F1 (SVG_MAX_THOMAS_F1 Kontakt Terrassentüre heute)
initialized
SVG
SVG_MAX_THOMAS_F2 (SVG_MAX_THOMAS_F2 Kontakt Thomas Zimmertüre heute)
initialized
SVG
SVG_MAX_THOMAS_HT1
initialized
SVG
SVG_MAX_THOMAS_HT2
initialized
SVG
SVG_MAX_THOMAS_WT
initialized
SVG
SVG_MAX_Toilette_HT (SVG_MAX_Toilette)
initialized
SVG
SVG_MAX_Treppenhaus_HT (SVG_MAX_Treppenhaus HT)
initialized
SVG
SVG_MAX_Treppenhaus_WT (SVG_MAX_Treppenhaus WT)
initialized
SVG
SVG_MAX_Wohnzimmer_O
initialized
SVG
SVG_MAX_Wohnzimmer_SO
initialized
SVG
SVG_MAX_Wohnzimmer_SW
initialized
SVG
SVG_MAX_Wohnzimmer_WT
initialized
SVG
SVG_OilFox (SVG OilFox 90 Tage)
initialized
SVG
SVG_OilFox2 (SVG OilFox2 90 Tage full)
initialized
SVG
SVG_PowerFox_d (PowerFox Stromverbrauch gesamt - heute)
initialized
SVG
SVG_PowerFox_m (PowerFox Stromverbrauch gesamt - 30 Tage)
initialized
SVG
SVG_TX25IT_13 (SVG_TX29 Garagenkeller (13) heute)
initialized
SVG
SVG_TX25IT_13m (SVG_TX29 Garagenkeller (13) 30 Tage)
initialized
SVG
SVG_TX29DTH_01 (SVG_TX29 Wohnzimmer (01) heute)
initialized
SVG
SVG_TX29DTH_01m (SVG_TX29 Wohnzimmer (01) 30 Tage)
initialized
SVG
SVG_TX29DTH_02 (SVG_TX29 Wohnzimmer (02) heute)
initialized
SVG
SVG_TX29DTH_02m (SVG_TX29 Wohnzimmer (02) 30 Tage)
initialized
SVG
SVG_TX29DTH_03 (SVG_TX29 Bad (03) heute)
initialized
SVG
SVG_TX29DTH_03m (SVG_TX29 Bad (03) 30 Tage)
initialized
SVG
SVG_TX29DTH_04 (SVG_TX29 Thomas (04) heute)
initialized
SVG
SVG_TX29DTH_04m (SVG_TX29 Thomas (04) 30 Tage)
initialized
SVG
SVG_TX29DTH_05 (SVG_TX29 Aussen Nord (5) heute)
initialized
SVG
SVG_TX29DTH_05m (SVG_TX29 Aussen Nord (5) 30 Tage)
initialized
SVG
SVG_TX29DTH_06 (SVG_TX29 Aussen Balkon (6) heute)
initialized
SVG
SVG_TX29DTH_06m (SVG_TX29 Aussen Balkon (6) 30 Tage)
initialized
SVG
SVG_TX29DTH_07 (SVG_TX29 Petra (07) heute)
initialized
SVG
SVG_TX29DTH_07m (SVG_TX29 Petra (07) 30Tage)
initialized
SVG
SVG_TX29DTH_08 (SVG_TX29 Schlafzimmer (08) heute)
initialized
SVG
SVG_TX29DTH_08m (SVG_TX29 Schlafzimmer (08) 30 Tage)
initialized
SVG
SVG_TX29DTH_09 (SVG_TX29 Treppenhaus (09) heute)
initialized
SVG
SVG_TX29DTH_09m (SVG_TX29 Treppenhaus (09) 30 Tage)
initialized
SVG
SVG_TX29DTH_10 (SVG_TX29 Aussen Terrasse (10) heute)
initialized
SVG
SVG_TX29DTH_10m (SVG_TX29 Aussen Terrasse (10) 30 Tage)
initialized
SVG
SVG_TX29DTH_11 (SVG_TX29 Abstellraum (11) heute)
initialized
SVG
SVG_TX29DTH_11m (SVG_TX29 Abstellraum (11) 30 Tage)
initialized
SVG
SVG_TX29DTH_12 (SVG_TX29 Hauswirtschaftsraum (12) heute)
initialized
SVG
SVG_TX29DTH_12m (SVG_TX29 Hauswirtschaftsraum (12) 30 Tage)
initialized
SVG
SVG_TX29DTH_14 (SVG_TX29 Garage (14) heute)
initialized
SVG
SVG_TX29DTH_14m (SVG_TX29 Garage (14) 30 Tage)
initialized
SVG
SVG_TX29DTH_15 (SVG_TX29 Bühne (15) heute)
initialized
SVG
SVG_TX29DTH_15m (SVG_TX29 Bühne (15) 30 Tage)
initialized
SVG
SVG_TX29DTH_16 (SVG_TX29 Heizraum (16) heute)
initialized
SVG
SVG_TX29DTH_16m (SVG_TX29 Heizraum (16) 30 Tage)
initialized
SVG
SVG_TX29DTH_17 (SVG_TX29 Aussen Süd OG (17) heute)
initialized
SVG
SVG_TX29DTH_17m (SVG_TX29 Aussen Süd OG (17) 30 Tage)
initialized
SVG
SVG_TX29DTH_18 (SVG_TX29 zbV HWR Problem (18) heute)
initialized
SVG
SVG_TX29DTH_18m (SVG_TX29 zbV HWR Problem (18) 30 Tage)
initialized
SVG
SVG_TX29DTH_19 (SVG_TX29 Tiefkühlfach Küche (19) heute)
initialized
SVG
SVG_TX29DTH_19m (SVG_TX29 Tiefkühlfach Küche (19) 30 Tage)
initialized
SVG
SVG_TX29DTH_20 (SVG_TX29 Tiefkühlfach HWR (20) heute)
initialized
SVG
SVG_TX29DTH_20m (SVG_TX29 Tiefkühlfach HWR (20) 30 Tage)
initialized
SVG
SVG_TX29_00 (SVG_TX29 Aussen Terrasse TFA (00) heute)
initialized
SVG
SVG_TX29_00m (SVG_TX29 Aussen Terrasse TFA (00) 30 Tage)
initialized
SVG
SVG_Temp1 (Temp1 Aussen Terrasse Tuya heute)
initialized
SVG
SVG_Temp2 (Temp2 Petra heute)
initialized
SVG
SVG_Temp3 (Temp1 Aussen Terrasse Tuya heute)
initialized
SVG
SVG_WU_IPLIEZ_1_S
initialized
SVG
SVG_WU_IPLIEZ_3_R (SVG WU_IPLIEZ_3R)
initialized
SVG
SVG_WU_IPLIEZ_3_Rday (SVG WU_IPLIEZ_3Rday)
initialized
SVG
SVG_WU_IPLIEZ_3_T (SVG WU_IPLIEZ_3T)
initialized
SVG
SVG_WU_IPLIEZ_3_Tday (SVG WU_IPLIEZ_3Tday)
initialized
SVG
SVG_WU_IPLIEZ_3_W (SVG WU_IPLIEZ_3W)
initialized
SVG
SVG_WU_IPLIEZ_3_Wday (SVG WU_IPLIEZ_3Wday)
initialized
SVG
SVG_dblog_THB_1
initialized
SVG


aber es knallt wieder mit der ja unveränderten Datenbank.

Wie kann ich diese löschen und neu anlegen ?
In FHEM oder über MYSQL?
Welche DB-User brauche ich außer "root"?

Eben erst sehe ich über PHPmyadmin wohr das ProbleM

History
Zeige Datensätze 0 - 24 (22416208 insgesamt, Die Abfrage dauerte 0.0019 Sekunden.)


kein Wunder..
TRUNKATE ging nicht
DELETE ja
habe also heine history mehr

wie kriege ich history wieder?
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: thburkhart am 11 Dezember 2022, 16:46:41

CREATE TABLE `fhem`.`history` (TIMESTAMP TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, DEVICE varchar(64), TYPE varchar(64), EVENT varchar(512), READING varchar(64), VALUE varchar(128), UNIT varchar(32));
CREATE TABLE `fhem`.`current` (TIMESTAMP TIMESTAMP, DEVICE varchar(64), TYPE varchar(64), EVENT varchar(512), READING varchar(64), VALUE varchar(128), UNIT varchar(32));
GRANT SELECT, INSERT, DELETE, UPDATE ON `fhem`.* TO 'fhemuser'@'%';
CREATE INDEX Search_Idx ON `fhem`.`history` (DEVICE, READING, TIMESTAMP) USING BTREE;


hat die history nun angelegt
und ICH HABE CONNECT :-) juhu

was muss ich nun wegen Version 5 noch anpassen ?
SVGs?
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: thburkhart am 11 Dezember 2022, 16:56:56
In die DatenBank wird also wohl geschrieben (132 Einträge schon wieder) :-)

in den Gplots kommt jedoch nichts..

was mache ich falsch?
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: enno am 11 Dezember 2022, 16:57:30
Zitat von: thburkhart am 11 Dezember 2022, 16:46:41
was muss ich nun wegen Version 5 noch anpassen ?

eigentlich nur aufpassen, das beim nächsten Update von FHEM nicht die normale Version wieder eingespielt wird. Oder attr global exclude_from_update 93_DbLog.pm
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: thburkhart am 11 Dezember 2022, 17:06:22
und meine GPLOTs?
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: thburkhart am 11 Dezember 2022, 17:11:42
die gplot.cfgs habe ich mit einenem Namen versehen...
# Created by FHEM/98_SVG.pm, 2015-02-05 17:43:13
# THB 2016-06-12
# THB 2020-03-30


set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title '<TL> - <L1> '
set ytics
set y2tics
set grid ytics y2tics
set ylabel "Humidity (%)"
set y2label "Temperature in C"


set yrange [0:100]
# set y2range [-10:40]


#FileLog 4:temperature:10:
#FileLog 6:humidity:50:

#DbLog <SPEC1>:temperature:10:
#DbLog <SPEC1>:humidity:50:


plot "<IN>" using 1:2 axes x1y2 title 'Temperature' ls l0fill lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Humidity' ls l2 lw 1 with lines
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: enno am 11 Dezember 2022, 17:13:19
https://wiki.fhem.de/wiki/SVG-Plots_von_FileLog_auf_DbLog_umstellen

auf was steht dein DbLog ? bei mir ist das attr DbLogType Current/History und in den Plots LOGFILE HISTORY
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: thburkhart am 11 Dezember 2022, 17:28:49
bingo das wars :-)

danke sehr !!!!!

seltsamerweise lief das mit der alten db prima

Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: thburkhart am 11 Dezember 2022, 17:33:25
andere Frage:
auf dem Android SmartPhone  will sich die App mit denselben Zugangsdaten nicht mit der FHEM Datenbank verbinden.
Database FHEM
User fhemuser

woran könnte das liegen ?
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: betateilchen am 11 Dezember 2022, 18:16:47
Zitat von: thburkhart am 11 Dezember 2022, 17:11:42

#FileLog 4:temperature:10:
#FileLog 6:humidity:50:

#DbLog <SPEC1>:temperature:10:
#DbLog <SPEC1>:humidity:50:


Die Zeilen mit #FileLog am Anfang solltest Du entfernen, wenn alle Werte aus der Datenbank kommen.

In den gplot Dateien selbst zu editieren, sollte man nur tun, wenn man wirklich weiß und verstanden hat, WAS man da tut.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: betateilchen am 11 Dezember 2022, 18:18:38
Zitat von: thburkhart am 11 Dezember 2022, 17:33:25
woran könnte das liegen ?

Vielleicht daran, dass die Datenbank nur von localhost aus erreichbar ist?
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: thburkhart am 11 Dezember 2022, 20:08:43
Zitat von: betateilchen am 11 Dezember 2022, 18:18:38
Vielleicht daran, dass die Datenbank nur von localhost aus erreichbar ist?

das Smartphone ist doch wie mein Laptop im selben heimischen Netz ..  ?
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 11 Dezember 2022, 21:21:20
@SusisStrolch

Zitat
Noch ne Kleinigkeit...
Beim FHEM Restart (sei es via "systemctl" oder "shutdown restart") verfällt FHEM erst einmal in eine "Schweigeminute".
Es gibt für Module die das benötigen die Möglichkeit den Shutdown zu verzögern (https://wiki.fhem.de/wiki/DevelopmentModuleIntro#X_DelayedShutdown).
DbLog ist eines davon um den Abschluß der letzten DB-Aktivitäten abzuwarten. Siehe auch das globale Attr maxShutdownDelay.
Im Logfile sieht man welche Devices den Shutdown verzögern, z.B.:


2022.12.11 20:59:41.870 1: Server shutdown delayed due to SynCalTasks,SSCam.Keller,SynCal3,SynCal1,CamTER,SDS1,CamHE1,SynCal2,SSCam.Terrasse,SSCam.Hauseingang,CalHaus,SSCam.Carport,LogSQLITE1,SynCal.Abfall,SynCal,LogDB,SSCam.GiebelWest for max 10 sec
2022.12.11 20:59:41.886 2: DbLog LogSQLITE1 - Last database write cycle done
2022.12.11 20:59:41.887 2: DbLog LogSQLITE1 - stopping Subprocess >8567< ...
2022.12.11 20:59:41.890 2: DbLog LogSQLITE1 - Subprocess >8567< stopped
2022.12.11 20:59:41.907 2: DbLog LogDB - Last database write cycle done
2022.12.11 20:59:41.908 2: DbLog LogDB - stopping Subprocess >8564< ...
2022.12.11 20:59:41.911 2: DbLog LogDB - Subprocess >8564< stopped


Ich habe den Prozess im Modul jetzt noch etwas angepasst und ins contrib geladen.

Zitat
Grade mal die 5.5.3 probiert - die zeigt noch immer das gleiche Verhalten bei einem mysql-Fehler.

Ich glaube mit der Fehlerbehandlung komme ich langsam an den Rand des Möglichen. "Pferdefuß" ist wie das DBI den Fehler zurückgibt.
In der V5.5.4 im contrib ist die Ausgabe in das Logfile im Fehlerfall erweitert.
So richtig gefällt mir das nicht und ich denke noch darüber nach die Behandlung doch noch in unserem Sinne abzuändern.

Trotzdem die V5.5.4 bitte mal testen wegen den beiden Änderungen.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 11 Dezember 2022, 23:03:28
@SusisStrolch,

für dein Testszenario habe ich dir eine V  93_DbLog_V5.5.5_Test ins contrib geladen.
Bitte teste sie mit deinen fehlerhaften Events. Umbenennen natürlich.

Interessant wäre das Verhalten mit Attr commitMode = ac:on_ta:off sowie dem Standard basic_ta:on.

LG
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 12 Dezember 2022, 23:07:45
Ich habe die Serialisierung von JSON auf Storable umgestellt.

Das hat m.M. nach zwei wesentliche Vorteile.
JSON muss installiert werden. Es ist zwar davon auszugehen dass es bei den allermeisten Usern der Fall ist, sicher ist es wahrscheinlich nicht.
Storable ist bei aktuellem Perl 5 built-In.

Storable ist bei encode/decode signifikant schneller als JSON::(XS) -> https://github.com/trizen/perl-scripts/blob/master/Benchmarks/json_vs_storable.pl
Das sollte sich beim serialisieren/deserialisieren von größeren Datenmengen ausspielen.

Ist im contrib upgedated.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 14 Dezember 2022, 19:24:14
@SusisStrolch ... gibt es noch irgendwelche Testergebnisse mit deinem Szenario ?

Ansonsten wäre die aktuell im contrib liegende Version soweit fertig um damit life gehen zu können falls mir nicht noch etwas auf/einfällt.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: thburkhart am 14 Dezember 2022, 19:36:23
auch bei Euerm LaienJungspunt-Tester läuft alles prima :-)

nach dem Startschuss nehme ich die Zeile
attr global exclude_from_update 93_DbLog.pm

wieder raus ?

Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 14 Dezember 2022, 20:26:49
Zitat
nach dem Startschuss nehme ich die Zeile

attr global exclude_from_update 93_DbLog.pm

wieder raus ?
Ja, aber ich schreibe vorher wenn ich die neue V offiziell einchecke.
Paar Tage geben wir uns noch damit die User, die so mutig waren mitzumachen, nochmal ihre Meinung oder Hinweise abgeben können.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: Sany am 16 Dezember 2022, 09:30:56
Kurzes Feedback:
habe die 5er Version auf einem Testsystem installiert, fast alle Versionen, die Du bereitgestellt hast. Lief jedesmal völlig ohne Probleme, keinerlei Fehlermeldungen im Log. Vor 3 Tagen habe ich dann die neueste Version (5.5.6) auf mein "Produktiv"-system losgelassen, auch hier keinerlei Fehler im Log, die DB arbeitet korrekt (Daigramme haben die aktuellen daten etc.)
Da ich immer noch nicht dazu kam, mich in DBrep reinzufuchsen bin ich momentan eher Typ Sammler, die DB ist bereits 10,5GB groß geworden. Performancemäßig kann ich nichts sagen, flutscht alles mindestens so gut wie vorher.
Attribute sind so gesetzt:

ZitatDbLogType History
asyncMode 1
bulkInsert 1
colEvent 0
event-on-change-reading state
useCharfilter 1
Ich denke das wäre so richtig für alles im Sub-prozess.
Tolle Arbeit für einen geschmeidigen Übergang zur neuesten Version. Vielen Dank dafür!


Gruß


Sany
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: Frank_Huber am 16 Dezember 2022, 13:01:01
Gestern alle Instanzen auf die neue Version hochgezogen.
keine negativen Beobachtungen. alles läuft wie gewohnt.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: SusisStrolch am 16 Dezember 2022, 17:44:01
Zitat von: DS_Starter am 14 Dezember 2022, 19:24:14
@SusisStrolch ... gibt es noch irgendwelche Testergebnisse mit deinem Szenario ?

Ansonsten wäre die aktuell im contrib liegende Version soweit fertig um damit life gehen zu können falls mir nicht noch etwas auf/einfällt.
Nein - leider nicht. Hatte ein wenig Vorweihnachtstress (Releasegang 9.1. in der Firma) und deshalb keine Zeit meine Fehler zu testen.
Die Spezialversion lief nicht - da hat FHEM beim Start einen Fehler geworfen und das Modul direkt gelöscht.
Deshalb bin ich noch auf der 5.5.3 - denke aber, dass ich morgen zu einem Test mit der .6 komme.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 16 Dezember 2022, 18:49:35
@Sany, Frank_Huber ... danke für euer Feedback !

@SusisStrolch weißt du noch den Fehler ?
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: SusisStrolch am 18 Dezember 2022, 11:28:57
Nun, ich weiß zumindest wie das Problem zustande kam.
Ich hatte die .pm nach FHEM kopiert und danach ein "shutdown restart" ausgeführt.
2022.12.14 08:27:31.435 4: DbLog logdb - added event - Timestamp: 2022-12-14 08:27:31, Device: global, Type: GLOBAL, Event: SHUTDOWN, Reading: state, Value:
SHUTDOWN, Unit:
2022.12.14 08:27:31.439 0: Server shutdown
2022.12.14 08:27:31.441 4: ESPEasy Hauptzaehler: Shutdown requested
2022.12.14 08:27:36.078 4: DbLog logdb - ################################################################
2022.12.14 08:27:36.078 4: DbLog logdb - ###              start of new Logcycle                       ###
2022.12.14 08:27:36.079 4: DbLog logdb - ################################################################
...
2022.12.14 08:27:36.531 4: DbLog logdb - ################################################################
2022.12.14 08:27:36.531 4: DbLog logdb - ###              start of new Logcycle                       ###
2022.12.14 08:27:36.531 4: DbLog logdb - ################################################################
2022.12.14 08:27:36.532 4: DbLog logdb - number of events received: 1 of device: EMS_Boiler
2022.12.14 08:27:36.532 4: DbLog logdb - check Device: EMS_Boiler , Event: curFlowTemp: 64.2


Da keine Rückmeldung im Log kam habe ich in meiner grenzenlosen Geduld nach 2min einen "systemctl restart" ausgeführt.
Dec 14 08:29:22 fhem systemd[1]: Stopped FHEM Home Automation.
Dec 14 08:29:22 fhem systemd[1]: Starting FHEM Home Automation...
Dec 14 08:29:24 fhem systemd[1]: Started FHEM Home Automation.


welcher dann zu diesem Logeintrag führte:

2022.12.14 08:29:26.063 1: reload: Error:Modul 93_DbLog deactivated:

2022.12.14 08:29:28.653 1: Verbrauch.Multimedia: no I/O device
2022.12.14 08:29:28.659 1: Verbrauch.Warmwasser: no I/O device
2022.12.14 08:29:28.667 1: Verbrauch.Waschmaschine: no I/O device
2022.12.14 08:29:41.390 1: define Rep.logdb.fhem DbRep logdb: The specified DbLog-Device "logdb" doesn't exist.
2022.12.14 08:29:41.522 1: define Rep.logdb.knowhere DbRep logdb: The specified DbLog-Device "logdb" doesn't exist.

Danach war das Modul gelöscht...
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 18 Dezember 2022, 12:10:07
Zitat
2022.12.14 08:29:26.063 1: reload: Error:Modul 93_DbLog deactivated:
 
Sieht so aus, als hätte danach ein Fehler ausgegeben werden sollen der allerdings nur "leer" war.

Vllt. war der Download des Moduls nicht ok.
Naja, wahrscheinlich müssig jetzt noch darüber nachzudenken.

Zitat
Danach war das Modul gelöscht...
Ich habe deswegen im global Device das Attr autosave = 0 gesetzt.
Normalerweise deaktiviert fhem nach einem Fehler beim Start die autosave Funktion selbständig.
Vllt. klappt das manchmal nicht so wie es soll, z.B. wenn wie oben der Fehler "leer" ist.
D.h. wenn du nach einem fehlerhaften Start _nicht_ "save" drückst, bleiben die Device Konfigurationen erhalten.
Den Fehler beseitigen und fhem neu starten bringt deine Konfiguration wieder zurück.

Mit autosave = 0 habe ich die Kontrolle über mein System, geht eben ein bisschen auf Kosten des Komforts.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 18 Dezember 2022, 14:58:01
Und wie sieht es bei dir eigentlich mit der V 5.5.6 aus ?
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: erwin am 18 Dezember 2022, 19:42:34
Hi,
ich hab jetzt auch die aktuelle version auf dem produktiv-system - bisher alles Bestens!
Danke!
erwin
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: thburkhart am 18 Dezember 2022, 20:45:49
etwas offtopic:

ich habe irgendwann mal folgendes zum Datenbank-Backup definiert

[code]define at_dblog_THBDump at *04:00:00 set Report_DumpsRows dumpMySQL clientSide
attr at_dblog_THBDump alias THBDUMP 4:00
attr at_dblog_THBDump room DBLog,xTimer
#   COMMAND    set Report_DumpsRows dumpMySQL clientSide
#   DEF        *04:00:00 set Report_DumpsRows dumpMySQL clientSide
#   FUUID      61daea6a-f33f-21fb-b2e6-a7e04cc6a8d5bed2
#   NAME       at_dblog_THBDump
#   NR         46
#   PERIODIC   yes
#   RELATIVE   no
#   REP        -1
#   STATE      Next: 04:00:00
#   TIMESPEC   04:00:00
#   TRIGGERTIME 1671418800
#   TRIGGERTIME_FMT 2022-12-19 04:00:00
#   TYPE       at
#   READINGS:
#     2022-12-18 20:32:48   state           Next: 04:00:00
#
setstate at_dblog_THBDump Next: 04:00:00
setstate at_dblog_THBDump 2022-12-18 20:32:48 state Next: 04:00:00

[/code]


ist das soweit korrekt ? auch das unspezifische "clientside"

Fehlermeldung bekomme ich nicht direkt; weiß aber auch nicht, wohin das backup geschrieben wird.

bitte um Hilfe

lg

Thomas
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 18 Dezember 2022, 23:08:47
Hallo Thomas,

das ist ein DbRep-Thema und passt nicht hierher.
Der Aufruf ist erstmal ok, aber mehr ist dazu nicht zu sagen zumal das DbRep-Device nicht dargestellt ist.

Das können wir uns gerne anschauen, aber bitte nicht hier in diesem Thread, sondern in "Sonstiges".
Dort gibt es auch einen DbRep-Thread, oder ein neues Thema öffnen.

LG,
Heiko
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: SusisStrolch am 19 Dezember 2022, 15:54:43
Zitat von: DS_Starter am 18 Dezember 2022, 14:58:01
Und wie sieht es bei dir eigentlich mit der V 5.5.6 aus ?
Bin ich leider noch nicht dazu gekommen. Aber ich denke das ich bis morgen etwas dazu sagen kann.

Edit: Ich hatte die 5.5.6 doch schon anscheinend am 17. eingespielt - wußte ich nicht mehr... :(
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: SusisStrolch am 19 Dezember 2022, 19:47:26
So - Zwischenstand 5.5.6
Meine Synology führt Sa/So einen Hyperbackup aus. Dabei wird MariaDB heruntergefahren.
Als Ergebnis hatte ich einige Cache-Files erhalten. Super!
Was mir sonst so auffiel:
- das importierte Cache-File wird nicht (mehr) umbenannt
- mysql Fehler führen noch immer zum Verlust des MemCache
  Hierbei sind es nicht nur die falschen UTF-8, sondern auch so Dinge wie "cache buffer overflow" auf der DB-Seite
  (der default so um die 16MB groß ist und relativ leicht überschritten werden kann
   wenn es aus techn. Gründen (Backup) mal etwas größere Cache-Files gibt)
- werden zwei Imports (oder zwei aufeinanderfolgende Transaktionen) ausgelöst ohne das die Erste beendet ist
  so werden keine Transaktionen mehr an die DB gesendet - anscheinend wird dann das Ende der ersten Transaktion nicht erkannt.
  Zumindest findet sich im Log wiederkehrend der Eintrag
4: DbLog logdb - xx of xx events inserted into table history
4: DbLog logdb - commit inserted data table history
4: DbLog logdb - begin transaction

  Cache-Files werden jedoch nach Überschreiten des Limits geschrieben.

Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: SusisStrolch am 19 Dezember 2022, 19:59:45
Zitat von: SusisStrolch am 19 Dezember 2022, 19:47:26
So - Zwischenstand 5.5.6
Nachtrag: im Falle der blockierten Transaktion helfen weder "reopen" noch "exportCache purgeCache".
Der Cache und derMemoryCache werden zwar anscheinend gepurged,
2022.12.19 19:51:13.716 4: DbLog logdb - MemCache contains 45 entries to process
2022.12.19 19:51:13.716 4: DbLog logdb - DbLogType is: Current/History
2022.12.19 19:51:13.717 5: DbLog logdb - MemCache contains:  1 -> 2022-12-19 19:50:45|ESPEasy_pondctrl_Wasser|ESPEASY|Temperature: 0.7|Temperature|0.7|
2022.12.19 19:51:13.717 5: DbLog logdb - MemCache contains:  2 -> 2022-12-19 19:50:49|EZ.Fenster2|MQTT2_DEVICE|Wifi_Channel: 7|Wifi_Channel|7|
...
2022.12.19 19:51:13.728 5: DbLog logdb - MemCache contains:  45 -> 2022-12-19 19:51:11|EMS_Boiler|MQTT2_DEVICE|outdoorTemp: 8.8|outdoorTemp|8.8|
2022.12.19 19:51:13.869 5: DbLog logdb - DbLogType is: Current/History
2022.12.19 19:51:13.870 4: DbLog logdb - AutoCommit mode: OFF, Transaction mode: ON
2022.12.19 19:51:13.871 4: DbLog logdb - Insert mode: Array
2022.12.19 19:51:13.881 4: DbLog logdb - Primary Key used in history: none
2022.12.19 19:51:13.881 4: DbLog logdb - Primary Key used in current: DEVICE,READING
2022.12.19 19:51:13.882 5: DbLog logdb - processing 1 -> TS: 2022-12-19 19:50:45, Dev: ESPEasy_pondctrl_Wasser, Type: ESPEASY, Event: Temperature: 0.7, Reading: Temperature, Val: 0.7, Unit:
2022.12.19 19:51:13.882 5: DbLog logdb - processing 2 -> TS: 2022-12-19 19:50:49, Dev: EZ.Fenster2, Type: MQTT2_DEVICE, Event: Wifi_Channel: 7, Reading: Wifi_Channel, Val: 7, Unit:
...
2022.12.19 19:51:13.894 5: DbLog logdb - processing 44 -> TS: 2022-12-19 19:51:09, Dev: Verbrauch.Warmwasser, Type: EC3000, Event: power: 318.323207283562, Reading: power, Val: 318.323207283562, Unit:
2022.12.19 19:51:13.894 5: DbLog logdb - processing 45 -> TS: 2022-12-19 19:51:11, Dev: EMS_Boiler, Type: MQTT2_DEVICE, Event: outdoorTemp: 8.8, Reading: outdoorTemp, Val: 8.8, Unit:
2022.12.19 19:51:13.932 4: DbLog logdb - 45 of 45 events inserted into table history
2022.12.19 19:51:14.072 4: DbLog logdb - commit inserted data table history
2022.12.19 19:51:14.076 4: DbLog logdb - begin transaction
2022.12.19 19:51:14.119 4: DbLog logdb - ################################################################
2022.12.19 19:51:14.120 4: DbLog logdb - ###              start of new Logcycle                       ###
2022.12.19 19:51:14.120 4: DbLog logdb - ################################################################


jedoch fährt die nächste Transaktion an die Wand (MemCache war doch nicht leer / commit ist nicht erfolgt):
2022.12.19 19:51:43.721 4: DbLog logdb - ################################################################
2022.12.19 19:51:43.722 4: DbLog logdb - ###      New database processing cycle - SBP asynchronous    ###
2022.12.19 19:51:43.722 4: DbLog logdb - ################################################################
2022.12.19 19:51:43.724 4: DbLog logdb - MemCache contains 21 entries to process
2022.12.19 19:51:43.724 4: DbLog logdb - DbLogType is: Current/History
2022.12.19 19:51:43.725 5: DbLog logdb - MemCache contains:  46 -> 2022-12-19 19:51:14|WZ.LCG.Environment|LACROSSE|temperature: 19.5|temperature|19.5|
2022.12.19 19:51:43.725 5: DbLog logdb - MemCache contains:  47 -> 2022-12-19 19:51:14|WZ.LCG.Environment|LACROSSE|humidity: 38.100344866095|humidity|38.100344866095|%
...
2022.12.19 19:51:43.730 5: DbLog logdb - MemCache contains:  66 -> 2022-12-19 19:51:39|EMS_Boiler|MQTT2_DEVICE|outdoorTemp: 8.8|outdoorTemp|8.8|
2022.12.19 19:51:43.957 5: DbLog logdb - DbLogType is: Current/History
2022.12.19 19:51:43.958 4: DbLog logdb - AutoCommit mode: OFF, Transaction mode: ON
2022.12.19 19:51:43.958 4: DbLog logdb - Insert mode: Array
2022.12.19 19:51:43.968 4: DbLog logdb - Primary Key used in history: none
2022.12.19 19:51:43.968 4: DbLog logdb - Primary Key used in current: DEVICE,READING
2022.12.19 19:51:43.969 5: DbLog logdb - processing 46 -> TS: 2022-12-19 19:51:14, Dev: WZ.LCG.Environment, Type: LACROSSE, Event: temperature: 19.5, Reading: temperature, Val: 19.5, Unit:
...
2022.12.19 19:51:43.974 5: DbLog logdb - processing 66 -> TS: 2022-12-19 19:51:39, Dev: EMS_Boiler, Type: MQTT2_DEVICE, Event: outdoorTemp: 8.8, Reading: outdoorTemp, Val: 8.8, Unit:
2022.12.19 19:51:43.987 4: DbLog logdb - 21 of 21 events inserted into table history
2022.12.19 19:51:45.344 4: DbLog logdb - commit inserted data table history
2022.12.19 19:51:45.347 4: DbLog logdb - begin transaction

Einzig "shutdown restart" hilft an der Stelle...
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 19 Dezember 2022, 23:33:31
Zitat
Was mir sonst so auffiel:
- das importierte Cache-File wird nicht (mehr) umbenannt

Das hatte ich doch tatsächlich vergessen zu implementieren.
Ist jetzt nachgeholt.

Zitat
- mysql Fehler führen noch immer zum Verlust des MemCache

Das habe ich nochmal intensiv geprüft und die Fehlerbehandlung verbessert.
Im SQL Fehlerfall werden die Daten an den Cache zurück gegeben wenn ta_on ist (default).
Ausschnitt log:


2022.12.19 23:22:28.245 4: DbLog LogDB1 - ################################################################
2022.12.19 23:22:28.246 4: DbLog LogDB1 - ###      New database processing cycle - SBP asynchronous    ###
2022.12.19 23:22:28.246 4: DbLog LogDB1 - ################################################################
2022.12.19 23:22:28.247 4: DbLog LogDB1 - MemCache contains 379 entries to process
2022.12.19 23:22:28.247 4: DbLog LogDB1 - DbLogType is: Current/History
2022.12.19 23:22:28.264 4: DbLog LogDB1 - Operation: log_asynch
2022.12.19 23:22:28.265 4: DbLog LogDB1 - AutoCommit: ON, Transaction: ON
2022.12.19 23:22:28.265 4: DbLog LogDB1 - Insert mode: Array
2022.12.19 23:22:28.270 4: DbLog LogDB1 - begin transaction
2022.12.19 23:22:28.335 2: DbLog LogDB1 - Error table fhemtest1.history - DBD::mysql::st execute_array failed: executing 379 generated 37 errors at ./FHEM/93_DbLog.pm line 2932.

2022.12.19 23:22:28.343 4: DbLog LogDB1 - transaction rollback table fhemtest1.history
2022.12.19 23:22:28.344 4: DbLog LogDB1 - Transaction is switched on. Transferred data is returned to the cache.
2022.12.19 23:22:28.344 2: DbLog LogDB1 - WARNING - only 0 of 379 events inserted into table fhemtest1.history
2022.12.19 23:22:28.347 4: DbLog LogDB1 - begin transaction
2022.12.19 23:22:28.421 4: DbLog LogDB1 - 379 of 379 events updated in table fhemtest1.current
2022.12.19 23:22:28.424 4: DbLog LogDB1 - commit inserted data table fhemtest1.current


Zitat
- werden zwei Imports (oder zwei aufeinanderfolgende Transaktionen) ausgelöst ohne das die Erste beendet ist
  so werden keine Transaktionen mehr an die DB gesendet - anscheinend wird dann das Ende der ersten Transaktion nicht erkannt.
Das konnte nur in einem Fehlerfall vorkommen, habe ich korrigiert.

Zitat
Nachtrag: im Falle der blockierten Transaktion helfen weder "reopen" noch "exportCache purgeCache".
set ... stopSubProcess  hätte geholfen.
Aber das sollte sich erledigt haben.

Version 5.6.7 liegt im contrib.

LG
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: SusisStrolch am 20 Dezember 2022, 08:44:27
Wow!
Super - werde ich im Laufe des Tages direkt testen!

Edit: ich werde mal versuchen den "set ... stopSubProcess" in meine fhem.service zu dübeln...
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 20 Dezember 2022, 12:56:30
Zitat
Edit: ich werde mal versuchen den "set ... stopSubProcess" in meine fhem.service zu dübeln...
Denke daran dass du den Vorteil des geringen Speicherverbrauchs verlierst wenn du "im Betrieb" den SubProcess neu
startest. Das sollte man nur machen wenn es sein muß (was normalerweise nicht der Fall sein wird).
Deswegen realisieren wir ja den zeitigen fork bei FHEM Start bevor alles fertig geladen ist.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 20 Dezember 2022, 14:55:46
Im Bulk-Insert Mode bringt das Modul im Fehlerfall jetzt detaillierte Informationen des SQL-Problems.
Hier ein Beispiel für "Duplicate entry" wenn ein primary Key gesetzt ist, aber durch das Attr noSupportPK=1 der Support deaktiviert wurde:


2022.12.20 14:47:40.561 2: DbLog LogDB1 - Error table fhemtest1.history - DBD::mysql::st execute failed: Duplicate entry '2022-12-20 14:47:40-Dum.Energy-T' for key 'PRIMARY' [for Statement "INSERT INTO fhemtest1.history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES ('2022-12-20 14:47:40','Dum.Energy','DUMMY','','T','578.8',''),('2022-12-20 14:47:40','Dum.Energy','DUMMY','','T','578.8',''),('2022-12-20 14:47:40','MySTP_5000','SMAINVERTER','','etotal','50244.169',''),('2022-12-20 14:47:40','MySTP_5000','SMAINVERTER','','etoday','0.865',''),('2022-12-20 14:47:40','MySTP_5000','SMAINVERTER','','total_pac','0.071',''),('2022-12-20 14:47:40','MySTP_5000','SMAINVERTER','','state','0.071','')"] at ./FHEM/93_DbLog.pm line 2741.

2022.12.20 14:47:40.562 2: DbLog LogDB1 - Transaction is switched off. Transferred data is lost.


Transaction: OFF -> Transaction is switched off. Transferred data is lost.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 20 Dezember 2022, 16:00:58
Im Array Insert Modus werden nun auch die Datensätze ausgeschrieben die wegen irgendwelchen Problemen nicht gespeichert werden konnten.
Leider ist das vom Treiber abhängig was zurück kommt und klappt nicht bei jeder DB gleich.
Hier ein Beispiel mit SQLite, MariaDB bringt es nicht so schön raus.


2022.12.20 15:57:37.408 4: DbLog LogSQLITE1 - ################################################################
2022.12.20 15:57:37.408 4: DbLog LogSQLITE1 - ###      New database processing cycle - SBP asynchronous    ###
2022.12.20 15:57:37.409 4: DbLog LogSQLITE1 - ################################################################
2022.12.20 15:57:37.409 4: DbLog LogSQLITE1 - MemCache contains 70 entries to process
2022.12.20 15:57:37.410 4: DbLog LogSQLITE1 - DbLogType is: Current/History
2022.12.20 15:57:37.670 3: DbLog LogSQLITE1 - DB connection parameters are stored in SubProcess
2022.12.20 15:57:37.684 3: DbLog LogSQLITE1 - SubProcess connected to /opt/fhem1.db
2022.12.20 15:57:37.685 4: DbLog LogSQLITE1 - Operation: log_asynch
2022.12.20 15:57:37.686 4: DbLog LogSQLITE1 - AutoCommit: ON, Transaction: ON
2022.12.20 15:57:37.686 4: DbLog LogSQLITE1 - Insert mode: Array
2022.12.20 15:57:37.690 4: DbLog LogSQLITE1 - begin Transaction
2022.12.20 15:57:37.697 4: DbLog LogSQLITE1 - commit inserted data table history
2022.12.20 15:57:37.698 4: DbLog LogSQLITE1 - Insert into history rejected - TS: 2022-12-20 15:55:44, Device: Dum.Energy, Reading: T
2022.12.20 15:57:37.698 4: DbLog LogSQLITE1 - Insert into history rejected - TS: 2022-12-20 15:55:44, Device: Dum.Energy, Reading: T
2022.12.20 15:57:37.699 4: DbLog LogSQLITE1 - Insert into history rejected - TS: 2022-12-20 15:55:44, Device: Dum.Energy, Reading: T
2022.12.20 15:57:37.699 4: DbLog LogSQLITE1 - Insert into history rejected - TS: 2022-12-20 15:55:44, Device: Dum.Energy, Reading: T
2022.12.20 15:57:37.700 4: DbLog LogSQLITE1 - Insert into history rejected - TS: 2022-12-20 15:55:44, Device: Dum.Energy, Reading: T
2022.12.20 15:57:37.700 4: DbLog LogSQLITE1 - Insert into history rejected - TS: 2022-12-20 15:56:45, Device: Dum.Energy, Reading: T
2022.12.20 15:57:37.700 4: DbLog LogSQLITE1 - Insert into history rejected - TS: 2022-12-20 15:56:45, Device: Dum.Energy, Reading: T
2022.12.20 15:57:37.701 4: DbLog LogSQLITE1 - Insert into history rejected - TS: 2022-12-20 15:56:45, Device: Dum.Energy, Reading: T
2022.12.20 15:57:37.701 4: DbLog LogSQLITE1 - Insert into history rejected - TS: 2022-12-20 15:56:45, Device: Dum.Energy, Reading: T
2022.12.20 15:57:37.702 4: DbLog LogSQLITE1 - Insert into history rejected - TS: 2022-12-20 15:56:45, Device: Dum.Energy, Reading: T
2022.12.20 15:57:37.702 2: DbLog LogSQLITE1 - WARNING - only 60 of 70 events inserted into table history
2022.12.20 15:57:37.702 2: DbLog LogSQLITE1 - The following data was not saved due to problems that may have been displayed previously:
2022.12.20 15:57:37.703 2: DbLog LogSQLITE1 -  1 -> 2022-12-20 15:55:44|Dum.Energy|DUMMY|T: 650.4|T|650.4|
2022.12.20 15:57:37.703 2: DbLog LogSQLITE1 -  2 -> 2022-12-20 15:55:44|Dum.Energy|DUMMY|T: 650.4|T|650.4|
2022.12.20 15:57:37.704 2: DbLog LogSQLITE1 -  3 -> 2022-12-20 15:55:44|Dum.Energy|DUMMY|T: 892.7|T|892.7|
2022.12.20 15:57:37.704 2: DbLog LogSQLITE1 -  4 -> 2022-12-20 15:55:44|Dum.Energy|DUMMY|T: 892.7|T|892.7|
2022.12.20 15:57:37.704 2: DbLog LogSQLITE1 -  5 -> 2022-12-20 15:55:44|Dum.Energy|DUMMY|T: 892.7|T|892.7|
2022.12.20 15:57:37.705 2: DbLog LogSQLITE1 -  6 -> 2022-12-20 15:56:45|Dum.Energy|DUMMY|T: 892.7|T|892.7|
2022.12.20 15:57:37.705 2: DbLog LogSQLITE1 -  7 -> 2022-12-20 15:56:45|Dum.Energy|DUMMY|T: 892.7|T|892.7|
2022.12.20 15:57:37.705 2: DbLog LogSQLITE1 -  8 -> 2022-12-20 15:56:45|Dum.Energy|DUMMY|T: 716.3|T|716.3|
2022.12.20 15:57:37.706 2: DbLog LogSQLITE1 -  9 -> 2022-12-20 15:56:45|Dum.Energy|DUMMY|T: 716.3|T|716.3|
2022.12.20 15:57:37.706 2: DbLog LogSQLITE1 -  10 -> 2022-12-20 15:56:45|Dum.Energy|DUMMY|T: 716.3|T|716.3|
2022.12.20 15:57:37.707 4: DbLog LogSQLITE1 - begin Transaction
2022.12.20 15:57:37.728 4: DbLog LogSQLITE1 - 70 of 70 events updated in table current
2022.12.20 15:57:37.729 4: DbLog LogSQLITE1 - commit inserted data table current
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: thburkhart am 20 Dezember 2022, 18:14:03
jetzt weiß ich nicht, ob das ein DbLog-Problem ist oder das Problem vor meinem Pc sitzt..

das ist mein dblog DEF:

define dblog_THB DbLog ./configDB.conf .*:(\
temperature|power|humidity|\
va_temperature|va_humidity|humidity_value|\
desiredTemperature|valveposition|\
/heatSources/systemPressure|\
/heatSources/applianceSupplyTemperature|\
/system/sensors/temperatures/outdoor_t1|\
/system/sensors/temperatures/supply_t1|\
/system/sensors/temperatures/supply_t1_setpoint|\
/dhwCircuits/dhw1/actualTemp|\
/dhwCircuits/dhw1/currentSetpoint|\
/heatSources/systemPressure|\
oilfox_metering_liters).*
attr dblog_THB DbLogType Current/History
attr dblog_THB alias dblog_THB
attr dblog_THB asyncMode 1
attr dblog_THB bulkInsert 0
attr dblog_THB cacheLimit 5000
attr dblog_THB commitMode ac:on_ta:off
attr dblog_THB event-min-interval state:600
attr dblog_THB room DBLog
attr dblog_THB syncInterval 30
attr dblog_THB useCharfilter 1
attr dblog_THB verbose 2
#   COLUMNS    field length used for Device: 64, Type: 64, Event: 512, Reading: 64, Value: 128, Unit: 32
#   CONFIGURATION ./configDB.conf
#   DEF        ./configDB.conf .*:(
#temperature|power|humidity|
#va_temperature|va_humidity|humidity_value|
#desiredTemperature|valveposition|
#/heatSources/systemPressure|
#/heatSources/applianceSupplyTemperature|
#/system/sensors/temperatures/outdoor_t1|
#/system/sensors/temperatures/supply_t1|
#/system/sensors/temperatures/supply_t1_setpoint|
#/dhwCircuits/dhw1/actualTemp|
#/dhwCircuits/dhw1/currentSetpoint|
#/heatSources/systemPressure|
#oilfox_metering_liters).*
#   FD         5
#   FUUID      6395a74c-f33f-fd5f-bf68-e3ca20a9e2cee3df
#   FVERSION   93_DbLog.pm:v5.5.3-s26750/2022-12-10
#   MODE       asynchronous
#   MODEL      MYSQL
#   NAME       dblog_THB
#   NR         2
#   NTFY_ORDER 50-dblog_THB
#   PID        18037
#   REGEXP     .*:(
#temperature|power|humidity|
#va_temperature|va_humidity|humidity_value|
#desiredTemperature|valveposition|
#/heatSources/systemPressure|
#/heatSources/applianceSupplyTemperature|
#/system/sensors/temperatures/outdoor_t1|
#/system/sensors/temperatures/supply_t1|
#/system/sensors/temperatures/supply_t1_setpoint|
#/dhwCircuits/dhw1/actualTemp|
#/dhwCircuits/dhw1/currentSetpoint|
#/heatSources/systemPressure|
#oilfox_metering_liters).*
#   SBP_PID    18038
#   SBP_STATE  running
#   STATE      connected
#   TYPE       DbLog
#   UTF8       0
#   dbconn     mysql:database=fhem;host=localhost;port=3306
#   dbuser     fhemuser
#   eventCount 713
#   HELPER:
#     COLSET     1
#     DEVICECOL  64
#     EVENTCOL   512
#     OLDSTATE   connected
#     PACKAGE    main
#     READINGCOL 64
#     TC         current
#     TH         history
#     TYPECOL    64
#     UNITCOL    32
#     VALUECOL   128
#     VERSION    5.5.3
#   OLDREADINGS:
#   READINGS:
#     2022-12-20 17:57:41   CacheOverflowLastNum 0
#     2022-12-20 10:17:18   CacheOverflowLastState normal
#     2022-12-20 17:57:42   CacheUsage      1
#     2022-12-20 17:57:41   NextSync        2022-12-20 17:58:11 or when CacheUsage 5000 is reached
#     2022-12-20 17:57:41   state           connected
#
setstate dblog_THB connected
setstate dblog_THB 2022-12-20 17:57:41 CacheOverflowLastNum 0
setstate dblog_THB 2022-12-20 10:17:18 CacheOverflowLastState normal
setstate dblog_THB 2022-12-20 17:57:42 CacheUsage 1
setstate dblog_THB 2022-12-20 17:57:41 NextSync 2022-12-20 17:58:11 or when CacheUsage 5000 is reached
setstate dblog_THB 2022-12-20 17:57:41 state connected


dabei werden alle reading in die Datenbank geschrieben bis auf die km200 / Buderus readings:
#/heatSources/systemPressure|
#/heatSources/applianceSupplyTemperature|
#/system/sensors/temperatures/outdoor_t1|
#/system/sensors/temperatures/supply_t1|
#/system/sensors/temperatures/supply_t1_setpoint|
#/dhwCircuits/dhw1/actualTemp|
#/dhwCircuits/dhw1/currentSetpoint|
#/heatSources/systemPressure|

Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 20 Dezember 2022, 18:34:42
Hallo Thomas,

kannst du deinen Beitrag bitte nochmal editieren (code Tags) .... man kann das nicht wirklich gescheit lesen.
Danke.

Beim Überfliegen bin ich der Ansicht, dass du die Slash der Buderus Readings (ungünstige Gestaltung für das Logging) escapen musst, d.h. "\/heatSources" statt "/heatSources" schreiben. Es wird als regulärer Ausdruck ausgewertet.


Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: thburkhart am 20 Dezember 2022, 20:39:24
habe mal entsprechend umgestellt und auch die backslashes zur Zeilentrennung herausgenommen ...

[code]define dblog_THB DbLog ./configDB.conf .*:(temperature|power|humidity|va_temperature|va_humidity|humidity_value|desiredTemperature|valveposition|\/heatSources/systemPressure|\/heatSources/applianceSupplyTemperature|\/system/sensors/temperatures/outdoor_t1|\/system/sensors/temperatures/supply_t1|\/system/sensors/temperatures/supply_t1_setpoint|\
\/dhwCircuits/dhw1/actualTemp|\
\/dhwCircuits/dhw1/currentSetpoint|\
oilfox_metering_liters).*
attr dblog_THB DbLogType Current/History
attr dblog_THB alias dblog_THB
attr dblog_THB asyncMode 1
attr dblog_THB bulkInsert 0
attr dblog_THB cacheLimit 5000
attr dblog_THB commitMode ac:on_ta:off
attr dblog_THB event-min-interval state:600
attr dblog_THB room DBLog
attr dblog_THB syncInterval 30
attr dblog_THB useCharfilter 1
attr dblog_THB verbose 2
#   COLUMNS    field length used for Device: 64, Type: 64, Event: 512, Reading: 64, Value: 128, Unit: 32
#   CONFIGURATION ./configDB.conf
#   DEF        ./configDB.conf .*:(temperature|power|humidity|va_temperature|va_humidity|humidity_value|desiredTemperature|valveposition|\/heatSources/systemPressure|\/heatSources/applianceSupplyTemperature|\/system/sensors/temperatures/outdoor_t1|\/system/sensors/temperatures/supply_t1|\/system/sensors/temperatures/supply_t1_setpoint|
#\/dhwCircuits/dhw1/actualTemp|
#\/dhwCircuits/dhw1/currentSetpoint|
#oilfox_metering_liters).*
#   FD         5
#   FUUID      6395a74c-f33f-fd5f-bf68-e3ca20a9e2cee3df
#   FVERSION   93_DbLog.pm:v5.5.3-s26750/2022-12-10
#   MODE       synchronous
#   MODEL      MYSQL
#   NAME       dblog_THB
#   NR         2
#   NTFY_ORDER 50-dblog_THB
#   PID        18037
#   REGEXP     .*:(temperature|power|humidity|va_temperature|va_humidity|humidity_value|desiredTemperature|valveposition|\/heatSources/systemPressure|\/heatSources/applianceSupplyTemperature|\/system/sensors/temperatures/outdoor_t1|\/system/sensors/temperatures/supply_t1|\/system/sensors/temperatures/supply_t1_setpoint|
#\/dhwCircuits/dhw1/actualTemp|
#\/dhwCircuits/dhw1/currentSetpoint|
#oilfox_metering_liters).*
#   SBP_PID    18038
#   SBP_STATE  running
#   STATE      connected
#   TYPE       DbLog
#   UTF8       0
#   dbconn     mysql:database=fhem;host=localhost;port=3306
#   dbuser     fhemuser
#   eventCount 1031
#   HELPER:
#     COLSET     1
#     DEVICECOL  64
#     EVENTCOL   512
#     OLDSTATE   connected
#     PACKAGE    main
#     READINGCOL 64
#     TC         current
#     TH         history
#     TYPECOL    64
#     UNITCOL    32
#     VALUECOL   128
#     VERSION    5.5.3
#   OLDREADINGS:
#   READINGS:
#     2022-12-20 20:35:58   CacheOverflowLastNum 0
#     2022-12-20 10:17:18   CacheOverflowLastState normal
#     2022-12-20 20:36:23   CacheUsage      9
#     2022-12-20 20:35:58   NextSync        2022-12-20 20:36:28 or when CacheUsage 5000 is reached
#     2022-12-20 20:35:58   state           connected
#
setstate dblog_THB connected
setstate dblog_THB 2022-12-20 20:35:58 CacheOverflowLastNum 0
setstate dblog_THB 2022-12-20 10:17:18 CacheOverflowLastState normal
setstate dblog_THB 2022-12-20 20:36:23 CacheUsage 9
setstate dblog_THB 2022-12-20 20:35:58 NextSync 2022-12-20 20:36:28 or when CacheUsage 5000 is reached
setstate dblog_THB 2022-12-20 20:35:58 state connected

[/code]

will aber immer noch nicht schreiben

früher hatte ich einfach alles geloggt und nun auf explizite Angabe umgestellt

was mache ich falsch?
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 20 Dezember 2022, 20:54:47
Zum Beispiel dieses

\/system/sensors/temperatures/outdoor_t1

wäre mit Slash Escapes

  \/system\/sensors\/temperatures\/outdoor_t1

Aber eigentlich reicht es doch aus , wenn du nur

   outdoor_t1

verwenden würdest. Dann matcht das Reading ja auch.
Es gibt Regextester wie z.B. https://regex101.com. Dort kannst du deine Regexmuster gegen einen auszuwertenden String testen und damit deine Kombination zusammenstellen.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: thburkhart am 20 Dezember 2022, 21:16:47
!!!!!

in die db wird geschrieben :-)

aber in den GPLOTS kommts nicht an...

# Created by FHEM/98_SVG.pm, 2021-05-01 21:46:15
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title '<TL> <L1>'
set ytics
set y2tics
set grid y2tics
set ylabel "Temperatur in °C / Modulation in %"
set y2label "Aussen-Temperatur in °C"
set yrange [20:105]
set y2range [-20:40]

#dblog_THB <SPEC1>:/system/sensors/temperatures/outdoor_t1::
#dblog_THB <SPEC1>:/system/sensors/temperatures/supply_t1::
#dblog_THB <SPEC1>:/system/sensors/temperatures/supply_t1_setpoint::
#dblog_THB <SPEC1>:/dhwCircuits/dhw1/actualTemp::
#dblog_THB <SPEC1>:/dhwCircuits/dhw1/currentSetpoint::

plot "<IN>" using 1:2 axes x1y2 title 'Aussentemperatur' ls l3 lw 2 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Vorlauftemperatur' ls l0 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Vorlauftemperatur Set' ls l1 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Warmwasser' ls l2fill lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Warmwasser Set' ls l6 lw 1 with lines



wie muss ich hier anpassen ?
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 20 Dezember 2022, 21:32:54
Am Besten das Thema in einem SVG Forum vertiefen.
Wir müssen mal ein bisschen die Thread-Hygiene beachten, sonst ufert es aus, kommen vom 100sten ins 1000ste und hier geht es um die DbLog-Umstellung auf V5.  ;)
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: thburkhart am 20 Dezember 2022, 21:49:32
stimmt ;-)

vielen, vielen Dank!
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: thburkhart am 21 Dezember 2022, 18:28:50
nun komme ich doch noch mal wegen der Db-selbst:

ich hatte ja deinem Hinweis folgend den Def so geschrieben:

define dblog_THB DbLog ./configDB.conf .*:(temperature|power|humidity|va_temperature|va_humidity|humidity_value|desiredTemperature|valveposition|systemPressure|CHpumpModulation|actualDHWPower|actualCHPower|flameStatus|applianceSupplyTemperature|actualSupplyTemperature|supplyTemperatureSetpoint|outdoor_t1|supply_t1|supply_t1_setpoint|actualTemp|currentSetpoint|charge|chargeDuration|setpoint|singleChargeSetpoint|workingTime|oilfox_metering_liters).*


dann hat das System auch schön die readings supplyTemperatureSetpoint|outdoor_t1|supply_t1|supply_t1_setpoint|actualTemp|currentSetpoint|charge|chargeDuration in die Datenbank geschrieben und dann aber aufgehört
usw.

2022-12-20 20:43:26
Buderus
KM200
/heatSources/applianceSupplyTemperature: 55.1
/heatSources/applianceSupplyTemperature
55.1
C
2022-12-20 21:15:25
Buderus
KM200
/heatSources/applianceSupplyTemperature: 55.4
/heatSources/applianceSupplyTemperature
55.4
C
2022-12-20 21:06:08
Buderus
KM200
/heatSources/applianceSupplyTemperature: 55.7
/heatSources/applianceSupplyTemperature
55.7
C
2022-12-20 21:13:15
Buderus
KM200
/heatSources/applianceSupplyTemperature: 57.4
/heatSources/applianceSupplyTemperature
57.4
C
2022-12-20 20:41:18
Buderus
KM200
/heatSources/applianceSupplyTemperature: 57.7
/heatSources/applianceSupplyTemperature
57.7
C
2022-12-20 20:37:23
Buderus
KM200
/heatSources/applianceSupplyTemperature: 58.5
/heatSources/applianceSupplyTemperature
58.5
C
2022-12-20 21:11:55
Buderus
KM200
/heatSources/applianceSupplyTemperature: 58.9
/heatSources/applianceSupplyTemperature
58.9
C
2022-12-20 21:07:59
Buderus
KM200
/heatSources/applianceSupplyTemperature: 59.7
/heatSources/applianceSupplyTemperature
59.7
C
2022-12-20 20:39:17
Buderus
KM200
/heatSources/applianceSupplyTemperature: 60.4
/heatSources/applianceSupplyTemperature
60.4
C
2022-12-20 21:09:50
Buderus
KM200
/heatSources/applianceSupplyTemperature: 61.4
/heatSources/applianceSupplyTemperature
61.4
C
2022-12-20 20:33:25
Buderus
KM200
/heatSources/systemPressure: 25.5
/heatSources/systemPressure
25.5
bar
2022-12-20 20:35:35
Buderus
KM200
/heatSources/systemPressure: 25.5
/heatSources/systemPressure
25.5
bar
2022-12-20 20:37:27
Buderus
KM200
/heatSources/systemPressure: 25.5
/heatSources/systemPressure
25.5
bar
2022-12-20 20:39:21
Buderus
KM200
/heatSources/systemPressure: 25.5
/heatSources/systemPressure
25.5
bar
2022-12-20 20:41:22
Buderus
KM200
/heatSources/systemPressure: 25.5
/heatSources/systemPressure
25.5
bar
2022-12-20 20:44:35
Buderus
KM200
/heatSources/systemPressure: 25.5
/heatSources/systemPressure
25.5
bar
2022-12-20 20:46:38
Buderus
KM200
/heatSources/systemPressure: 25.5
/heatSources/systemPressure
25.5
bar
2022-12-20 20:48:31
Buderus
KM200
/heatSources/systemPressure: 25.5
/heatSources/systemPressure
25.5
bar
2022-12-20 20:50:45
Buderus
KM200
/heatSources/systemPressure: 25.5
/heatSources/systemPressure
25.5
bar
2022-12-20 20:52:36
Buderus
KM200
/heatSources/systemPressure: 25.5
/heatSources/systemPressure
25.5
bar
2022-12-20 20:54:28
Buderus
KM200
/heatSources/systemPressure: 25.5
/heatSources/systemPressure
25.5
bar
2022-12-20 20:56:25
Buderus
KM200
/heatSources/systemPressure: 25.5
/heatSources/systemPressure
25.5
bar
2022-12-20 20:58:16
Buderus
KM200
/heatSources/systemPressure: 25.5
/heatSources/systemPressure
25.5
bar
2022-12-20 21:00:38
Buderus
KM200
/heatSources/systemPressure: 25.5
/heatSources/systemPressure
25.5
bar
2022-12-20 21:02:30
Buderus
KM200
/heatSources/systemPressure: 25.5
/heatSources/systemPressure
25.5
bar
2022-12-20 21:04:21
Buderus
KM200
/heatSources/systemPressure: 25.5
/heatSources/systemPressure
25.5
bar
2022-12-20 21:06:12
Buderus
KM200
/heatSources/systemPressure: 25.5
/heatSources/systemPressure
25.5
bar
2022-12-20 21:08:03
Buderus
KM200
/heatSources/systemPressure: 25.5
/heatSources/systemPressure
25.5
bar
2022-12-20 21:09:55
Buderus
KM200
/heatSources/systemPressure: 25.5
/heatSources/systemPressure
25.5
bar
2022-12-20 21:11:59
Buderus
KM200
/heatSources/systemPressure: 25.5
/heatSources/systemPressure
25.5
bar
2022-12-20 21:13:33
Buderus
KM200
/heatSources/systemPressure: 25.5
/heatSources/systemPressure
25.5
bar
2022-12-20 21:15:29
Buderus
KM200
/heatSources/systemPressure: 25.5
/heatSources/systemPressure
25.5
bar
2022-12-20 21:17:23
Buderus
KM200
/heatSources/systemPressure: 25.5
/heatSources/systemPressure
25.5
bar
2022-12-20 21:19:14
Buderus
KM200
/heatSources/systemPressure: 25.5
/heatSources/systemPressure
25.5
bar

die zugehörige DbLog DEF sieht so aus:
[code]define dblog_THB DbLog ./configDB.conf .*:(temperature|power|humidity|va_temperature|va_humidity|humidity_value|desiredTemperature|valveposition|systemPressure|CHpumpModulation|actualDHWPower|actualCHPower|flameStatus|applianceSupplyTemperature|actualSupplyTemperature|supplyTemperatureSetpoint|outdoor_t1|supply_t1|supply_t1_setpoint|actualTemp|currentSetpoint|charge|chargeDuration|setpoint|singleChargeSetpoint|workingTime|oilfox_metering_liters).*
attr dblog_THB DbLogExclude state
attr dblog_THB DbLogType Current/History
attr dblog_THB alias dblog_THB
attr dblog_THB asyncMode 1
attr dblog_THB bulkInsert 1
attr dblog_THB cacheLimit 5000
attr dblog_THB commitMode ac:on_ta:off
attr dblog_THB event-min-interval state:600
attr dblog_THB room DBLog
attr dblog_THB syncInterval 30
attr dblog_THB useCharfilter 1
attr dblog_THB verbose 2
#   COLUMNS    field length used for Device: 64, Type: 64, Event: 512, Reading: 64, Value: 128, Unit: 32
#   CONFIGURATION ./configDB.conf
#   DEF        ./configDB.conf .*:(temperature|power|humidity|va_temperature|va_humidity|humidity_value|desiredTemperature|valveposition|systemPressure|CHpumpModulation|actualDHWPower|actualCHPower|flameStatus|applianceSupplyTemperature|actualSupplyTemperature|supplyTemperatureSetpoint|outdoor_t1|supply_t1|supply_t1_setpoint|actualTemp|currentSetpoint|charge|chargeDuration|setpoint|singleChargeSetpoint|workingTime|oilfox_metering_liters).*
#   FD         5
#   FUUID      63a33b3f-f33f-fd5f-7f81-5787629cdd49cde5
#   FVERSION   93_DbLog.pm:v5.5.3-s26750/2022-12-10
#   MODE       asynchronous
#   MODEL      MYSQL
#   NAME       dblog_THB
#   NR         2
#   NTFY_ORDER 50-dblog_THB
#   PID        9571
#   REGEXP     .*:(temperature|power|humidity|va_temperature|va_humidity|humidity_value|desiredTemperature|valveposition|systemPressure|CHpumpModulation|actualDHWPower|actualCHPower|flameStatus|applianceSupplyTemperature|actualSupplyTemperature|supplyTemperatureSetpoint|outdoor_t1|supply_t1|supply_t1_setpoint|actualTemp|currentSetpoint|charge|chargeDuration|setpoint|singleChargeSetpoint|workingTime|oilfox_metering_liters).*
#   SBP_PID    9572
#   SBP_STATE  running
#   STATE      connected
#   TYPE       DbLog
#   UTF8       0
#   dbconn     mysql:database=fhem;host=localhost;port=3306
#   dbuser     fhemuser
#   eventCount 57
#   HELPER:
#     COLSET     1
#     DEVICECOL  64
#     EVENTCOL   512
#     OLDSTATE   connected
#     PACKAGE    main
#     READINGCOL 64
#     TC         current
#     TH         history
#     TYPECOL    64
#     UNITCOL    32
#     VALUECOL   128
#     VERSION    5.5.3
#   OLDREADINGS:
#   READINGS:
#     2022-12-21 18:27:17   CacheOverflowLastNum 0
#     2022-12-20 10:17:18   CacheOverflowLastState normal
#     2022-12-21 18:27:35   CacheUsage      6
#     2022-12-21 18:27:17   NextSync        2022-12-21 18:27:47 or when CacheUsage 5000 is reached
#     2022-12-21 18:27:18   state           connected
#
setstate dblog_THB connected
setstate dblog_THB 2022-12-21 18:27:17 CacheOverflowLastNum 0
setstate dblog_THB 2022-12-20 10:17:18 CacheOverflowLastState normal
setstate dblog_THB 2022-12-21 18:27:35 CacheUsage 6
setstate dblog_THB 2022-12-21 18:27:17 NextSync 2022-12-21 18:27:47 or when CacheUsage 5000 is reached
setstate dblog_THB 2022-12-21 18:27:18 state connected

[/code]
was läuft da schief?

habe ich etwa im Device  km200 etwas excluded?
es gibt jedenfalls kein diesbezügliches attr:

Attributes
IntervalDynVal
90
deleteattr
PollingTimeout
200
deleteattr
event-min-interval
/heatSources/systemPressure:7200,/system/sensors/temperatures/supply_t1:6000,/system/sensors/temperatures/supply_t1_setpoint:6000
deleteattr
event-on-update-reading
/heatSources/systemPressure,/system/sensors/temperatures/supply_t1
deleteattr
loglevel
1
deleteattr
room
BUDERUS
deleteattr
Probably associated with




Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 21 Dezember 2022, 21:56:30
Hallo Thomas,

wenn alles funktioniert hat und "plötzlich aufhört" wurde sicherlich etwas geändert .. ?

Geloggt wurden die Readings

Zitat
supplyTemperatureSetpoint|outdoor_t1|supply_t1|supply_t1_setpoint|actualTemp|currentSetpoint|charge|chargeDuration

Aber du erzeugst nur Events von:


/heatSources/systemPressure,/system/sensors/temperatures/supply_t1

bzw.

/system/sensors/temperatures/supply_t1_setpoint:6000


Mich stören wieder die Slashes in den Readings da die Angaben als regulärer Ausdruck gewertet werden.
Möglicherweise werden keine Events generiert. Entweder die Slashes escapen "\/" wie schon mal geschrieben, oder einfach nur so schreiben:


event-on-update-reading = .*systemPressure,.*supply_t1


bzw.


event-min-interval = .*systemPressure:7200,.*supply_t1:6000,.*supply_t1_setpoint:6000


Der Eventmonitor zeigt dir ob und wie Events generiert werden.

Ist aber alles auch wieder ein allgemeines Thema und hat mit der Umstellung auf DbLog V 5 nichts zu tun.  ;)
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 21 Dezember 2022, 23:05:30
@SusisStrolch, hattest du gestern die V nochmal mit deinem Szenario gecheckt ?
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: thburkhart am 22 Dezember 2022, 11:38:53
Zitat von: DS_Starter am 21 Dezember 2022, 21:56:30
Hallo Thomas,

wenn alles funktioniert hat und "plötzlich aufhört" wurde sicherlich etwas geändert .. ?

Geloggt wurden die Readings

Aber du erzeugst nur Events von:


/heatSources/systemPressure,/system/sensors/temperatures/supply_t1

bzw.

/system/sensors/temperatures/supply_t1_setpoint:6000


Mich stören wieder die Slashes in den Readings da die Angaben als regulärer Ausdruck gewertet werden.
Möglicherweise werden keine Events generiert. Entweder die Slashes escapen "\/" wie schon mal geschrieben, oder einfach nur so schreiben:


event-on-update-reading = .*systemPressure,.*supply_t1


bzw.


event-min-interval = .*systemPressure:7200,.*supply_t1:6000,.*supply_t1_setpoint:6000


Der Eventmonitor zeigt dir ob und wie Events generiert werden.

Ist aber alles auch wieder ein allgemeines Thema und hat mit der Umstellung auf DbLog V 5 nichts zu tun.  ;)

hmm

hmm ich logge nun einfach alles. Die Plots funktionieren auch wieder :-)

Jedoch meldet die DB:

2022.12.22 11:23:51 3: dblog_THB_notify_1 return value: HASH(0x3d977a8)
2022.12.22 11:24:21 3: dblog_THB_notify_1 return value: HASH(0x52f1bb8)
2022.12.22 11:24:51 3: dblog_THB_notify_1 return value: HASH(0x4e7e480)
2022.12.22 11:25:21 3: dblog_THB_notify_1 return value: HASH(0x470e188)
2022.12.22 11:25:51 3: dblog_THB_notify_1 return value: HASH(0x517b358)
2022.12.22 11:26:21 3: dblog_THB_notify_1 return value: HASH(0x507c280)
2022.12.22 11:26:51 3: dblog_THB_notify_1 return value: HASH(0x50bd328)


und
2022.12.22 11:30:41 2: DbLog dblog_THB - Error: DBI connect('database=fhem;host=db;port=3306','root',...) failed: Unknown MySQL server host 'db' (-2) at ./FHEM/93_DbLog.pm line 2487.

2022.12.22 11:30:41 2: DbLog dblog_THB - Error: DBI connect('database=fhem;host=db;port=3306','root',...) failed: Unknown MySQL server host 'db' (-2) at ./FHEM/93_DbLog.pm line 2487.


das ist doch die db

wie kriege ich deine neueste distri? mit welchem FHEM Befehl?

Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: Frank_Huber am 22 Dezember 2022, 11:49:12
Zitat von: thburkhart am 21 Dezember 2022, 18:28:50
wie kriege ich deine neueste distri? mit welchem FHEM Befehl?
https://forum.fhem.de/index.php/topic,130588.msg1250729.html#msg1250729
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: thburkhart am 22 Dezember 2022, 12:42:35
Zitat von: Frank_Huber am 22 Dezember 2022, 11:49:12
https://forum.fhem.de/index.php/topic,130588.msg1250729.html#msg1250729

habe damit
93_DbLog.pm:v5.5.3-s26750/2022-12-10

waren wir nicht schon bei 5.5.5?

Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: Jamo am 22 Dezember 2022, 12:52:49
Zitatwaren wir nicht schon bei 5.5.5?
Shutdown / restart gemacht?
https://forum.fhem.de/index.php/topic,130588.msg1250729.html#msg1250729, also
wget -qO ./FHEM/93_DbLog.pm https://svn.fhem.de/fhem/trunk/fhem/contrib/DS_Starter/93_DbLog.pm
liefert 5.5.7
kannst die Seite "https://svn.fhem.de/fhem/trunk/fhem/contrib/DS_Starter/" ja mal manuell ansurfen, und den File manuell runterladen, dann im Editor öffnen, und schauen was da für eine Versionsnummer steht.
Sollte nicht so schwer sein.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: SusisStrolch am 22 Dezember 2022, 19:06:05
Zitat von: DS_Starter am 21 Dezember 2022, 23:05:30
@SusisStrolch, hattest du gestern die V nochmal mit deinem Szenario gecheckt ?
Ich hatte am 21. die 5.5.7 installiert.
Prompt auch ein kaputtes Paket empfangen. Ein Cache-File wurde angelegt - anscheinend hat meine valueFn nicht gegriffen.
Hatte aber bisher keine Zeit zur Analyse.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: SusisStrolch am 23 Dezember 2022, 08:13:11
Zitat von: SusisStrolch am 22 Dezember 2022, 19:06:05
... - anscheinend hat meine valueFn nicht gegriffen.
Ist meine DbLogValueFn syntaktisch korrekt (C&P aus raw definition)?
attr logdb DbLogValueFn {    my $flags = Encode::FB_CROAK | Encode::LEAVE_SRC;;\
    my $void = eval {\
        Encode::decode( 'utf-8', $EVENT, $flags );;\
    } || $IGNORE=1\
}
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 23 Dezember 2022, 08:36:44
Guten Morgen,

ich habe es ein wenig umgeschrieben. Probiers mal aus.


attr logdb DbLogValueFn
{   
   my $flags = Encode::FB_CROAK | Encode::LEAVE_SRC;
   eval {
        Encode::decode( 'utf-8', $EVENT, $flags );
        1;
    }
    or do {$IGNORE=1;
          };
}


Ansonsten sieht die Reaktion des Devices auf die fehlerhaften Daten soweit gut aus.
Die Daten werden an den Cache zurück gegeben und bei Überlauf des cacheOverflowThreshold wird der Cache in ein File geleert.

Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 23 Dezember 2022, 08:52:15
@thburkhart,

Zitat
Jedoch meldet die DB:

2022.12.22 11:23:51 3: dblog_THB_notify_1 return value: HASH(0x3d977a8)
2022.12.22 11:24:21 3: dblog_THB_notify_1 return value: HASH(0x52f1bb8)
2022.12.22 11:24:51 3: dblog_THB_notify_1 return value: HASH(0x4e7e480)

Das ist keine Meldung der DB sondern die eines Notify. Was im Notify ausgeführt wird wissen wir nicht, ist aber eine einfache Rückmeldung. verbose 2 hilft hier wenn klar ist dass das Notify richtig arbeitet.

Aber
Zitat
2022.12.22 11:30:41 2: DbLog dblog_THB - Error: DBI connect('database=fhem;host=db;port=3306','root',...) failed: Unknown MySQL server host 'db' (-2) at ./FHEM/93_DbLog.pm line 2487.

lohnt sich mal genauer zu lesen.  Du siehst doch hier steht " failed: Unknown MySQL server host 'db' ". D.h. der übergebene Name des MySQL Rechners ist "db" den das System nicht kennt bzw. nicht auflösen kann.
Du solltest deswegen mal deine Konfigurationsdatei (./configDB.conf) prüfen ob nicht bei dir host=db angegeben ist. Hier ist der Name des Hosts oder dessen IP Adresse anzugeben:

     connection => "mysql:database=fhemtest1;host=192.168.2.44;port=3306",

EDIT: hatte mich verschrieben

Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: SusisStrolch am 23 Dezember 2022, 18:17:20
Ok, hab mal die geänderte Version eingebaut.
K
Mal schaun wann sich der Fehlerteufel wieder meldet.

Vielen Dank und Frohe Weihnachten!
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 25 Dezember 2022, 08:22:54
Ich wünsche allen schöne Festtage !

@SusisStrolch, mir ist noch etwas aufgefallen.

Das Attr DbLogValueFn setzt du in den Quellendevices, nicht im DbLog-Device. Zum Setzen einer Value-Funktion im DbLog-Device benutzt du das Attr valueFn.

Ich verbessere die commandref damit der Zusammenhang klarer wird.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: SusisStrolch am 25 Dezember 2022, 12:53:45
Ah... das erklärt Einiges!

Vielen Dank für den Hinweis.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 25 Dezember 2022, 12:56:28
Wie sieht es bis jetzt aus ?
Ich erwäge nach Weihnachten das Roll-Out vorzunehmen.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: Jamo am 25 Dezember 2022, 13:58:02
Bei mir läuft alles stabil ohne Probleme - Daumen hoch!
Danke für die gute Arbeit!!
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 25 Dezember 2022, 14:02:48
 :)  Danke.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: enno am 25 Dezember 2022, 14:38:24
Ich habe auch keine Probleme. Sehr schön! Super Arbeit!

Gruss
  Enno
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: Frank_Huber am 25 Dezember 2022, 16:14:23
Alles bestens.
Go for it!

Und Danke für die Arbeit die diu da reinsteckst!
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 26 Dezember 2022, 10:46:21
Hallo zusammen,

vielen Dank für eure Rückmeldungen und für eure Mitarbeit in den Tests bzw. Unterstützung.
Danke an Rudi für die Unterstützung der SubProcess-Verwendung in der fhem.pl (Start Prio).

Ich habe jetzt die neue V eingecheckt und sie wird morgen früh im Update verteilt.
Eine Zusammenfassung der Änderungen für den User habe ich hier hinterlegt: https://forum.fhem.de/index.php/topic,130743.msg1253560.html#msg1253560

Es gibt zwar noch einges zu tun im DbLog, zum Beispiel die Erweiterung des SVG Editors.

Jetzt liegt der Fokus aber erstmal auf den Rollout der Version und die Abarbeitung möglicher Probleme die evtl. doch noch bei
den Usern auftreten.
Ich bin aber dank euch optimistisch.  :)

LG,
Heiko
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: betateilchen am 26 Dezember 2022, 19:20:55
Die Statusanzeige des DbLog in einer Raumübersicht sprengt bei mir den kompletten Bildschirm, wenn die Anzeige von "Connected" auf irgendwas mit "Another process... bla..." (das geht so schnell, dass ich die Meldung nicht lesen kann) wechselt.

Außerdem wäre es "schön", wenn diese Meldung

connection params saved into SubProcess. Connection to DB is established when it is needed

zweizeilig ausgegeben würde.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 27 Dezember 2022, 08:51:02
Guten Morgen,

Die Meldung die du kurz siehst ist:

Another operation is in progress - data is stored temporarily (check with listCache)


Die Meldung kommt wenn neue Daten zum Schreiben an den Childprozess gesendet werden sollen, der vorherige Lauf
aber noch nicht abgeschlossen ist.
Wenn es nur sehr kurz präsent ist, dann ist es gerade so eine Grenzsituation denn normalerwiese kommt bei hinreichend schneller DB im Verhältnis zur Schreibfrequenz der Daten im synchronen Modus keine Meldung.

Ich kürze es etwas ein und gebe die Meldung auch zweizeilig aus wie auch dein Vorschlag bzgl. der anderen Meldung.
Ist eine gute Idee. Ich schaue nach ob ich noch mehr längere Meldungen habe, die setze ich auch gleich auf zweizeilig um.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 27 Dezember 2022, 12:46:43
Habe die V 5.5.8 eingecheckt:

* lange (planmäßige) Meldungen werden im state zweizeilig ausgegeben

* die Meldung "Another operation is in progress. Data is stored temporarily." (zweizeilig) wird im synchronen Modus erst dann ausgegeben wenn
   die vorangegangene Operation sich mit der neuen Anforderung mehr als ein zeitlicher Schwellenwert (aktuell 0.8 s) überschneidet.
   Das wird die Häufigkeit der Meldung reduzieren und nur "markantere" Fälle dem User im state mitteilen.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: nog76 am 28 Dezember 2022, 18:59:25
Hi,

ich habe ggf. einen Fehler in der neuen Version entdeckt.
Update auf die 5.x lief gestern problemlos durch.
Als ich heute aber meine regexp innerhalb des define angepasst habe, wird mir direkt nach dem "save"
eine Fehlermeldung angezeigt:

2022-12-28 18:50:09 DbLog myDbLog DBD::Pg::st execute failed: ERROR:  relation "history" does not exist LINE 1: INSERT INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING...                     ^ [for Statement "INSERT INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES ('2022-12-28 18:50:09','myDbLog','DBLOG','state: waiting for connection','state','waiting for connection',''),('2022-12-28 18:50:00','tankenPreis','JSONMOD','preis: 1.819','preis','1.819','')"] at ./FHEM/93_DbLog.pm line 2757.

Ab diesem Moment wird auch nichts mehr in die "history" Tabelle geschrieben und das Logfile mit diesen Fehlern geflutet.
Wenn ich fhem danach restarte, funktioniert wieder alles problemlos.


Aktuelle config:

defmod myDbLog DbLog /opt/fhem/config/db.conf (?i).*(temperature|humidity|preis|state):.*
attr myDbLog DbLogType Current/History
attr myDbLog asyncMode 1
attr myDbLog bulkInsert 1
attr myDbLog dbSchema fhem
attr myDbLog showproctime 1


FVERSION   93_DbLog.pm:v5.5.8-s26907/2022-12-27

Habe leider meine beiden FHEM Installationen schon auf die neue Version hochgezogen und kann daher nicht prüfen, ob das Problem schon vorher bestand. Allerdings habe ich vor einiger Zeit problemlos meine regexp "on-the-fly" anpassen können.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: cortmen am 28 Dezember 2022, 19:23:57
 :)Danke für das Update.

@DS_Starter

* Update:Scheint ähnlich wie nog76 seine Meldung zu sein.
   Allerdings ist die Fehlermeldung eine andere..

Bitte schau einmal kurz in diesem Thread, ob da ein Zusammenhang mit den aktualisierten Modul sein kann.
Wir können gerne auch hier weiterschreiben..

https://forum.fhem.de/index.php?topic=25540.msg1254042#msg1254042
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 28 Dezember 2022, 19:44:48
@cortmen, nein ist kein Zusammenhang. Habe dir die Lösung geschrieben.

@nog76, deine Meldung ist ein Fehler der direkt von der Datenbank gemeldet wird:


DBD::Pg::st execute failed: ERROR:  relation "history" does not exist


Da muss ich erstmal googeln was das konkret bei Postgre bedeuten soll. Sieht mir auf den ersten Blick so aus als ob die
Verbindung zur DB verloren gegangen war.
Das Modul bringt jetzt mehr detaillierte Meldungen bei Fehlern raus. Kann sein dass sowas früher nicht aufgefallen war.
Einen direkten Zusammenhang mit dem drücken von "save" schließe ich aus. Habe gerade bei mir mit MariaDB gecheckt -> kein Problem.
Kannst mal schauen ob du den Fehler nochmal bewußt reproduzieren kannst.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 28 Dezember 2022, 19:51:50
@nog76, zeig mir bitte ein list von deinem DbLog-Device.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: nog76 am 28 Dezember 2022, 19:57:07
Hi, hier erstmal ein list vom device

Internals:
   COLUMNS    field length used for Device: 64, Type: 64, Event: 512, Reading: 64, Value: 128, Unit: 32
   CONFIGURATION /opt/fhem/config/db.conf
   DEF        /opt/fhem/config/db.conf .*(temperature|humidity|preis|state):.*
   FD         4
   FUUID      624de2e1-f33f-1758-5c38-6b56f60aeffc8515
   FVERSION   93_DbLog.pm:v5.5.8-s26907/2022-12-27
   MODE       asynchronous
   MODEL      POSTGRESQL
   NAME       myDbLog
   NR         2
   NTFY_ORDER 50-myDbLog
   PID        313435
   REGEXP     .*(temperature|humidity|preis|state):.*
   SBP_PID    313442
   SBP_STATE  running
    STATE      connected
   TYPE       DbLog
   dbconn     Pg:database=fhemlog;host=localhost
   dbuser     qqfhemlog
   eventCount 6
   HELPER:
     COLSET     1
     DEVICECOL  64
     EVENTCOL   512
     OLDSTATE   connected
     PACKAGE    main
     READINGCOL 64
     TC         fhem.current
     TH         fhem.history
     TYPECOL    64
     UNITCOL    32
     VALUECOL   128
     VERSION    5.5.8
   OLDREADINGS:
   READINGS:
     2022-12-28 19:54:13   CacheOverflowLastNum 0
     2022-04-06 20:58:41   CacheOverflowLastState normal
     2022-12-28 19:54:43   CacheUsage      0
     2022-12-28 19:54:43   NextSync        2022-12-28 19:55:13 or when CacheUsage 500 is reached
     2022-12-28 19:54:13   background_processing_time 0.0159
     2022-12-28 19:54:13   sql_processing_time 0.0123
     2022-12-28 19:54:43   state           connected
Attributes:
   DbLogType  Current/History
   asyncMode  1
   bulkInsert 1
   dbSchema   fhem
   showproctime 1
   verbose    5


Versuche gerade das Verhalten nochmal mit verbose=5 zu reproduzieren.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: nog76 am 28 Dezember 2022, 20:02:25
und hier nochmal ein Log:

2022.12.28 19:59:18 4 : DbLog myDbLog - ################################################################
2022.12.28 19:59:18 4 : DbLog myDbLog - ###              start of new Logcycle                       ###
2022.12.28 19:59:18 4 : DbLog myDbLog - ################################################################
2022.12.28 19:59:18 4 : DbLog myDbLog - number of events received: 1 of device: myDbLog
2022.12.28 19:59:18 4 : DbLog myDbLog - check Device: myDbLog , Event: state: DBD::Pg::st execute failed: ERROR:  relation "history" does not exist
LINE 1: INSERT INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING...
                    ^ [for Statement "INSERT INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES ('2022-12-28 19:59:18','myDbLog','DBLOG','state: waiting for connection','state','waiting for connection','')"] at ./FHEM/93_DbLog.pm line 2757.
2022-12-28 19:59:18 DbLog myDbLog waiting for connection
2022-12-28 19:59:18 DbLog myDbLog CacheUsage: 1
2022-12-28 19:59:18 DbLog myDbLog CacheOverflowLastNum: 0
2022-12-28 19:59:18 Global global MODIFIED myDbLog
2022-12-28 19:59:18 DbLog myDbLog <html>Connection parameters saved into SubProcess. <br>Connection to DB is established when it is needed.</html>
2022-12-28 19:59:18 DbLog myDbLog CacheUsage: 1
2022-12-28 19:59:18 DbLog myDbLog DBD::Pg::st execute failed: ERROR:  relation "history" does not exist LINE 1: INSERT INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING...                     ^ [for Statement "INSERT INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES ('2022-12-28 19:59:18','myDbLog','DBLOG','state: waiting for connection','state','waiting for connection','')"] at ./FHEM/93_DbLog.pm line 2757.


Für mich sieht es so aus, als würde nach der Änderung das Attribut "scheme" nicht mehr genutzt zu werden - in Postgres verwende ich fhem.history (also schema.tabelle).
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 28 Dezember 2022, 20:08:30
Zitat
Für mich sieht es so aus, als würde nach der Änderung das Attribut "scheme" nicht mehr genutzt zu werden - in Postgres verwende ich fhem.history (also schema.tabelle).
Den Verdacht hatte ich jetz auch, deswegen die Frage bzgl. List.
Ich prüfe das gerade.

Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 28 Dezember 2022, 20:19:53

Lass bitte verbose = 5 eingestellt und führe ein "set ... stopSubProcess" aus.
In dem Log wird es viele Meldungen geben.
Interessant ist dann dieser Teil:


2022.12.28 20:15:52.711 3: DbLog LogDB1 - DB connection parameters are stored in SubProcess
2022.12.28 20:15:52.713 5: DbLog LogDB1 -  current -> current
2022.12.28 20:15:52.714 5: DbLog LogDB1 -  dbuser -> fhemtest1
2022.12.28 20:15:52.714 5: DbLog LogDB1 -  utf8 -> 1
2022.12.28 20:15:52.715 5: DbLog LogDB1 -  cm -> basic_ta:off
2022.12.28 20:15:52.715 5: DbLog LogDB1 -  model -> MYSQL
2022.12.28 20:15:52.716 5: DbLog LogDB1 -  dbconn -> mysql:database=fhemtest1;host=192.168.2.44;port=3306
2022.12.28 20:15:52.717 5: DbLog LogDB1 -  dbpassword -> xxxxxxxxx
2022.12.28 20:15:52.717 5: DbLog LogDB1 -  dbname -> fhemtest1
2022.12.28 20:15:52.718 5: DbLog LogDB1 -  dbstorepars -> 1
2022.12.28 20:15:52.718 5: DbLog LogDB1 -  history -> history


Am einfachsten ist es im Log nach "DB connection parameters are stored in SubProcess" zu suchen.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: nog76 am 28 Dezember 2022, 20:27:01
Hier der Logauszug nach stopSubProcess:

2022.12.28 20:23:49 5: DbLog myDbLog - MemCache contains:  39 -> 2022-12-28 20:23:23|myDbLog|DBLOG|state: SubProcess stopped and will be automatically restarted if needed|state|SubProcess stopped and will be automatically restarted if needed|
2022.12.28 20:23:50 3: DbLog myDbLog - DB connection parameters are stored in SubProcess
2022.12.28 20:23:50 5: DbLog myDbLog -  history -> history
2022.12.28 20:23:50 5: DbLog myDbLog -  model -> POSTGRESQL
2022.12.28 20:23:50 5: DbLog myDbLog -  dbpassword -> *********
2022.12.28 20:23:50 5: DbLog myDbLog -  dbconn -> Pg:database=fhemlog;host=localhost
2022.12.28 20:23:50 5: DbLog myDbLog -  current -> current
2022.12.28 20:23:50 5: DbLog myDbLog -  cm -> basic_ta:on
2022.12.28 20:23:50 5: DbLog myDbLog -  utf8 -> 0
2022.12.28 20:23:50 5: DbLog myDbLog -  dbuser -> qqfhemlog
2022.12.28 20:23:50 5: DbLog myDbLog -  dbstorepars -> 1
2022.12.28 20:23:50 5: DbLog myDbLog -  dbname -> fhemlog
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 28 Dezember 2022, 20:28:53
Danke. Problem erkannt:

Zitat
2022.12.28 20:23:50 5: DbLog myDbLog -  history -> history
2022.12.28 20:23:50 5: DbLog myDbLog -  model -> POSTGRESQL
2022.12.28 20:23:50 5: DbLog myDbLog -  dbpassword -> *********
2022.12.28 20:23:50 5: DbLog myDbLog -  dbconn -> Pg:database=fhemlog;host=localhost
2022.12.28 20:23:50 5: DbLog myDbLog -  current -> current

Jetzt schaue ich nach der Lösung.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: nog76 am 28 Dezember 2022, 20:35:00
Super.
Nach dem Restart wird das Schema auch korrekt gelogged:

2022.12.28 20:31:10 5: DbLog myDbLog -  history -> fhem.history
...
2022.12.28 20:31:10 5: DbLog myDbLog -  current -> fhem.current
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 28 Dezember 2022, 21:09:33
So, denke Problem beseitigt.
Kannst du bitte die Testversion aus meinem contrib laden und restarten ?
Danach mal testen ob das Problem beseitigt ist.

In der Brower Kommandozeile:

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


oder aus dem Link im Footer.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: nog76 am 28 Dezember 2022, 22:22:35
Hi,

Danke - habe die neue Version eingespielt und der Fehler scheint behoben zu sein.
Ich lasse es mal weiter über Nacht in meinem Testsystem laufen und probiere morgen das gleiche in PROD.

Danke für den schnellen Bugfix :-)
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: nog76 am 29 Dezember 2022, 08:15:00
Guten Morgen,

über Nacht lief alles problemlos auf dem Testsystem durch.
Habe daher auch mein PROD-System mit der Bugfix-Version versehen - auch hier kann ich den Bug nicht mehr nachstellen.
Damit ist der Fehler aus meiner Sicht behoben (und wird ja auch schon per Update ausgespielt).

Allerdings habe ich noch ein weiteres Finding:
Bei mir steht das Attribut asyncMode auf 1 - und daher wird in den Internals bei MODE=asynchronous angezeigt.

Internals:

   FVERSION   93_DbLog.pm:v5.5.9-s26907/2022-12-27
   MODE       asynchronous


Wenn ich jedoch eine Änderung wieder in der regex vornehme, wechselt die Anzeige auf MODE=synchronous

Internals:
   FVERSION   93_DbLog.pm:v5.5.9-s26907/2022-12-27
   MODE       synchronous


Wenn ich das Attribut nochmal manuell setze, wechselt die Anzeige auch wieder auf asynchronous.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 29 Dezember 2022, 09:01:52
Zitat
Allerdings habe ich noch ein weiteres Finding:
Bei mir steht das Attribut asyncMode auf 1 - und daher wird in den Internals bei MODE=asynchronous angezeigt.

Danke, Ist gefixt im contrib.
Ich habe die Lösung von gestern auch nochmal abgeändert. So richtig gefallen hat es mir nicht.
Deswegen die Version nochmal aus dem contrib ziehen und beide Fixes testen.

LG
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: nog76 am 29 Dezember 2022, 09:35:40
Habe die neueste Version jetzt getestet:
Beide Probleme sind damit behoben :-)
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 29 Dezember 2022, 09:39:11
Sehr schön.
Ich checke die neue V ein. Sie ist dann morgen früh im Update enthalten.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: thburkhart am 02 Januar 2023, 12:13:51
Guten Neues wünsche ich allen!

eben stelle ich fest, dass mein FHEM sich nicht mehr updated:
Result of version check
Used Perl version: 5.32.1
Used DBI (Database independent interface) version: 1.643
Used DBD (Database driver) version Undefined
Used DbLog version: 5.5.3.
A new DbLog version is available (creation time: 2022-12-30_07:45:03, size: 469411 bytes)
Recommendation: You should update FHEM to get the recent DbLog version from repository !


habe mehrfach update gefahren; dennoch

Downloading https://fhem.de/fhemupdate/controls_fhem.txt

fhem
List of new / modified files since last update:
UPD ./CHANGED
UPD FHEM/00_KNXIO.pm
UPD FHEM/00_MQTT2_CLIENT.pm
UPD FHEM/00_MQTT2_SERVER.pm
UPD FHEM/01_FHEMWEB.pm
UPD FHEM/10_CUL_HM.pm
UPD FHEM/10_KNX.pm
UPD FHEM/36_ShellyMonitor.pm
UPD FHEM/70_ESCVP21net.pm
UPD FHEM/70_SVDRP.pm
UPD FHEM/93_DbLog.pm
UPD FHEM/93_DbRep.pm
UPD FHEM/93_FHEM2FHEM.pm
UPD FHEM/98_DOIF.pm
UPD FHEM/98_HMinfo.pm
UPD FHEM/98_monitoring.pm
UPD FHEM/HttpUtils.pm
UPD FHEM/lib/AttrTemplate/mqtt2.template
UPD docs/commandref_frame.html
UPD docs/commandref_frame_DE.html
UPD lib/FHEM/SynoModules/SMUtils.pm
UPD www/images/fhemSVG/automower.svg
Downloading https://raw.githubusercontent.com/dominikkarall/fhempy/master/controls_pythonbinding.txt

pythonbinding
nothing to do...


im Log steht:

2023.01.02 12:10:52 1 : open ./FHEM/93_DbLog.pm failed: Permission denied, trying to restore the previous version and aborting the update

liegt es daran? und was tun?

vielen Dank

Thomas



Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 02 Januar 2023, 12:28:09
Hallo Thomas,

die gleichen Wünsche von mir!

Du gehst auf Betriebssystemnebene und machst das File beschreibbar:


   sudo chown fhem:dialout /opt/fhem/FHEM/93_DbLog.pm
   sudo chmod 775 /opt/fhem/FHEM/93_DbLog.pm


Das Update sollte dann wieder laufen.

LG
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: thburkhart am 02 Januar 2023, 16:12:22
oh danke

update lief wieder ..

ich habe immer noch den Fehler:

2023.01.02 16:03:02 3: dblog_THB_notify_1 return value: HASH(0x5351fd0)
2023.01.02 16:03:32 3: dblog_THB_notify_1 return value: HASH(0x543fff0)
2023.01.02 16:04:02 3: dblog_THB_notify_1 return value: HASH(0x5439c60)
2023.01.02 16:04:32 3: dblog_THB_notify_1 return value: HASH(0x524e098)
2023.01.02 16:05:02 3: dblog_THB_notify_1 return value: HASH(0x4b673b8)
2023.01.02 16:05:32 3: dblog_THB_notify_1 return value: HASH(0x51db9f8)
2023.01.02 16:06:02 3: dblog_THB_notify_1 return value: HASH(0x4b51e68)

Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 02 Januar 2023, 16:16:19
Zitatich habe immer noch den Fehler:

Das ist imho kein Fehler, sondern nur eine Rückmeldung des Notify dblog_THB_notify_1 (wie schon geschrieben).
Wenn das notify tut, was es soll, setzt  du in dem notify verbose=2.

Kannst uns ja mal ein List des Notify zeigen.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: thburkhart am 02 Januar 2023, 16:42:24
Zitat von: DS_Starter am 02 Januar 2023, 16:16:19

Kannst uns ja mal ein List des Notify zeigen.

gerne:
[code]define dblog_THB_notify_1 notify dblog_THB:CacheOverflowLastNum:.0 {}
#   DEF        dblog_THB:CacheOverflowLastNum:.0 {}
#   FUUID      63a190a0-f33f-fd5f-0099-c04e18177b54e33b
#   NAME       dblog_THB_notify_1
#   NOTIFYDEV  dblog_THB
#   NR         44
#   NTFY_ORDER 50-dblog_THB_notify_1
#   REGEXP     dblog_THB:CacheOverflowLastNum:.0
#   STATE      2023-01-02 16:40:33
#   TRIGGERTIME 1672674033.07242
#   TYPE       notify
#   READINGS:
#     2023-01-02 16:01:10   state           active
#     2023-01-02 16:40:33   triggeredByDev  dblog_THB
#     2023-01-02 16:40:33   triggeredByEvent CacheOverflowLastNum: 0
#
setstate dblog_THB_notify_1 2023-01-02 16:40:33
setstate dblog_THB_notify_1 2023-01-02 16:01:10 state active
setstate dblog_THB_notify_1 2023-01-02 16:40:33 triggeredByDev dblog_THB
setstate dblog_THB_notify_1 2023-01-02 16:40:33 triggeredByEvent CacheOverflowLastNum: 0

[/code]

habe ja null Ahnung was das überhaupt mach oder machen soll
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 02 Januar 2023, 16:50:41
Zitat
habe ja null Ahnung was das überhaupt mach oder machen soll
Und warum hast du es dann angelegt ?  :)

Also das kannst du löschen, tut sowieso nichts:

  DEF        dblog_THB:CacheOverflowLastNum:.0 {}

Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: hansrijn am 04 Januar 2023, 16:15:36
Ich möchte gerne mitmachen zum testn.

Ich empfinde seit etwa 27-12-2022 auch selber ein Problem mit Dblog das ich nur lösen könnte durch ein altere Version (dd 22-12-2022) zu benutzen. Als ich das Insert das hier gezeigt wird selber mit phpmyadmin ins DB eintrage gibt es kein Problem, ebenso mit der altere 4.x.x Version.

2023.01.04 15:17:47 2: DbLog EnergieDB - Error table history - DBD::mysql::st execute failed: Incorrect string value: '\x94\x06' for column `fhem`.`history`.`EVENT` at row 1 [for Statement "INSERT INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES ('2023-01-04 15:17:46','Energiemeter','SMARTMETERHANS','ElectricityProducedNormalTariff: 0.000 kWh▒','ElectricityProducedNormalTariff','0.000 kWh▒','')"] at ./FHEM/93_DbLog.pm line 2755.

2023.01.04 15:17:51 4: ZoneMinder (MijnZM) SimpleGet calling http://192.168.1.9/zm/api/host/getLoad.json with callback CODE(0x37e7fa8)
2023.01.04 15:18:17 2: DbLog EnergieDB - Error table history - DBD::mysql::st execute failed: Incorrect string value: '\x94\x06' for column `fhem`.`history`.`EVENT` at row 1 [for Statement "INSERT INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES ('2023-01-04 15:17:46','Energiemeter','SMARTMETERHANS','ElectricityProducedNormalTariff: 0.000 kWh▒','ElectricityProducedNormalTariff','0.000 kWh▒','')"] at ./FHEM/93_DbLog.pm line 2755.

2023.01.04 15:18:41 3: Nmap (Harijn3) - starting network scan
2023.01.04 15:18:47 2: DbLog EnergieDB - Error table history - DBD::mysql::st execute failed: Incorrect string value: '\x94\x06' for column `fhem`.`history`.`EVENT` at row 1 [for Statement "INSERT INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES ('2023-01-04 15:17:46','Energiemeter','SMARTMETERHANS','ElectricityProducedNormalTariff: 0.000 kWh▒','ElectricityProducedNormalTariff','0.000 kWh▒','')"] at ./FHEM/93_DbLog.pm line 2755.

2023.01.04 15:18:48 3: Nmap (Harijn3) - network scan done
2023.01.04 15:18:51 4: ZoneMinder (MijnZM) SimpleGet calling http://192.168.1.9/zm/api/host/getLoad.json with callback CODE(0x37e7fa8)
2023.01.04 15:19:17 2: DbLog EnergieDB - Error table history - DBD::mysql::st execute failed: Incorrect string value: '\x94\x06' for column `fhem`.`history`.`EVENT` at row 1 [for Statement "INSERT INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES ('2023-01-04 15:17:46','Energiemeter','SMARTMETERHANS','ElectricityProducedNormalTariff: 0.000 kWh▒','ElectricityProducedNormalTariff','0.000 kWh▒','')"] at ./FHEM/93_DbLog.pm line 2755.

2023.01.04 15:19:47 2: DbLog EnergieDB - Error table history - DBD::mysql::st execute failed: Incorrect string value: '\x94\x06' for column `fhem`.`history`.`EVENT` at row 1 [for Statement "INSERT INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES ('2023-01-04 15:17:46','Energiemeter','SMARTMETERHANS','ElectricityProducedNormalTariff: 0.000 kWh▒','ElectricityProducedNormalTariff','0.000 kWh▒','')"] at ./FHEM/93_DbLog.pm line 2755.

2023.01.04 15:19:52 4: ZoneMinder (MijnZM) SimpleGet calling http://192.168.1.9/zm/api/host/getLoad.json with callback CODE(0x37e7fa8)
2023.01.04 15:20:13 1: RMDIR: ./restoreDir/save/2022-12-29
2023.01.04 15:20:17 2: DbLog EnergieDB - Error table history - DBD::mysql::st execute failed: Incorrect string value: '\x94\x06' for column `fhem`.`history`.`EVENT` at row 1 [for Statement "INSERT INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES ('2023-01-04 15:17:46','Energiemeter','SMARTMETERHANS','ElectricityProducedNormalTariff: 0.000 kWh▒','ElectricityProducedNormalTariff','0.000 kWh▒',''),('2023-01-04 15:20:07','Airco','MQTT_DEVICE','Kamertemperatuur: 20.0','Kamertemperatuur','20.0',''),('2023-01-04 15:20:07','Airco','MQTT_DEVICE','Buitentemperatuur: 11.5','Buitentemperatuur','11.5',''),('2023-01-04 15:20:16','Energiemeter','SMARTMETERHANS','ElectricityPowerDelivered: 0.41 kW','ElectricityPowerDelivered','0.41 kW','')"] at ./FHEM/93_DbLog.pm line 2755.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 04 Januar 2023, 17:07:15
Hallo hansrijn,

gerne. Ich habe wegen eines anderen Falles ein neues Release erstellt. Es befindet sich im contrib und du kannst es gerne herunterladen und testen (Neustart nicht vergessen).

Davon abgesehen sind deine Daten aber nicht sauber. Der Hex-Code  '\x94\x06' (lt. ASCII Tabelle wäre das "^ACK" ?) findet sich so wie es aussieht am Ende jeder Zeile und wird als nichtdruckbares Zeichen dargestellt.
Steht die Frage wo das herkommt, sicher nicht von DbLog.

Ich gehe davon aus dass du das Attr bulkInsert= 1  gesetzt hast, richtig ?

Du kannst auch mit der aktuellen V das Attr useCharfilter = 1 setzen und das Problem wahrscheinlich beseitigen.
Es wird interessant werden ob du auch ohne dieses Attr zu setzen mit der contrib Version 5.5.10 das Problem beseitigen wirst.

Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: betateilchen am 04 Januar 2023, 17:24:48
Zitat von: DS_Starter am 04 Januar 2023, 17:07:15
Steht die Frage wo das herkommt, sicher nicht von DbLog.

VALUES ('2023-01-04 15:17:46','Energiemeter','SMARTMETERHANS',...

device TYPE = SMARTMETERHANS ???

Das ist irgendwas selbstgestricktes...
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: thburkhart am 04 Januar 2023, 18:13:48
Zitat von: DS_Starter am 02 Januar 2023, 16:50:41
Und warum hast du es dann angelegt ?  :)

Also das kannst du löschen, tut sowieso nichts:

  DEF        dblog_THB:CacheOverflowLastNum:.0 {}

aus Unwissen ;-)
vielen Dank für die Aufklärung
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: RockThisParty am 06 Januar 2023, 10:27:03
Moin!
Ich mache mal einen Querverweis, da ich nicht so genau weiß, wo das Thema zu verorten ist. Ich habe - gefühlt seit der Umstellung im dblog - einen extrem langsamen Aufbau meiner SVGs. Die brauchen 20 Sekunden während die Seite drumrum schon da ist.
Details hier:
https://forum.fhem.de/index.php/topic,131396.0.html

Bin für Hinweise dankbar. Falls es hilft, hier das Listing von dblog:
Internals:
   COLUMNS    field length used for Device: 64, Type: 64, Event: 512, Reading: 64, Value: 128, Unit: 32
   CONFIGURATION ./db.conf
   DEF        ./db.conf .*:(1.ACTUAL_TEMPERATURE|1.HUMIDITY).*
   FD         5
   FUUID      5ff78651-f33f-d7f8-4c3f-689a9e08ff48d5d8
   FVERSION   93_DbLog.pm:v5.5.9-s26923/2022-12-29
   MODE       asynchronous
   MODEL      MYSQL
   NAME       logdb
   NR         2
   NTFY_ORDER 50-logdb
   PID        4164
   REGEXP     .*:(1.ACTUAL_TEMPERATURE|1.HUMIDITY).*
   SBP_PID    4177
   SBP_STATE  running
   STATE      connected
   TYPE       DbLog
   UTF8       1
   dbconn     mysql:database=fhem;host=192.168.178.2;port=3306
   dbuser     fhem
   eventCount 37
   HELPER:
     COLSET     1
     DEVICECOL  64
     EVENTCOL   512
     OLDSTATE   connected
     PACKAGE    main
     READINGCOL 64
     TC         current
     TH         history
     TYPECOL    64
     UNITCOL    32
     VALUECOL   128
     VERSION    5.5.9
   OLDREADINGS:
   READINGS:
     2023-01-06 10:21:50   CacheOverflowLastNum 0
     2022-01-28 09:41:23   CacheOverflowLastState normal
     2023-01-06 10:21:50   CacheUsage      4
     2023-01-06 10:21:50   NextSync        2023-01-06 10:22:20 or when CacheUsage 500 is reached
     2023-01-06 10:21:51   state           connected
Attributes:
   DbLogSelectionMode Include
   asyncMode  1
   room       Zentral->Zentral
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 06 Januar 2023, 10:41:44
Speziell zu SVG + Umstellung DbLog verweise ich auf:  https://forum.fhem.de/index.php/topic,130743.msg1253560.html#msg1253560 -> keine Änderungen !

Aber in deinem verlinkten Beitrag sehe ich Einträge die nicht ok sind.

Da die V5 abwärtskompatibel zur V4 ist, kannst du dir die letzte V4 laden und vergleichend testen.
Die letzte V4 kannst du hier laden:

https://svn.fhem.de/trac/browser/trunk/fhem/FHEM/93_DbLog.pm?rev=26750

Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: ch.eick am 06 Januar 2023, 10:44:33
Moin Heiko,
macht es für mich schon Sinn diese Version zu verwenden? Du weißt ja was ich so alles für SQL kapriolen treibe :-)

VG  Christian
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 06 Januar 2023, 10:58:51
Ja. Für deine SQL nutzt du ja Rep.
Die neue DbLog hat vor allem die Schreibvorgänge in einen subprocess verlagert.

Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 08 Januar 2023, 10:06:00
Hallo @all,

im contrib ist die V 5.5.10 bereitgestellt.

In die Version sind einige Code Erweiterungen/Änderungen eingeflossen, die diverse Optimierungen und Fehlerbeseitigungen bzgl. verschiedener gemeldeter Issues beinhalten.

Es würde mich freuen wenn ein paar User die Version bei sich gegenchecken würden bevor ich sie demnächst veröffentliche.
Zum Download in der FHEMWEB Kommandozeile inklusive der Anführungszeichen angeben und danach FHEM restarten:


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


schönen Restsonntag,
Heiko
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: Hanjo am 08 Januar 2023, 10:37:26
Hi Heiko,

ich habe seit dem Update ein Problem:

Ich verwende die MariaDB auf einem Synology NAS. Einmal pro Nacht wird durch die eingebaute Backup-Funktionalität der DB-Server kurz ausgeschaltet. Bisher war das kein Problem, die Verbindung war halt kurz weg, die Log-Einträge wurden gecached und dann nach einiger Zeit, wenn der Server wieder da war, in die DB geschrieben.

Mit der neuen Version funktioniert das aber nicht, scheinbar kommt keine Verbindung zur DB mehr zu Stand und es treten Fehlermeldungen im Log auf.

Außerdem wird das Log vollgeschrieben mit den genauen SQL Statements, so dass es in kurzer Zeit mehrere GB groß wird und irgendwann die Festplatte vollläuft.

Ich habe versucht das Problem zu beheben, in dem ich manuell "reopen", "rereadcfg" und "stopSubProcess" ausführe, aber das hat alles nichts gebracht. Was geholfen hat ist ein Neustart von FHEM; danach funktioniert die Verbindung wieder (bis zum nächsten Backup).

Bei einem neuen Versuch habe ich, als das Problem wieder auftrat, "bulkInsert" gelöscht (war vorher 1) und das Schreiben in die DB hat wieder funktioniert, ohne dass ich FHEM neustarten musste.

Hier ein paar Logs:
2023.01.08 04:31:24 2: DbLog logdb - Error: DBI connect('database=fhem;host=nas.lokal;port=3306','fhem',...) failed: Can't connect to MySQL server on 'nas.lokal' (111) at ./FHEM/93_DbLog.pm line 2597.
2023.01.08 04:31:24 2: DbLog logdb - Error: DBI connect('database=fhem;host=nas.lokal;port=3306','fhem',...) failed: Can't connect to MySQL server on 'nas.lokal' (111) at ./FHEM/93_DbLog.pm line 2597.
2023.01.08 04:31:24 2: DbLog logdb - Error: DBI connect('database=fhem;host=nas.lokal;port=3306','fhem',...) failed: Can't connect to MySQL server on 'nas.lokal' (111) at ./FHEM/93_DbLog.pm line 2597.
2023.01.08 04:31:24 2: DbLog logdb - Error: DBI connect('database=fhem;host=nas.lokal;port=3306','fhem',...) failed: Can't connect to MySQL server on 'nas.lokal' (111) at ./FHEM/93_DbLog.pm line 2597.
2023.01.08 04:31:40 2: DbLog logdb - Error: DBI connect('database=fhem;host=nas.lokal;port=3306','fhem',...) failed: Can't connect to MySQL server on 'nas.lokal' (111) at ./FHEM/93_DbLog.pm line 2597.
2023.01.08 04:31:40 2: DbLog logdb - Error: DBI connect('database=fhem;host=nas.lokal;port=3306','fhem',...) failed: Can't connect to MySQL server on 'nas.lokal' (111) at ./FHEM/93_DbLog.pm line 2597.
2023.01.08 04:31:40 2: DbLog logdb - Error: DBI connect('database=fhem;host=nas.lokal;port=3306','fhem',...) failed: Can't connect to MySQL server on 'nas.lokal' (111) at ./FHEM/93_DbLog.pm line 2597.
2023.01.08 04:31:40 2: DbLog logdb - Error: DBI connect('database=fhem;host=nas.lokal;port=3306','fhem',...) failed: Can't connect to MySQL server on 'nas.lokal' (111) at ./FHEM/93_DbLog.pm line 2597.
2023.01.08 04:31:56 3: DbLog logdb - SubProcess connected to fhem
2023.01.08 04:31:56 2: DbLog logdb - Error table history - DBD::mysql::st execute failed: MySQL server has gone away [for Statement "INSERT IGNORE INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES (...)"] at ./FHEM/93_DbLog.pm line 2755.
2023.01.08 04:31:56 2: DbLog logdb - Error - DBD::mysql::db rollback failed: Turning on AutoCommit failed at ./FHEM/93_DbLog.pm line 4170.
2023.01.08 04:31:57 1: PERL WARNING: (in cleanup) DBD::mysql::db DESTROY failed: MySQL server has gone away at ./FHEM/93_DbLog.pm line 2439.
2023.01.08 04:31:57 2: DbLog logdb - Error table history - Can't call method "prepare" on unblessed reference at ./FHEM/93_DbLog.pm line 2746.
2023.01.08 04:31:57 2: DbLog logdb - Error - Can't call method "rollback" on unblessed reference at ./FHEM/93_DbLog.pm line 4170.
2023.01.08 04:32:23 3: DbLog logdb - SubProcess connected to fhem
2023.01.08 04:32:23 2: DbLog logdb - Error table history - DBD::mysql::st execute failed: MySQL server has gone away [for Statement "INSERT IGNORE INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES (...)"] at ./FHEM/93_DbLog.pm line 2755.
2023.01.08 04:32:23 2: DbLog logdb - Error - DBD::mysql::db rollback failed: Turning on AutoCommit failed at ./FHEM/93_DbLog.pm line 4170.
2023.01.08 04:32:26 2: DbLog logdb - Error table history - Can't call method "prepare" on unblessed reference at ./FHEM/93_DbLog.pm line 2746.
2023.01.08 04:32:26 2: DbLog logdb - Error - Can't call method "rollback" on unblessed reference at ./FHEM/93_DbLog.pm line 4170.


Und später dann, als die DB wieder da war:
2023.01.08 09:24:10 2: DbLog logdb - Error - DBD::mysql::db rollback failed: Turning on AutoCommit failed at ./FHEM/93_DbLog.pm line 4170.
2023.01.08 09:24:14 2: DbLog logdb - Error table history - Can't call method "prepare" on unblessed reference at ./FHEM/93_DbLog.pm line 2746.
2023.01.08 09:24:14 2: DbLog logdb - Error - Can't call method "rollback" on unblessed reference at ./FHEM/93_DbLog.pm line 4170.
2023.01.08 09:24:20 3: DbLog logdb - Database disconnected by request. <br>Stored DB params in SubProcess were deleted.
2023.01.08 09:24:20 3: DbLog logdb - DB connection parameters are stored in SubProcess
2023.01.08 09:24:28 3: DbLog logdb - SubProcess connected to fhem
2023.01.08 09:24:34 2: DbLog logdb - Error table history - DBD::mysql::st execute failed: MySQL server has gone away [for Statement "INSERT IGNORE INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES (...)"] at ./FHEM/93_DbLog.pm line 2755.
2023.01.08 09:24:34 2: DbLog logdb - Error - DBD::mysql::db rollback failed: Turning on AutoCommit failed at ./FHEM/93_DbLog.pm line 4170.
2023.01.08 09:24:35 2: DbLog logdb - Error table history - Can't call method "prepare" on unblessed reference at ./FHEM/93_DbLog.pm line 2746.
2023.01.08 09:24:35 2: DbLog logdb - Error - Can't call method "rollback" on unblessed reference at ./FHEM/93_DbLog.pm line 4170.
2023.01.08 09:24:45 3: DbLog logdb - SubProcess connected to fhem
2023.01.08 09:24:50 2: DbLog logdb - Error table history - DBD::mysql::st execute failed: MySQL server has gone away [for Statement "INSERT IGNORE INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES (...)"] at ./FHEM/93_DbLog.pm line 2755.
2023.01.08 09:24:50 2: DbLog logdb - Error - DBD::mysql::db rollback failed: Turning on AutoCommit failed at ./FHEM/93_DbLog.pm line 4170.
2023.01.08 09:24:54 2: DbLog logdb - Error table history - Can't call method "prepare" on unblessed reference at ./FHEM/93_DbLog.pm line 2746.
2023.01.08 09:24:54 2: DbLog logdb - Error - Can't call method "rollback" on unblessed reference at ./FHEM/93_DbLog.pm line 4170.
2023.01.08 09:25:09 3: DbLog logdb - SubProcess connected to fhem


Wobei die "..." alle Daten sind, die in die DB geschrieben werden sollten.

Hier noch das Listing:
Internals:
   COLUMNS    field length used for Device: 64, Type: 64, Event: 0, Reading: 128, Value: 128, Unit: 32
   CONFIGURATION ./db.conf
   DEF        ./db.conf .*:.*
   FD         5
   FUUID      5c83ff6d-f33f-d125-10cd-28b46c8630c70722
   FVERSION   93_DbLog.pm:v5.5.9-s26923/2022-12-29
   MODE       asynchronous
   MODEL      MYSQL
   NAME       logdb
   NR         2
   NTFY_ORDER 50-logdb
   PID        429
   REGEXP     .*:.*
   SBP_PID    23417
   SBP_STATE  running
   STATE      connected
   TYPE       DbLog
   UTF8       1
   dbconn     mysql:database=fhem;host=nas.lokal;port=3306
   dbuser     fhem
   eventCount 3471
   HELPER:
     COLSET     1
     DEVICECOL  64
     EVENTCOL   0
     OLDSTATE   connected
     PACKAGE    main
     READINGCOL 128
     TC         current
     TH         history
     TYPECOL    64
     UNITCOL    32
     VALUECOL   128
     VERSION    5.5.9
   Helper:
     DBLOG:
       CacheOverflowLastNum:
         logdb:
           TIME       1673170209.33208
           VALUE      0
       CacheOverflowLastState:
         logdb:
           TIME       1673166338.73315
           VALUE      normal
       state:
         logdb:
           TIME       1673168868.14695
           VALUE      connected
   OLDREADINGS:
   READINGS:
     2023-01-08 10:30:09   CacheOverflowLastNum 0
     2023-01-08 09:25:38   CacheOverflowLastState normal
     2023-01-08 10:30:29   CacheUsage      112
     2023-01-08 10:30:09   NextSync        2023-01-08 10:30:39 or when CacheUsage 500 is reached
     2023-01-08 10:30:09   state           connected
     2016-05-05 19:48:44   userCommand     SELECT type, name FROM sqlite_master WHERE type='table' OR type='view' ORDER BY name;
   hmccu:
Attributes:
   DbLogSelectionMode Exclude/Include
   asyncMode  1
   colEvent   0
   colReading 128
   colValue   128

(wobei hier bulkInsert schon fehlt, das war vorher 1)

Könntest du mal schauen, ob es hier ein Problem mit dem Reconnect gibt?

Danke & Gruß
Hanjo
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 08 Januar 2023, 11:45:22
Hallo Hanjo,

danke für die Meldung.
Ich schaue es mir an.
Ein Teil des Problems sollte sich bereits mit der Version im contrib 5.5.10 beseitigt sein.

Möglicherweise habe ich bis heute Abend noch eine Ergänzung für die contrib 5.5.10.

EDIT: bedeutet das reconnect Problem ist mit bulkInsert = 0 (oder gelöscht) nicht mehr da ?

LG
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: Hanjo am 08 Januar 2023, 12:35:17
Danke  :)

Zitat von: DS_Starter am 08 Januar 2023, 11:45:22
bedeutet das reconnect Problem ist mit bulkInsert = 0 (oder gelöscht) nicht mehr da ?

Gute Frage - ich hatte das Attribut gelöscht und danach ging es wieder, aber seitdem lief kein Backup mehr.  Ich bleibe mal die nächste Nacht noch auf der v5.5.9; morgen früh kann ich dann reporten, ob der Reconnect ohne bulkInsert = 1 funktioniert.

Gruß
Hanjo
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 08 Januar 2023, 12:43:59
Nimm ruhig schon die v aus dem contrib.
Da ist schon viel eingeflossen.
Bringt uns mehr nach vorn.

Lg
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 08 Januar 2023, 20:14:05
@all,

ich habe die Version 5.5.10 im contrib upgedated.
Das von Hanjo oben gemeldete Problem sollte gelöst sein.

Desweiteren wird die Logausgabe bei dauerhaften Verbindungsproblemen (Wartung, Backup, etc.) begrenzt:


2023.01.08 18:11:07.642 2: DbLog LogDB - ERROR: DBI connect('database=fhemtest;host=192.168.2.44;port=3306','fhemtest',...) failed: Can't connect to MySQL server on '192.168.2.44' (115) at ./FHEM/93_DbLog.pm line 2484.

2023.01.08 18:11:11.703 2: DbLog LogDB - ERROR: DBI connect('database=fhemtest;host=192.168.2.44;port=3306','fhemtest',...) failed: Can't connect to MySQL server on '192.168.2.44' (115) at ./FHEM/93_DbLog.pm line 2484.

2023.01.08 18:11:14.775 2: DbLog LogDB - ERROR: DBI connect('database=fhemtest;host=192.168.2.44;port=3306','fhemtest',...) failed: Can't connect to MySQL server on '192.168.2.44' (115) at ./FHEM/93_DbLog.pm line 2484.

2023.01.08 18:11:17.847 2: DbLog LogDB - ERROR: DBI connect('database=fhemtest;host=192.168.2.44;port=3306','fhemtest',...) failed: Can't connect to MySQL server on '192.168.2.44' (115) at ./FHEM/93_DbLog.pm line 2484.

2023.01.08 18:11:20.919 2: DbLog LogDB - ERROR: DBI connect('database=fhemtest;host=192.168.2.44;port=3306','fhemtest',...) failed: Can't connect to MySQL server on '192.168.2.44' (115) at ./FHEM/93_DbLog.pm line 2484.

2023.01.08 18:11:23.991 2: DbLog LogDB - ERROR: DBI connect('database=fhemtest;host=192.168.2.44;port=3306','fhemtest',...) failed: Can't connect to MySQL server on '192.168.2.44' (115) at ./FHEM/93_DbLog.pm line 2484.

2023.01.08 18:11:30.455 2: DbLog LogDB - ERROR: DBI connect('database=fhemtest;host=192.168.2.44;port=3306','fhemtest',...) failed: Can't connect to MySQL server on '192.168.2.44' (115) at ./FHEM/93_DbLog.pm line 2484.

2023.01.08 18:11:33.527 2: DbLog LogDB - ERROR: DBI connect('database=fhemtest;host=192.168.2.44;port=3306','fhemtest',...) failed: Can't connect to MySQL server on '192.168.2.44' (115) at ./FHEM/93_DbLog.pm line 2484.

2023.01.08 18:11:41.815 2: DbLog LogDB - ERROR: DBI connect('database=fhemtest;host=192.168.2.44;port=3306','fhemtest',...) failed: Can't connect to MySQL server on '192.168.2.44' (115) at ./FHEM/93_DbLog.pm line 2484.

2023.01.08 18:11:44.887 2: DbLog LogDB - ERROR: DBI connect('database=fhemtest;host=192.168.2.44;port=3306','fhemtest',...) failed: Can't connect to MySQL server on '192.168.2.44' (115) at ./FHEM/93_DbLog.pm line 2484.

2023.01.08 18:11:47.959 2: DbLog LogDB - ERROR: DBI connect('database=fhemtest;host=192.168.2.44;port=3306','fhemtest',...) failed: Can't connect to MySQL server on '192.168.2.44' (115) at ./FHEM/93_DbLog.pm line 2484.

2023.01.08 18:11:47.960 2: DbLog LogDB - There seems to be a permanent connection error to the database. Further error messages are suppressed.


Desweiteren ist configCheck ergänzt um ein Rating Ampelsystem.
Dadurch sieht man schnell ob es Punkte gibt, die eine Prüfung oder Aufmerksamkeit erfordern (Anhang).

Liegt im contrib.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: Hanjo am 08 Januar 2023, 20:22:01
Super - danke. Ich habe die Version installiert und werde morgen berichten. Ich lass es jetzt erst mal eine Nacht ohne Bulk laufen und stelle dann wieder um.

Gruß
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: Hanjo am 09 Januar 2023, 07:49:07
Guten Morgen,

kurzer Statusbericht: heute Nacht gab es keine Probleme. Die Log-Einträge haben sich auf folgende Zeilen beschränkt:
2023.01.09 04:03:08 2: DbLog logdb - ERROR: DBI connect('database=fhem;host=nas.lokal;port=3306','fhem',...) failed: Can't connect to MySQL server on 'nas.lokal' (111) at ./FHEM/93_DbLog.pm line 2484.
2023.01.09 04:03:38 2: DbLog logdb - ERROR: DBI connect('database=fhem;host=nas.lokal;port=3306','fhem',...) failed: Can't connect to MySQL server on 'nas.lokal' (111) at ./FHEM/93_DbLog.pm line 2484.
2023.01.09 04:03:50 2: DbLog logdb - ERROR: DBI connect('database=fhem;host=nas.lokal;port=3306','fhem',...) failed: Can't connect to MySQL server on 'nas.lokal' (111) at ./FHEM/93_DbLog.pm line 2484.
2023.01.09 04:03:51 2: DbLog logdb - ERROR: DBI connect('database=fhem;host=nas.lokal;port=3306','fhem',...) failed: Can't connect to MySQL server on 'nas.lokal' (111) at ./FHEM/93_DbLog.pm line 2484.
2023.01.09 04:04:06 2: DbLog logdb - ERROR: DBI connect('database=fhem;host=nas.lokal;port=3306','fhem',...) failed: Can't connect to MySQL server on 'nas.lokal' (111) at ./FHEM/93_DbLog.pm line 2484.
2023.01.09 04:04:23 2: DbLog logdb - ERROR: DBI connect('database=fhem;host=nas.lokal;port=3306','fhem',...) failed: Can't connect to MySQL server on 'nas.lokal' (111) at ./FHEM/93_DbLog.pm line 2484.
2023.01.09 04:04:40 2: DbLog logdb - ERROR: DBI connect('database=fhem;host=nas.lokal;port=3306','fhem',...) failed: Can't connect to MySQL server on 'nas.lokal' (111) at ./FHEM/93_DbLog.pm line 2484.
2023.01.09 04:04:56 2: DbLog logdb - ERROR: DBI connect('database=fhem;host=nas.lokal;port=3306','fhem',...) failed: Can't connect to MySQL server on 'nas.lokal' (111) at ./FHEM/93_DbLog.pm line 2484.
2023.01.09 04:05:11 2: DbLog logdb - ERROR: DBI connect('database=fhem;host=nas.lokal;port=3306','fhem',...) failed: Can't connect to MySQL server on 'nas.lokal' (111) at ./FHEM/93_DbLog.pm line 2484.
2023.01.09 04:05:26 2: DbLog logdb - ERROR: DBI connect('database=fhem;host=nas.lokal;port=3306','fhem',...) failed: Can't connect to MySQL server on 'nas.lokal' (111) at ./FHEM/93_DbLog.pm line 2484.
2023.01.09 04:05:41 2: DbLog logdb - ERROR: DBI connect('database=fhem;host=nas.lokal;port=3306','fhem',...) failed: Can't connect to MySQL server on 'nas.lokal' (111) at ./FHEM/93_DbLog.pm line 2484.
2023.01.09 04:05:41 2: DbLog logdb - There seems to be a permanent connection error to the database. Further error messages are suppressed.
2023.01.09 04:35:36 3: DbLog logdb - SubProcess connected to fhem


Ich setze nun bulkInsert wieder auf 1 und berichte dann morgen wieder.

Grüße
Hanjo
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 09 Januar 2023, 17:43:18
Hallo Hanjo,

kannst du bitte die V 5.5.11 aus dem contrib ziehen und bei dir zum Test einspielen ?

Ich habe noch etwas an der Verfügbarkeitserkennung der DB verbessert und einiges im Code strukturiert.
Das möchte ich bei dir gleich mit in den Test einfließen lassen.
Funktional hat sich nichts geändert.

LG
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: Hanjo am 09 Januar 2023, 20:03:13
Hi Heiko,

ok, habe ich installiert. Allerdings kam gleich nach dem Neustart von FHEM einmalig folgende Fehlermeldung:
2023.01.09 19:56:23 2: DbLog logdb - Error table history - DBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1 [for Statement "INSERT IGNORE INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES"] at ./FHEM/93_DbLog.pm line 2714.

Seitdem scheint es aber zu gehen.

Ich habe mal das Log durchgeschaut, ich hatte den Fehler auch vorher schon mal in der Version v5.5.10:
2023.01.09 17:45:28 2: DbLog logdb - Error table history - DBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1 [for Statement "INSERT IGNORE INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES"] at ./FHEM/93_DbLog.pm line 2652.

Grüße
Hanjo
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 09 Januar 2023, 20:12:49
Die Version habe ich natürlich vorher bei mir durchgetestet.
Dieser Fehler:


syntax to use near '' ...


kann erstmal nicht eingeordnet werden. Sieht aber nach einem speziellen Fall aus.
Schwierig zu sagen ohne zu wissen welche Daten genau geloggt werden sollten.
Wenn du die Situation provozieren kannst, dann lohnt es sich verbose 5 einzustellen um diese Daten zu sehen.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: Hanjo am 09 Januar 2023, 20:38:07
Zitat von: DS_Starter am 09 Januar 2023, 20:12:49
Wenn du die Situation provozieren kannst, dann lohnt es sich verbose 5 einzustellen um diese Daten zu sehen.

Habe mal ein bisschen rumgespielt, scheinbar erscheint der Fehler nach jedem Neustart von FHEM, so dass ich die Debug-Logdaten erzeugen konnte. Ich konnte auf den ersten Blick nichts außergewöhnliches an den Daten feststellen... Da das recht umfangreich ist und reale Daten von mir enthält, schicke ich dir das per PN.

Danke & Gruß
Hanjo
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: Hanjo am 10 Januar 2023, 07:45:05
Morgen Heiko,

mit bulkInsert = 1 hatte ich heute morgen wieder das gleiche Problem:
Internals:
   COLUMNS    field length used for Device: 64, Type: 64, Event: 0, Reading: 128, Value: 128, Unit: 32
   CONFIGURATION ./db.conf
   DEF        ./db.conf .*:.*
   FD         5
   FUUID      5c83ff6d-f33f-d125-10cd-28b46c8630c70722
   FVERSION   93_DbLog.pm:v5.5.11-s26923/2023-01-09
   MODE       asynchronous
   MODEL      MYSQL
   NAME       logdb
   NR         2
   NTFY_ORDER 50-logdb
   PID        19196
   REGEXP     .*:.*
   SBP_PID    19197
   SBP_STATE  running
   STATE      DBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1 [for Statement "INSERT IGNORE INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES"] at ./FHEM/93_DbLog.pm line 2714.

   TYPE       DbLog
   UTF8       1
   dbconn     mysql:database=fhem;host=nas.lokal;port=3306
   dbuser     fhem
   eventCount 2182
   HELPER:
     COLSET     1
     DEVICECOL  64
     EVENTCOL   0
     LASTLIMITRUNTIME 1673332655.14323
     OLDSTATE   DBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1 [for Statement "INSERT IGNORE INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES"] at ./FHEM/93_DbLog.pm line 2714.

     PACKAGE    main
     READINGCOL 128
     TC         current
     TH         history
     TYPECOL    64
     UNITCOL    32
     VALUECOL   128
     VERSION    5.5.11
   Helper:
     DBLOG:
       CacheOverflowLastNum:
         logdb:
           TIME       1673332652.42455
           VALUE      100875
       CacheOverflowLastState:
         logdb:
           TIME       1673319030.12353
           VALUE      exceeded
       state:
         logdb:
           TIME       1673332658.30111
           VALUE      DBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1 [for Statement "INSERT IGNORE INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES"] at ./FHEM/93_DbLog.pm line 2714.

   OLDREADINGS:
   READINGS:
     2023-01-10 07:37:32   CacheOverflowLastNum 100876
     2023-01-10 03:50:30   CacheOverflowLastState exceeded
     2023-01-10 07:37:39   CacheUsage      36
     2023-01-10 07:37:32   NextSync        2023-01-10 07:38:02 or when CacheUsage 500 is reached
     2023-01-10 07:37:38   state           DBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1 [for Statement "INSERT IGNORE INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES"] at ./FHEM/93_DbLog.pm line 2714.

     2016-05-05 19:48:44   userCommand     SELECT type, name FROM sqlite_master WHERE type='table' OR type='view' ORDER BY name;
Attributes:
   DbLogSelectionMode Exclude/Include
   asyncMode  1
   bulkInsert 1
   colEvent   0
   colReading 128
   colValue   128


Nachdem ich bulkInsert gelöscht hatte, konnten die Daten sofort gespeichert werden:
Internals:
   COLUMNS    field length used for Device: 64, Type: 64, Event: 0, Reading: 128, Value: 128, Unit: 32
   CONFIGURATION ./db.conf
   DEF        ./db.conf .*:.*
   FD         5
   FUUID      5c83ff6d-f33f-d125-10cd-28b46c8630c70722
   FVERSION   93_DbLog.pm:v5.5.11-s26923/2023-01-09
   MODE       asynchronous
   MODEL      MYSQL
   NAME       logdb
   NR         2
   NTFY_ORDER 50-logdb
   PID        19196
   REGEXP     .*:.*
   SBP_PID    19197
   SBP_STATE  running
   STATE      connected
   TYPE       DbLog
   UTF8       1
   dbconn     mysql:database=fhem;host=nas.lokal;port=3306
   dbuser     fhem
   eventCount 2195
   HELPER:
     COLSET     1
     DEVICECOL  64
     EVENTCOL   0
     OLDSTATE   connected
     PACKAGE    main
     READINGCOL 128
     TC         current
     TH         history
     TYPECOL    64
     UNITCOL    32
     VALUECOL   128
     VERSION    5.5.11
   Helper:
     DBLOG:
       CacheOverflowLastNum:
         logdb:
           TIME       1673332763.08652
           VALUE      0
       CacheOverflowLastState:
         logdb:
           TIME       1673332733.02672
           VALUE      normal
       state:
         logdb:
           TIME       1673332761.25858
           VALUE      connected
   OLDREADINGS:
   READINGS:
     2023-01-10 07:39:23   CacheOverflowLastNum 0
     2023-01-10 07:38:53   CacheOverflowLastState normal
     2023-01-10 07:39:23   CacheUsage      478
     2023-01-10 07:39:23   NextSync        2023-01-10 07:39:53 or when CacheUsage 500 is reached
     2023-01-10 07:39:23   state           connected
     2016-05-05 19:48:44   userCommand     SELECT type, name FROM sqlite_master WHERE type='table' OR type='view' ORDER BY name;
   hmccu:
Attributes:
   DbLogSelectionMode Exclude/Include
   asyncMode  1
   colEvent   0
   colReading 128
   colValue   128


Ich habe auch noch das Logfile mit den genauen Einträgen, aber das kann ich erst heute Abend analysieren.

Grüße
Hanjo
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 10 Januar 2023, 08:21:00
Moin,

Jetzt wird deutlicher dass an irgendeiner Stelle die zu speichernden Daten problematisch sind.
Die Speichermodi arbeiten unterschiedlich. Deswegen ist der Array Modus der Standard.
Er ist langsamer bei Mengendaten, aber behandelt Daten und Fehler anders.

Vllt. bekommen wir die Ursache noch heraus.

Lg
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 10 Januar 2023, 11:32:48
Hi Hanjo,

ich habe im I-net einen Hinweis gefunden den versuche ich heute Abend einzubauen. Ggf gibt es ein Update.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: Hanjo am 10 Januar 2023, 20:37:27
Hi Heiko,

na das hört sich ja schon mal gut an  :)

Im Log habe ich folgendes gefunden, die Meldung dort ist ein bisschen anders als im State Reading:
2023.01.10 04:26:15 3: DbLog logdb - SubProcess connected to fhem
2023.01.10 04:26:15 2: DbLog logdb - Error table history - DBD::mysql::st execute failed: MySQL server has gone away [for Statement "INSERT IGNORE INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES (...)"] at ./FHEM/93_DbLog.pm line 2714.

2023.01.10 04:26:15 2: DbLog logdb - Error - DBD::mysql::db rollback failed: Turning on AutoCommit failed at ./FHEM/93_DbLog.pm line 4129.

2023.01.10 04:26:16 1: PERL WARNING: (in cleanup) DBD::mysql::db DESTROY failed: MySQL server has gone away at ./FHEM/93_DbLog.pm line 2436.
2023.01.10 04:26:16 2: DbLog logdb - Error table history - DBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1 [for Statement "INSERT IGNORE INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES"] at ./FHEM/93_DbLog.pm line 2714.

2023.01.10 04:26:31 2: DbLog logdb - Error table history - DBD::mysql::st execute failed: MySQL server has gone away [for Statement "INSERT IGNORE INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES (...)"] at ./FHEM/93_DbLog.pm line 2714.

2023.01.10 04:26:31 2: DbLog logdb - Error - DBD::mysql::db rollback failed: Turning on AutoCommit failed at ./FHEM/93_DbLog.pm line 4129.


"MySQL server has gone away", das hatten wir auch schon mal in einem der vorherigen Logs, also habe ich jetzt mal eine Test-Tabelle angelegt und das vollständige SQL Statement aus dem Logfile versucht manuell einzufügen:
$ mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 776
Server version: 10.3.32-MariaDB Source distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> use fhem;
Database changed
MariaDB [fhem]> source /volume1/Temp/fhem-tmp.sql;
ERROR 2006 (HY000) at line 1 in file: '/volume1/Temp/fhem-tmp.sql': MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    777
Current database: fhem

ERROR 2006 (HY000) at line 1 in file: '/volume1/Temp/fhem-tmp.sql': MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    778
Current database: fhem

ERROR 2006 (HY000) at line 1 in file: '/volume1/Temp/fhem-tmp.sql': MySQL server has gone away


Scheinbar liegt der Fehler an der Konfiguration meines Servers, oder vielmehr an einer unglücklichen Kombination aus Serverkonfiguration und extrem großen Inserts mit mehreren Zehntausend Einträgen. Ist z.B. hier beschrieben:
https://stackoverflow.com/questions/10474922/error-2006-hy000-mysql-server-has-gone-away

Also mal max_allowed_packet erhöhen und neuer Versuch:
MariaDB [fhem]> set global max_allowed_packet=64*1024*1024;
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    779
Current database: fhem

Query OK, 0 rows affected (0.001 sec)

MariaDB [fhem]> source /volume1/Temp/fhem-tmp.sql;
Query OK, 15110 rows affected (1.344 sec)
Records: 15110  Duplicates: 0  Warnings: 0


Tada... :)

Also gibt es zwei Möglichkeiten:

Scheinbar habe ich hier einen außergewöhnlichen Fall entdeckt. Komisch nur, dass es mit der alten Version des Moduls kein Problem gab.

Deine Gedanken?

Grüße
Hanjo
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 10 Januar 2023, 21:03:58
Hallo Hanjo,


Tada... :)

Also gibt es zwei Möglichkeiten:

    Entweder der doofe User (ich) muss den Wert dauerhaft in seiner my.cnf ändern, oder
    Das Modul muss auch bei "Bulk" den Insert bei Überschreiten der kritischen Größe in mehrere kleinere Inserts aufteilen...


Genau das habe ich gerade (als Nebenbei-Effekt) getan. Dadurch verschlechtert sich die Performance des BulkInsert ein ganz klein wenig, aber da wir ohnehin nur noch non-blocking mit dem Subprozess unterwegs sind, ist das nicht der Rede wert.

Die Version liegt im Contrib.

Grüße,
Heiko
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: Hanjo am 10 Januar 2023, 21:13:33
Ja super, großartig, danke!

Ich habe die Version installiert und bulkInsert wieder auf 1 gesetzt. Werde morgen früh berichten :)

Gruß
Hanjo
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: Hanjo am 11 Januar 2023, 09:44:29
Guten Morgen,

heute Nacht ging alles glatt, keine Probleme mehr  :)

Vielen Dank für deine Unterstützung!

Grüße
Hanjo
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 11 Januar 2023, 09:53:44
Moin,

das hört sich gut an.
Ich werde die Version finalisieren und vermutlich heute Abend einchecken. Es sind jetzt viele Lösungen für gemeldetete Issues eingeflossen.
Das Attr bulkInsert werde ich zukünftig wohl (automatisiert) umbenennen. Durch die Änderungen ist es kein wirklicher BulkInsert mehr.
Der Begriff "insertMode" trifft es dann allgemeiner/besser.

LG
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 11 Januar 2023, 20:38:05
@all,

die neue Version ist als V 5.6.0 eingescheckt.

Die Version enthält alle bisher gemeldeten und gelösten Issues sowie Verbesserungen.
Die für den User sichtbarste Änderung ist

* die Umbenennung des Attributs 'bulkInsert' zu 'insertMode'

Die Umbenennung des Attributs erfolgt automatisch. Der Nutzer muß nicht aktiv werden.

Im Log erscheint beim Start die Meldung:


..... 2: DbLog <Name> - Subprocess >4631< initialized ... ready for non-blocking operation
..... 3: WARNING: <Name> attribute bulkInsert was renamed to insertMode


LG
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 25 Januar 2023, 21:45:09
Hallo miteinander,

es gibt wieder eine neue Version im contrib.
Wegen dem hier (https://forum.fhem.de/index.php/topic,131790.msg1259709.html#msg1259709) aufgefallenen Issue habe ich die Ausgaben in das Logfile komplett überarbeitet.
Außerdem gibt es einige neue get-Kommandos um "auf die Schnelle" Werte aus der DB ziehen und wenn benötigt Variablen
zuordnen zu können.
Auszug aus der Commandref:

         get <name> ReadingsMaxVal[Timestamp] <Device> <Reading> <default>

        Ermittelt den Datensatz mit dem größten Wert der angegebenen Device / Reading Kombination aus der history Tabelle.
        Zurück gegeben wird nur der Wert oder die Kombination aus Wert und Timestamp als String "<Wert> , <Timestamp>".
        <default> gibt einen definierten Rückgabewert an, wenn kein Wert ermittelt werden kann.         <default> gibt einen definierten Rückgabewert an, wenn kein Wert in der Datenbank gefunden wird.


Zu beachten ist, dass alle die Kommandos blockierend arbeiten.

Die Version liegt wieder zunächst in meinem contrib.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: betateilchen am 25 Januar 2023, 22:19:07
Super, danke! Werde ich in den nächsten Tagen testen.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 27 Januar 2023, 15:19:36
Ich habe DbLog noch ein Get-Menü spendiert.
Damit ist es nun für den User leichter eine schnelle Abfrage der DB über die vorderfinierten Getter auszuführen.
Es ist auch ein leichter Vorgriff weil ich noch Ideen habe die Get-Möglichkeiten zu erweitern.

Liegt im contrib zum Test.

Frage zu webchart und Tabell Frontend hat sich erledigt. Habe weiter recherchiert und alle Infos dazu gefunden soweit.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: thburkhart am 27 Januar 2023, 17:08:30
kann es sein, dass es nun mit dblogreduce der Probleme gibt.

Dies trat heute Nacht erstmals auf:
2023.01.27 02:00:05 3: DbRep Reduce_Daily - Initial data information retrieved - total time used: 5.7753 seconds
2023.01.27 02:00:06 3: DbRep Reduce_Daily - Connectiontest to db mysql:database=fhem;host=localhost;port=3306 successful
2023.01.27 02:00:06 3: DbRep Reduce_Daily - reduce data older than: 2022-12-28 23:59:59, newer than: 2022-12-26 00:00:00
2023.01.27 02:00:06 3: DbRep Reduce_Daily - reduceLog requested with options:
average=day
INCLUDE -> Devs: % Readings: %
2023.01.27 02:00:17 3: DbRep Reduce_Daily - reduceLog (daily-average) updating 250, deleting 4426 records of day: 2022-12-26
2023.01.27 02:01:21 2: DbLog dblog_THB - ERROR table history - DBD::mysql::st execute failed: Lock wait timeout exceeded; try restarting transaction [for Statement "INSERT INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES (?,?,?,?,?,?,?)" with ParamValues: 0='2023-01-27 02:00:01', 1='TX29DTH_16', 2='LACROSSE', 3='state: T: 19.8 H: 26', 4='state', 5='T: 19.8 H: 26', 6=undef] at ./FHEM/93_DbLog.pm line 2769.

2023.01.27 02:01:21 2: DbLog dblog_THB - Transaction is switched off. Transferred data is lost.
2023.01.27 02:02:21 2: DbLog dblog_THB - ERROR table history - DBD::mysql::st execute failed: Lock wait timeout exceeded; try restarting transaction [for Statement "INSERT INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES (?,?,?,?,?,?,?)" with ParamValues: 0='2023-01-27 02:00:31', 1='MAX_BAD_HT', 2='MAX', 3='valveposition: 47', 4='valveposition', 5='47', 6='%'] at ./FHEM/93_DbLog.pm line 2769.

und noch viele, viele weitere bis 8:00



ich hatte es daran bemerkt, dass ich in den Gplots seit 2:00 nichts mehr angezeigt wurde.
Nach shutdown restart wurde danach wieder korrekt in die DB geschrieben.

das ist wohl das zugrundeliegende DEF:

[code]define Reduce_Daily DbRep dblog_THB
attr Reduce_Daily room DBLog
attr Reduce_Daily showproctime 1
attr Reduce_Daily timeDiffToNow d:32
attr Reduce_Daily timeOlderThan d:30
#   DATABASE   fhem
#   DEF        dblog_THB
#   FUUID      63b06a6d-f33f-fd5f-cbee-933b87fab6caca0d
#   FVERSION   93_DbRep.pm:v8.51.3-s27102/2023-01-22
#   LASTCMD    initial database connect stopped due to attribute 'fastStart'
#   MODEL      Client
#   NAME       Reduce_Daily
#   NOTIFYDEV  global,Reduce_Daily
#   NR         121
#   NTFY_ORDER 50-Reduce_Daily
#   ROLE       Client
#   STATE      initialized
#   TYPE       DbRep
#   UTF8       0
#   HELPER:
#     DBLOGDEVICE dblog_THB
#     IDRETRIES  3
#     PACKAGE    main
#     VERSION    8.51.3
#   READINGS:
#     2023-01-27 14:33:39   state           initialized
#
setstate Reduce_Daily initialized
setstate Reduce_Daily 2023-01-27 14:33:39 state initialized

[/code]



Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 27 Januar 2023, 17:20:16
Zitat
kann es sein, dass es nun mit dblogreduce der Probleme gibt.

Eher nicht.

Das liegt daran dass die Tabelle history während des reducelog gesperrt ist.
Der DbLog Prozess läuft dann irgendwann auf einen Timeout ->

Zitat
DbLog dblog_THB - ERROR table history - DBD::mysql::st execute failed: Lock wait timeout exceeded;

wenn reducelog bzw. die Tabellensperre zu lange dauert.

Um das Problem zu verhindern bietet sich an im DbRep Attr executeBeforeProc vor dem reducelog DbLog zu "pausieren"


executeBeforeProc  set <DbLog> reopen 86400


und im Attr executeAfterProc  wieder zu starten:


executeAfterProc  set <DbLog> reopen


Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: thburkhart am 27 Januar 2023, 18:25:20
Zitat von: DS_Starter am 27 Januar 2023, 17:20:16
Eher nicht.

Das liegt daran dass die Tabelle history während des reducelog gesperrt ist.
Der DbLog Prozess läuft dann irgendwann auf einen Timeout ->

wenn reducelog bzw. die Tabellensperre zu lange dauert.

Um das Problem zu verhindern bietet sich an im DbRep Attr executeBeforeProc vor dem reducelog DbLog zu "pausieren"


executeBeforeProc  set <DbLog> reopen 86400


und im Attr executeAfterProc  wieder zu starten:


executeAfterProc  set <DbLog> reopen


oh danke

wo baue ich das genauer ein:

das findet vorher statt:

2023.01.27 00:18:39 3: DbRep ReportDbLog_THB - 2084126 records inserted (size of backupfile: 418.90 MB)
2023.01.27 00:18:39 3: DbRep ReportDbLog_THB - Deleting old dumpfile 'fhem_2023_01_24_00_10.sql'
2023.01.27 00:18:39 3: DbRep ReportDbLog_THB - Finished backup of database fhem - total time used (hh:mm:ss): 00:08:39
2023.01.27 00:18:40 3: DbRep ReportDbLog_THB - Database dump finished successfully.
2023.01.27 01:08:36 1: PERL WARNING: Use of uninitialized value $type in hash element at ./FHEM/14_CUL_MAX.pm line 821.
2023.01.27 01:08:36 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/14_CUL_MAX.pm line 821.
2023.01.27 01:08:36 1: PERL WARNING: Use of uninitialized value $testresult in concatenation (.) or string at ./FHEM/14_CUL_MAX.pm line 821.
2023.01.27 01:08:36 1: PERL WARNING: Use of uninitialized value $serial in concatenation (.) or string at ./FHEM/14_CUL_MAX.pm line 821.
2023.01.27 01:30:00 3: DbLog dblog_THB - Reopen requested
2023.01.27 01:30:00 3: set dblog_THB reopen : Reopen executed.
2023.01.27 01:30:00 3: DbLog_reopen: Reopen executed.
2023.01.27 01:30:00 3: DbLog dblog_THB - Database disconnected by request.
2023.01.27 01:30:00 3: DbLog dblog_THB - SubProcess connected to fhem
2023.01.27 02:00:00 3: DbRep Reduce_Daily - ################################################################
2023.01.27 02:00:00 3: DbRep Reduce_Daily - ###                    new reduceLog run                     ###
2023.01.27 02:00:00 3: DbRep Reduce_Daily - ################################################################
2023.01.27 02:00:00 3: DbRep Reduce_Daily - get initial structure information of database "fhem", remaining attempts: 3
2023.01.27 02:00:00 3: DbRep Reduce_Daily - Connectiontest to database mysql:database=fhem;host=localhost;port=3306 with user fhemuser


der automatisierte dump wurde also korrekt abgeschlossen.
Dann erfolgt ebenso automatisiert um 1:30 ein reopen ; also genau zu falschen Zeit vorher statt nachher?

wie genauer baue ich also die "Verhinderungsbefehle" ein?

Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 28 Januar 2023, 08:21:31
Zitat
wie genauer baue ich also die "Verhinderungsbefehle" ein?

In deinem DbRep Reduce_Daily setzt du

attr Reduce_Daily  executeBeforeProc  set dblog_THB reopen 86400

und

attr Reduce_Daily  executeAfterProc  set dblog_THB reopen
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 28 Januar 2023, 20:26:49
Ich habe die möglichen Getter im DbLog noch erweitert.

get <name> dataRetrieval <querytype> <device> <reading> <from> <to> <offset> <limit>

    Liest Daten aus der Datenbank Tabelle history und gibt die Ergebnisse als JSON formatiert zurück.
    Die Abfragemethode bzw. das gewünschte Abfrageergebnis wird durch den angegebenen <querytype> bestimmt.
    Jeder <querytype> verlangt evtl. weitere Parameter gemäß der folgenden Tabelle. Nicht eingegebene Parameter sind immer   
    als "" anzugeben sofern danach noch ein weiterer Parameter eingegeben wird.

        getdevices         Ermittelt alle in der Datenbank gespeicherten Devices.
        getreadings       Ermittelt alle in der Datenbank gespeicherten Readings für ein bestimmtes Device.
        timerange         Ermittelt die gespeicherten Datensätze der angegebenen Device / Reading Kombination.
        getTableData     Ermittelt die gespeicherten Datensätze eines bestimmten Zeitraumes.
                                Die Anzahl der selektierten Datensätze wird als Schlüssel "totalcount" zurückgegeben.
        last                   Listet die letzten 10 gespeicherten Events auf.
        hourstats           Errechnet die Statistiken SUM, AVG, MIN, MAX, COUNT für eine Stunde.
        daystats            Errechnet die Statistiken SUM, AVG, MIN, MAX, COUNT für einen Tag.
        weekstats          Errechnet die Statistiken SUM, AVG, MIN, MAX, COUNT für eine Woche.
        monthstats        Errechnet die Statistiken SUM, AVG, MIN, MAX, COUNT für einen Monat.
        yearstats           Errechnet die Statistiken SUM, AVG, MIN, MAX, COUNT für ein Jahr.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: Nighthawk am 29 Januar 2023, 20:08:46
Hi Heiko,

das sind Hammer Neuigkeiten, genau das wonach ich gerade gesucht habe :-)

Danke & Gruß
Alex
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 29 Januar 2023, 20:18:28
Gerne  :)

Wahrscheinlich werde ich die Namensgebung der Getter noch etwas anpassen vor dem Einchecken, vllt. "get ... history allDevices" und "get ... history tableData" statt gettableData.
Weiß noch nicht so genau, sollte einfach etwas straffer und sprechender sein.
Aber das kriegst du dann hin denke ich.  ;)
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: thburkhart am 30 Januar 2023, 10:45:45
freue mich sehr auf die neue Version :-)

ist die dann final?
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 30 Januar 2023, 11:11:41
Ein "final" gibt es eigentlich bei dem Modul bzw. FHEM allgemein nicht.
Je nach Bedarf entwickle ich das Modul weiter. Es wird sicherlich Pausen geben in denen ich mich mit meinen anderen Modulen befasse die auch wieder Entwicklungen bekommen wie DbRep oder SolarForecast.
Und irgendwann gibt es auch bei DbLog etwas Neues, z.B. werden nach gewisser Zeit die abgekündigten Setter verschwinden.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: thburkhart am 30 Januar 2023, 15:56:05
Zitat von: DS_Starter am 30 Januar 2023, 11:11:41
Ein "final" gibt es eigentlich bei dem Modul bzw. FHEM allgemein nicht.

wir alle schätzen Deinen unermüdlichen Einsatz; der sollte kein Ende haben ;-)

ich meinte mit "final" die Version, die beim normale FHEM-Update mitkommt. Jedenfalls gibt es in dBlog die genialen Setters noch nicht.

andere Frage:
ich kämpfe immer noch mit durch at ausgelösten dblog-Befehlen.

z.B.

2023.01.30 04:00:00 3: set dblog_THB countEntries : Unknown argument, choose one of addCacheLine addLog clearReadings:noArg count:noArg configCheck:noArg countNbl:noArg deleteOldDays deleteOldDaysNbl eraseReadings:noArg listCache:noArg reduceLog reduceLogNbl rereadcfg:noArg reopen stopSubProcess:noArg userCommand commitCache:noArg exportCache:nopurge,purgecache purgeCache:noArg importCachefile

früher habe ich das mit  "count" gemacht.

so sieht die DEF aus:
[code]define RepDbLog_count at *04:00:00 { fhem("set dblog_THB countEntries") }
attr RepDbLog_count DbLogExclude .*
attr RepDbLog_count alias RepDbLog_count
attr RepDbLog_count disable 0
attr RepDbLog_count event-on-change-reading .*
attr RepDbLog_count room DBLog,xTimer
attr RepDbLog_count verbose 4
#   COMMAND    { fhem("set dblog_THB countEntries") }
#   DEF        *04:00:00 { fhem("set dblog_THB countEntries") }
#   FUUID      63cd6f92-f33f-fd5f-c6f6-d9f767190c9c2f09
#   NAME       RepDbLog_count
#   NR         2288
#   PERIODIC   yes
#   RELATIVE   no
#   REP        -1
#   STATE      Next: 04:00:00
#   TIMESPEC   04:00:00
#   TRIGGERTIME 1675134000
#   TRIGGERTIME_FMT 2023-01-31 04:00:00
#   TYPE       at
#   READINGS:
#     2023-01-30 14:07:33   state           Next: 04:00:00
#
setstate RepDbLog_count Next: 04:00:00
setstate RepDbLog_count 2023-01-30 14:07:33 state Next: 04:00:00

[/code]

ähnliches (fehlende argumente) passiert bei dbreducelog

Beste Grüße

Thomas

Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 30 Januar 2023, 16:11:30
Zitat
ich meinte mit "final" die Version, die beim normale FHEM-Update mitkommt. Jedenfalls gibt es in dBlog die genialen Setters noch nicht.
Die kommt dann bald, evtl.mit veränderter Namensgebung. Ich teste noch. Aber gebe wie immer Bescheid sobald der checkin erfolgt ist.

Zitat
set dblog_THB countEntries : Unknown argument,
Dieser Setter / syntax gilt für DbRep (wird auch so darauf hingewiesen) und nicht DbLog.
Wahrscheinlich trifft diese Problematik auch für reducelog zu.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: thburkhart am 30 Januar 2023, 16:40:34
Zitat von: DS_Starter am 30 Januar 2023, 16:11:30

Dieser Setter / syntax gilt für DbRep (wird auch so darauf hingewiesen) und nicht DbLog.
Wahrscheinlich trifft diese Problematik auch für reducelog zu.

hatte irgendwie im Hinterkopf, dass reducelog besser in der DbRep durchzuführen seien.

ich hatte sonst set dblog reducelog 365 average=day gestartet

in dbrep führt das (neuerdings) zum FehlerError - Wrong time limits. The (days newer than) option must be greater than the (older than) one
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 30 Januar 2023, 16:43:05
Wenn du Fragen zu DbRep hast, mach bitte einen neuen Thread auf oder nutze einfach den DbRep-Thread in "Sonstiges".
Ist hier OT.

@Thomas:
Zitat
Error - Wrong time limits. The (days newer than) option must be greater than the (older than) one
Es kann sein dass du nur jüngere Tage als das angegebene Alter (older than) in der Datenbank hast.

Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 30 Januar 2023, 21:44:02
Habe den Getter jetzt angepasst:

get <name> retrieve <querytype> <device> <reading> <from> <to> <offset> <limit>

    Liest Daten aus der Datenbank Tabelle history und gibt die Ergebnisse als JSON formatiert zurück.
    Die Abfragemethode bzw. das gewünschte Abfrageergebnis wird durch den angegebenen <querytype> bestimmt.
    Jeder <querytype> verlangt evtl. weitere Parameter gemäß der folgenden Tabelle. Nicht eingegebene Parameter sind immer
    als "" anzugeben sofern danach noch ein weiterer Parameter eingegeben wird.

        alldevices         Ermittelt alle in der Datenbank gespeicherten Devices.
        allreadings        Ermittelt alle in der Datenbank gespeicherten Readings für ein bestimmtes Device.
        timerange         Ermittelt die gespeicherten Datensätze der angegebenen Device / Reading Kombination.
        fetchrows         Ermittelt die gespeicherten Datensätze eines bestimmten Zeitraumes.
        last                 Listet die letzten 10 gespeicherten Events auf.
        hourstats         Errechnet die Statistiken SUM, AVG, MIN, MAX, COUNT für eine Stunde.
        daystats           Errechnet die Statistiken SUM, AVG, MIN, MAX, COUNT für einen Tag.
        weekstats         Errechnet die Statistiken SUM, AVG, MIN, MAX, COUNT für eine Woche.
        monthstats       Errechnet die Statistiken SUM, AVG, MIN, MAX, COUNT für einen Monat.
        yearstats          Errechnet die Statistiken SUM, AVG, MIN, MAX, COUNT für ein Jahr.

-> contrib
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 01 Februar 2023, 21:56:33
Ich habe die neue Version bei nun einige Tage auf allen Instanzen laufen lassen, keine Probleme.
Werde die V nun ins Repo bringen.

Sollte jemand webcharts (hat nichts mit SVG Plots zu tun sondern ist hier im Wiki (https://wiki.fhem.de/wiki/Neues_Charting_Frontend) beschrieben) einsetzen und Probleme feststellen, dann bitte melden.

LG
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 21 Februar 2023, 21:23:24
Hallo miteinander,

wie ihr hier (https://forum.fhem.de/index.php/topic,132313.msg1264704.html#msg1264704) nachlesen könnt, habe ich den DbLog Plot Editor Part überarbeitet und das schon lange vorhandene Manko beseitigt, dass man bei Nutzung einer Drop-Down Vorschlagsliste keine Funktion eingeben konnte bzw. eine im gplot-File gesetzte Funktion verloren ging wenn das File gelesen und gespeichert wurde wenn eine  Drop-Down Vorschlagsliste  benutzt wurde.

Rudi hat heute eine neue SVG Version eingecheckt die morgen früh im Update verteilt wird.Diese SVG ist die Voraussetzung für die überarbeitete DbLog Version die ich als 5.8.4 in mein contrib geladen habe.Damit ist nun die Verwendung einer Funktion im SVG Editor sowohl mit  als auch ohne Drop-Down Vorschlagsliste möglich.
Bevor ich einchecke würde ich mich freuen wenn der eine oder andere die Version ab morgen nach einem Update des SVG testen würde.
Grüße,Heiko
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: KlaGho am 22 Februar 2023, 09:55:42
Funktioniert 👍 super. Danke insbesondere auch für Piloteditoranpassung
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 22 Februar 2023, 10:56:56
Danke fürs Testen.

Ich hatte vergessen zu erwähnen, dass es mit der V 5.8.4 ein neues Attr plotInputFieldLength gibt um die Nutzung des  Plot Editors ein wenig komfortabler zu gestalten:

plotInputFieldLength <Ganzzahl>

    Breite der Plot Editor Eingabefelder für Device:Reading und Funktion.
    Wird die Drop-Down Liste als Eingabehilfe für Device:Reading verwendet, wird die Breite des Feldes automatisch eingestellt.
    (default: 40)

Es betriftt die Felder die im Post weiter oben in den Screenshots eingekreist sind.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 22 Februar 2023, 22:37:07
In der kommenden Version  5.8.4 wird das Attribut noNotifyDev entfernt/ausgesteuert.
Es war m.M. nach nie nötig es zu setzen. Die entsprechende Funktionalität wird durch fhem.pl sichergestellt.
Ist im contrib upgedated.

Sollte jemand einen Grund haben es zu weiterhin zu benötigen bitte mitteilen.
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 25 Februar 2023, 20:05:11
Hallo zusammen,

die neue Version ist eingescheckt und morgen früh verfügbar.
Was hat sich geändert ?

* der Plot Editor (DbLog Part) ist überarbeitet und verbessert
* das Attribut noNotifyDev wurde entfernt
* ein neues Attribut plotInputFieldLength für den Plot Editor ist eingebaut
* an der Commandref wurde weitergearbeitet

Grüße,
Heiko
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: thburkhart am 27 Februar 2023, 16:21:39
Zitat von: DS_Starter am 21 Februar 2023, 21:23:24
Hallo miteinander,

wie ihr hier (https://forum.fhem.de/index.php/topic,132313.msg1264704.html#msg1264704) nachlesen könnt, habe ich den DbLog Plot Editor Part überarbeitet und das schon lange vorhandene Manko beseitigt, dass man bei Nutzung einer Drop-Down Vorschlagsliste keine Funktion eingeben konnte bzw. eine im gplot-File gesetzte Funktion verloren ging wenn das File gelesen und gespeichert wurde wenn eine  Drop-Down Vorschlagsliste  benutzt wurde.

Rudi hat heute eine neue SVG Version eingecheckt die morgen früh im Update verteilt wird.Diese SVG ist die Voraussetzung für die überarbeitete DbLog Version die ich als 5.8.4 in mein contrib geladen habe.Damit ist nun die Verwendung einer Funktion im SVG Editor sowohl mit  als auch ohne Drop-Down Vorschlagsliste möglich.
Bevor ich einchecke würde ich mich freuen wenn der eine oder andere die Version ab morgen nach einem Update des SVG testen würde.
Grüße,Heiko

Hallo Heiko,
vielen Dank für das Update.
ich habe noch nicht kapiert, was man in das EingabeFeld unter Drop-down-Feld eingeben kann oder sollte.

lg

Thomas
Titel: Antw:DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 27 Februar 2023, 20:18:02
Zitat
ich habe noch nicht kapiert, was man in das EingabeFeld unter Drop-down-Feld eingeben kann oder sollte.
Man kann eine Funktion eingeben um Werte zur Anzeige zu verändern, z.B.  $val=($val=~"on"?10:1)
Beispiel ist im Wiki zu sehen -> https://wiki.fhem.de/wiki/SVG-Plots_von_FileLog_auf_DbLog_umstellen
Titel: Aw: DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: thburkhart am 19 März 2023, 21:15:01
Zitat von: DS_Starter am 27 Februar 2023, 20:18:02
Zitatich habe noch nicht kapiert, was man in das EingabeFeld unter Drop-down-Feld eingeben kann oder sollte.
Man kann eine Funktion eingeben um Werte zur Anzeige zu verändern, z.B.  $val=($val=~"on"?10:1)
Beispiel ist im Wiki zu sehen -> https://wiki.fhem.de/wiki/SVG-Plots_von_FileLog_auf_DbLog_umstellen

inzwischen habe ich das dazu verwendet, um die Delta-d  zu berechnen:
define SVG_TUYA_Stromverbrauch10_Delta SVG dblog_THB:SVG_TUYA_Stromverbrauch10_Delta:HISTORY
attr SVG_TUYA_Stromverbrauch10_Delta DbLogExclude .*
attr SVG_TUYA_Stromverbrauch10_Delta alias Stromverbrauch 10 Delta ThomasBüro
attr SVG_TUYA_Stromverbrauch10_Delta fixedrange 30days
attr SVG_TUYA_Stromverbrauch10_Delta room TUYA Stromverbrauch
#  CFGFN     
#  DEF        dblog_THB:SVG_TUYA_Stromverbrauch10_Delta:HISTORY
#  FUUID      6416db2d-f33f-fd5f-cee4-84ec9d20f2b1698a
#  GPLOTFILE  SVG_TUYA_Stromverbrauch10_Delta
#  LOGDEVICE  dblog_THB
#  LOGFILE    HISTORY
#  NAME      SVG_TUYA_Stromverbrauch10_Delta
#  NR        4001
#  STATE      initialized
#  TYPE      SVG
#  eventCount 1
#
setstate SVG_TUYA_Stromverbrauch10_Delta initialized

also unter Verwendung des Ploteditors.

allerdings entsteht im Plotfile ein Doppelpunkt zuviel:

#dblog_THB TUYA_SP11:energy:::delta-d:$val=($val/1000)
#dblog_THB TUYA_SP12:energy:::delta-d:$val=($val/1000)
#dblog_THB TUYA_SP13:energy:::delta-d:$val=($val/1000)
#dblog_THB TUYA_SP16:energy:::delta-d:$val=($val/1000)

erst wenn ich das mit einem Texteditor wie folgt richtigstelle

#dblog_THB TUYA_SP11:energy::delta-d:$val=($val/1000)
#dblog_THB TUYA_SP12:energy::delta-d:$val=($val/1000)
#dblog_THB TUYA_SP13:energy::delta-d:$val=($val/1000)
#dblog_THB TUYA_SP16:energy::delta-d:$val=($val/1000)

erscheinen tatsächlich die richtigen Differenzwerte im Plot.

Etwas lästig. Meine Dummheit oder noch ein kleiner Bug im Plot-Editor?
Passiert immer wenn man im Editor ein write macht; dann sinds auch wieder 3 Doppelpunkte

Gibt es inzwischen auch ein delta-m für Darstellung von Monats-Differenzen?
Gibt es überhaupt eine Beschreibung für die Definition von SVG's ?


Ich suche auch eine Darstellung z.B. von Summenwerten mehrerer Verbraucher nebeneinander als Balken (also anstelle der x-Achse als Zeitachse) für einen Tag, Monat oder Jahr bzw. definierten Zeitraum

viele Grüße und besten Dank

Thomas

die Suchfunktion im Forum geht seit heute nicht mehr? Lesezeichen sind weg?


Titel: Aw: DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 20 März 2023, 21:13:01
Danke für den Hinweis Thomas, das muss ich mir etwas genauer anschauen.
Möglicherweise habe ich etwas übersehen wenn man delta-d nutzen will. Das gehört nämlich nicht zur eigentlichen Funktion $val=($val/1000).

LG,
Heiko
Titel: Aw: DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 26 März 2023, 10:03:37
Hallo Thomas, @all,

ich habe den SVG Editor für DbLog gefixt, sodass die Funktionen delta-d etc. mit abgebildet werden können.
Abhängig ob mit oder ohne Vorschlagsliste gearbeitet wird, stellt sich die Verwendung wie in den Screenshots gezeigt dar.

Wie angekündigt, habe ich in dieser Version alle Setter die auf ..Nbl enden, entfernt.

Die Version 5.8.6 befindet sich zunächst in meinem contrib zum Test.

Grüße,
Heiko
Titel: Aw: DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: thburkhart am 26 März 2023, 20:23:32
Danke, Heiko :-)

was anders..

gibt es von jemand Erfahrungen im Zugriff auf die FHEM-Datenbank (MariaDb) per Connector wie https://www.devart.com/excel-addins/mysql/ (https://www.devart.com/excel-addins/mysql/) zu und von Excel .
oder über ODBC.

Herzliche Grüße

Thomas
Titel: Aw: DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 01 April 2023, 09:18:20
Die Version 5.8.6 ist jetzt eingecheckt.
Titel: Aw: DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: detmar am 03 April 2023, 18:26:17
Hallo Heiko,

ich hatte Dir ja schon per Mail geschrieben dass nach einem Update von FHEM ein DbLog-Problem auftaucht.
Meine Umgebung : Raspi mit aktualisiertem BUSTER
Die Version, die den Fehlwer erzeugt : $Id: 93_DbLog.pm 27379 2023-04-01 07:16:52Z DS_Starter $

Die Version $Id: 93_DbLog.pm 26289 2022-08-05 19:15:32Z DS_Starter $ macht den Fehler nicht.

Mein Logfileauszug :

2023.04.03 17:27:11 2: DbLog myDblog5 - Error table history - DBD::mysql::st execute_array failed: Column 'UNIT' cannot be null [err was 1048 now 2000000000] executing 30 generated 30 errors [for Statement "INSERT INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES (?,?,?,?,?,?,?)"] at /opt/fhem/FHEM/93_DbLog.pm line 3191.

2023.04.03 17:27:12 2: DbLog myDblog5 - Error table history - DBD::mysql::st execute_array failed: Column 'UNIT' cannot be null [err was 1048 now 2000000000] executing 36 generated 36 errors [for Statement "INSERT INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES (?,?,?,?,?,?,?)"] at /opt/fhem/FHEM/93_DbLog.pm line 3191.

2023.04.03 17:27:12 2: DbLog myDblog5 - Error table history - DBD::mysql::st execute_array failed: Column 'UNIT' cannot be null [err was 1048 now 2000000000] executing 45 generated 45 errors [for Statement "INSERT INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES (?,?,?,?,?,?,?)"] at /opt/fhem/FHEM/93_DbLog.pm line 3191.

2023.04.03 17:27:12 2: DbLog myDblog5 - Error table history - DBD::mysql::st execute_array failed: Column 'UNIT' cannot be null [err was 1048 now 2000000000] executing 51 generated 51 errors [for Statement "INSERT INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES (?,?,?,?,?,?,?)"] at /opt/fhem/FHEM/93_DbLog.pm line 3191.

Ich hatte Dir geschrieben, dass der Log durch Modul km200 erzweugt wird. Das war aber falsch. der DbLog myDblog5 schreibt 3 UserReadings ( berechnete Werte aus meinem SolarEdge-Strommessinstrument - über ModbusAttr abgefragt) in die Mysql-Datenbank.
Die Datenbank war generiert mit den Feldattributen NOT NULL . NULL wurde bisher wohl abgefangen und nach Leerstring gewandelt.

Die aktuelle Version von DbLog scheint etwas anderes zu machen.


Titel: Aw: DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 03 April 2023, 21:57:31
Das ist eine Meldung des Datenbanktreibers.
DbLog hat das bisher auch nicht anders behandelt, vllt. ist das Datenbankproblem in der alten Version nicht offensichtlich geworden.

Jedenfalls werden die Tabellen im Standard so definiert:

CREATE TABLE `fhem`.`history` (TIMESTAMP TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, DEVICE varchar(64), TYPE varchar(64), EVENT varchar(512), READING varchar(64), VALUE varchar(128), UNIT varchar(32));
CREATE TABLE `fhem`.`current` (TIMESTAMP TIMESTAMP, DEVICE varchar(64), TYPE varchar(64), EVENT varchar(512), READING varchar(64), VALUE varchar(128), UNIT varchar(32));

(das Script ist im FHEM contrib verfügbar)

Die einzigste Spalte die nicht NULL sein darf ist TIMESTAMP. Alle anderen dürfen NULL annehmen.
Ich denke du könntest das Problem mit diesem Statement lösen:

ALTER TABLE history MODIFY UNIT varchar(32) NULL;

Habe ich aber noch nicht getestet.
Titel: Aw: DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: detmar am 04 April 2023, 16:24:01
Das hatte ich mir auch schon überlegt.
Dennoch wäre es interessant zu wissen, warum die alte Version dieses Problem nicht hatte und alles ordnungsgemäß geloggt wurde.
Titel: Aw: DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 04 April 2023, 21:40:52
ZitatDennoch wäre es interessant zu wissen, warum die alte Version dieses Problem nicht hatte und alles ordnungsgemäß geloggt wurde
Sicher, ist aber jetzt müßig darüber zu spekulieren. Wenn die Spalte in der DB NULL nicht zulässt obwohl sie es müsste, muß der Fehler gemeldet werden. Deswegen ist der richtige Weg die Spalte UNIT so zu ändern dass NULL erlaubt ist wie es der Standard vorgibt.
Titel: Aw: DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: frober am 08 April 2023, 10:59:54
Hallo Heiko,

seit einiger Zeit stelle ich fest, dass viele Subprozesse nicht 'beendet' werden, die Swap läuft nach einiger Zeit voll und die Auslastung des Arbeitsspeichers nimmt zu:
kurz nach Neustart von Fhem, ich habe schon wesentlich mehr gezählt
  737 mysql      20   0  600M  153M  7036 S  0.0 16.6  8:33.14 /usr/sbin/mysqld
  802 mysql      20   0  600M  153M  7036 S  0.0 16.6  0:53.39 /usr/sbin/mysqld
 7094 mysql      20   0  600M  153M  7036 S  0.0 16.6  0:08.10 /usr/sbin/mysqld
  792 mysql      20   0  600M  153M  7036 S  0.0 16.6  0:20.15 /usr/sbin/mysqld

Die SyncDb erzeugt sekündlich Events, das war vorher nicht:
Eventmonitor
2023-04-08 10:21:17 DbLog syncdb notify_processing_time: 0.0019
2023-04-08 10:21:17 DbLog syncdb notify_processing_time: 0.0004
2023-04-08 10:21:17 MQTT2_DEVICE MQTT2_Netzfrequenz Differenz: -0.003
2023-04-08 10:21:18 DbLog syncdb notify_processing_time: 0.0004
2023-04-08 10:21:18 DbLog syncdb notify_processing_time: 0.0005
2023-04-08 10:21:18 FS20V KS300_Einstrahlung dbvalue: 233
2023-04-08 10:21:18 FS20V KS300_Einstrahlung 233 W/m²
2023-04-08 10:21:22 DbLog syncdb notify_processing_time: 0.0004
2023-04-08 10:21:22 DbLog syncdb notify_processing_time: 0.0004
2023-04-08 10:21:22 MQTT2_DEVICE MQTT2_Rollo_Esszi_West temperature: 55.00
2023-04-08 10:21:22 DbLog syncdb notify_processing_time: 0.0004
2023-04-08 10:21:22 DbLog syncdb notify_processing_time: 0.0004

Def:
defmod syncdb DbLog ./dbsync.conf aaaaaa:bbbbbb
attr syncdb asyncMode 1
attr syncdb cacheEvents 2
attr syncdb devStateIcon devStateIcon .*active:10px-kreis-gelb connected:10px-kreis-gruen .*disconnect:10px-kreis-rot
attr syncdb insertMode 1
attr syncdb room System->DbLog
attr syncdb showNotifyTime 1
attr syncdb showproctime 1
attr syncdb syncEvents 1
attr syncdb verbose 1
Der Sync wird über ein at angestoßen und hast sonst eigentlich nichts zu tun.

LG
Bernd
Titel: Aw: DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 10 April 2023, 08:58:18
Morgen Bernd,

zum Attr showNotifyTime  gibt es diesen Hilfeeintrag:

ZitatshowNotifyTime [1|0]

    Wenn gesetzt, zeigt das Reading "notify_processing_time" die benötigte Abarbeitungszeit (in Sekunden) für die Abarbeitung der DbLog Notify-Funktion.
    Das Attribut ist für Performance Analysen geeignet und hilft auch die Unterschiede im Zeitbedarf der Eventverarbeitung im synchronen bzw. asynchronen Modus festzustellen.
    (default: 0)

    Hinweis:
    Das Reading "notify_processing_time" erzeugt sehr viele Events und belasted das System. Deswegen sollte bei Benutzung des Attributes die Eventerzeugung durch das Setzen von Attribut "event-min-interval" auf z.B. "notify_processing_time:30" deutlich begrenzt werden.


Der Hinweis ist der richtige Hinweis für dich.  ;)

Jedes DbLog Device hat genau einen permanent mitlaufenden Subprozess. Dieses Prozess verbraucht deutlich weniger Speicher als der Hauptprozess. Die PID des Subprozesses siehst du im Internal SBP_PID des Devices und kannst sie damit zuordnen.

Alle anderen Subprozesse die du feststellst können z.B. durch BlockingCall erzeugt werden oder anderen Modulen stammen die Subprozess verwenden. Die BlockingCall Prozesse sind nur temporär und werden beendet. Das sind vermutlich die, welche du während des Starts siehst.

Alle internen Vorgänge in DbLog laufen über den zugeordneten Subprozess. D.h. auch solange der nicht signifikant Speicher verbaucht, hat das DbLog-Device auch keinen Anteil an deinem "Swap" Problem.

LG,
Heiko

PS: ich bekomme immer wieder mal keine Mails dass in den Threads geantwortet wurde seit der Forum Umstellung. Deswegen dauern meine Antworten manchmal...
Titel: Aw: DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: frober am 10 April 2023, 09:22:20
Hallo Heiko,

die Hilfe zu showNotifyTime kenne ich soweit. Bin mir aber ziemlich sicher, dass von der Umstellung die Events nicht da waren. Die SyncDB hat ja nichts zu tun, außer wenn sie zum 'Sync' getriggert wird, daher verwundert es mich.
Das attr lösche ich jedenfalls.

Ich habe nur zwei DbLogs, eins davon remote.
OK, DbRep erstellt dann auch Subprozesse von DbLog?
Die meisten DbReps laufen bei mir nicht parallel und doch zähle ich nach längerer Betriebszeit von Fhem immer mehr Subprozesse von DbLog.

Von DbRep hatte ich auch immer wieder timeouts im Log. Kann es sein, dass bei einem timeouts der Subprozesse nicht beendet wird?

LG
Bernd
Titel: Aw: DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 10 April 2023, 22:03:01
Hallo Bernd,

ZitatBin mir aber ziemlich sicher, dass von der Umstellung die Events nicht da waren. Die SyncDB hat ja nichts zu tun, außer wenn sie zum 'Sync' getriggert wird, daher verwundert es mich.
Da hast du recht dass es jetzt mehr Events dieser Art gibt. Allerdings durchläuft ein Event immer dein DbLog Device (Notify-Sub). Ob das Device etwas zu tun hat, entscheidet sich ja erst während der Verarbeitung bzw. Auswertung der Parameter. Deswegen gibt es diese NotifyTime Events.

ZitatOK, DbRep erstellt dann auch Subprozesse von DbLog?
DbRep arbeitet mit temporären BlockingCalls. D.h. es werden parallele Prozesse erstellt die wieder beendet werden wenn die Aufgabe abgearbeitet wurde.

ZitatDie meisten DbReps laufen bei mir nicht parallel und doch zähle ich nach längerer Betriebszeit von Fhem immer mehr Subprozesse von DbLog.
Das müsstest du genauer erläutern wie du zu der Annahme kommst diese Subprozesse kämen von DbLog.

ZitatVon DbRep hatte ich auch immer wieder timeouts im Log. Kann es sein, dass bei einem timeouts der Subprozesse nicht beendet wird?
Nein. Wenn ein BlockingCall gestartet wird, bekommt die zentrale FHEM-Schleife den Timeout Parameter übergeben. Der gestartete Prozess wird dann von FHEM (zentral) abgebrochen. Erst dann erscheint der Logeintrag, nicht andersherum.

LG,
Heiko
Titel: Aw: DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: frober am 10 April 2023, 22:14:12
Zitat von: DS_Starter am 10 April 2023, 22:03:01Das müsstest du genauer erläutern wie du zu der Annahme kommst diese Subprozesse kämen von DbLog.
Danke Heiko für die Erläuterungen.

Wie schon geschrieben, alles mysql Prozesse. Da nur DbLog darauf zugreift, wüsste ich nicht woher diese kommen sollten.
737 mysql      20  0  600M  153M  7036 S  0.0 16.6  8:33.14 /usr/sbin/mysqld
  802 mysql      20  0  600M  153M  7036 S  0.0 16.6  0:53.39 /usr/sbin/mysqld
 7094 mysql      20  0  600M  153M  7036 S  0.0 16.6  0:08.10 /usr/sbin/mysqld
  792 mysql      20  0  600M  153M  7036 S  0.0 16.6  0:20.15 /usr/sbin/mysqld


Titel: Aw: DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 10 April 2023, 22:22:07
Das sind aber MySQL Prozesse (kein Perl). Die entstehen z.B. auch über die Ausführung von SVG-Devices. Du könntest mit einem SQL Editor anschauen was die machen.
Alternativ geht das auch mit einem DbRep Device:

  get ... procinfo
Titel: Aw: DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: frober am 10 April 2023, 22:25:07
Zitat von: DS_Starter am 10 April 2023, 22:22:07Das sind aber MySQL Prozesse (kein Perl). Die entstehen z.B. auch über die Ausführung von SVG-Devices. Du könntest mit einem SQL Editor anschauen was die machen.
Alternativ geht das auch mit einem DbRep Device:

  get ... procinfo

OK, danke. Dann habe ich das falsch interpretiert.

Titel: Aw: DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: DS_Starter am 10 April 2023, 22:28:24
Wenn natürlich immer mehr mysql Prozesse entstehen die nicht wieder abgebaut werden wäre das tatsächlich ein Fehlerzustand. Frage ist dann natürlich wie diese entstehen und müsste untersucht werden.
Titel: Aw: DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: ch.eick am 05 Mai 2023, 14:09:07
Da wäre auch noch Grafana zu erwähnen, falls das verwendet wird.
Bei meinem Dashboard hatte ich da, aufgrund der vielen Anzeigewerte, sehr viel MySQL Abfragen, da Grafana jeden Wert separat abgefragt hat.
Erst als ich das in ein SELECT, also auch nur eine Session, zusammen gefasst hatte war endlich ruhe und Grafana lief dann auch flüssiger.

VG   Christian
Titel: Aw: DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht
Beitrag von: frober am 05 Mai 2023, 19:32:31
Danke für die Info.
Grafenau benutze ich noch (?) nicht.

Ich hatte noch keine Zeit danach zu schauen. Da die Prozesse recht jung sind, wollte ich erst noch prüfen, ob diese auch da sind, wenn ich Fhem nicht erst benutzt habe (Plots etc. angeschaut).