Hallo zusammen,
ich schalte ein Rollo mit einem Taster (toggle) und halte dessen Status in einem dummy:
([FS20_velux:"toggle"] and [velux] eq "on") (set ..., set velux off) DOELSEIF ([FS20_velux:"toggle"] and [velux] eq "off") (set ..., set velux on)
Jetzt möchte ich das Rollo zusätzlich mit einem Schalter (on|off) schalten, bekomme es aber nicht hin, die zusätzliche Abfrage des FS20-Device auf on|off einzubauen.
Zusammengefasst habe ich ein FS20-Device, was sowohl den state toggle als auch on|off annehmen kann (weil es von zwei unterschiedlichen FS20-Hardware-Komponenten angesteuert wird ...)
Wahrscheinlich habe ich es nicht richtig begriffen, aber spräche etwas dagegen, einfach ein zusätzliches doif (oder notify) für den Schalter und das Rollo anzulegen?
Also
define n_velux notify RolloSchalter set FS20_velux $EVENT #ungetestet
?
Den Dummy könntest du ja über eine UND-Verknüpfung zusätzlich aktualisieren.
([FS20_velux:"toggle"] and [?$SELF] eq "on" or [Schalter:"on"])
(set ...)
DOELSEIF ([FS20_velux:"toggle"] and [?$SELF] eq "off" or [Schalter:"off"])
(set ...)
Attribute
cmdState off|on
webCmd on:off
1. Dummy gespart, da DOIF den Zustand über cmdState selbst abbildet.
2. Könnte man übers Frontend schalten (webCmd)
richtig, ein zweites DOIF wollte ich vermeiden.
@Ellert: Was ich bei Deinem Vorschlag nicht verstehe ...
- das Device, was sowohl toggle als auch on|off annehmen kann, ist "FS20_velux", muss ich dann "Schalter" durch "FS20_velux" ersetzen?
- steht das $SELF dann nicht einfach für "FS20_velux"?
- wo ist in Deinem Ansatz mein Zustandsdummy "velux"?
nochmal: Den dummy "velux" hatte ich eingeführt, um bei meinem toggle-Device zu wissen, ob es on oder off ist ...
Zitatdas Device, was sowohl toggle als auch on|off annehmen kann, ist "FS20_velux", muss ich dann "Schalter" durch "FS20_velux" ersetzen?
Was spricht dagegen es auszuprobieren?
Zitatsteht das $SELF dann nicht einfach für "FS20_velux"?
Nein, $SELF siehe https://fhem.de/commandref_DE.html#DOIF_Kurzreferenz dort Operanden in der Bedingung
Zitatwo ist in Deinem Ansatz mein Zustandsdummy "velux"?
Siehe https://forum.fhem.de/index.php/topic,70419.msg619155.html#msg619155 Nr.1
und https://fhem.de/commandref_DE.html#DOIF_cmdState
Reichen diese Infos zum Verständnis?
es funktioniert - habe auch nicht eine Sekunde an Deinem Ansatz gezweifelt ;)
([FS20_velux:"toggle"] and [?$SELF] eq "on" or [FS20_velux:"off"]) (set ...) DOELSEIF ([FS20_velux:"toggle"] and [?$SELF] eq "off" or [FS20_velux:"on"]) (set ...)
- via cmdState bekommt das DOIF selbst die Stati off|on zugewiesen, dadurch ...
- spart man den ,,Zustandsdummy ,,velux" (ersetzt durch $SELF, das ? verhindert das Auslösen des Event)
- durch webCmd on:off wird das DOIF im Frontend klickbar
Dieser Aspekt bei DOIF (cmdState, webCmd, $SELF) war mir neu, richtig was gelernt. Und dass ich jetzt mein Rollo über mein Frontend schalten kann, ist ein echter Gewinn.
D a n k e ...