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
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
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 (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
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
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
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
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
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