Hallo,
ich habe mir für meine Rollosteuerung ein DOIF zusammengestellt.
Leider habe ich wenig Erfahrung, deshalb sehr einfach gestaltet.
Gib es eine Möglichkeit diese lange Programmierung durch $ oder soetwas erheblich zu vereinfachen ?
Hier mein bisheriges Werk :
efmod EG_ROLLO_Wohnzimmer_Sammler DOIF ([EG_Rollo_Wohnzimmer:command] =~ "closed")\
(set EG_Rollo_Wohnzimmer_Tuer closed)\
(set EG_Rollo_Wohnzimmer_g_Fenster closed)\
(set EG_Rollo_Wohnzimmer_Fenster closed)\
\
DOELSEIF ([EG_Rollo_Wohnzimmer:command] =~ "open") \
(set EG_Rollo_Wohnzimmer_Tuer open)\
(set EG_Rollo_Wohnzimmer_g_Fenster open)\
(set EG_Rollo_Wohnzimmer_Fenster open)\
\
DOELSEIF ([EG_Rollo_Wohnzimmer:command] =~ "half") \
(set EG_Rollo_Wohnzimmer_Tuer half)\
(set EG_Rollo_Wohnzimmer_g_Fenster half)\
(set EG_Rollo_Wohnzimmer_Fenster half)\
\
DOELSEIF ([EG_Rollo_Wohnzimmer:command] =~ "stop") \
(set EG_Rollo_Wohnzimmer_Tuer stop)\
(set EG_Rollo_Wohnzimmer_g_Fenster stop)\
(set EG_Rollo_Wohnzimmer_Fenster stop)\
\
DOELSEIF ([EG_Rollo_Wohnzimmer:command] =~ "position-0") \
(set EG_Rollo_Wohnzimmer_Tuer position 0)\
(set EG_Rollo_Wohnzimmer_g_Fenster position 0)\
(set EG_Rollo_Wohnzimmer_Fenster position 0)\
\
DOELSEIF ([EG_Rollo_Wohnzimmer:command] =~ "position-10") \
(set EG_Rollo_Wohnzimmer_Tuer position 10)\
(set EG_Rollo_Wohnzimmer_g_Fenster position 10)\
(set EG_Rollo_Wohnzimmer_Fenster position 10)\
\
DOELSEIF ([EG_Rollo_Wohnzimmer:command] =~ "position-20") \
(set EG_Rollo_Wohnzimmer_Tuer position 20)\
(set EG_Rollo_Wohnzimmer_g_Fenster position 20)\
(set EG_Rollo_Wohnzimmer_Fenster position 20)\
\
DOELSEIF ([EG_Rollo_Wohnzimmer:command] =~ "position-30") \
(set EG_Rollo_Wohnzimmer_Tuer position 30)\
(set EG_Rollo_Wohnzimmer_g_Fenster position 30)\
(set EG_Rollo_Wohnzimmer_Fenster position 30)\
\
DOELSEIF ([EG_Rollo_Wohnzimmer:command] =~ "position-40") \
(set EG_Rollo_Wohnzimmer_Tuer position 40)\
(set EG_Rollo_Wohnzimmer_g_Fenster position 40)\
(set EG_Rollo_Wohnzimmer_Fenster position 40)\
\
DOELSEIF ([EG_Rollo_Wohnzimmer:command] =~ "position-50") \
(set EG_Rollo_Wohnzimmer_Tuer position 50)\
(set EG_Rollo_Wohnzimmer_g_Fenster position 50)\
(set EG_Rollo_Wohnzimmer_Fenster position 50)\
\
DOELSEIF ([EG_Rollo_Wohnzimmer:command] =~ "position-60") \
(set EG_Rollo_Wohnzimmer_Tuer position 60)\
(set EG_Rollo_Wohnzimmer_g_Fenster position 60)\
(set EG_Rollo_Wohnzimmer_Fenster position 60)\
\
DOELSEIF ([EG_Rollo_Wohnzimmer:command] =~ "position-70") \
(set EG_Rollo_Wohnzimmer_Tuer position 70)\
(set EG_Rollo_Wohnzimmer_g_Fenster position 70)\
(set EG_Rollo_Wohnzimmer_Fenster position 70)\
\
DOELSEIF ([EG_Rollo_Wohnzimmer:command] =~ "position-80") \
(set EG_Rollo_Wohnzimmer_Tuer position 80)\
(set EG_Rollo_Wohnzimmer_g_Fenster position 80)\
(set EG_Rollo_Wohnzimmer_Fenster position 80)\
\
DOELSEIF ([EG_Rollo_Wohnzimmer:command] =~ "position-90") \
(set EG_Rollo_Wohnzimmer_Tuer position 90)\
(set EG_Rollo_Wohnzimmer_g_Fenster position 90)\
(set EG_Rollo_Wohnzimmer_Fenster position 90)\
\
DOELSEIF ([EG_Rollo_Wohnzimmer:command] =~ "position-100") \
(set EG_Rollo_Wohnzimmer_Tuer position 100)\
(set EG_Rollo_Wohnzimmer_g_Fenster position 100)\
(set EG_Rollo_Wohnzimmer_Fenster position 100)
Gruß
Wendelin
nimm ein notify und eine Funktion in der 99_myUtils.pm
Wenn es keine weiteren Geräte gibt die mit EG_Rollo_Wohnzimmer_ beginnen, dann kannst Du über devspec Regexp alle 3 Geräte mit einem set-Befehl ansprechen
set EG_Rollo_Wohnzimmer_.* <wert>
Mehr Infos http://fhem.de/commandref_DE.html#devspec
...demnach sollte es so funktionieren:
define EG_Rollo_Wohnzimmer_Sammler notify EG_Rollo_Wohnzimmer.command:.* {my $a = $EVTPART1;;$a=~ s/-/ /g;;fhem("set EG_Rollo_Wohnzimmer_.* $a")}
Gruß Jens
Ja, fürs DOIF sähe es inklusive "extended set magic" so aus
EG_ROLLO_Wohnzimmer_Sammler DOIF ([EG_Rollo_Wohnzimmer:command] =~ "closed|open|half|stop|\d?\d?0")
(set EG_Rollo_Wohnzimmer_.* {([EG_Rollo_Wohnzimmer:command] =~ /(closed|open|half|stop|\d?\d?0)/;;$1)})
mit spezifischer Rexexp, um unerwünschte Zwischenzustände auszuschliessen
ggf. do always , abhängig von den tatsächlichen Events
ggf. reicht ein Semikolon
in set ... [...] ggf. Anführungszeichen "[...]"
Hallo,
habe nun notify genommen. Funktioniert super !
Vielen Dank!
Gruß
Wendelin
Da muss ich noch viel lernen !!