[GELÖST] .gplot-Template mit plotReplace für Temperatur-Luftfeuchtigkeit-Sensor

Begonnen von Dr. Boris Neubert, 17 Oktober 2025, 22:44:00

Vorheriges Thema - Nächstes Thema

Dr. Boris Neubert

Hallo,

ich habe mehrere identische Temperatur-Luftfeuchtigkeit-Sensoren, bei denen ich den zeitlichen Verlauf von Temperatur und Luftfeuchtigkeit plotten möchte. Ich möchte eine Schablone für die .gplot-Datei verwenden und das FileLog-Gerät, das Sensor-Gerät und den Alias des Sensor-Geräts per plotReplace-Attribut setzen. Ich habe https://wiki.fhem.de/wiki/SVG gelesen und bin bis hierher gekommen:

neubert_th.gplot (die funktionierende Vorlagen-Datei habe ich über den GPlot-Editor erzeugt, dann unter diesem neuen Namen umkopiert und die Gerätenamen durch Parameter ersetzt):

# Temperatur-Luftfeuchtigkeit-Sensor
# plotReplace
#       DataDevice:     Sensor-Gerät
#       FileLogDevice:  zugehöriges FileLog-Gerät
#       Alias:          Name des Sensors im Titel
#
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 '<Alias>'
set ytics
set y2tics
set grid
set ylabel "Luftfeuchtigkeit / %"
set y2label "Temperatur / °C"

#%FileLogDevice% 4:%DataDevice%.temperature\x3a::
#%FileLogDevice% 4:%DataDevice%.humidity\x3a::

plot "<IN>" using 1:2 axes x1y2 title 'Temperatur' ls l0 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Luftfeuchte' ls l2 lw 1 with lines

SVG-Gerät:

define SVG_FileLog_zigbee_0x00158d008b862909_1 SVG FileLog_zigbee_0x00158d008b862909:neubert_th.gplot:CURRENT
attr SVG_FileLog_zigbee_0x00158d008b862909_1 plotReplace FileLogDevice=FileLog_zigbee_0x00158d008b862909 DataDevice=zigbee_0x00158d008b862909 Alias=gs21-1-1-th-1
attr SVG_FileLog_zigbee_0x00158d008b862909_1 room Gewerke->Raumklima,Räume->1->1 Wohnzimmer,Systeme->Plot
#   CFGFN     
#   DEF        FileLog_zigbee_0x00158d008b862909:neubert_th.gplot:CURRENT
#   FUUID      68f29cae-f33f-4eef-853a-a645c14b8a676a80
#   GPLOTFILE  neubert_th.gplot
#   LOGDEVICE  FileLog_zigbee_0x00158d008b862909
#   LOGFILE    CURRENT
#   NAME       SVG_FileLog_zigbee_0x00158d008b862909_1
#   NR         199
#   STATE      initialized
#   TYPE       SVG
#   eventCount 1
#
setstate SVG_FileLog_zigbee_0x00158d008b862909_1 initialized


Wenn ich mir den preprocessed input anschaue, gibt es nur eine Datenreihe, bei der alle Werte aus Spalte 4 ausgeworfen werden. Dementsprechend ist der Plot Grütze.

Bonusfrage: der Title des Plots soll Alias { $data{currva11} °C  $data{currval2} % } lauten, also den Alias des Sensors, die aktuelle Temperatur und die aktuelle Luftfeuchtigkeit ausgeben. Wie kodiere ich das in den .gplot-File, ohne den $data-Sermon im plotReplace-Attribut mitgeben zu müssen?

Viele Grüße
Boris                                                                       
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

betateilchen

Das plotReplace Attribut wurde doch genau dafür geschaffen, solchen Sermon vernünftig mitgeben zu können.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Dr. Boris Neubert

Ja, deswegen will ich es ja nutzen. Nur funktioniert es bei mir nicht und ich verstehe nicht, was an meiner .gplot-Datei falsch ist. Ferner fehlt mir eine Beschreibung, wie ich Parameter und Perl-Kode bei set title einbauen muss. Ich bitte daher um Hilfestellung.
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

rudolfkoenig

define SVG_FileLog_zigbee_0x00158d008b862909_1 SVG FileLog_zigbee_0x00158d008b862909:neubert_th.gplot:CURRENT
Da ist ein .gplot zuviel, neubert_th.gplot sollte neubert_th heissen.
Wenn die Datei www/gplot/neubert_th.gplot.gplot nicht gefunden wird, wird template.gplot genommen.

Wg. der Bonusfrage: soweit ich sehe, muss sowas als Attribut kodiert sein, entweder im plotReplace, oder im title/label.

Dr. Boris Neubert

Zitat von: rudolfkoenig am 18 Oktober 2025, 11:40:26Da ist ein .gplot zuviel, neubert_th.gplot sollte neubert_th heissen.
Wenn die Datei www/gplot/neubert_th.gplot.gplot nicht gefunden wird, wird template.gplot genommen.

Böse Falle! Für mich wäre es anwenderfreundlicher, wenn eine Fehlermeldung kommt, anstelle template.gplot zu nehmen - das wird ja praktisch nie jemand verwenden wollen. GGf. noch .gplot nicht anhängen, wenn der Dateiname schon auf .glot endet.

Jetzt funktioniert es.

ZitatWg. der Bonusfrage: soweit ich sehe, muss sowas als Attribut kodiert sein, entweder im plotReplace, oder im title/label.

Ja, so wie es im Wiki im Beispiel steht. Hatte nur gehofft, noch mehr gleichartige Konfiguration ins Template verlegen zu können.
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!