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?
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?
Das ändert ja nix am Umfang des Codes.
Dummy => Überwachungs-DOIF => Ausführendes DOIF (disable/initialize)
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.
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. :-)
Dann mach doch einfach noch ein DOIF, dass das DOIF beim disablen des dummys disabled ???
Genau so mache ich das ja derzeit.
Ich hatte es oben "Überwachungs-DOIF" genannt. :-)
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
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'.)
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
Super. Und sorry, dass ich in den letzten Tagen mit so viel Kram ankomme. :-)
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 :-)
disableCond wurde nicht eingeführt https://forum.fhem.de/index.php/topic,55785.msg479000.html#msg479000
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.
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)