[gelöst] DOIF für toggle und on|off gesucht - Knoten im Hirn

Begonnen von grappa24, 11 April 2017, 17:55:39

Vorheriges Thema - Nächstes Thema

grappa24

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 ...)
FHEM 6.1, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...

yrwyddfa

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.
If every day has its number, Monday would be a zero division.

Ellert

([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)

grappa24

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 ...
FHEM 6.1, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...

Ellert

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?



grappa24

#5
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 ...
FHEM 6.1, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...