Darstellungsprobleme/Herausforderung mit SVG

Begonnen von Achim, 02 Dezember 2014, 08:10:13

Vorheriges Thema - Nächstes Thema

Achim

Hallo,

meine Herausforderung (Problem ist wohl zuviel gesagt) ist folgende. Ich will die Monatswerte von OWCOUNT sauber darstellen. Der Inhalt des Filelogs sieht folgendermaßen aus (als Beispiel die erste Zeile):

Zitat2014-11-01_23:59:40 OWX_Z1 day: D01  Gas:   3.7 m³ GasM:   3.7 m³  B:   0.0 cts BM:   0.0 cts

Da die Werte den Tageswert darstellen, ist die Uhrzeit immer 23:59:*. Dadurch beginnt im Plot der erste "Strich" nicht bei 00:00 Uhr (erster Tag) sondern logischerweise bei 23:59 und das sieht dann so aus, als ob es schon der zweite Tag ist. Und es entsteht immer eine Lücke am Anfang des Plots. Und es sieht dann auch immer so aus, als ob der Monat einen Tag länger ist. Ich habe ein Beispiel angehängt.

Anhand der Daten ist der Plot richtig. Aber wie kann ich es erreichen, das der Plot "falsch" erstellt wird und keine Lücke am Anfang des Plots erscheint. Wenn ich das Filelog manuell editiere, passt es. Aber gibt es dafür eine automatische Lösung.

Viele Grüße
Achim
1x RPi V1, COC, 6x FHT, 1x S300TH, 2x DS18B20, 1x KS300
1x Arduino Nano mit Firmata, 2x DS2423old, 4x DS18B20, HIH5030, verschiedene Ein/Ausgangsschaltungen am Arduino
Mysensors-Seriell Gateway, Si7021, BH1750, Relais

rudolfkoenig

Eine "einfache" Loesung waere die Messwerte mit einem notify/sleep/trigger eine Minute zu verschieben.
Eleganter ist vmtl. logProxy, bin aber unsicher, ob er das kann.

justme1968

#2
ich bin mir ziemlich sicher das ein notify nicht hilft weil die daten ja in die vergangenheit geschoben werden müssen. die werte um 23:59 gehören ja zum gleichen tag 00:00 und nicht zum nächsten tag. im prinzip das gleiche 'problem' das es mit average auch gibt. hier gehören die daten zum tag davor.

aber genau das geht mit logproxy. du kannst den plot sowohl in x richtung verschieben als auch die werte des vorherigen und nächsten tages dazu holen damit der plot beim scrollen nicht abreisst.

im wiki sind beispiele. für dich interessant sind offset, extend und predigt.   <- edit: das muss natürlich predict heissen.

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

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

rudolfkoenig


justme1968

das liegt mir sehr sehr fern. nur erklärung.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

rudolfkoenig

Ich meinte:
Zitatim wiki sind beispiele. für dich interessant sind shift, extend und predigt.
Vermutlich predict.

justme1968

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

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

Achim

Hallo,

ich versuche mich gerade an dem logProxy. Leider bisher nur mit sehr wenig Erfolg. Die Anzeige im FHEM bleibt ein weißer Kasten, wo eigentlich der Plot erscheinen soll. Ich bin noch bei dem Versuch, den vorhandenen Plot über logProxy anzuzeigen. Folgende Dinge habe ich konfiguriert:

fhem.cfg
define lp logProxy

define SVG_UG_GasMLog SVG FileLog_Gasverbrauch_Monat:gast6gasm9log:CURRENT
attr SVG_UG_GasMLog label "Tagesverbrauch min. $data{min1}, Durchschnitt $data{avg1}, Gesamtverbrauch Monat $data{max2}"
attr SVG_UG_GasMLog room Monatsplots
attr SVG_UG_GasMLog fixedrange month 0


gast6gasm9.gplot  -> Auszug aus der Orginaldatei
#FileLog 6:Gas\x3a:0:
#FileLog 9:GasM\x3a:0:

plot \
  "<IN>" using 1:2 ls l0fill_stripe axes x1y1 title 'täglicher Gasverbrauch' with steps,\
  "<IN>" using 1:2 ls l2fill axes x1y2 title 'monatlicher Gasverbrauch' with lines,\


gast6gasm9log.gplot  -> Auszug aus der geänderten Plotdatei
#logProxy FileLog:FileLog_Gasverbrauch_Monat:6:Gas\x3a.0:
#logProxy FileLog:FileLog_Gasverbrauch_Monat:9:GasM\x3a.0:


Leider sind für mich die Angaben im Wiki auch etwas "verwirrend". Ich habe die Zeilen aufgrund folgendem Wiki-Eintrag gemacht:
ZitatFileLog:<log device>[,<options>]:<(alte) FileLog column_spec>

Etwas weiter oben steht aber als Beispiel:
Zitat#FileLog 4:PCA301_076035:power::
#logProxy FileLog:FileLog_PCA301_076035:4:PCA301_076035.power::
da ist ein "." statt ein ":" als Trennzeichen. Aber auch damit bekomme ich keine Anzeige.

In der Commandref ist es nochmals anders beschrieben:
Zitat#FileLog 4:<SPEC1>:consumption\x3a::
will become:
#logProxy FileLog:FileLog_<SPEC1>:4:.consumption\x3a::

Ich hoffe mir kann da jemand auf die Sprünge helfen.

Viele Grüße
Achim
1x RPi V1, COC, 6x FHT, 1x S300TH, 2x DS18B20, 1x KS300
1x Arduino Nano mit Firmata, 2x DS2423old, 4x DS18B20, HIH5030, verschiedene Ein/Ausgangsschaltungen am Arduino
Mysensors-Seriell Gateway, Si7021, BH1750, Relais

justme1968

hast du dein SVG device umgestellt? von:define SVG_UG_GasMLog SVG FileLog_Gasverbrauch_Monat:gast6gasm9log:CURRENTnachdefine SVG_UG_GasMLog SVG lp:gast6gasm9log:CURRENT

der punkt gehört in diesem fall zur regex für den reading namen und ist kein trennzeichen. im wiki war aber trotzdem ein tippfehler an dieser stelle.

die drei beschreibungen beschreiben unterschiedliche fälle und sind deshalb auch unterschiedlich.

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

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

Achim

Hallo Andre,

das wars. Jetzt habe ich aber eine weitere Frage. Und zwar funktioniert das "Clip" nicht oder ich habe da wieder etwas vergessen. Ich hänge mal drei Screenshots an. Der obere Plot ist "normal", der untere mit logProxy. Der Inhalt des Filelogs ist folgender:
Zitat2014-12-01_23:59:13 OWX_Z1 day: D01  Gas:   7.9 m³ GasM:   7.9 m³  B:   0.0 cts BM:   0.0 cts
2014-12-02_23:59:13 OWX_Z1 day: D02  Gas:   6.0 m³ GasM:  13.9 m³  B:   0.0 cts BM:   0.0 cts
Ich habe da eine zweite Zeile für "heute" manuell angefügt.

Die Anzeige über den kompletten Monat ist aus meiner Sicht korrekt. Bei der Wochenansicht stimmt bei beiden Plots der Gesamtverbrauch in der Überschrift nicht. Es ist der vom Vormonat. Ist wohl ein "generelles" SVG Problem und nicht das von logproxy. Beim Wochen und Tagesplot gehen beim logProxy-Plot die Werte bis zum Ende des Plots. Die Definiton im gplot-Files ist folgende:
#logProxy FileLog:FileLog_Gasverbrauch_Monat,clip,offset=-86340:6:Gas\x3a:0:
#logProxy FileLog:FileLog_Gasverbrauch_Monat,clip,offset=-86340:9:GasM\x3a:0:

Das "Clip" hinter die offset-Option zu schreiben ändert nichts. Ich habe die Beschreibung im Wiki so verstanden, das mit dem "Clip" verhindert werden kann, das die Werte bis zum Ende des Plots gezeichnet werden. Kannst du da weiterhelfen?

Viele Grüße
Achim

1x RPi V1, COC, 6x FHT, 1x S300TH, 2x DS18B20, 1x KS300
1x Arduino Nano mit Firmata, 2x DS2423old, 4x DS18B20, HIH5030, verschiedene Ein/Ausgangsschaltungen am Arduino
Mysensors-Seriell Gateway, Si7021, BH1750, Relais

justme1968

beim verschieben mit offset schiebst du werte des plots nach rechts oder links aus dem anzeigefenster raus. ohne clip würden manche davon tatsächlich sichtbar gezeichnen.

die min und max werte fasse ich beim hin und her schieben bzw. beim abschneiden zur zeit nicht an. es kann sein das der wert zu einem zeitpunkt gehört der aus dem plot hinausgeschoben wurde. das muss ich mir anschauen.

du musst hier aber sowieso aufpassen. nur min und max sind immer korrekt. average ist es nicht wenn nur teile des plots gefüllt sind bzw. die intervalle unregelmäßig sind.

du kannst im SVG editor unten auf den button klicken der dir die aufgearbeiteten daten dir geplottet werden ausgibt.

logProxy sollte keine werte dazuerfinden die in der zukunft liegen.

vergleich das mal mit den werten die du erwartest.

gruß
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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