Plots erzeugen: Unterschied zwischen den Versionen

Aus FHEMWiki
K (→‎Links / Beispiele: Link zum Artikel Plot-Abriss vermeiden eingefügt)
 
(33 dazwischenliegende Versionen von 12 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
'''Plots erzeugen'''
'''Plots erzeugen'''


== Mit dem "gplot-Editor ==
== .gplot-Editor ==


Seit dem 29.04.2013 verfügt Fhem auch über einen "gplot-Editor".
FHEM verfügt über einen ".gplot-Editor" (auch als Ploteditor bezeichnet), um die .gplot-Datei zur Erstellung eines Plots menügeführt zu generieren. Ein manuelles Anlegen der .gplot-Datei ist für Spezialisten und normalerweise nicht notwendig. Der .gplot-Editor sollte für Standardfälle grundsätzlich verwendet werden.  


Alles weitere kann im [http://forum.fhem.de/index.php/topic,11275.msg75594.html#msg75594 Fhem-Forum] nachgelesen werden.
Details zum .gplot-Editor können im Ankündigungshinweis im {{Link2Forum|Topic=11275|Message=75594|LinkText=FHEM-Forum}} nachgelesen werden.


'''Achtung''': Verwenden Sie diesen Editor nicht, wenn das Fhem-Device bereits angelegt ist und Sie für dieses Device ein bestehendes, allgemeines gplot-File verwenden, welches auch für andere Devices benutzt wird. Beim Abspeichern wird ein Filter im gplot-File gesetzt, welches das gplot-File nur für genau dieses Device verwendbar macht.  
Zur Einarbeitung in die Funktionsweise des .gplot-Editor existieren ausführliche, bebilderte Beispiele:
 
*Grundlegendes Beispiel zur Erzeugung von Plots:
:* [[Buderus_Web_Gateway#Mit_FileLog|Schrittweises Beispiel für Temperaturkurven]]
 
*Spezielle Erläuterungen/Hinweise zur Erzeugung von Plots mit Status:
:* [[EnOcean-STM-250-Fenster-Türkontakt#Türstatus in einem Plot darstellen|Schrittweises Beispiel bei Kontakten]],
:* [[EnOcean-D-452-FU-EBIM-Aktor-2fach#Aktorstatus_in_einem_Plot_darstellen|Schrittweises Beispiel zum Aktorstatus]]
:* {{Link2Forum|Topic=12945|Message=78887|LinkText=FHEM-Forum}}
:* {{Link2Forum|Topic=43563|Message=354955|LinkText=Plots mit mehr als 2 Status}}
 
Verhinderung von Perl-Warnungen bei LogFiles mit unterschiedlicher Spaltenanzahl in Log-Zeilen: {{Link2Forum|Topic=27835}}
 
<big>'''Achtung'''</big>:
{{Randnotiz|RNTyp=Info|RNText=Das in diesem Abschnitt "Achtung" beschriebene Problem ist seit dem FHEM-Update vom 06.04.2015 nicht mehr relevant. Der Befehl <code>copyGplotFile</code> ist seitdem nicht mehr notwendig, da FHEM ihn automatisch ausführt (Siehe {{Link2Forum|Topic=35764|Message=282728|LinkText=FHEM-Forum}}). }}
Verwenden Sie diesen Editor nicht, wenn das FHEM-Device bereits angelegt ist und Sie für dieses Device ein bestehendes, allgemeines gplot-File verwenden, das auch für andere Devices benutzt wird. Beim Abspeichern wird ein Filter im gplot-File gesetzt, das das gplot-File nur für genau dieses Device verwendbar macht.  


Beispiel:
Beispiel:
Zeile 25: Zeile 40:
  set weblink_irgendwas copyGplotFile
  set weblink_irgendwas copyGplotFile


ein Duplikat angelegt werden, welches ausschließlich für diesen Plot verwendet wird. Der Befehl kann unterhalb des ersten Kasten per Dropdown ausgewählt werden.
ein Duplikat angelegt werden, das ausschließlich für diesen Plot verwendet wird. Der Befehl kann unterhalb des ersten Kasten per Dropdown ausgewählt werden.


== Individuell / Manuell ==
== Individuell / Manuell ==
Zeile 31: Zeile 46:
'''Vorbemerkungen:'''
'''Vorbemerkungen:'''


* Fhem bedient sich für die Erstellung der Plots des Programms ''Gnuplot'' [http://www.gnuplot.info/]. Hierbei reichen die "einfacheren" Funktionalitäten dieses Programms aus (''Gnuplot'' kann noch viel mehr).
* FHEM bediente sich früher für die Erstellung der Plots des Programms ''Gnuplot'' [http://www.gnuplot.info/]. Hierbei reichen die "einfacheren" Funktionalitäten dieses Programms aus (''Gnuplot'' kann noch viel mehr).
* die Beispieldateien für die in Fhem integrierten Plots finden Sie in Ihrem Fhem-Programmordner unter ''www/gplot''.
* aktuelle FHEM-Versionen haben die Plot-Funktionen (angelehnt an die Plot-File-Syntax von Gnuplot) integriert.
* die Beispieldateien für die in FHEM integrierten Plots finden Sie in Ihrem FHEM-Programmordner unter ''www/gplot''.
* Angaben wie <SIZE>, <OUT>, <L1>, <IN> usw. im Plot-File sind Platzhalter bzw. Feldbezeichner für Fhem. Diese sind case-sensitive (Groß-/Kleinschreibung beachten).
* Angaben wie <SIZE>, <OUT>, <L1>, <IN> usw. im Plot-File sind Platzhalter bzw. Feldbezeichner für Fhem. Diese sind case-sensitive (Groß-/Kleinschreibung beachten).
* Weitere Möglichkeiten Plots anzupassen und zu ergänzen bietet das FHEM-Hilfsmodul [[LogProxy|logProxy]].


Ein Beispiel (''temp4hum4.gplot'') aus diesem Verzeichnis:  
Ein Beispiel (''temp4hum4.gplot'') aus diesem Verzeichnis:  
 
<syntaxhighlight lang="gnuplot" style="width:500px;">
  # Attribute 'small' is useful for gnuplot/-scroll only,
  # Attribute 'small' is useful for gnuplot/-scroll only,
  # if plotsize is less than 800,400
  # if plotsize is less than 800,400
Zeile 64: Zeile 83:
   "< egrep 'humidity' <IN>"\
   "< egrep 'humidity' <IN>"\
         using 1:4 axes x1y1 title 'Humidity (%)' with lines\
         using 1:4 axes x1y1 title 'Humidity (%)' with lines\
</syntaxhighlight>


Die Zeilen, die mit ''set'' beginnen, beeinflussen wesentlich das Erscheinungsbild und Aussehen Ihrer Plots (Achsenbeschriftungen, Skalen usw.). Dabei sollten Sie die Zeilen, welche eine Angabe zwischen "<" und ">" enthalten, zunächst unverändert lassen. Weitere (ausführliche) Hinweise (zu Gnuplot!) finden Sie in einer [http://www.rz.uni-osnabrueck.de/Zum_Nachlesen/Skripte_Tutorials/Gnuplot_Einfuehrung/pdf/gnuplot.pdf PDF-Datei]. Eingeschränktere, aber für die meisten Belange von Fhem ausreichende Infos finden Sie auf [http://www.aurbacher.net/gnuplot/gnuplot.html dieser Web-Seite].
Die Zeilen, die mit ''set'' beginnen, beeinflussen wesentlich das Erscheinungsbild und Aussehen Ihrer Plots (Achsenbeschriftungen, Skalen usw.). Dabei sollten Sie die Zeilen, die eine Angabe zwischen "<" und ">" enthalten, zunächst unverändert lassen. Weitere (ausführliche) Hinweise (zu Gnuplot!) finden Sie in einer [http://www.home.uni-osnabrueck.de/elsner/Skripte/gnuplot.pdf PDF-Datei]. Eingeschränktere, aber für die meisten Belange von FHEM ausreichende Infos finden Sie auf [http://www.aurbacher.net/gnuplot/gnuplot.html dieser Web-Seite].
 
=== Benutzung der Variablen ===
{|  class="wikitable"
!  Variable
!  Nutzung in gplot-File
!  Füllung mit inhalt in fhem.cfg
|-
| <TL>
| set title '<TL>'
| attr weblink title "Dies füllt den Platzhalter <TL>"
|-
| <L1>
| set xlabel '<L1>'
| attr weblink label "Dies füllt das Label <L1>"
|-
| <L2>
| set title '<L2>'
| attr weblink label "Dies füllt das Label <L1>"::"Dies füllt das Label <L2>"
|}


=== Welche Daten werden dargestellt ===
=== Welche Daten werden dargestellt ===
Zeile 74: Zeile 113:
  #FileLog 14::0:
  #FileLog 14::0:


in einer gplot-Datei tragen zwar zu Beginn das Kommentarzeichen "#", jedoch handelt es sich durchaus nicht um solche. Vielmehr trifft man mit den Werten hinter ''FileLog'' Vorgaben, welche Werte wie von Fhem an ''gnuplot'' zwecks grafischer Darstellung übergeben werden.
in einer gplot-Datei tragen zwar zu Beginn das Kommentarzeichen "#", jedoch handelt es sich durchaus nicht um solche. Vielmehr trifft man mit den Werten hinter ''FileLog'' Vorgaben, welche Werte wie von FHEM an ''gnuplot'' zwecks grafischer Darstellung übergeben werden.


Im o.a. Beispiel werden das 5. und das 14. Wertfeld (voneinander getrennt durch ein Leerzeichen (Blank)) an gnuplot weiter gegeben.
Im o.a. Beispiel werden das 5. und das 14. Wertfeld (voneinander getrennt durch ein Leerzeichen (Blank)) an gnuplot weiter gegeben.
Zeile 86: Zeile 125:
  werden ausgewertet                          --|                                  --|
  werden ausgewertet                          --|                                  --|


Anhand der Anmerkungen wird hoffentlich die Wirkweise deutlich. Zu den restlichen - optionalen - Parametern hinter ''FileLog'' wird zunächst auf die [http://fhem.de/commandref.html#FileLogget commanref] verwiesen.
Diese Parameter können auch als Attribut übergeben werden:
 
attr weblink plotfunction "FileLog 5::0:"
 
Anhand der Anmerkungen wird hoffentlich die Wirkungsweise deutlich. Zu den restlichen - optionalen - Parametern hinter ''FileLog'' wird zunächst auf die {{Link2CmdRef|Anker=FileLogget}} verwiesen.


=== Datum und Zeit ===
=== Datum und Zeit ===
Zeile 92: Zeile 135:
'''Anmerkungen / Hinweise:'''
'''Anmerkungen / Hinweise:'''


Fhem erwartet das Datum '''und''' die Uhrzeit der Log-Dateieinträge '''zwingend''' an <ins>erster Stelle</ins> der Datenzeile und zwar im Format
FHEM erwartet das Datum '''und''' die Uhrzeit der Log-Dateieinträge '''zwingend''' an <ins>erster Stelle</ins> der Datenzeile und zwar im Format


<code>
<code>JJJJ-MM-TT_SS:mm:ss</code>
JJJJ-MM-TT_SS:mm:ss
</code>


wobei
wobei
Zeile 113: Zeile 154:
  set timefmt "..."
  set timefmt "..."


hat auf dieses Verhalten von Fhem '''keine''' Auswirkungen, sondern nur auf die Darstellung von Datum und Zeit durch ''Gnuplot'' .
hat auf dieses Verhalten von FHEM '''keine''' Auswirkungen, sondern nur auf die Darstellung von Datum und Zeit durch ''Gnuplot'' .


Dazu ein Beispiel:
Dazu ein Beispiel:
Zeile 121: Zeile 162:
  2013-11-14_17:32:00 2013-Nov-14 17:32:00 17.9 5.8 4.9 58 94 0.0 0.0 N 5.8 572.91 1015.200  
  2013-11-14_17:32:00 2013-Nov-14 17:32:00 17.9 5.8 4.9 58 94 0.0 0.0 N 5.8 572.91 1015.200  


kann Fhem etwas anfangen. Mit  
kann FHEM etwas anfangen. Mit  


  20131114173200 2013-Nov-14 17:32:00 17.9 5.8 4.9 58 94 0.0 0.0 N 5.8 572.91 1015.200  
  20131114173200 2013-Nov-14 17:32:00 17.9 5.8 4.9 58 94 0.0 0.0 N 5.8 572.91 1015.200  
Zeile 133: Zeile 174:
Im ersten Fehler-Beispiel fehlen die notwendigen Trennzeichen, im zweiten Fehler-Beispiel ist die Reihenfolge im Datum verkehrt, außerdem werden die falschen Trenner verwendet. Zudem fehlen die Sekunden.
Im ersten Fehler-Beispiel fehlen die notwendigen Trennzeichen, im zweiten Fehler-Beispiel ist die Reihenfolge im Datum verkehrt, außerdem werden die falschen Trenner verwendet. Zudem fehlen die Sekunden.


=== Plot der letzten 24 Stunden statt des aktuellen Tages ===
Hierzu kann man in der ''Fhem.cfg'' für die Einträge
define WEB FHEMWEB 8083 global
das Attribut
attr WEB endPlotNow 1
setzen. Gleiches geht auch für ''WEBphone'' und ''WEBtablet''. Da muss es dann lauten
attr WEBphone endPlotNow 1
bzw.
attr WEBtablet endPlotNow 1
Das Attribut gilt dann aber für '''alle''' Plots der jeweiligen Ansichten. Wenn man wieder zurück zu den Plots ab jeweils 00:00 Uhr des aktuellen Tages möchte, löscht man dieses Attribut wieder bzw. setzt es auf den Wert "0".
=== Legende links platzieren ===
Gerade im Verbund mit dem Attribut ''endPlotNow'' macht das seit dem 11.01.2015 neue Attribut ''captionLeft'' Sinn, da dann die Legende nicht mehr rechts oben, sondern links oben im Plot erscheint. Dadurch wird die Sichtbarkeit der aktuellen Werte verbessert.
== Links / Beispiele ==
Hier finden sich weitere Beispiele zur Plot-Erstellung:
* [[Creating Plots]]
* [[Buderus Web Gateway#Beispiel für Plot]]
* [[Wetter und Wettervorhersagen#Erstellen passender gplot-Dateien]]
* [[Vitoconnect#SVG_Graphen_aus_FileLog_erstellen]]
* [http://lowrank.net/gnuplot/intro/style-e.html Erklärung für die Linetypes]
* [[Plot-Abriss vermeiden]]


[[Kategorie:FAQ]]
[[Kategorie:FAQ]]
[[Kategorie:HOWTOS]]
[[Kategorie:HOWTOS]]

Aktuelle Version vom 22. Januar 2024, 13:33 Uhr

Plots erzeugen

.gplot-Editor

FHEM verfügt über einen ".gplot-Editor" (auch als Ploteditor bezeichnet), um die .gplot-Datei zur Erstellung eines Plots menügeführt zu generieren. Ein manuelles Anlegen der .gplot-Datei ist für Spezialisten und normalerweise nicht notwendig. Der .gplot-Editor sollte für Standardfälle grundsätzlich verwendet werden.

Details zum .gplot-Editor können im Ankündigungshinweis im FHEM-Forum nachgelesen werden.

Zur Einarbeitung in die Funktionsweise des .gplot-Editor existieren ausführliche, bebilderte Beispiele:

  • Grundlegendes Beispiel zur Erzeugung von Plots:
  • Spezielle Erläuterungen/Hinweise zur Erzeugung von Plots mit Status:

Verhinderung von Perl-Warnungen bei LogFiles mit unterschiedlicher Spaltenanzahl in Log-Zeilen: Thema

Achtung:

Info green.pngDas in diesem Abschnitt "Achtung" beschriebene Problem ist seit dem FHEM-Update vom 06.04.2015 nicht mehr relevant. Der Befehl copyGplotFile ist seitdem nicht mehr notwendig, da FHEM ihn automatisch ausführt (Siehe FHEM-Forum).

Verwenden Sie diesen Editor nicht, wenn das FHEM-Device bereits angelegt ist und Sie für dieses Device ein bestehendes, allgemeines gplot-File verwenden, das auch für andere Devices benutzt wird. Beim Abspeichern wird ein Filter im gplot-File gesetzt, das das gplot-File nur für genau dieses Device verwendbar macht.

Beispiel:

aus

#FileLog 4:::

wird

#FileLog 4:DS2423.energy_a\x3a::

in dem entsprechenden gplot-File.

Die anderen Devices, die evtl. dieses gplot-File verwenden, haben danach keine funktionierende Plot-Anzeige mehr. Bevor also etwas geändert wird, sollte mit

set weblink_irgendwas copyGplotFile

ein Duplikat angelegt werden, das ausschließlich für diesen Plot verwendet wird. Der Befehl kann unterhalb des ersten Kasten per Dropdown ausgewählt werden.

Individuell / Manuell

Vorbemerkungen:

  • FHEM bediente sich früher für die Erstellung der Plots des Programms Gnuplot [1]. Hierbei reichen die "einfacheren" Funktionalitäten dieses Programms aus (Gnuplot kann noch viel mehr).
  • aktuelle FHEM-Versionen haben die Plot-Funktionen (angelehnt an die Plot-File-Syntax von Gnuplot) integriert.
  • die Beispieldateien für die in FHEM integrierten Plots finden Sie in Ihrem FHEM-Programmordner unter www/gplot.
  • Angaben wie <SIZE>, <OUT>, <L1>, <IN> usw. im Plot-File sind Platzhalter bzw. Feldbezeichner für Fhem. Diese sind case-sensitive (Groß-/Kleinschreibung beachten).
  • Weitere Möglichkeiten Plots anzupassen und zu ergänzen bietet das FHEM-Hilfsmodul logProxy.


Ein Beispiel (temp4hum4.gplot) aus diesem Verzeichnis:

 # Attribute 'small' is useful for gnuplot/-scroll only,
 # if plotsize is less than 800,400
 #set terminal png transparent small size <SIZE> crop
 
 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 ytics nomirror
 set y2tics
 #set ytics
 set title '<L1>'
 set grid xtics y2tics
 
 set y2label "Temperature in C"
 set ylabel "Humidity (%)"
 
 #FileLog 4:temperature:10:
 #FileLog 4:humidity:50:
 
 plot \
   "< egrep 'temperature' <IN>"\
          using 1:4 axes x1y2 title 'Measured temperature' with lines,\
   "< egrep 'humidity' <IN>"\
         using 1:4 axes x1y1 title 'Humidity (%)' with lines\

Die Zeilen, die mit set beginnen, beeinflussen wesentlich das Erscheinungsbild und Aussehen Ihrer Plots (Achsenbeschriftungen, Skalen usw.). Dabei sollten Sie die Zeilen, die eine Angabe zwischen "<" und ">" enthalten, zunächst unverändert lassen. Weitere (ausführliche) Hinweise (zu Gnuplot!) finden Sie in einer PDF-Datei. Eingeschränktere, aber für die meisten Belange von FHEM ausreichende Infos finden Sie auf dieser Web-Seite.

Benutzung der Variablen

Variable Nutzung in gplot-File Füllung mit inhalt in fhem.cfg
<TL> set title '<TL>' attr weblink title "Dies füllt den Platzhalter <TL>"
<L1> set xlabel '<L1>' attr weblink label "Dies füllt das Label <L1>"
<L2> set title '<L2>' attr weblink label "Dies füllt das Label <L1>"::"Dies füllt das Label <L2>"

Welche Daten werden dargestellt

Die Zeilen

#FileLog 5::0:
#FileLog 14::0:

in einer gplot-Datei tragen zwar zu Beginn das Kommentarzeichen "#", jedoch handelt es sich durchaus nicht um solche. Vielmehr trifft man mit den Werten hinter FileLog Vorgaben, welche Werte wie von FHEM an gnuplot zwecks grafischer Darstellung übergeben werden.

Im o.a. Beispiel werden das 5. und das 14. Wertfeld (voneinander getrennt durch ein Leerzeichen (Blank)) an gnuplot weiter gegeben.

Eine dazu passende Log-Dateizeile könnte beispielsweise so aussehen

2013-11-14_17:32:00 2013-Nov-14 17:32:00 17.9 5.8 4.9 58 94 0.0 0.0 N 5.8 572.91 1015.200
----1. Feld-------- --2. Feld-- --3.---- -4.- -5. -6. 7. 8. -9. 10. 11 12 --13.- --14.---

                                               ^                                    ^
werden ausgewertet                           --|                                  --|

Diese Parameter können auch als Attribut übergeben werden:

attr weblink plotfunction "FileLog 5::0:"

Anhand der Anmerkungen wird hoffentlich die Wirkungsweise deutlich. Zu den restlichen - optionalen - Parametern hinter FileLog wird zunächst auf die commandref/FileLogget verwiesen.

Datum und Zeit

Anmerkungen / Hinweise:

FHEM erwartet das Datum und die Uhrzeit der Log-Dateieinträge zwingend an erster Stelle der Datenzeile und zwar im Format

JJJJ-MM-TT_SS:mm:ss

wobei

  • JJJJ die 4-stellige Jahreszahl
  • MM der 2-stellige Monat (ggfls. mit Vornull)
  • TT der 2-stellige Tag (ggfls. mit Vornull)
  • SS die 2-stellige Stunde (ggfls. mit Vornull)
  • mm die 2-stellige Minute (ggfls. mit Vornull)
  • ss die 2-stellige Sekunde (ggfls. mit Vornull)

bedeutet. Bitte beachten Sie auch die Stelle der Zeichen "-", "_" und ":". Stehen diese nicht an den angegebenen Stellen, wird die entsprechende Zeile beim Erzeugen des Plots nicht beachtet. Ggfls. wird gar kein Plot angezeigt.

Eine Änderung/Anpassung der *.gplot-Datei in der Zeile

set timefmt "..."

hat auf dieses Verhalten von FHEM keine Auswirkungen, sondern nur auf die Darstellung von Datum und Zeit durch Gnuplot .

Dazu ein Beispiel:

Mit

2013-11-14_17:32:00 2013-Nov-14 17:32:00 17.9 5.8 4.9 58 94 0.0 0.0 N 5.8 572.91 1015.200 

kann FHEM etwas anfangen. Mit

20131114173200 2013-Nov-14 17:32:00 17.9 5.8 4.9 58 94 0.0 0.0 N 5.8 572.91 1015.200 

oder

14.11.2013 17:32 2013-Nov-14 17:32:00 17.9 5.8 4.9 58 94 0.0 0.0 N 5.8 572.91 1015.200 

dagegen nicht.

Im ersten Fehler-Beispiel fehlen die notwendigen Trennzeichen, im zweiten Fehler-Beispiel ist die Reihenfolge im Datum verkehrt, außerdem werden die falschen Trenner verwendet. Zudem fehlen die Sekunden.

Plot der letzten 24 Stunden statt des aktuellen Tages

Hierzu kann man in der Fhem.cfg für die Einträge

define WEB FHEMWEB 8083 global

das Attribut

attr WEB endPlotNow 1

setzen. Gleiches geht auch für WEBphone und WEBtablet. Da muss es dann lauten

attr WEBphone endPlotNow 1

bzw.

attr WEBtablet endPlotNow 1

Das Attribut gilt dann aber für alle Plots der jeweiligen Ansichten. Wenn man wieder zurück zu den Plots ab jeweils 00:00 Uhr des aktuellen Tages möchte, löscht man dieses Attribut wieder bzw. setzt es auf den Wert "0".

Legende links platzieren

Gerade im Verbund mit dem Attribut endPlotNow macht das seit dem 11.01.2015 neue Attribut captionLeft Sinn, da dann die Legende nicht mehr rechts oben, sondern links oben im Plot erscheint. Dadurch wird die Sichtbarkeit der aktuellen Werte verbessert.

Links / Beispiele

Hier finden sich weitere Beispiele zur Plot-Erstellung: