Hallo,
ist es möglich die angehängten Graphen aus FHEM mit dem chart widget darzustellen? Ich bekomme das leider nicht hin....
Folgendermaßen sehen die Gplot Dateien aus:
Tag:
# Created by Martin G., 2014-12-06 14:25:40
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 nomirror
set y2tics
set grid y2tics
set ylabel "<L1>"
set y2label "<L2>"
set yrange [0:]
set y2range [0:]
#DbLog <SPEC1>
#DbLog <SPEC2>
plot "<IN>" using 1:2 axes x1y2 title '<L2>' ls l2 lw 1 with lines,\
"<IN>" using 1:2 axes x1y1 title '<L1>' ls l1fill lw 1 with fsteps
Monat:
# Created by Martin G., 2014-12-16 20:04:38
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 nomirror
set y2tics
set grid ytics
set ylabel "<L1>"
set y2label ""
set yrange [0:]
set y2range [0:]
#DbLog <SPEC1>:$val=($val>9.041?9.041:$val)
#DbLog <SPEC1>::
#DbLog ::::
#DbLog ::::
plot "<IN>" using 1:2 axes x1y1 title '<L1> Ziel o.k.' ls l1fill lw 1 with fsteps,\
"<IN>" using 1:2 axes x1y1 title '<L1> darüber' ls l0fill lw 0.2 with fsteps,\
"<IN>" using 1:2 axes x1y1 title '.' ls l1 lw 1 with lines,\
"<IN>" using 1:2 axes x1y1 title 'Tagesziel 9.041 kWh' ls l5 lw 1 with lines
Jahr:
# Created by Martin G., 2014-12-16 18:32:01
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 nomirror
set y2tics
set grid ytics
set ylabel "<L1>"
set y2label ""
set yrange [150:]
set y2range [150:]
#DbLog <SPEC1>:$val=($val>275?275:$val)
#DbLog <SPEC1>::
#DbLog ::::
#DbLog ::::
plot "<IN>" using 1:2 axes x1y1 title '<L1> Ziel o.k.' ls l1fill lw 1 with fsteps,\
"<IN>" using 1:2 axes x1y1 title '<L1> darüber' ls l0fill lw 0.2 with fsteps,\
"<IN>" using 1:2 axes x1y1 title '.' ls l1 lw 1 with lines,\
"<IN>" using 1:2 axes x1y1 title 'Monatsziel 275 kWh' ls l5 lw 1 with lines
Gehen wird das auf jeden Fall.
Kannst Du noch zusätzlich ein Beispiel für die Definition des Plots in fhem schicken. Dann kann ich versuchen Dir einen Vorschlag für eine entsprechende FTUI Chart definition zu basteln.
Hey Eki, Danke. damit hatte ich es mal versucht, das gibt aber nur ein leeres Chart
<header>Aktueller Verbrauch</header>
<div data-type="chart"
data-device="myDbLog"
data-logdevice="myDbLog"
data-logfile="HISTORY"
data-columnspec='["ESA2000WZ_4f7f:actual","ESA2000WZ_4f7f:hour_last"]'
data-style='["ftui l0","ftui l2"]'
data-ptype='["lines","steps"]'
data-uaxis='["primary","secondary"]'
data-legend='["aktuell","Stunde"]'
data-yunit=" KWh"
data-yunit_sec=" KWh"
data-ytext="Aktuell"
data-ytext_sec="Stunde"
data-minvalue="0"
data-maxvalue=auto"
data-minvalue_sec="0"
data-maxvalue_sec="auto"
data-y_margin="5"
data-yticks="auto"
data-xticks="auto"
data-daysago_start="0"
data-daysago_end="-1"
data-crosshair="false"
data-cursorgroup="1"
data-scrollgroup="1"
data-showlegend="true"
data-xticks="auto"
data-height="80%"
data-width="95%"
class="fullsize">
</div>
Hi,
wäre ebenfalls an Lösungen für Balkendiagramme interessiert, in denen auch z.B. offen / zu ... da / nicht da ... Zustände angezeigt werden ... bekomme es leider nicht mit Chart/Highchart etc. hin....die Chart Widgets haben zwar eine Menge Einstellmöglichkeiten, aber die vorhandene Doku ist ein bisschen knapp bzw. die richtige Anwendung ist nicht immer ersichtlich.
Ich meinte nicht die Definition im FTUI sonder die FHEM Plot Definition. Dort hast Du offensichtlich das Attribut plotfunction gesetzt und diese Definition braucht man um sie in die Columnspec beim chart einzutragen.
@n4rrOx: siehe https://forum.fhem.de/index.php/topic,64853.0.html (https://forum.fhem.de/index.php/topic,64853.0.html).
Sorry, war wohl zu spät :)
# Visualisierung: Strom 1 aktueller Tag (Momentanwert und Stunde)
define wl_Strom1_akt SVG myDbLog:myDBStromTag:HISTORY
attr wl_Strom1_akt group Plots
attr wl_Strom1_akt label "Stunde (kWh)"::"aktuell (kWh)"
attr wl_Strom1_akt plotfunction ESA2000WZ_4f7f:actual:: ESA2000WZ_4f7f:hour_last::
attr wl_Strom1_akt room Strom
attr wl_Strom1_akt sortby 1
attr wl_Str# Visualisierung: Strom 1 aktueller Monat (Tage)
define wl_Strom1_Tag SVG myDbLog:myDBStromTagBunt:HISTORY
attr wl_Strom1_Tag fixedrange month
attr wl_Strom1_Tag group Plots
attr wl_Strom1_Tag label "Tag (kWh)"
attr wl_Strom1_Tag plotfunction ESA2000WZ_4f7f:day_last::
attr wl_Strom1_Tag room Strom
attr wl_Strom1_Tag sortby 2
attr wl_Strom1_Tag title "Strom Monat: Min $data{min1}, Max $data{max1}, letzter Tag $data{currval1} (kWh)"om1_akt title "Strom Tag: Min $data{min2}, Max $data{max2}, letzte Stunde $data{currval2} (kWh)"
# Visualisierung: Strom 1 aktuelles Jahr (Monate)
define wl_Strom1_Monat SVG myDbLog:myDBStromMonatBunt:HISTORY
attr wl_Strom1_Monat fixedrange year
attr wl_Strom1_Monat group Plots
attr wl_Strom1_Monat label "Monat (kWh)"
attr wl_Strom1_Monat plotfunction ESA2000WZ_4f7f:month_last::
attr wl_Strom1_Monat room Strom
attr wl_Strom1_Monat sortby 3
attr wl_Strom1_Monat title "Strom Jahr: Min $data{min1}, Max $data{max1}, letzter Monat $data{currval1} (kWh)"
Die Columnspec sollte eigentlich OK sein nach dem was ich sehe (kann leider nicht mit DbLog testen). Allerdings muss in data-device nicht das Logdevice sondern das Device, das das Loggen Triggert stehen. In Deinem Fall sollte dort also so etwas wie data-device="ESA2000WZ_4f7f" stehen.
Leider keine Änderung :'( Wenn ich das so mache, bleibt das Chart immer noch leer, siehe Screenshot
<li data-row="2" data-col="2" data-sizex="6" data-sizey="1">
<header>Aktueller Verbrauch</header>
<div data-type="chart"
data-device="ESA2000WZ_4f7f"
data-logdevice="myDbLog"
data-logfile="HISTORY"
data-columnspec='["ESA2000WZ_4f7f:actual","ESA2000WZ_4f7f:hour_last"]'
data-style='["ftui l0","ftui l2"]'
data-ptype='["lines","steps"]'
data-uaxis='["primary","secondary"]'
data-legend='["aktuell","Stunde"]'
data-yunit=" KWh"
data-yunit_sec=" KWh"
data-ytext="Aktuell"
data-ytext_sec="Stunde"
data-minvalue="0"
data-maxvalue=auto"
data-minvalue_sec="0"
data-maxvalue_sec="auto"
data-y_margin="5"
data-yticks="auto"
data-xticks="auto"
data-daysago_start="0"
data-daysago_end="-1"
data-crosshair="false"
data-cursorgroup="1"
data-scrollgroup="1"
data-showlegend="true"
data-xticks="auto"
data-height="80%"
data-width="95%"
class="fullsize">
</div>
</li>
Das einzige was mir spontan aufgefallen ist. Bei dem Eintrag data-maxvalue=auto" sollte es heißen data-maxvalue="auto" da feht ein ".
Zitat von: eki am 23 Februar 2017, 12:25:44
Das einzige was mir spontan aufgefallen ist. Bei dem Eintrag data-maxvalue=auto" sollte es heißen data-maxvalue="auto" da feht ein ".
So ein blöder Fehler, das war's. ;-)
Herzlichen Dank, jetzt wird etwas angezeigt.
Wie muss ich denn mit den Wertrn mit der Plotfunction umgehen, einfach als columnspec angeben? Wie funktioniert das mit dem Vorgabeverbrauchswert, wenn die Werte darunter oder darüber fallen?
Was plotfunction betrifft, musst Du in Deine Plotfiles schauen. Dort hast Du ja z.B. <SPEC1>:$val=($val>9.041?9.041:$val)
stehen. Wenn Du das dann in der FTUI Definition genau so haben willst, musst Du "<SPEC1>" durch den ersten Teil (Trenner zwischen den einzelnen Teilen ist das Leerzeichen) Deiner plotfunction Definition ersetzen. Bei dem hinteren Teil ($val...) bitte darauf achten, dass Du eventuelle Anführungszeichen mit \ maskierst (also \") oder gleich den ASCII Code nimmst (dann wäre das " durch \\x22 zu ersetzen). Alles Mögliche zum Vorgehen beim Chart steht übrigens auch einiges im neuen Chart Wiki unter https://wiki.fhem.de/wiki/FTUI_Widget_Chart#Legende (https://wiki.fhem.de/wiki/FTUI_Widget_Chart#Legende).
Sorry, das funktioniert noch nicht so ganz. Anführungszeichen waren bei der Monatsübersicht ja nicht vorhanden, aber so zeigt er immer nur 1 Balkendiagramm in einer Farbe. Wie funktioniert denn die Anzeige von genau einem Monat? Im Wiki habe ich auf Anhieb nichts gefunden.
<header>Aktueller Monat</header>
<div data-type="chart"
data-device="ESA2000WZ_4f7f"
data-logdevice="myDbLog"
data-logfile="HISTORY"
data-columnspec='["ESA2000WZ_4f7f:day_last","ESA2000WZ_4f7f:day_last:$val=($val>9.041?9.041:$val)"]'
data-style='["ftui l4fill","ftui l2fill"]'
data-ptype='["fsteps","fsteps"]'
data-uaxis='["primary","primary"]'
data-legend='["Ziel darüber","Ziel okay"]'
data-yunit=" KWh"
data-yunit_sec=" KWh"
data-ytext="Tag"
data-ytext_sec=""
data-minvalue="0"
data-maxvalue="auto"
data-minvalue_sec="0"
data-maxvalue_sec="auto"
data-y_margin="5"
data-yticks="auto"
data-xticks="auto"
data-daysago_start="30"
data-nofulldays="true"
data-daysago_end="-1"
data-crosshair="false"
data-cursorgroup="1"
data-scrollgroup="1"
data-showlegend="true"
data-xticks="auto"
data-height="80%"
data-width="95%"
class="fullsize">
</div>
Mit dem Code geht es. Jetzt fehlt nur noch die Begrenzung auf den laufenden Monat bzw. das laufende Jahr. In Fhem läuft das wohl mit fixedrange
<header>Aktueller Monat</header>
<div data-type="chart"
data-device="ESA2000WZ_4f7f"
data-logdevice="myDbLog"
data-logfile="HISTORY"
data-columnspec='["ESA2000WZ_4f7f:day_last:::$val=($val>9.041?9.041:$val)","ESA2000WZ_4f7f:day_last"]'
data-style='["ftui l4fill","ftui l2fill"]'
data-ptype='["fsteps","fsteps"]'
data-uaxis='["primary","primary"]'
data-legend='["Tagesziel okay","Tagesziel darüber"]'
data-yunit=" KWh"
data-yunit_sec=" KWh"
data-ytext="Tag"
data-ytext_sec=""
data-minvalue="0"
data-maxvalue="auto"
data-minvalue_sec="0"
data-maxvalue_sec="auto"
data-y_margin="5"
data-yticks="auto"
data-xticks="auto"
data-daysago_start="30"
data-daysago_end="-1"
data-crosshair="false"
data-cursorgroup="1"
data-scrollgroup="1"
data-showlegend="true"
data-xticks="auto"
data-height="80%"
data-width="95%"
class="fullsize">
</div>
<header>Aktuelles Jahr</header>
<div data-type="chart"
data-device="ESA2000WZ_4f7f"
data-logdevice="myDbLog"
data-logfile="HISTORY"
data-columnspec='["ESA2000WZ_4f7f:month_last:::$val=($val>275?275:$val)","ESA2000WZ_4f7f:month_last"]'
data-style='["ftui l4fill","ftui l2fill"]'
data-ptype='["fsteps","fsteps"]'
data-uaxis='["primary","primary"]'
data-legend='["Monatsziel okay","Monatsziel darüber"]'
data-yunit=" KWh"
data-yunit_sec=" KWh"
data-ytext="Tag"
data-ytext_sec=""
data-minvalue="0"
data-maxvalue="auto"
data-minvalue_sec="0"
data-maxvalue_sec="auto"
data-y_margin="5"
data-yticks="auto"
data-xticks="auto"
data-daysago_start="365"
data-daysago_end="-1"
data-crosshair="false"
data-cursorgroup="1"
data-scrollgroup="1"
data-showlegend="true"
data-xticks="auto"
data-height="80%"
data-width="95%"
class="fullsize">
</div>