Verbesserungsvorschläge: Disable und Verknüpfungen

Begonnen von Tobster1977, 03 August 2018, 07:38:35

Vorheriges Thema - Nächstes Thema

Tobster1977

Hallo zusammen,
Ich würde zwei Verbesserungsvorschläge unterbreiten wollen.
Ich habe lange gesucht und nicht gefunden, dass es bislang ohne Umwege mit einem notify funktioniert:

1. DisableDevice
Ich fände es sinnvoll, wenn man ein oder mehrere devices als internal oder attr auswählen könnte, die, wenn sie "wahr" sind, die Ausführung des DOIFs verhindern. Sinnvoll z.B. für rolladensteuerung, die bei geöffnetem Fenster oder in den Ferien oder bei Anwesenheit etc nicht ausgeführt werden soll.
Praktisch wäre eine Option (oder zwei verschiedene DisableDevices, 1. bei Wiedereinführung einmal das DOIF durchlaufen lassen, 2. nicht durchlaufen lassen, erst wenn wieder eine andere Bedingung auslöst.

2. Verknüpfte devices
Ich habe in meiner Rolladensteuerung einige devices mit z.B. $SELF_d angesprochen. Diese werden nicht unter den möglicherweise verknüpften devices angezeigt. Aus meiner Sicht wäre das schön, natürlich weiß ich nicht, wie groß der Aufwand dafür wäre.

Sollte es für den ersten Punkt bereits eine Option geben, seht es mir nach, ich hab wirklich lange gesucht 😬

Damian

Zu 1: Ein spezielles DOIF-Disable Attribut wurde mal angedacht und als zu speziell wieder verworfen.

Wenn es um bestimmt Zweige geht, dann kann man sich der üblichen DOIF-Syntax bedienen:

DOIF (irgendetwas and [mydisableinternal]) ...

Ein ganzes DOIF abhängig von was auch immer (Zeit/Zustand) zu aktivieren/deaktivieren sollte man über ein zweites DOIF. Auch hier lassen sich beliebige Bedingungen  (die Syntax ist bekannt) definieren, dazu braucht man keine neue spezielle Syntax, die man erst wieder lernen und verstehen müsste.

Soll alles (Steuerungslogik und Aktivierungslogik) in einem DOIF-Modul definiert werden, dann würde ich es im DOIF Perl-Modus realisieren. Hier kann man wunderbar unabhängige Blöcke definieren. Zusätzlich ist es noch etwas performanter und es gibt Variablen (Instanzvariablen), die pro definiertes Modul global nutzbar sind.

Grundsätzlich: DOIF hat mittlerweile so viele Optionen, dass jede weitere spezielle Option für die Komplexität und damit für das Verständnis des Modul kontraproduktiv ist.

Zu 2: 

Verknüpfte Devices werden nicht vom Modul selbst, sondern von der Benutzeroberfläche fhemweb erkannt und dargestellt. Da die Bedeutung von $SELF dort nicht bekannt ist, wird es auch nicht erkannt.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Tobster1977

Danke für die schnelle Rückmeldung.

So:
DOIF (irgendetwas and [mydisableinternal]) ...
habe ich es derzeit auch gemacht, aber wenn man für 6 DOIF-Fälle immer das gleiche schreibt, ist es schon etwas unschön. Zumindest meiner Meinung nach. Über ein anderes DOIF zum abschalten habe ich schon nachgedacht, vielleicht wäre das eine akzeptable Lösung.

Mit DOIF-Perl tue ich mir schwer, da ich noch nicht viel Erfahrung mit Perl habe. Wenn jemand einen guten Tipp für einen verständlichen Anfängerleitfaden hat (insbesondere für die für FHEM/DOIF interessanten Punkte), gerne...

Danke und Grüße