logProxy_xy2Plot: Beispiel gesucht

Begonnen von Dr. Boris Neubert, 20 Januar 2017, 18:40:31

Vorheriges Thema - Nächstes Thema

Dr. Boris Neubert

Hallo,

ich suche die Anleitung bzw. eine gplot-Datei, wie ich aus einem Log der Form

timestamp  device  reading: X,Y

mt Beispielzeile

2017-01-20_18:14:12 ade V_INST: 0.01847,47338.99

einen XY-Plot mittels Func:logProxy_xy2Plot() zaubern kann. Die Anleitung ist mir zu knapp und das Beispiel im Wiki zu sophistiziert  :P

Danke im Voraus!
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

stromer-12

FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

justme1968

#2
hallo boris,

die logProxy_xy2Plot() routine ist 'nur' dazu bereits vorhandene arrays aufzubereiten. ein logfile in deinem format lässt sich damit nicht direkt plotten.

ich sehe zwei möglichkeiten:
- eine routine die die werte aus dem log liest, in ein passendes array wandelt und dann mit logProxy_xy2Plot aufbereitet.
- an hand von logProxy_xy2Plot direkt eine routine implementieren die das in einem schritt macht.

bei deinem log file fällt mir aber auf: du hast ja noch eine zeit komponente die dann weg fällt. ist das wirklich so beabsichtigt?

der unterschied zwischen normalem zeit/wert plot und x/y plot macht es unmöglich einen solchen plot ohne eigenen code automatisch auszuwerten.

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

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

Dr. Boris Neubert

Hallo Andre,

Danke für Deine Rückmeldung.

Zur Erläuterung: ich schneide 50 (t,V)-Werte eines Spannungsverlaufs über ca. 50 Millisekunden mit und liefere sie per MQTTDevice an FHEM aus. Die Logdatei protokolliert diese (t,V)-Werte. Die Zeitpunkte sind die 50 Zeitpunkte, zu denen der Kurvenlauf empfangen wurde.

Ich habe erst versucht, die Optionen für einen logProxy um eine Funktion xyFn (analog postFn) zu erweitern, die aus dem FileLog xy-Werte extrahiert. Neben der Tatsache, dass nur die Werte angezeigt werden, die im Zeitfenster empfangen wurden, das gerade aktuell ist, gibt FileLog die Wertepaare nicht her, weil sie keine Zahl sind.

Ich habe daher eine Funktion logProxy_xyFile2Plot geschrieben, die ein Logfile auswertet in Anlehnung an eine FileLog-Direktive in einer .gplot-Datei. Patch mit aktualisierter commandRef anbei. Ist zwar etwas speziell aber vielleicht magst Du es dennoch einchecken.

Beispiel für .gplot-Datei:

set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xlabel " "
set xrange [0:50]
set title '<TL>'
set ytics
set y2tics
set grid ytics y2tics
set ylabel ""
set y2label ""

#adeinst.logproxy Func:logProxy_xyFile2Plot("/path-to/adeinst.log",4,"V_INST:")
#adeinst.logproxy Func:logProxy_xyFile2Plot("/path-to/adeinst.log",4,"IA_INST:")
#adeinst.logproxy Func:logProxy_xyFile2Plot("/path-to/adeinst.log",4,"IB_INST:")

plot "<IN>" using 1:2 axes x1y2 title 'V' ls l0 lw 1 with lines, \
     "<IN>" using 1:2 axes x1y2 title 'IA' ls l1 lw 1 with lines, \
     "<IN>" using 1:2 axes x1y2 title 'IB' ls l2 lw 1 with lines



und Grafik anbei.

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

justme1968

hallo boris,

genau das problem mit dem zeitfenster hatte ich oben gemeint.

habs eingecheckt und ihm wiki ergänzt.

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

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

Dr. Boris Neubert

Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Dr. Boris Neubert

Anbei ein Patch, der %L (global gesetzter Pfad für Logs) im Argument (Dateiname) der Funktion logProxy_xyFile2Plot verfügbar macht.
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

justme1968

eingecheckt.

was mir dabei noch einfällt: wäre es eventuell sinnvoll statt dem file namen auch den namen eines FileLog devices zu erlauben und dann den aktuellen logfile namen aus den internals zu holen?

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

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

Dr. Boris Neubert

Zitat von: justme1968 am 04 Februar 2017, 18:55:03
was mir dabei noch einfällt: wäre es eventuell sinnvoll statt dem file namen auch den namen eines FileLog devices zu erlauben und dann den aktuellen logfile namen aus den internals zu holen?

Ja, auf jeden Fall. logProxy_xyFileLog2Plot wäre das Pendant, das dann auf logProxy_xyFile2Plot zurückgreift.
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Dr. Boris Neubert

Hallo,

habe noch an sub logProxy_xyFile2Plot() herumgebaut: Patch in der Anlage.

Bisher erwartet die Funktion Einträge im Log in der Form:

2017-02-11_18:16:35 ade V_INST: 0.00000,-0.03493
2017-02-11_18:16:35 ade V_INST: 0.02000,-0.03916
2017-02-11_18:16:35 ade V_INST: 0.03900,0.16306


Jetzt können auch mehrere durch Semikolon getrennte Wertepaare in der Zeile stehen (abwärtskompatibel):

2017-02-11_18:16:35 ade V_INST: 0.00000,-0.03493;0.1,0.04;0.15,-0.02
2017-02-11_18:16:35 ade V_INST: 0.02000,-0.03916
2017-02-11_18:16:35 ade V_INST: 0.03900,0.16306;0.09,-0.4


Der Patch ist gegen HEAD. Er beinhaltet also auch die Änderung, dass xmin und xmax im %data-Hash enthalten sind.

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

justme1968

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

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

Dr. Boris Neubert

Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!