FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Lars am 25 Januar 2014, 17:38:07

Titel: SVG aus DBLog
Beitrag von: Lars am 25 Januar 2014, 17:38:07
Hallo zusammen,

habe heute mein Log auf DBLog umgestellt und verzweifle nun an den SVGs. Ich habe EIN DBLog erstellt und mit mydblog:<DEVICE> greife ich in der SVG DEF auf das Device zu, oder?

Hier meine Definition

define Plot_TempSZ SVG mydblog:TempSZ:temp4hum6:CURRENT
attr Plot_TempSZ label "TempSZ Min $data{min1}, Max $data{max1}, Last $data{currval1}"
attr Plot_TempSZ room Plots


Liefert aber dummerweise sowas:
Titel: Antw:SVG aus DBLog
Beitrag von: Puschel74 am 25 Januar 2014, 19:45:14
Hallo,

vielleicht bringen dich die Attribute meiner SVG-Definition weiter - siehe Screenshot.

Aber Achtung!
Das original *.gplot-file verwendet FileLog.
Diesen Eintrag im jeweiligen *.gplot musst du auf dein DBLog-Define anpassen.
Am besten erstellst du dir eine neue *.gplot und bennenst sie passend um sonst kan nes dir passieren das sie bei einem update wieder überschrieben wird.

Hier mal die gplot zum Screenshot:
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 '<L1>'
set ylabel "Power (kW) Gas"
set y2label "Power (kW) Strom"
set grid
set ytics
set y2tics
set format y "%.2f"
set format y2 "%.2f"

#DbLog <SPEC1>:cum_day:::$val=~s/^CUM_DAY..([\d.]*).*/$1/eg
#DbLog <SPEC2>:cum_day:::$val=~s/^CUM_DAY..([\d.]*).*/$1/eg

plot \
   "< awk '/load avg:/ {print $1, $4}' <IN>" \
   using 1:2 ls l8 axes x1y1 title 'Gas' lw 1 with lines \
   "< awk '/load avg5:/ {print $1, $4}' <IN>" \
   using 1:2 ls l0 axes x1y1 title 'Strom' lw 1 with lines \


Grüße
Titel: Antw:SVG aus DBLog
Beitrag von: Lars am 26 Januar 2014, 09:57:48
Hallo Puschel,

ok, ich bin einen Schritt weiter. Ich hatte nicht erkannt, dass die Definition auf eine *.gplot Datei verweist. Habe die gplot Datei von justme genommen


Dateiname temphum.gplot
# Created by FHEM/98_SVG.pm, 2014-01-26 09:51:19
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 ''
set ytics nomirror
set y2tics
set grid ytics y2tics
set ylabel "% "
set y2label "°C"

#
#

plot "<IN>" using 1:2 axes x1y2 title 'Temperature (°C)' ls l0 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Humidity (%)' ls l2fill lw 1 with lines


Nun erhalte ich aber eine andere Fehlermeldung:


CONSOLE:
Use of uninitialized value $v in concatenation (.) or string at ./FHEM/01_FHEMWEB.pm line 1396.
Use of uninitialized value $ldt in hash element at ./FHEM/98_SVG.pm line 290.
Use of uninitialized value in concatenation (.) or string at ./FHEM/01_FHEMWEB.pm line 945.
Use of uninitialized value in hash element at fhem.pl line 1358.


Und der Plot sieht so aus:

Titel: Antw:SVG aus DBLog
Beitrag von: Puschel74 am 26 Januar 2014, 10:16:30
Hallo,

Zitatok, ich bin einen Schritt weiter.
Weiter?
Ich würd eher sagen du hast 3 Schritte zurück gemacht.

In der Definition des Plot wird
a) das DBLog-Device angegeben und
b) das gplot-File welches verwendet werden soll sowie
c) CURRENT um den aktuellen Wert zu bekommen (denke ich mal).
d) im Attribut das Device angegeben von dem die Werte angezeigt werden sollen (plotfunction)

Im Gplot-File kann dann mit
a) #DbLog <SPEC1>: das Device aus dem Attribut plotfunction ausgelesen werden und mit
b) cum_day:::$val=~s/^CUM_DAY..([\d.]*).*/$1/eg der Werte angegeben werden der ausgelesen werden soll.
Ok. Hier habe ich leider eine etwas kryptische Angabe gemacht aber es funktioniert auch ein
b) temperature::
b) Muss natürlich auch ein passendes Reading des Sensores sein der mit plotfunction angegeben werden kann.

Um es kurz zu machen:
In deinem geposteten gplot-File referenzierst du auf --- nichts.
Welches Device soll ausgelesen werden?
Schau dir mal beide gplot-Files an (das von dir und das von mir).
Weiters wäre auch die Definition des Plots interessant - meine siehst du ja im Screenshot.

Grüße
Titel: Antw:SVG aus DBLog
Beitrag von: Lars am 26 Januar 2014, 10:32:10
Hi,
zumindest bin vom Verständnis weiter als gestern. In dem gplot File welches ich gepostet habe ist in der Tat ein Fehler - erkannt.
Ich weiß nicht ob es durch die Verwendung des FHEMWEB Editors passiert ist, auf jeden Fall stand da mal # DBLog ... drin.

Ok, ich bin jetzt auf Dein Posting aus November gestoßen
http://forum.fhem.de/index.php/topic,16078.msg104502/topicseen.html#msg104502

Und habe alles entsprechend bei mir umgebaut:

DEF

define Plot_TempAussen SVG mydblog:TempAussen:temphumdb:CURRENT
atttr Plot_TempAussen label "Aussentemperatur Min: $data{min1}, Max: $data{max1}, Aktuell: $data{currval1}"
attr Plot_TempAussen room Plots



GPLOT

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 "°C"
set ylabel "%"

#DbLog <SPEC1>:temperature::
#DbLog <SPEC1>:humidity::

plot \
  1:2 ls l0 axes x1y2 title 'Temperatur (°C)' with lines
  1:2 ls l2fill axes x1y1 title 'Luftfeuchte (%)' with lines


ERGEBNIS
Titel: Antw:SVG aus DBLog
Beitrag von: Puschel74 am 26 Januar 2014, 10:37:56
Hallo,

http://fhem.de/commandref.html#SVG (http://fhem.de/commandref.html#SVG)

Hast du in meinem vorigen Beitrag das Attribut plotfunction überlesen?
Welchen Plot wilslt du den darstellen?
Es gibt ja 2 Möglichkeiten:
a) entweder "hartcodiert" im gplot-File - dann darfst du nicht <SPEC1>schreiben sondern das Device eintragen oder
b) mit <SPEC1> im Gplot-File dann musst du aber das Attribut plotfunction setzen - so wie in dem, von dir gefundenen, Beitrag von mir.

Grüße
Titel: Antw:SVG aus DBLog
Beitrag von: Lars am 26 Januar 2014, 10:48:05
Variante b) möchte ich.
Ok, DEF angepasst:

define TempAussen CUL_WS 2
attr TempAussen alias Temp Aussen
attr TempAussen group Temperatur
attr TempAussen model S300TH
attr TempAussen room Aussenbereich,Favourites

define Plot_TempAussen SVG mydblog:TempAussen:temphumdb:CURRENT
attr Plot_TempAussen label "Aussentemperatur Min: $data{min1}, Max: $data{max1}, Aktuell: $data{currval1}"
attr Plot_TempAussen plotfunction TempAussen
attr Plot_TempAussen room Plots


Ergebnis ist das gleiche...
Titel: Antw:SVG aus DBLog
Beitrag von: Puschel74 am 26 Januar 2014, 10:53:17
Hallo,

hier mal meine funktionierende Definition inkl. Gplot-File dazu.

define wl_Heizraum SVG myDbLog:temphumdb:CURRENT
attr wl_Heizraum label "Heizraum Min: $data{min1}, Max: $data{max1}, Aktuell: $data{currval1}"
attr wl_Heizraum plotfunction Heizraum
attr wl_Heizraum room 05_Plots_S300


Hast du schonmal ein "update" gemacht?

Grüße

Edith: Wirf hier
Zitatdefine Plot_TempAussen SVG mydblog:TempAussen:temphumdb:CURRENT
mal das TempAussen raus.
Wieso hast du das da drinnen stehen?
Titel: Antw:SVG aus DBLog
Beitrag von: Lars am 26 Januar 2014, 10:58:13
it works...

Ok, der Fehler war, dass ich in der Definition schon das Device angegeben habe.

define Plot_TempAussen SVG mydblog:temphumdb:CURRENT
attr Plot_TempAussen label "Aussentemperatur Min: $data{min1}, Max: $data{max1}, Aktuell: $data{currval1}"
attr Plot_TempAussen plotfunction TempAussen
attr Plot_TempAussen room Plots


Titel: Antw:SVG aus DBLog
Beitrag von: Lars am 26 Januar 2014, 10:59:06
Danke für die Hilfe!!!  ;D
Titel: Antw:SVG aus DBLog
Beitrag von: Puschel74 am 26 Januar 2014, 11:38:48
Hallo,

ZitatDanke für die Hilfe!!!
Gern geschehen.

Bitte editier deinen ersten Beitrag und stell dem Titel ein (Gelöst) vorne dran damit man sieht das deine Frage beantwortet wurde.
Danke.

Grüße
Titel: Antw:SVG aus DBLog
Beitrag von: Lars am 26 Januar 2014, 12:48:02
Ich bin gerade noch bei der Optimierung und werde dann meinen ersten Beitrag entsprechend bearbeiten.