Hauptmenü

Disable-Condition für DOIFs?

Begonnen von FunkOdyssey, 09 Mai 2016, 21:08:32

Vorheriges Thema - Nächstes Thema

FunkOdyssey

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?

Damian

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?
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

FunkOdyssey

Das ändert ja nix am Umfang des Codes.
Dummy => Überwachungs-DOIF => Ausführendes DOIF (disable/initialize)

Damian

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.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

FunkOdyssey

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. :-)

igami

Dann mach doch einfach noch ein DOIF, dass das DOIF beim disablen des dummys disabled  ???
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

FunkOdyssey

Genau so mache ich das ja derzeit.
Ich hatte es oben "Überwachungs-DOIF" genannt. :-)

Damian

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
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

FunkOdyssey

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 gibt es auch so eine 'disableCond'.)

Damian

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 gibt es auch so eine 'disableCond'.)

OK, jetzt verstehe ich, was du meinst.

Kommt auf die todo-Liste.

Gruß

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

FunkOdyssey

Super. Und sorry, dass ich in den letzten Tagen mit so viel Kram ankomme. :-)

BerndArnold

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 :-)
FHEM auf Raspberry Pi mit Arch Linux
2x HM-LAN, 1x CUL
HomeMatic, FS20, Dreambox, Fritzbox
MQTT zur Kommunikation mit zweiter und dritter FHEM-Instanz

Ellert


BerndArnold

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.
FHEM auf Raspberry Pi mit Arch Linux
2x HM-LAN, 1x CUL
HomeMatic, FS20, Dreambox, Fritzbox
MQTT zur Kommunikation mit zweiter und dritter FHEM-Instanz

Ellert

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