DbLog / Plot Editor - Devices werden nicht mehr korrekt angezeigt

Begonnen von stephan20, 24 Mai 2020, 12:56:40

Vorheriges Thema - Nächstes Thema

stephan20

Hallo Zusammen,

ich habe seit geraumer Zeit ein Problem mit dem SVG Plot Editor in Zusammenhang mit DbLog. Wenn ich einen neuen Plot anlegen will, werden mir in der Deviceauswahl nicht mehr alle Devices angezeigt. Es wird gefühlt nur noch ein Viertel aller möglichen Devices und Readings angezeigt. Ebenso führt das Editieren alter gplots zu Problemen. Ich hatte das Thema bereits im SVG/Plot Forumsbereich gepostet, Rudolf König hatte mich jedoch hier hin verwiesen.

Aus diesem Grund hier meine letzte Nachricht aus dem anderen Forumsbereich:

Ich möchte natürlich nur gplot Dateien bearbeiten, die ich zuvor, als der Editor noch funktionierte, auch mit diesem erstellt habe.

Das Problem, welches ich jetzt habe ist, dass der Plot Editor die Devices nicht mehr einliest und im Dropdown-Menü zur Auswahl stellt.

Anbei mal ein Bild eines Plots, den ich vor einiger Zeit erstellt habe. Bei allen Diagrammlinien wird als Device Reading nur "right" angezeigt. Das ursprüngliche Device, welches für den Plot benutzt wird, steht im Drop-Down garnicht mehr zur Verfügung. Dazu das gplot File vom 03.03.2019.

# Created by FHEM/98_SVG.pm, 2019-03-03 00:18:18
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 'Feinstaubbelastung'
set ytics
set y2tics
set grid
set ylabel "ug/m3"
set y2label "ug/m3"

#DBLogging Feinstaubsensor:SDS0X1_PM2.5
#DBLogging Feinstaubsensor:SDS0X1_PM10

plot "<IN>" using 1:2 axes x1y2 title 'PM2.5' ls l0 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'PM10' ls l0 lw 1 with lines


Ändere ich jetzt z.b. im Editor die Diagrammbezeichnung, wird mangels Ausgangsdevice nur noch "right" als Source eingetragen
Hier die obige Datei nach Änderung des Titels

# Created by FHEM/98_SVG.pm, 2020-05-24 03:35:17
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 'Feinstaubbelastung neu'
set ytics
set y2tics
set grid
set ylabel "ug/m3"
set y2label "ug/m3"

#DBLogging right
#DBLogging right

plot "<IN>" using 1:2 axes x1y1 title 'PM2.5' ls l0 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'PM10' ls l0 lw 1 with lines


Vielleicht kann sich jemand einen Reim daraus machen, warum das passiert und wie ich den Editor wieder dazu bewegen kann, alle Devices richtig einzulesen

Gruß und schönen Sonntag

Stephan





DS_Starter

#1
Hallo Stephan,

beim Plot-Editor muss man wissen, dass das Verhalten dieses Tools von der Einstellung des Attributs DbLogType im DbLog-Device abhängig ist.
Diese Vorschlagsliste für Device/Readings ist nur vorhanden, wenn das Attribut DbLogType Current oder  SampleFill enthält.
Die dann erscheinenden Device/Reading-Kombinationen werden aus dem Inhalt der Current-Tabelle generiert.
Dort existieren NUR Devices / Readings von denen schon einmal etwas in die DB geloggt wurde. Das ist schon immer so.

Möchte man den Inhalt der Current-Tabelle neu aufbauen (vielleicht nach einem DB-Fehler etc.), kann man das mit einem DbRep-Device und dem Kommando:

set <DbRep-Device> tableCurrentPurge
set <DbRep-Device> tableCurrentFillup


erledigen. Der Befehl extrahiert aus der History-Tabelle alle Device/Reading-Kombinationen und trägt sie in die Current-Tabelle ein.
Nachteil der Verwendung der Vorschlagsliste ist, dass Änderungen im gplot-File die über Device:Reading hinausgehen, wie zum Beispiel eingefügte Regex:

#LogDBShort sysmon:ram:::$val=~s/^Total..([\d.]*).*/$1/eg

vom Editor in diesem Modus nicht eingelesen werden und entfernt werden wenn man speichert. Das gplot-File ist dann "zerstört".
Dieses Verhalten besteht allerdings auch schon solange ich das Modul kenne und betreue.
Leider hatte ich bisher keine Gelegenheit, dieses Manko zu beseitigen. Patche nehme ich gerne entgegen.  ;)

Wenn man ohne Vorschlagsliste arbeitet (DbLogType = History), besteht dieses Problem nicht.
Deshalb rate ich dazu die Vorschlagsliste (Current-Tabelle) nicht oder nur mit Wissen um die Einschränkungen zu verwenden.
Der default im DbLog steht deswegen schon lange Zeit nur auf "DbLogType  = History".

Ich hoffe, dass diese Erläuterung dir und anderen Usern weiterhilft und die Zusammenhänge klarer erscheinen lässt.

Grüße,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

dk3572

Hallo Heiko,

habe eben diesen Beitrag gelesen.

Nach dieser Anleitung "Speichern von Berechnungswerten in der Datenbank und Erstellen eines Plots (ab Version 7.5.1)"
https://wiki.fhem.de/wiki/DbRep_-_Reporting_und_Management_von_DbLog-Datenbankinhalten
habe ich den DbLogType auf Current/History gesetzt.

War das falsch? Bzw. kann ich das ohne etwas zu vermurksen wieder auf History stellen?

Internals:
   COLUMNS    field length used for Device: 64, Type: 64, Event: 512, Reading: 64, Value: 128, Unit: 32
   CONFIGURATION ./db.conf
   DEF        ./db.conf .*:.*
   FUUID      5eb961f7-f33f-cd72-b3f6-f6ca8383a8350f4c
   FVERSION   93_DbLog.pm:v4.9.12-s21801/2020-04-29
   MODE       asynchronous
   MODEL      SQLITE
   NAME       logdb
   NR         422
   NTFY_ORDER 50-logdb
   PID        23174
   REGEXP     .*:.*
   STATE      connected
   TYPE       DbLog
   dbconn     SQLite:dbname=/opt/fhem/fhem.db
   dbuser     
   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.9.12
   READINGS:
     2020-05-24 19:22:12   CacheUsage      11
     2020-05-24 19:22:10   NextSync        2020-05-24 19:22:40 or if CacheUsage 500 reached
     2020-05-24 19:22:10   state           connected
Attributes:
   DbLogExclude .*
   DbLogSelectionMode Exclude/Include
   DbLogType  Current/History
   asyncMode  1
   bulkInsert 1


Danke und VG Dieter

DS_Starter

Hallo Dieter,

ZitatWar das falsch? Bzw. kann ich das ohne etwas zu vermurksen wieder auf History stellen?

Nein, es ist nicht falsch. Sonst gäbe es diese Möglichkeit nicht. Man muss nur wissen, dass man mit der Vorschlagsliste innerhalb des Editors nicht arbeiten sollte wenn man zur Darstellung der Plots solche zusätzliche Angaben im gplot-File hat wie oben beschrieben.

Aber keine Angst, man kann jederzeit die Einstellung von DbLogType ändern und die Verwendung der Current ein- und ausschalten. Diese Tabelle ist einzig und allein für die Generierung dieser Vorschlagsliste benutzt.
Für die Datenhaltung und diversen Auswertung ist ausschließlich die History-Tabelle ausschlaggebend.

LG,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

stephan20

Hallo Heiko,

erstmal vielen Dank für deine ausführliche Antwort.

Ich benutze eigentlich seit Anbeginn von FHEM den Logtype Current/History. Hat es für mich einen Nachteil, wenn ich nur auf History umstelle?

Ich würde gerne die Option mit dem RepairDevice versuchen. Habe mir dazu jetzt ein DbRep angelegt, habe jedoch Bedenken den purgecurrent Befehl auszuführen. Bekomme jetzt die Warnung, dass ich allowDeletion aktivieren soll. Ebenso das "Use it with care!" macht mir ein bisschen sorgen ;-)

Ich zerschieße mir damit nicht meine Datenbank, richtig?

Viele Grüße

Stephan

DS_Starter

Halo Stephan,

ZitatHat es für mich einen Nachteil, wenn ich nur auf History umstelle?
Nur der Umstand, dass die Vorschlagsliste nicht mehr angezeigt wird im SVG-Editor.

Zitat
Ich würde gerne die Option mit dem RepairDevice versuchen. Habe mir dazu jetzt ein DbRep angelegt, habe jedoch Bedenken den purgecurrent Befehl auszuführen.
Nur Mut  ;)  Es wird der Inhalt der Current-Tabelle gelöscht.
Zur Sicherheit und zur Beruhigung der Nerven macht man vor allen Datenbankoperationen ein Backup der Datenbank ! Geht auch mit DbRep.

Zitat
Bekomme jetzt die Warnung, dass ich allowDeletion aktivieren soll. Ebenso das "Use it with care!" macht mir ein bisschen sorgen ;-)
Ja, das ist eine Sicherheitsfunktion, damit der Nutzer vorher nachdenkt was er tut.  ;)  Ist bei allen Löschoperationen mit DbRep so.

ZitatIch zerschieße mir damit nicht meine Datenbank, richtig?
Ja, das ist richtig. Du zerschießt dir deine Datenbank nicht.
Siehe auch meine Anmerkung zum DB-Backup.

Grüße,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

stephan20

Hallo Heiko,

super, danke für die Ausführungen. Leider kommt es beim Backup mit DBRep nach ca 2 Stunden immer zu einem "Process died prematurely". Es scheint so, als hätte die DBLog irgendein Problem.

Lieben Gruß Stephan

DS_Starter

Guten Morgen,

nein, die DB hat kein Problem. Das ist vermutlich ein Speicherengpass.
Ich vermute du hast eine MySQL und verwendest "dumpMySQL clientSide".

Es gibt die Attribute dumpMemlimit, dumpSpeed um die Ressourcenbelastung zu optimieren, was allerdings auch Auswirkungen auf die Laufzeit hat. In solchen Fällen wie deinem wohl eher auf "dumpMySQL serverSide" wechseln.

Fragen zum Backup sind in dem Thread aber OT, vllt. besser einen anderen öffnen falls Bedarf.

LG,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter