FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: FunkOdyssey am 09 Mai 2016, 21:08:32

Titel: Disable-Condition für DOIFs?
Beitrag von: FunkOdyssey am 09 Mai 2016, 21:08:32
Hallo, ich habe jede Menge DOIFs, die ich über dazugehörige Dummys disable bzw. enable.
Ich prüfe also in einen unanhängigen DOIF den Status der Dummys ab und schalte dann die ausführenden DOIFs ab bzw. an.

Jede Menge Code und leider auch ein wenig unübersichtlich, da im Dummy halt nicht zum ausführendem DOIF verlinkt wird, sondern zum Umschalt-DOIF.

Ich "disable" lieber als die Dummys im Condition-Teil einzubauen, da ich dies sonst auch in allen DOELSEIF machen muss.

Kann man den DOIFs irgendwie ein Attribut "disableCondition" oder Ähnliches mitgeben?

Wäre das vielleicht eine Idee für die Zukunft?
Titel: Antw:Disable-Condition für DOIFs?
Beitrag von: Damian am 09 Mai 2016, 21:43:10
Zitat von: FunkOdyssey am 09 Mai 2016, 21:08:32
Hallo, ich habe jede Menge DOIFs, die ich über dazugehörige Dummys disable bzw. enable.
Ich prüfe also in einen unanhängigen DOIF den Status der Dummys ab und schalte dann die ausführenden DOIFs ab bzw. an.

Jede Menge Code und leider auch ein wenig unübersichtlich, da im Dummy halt nicht zum ausführendem DOIF verlinkt wird, sondern zum Umschalt-DOIF.

Ich "disable" lieber als die Dummys im Condition-Teil einzubauen, da ich dies sonst auch in allen DOELSEIF machen muss.

Kann man den DOIFs irgendwie ein Attribut "disableCondition" oder Ähnliches mitgeben?

Wäre das vielleicht eine Idee für die Zukunft?

Was ist denn mit der Möglichkeit per set-Kommando DOIF zu disablen bzw. zu enablen?
Titel: Antw:Disable-Condition für DOIFs?
Beitrag von: FunkOdyssey am 09 Mai 2016, 21:56:22
Das ändert ja nix am Umfang des Codes.
Dummy => Überwachungs-DOIF => Ausführendes DOIF (disable/initialize)
Titel: Antw:Disable-Condition für DOIFs?
Beitrag von: Damian am 09 Mai 2016, 22:28:16
Zitat von: FunkOdyssey am 09 Mai 2016, 21:56:22
Das ändert ja nix am Umfang des Codes.
Dummy => Überwachungs-DOIF => Ausführendes DOIF (disable/initialize)

Ich habe das Problem noch nicht verstanden, du kannst das Modul direkt disablen, du kannst das Modul über ein anders Modul disablen, dazu brauchst du keine dummys.
Titel: Antw:Disable-Condition für DOIFs?
Beitrag von: FunkOdyssey am 10 Mai 2016, 18:37:01
Danke, aber das ist bei mir eher ne Frage der Usability.
Ich kann meiner Frau nicht zumuten, dass sie in DOIF disablen soll. Auch nicht, wenn ich es über ein DevStateIcon mache.
Ich habe in FHEM einen Haufen Parameter abstrahiert, um so die Programmierung benutzerfreundlicher zu machen.

Ist aber okay. Ich rette mich wohl. Meine Frage ist wirklich sehr individuell - denke ich. :-)
Titel: Antw:Disable-Condition für DOIFs?
Beitrag von: igami am 10 Mai 2016, 21:09:02
Dann mach doch einfach noch ein DOIF, dass das DOIF beim disablen des dummys disabled  ???
Titel: Antw:Disable-Condition für DOIFs?
Beitrag von: FunkOdyssey am 10 Mai 2016, 21:27:17
Genau so mache ich das ja derzeit.
Ich hatte es oben "Überwachungs-DOIF" genannt. :-)
Titel: Antw:Disable-Condition für DOIFs?
Beitrag von: Damian am 11 Mai 2016, 08:27:58
Zitat von: FunkOdyssey am 10 Mai 2016, 21:27:17
Genau so mache ich das ja derzeit.
Ich hatte es oben "Überwachungs-DOIF" genannt. :-)

Dann mach´ doch einen konkreten Vorschlag für eine Funktionserweiterung des DOIF-Moduls, damit ich mir vorstellen kann, wie du es genau meinst.

Gruß

Damian
Titel: Antw:Disable-Condition für DOIFs?
Beitrag von: FunkOdyssey am 11 Mai 2016, 10:45:45
Oh, sorry. Ich dachte, dass wäre bereits übergekommen. :-)

Ich versuche, es mal zu beschreiben:

Dummy
Internals:
   NAME       du_mode_dimmer
   NR         784
   STATE      aktiv
   TYPE       dummy
   Readings:
     2015-10-15 12:28:43   state           aktiv
Attributes:
   alias      Automatische Lichteinschaltung wenn Hifi an?
   setList    state:aktiv,inaktiv
   webCmd     state


Zwischen-DOIF / Überwachung der Dummys


...
DOELSEIF ([du_mode_dimmer] eq "aktiv")
(attr di_wz_dimmer disable 0)
DOELSEIF ([du_mode_dimmer] eq "inaktiv")
(attr di_wz_dimmer disable 1)
...


Ausführendes DOIF 'di_wz_dimmer'

(
[avr_receiver] eq "on" and [20:00-03:00]
)
(
set spots dim 25
)
DOELSE
(
set spots off:FILTER=state!=off off
)



Würde es nun im DOIF-Modul ein Attribut z.b. namens "disableCond" geben, so könnte man im "ausführenden DOIF" bspw. folgende Bedingung als Attribut hinzufügen:

attr di_wz_dimmer disableCond (Value("du_mode_dimmer") ne "aktiv"))





Ich habe insgesamt vier von den DOIF, die im Hintergrund alle Dummys überwachen und dann die ausführenden DOIFs ein- und ausschalten. Diese vier "Überwachungs-DOIF" haben teilweise bis zu 17 CMDs. :-)

(Am Rande: In 98_RandomTimer.pm (https://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/FHEM/98_RandomTimer.pm) gibt es auch so eine 'disableCond'.)
Titel: Antw:Disable-Condition für DOIFs?
Beitrag von: Damian am 11 Mai 2016, 10:57:24
Zitat von: FunkOdyssey am 11 Mai 2016, 10:45:45
Oh, sorry. Ich dachte, dass wäre bereits übergekommen. :-)

Ich versuche, es mal zu beschreiben:

Dummy
Internals:
   NAME       du_mode_dimmer
   NR         784
   STATE      aktiv
   TYPE       dummy
   Readings:
     2015-10-15 12:28:43   state           aktiv
Attributes:
   alias      Automatische Lichteinschaltung wenn Hifi an?
   setList    state:aktiv,inaktiv
   webCmd     state


Zwischen-DOIF / Überwachung der Dummys


...
DOELSEIF ([du_mode_dimmer] eq "aktiv")
(attr di_wz_dimmer disable 0)
DOELSEIF ([du_mode_dimmer] eq "inaktiv")
(attr di_wz_dimmer disable 1)
...


Ausführendes DOIF 'di_wz_dimmer'

(
[avr_receiver] eq "on" and [20:00-03:00]
)
(
set spots dim 25
)
DOELSE
(
set spots off:FILTER=state!=off off
)



Würde es nun im DOIF-Modul ein Attribut z.b. namens "disableCond" geben, so könnte man im "ausführenden DOIF" bspw. folgende Bedingung als Attribut hinzufügen:

attr di_wz_dimmer disableCond (Value("du_mode_dimmer") ne "aktiv"))





Ich habe insgesamt vier von den DOIF, die im Hintergrund alle Dummys überwachen und dann die ausführenden DOIFs ein- und ausschalten. Diese vier "Überwachungs-DOIF" haben teilweise bis zu 17 CMDs. :-)

(Am Rande: In 98_RandomTimer.pm (https://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/FHEM/98_RandomTimer.pm) gibt es auch so eine 'disableCond'.)

OK, jetzt verstehe ich, was du meinst.

Kommt auf die todo-Liste.

Gruß

Damian

Titel: Antw:Disable-Condition für DOIFs?
Beitrag von: FunkOdyssey am 11 Mai 2016, 11:01:04
Super. Und sorry, dass ich in den letzten Tagen mit so viel Kram ankomme. :-)
Titel: Antw:Disable-Condition für DOIFs?
Beitrag von: BerndArnold am 20 November 2016, 17:30:42
Genau danach habe ich gerade gesucht. Bin dabei, wenn es eingebaut ist :-) Danke vielmals vorab!

Ich werde es für die Weihnachtsbeleuchtung verwenden. In der Art "WeihnachtsbeleuchtungsAutomatik on/off" als Dummy für die DOIFs :-)
Titel: Antw:Disable-Condition für DOIFs?
Beitrag von: Ellert am 20 November 2016, 17:49:17
disableCond wurde nicht eingeführt https://forum.fhem.de/index.php/topic,55785.msg479000.html#msg479000
Titel: Antw:Disable-Condition für DOIFs?
Beitrag von: BerndArnold am 01 Dezember 2016, 18:21:37
Hallo Ellert,
das ist schade. Aber vielen Dank an dich für diese Info und den Weblink zur Diskussion!

Ich werde mir dann auch ein zusätzliches DOIF basteln und dort - abhängig von einem Dummy - die anderen DOIFs aktivieren und deaktivieren. Unter deinem Weblink gibt es ein passendes Beispiel hierzu.
Titel: Antw:Disable-Condition für DOIFs?
Beitrag von: Ellert am 01 Dezember 2016, 18:29:45
Den Dummy kanst Du Dir sparen, das aktuelle Modul stellt die Attribute readingList und setList bereit, damit kannst Du die Auswahlliste im DOIF realisieren. In der Befehlsreferenz ist ein Beispiel Darstellungselement mit Eingabemöglichkeit im Frontend und Schaltfunktion (http://fhem.de/commandref_DE.html#DOIF_setList__readingList)