FHEM Forum

FHEM => Frontends => SVG / Plots / logProxy => Thema gestartet von: roedert am 17 Juli 2015, 10:45:52

Titel: SVG: Steps bis zum aktuellen Zeitpunkt weiterzeichnen
Beitrag von: roedert am 17 Juli 2015, 10:45:52
In einem SVG stelle ich Anwesenheit oder ein/aus mit Plot-Type/Style steps/fill dar. Allerdings endet der Graph bei dem letzten Logeintrag der durchaus schon mehrere Stunden alt sein kann.
Wie bekomme ich hin, dass dieser letzet Wert bis zum aktuellen Zeitpunkt weitergezeichnet wird.
Problem ist auch, dass der Plot falls es im Log noch keinen Wert vom aktuellen Tag gibt den letzten Wert vom Vortag (oder sogar noch weiter zurück) übernehmen muss.

Hatte in Erinnerung, dass das Modul LogProxy da was helfen könnte ... aber bisher noch keinen derartigen Lösungsansatz finden können.
Titel: Antw:SVG: Steps bis zum aktuellen Zeitpunkt weiterzeichnen
Beitrag von: TeeVau am 17 Juli 2015, 11:00:01
Schau mal im fhemwiki. In dem Artikel zu LogProxy gibt es genau dafür ein Beispiel (letzter Eintrag im SVG entspricht dem Wert eines readings)
Titel: Antw:SVG: Steps bis zum aktuellen Zeitpunkt weiterzeichnen
Beitrag von: frank am 17 Juli 2015, 13:02:46
ZitatHatte in Erinnerung, dass das Modul LogProxy da was helfen könnte ... aber bisher noch keinen derartigen Lösungsansatz finden können.
option predict.
Titel: Antw:SVG: Steps bis zum aktuellen Zeitpunkt weiterzeichnen
Beitrag von: roedert am 17 Juli 2015, 13:06:11
Besten Dank euch beiden ... ein kleines Wort kann so nützlich sein  :)
Ist schon umgesetzt und funktioniert, jetzt muss ich morgen früh nur mal kontrollieren wie sich der Plot zu Beginn verhält wenn er noch keinen Log-Wert vom aktuellen Zeitraum hat.
Für mich passend wäre dass er dann den letzten verfügbaren Logeintrag nimmt.
Titel: Antw:SVG: Steps bis zum aktuellen Zeitpunkt weiterzeichnen
Beitrag von: roedert am 17 Juli 2015, 13:51:27
So, habs ausprobiert und wie befürchtet fängt der Plat erst am ersten verfügbaren Logeintrag des Plotzeitraums an. Die möglichen Optionen haben mir im Wiki da nicht wirklich weitergeholfen.
Ist der einzig mögliche Workaround tgl. um 0:00 einen Logeintrag erzeugen zu lassen? 
Titel: Antw:SVG: Steps bis zum aktuellen Zeitpunkt weiterzeichnen
Beitrag von: frank am 17 Juli 2015, 14:11:35
option extend=24*60*60 sucht zb 24std vor plotbeginn nach vorhandenen werten.
Titel: Antw:SVG: Steps bis zum aktuellen Zeitpunkt weiterzeichnen
Beitrag von: roedert am 18 Juli 2015, 00:03:49
Zitat von: frank am 17 Juli 2015, 14:11:35
option extend=24*60*60 sucht zb 24std vor plotbeginn nach vorhandenen werten.

ja, aber leider auch 24std in die Zukunft .... in Verbindung mit predict endet der Graph also nicht jetzt, sondern geht auch 24h in die Zukunft weiter
Titel: Antw:SVG: Steps bis zum aktuellen Zeitpunkt weiterzeichnen
Beitrag von: frank am 18 Juli 2015, 14:01:12
das stimmt so nicht. die kombination funktioniert eigentlich perfekt, es sei denn, dass zu wenig daten vorliegen. was zeigt denn show preprozessed, oder so aehnlich, im svg editor?
Titel: Antw:SVG: Steps bis zum aktuellen Zeitpunkt weiterzeichnen
Beitrag von: roedert am 18 Juli 2015, 17:34:21
Stimmt, mit expand=24*60*60,predict funktioniert es wie gewünscht wenn für den Plotzeitraum Werte vorliegen - der Plot beginnt bei 0:00 mit dem letzten Wert vom Vortag und endet zum aktuellen Zeitpunkt.

Liegen für den Plotzeitraum aber noch keine Werte vor, endet der Plot nicht zum aktuellen Zeitpunkt, sondern der letze Wert des Vortages wird von 0:00 bis 24:00 durchgehend gezeichnet .... in meinen Augen ist das ein Bug.
Titel: Antw:SVG: Steps bis zum aktuellen Zeitpunkt weiterzeichnen
Beitrag von: justme1968 am 18 Juli 2015, 17:40:16
kannst du mir bitte ein log file, das plot file und die defines zusammen stellen. dann schaue ich es mir an.

gruß
  andre
Titel: Antw:SVG: Steps bis zum aktuellen Zeitpunkt weiterzeichnen
Beitrag von: roedert am 18 Juli 2015, 17:47:30
Logfile ist schwierig, da die Werte in einer DB (mysql) liegen.

in der .plot-Datei steht
#logProxy DbLog:DbLog,predict,extend=200000:iPhone:n_presence

n_presence ist ein numerisches Userreading mit 0=absent und 1=present

Show preprocessed input liefert für einen Tag ohne Werte in der DB (also da wo der Fehler aufritt)
get logProxy HISTORY INT 2015-07-18_00:00:00 2015-07-19_00:00:01 DbLog:DbLog,predict,extend=200000:iPhone:n_presence

2015-07-18_17:44:43 1
#iPhone:n_presence:::


für einen Tag mit Werte und korrektem Output
get logProxy HISTORY INT 2015-07-18_00:00:00 2015-07-19_00:00:01 DbLog:DbLog,predict,extend=200000:iPhone:n_presence

2015-07-18_00:00:00 1
2015-07-18_00:03:59 0
2015-07-18_08:04:41 1
2015-07-18_08:34:38 0
2015-07-18_09:04:05 1
2015-07-18_09:59:05 0
2015-07-18_11:09:38 1
2015-07-18_11:39:38 0
2015-07-18_13:06:05 1
2015-07-18_13:51:04 0
2015-07-18_15:02:47 1
2015-07-18_15:33:21 0
2015-07-18_17:46:23 0
#iPhone:n_presence:::


Hoffe das hilft weiter.....
Titel: Antw:SVG: Steps bis zum aktuellen Zeitpunkt weiterzeichnen
Beitrag von: Hermann20 am 28 November 2015, 17:36:32
Hallo,

ich möchte dieses relativ alte Thema nochmals aufwerfen. Meiner Meinung nach besteht obiges Problem(chen) noch immer.

Mein FHEM ist aktuell und ich nutze DbLog mit logProxy und "extend=24*60*60,predict".

Liegen an einem Tag noch keine Ereignisse vor, so wird die Linie im Plot bis zum Ende gezeichnet.

Sobald ein Ereignis vorliegt, wird die Linie richtigerweise bis zum aktuellen Zeitpunkt gezeichnet.

Gibt es vielleicht eine Lösung oder einen Workaround zu dem Thema?

Gruß Hermann
Titel: Antw:SVG: Steps bis zum aktuellen Zeitpunkt weiterzeichnen
Beitrag von: stromer-12 am 28 November 2015, 17:59:14
Bei mir funktioniert predict
Titel: Antw:SVG: Steps bis zum aktuellen Zeitpunkt weiterzeichnen
Beitrag von: Hermann20 am 28 November 2015, 18:41:36
Hallo stromer-12,

dann mache ich möglicherweise etwas falsch. Aber was?

Im SVG-File habe ich folgende Zeilen:
#logProxy DbLog:myDbLog,extend=24*60*60,predict:L_Haustuer:Zustand:::$val=~s/(on|off)(\d*).*/$1eq"on"?90:($1eq"on"?90:80)/eg
#logProxy DbLog:myDbLog,extend=24*60*60,predict:L_Flur:Zustand:::$val=~s/(on|off)(\d*).*/$1eq"on"?70:($1eq"on"?70:60)/eg
#logProxy DbLog:myDbLog,extend=24*60*60,predict:L_WC:Zustand:::$val=~s/(on|off)(\d*).*/$1eq"on"?50:($1eq"on"?50:40)/eg


Ich habe mal ein Bild vom Plot angehängt. Bis 17:00 war die Lampe im WC aus und die blaue Linie ging bis zum rechten Rand durch.
Um 17:00 habe ich die Lampe kurz eingeschaltet. Anschließend wird die Linie bis zum aktuellen Zeitpunk gezeichnet, so wie es sein sollte.

Gruß Hermann
Titel: Antw:SVG: Steps bis zum aktuellen Zeitpunkt weiterzeichnen
Beitrag von: stromer-12 am 28 November 2015, 20:24:42
Asche auf mein Haupt, wenn im angezeigtem Zeitraum kein Datenpunkt vorhanden ist, erzeugt predigt einen mit aktueller Zeit und da nur ein Punkt existiert macht das SVG eine Linie
Titel: Antw:SVG: Steps bis zum aktuellen Zeitpunkt weiterzeichnen
Beitrag von: stromer-12 am 28 November 2015, 21:44:47
kannst ja mal ab Zeile 593 in der 98_logProxy.pm einfügen und testen:

  #if predict is set -> extend bejond last value
  if( defined($predict) && !defined($next_value) ) {
    $next_value = $prev_value;

+    my $sec = SVG_time_to_sec($prev_timestamp);
+    if( !$ret && $sec < $from && defined($prev_value) ) {
+      my @t = localtime($from);
+      my $timestamp = sprintf("%04d-%02d-%02d_%02d:%02d:%02d", $t[5]+1900, $t[4]+1, $t[3], $t[2], $t[1], $t[0]);
+      $ret .= "$timestamp $prev_value\n";
+    }
+
    #if $predict = 0 -> predict to end of plot
Titel: Antw:SVG: Steps bis zum aktuellen Zeitpunkt weiterzeichnen
Beitrag von: Hermann20 am 29 November 2015, 17:49:40
Danke für den Tipp.

Bin derzeit im Urlaub und komme daher nicht an den Raspberry ran. Sobald ich kann, werde ich testen und berichten.

Gruß Hermann
Titel: Antw:SVG: Steps bis zum aktuellen Zeitpunkt weiterzeichnen
Beitrag von: justme1968 am 29 November 2015, 17:55:39
sorry. das ist komplett untergegangen.

ich kann es gerade nicht testen. wenn es noch jemand bestätigt checke ich es so ein.

gruss
  andre
Titel: Antw:SVG: Steps bis zum aktuellen Zeitpunkt weiterzeichnen
Beitrag von: frank am 29 November 2015, 20:25:41
hallo andre,

Zitatich kann es gerade nicht testen. wenn es noch jemand bestätigt checke ich es so ein.
der patch hat bei mir gerade funktioniert.
edit: irgendwie stimmt es noch nicht ganz, oder es ist noch ein anderer effekt:
wenn weder extend ein wert findet, noch im sichtbaren plotbereich ein wert existiert, alles liegt in der vergangenheit, dann wird einfach alles auf 0 (null) gesetzt. default ist ungenutzt. in diesem fall bitte lieber nichts plotten, als willkürliche/erfundene werte. jetzt habe ich default noch auf 1 gesetzt, wird aber nicht beachtet. default scheint in logproxy gar nicht zu funktionieren.

wenn du schon mal dabei bist, könnte man die option extend nicht ein wenig erweitern:

für den fall, dass extend keine daten findet, wird ja nichts geplotted.
wenn aber der aktuelle zeitpunkt (now) im angezeigten plot liegt, könnte man doch eigentlich mit den vorhandenen daten über readingsval direkt im device nachschauen. dieser wert gilt doch momentan, auch wenn er vielleicht schon 2 monate alt ist. im moment ist immer gar nichts zu sehen, was mich immer sehr irritiert.

gruss frank
Titel: Antw:SVG: Steps bis zum aktuellen Zeitpunkt weiterzeichnen
Beitrag von: justme1968 am 30 November 2015, 11:57:58
die idee ist eigentlich gut. ich bin mir aber gerade nicht sicher ob man den device namen eindeutig aus den zur verfügung stehenden daten ableiten kann. ich schau es mir an.

gruss
  andre
Titel: Antw:SVG: Steps bis zum aktuellen Zeitpunkt weiterzeichnen
Beitrag von: frank am 01 Dezember 2015, 20:22:35
Zitat von: frank am 29 November 2015, 20:25:41
edit: irgendwie stimmt es noch nicht ganz, oder es ist noch ein anderer effekt:
wenn weder extend ein wert findet, noch im sichtbaren plotbereich ein wert existiert, alles liegt in der vergangenheit, dann wird einfach alles auf 0 (null) gesetzt. default ist ungenutzt. in diesem fall bitte lieber nichts plotten, als willkürliche/erfundene werte. jetzt habe ich default noch auf 1 gesetzt, wird aber nicht beachtet. default scheint in logproxy gar nicht zu funktionieren.

diese mekwürdigkeit lässt sich weiter eingrenzen, denn sie taucht nur unter ganz gewissen umständen auf:

im tagesplot mit folgender definition
FileLog:FileLog_Wetter.Sued,predict,extend=1*24*60*60:4:Wetter.Sued.batVoltage\x3a::

meine logdaten (alle paar tage 2 einträge)
2015-10-20_22:48:09 Wetter.Sued batVoltage: 2.20
2015-10-20_22:50:29 Wetter.Sued batVoltage: 2.30
2015-10-28_14:57:38 Wetter.Sued batVoltage: 2.20
2015-10-28_15:00:10 Wetter.Sued batVoltage: 2.30
2015-10-31_15:29:33 Wetter.Sued batVoltage: 2.20
2015-10-31_15:32:17 Wetter.Sued batVoltage: 2.30
2015-11-23_13:09:28 Wetter.Sued batVoltage: 2.20
2015-11-23_13:12:33 Wetter.Sued batVoltage: 2.30
2015-11-27_09:33:51 Wetter.Sued batVoltage: 2.20
2015-11-27_09:36:25 Wetter.Sued batVoltage: 2.30


der fehler tritt nur am 27./30.10. und 22./26.11 auf. am 27.10 zeigt "show preprocessed"
get lp CURRENT INT 2015-10-27_00:00:00 2015-10-28_00:00:01 FileLog:FileLog_Wetter.Sued,predict,extend=1*24*60*60:4:Wetter.Sued.batVoltage\x3a::

2015-10-28_00:00:01
#4:Wetter.Sued.batVoltage\x3a::


es gibt also ein zeitpunkt ohne value, und zwar am folgenden tag.
an den anderen tagen wird korrekter weise gar nichts oder default value angezeigt, sofern am tag des plots kein wert existiert und extend am vorhergehenden tag auch nichts findet.

der fehler findet also immer dann statt, wenn am darauf folgenden tag ein wert existiert. auslösen müsste den fehler wohl predict.
Titel: Antw:SVG: Steps bis zum aktuellen Zeitpunkt weiterzeichnen
Beitrag von: stromer-12 am 01 Dezember 2015, 20:39:05
Ich habe mein extend so weit vergrößert, das was gefunden wird.
Titel: Antw:SVG: Steps bis zum aktuellen Zeitpunkt weiterzeichnen
Beitrag von: frank am 02 Dezember 2015, 09:01:44
Zitat von: stromer-12 am 01 Dezember 2015, 20:39:05
Ich habe mein extend so weit vergrößert, das was gefunden wird.
mit einem CT unterm "hintern" würde ich das auch tun.  ;)

ich hatte extend jetzt auch extra tiefer gestellt, um den fehler einzukreisen.
Titel: Antw:SVG: Steps bis zum aktuellen Zeitpunkt weiterzeichnen
Beitrag von: Hermann20 am 10 Dezember 2015, 20:33:57
Hallo stromer-12,

ich bin erst jetzt wieder dazu gekommen, mich mit meinem Problem und euren Lösungsvorschläge zu beschäftigen.

Ich habe nichts geändert, also auch den Vorschlag vom 28.11. (einfügen ab Zeile 593...) nicht ausgeführt, aber ich habe kein Problem mehr. Mir ist völlig unklar warum.

Seitdem ich wie damals beschrieben, einmal ein Ereignis ausgelöst habe, wird die Linie immer korrekt bis zum aktuellen Zeitpunkt gezeichnet. Und das auch, wenn schon seit drei Tagen kein Ereignis in die Datenbank eingetragen wurde.

Mal abwarten, wie es weitergeht.

Gruß Hermann20
Titel: Antw:SVG: Steps bis zum aktuellen Zeitpunkt weiterzeichnen
Beitrag von: Hermann20 am 26 Dezember 2015, 18:51:04
Es ist zwar schon eine Weile her, aber ich möchte mich nochmals melden.

Seit meinem letzten Beitrag habe ich die Plots beobachtet. Zunächst schien es in Ordnung, aber dann zeigten sich doch die zuvor beschriebenen Probleme. Daraufhin habe ich die von stromer-12 am 28.11. vorgeschlagenen Zeilen in 98_logProxy.pm eingefügt.

Seitdem sind meine Plots in Ordnung.

Gruß
Hermann
Titel: Antw:SVG: Steps bis zum aktuellen Zeitpunkt weiterzeichnen
Beitrag von: JoeALLb am 04 Januar 2016, 09:35:20
Zitat von: justme1968 am 29 November 2015, 17:55:39
sorry. das ist komplett untergegangen.

ich kann es gerade nicht testen. wenn es noch jemand bestätigt checke ich es so ein.


Ich kann bestätigen, dass die Zeilen von stromer-12 helfen!
Titel: Antw:SVG: Steps bis zum aktuellen Zeitpunkt weiterzeichnen
Beitrag von: Hermann20 am 28 Februar 2016, 16:39:04
Hallo,

darf ich das Thema vielleicht noch einmal aufwärmen?

Um nicht nach jedem Update die weiter oben diskutierten Zeilen in 98_logProxy.pm manuell hinzufügen zu müssen,  hatte ich das File mit exclude_from_update vom Update ausgeschlossen. Das ist aber nicht unbedingt eine sinnvolle Dauerlösung.

Vor kurzem gab es kleinere Änderungen an 98_logProxy.pm, leider wurden die Zeilen nicht übernommen. Schade eigentlich, sie verbessern meine Plots deutlich.

War es Absicht, machen die Zeilen Probleme?

Vielen Dank,
Hermann
Titel: Antw:SVG: Steps bis zum aktuellen Zeitpunkt weiterzeichnen
Beitrag von: justme1968 am 28 Februar 2016, 17:08:00
sorry. hab es eben eingecheckt.

gruss
  andre
Titel: Antw:SVG: Steps bis zum aktuellen Zeitpunkt weiterzeichnen
Beitrag von: Hermann20 am 28 Februar 2016, 18:11:15
Super, herzlichen Dank.

Schönen Restsonntag,
Hermann