Dummy-Wechselschalter definieren

Begonnen von Spiff, 14 Juli 2013, 21:52:37

Vorheriges Thema - Nächstes Thema

Spiff

Hallo!

Ich würde gerne 10 vordefinierte Schaltstufen als Dummy definieren. Das hat auch gut geklappt, jedoch soll immer nur einer von diesen 10 "ein" sein.
Wenn ich einen anderen einschalte, soll der, der vorher an war (oder eben alle anderen) aus sein, aber ohne dessen "aus-Befehl" auszuführen.
Wenn ich das über "set" lösen würde, dann würde er erstmal ja alle ausschalten und da alle das gleiche Modul schalten sollen, würde das nur bei der letzten Schaltstufe funktionieren.
Denn: wenn ich den "ein-Schalter" auf aus setze, soll ein anderer Befehl ausgeführt werden.

Kann man den Zustand eines Dummys überschreiben oder manipulieren, ohne den wirklichen Befehl auszuführen? Damit könnte ich das Problem lösen. Oder mit etwas anderem, was ich noch nicht kenne?

Bisschen wirr beschrieben - ich hoffe, ihr wisst, was ich meine :-)

Danke & Gruß
Spiff

betateilchen

Definiere Dir einen dummydimmer, dann kannst Du die dort vordefinierten Schaltstufen verwenden und jeweils auf die eingestellte Stufe ein notify triggern.


define dummyfs20 FS20 9999 88
attr dummyfs20 model dummyDimmer


das zugehörige notify


define n_dummyfs20 notify dummyfs20 {lese die Dimmstufe und tue irgendwas}


Wenn Du jetzt den dummy auf set dummyfs20 dim06% stellst, wird das notify getriggert und Du kannst irgendwas ausführen lassen, das bei dim06% gelten soll. Das berührt dann keinerlei andere Schaltstufen, für die vorher irgendwas ausgeführt wurde.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Spiff

#2
Danke! Das hatte ich ausprobiert, hat auch so ungefähr funktioniert.
Jetzt bin ich zufällig auf den Befehl "setstate" gestoßen und der funktioniert genauso, wie ich es wollte.
Er löst das notify nicht aus und so habe ich zu jedem "echten" Notify ein setstate aller anderen sich in der Gruppe befindenden Dummys hinzugefügt. Es geht bestimmt irgendwie eleganter, bin für Tipps offen. Das sieht dann erstmal so aus:

########### Lichtsteuerung ###############

define Licht_0 dummy
attr Licht_0 onDevice true
attr Licht_0 room Lichtsteuerung
attr Licht_0 setList on off
attr Licht_0 webCmd on
#attr Licht_0 eventMap /on:Activ/off:Inactiv/

define Licht_0_Zustand notify Licht_0 {system("C:\\PROGRA~2\\EventGhost\\EventGhost.exe -e FHEM_Licht_0")};;setstate Licht_1 off;;setstate Licht_2 off;;setstate Licht_3 off;;setstate Licht_4 off;;setstate Licht_5 off;;setstate Licht_6 off;;setstate Licht_7 off;;setstate Licht_8 off;;setstate Licht_9 off
attr Licht_0_Zustand room Lichtsteuerung

#####

define Licht_1 dummy
attr Licht_1 onDevice true
attr Licht_1 room Lichtsteuerung
attr Licht_1 setList on off
attr Licht_1 webCmd on
#attr Licht_1 eventMap /unna:VollAnEy/auta:VollAusEy/

define Licht_1_Zustand notify Licht_1 {system("C:\\PROGRA~2\\EventGhost\\EventGhost.exe -e FHEM_Licht_1")};;setstate Licht_0 off;;setstate Licht_2 off;;setstate Licht_3 off;;setstate Licht_4 off;;setstate Licht_5 off;;setstate Licht_6 off;;setstate Licht_7 off;;setstate Licht_8 off;;setstate Licht_9 off
attr Licht_1_Zustand room Lichtsteuerung

#####

define Licht_2 dummy
attr Licht_2 onDevice true
attr Licht_2 room Lichtsteuerung
attr Licht_2 setList on off
attr Licht_2 webCmd on
#attr Licht_2 eventMap /on:Activ/off:Inactiv/

define Licht_2_Zustand notify Licht_2 {system("C:\\PROGRA~2\\EventGhost\\EventGhost.exe -e FHEM_Licht_2")};;setstate Licht_0 off;;setstate Licht_1 off;;setstate Licht_3 off;;setstate Licht_4 off;;setstate Licht_5 off;;setstate Licht_6 off;;setstate Licht_7 off;;setstate Licht_8 off;;setstate Licht_9 off
attr Licht_2_Zustand room Lichtsteuerung

usw.


Viele Grüße
Spiff

justme1968

warum verwendest du nicht nur einen einzigen dummy der deine 10 unterschiedlichen zustände haben kann?

attr setList state:0,1,2,4,4,5,6,7,8,9

jeder zustand erzeugt ein eindeutiges event.

du bekommst sogar ein schöne Menü im web frontend.

gruss
andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Spiff

Siehste, das ist die elegantere Lösung, die ich gesucht habe ... danke! ;)
Der Grund war: ich kannte das noch nicht.
Wobei ein Direktklick auf die einzelnen Profile auch gut ist, da spare ich mir einen Klick.

Ich habe es jetzt so gelöst:
define Licht_Profil dummy
attr Licht_Profil setList state:0,1,2,3,4,5,6,7,8,9
attr Licht_Profil room Lichtsteuerung
define not_Licht_Profil notify Licht_Profil {system("C:\\PROGRA~2\\EventGhost\\EventGhost.exe -e FHEM_Licht_%")}


Im Raum "Lichtsteuerung" wird jedoch nur der State des Dummys angezeigt, aber das Menü kommt nur, wenn ich auch direkt auf den Dummy klicke.
Wie bekomme ich das Menü wie bei der Heizung direkt neben das State?

Viele Grüße
Spiff

justme1968

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Spiff