SVG: Unterschied zwischen den Versionen
K (Diagramm umpositioniert) |
(Hinweis zu Plot-Abriss vermeiden eingefügt) |
||
Zeile 69: | Zeile 69: | ||
* So sieht das resultierende Diagramm aus | * So sieht das resultierende Diagramm aus | ||
[[Datei:SVG Leistungsdaten einer Steckdose.png|thumb|left|300px]] | [[Datei:SVG Leistungsdaten einer Steckdose.png|thumb|left|300px]] | ||
=== Temperatur- und Heizungsdaten eines Zimmers === | === Temperatur- und Heizungsdaten eines Zimmers === | ||
Zeile 115: | Zeile 122: | ||
"<IN>" using 1:2 axes x1y1 y2title '%WINDOW2%' ls l5fill lw 0.5 with steps | "<IN>" using 1:2 axes x1y1 y2title '%WINDOW2%' ls l5fill lw 0.5 with steps | ||
</source> | </source> | ||
== Hinweise == | |||
* Plot-Abrisse vermeiden | |||
Sind in den Quelldaten nicht genügend Datenpunkte vorhanden, kann es zu Lücken in der Darstellung kommen. Abhilfe kann man mit [[LogProxy]] schaffen oder, indem man zusätzliche Datenpunkte in den Datenquellen generiert, z.B. durch das Setzen von ''addLog''-Attributen an FileLog bzw. DBLog-Geräten. Weitere Hinweise sind in [[Plot-Abriss vermeiden]] zu finden. | |||
== Links == | == Links == | ||
* [[Plots erzeugen]] | * [[Plots erzeugen]] | ||
* [[Creating Plots]] | * [[Creating Plots]] | ||
<references / | <references /> | ||
[[Kategorie:Logging]] | [[Kategorie:Logging]] |
Version vom 22. Januar 2020, 10:25 Uhr
Todo: Diese Beschreibung ist noch zu ergänzen / erweitern. |
SVG | |
---|---|
Zweck / Funktion | |
Erstellung von Diagrammen aus Logdaten | |
Allgemein | |
Typ | Hilfsmodul |
Details | |
Dokumentation | EN / DE |
Support (Forum) | Frontends |
Modulname | 98_SVG.pm |
Ersteller | rudolfkoenig (Forum / Wiki) |
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref! |
Das Modul SVG generiert Diagramme aus Logdateien oder -datenbanken.
Die Eigenschaften des zu erstellenden Diagrams werden in einer .gplot-Datei festgelegt.
Definition
Details in der commandref/SVGlinkdefine.
Attribute
Details in der commandref/SVGattr.
Funktionen
Details in der commandref/plotfunction.
Beispiele
Leistungsdaten einer Steckdose (FileLog)
- Inhalt der Datei SVG_PlugX.gplot
# Leistungsdaten einer Steckdose (FileLog)
#
# plotReplace-Parameter: DataDevice (von diesem Gerät stammen die Daten)
# FileLogDevice (in diesem Gerät werden die Daten geloggt)
# stateOFFvalue (y-Wert zur Darstellung von ausgeschaltetem Zustand)
# stateONvalue (y-Wert zur Darstellung von eingeschaltetem Zustand)
# stateUNKNOWNvalue (y-Wert zur Darstellung von unbekanntem Zustand)
# title (in der Regel ein perl-Ausdruck zur Darstellung von Eckwerten in der Titelzeile)
# yrange (Wertebereich für Darstellung in W vorgeben)
# y2range (Wertebereich für Darstellung in mA vorgeben)
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 '<title>'
set ytics
set y2tics
set grid ytics y2tics
set ylabel "Leistung (W)"
set y2label "Strom (mA)"
set yrange %yrange%
set y2range %y2range%
#%FileLogDevice% 4:%DataDevice%.power\x3a:0:
#%FileLogDevice% 4:%DataDevice%.current\x3a:"":($fld[3]*1000)
#%FileLogDevice% 4:%DataDevice%.userRead_socket_state\x3a:"":($fld[3]=~"off"?%stateOFFvalue%:($fld[3]=~"on"?%stateONvalue%:%stateUNKNOWNvalue%))
plot "<IN>" using 1:2 axes x1y1 title 'Leistung' ls l0 lw 1 with steps,\
"<IN>" using 1:2 axes x1y2 title 'Strom' ls l1fill_stripe lw 1 with steps,\
"<IN>" using 1:2 axes x1y1 title 'Schaltzustand' ls l3 lw 1 with steps
- Definition von SVG-Device SVG_Test
defmod SVG_Test SVG ...FileLog-Device...:SVG_PlugX:CURRENT
attr SVG_Test captionPos auto
attr SVG_Test plotReplace DataDevice="...Data-Device..." FileLogDevice="...FileLog-Device..." stateOFFvalue="20" stateONvalue="30" stateUNKNOWNvalue="10" yrange="[0:75]" y2range="[0:300]" title={"Steckdose(Testgerät) --- W: $data{min1}...$data{max1} / $data{currval1} --- mA: $data{min2}...$data{max2} / $data{currval2}"}
- So sieht das resultierende Diagramm aus
Temperatur- und Heizungsdaten eines Zimmers
Quelle: Beitrag (Datenquelle ist ein DBLog-Device namens LogDB):
# Created by FHEM/98_SVG.pm, 2020-01-06
# to replace variables, use plotReplace like
# attr SVG_Thermostat plotReplace SPEC1=Thermostat TL="My example thermostat" EXTERNALTEMPDEVICE=MYSENSOR_97 EXTERNALTEMPREADING=temperature2 \
# ROOMHUMIDITYDEVICE=HUEDevice3 EXTERNALHUMIDITYREADING=humidity ROOMTEMPDEVICE=HUEDevice4 ROOMTEMPREADING=temperature WINDOW1=Window1_MyRoom WINDOW2=Window2_MyRoom
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 '<TL>'
set ytics
set y2tics
set grid
set ylabel "Valve/Window"
set y2label "Temperature"
set yrange [-5:105]
set y2range [-15:35]
set isosample 20
#LogDB %SPEC1%:desired-temp::
#LogDB %SPEC1%:measured-temp:0:
#LogDB %EXTERNALTEMPDEVICE%:%EXTERNALTEMPREADING%::
#LogDB %SPEC1%:actuator:0:int
#LogDB %ROOMHUMIDITYDEVICE%:%EXTERNALHUMIDITYREADING%:0:
#LogDB %ROOMTEMPDEVICE%:%ROOMTEMPREADING%:0:
#LogDB %WINDOW1%:state:::$val=~s/(open|closed|tilted)(\d*).*/$1eq"open"?60:$1eq"tilted"?45:0/eg
#LogDB %WINDOW2%:state:::$val=~s/(open|closed|tilted)(\d*).*/$1eq"open"?60:$1eq"tilted"?45:0/eg
plot "<IN>" using 1:2 axes x1y2 title 'Desired' ls l0 lw 1 with lines,\
"<IN>" using 2:2 axes x1y2 title 'Measured actuator' ls l7 lw 1 with lines,\
"<IN>" using 1:2 axes x1y2 title 'Aussen' ls l1 lw 1 with lines,\
"<IN>" using 1:2 axes x1y1 y2title 'Valve' ls l5 lw 1 with steps,\
"<IN>" using 1:2 axes x1y1 title 'Humidity' ls l2 lw 1 with lines,\
"<IN>" using 1:2 axes x1y2 title 'Measured roomsensor' ls l3 lw 1 with lines,\
"<IN>" using 1:2 axes x1y1 y2title '%WINDOW1%' ls l4fill lw 0.5 with steps,\
"<IN>" using 1:2 axes x1y1 y2title '%WINDOW2%' ls l5fill lw 0.5 with steps
Hinweise
- Plot-Abrisse vermeiden
Sind in den Quelldaten nicht genügend Datenpunkte vorhanden, kann es zu Lücken in der Darstellung kommen. Abhilfe kann man mit LogProxy schaffen oder, indem man zusätzliche Datenpunkte in den Datenquellen generiert, z.B. durch das Setzen von addLog-Attributen an FileLog bzw. DBLog-Geräten. Weitere Hinweise sind in Plot-Abriss vermeiden zu finden.