FHEM Forum

FHEM => Frontends => SVG / Plots / logProxy => Thema gestartet von: Dr. Boris Neubert am 17 Oktober 2025, 22:44:00

Titel: [GELÖST] .gplot-Template mit plotReplace für Temperatur-Luftfeuchtigkeit-Sensor
Beitrag von: Dr. Boris Neubert am 17 Oktober 2025, 22:44:00
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 (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                                                                       
Titel: Aw: .gplot-Template mit plotReplace für Temperatur-Luftfeuchtigkeit-Sensor
Beitrag von: betateilchen am 18 Oktober 2025, 10:17:10
Das plotReplace Attribut wurde doch genau dafür geschaffen, solchen Sermon vernünftig mitgeben zu können.
Titel: Aw: .gplot-Template mit plotReplace für Temperatur-Luftfeuchtigkeit-Sensor
Beitrag von: Dr. Boris Neubert am 18 Oktober 2025, 10:22:26
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.
Titel: Aw: .gplot-Template mit plotReplace für Temperatur-Luftfeuchtigkeit-Sensor
Beitrag von: rudolfkoenig am 18 Oktober 2025, 11:40:26
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.
Titel: Aw: .gplot-Template mit plotReplace für Temperatur-Luftfeuchtigkeit-Sensor
Beitrag von: Dr. Boris Neubert am 18 Oktober 2025, 12:53:50
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.