Dynamic Range in einem Plot

Begonnen von flurin, 23 Juli 2014, 20:01:29

Vorheriges Thema - Nächstes Thema

flurin

Hallo,

Ich möchte bei meinem Temperatur-Diagramm den Temperatur-Bereich dynamisch definieren.

Statisch sieht es so aus:

attr SVG_FileLog_tmp_office_1 label "[20:26]"

Dynamisch:

attr SVG_FileLog_tmp_office_1 label "[$data{min1}-1:$data{max1}+1]"

Also unten und oben ein 1 Grad Abstand vom Rand.

Leider geht es  nicht, wie könnte ich sonst ein Dynamic Range definieren?


justme1968

label ist nur für die Überschrift über dem plot zuständig und hat nichts mit dem wertebereich der achsen zu tun.

den wertebereich gibst du für die y achsen mit range im plotfile an. wenn du keinen range setzt wird automatisch ein passender wertebereich bestimmt.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

flurin

#2
Danke für die Antwort.

Zitat von: justme1968 am 23 Juli 2014, 20:11:26
label ist nur für die Überschrift über dem plot zuständig und hat nichts mit dem wertebereich der achsen zu tun.

Bist Du sicher? Ich kann doch mehrere Labels definieren <L1>, <L2> ... für den Titel benutze ich <TL>

mein .gplot sieht so aus:
# Created by FHEM/98_SVG.pm, 2014-07-23 19:00:15
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 y2tics
set ylabel ""
set y2label "Temperature"
set y2range <L1>

#FileLog 4:tmp_office.temperature\x3a::

plot "<IN>" using 1:2 axes x1y2 title 'Temperature' ls l0 lw 2 with lines


und mit:
attr SVG_FileLog_tmp_office_1 label "[20:26]"

funktioniert es einwandfrei.

Puschel74

Hallo,

label habe ich z.B. so
label "Super E10 Gehring $data{currval2} € Shell $data{currval5} €"
oder so
label "DG_Badezimmer Min: $data{min1}, Max: $data{max1}, Aktuell: $data{currval1}"

Wozu das noch "dynamischer" sein soll weiß ich jetzt nicht.

Ich denke mal andre hat schon recht und meinst nicht die Überschrift des weblink (wenn doch häng mal einen Screenshot an - wir sehen ja nicht was du siehst oder sehen möchtest  ;) ) sondern du meinst den Range des weblink - und der "dynamisiert" sich automatisch wenn du KEINEN range angibst.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

justme1968

die title und label attribute arbeiten im prinzip über reines tex ersetzen.

du hast in deinem plotfile set y2range <L1>stehen. hier wird dann tatsächlich das was du als label angibst als y2range verwendet. das das geht ist ein netter nebeneffekt. vielleicht sogar zufall.

damit das rechnen in diesem perl ausdruck geht dürfen die rechenoperationen nicht im string selber enthalten sein sondern du musst den string aus den werten zusammen bauen. etwa in dieser art:attr SVG_FileLog_tmp_office_1 label "[".$data{min1}-1.":".$data{max1}+1."]"

wenn du die set y2range ... zeile komplett weg lässt sind die achsen aber automatisch dynamisch skaliert.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

flurin

@andre
Vielen Dank für Deine Antwort.

Ich habe vor ein paar Tagen mit fhem angefangen und mal neugierig einiges ausprobiert.

Ohne die Range-Definition ist die Skalierung dynamisch, das finde ich gut. Jedoch geht die Kurve bis zum Rand.
Ich wollte versuchen, zum Max und Min einen Abstand zu definieren, damit es schöner aussieht.

Sobald ich herausgefunden habe, wie man Bilder hochladen kann, poste ich zwei Bilder zur Klärung.

Gruss,
flurin

justme1968

ich weiss was du meinst.

schau dir mal an ob die version die ich oben gepostet habe geht.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

flurin

@andre

Nein es geht nicht aber so geht es:

.plog
set y2range [<L1>:<L2>]

fhem.cfg
attr SVG_FileLog_tmp_office_1 label $data{min1}-1::$data{max1}+1

Vielen Dank für Deine Hilfe.

Gruss,
flurin

flurin

#8
vorher:

(http://forum.fhem.de/index.php?action=dlattach;topic=25618.0;attach=17452;image)


nachher:

(http://forum.fhem.de/index.php?action=dlattach;topic=25618.0;attach=17454;image)

frank

FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

frank

wenn man 4 Kurven in einem plot hat, hilft das hier:

attr SVG_FileLog_tmp_office_1 label min($data{min1},$data{min2},$data{min3},$data{min4})-1::max($data{max1},$data{max2},$data{max3},$data{max4})+1

gruss frank
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

flurin

#11
@frank

Zuzeit habe ich nur eine Temperaturkurve aber später kommt noch die Feuchtigkeitskurve dazu, gut zu wissen. Danke.

Meine letzte Version:

# Created by FHEM/98_SVG.pm, 2014-07-23 23:39:31
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 y2tics
set ylabel ""
set y2label "Temperature"
set yrange [<L1>:<L2>]
set y2range [<L1>:<L2>]

#FileLog 4:tmp_office.temperature\x3a::

plot "<IN>" using 1:2 axes x1y2 title 'Temperature' ls l0 lw 2 with lines


attr SVG_FileLog_tmp_office_1 label int($data{min1}-0.3)::$data{max1}+0.5

Damit a) ist die Skalierung rechts und links gleich und b) sind die Skalazahlen gerundet.

Gruss,
flurin


Jojo11

Zitat von: frank am 24 Juli 2014, 10:02:40
wenn man 4 Kurven in einem plot hat, hilft das hier:

attr SVG_FileLog_tmp_office_1 label min($data{min1},$data{min2},$data{min3},$data{min4})-1::max($data{max1},$data{max2},$data{max3},$data{max4})+1

gruss frank

Hallo Frank,

ich verwende diese Lösung auch. Allerdings habe ich alle paar Wochen mal den Fall, dass

min($data{min1},$data{min2})

anscheinend falsch ausgewertet wird. Es wird nur der Minimalwert von einem Sensor genommen. Leider kann ich kein Muster erkennen, so dass ich vollkommen ahnungslos bin, woran das liegen könnte. Nehme ich nur den einen oder nur den anderen Min-Wert, funktioniert alles. Ist Dir das auch schon mal aufgefallen?

schöne Grüße
Jo

frank

ZitatIst Dir das auch schon mal aufgefallen?

nein. wie macht sich das bemerkbar? gibt es eine fehlermeldung?

gruss frank
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Jojo11

Habe zwei Aussentemperatur-Sensoren in einem log file und plot. Beide liegen  manchmal 1-2°C auseinander. Der eine definiert meist der Minimalwert und der andere den maximalen. Wenn die Berechnung klappt, sind die Kurven  vollständig sichtbar und die Extremwerte im Titel stimmen mit denen überein, die man aus dem plot ablesen kann. Nutze die Formel sowohl für den Titel als auch für die Achsenskalierung mit label. Wenn es mal nicht geht, stimmen die Werte nicht und eine Kurve ragt aus dem plot heraus. Fehlermeldungen gibt es keine.

schöne Grüße
Jo