SVG Plot erweitern um eine Bereichsauswahl (Fixedrange)

Begonnen von sash.sc, 14 Juli 2016, 16:28:50

Vorheriges Thema - Nächstes Thema

sash.sc

Hallo zusammen.

Es gibt ja die Möglichkeit it dem attr Fixedrange einen Bereich anzugeben der im Plot dargestellt werden soll.
Gibt es eine Möglichkeit im Plot diese Fixedrange Auswahl per DropDown fest einzubauen ?

Habe versucht es über Dummy mit Datumsauswahl zu lösen, stecke jetzt aber fest.

https://forum.fhem.de/index.php/topic,55361.msg471608.html#msg471608

Gruß
Sascha
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

rudolfkoenig

ZitatGibt es eine Möglichkeit im Plot diese Fixedrange Auswahl per DropDown fest einzubauen ?
Sicher, man muss es nur programmieren (Perl+JavaScript). Sinnvolle Patches kann ich gerne prüfen.

ZitatHabe versucht es über Dummy mit Datumsauswahl zu lösen, stecke jetzt aber fest.
Im verlinkten Thread sehe nur einen Hinweis von Hans, aber keine eigenen Versuche.
Eine Loesung ueber dummy ist moeglich, allerdings nur was fuer FHEM-Fortgeschrittene und erfordert:
- ein Dummy mit 3 Readings (Start- und Endzeit, SVG)
- ein Notify, was
  1. das fixedrange und room SVG Attribut setzt, und "alte" SVGs aus diesem Raum entfernt.
  2. per FW_directNotify die aktuelle Seite (== FHEM-Raum) neu laedt

sash.sc

Hallo Rudolf.

Habe mir den Link https://forum.fhem.de/index.php/topic,35736.0.html von Hans angeschaut (DateTimePickerWidget).
Habes in einen Raum bei mir gepackt (80_Auswertung).

1. Startzeit

Internals:
   NAME       dateTimePickerPopUp1
   NR         413
   STATE      2016-07-07_00:00:00
   TYPE       dummy
   Readings:
     2016-07-14 16:36:14   state           2016-07-07_00:00:00
Attributes:
   alias      1. Startzeit
   room       80_Auswertung,80_Diagramme,99_test
   setList    state:datetime,timepicker:true
   webCmd     state


2. Endzeit


Internals:
   NAME       dateTimePickerPopUp2
   NR         414
   STATE      2016-07-09_22:00:00
   TYPE       dummy
   Readings:
     2016-07-10 10:04:04   state           2016-07-09_22:00:00
Attributes:
   alias      2. Endzeit
   room       80_Auswertung,80_Diagramme,99_test
   setList    state:datetime,timepicker:true
   webCmd     state


Damit kann man schonmal die Start/Endzeit festlegen.

Hier nochmal die Anleitung für das DateTimePickerWidget aus dem Post von Matscher.
https://forum.fhem.de/index.php/topic,35736.0.html

Was ich jetzt noch brauche, ist ein Auswahlliste der SVG´s oder der Sensoren. Über ein Dummy oder. Nur das habe ich bis jetzt noch nicht hin bekommen.

Ahh, bevor ich es vergesse. Hier noch der DateSelect, der das SVG auswählt und den fixedrange setzt.

Internals:
   DEF        dateTimePickerPopUp.* {
my $d1 = Value("dateTimePickerPopUp1");
my $d2 = Value("dateTimePickerPopUp2");
my $fr = $d1;
$fr .= ' '.$d2 if ($d1 ne $d2);
fhem("attr SVG_0 fixedrange $fr");
}
   NAME       dateSelect
   NR         416
   NTFY_ORDER 50-dateSelect
   REGEXP     dateTimePickerPopUp.*
   STATE      2016-07-14 19:42:46
   TYPE       notify
   Readings:
     2016-07-11 17:48:52   state           active
Attributes:
   room       99_test



So schaut es im Moment aus.
Komme jetzt nur mit der Auswahl der SVG´s/Sensoren nicht klar. Der Übersicht halber geschuldet würde ich, in meinem fall, auch das alias des Sensors in der Auswahlliste nehmen.

Gruß
Sascha
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

sash.sc

Habe nochmal ein bischen weiter experimentiert. Habe zumindest eine SVG auswahl hinbekommen, diese in ein Dummy zu schreiben.

Habe jetzt nur ein Problem das DateSelect anzupassen.

Dummy geraete

Internals:
   CFGFN
   NAME       geraete
   NR         15365
   STATE      _0
   TYPE       dummy
   Readings:
     2016-07-14 21:47:22   state           _0
Attributes:
   alias      1. Geräteauswahl
   room       80_Auswertung
   setList    SVG
   webCmd     SVG
   widgetOverride :select,_0,_FileLog_ts01_1,_ts02,_ts_gz,_ts_sz,_FileLog_ts_abstkam_1


und hier noch das angepasste DateSelect notify




Internals:
   DEF        dateTimePickerPopUp.* {
my $d1 = Value("dateTimePickerPopUp1");
my $d2 = Value("dateTimePickerPopUp2");
my $fr = $d1;
$fr .= ' '.$d2 if ($d1 ne $d2);
fhem("attr SVG 'geraete:state' fixedrange $fr");
}
   NAME       dateSelect
   NR         416
   NTFY_ORDER 50-dateSelect
   REGEXP     dateTimePickerPopUp.*
   STATE      2016-07-14 21:48:10
   TYPE       notify
   Readings:
     2016-07-14 21:47:51   state           active
Attributes:
   room       99_test


Gruß
Sascha
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

rudolfkoenig

ZitatWas ich jetzt noch brauche, ist ein Auswahlliste der SVG´s oder der Sensoren.
define SVGList dummy
attr SVGList webCmd SVG
define SVGList_fill notify global:(DELETED|DEFINED|RENAMED).* {fhem("attr SVGList setList SVG:".join(",",devspec2array("TYPE=SVG")))}


ZitatNur das habe ich bis jetzt noch nicht hin bekommen.
Das ist ein klein wenig zu optimistisch. Setzen/Entfernen von room und reload der Seite steht ja auch noch aus.

sash.sc

#5
Im Moment sieht es so aus, dass das dateSelect notify den fixedrange sofort ins SVG schreibt. Dann das SVG nur neu laden.

Habe im Moment nur das Problem, das ausgewählte SVG, dank deiner Hilfe, in das dateSelect zu schreiben!
Dafür bin ich in Perl beim besten Willen nicht so fit....

Blutiger Anfänger halt...

Gruß Sascha

Von mobil gesendet daher kurze Antwort
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

sash.sc

So, habe mich der Bereichsauswahl wieder angenommen und möchte diese auch zu Ende bringen.

Jedoch, wie schon erwähnt, muss ich die Daten jetzt in das ausgewählte SVG (fixedrange) rein schreiben. Weiß aber nicht wie.

Und ich muss den Raum einmal "refreshen" bzw. neu aufbauen lassen, damit das entsprechende SVG mit dem ausgewählten Bereich angezeigt wird.

Eine Möglichkeit sollte es auch noch geben, das fiexedrange auf Knopdruck zu löschen.

Gruß und Danke
Sascha
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb