fronthem mit verbesserter autom. GAD Erzeugung

Begonnen von Loredo, 08 August 2016, 20:02:31

Vorheriges Thema - Nächstes Thema

Loredo

Hallo zusammen,

ich fange gerade mit smartVISU an und bei der Anzahl meiner Geräte (und ergo auch Readings...) hat es mich ziemlich bedrückt, dass ich für jede einzelne Funktion manuell das GAD konfigurieren muss. Auch fand ich es nicht schön, dass einfach alle GADs, die vom Browser über smartVISU angefragt werden, angelegt werden. Wenn man einmal etwas ausprobiert, dann sind ganz schnell jede Menge Leichten in der Datei vorhanden.

Die beiliegenden Versionen von 01_fronthem.pm und 31_fronthemDevice.pm bieten deshalb folgende Verbesserungen:


1. Das automatische anlegen eines GAD kann über das Attribut gadAutoCreate gesteuert werden (+Security +Komfort):

       
  • 0 = ausgeschaltet (neue Default Einstellung und Empfehlung wenn nichts mehr konfiguriert werden muss!)
  • 1 = eingeschaltet (altes Verhalten)
  • 2 = wird nur angelegt, wenn ein ähnlich benanntes Fhem Device gefunden wurde und die Werte für Device und Reading werden in der fronthem Datenbank entsprechend vorbelegt (das GAD muss entweder exakt so benannt sein oder im Format [PREFIX]Devicename[DIVIDER]Reading, also z.B. WZ.Lampe:state oder mm_Sonos_Kitchen:Volume)
2. Wenn gadAutoCreate >0 gesetzt ist, kann man über ein weiteres Attribut gadAutoConfigure (=1) aktivieren, dass versucht wird das GAD sinnvoll vorzubelegen. Dies geschieht generisch anhand gängiger Setter und Readingnamen sowie auch des aktuellen Inhaltes des Readings selbst.
Damit habe ich z.B. dieses Sonos Widget schon innerhalb weniger Minuten (gut, aber noch nicht vollständig) am laufen gehabt.
Grundsätzlich ist es aber eine enorme Hilfe, wenn man im smartVISU HTML Code einfach die Fhem Devices und deren Readings gewohnt benennen kann und auch bei dem ersten Kontakt für eine Vielzahl von Readings der richtige Converter und Setter gesetzt wird. Wo es nicht klappt muss man dann zwar händisch korrigieren, aber es ist eben deutlich weniger Arbeit.

3. über die Attribute gadPrefixes und gadDivider kann man die Erkennung von Fhem Gerätenamen anpassen (Regex-Format). Das Präfix (=gasPrefixes) ist standardmäßig leer, das Trennzeichen (=gadDivider) steht per Default auf dem Fhem üblichen Doppelpunkt. Andere Trennzeichen können u.U. problematisch sein, kann man aber auch kurzfristig einstellen und einfach probieren, ob die Erkennung dann funktioniert. Bei besagtem Sonos Widget oben habe ich z.B. noch einen Punkt hinzugefügt, weil die GADs dort so benannt sind. Bisher ist das Matching der Readings und Devicenamen noch Case-Sensitive, ich überlege aber das noch zu ändern, da ich in dem Sonos Widget eben z.B. Readings in Kleinschreibung statt der notwendigen Großschreibung am Anfang gefunden habe.

4. Mit Verweis auf diesen Beitrag kann bei der Definition eines fronthemDevice jetzt auch "any" oder "0.0.0.0" als Identifier angegeben werden. Achtung! Zusammen mit whitelist=false wird dadurch dann der Zugriffsschutz pro Benutzer abgeschaltet und alle Benutzer greifen über nur noch ein einziges fronthemDevice zu! Ich wollte diese Einstellung haben, da ich mich leichter tue als überall in meinem Netzwerk feste IP Adressen zu vergeben und ich den Zugriffsschutz lieber anders mache (siehe genannter Beitrag).

5. ipcPort und wsPort sind über Attribute änderbar


Noch habe ich kein Patchfile dafür erstellt (wäre aufgrund des von mir verwendeten Perl-Tidy auch kein fairer Vergleich mit der Originaldatei was die tatsächlichen Änderungen angeht). Ich wollte zunächst einmal sehen, ob das so überhaupt brauchbar ist und ob man überhaupt einen Patch dieser Art akzeptieren würde  ;)

Deshalb: Feedback erbeten.



Gruß
Julian
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

herrmannj

Hi,

danke:) Ich muss mir das mal in Ruhe anschauen, aber ... ;) das

Zitat4. Mit Verweis auf diesen Beitrag kann bei der Definition eines fronthemDevice jetzt auch "any" oder "0.0.0.0" als Identifier angegeben werden. Achtung! Zusammen mit whitelist=false wird dadurch dann der Zugriffsschutz pro Benutzer abgeschaltet und alle Benutzer greifen über nur noch ein einziges fronthemDevice zu! Ich wollte diese Einstellung haben, da ich mich leichter tue als überall in meinem Netzwerk feste IP Adressen zu vergeben und ich den Zugriffsschutz lieber anders mache (siehe genannter Beitrag).
funktioniert mit der aktuellen(alten) fronthem version nicht. Das Problem liegt im konkurrierenden / gleichzeitigen Zugriff verschiedener Benutzer. Sowohl das fronthemDevice und auch einige converter (später viele...) arbeiten statefull. Das merkt man nicht sofort, gibt aber kleine fiese Fehlerchen :)

Beispiel (ein einziges fronthemDevice). 

user A meldet sich an, ruft in sv eine Seite auf. sv meldet (via monitor) welche GAD es benötigt. fronthemDevice "merkt" sich das (monitorlist). Jetzt meldet sich user B an, ...., sendet monitor und überschriebt das auch für user A. Bei den convertern passiert gleiches.

Die nächste Version bringt es aber mit (da wird pro connection ein virtuelles device erstellt).

vg
joerg

Loredo

Ich hatte schon so eine Ahnung was das angeht. Der Fokus lag definitive woanders ;-)


Gruß
Julian
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER