[solved] Stromverbrauch mit min=0 und max=dynamisch

Begonnen von cmonty14, 17 April 2017, 09:48:07

Vorheriges Thema - Nächstes Thema

cmonty14

Hallo!

Ich möchte den Stromverbrauch des HM-ES-PMSw1-Pl (https://wiki.fhem.de/wiki/HM-ES-PMSw1-Pl_Funk-Schaltaktor_1-fach_mit_Leistungsmessung) dynamisch darstellen, wobei der min Wert bei 0 beginnen soll und der max Wert unbestimmt sein soll.

Wenn ich keine Range definiere, dann sieht der Plot so aus (siehe 2017-04-14_081152.png).
Das heißt, der min Wert wird entsprechend dem zuletzt bekannten Messwert angepasst.

Wenn ich die Range so definiere set y2range [0:]
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 'Trockner'
set ytics
set y2tics
set grid ytics
set ylabel "Leistung [W]"
set y2label "Stromverbrauch [kWh]"
set yrange [0:1000]
set y2range [0:]

#DbLog WK.Trockner_Pwr:power::
#DbLog WK.Trockner_Pwr:energyCalc:::$val=($val*0.001)

plot "<IN>" using 1:2 axes x1y1 title 'Leistung' ls l0 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'Stromverbrauch' ls l1fill lw 1 with lines

erhalte ich den gewünschten Plot (siehe 2017-04-17_094449.png).

Allerdings ist der zuletzt ermittelte Messwert jetzt der max Wert der Range.

Frage:
Wie kann ich den max Wert der Range um einen Wert z noch oben verschieben abhängig vom zuletzt ermittelten Messwert, damit der Plot nicht "oben anstößt"?

THX

rudolfkoenig

ZitatWie kann ich den max Wert der Range um einen Wert z noch oben verschieben abhängig vom zuletzt ermittelten Messwert, damit der Plot nicht "oben anstößt"?

Das wurde schon oefters gefragt, mW ohne Ergebnis/Loesung.

CQuadrat

#2
Setze erstens in der SVG-Datei:
set y2range [<L2>:<L3>]

und bei den Attributen im SVG-Device dann
attr <SVG> label "Irgend ein Titel"::$data{min2}*0.001-10::$data{max2}*0.001+10


Die +/--Werte dann entsprechend anpassen. Hier wird auch die untere Grenze angepasst.
FHEM auf Mini-ITX-Server mit Intel Quad-Core J1900:
+ HM: HM-LAN, HM-USB, HM-MOD-UART mit div. HM-Komponenten
+ RFXtrx: Funkwetterstation Bresser mit ext. Thermometer, Regenmesser und Windmesser
+ TUL (KNX-Anbindung), KM271 (per ser2net), SONOS (div. Gimmicks), OneWire, Hue

justme1968

der umweg über label ist seit einer ganzen weile nicht mehr nötig.

für die range attribute ist auch perl code möglich der den passenden ausdruck liefert.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

cmonty14

Zitat von: justme1968 am 17 April 2017, 15:47:38
der umweg über label ist seit einer ganzen weile nicht mehr nötig.

für die range attribute ist auch perl code möglich der den passenden ausdruck liefert.

Hallo!
Könntest du bitte eine Info / Hinweis geben, wie der Perl Code aussehen sollte?

THX

justme1968

#5
z.b. so:set yrange {"[0:".($data{max1}+1)."]"}
oder so:
set yrange {"[".($data{min2}-1).":".($data{max2}+1)."]"}
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

cmonty14

Nein, mit diesem Coding funktioniert das nicht wie gewünscht.
1. Wird die y-Skala auf den Maximalwert 1 gesetzt
2. Überschreitet der Chart den Maximalwert

Ich habe einen Screenshot angehängt (2017-04-18_020203.png).

justme1968

du musst die bezeichner an deine gegebenheiten anpassen.

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

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

cmonty14

aha... die Bezeichner anpassen.
Aber wie genau sind die Bezeichner des HM-ES-PMSw1-Pl?

(Ich habe bisher wenig Erfahrung mit FHEM gesammelt.)

justme1968

yrange oder y2range je nach dem ob es um die linke oder rechte achse geht, die zahl nach min und max je nach der laufenden nummer der jeweiligen kurve.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

cmonty14

Diese SVG Konfiguration erfüllt die Anforderungen:
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 'Waschmaschine'
set ytics
set y2tics
set grid ytics
set ylabel "Leistung [W]"
set y2label "Stromverbrauch [kWh]"
set yrange [0:2500]
set y2range {"[0:".($data{max2}+1)."]"}

#DbLog WK.Waschmaschine_Pwr:power::
#DbLog WK.Waschmaschine_Pwr:energyCalc:::$val=($val*0.001)

plot "<IN>" using 1:2 axes x1y1 title 'Leistung' ls l0 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'Stromverbrauch' ls l1fill lw 1 with lines

Tomsc1984

wie kann ich das einfügen? mir geht es eigentlich nur um die Berechnung von Wh auf kWh