SVG Plots mit Spline Interpolation

Begonnen von eki, 19 Januar 2015, 14:05:33

Vorheriges Thema - Nächstes Thema

frank

danke für dieses grossartige feature. macht sehr schöne plots.  :)

kleines manko: das über- und unterschwingen aus dem automatisch generierten plotbereich. aber lieber so, als dass der plotbereich bei minus-X prozent begint.
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

Mr.Heat

Das ist leider aber täglich im Plot, womit quasi alle Kurven sch** aussehen...jedes mal, wenn kurz aufeinander mehrere Punkte zu finden sind.

Ich meine, eine Interpolation wie diese Splines bei der mehrere Werte für einen Zeitpunkt entstehen können, ist nicht gerade gut geeignet.
Gibt es da denn keine Alternative? So ist das zur Glättung der Temperatur nicht wirklich schön.

eki

Das Verhalten wundert mich bei Deinen Punkten. Das sieht mir eher danach aus, dass Du noch die 98_SVG.pm von vorher hast, dort kam es zu solchen Effekten. Bitte mal prüfen wann Du das letzte Update gemacht hast. Falls es tatsächlich die Version von heute Morgen ist, könntest Du Dein Datenfile und plotfdef posten?

Mr.Heat

#33
Hallo,

ja, fhem ist up-to-date. "update" bringt "nothing to do...". Heute morgen wurde die 98_SVG.pm aktualisiert. Ich benutze logproxy.
Das Wochenprofil evtl. entfernen aus dem gplot, da das nicht aus dem log übernommen wird....


in der FHEM.cfg:

define AAAAMA_weblink SVG lp:max_temp_MA:CURRENT
attr AAAAMA_weblink label "$data{currval3}°C ($data{currval1}°C), Max $data{max3}°C, Min $data{min3}°C"
attr AAAAMA_weblink plotsize 700,200


gplot und log im Anhang.


LG

frank

ich nutze auch logproxy und filelog gemischt in einem svg. keine probleme. allerdings ist logproxy dabei nicht in der definition des svg enthalten, sondern ein x-beliebiges filelog. daraus nutze ich nicht mal daten.
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

eki

ich hatte mir ja schon gedacht, dass das, so wie es jetzt ist, im Zusammenhang mit logProxy (also den von mir erwähnten "specials" im Code) Probleme machen könnte. Z.B werden die Pfade ja im Fall von logProxy unter Umständen in mehrere Pfade aufgeteilt (siehe # new line segment after newline im Code). Spätestens da geht mein bisheriger Ansatz schief, soweit ich das jetzt überblicke.

Ich habe aber eine Idee, wie man das Lösen kann. wird aber sicher ein bisschen dauern.

eki

Ich habe jetzt eine neue Version von 98_SVG.pm angehängt.

Das Vorgehen müsste jetzt, soweit ich sehe, auch für logProxy und für die ausgelassenen Werte mit gleichem x-Werte beim Jahresplot passen.
Außerdem habe ich die Option quadraticSmooth eingefügt. Dort wird jetzt die Variante mit den Zwischenwerten verwendet, die nicht durch die Messpunte geht, aber dafür keine Überschwinger etc. produziert.

Bei mir sehen die Plots gut aus, allerdings habe ich das mit dem logProxy aus den Daten von Mr.Heat nicht hinbekommen. Da kommt bei mir immer:
2015.01.23 09:20:55 3: AAAAMA_weblink: space is not allowed in logProxy definition:... (obwohl in der Plot Definition ganz sicher keine spaces sind). Der Plot bleibt bis auf eine gerade Linie auf der x-Achse leer.

Also bitte mal bei jemandem testen, der eine funktionsfähige logProxy Umgebung hat.

Mr.Heat

#37
Hallo,

vielen Dank für deine Mühe. Leider hat es nichts gebracht, weder die Version von heute morgen aus dem Update, noch deine Angehängte:

im Anhang wieder das selbe von heute.


EDIT: @eki: hast du denn ein Logproxy-Device angelegt? Mit
define lp logProxy
?

LG

frank

die neue option quadraticsmooth sieht sehr gut aus. kein über- und unterschwingen mehr. das angehängte beispiel wird über eine logproxy-func erzeugt. ein kleiner schönheitsfehler ist die behandlung am ende des plots. wahrscheinlich 0 statt 87.5. hier mal die letzten 3 punkte des plots.

2015-01-29_18:00:00 100
2015-01-29_21:00:00 87.5
2015-01-29_23:59:59 87.5


@mr.heat
hast du mal versucht die definition des svg ohne das logproxy-device zu machen?
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

Mr.Heat

Hallo,

mit Filelog sieht es nicht so extrem aus, mehr wie gestern (siehe Anhang weiter oben). Bei schnellen Temperaturwechseln gibt es diese Rückschwünge der Kurve immernoch. Könnte aber sein, dass das an der nun unterschiedlichen Datenbasis liegt (logProxy macht ja z.B. Werte ans Ende, damit der Plot weitergeht).
Das ist wirklich schade, ich würde das so gerne benutzen....

LG MS

justme1968

auch mit der angehängten version geht das spinnennetz diagramm nicht.

in der js console sehe ich das hier:[Error] Error: Problem parsing d=" 170,117 199,139 187,176 152,176 140,139 170,117" (SVG_showLog, line 99)
[Error] Error: Problem parsing d=" 170,84 170,84 170,84 228,129 205,202 134,202 111,129 170,84" (SVG_showLog, line 101)
[Error] Error: Problem parsing d=" 170,51 170,51 170,51 257,119 223,229 116,229 82,119 170,51" (SVG_showLog, line 102)
[Error] Error: Problem parsing d=" 170,51 170,150 170,150 257,119" (SVG_showLog, line 104)
[Error] Error: Problem parsing d=" 170,150 223,229" (SVG_showLog, line 105)
[Error] Error: Problem parsing d=" 170,150 116,229" (SVG_showLog, line 106)
[Error] Error: Problem parsing d=" 170,150 82,119" (SVG_showLog, line 107)
[Error] Error: Problem parsing d=" 170,104 216,133 211,210 126,213 109,128 170,104" (SVG_showLog, line 108)
[Error] Error: Problem parsing d=" 170,114 213,134 207,205 144,187 123,133 170,114" (SVG_showLog, line 115)


wenn ich im quelltext das d= durch ein points= ersetze sind zwar die warnung weg aber die linien sind immer noch nicht zu sehen. in der version gestern hatte ich dann eine endlosschleife. die ist heute weg.

mir ist noch nicht ganz klar warum die interpolationsgeschichten auch dann einen einfluss haben wenn das feature gar nicht aktivert ist.

mein beispiel oben sollte direkt per copy&paste funktionieren.

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

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

justme1968

#41
edit: wenn ich die svg js files auch aktualisiere geht auch der sonnenauf- und -untergangs plot nicht mehr.

unten noch mal screenshots wie es aktuell ausschaut und wie es eigentlich sein sollte.

gruss
  andre

und noch mal. edit: der schwarze sonnen plot lag an einem fehlenden iconPath. wenn ich den setzte schaut er wieder korrekt aus.

nur das spinnennetzdiagramm geht noch nicht.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Mr.Heat

Auch mit quadraticSmooth sind die Ergebnisse nicht so toll, wenn auch etwas besser.

liegt das vielleicht an der ungleichmäßigen Datenbasis? Da die MAX-Thermostaten die Temperatur nur Sporadisch melden, kann es sein, dass über Stunden kein Wert übermittelt wird, und dann plötzlich (weil Ventiländerungen) alle paar Sekunden. Ließe sich denn nicht eine Interpolationsmöglichkeit finden, die das besser macht?

LG

frank

@mr.heat

mit den temperaturdaten aus deinem logfile sieht das bei mir so aus (quadraticsmooth)
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

eki

@Mr. Heat: kannst Du mir Dein ohne logProxy angepasstes glot file schicken, Deine Daten habe ich ja noch von gestern, dann kann ich mal schauen.

@andre: Dass das auch Auswirkungen darauf hat, wenn gar keine Glättung eingeschaltet ist, liegt daran, dass die Umstellung generell von "polyline" auf "path" gemacht wurde. Es werden also SVG "paths" benutzt anstatt des "polyline" typs. Dass Deine Sonnenaufgang und Untergangs Bilder nicht mehr gehen, liegt wahrscheinlich daran dass Du nicht alle css files angepasst hast. In allen *svg_style.css files (oder zumindest in denen deren Stil Du nutzt) muss ein zusätzlicher Eintrag für path erfolgen. Sollte also so:

path { stroke:black; fill:none; }
.border  { strikte:black; fill:url(#gr_bg); }
.vgrid   { stroke:gray;  stroke-dasharray:2,6; }
.hgrid   { stroke:gray;  stroke-dasharray:2,6; }
.pasted  { stroke:black; stroke-dasharray:1,1; }

polyline { stroke:black; fill:none; }
.border { stroke:black; fill:url(#gr_bg);}
.vgrid { stroke:gray; stroke-dasharray:2,6;}
.hgrid { stroke:gray; stroke-dasharray:2,6;}
.pasted { stroke:black; stroke-dasharray:1,1;}


oder so ähnlich aussehen. Die Seiteneffekte müssen aber natürlich noch repariert werden ;-).