SVG-Plots von FileLog auf DbLog umstellen
Grundsätzlich verhält sich DbLog bei der Verwendung in SVG-Plots sehr ähnlich wie ein FileLog. So kann ein neuer Plot auf DbLog-Daten in der FHEM-Oberfläche genauso angelegt werden wie beim FileLog, indem man an der Definition des DbLog Devices auf "Create SVG plot from DbLog" klickt. Wenn man von FileLog auf DbLog umstellt, möchte man aber evtl. nur die Definitionen der SVG-Plots anpassen. Hier einige Anmerkungen dazu.
Define
Eine bestehende FileLog Definition für ein Thermostat könnte zB so aussehen:
define FileLog_W_HEIZUNG FileLog ./log/W_HEIZUNG-%Y.log W_HEIZUNG attr FileLog_W_HEIZUNG logtype text attr FileLog_W_HEIZUNG room hidden define SVG_FileLog_W_HEIZUNG_1 SVG FileLog_W_HEIZUNG:SVG_FileLog_W_HEIZUNG_1:CURRENT attr SVG_FileLog_W_HEIZUNG_1 room hidden
Bei Umstellung auf DbLog kann das FileLog-Device natürlich gelöscht werden, nachdem es durch ein allgemeines DbLog-Device ersetzt worden ist (siehe DbLog). Die Definition des Plots wird danach folgendermassen geändert:
define SVG_W_HEIZUNG_1 SVG DBLOG:SVG_DBLOG_W_HEIZUNG_1:CURRENT attr SVG_W_HEIZUNG_1 room hidden
Mit dieser Anweisung wird ein SVG-Plot mit Namen SVG_W_HEIZUNG_1 (der Name muss natürlich nicht geändert werden, soviel Zeit sollte man sich allerdings nehmen) angelegt, der seine Daten vom DbLog-Device DBLOG bezieht und mit Hilfe der Gplot-Datei SVG_DBLOG_W_HEIZUNG_1.gplot (auch dieser Name muss nicht zwingend geändert werden) rendert.
Gplot-Datei
Die bestehende Gplot-Datei SVG_FileLog_W_HEIZUNG_1.gplot (im Verzeichnis www/gplot) wird zunächst nach SVG_DBLOG_W_HEIZUNG_1.gplot kopiert. Sie kann gelöscht werden, wenn die Umstellung zufrieden stellend abgeschlossen ist. Geändert werden müssen nur die Zeilen, die mit #FileLog beginnen:
#FileLog 4:W_HEIZUNG.temperature\x3a:0: #FileLog 4:W_HEIZUNG.desiredTemperature:0: #FileLog 4:W_HEIZUNG.valveposition\x3a:0:
Daraus wird:
#DbLog W_HEIZUNG:temperature:0: #DbLog W_HEIZUNG:desiredTemperature:0: #DbLog W_HEIZUNG:valveposition:0:
#FileLog wird durch #DbLog ersetzt. Die Angabe der Feldnummer vor dem Device (hier: "4") fällt weg, ebenso evtl. notierte Sonderzeichen am Ende der Readings-Bezeichnung (hier "\x3a"). Ansonsten bleibt der Inhalt der Gplot-Datei gleich.
@fld
Ein Sonderfall in der Notation liegt in der Verwendung von Mappings mit Hilfe des @fld-Arrays (siehe auch Creating Plots). Da es dieses Array in der Form in DbLogs nicht gibt, muss auf eine Zuweisung der Variable $val umgestellt werden. Lautet die Anweisung bei Verwendung von FileLog zB:
#FileLog 3:W_FENSTER:onoff::$fld[2]=~"1"?24:-10
muss sie für DbLog folgendermassen geändert werden:
#DbLog W_FENSTER:onoff:::$val=($val=~'1'?24:-10)
Insbesondere ist auch der zusätzliche Doppelpunkt vor der Anweisung zu beachten (Grund ist mir leider nicht bekannt, bitte ergänzen!).
logProxy
#logProxy FileLog:FileLog_W_HEIZUNG:4:W_HEIZUNG.valveposition\x3a:0:
wird zu
#logProxy DbLog:DBLOG:W_HEIZUNG:valveposition:0:
Näheres dazu unter LogProxy.