SVG: Steps bis zum aktuellen Zeitpunkt weiterzeichnen

Begonnen von roedert, 17 Juli 2015, 10:45:52

Vorheriges Thema - Nächstes Thema

roedert

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.

TeeVau

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)
FHEM 5.8 dev (virtualisiert) / FBF 7390 (CUL 868MHz V 1.51 / panStick (AVR1))
FS20: fs20di,fs20pira,fs20sm8,fs20st2,fs20tfk,fs20ue1,fs20ws1
panStamp (AVR1): RGB Multi von ext23, 1W-DSxxxx, I/O Sketch, Spritzpumpe
Multimedia: Panasonic TV (VIERA), Kodi, Yamaha RX-V781, LMS
Sonstiges: XiaomiFlowerSen

frank

ZitatHatte in Erinnerung, dass das Modul LogProxy da was helfen könnte ... aber bisher noch keinen derartigen Lösungsansatz finden können.
option predict.
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

roedert

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.

roedert

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? 

frank

option extend=24*60*60 sucht zb 24std vor plotbeginn nach vorhandenen werten.
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

roedert

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

frank

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?
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

roedert

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.

justme1968

kannst du mir bitte ein log file, das plot file und die defines zusammen stellen. dann schaue ich es mir an.

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

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

roedert

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.....

Hermann20

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
NUC12i3, Proxmox VE, Ubuntu 24.04, FHEM (aktuell): 2 HMUART, ca. 50 HM Devices, ca. 10 Devices über MQTT, 4 DECT200 über FBAHAHTTP, Heizungssteuerung über RS232, HMCCU, Telegram
CCU3, RaspberryMatic (aktuell): ca. 10 HmIP Devices

stromer-12

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

Hermann20

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
NUC12i3, Proxmox VE, Ubuntu 24.04, FHEM (aktuell): 2 HMUART, ca. 50 HM Devices, ca. 10 Devices über MQTT, 4 DECT200 über FBAHAHTTP, Heizungssteuerung über RS232, HMCCU, Telegram
CCU3, RaspberryMatic (aktuell): ca. 10 HmIP Devices

stromer-12

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
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL