Hi,
hoffentlich kann mir jemand bei meinem Problem weiterhelfen ...
Ich versuche grad für unser neues Bad eine Wellness Beleuchtung mittels Mi-Light LED RGBWW Lampen einzurichten, d.h. ich versuche, einen Schalter zu kreieren, der eine Beleuchtungssequenz startet, welche über vorher mittels Slider eingestellte Werte (u.a. Dauer und Dim Wert) einen Farbwechsel durchführt. Den Schalter (+ einen Durchlauf Farbwechsel) an sich habe ich schon hinbekommen, was bei mir leider nicht hinhaut, ist der Versuch einer Wiederholungsschleife :(
CodeSchipsel:
define Farbdurchlauf_Bad dummy
attr Farbdurchlauf_Bad room Badezimmer
attr Farbdurchlauf_Bad setList time:slider,5,5,90 dim:slider,5,5,100 anz:slider,1,1,10
attr Farbdurchlauf_Bad eventMap on:An off:Aus
attr Farbdurchlauf_Bad webCmd An:Aus:time:dim:anz
define Farbdurchlauf_Bad_Time dummy
set Farbdurchlauf_Bad_Time 300
define Farbdurchlauf_Bad_Dim dummy
set Farbdurchlauf_Bad_Dim 5
define Farbdurchlauf_Bad_Anz dummy
set Farbdurchlauf_Bad_Anz 1
define Farbrad_Bad notify Farbdurchlauf_Bad {\
if ( "$EVTPART0" eq "An" ) \
{\
Log 3, "LED_ALL_Bad on: ".Value("LED_ALL_Bad");;\
my $Count=0;;\
my $Anz=Value("Farbdurchlauf_Bad_Anz");;\
while($Count < $Anz) \
{ \
Log 3, "Schleife: $Count $Anz";;\
fhem("set LED_ALL_Bad hsv 0,100,".Value("Farbdurchlauf_Bad_Dim")." q ;; set LED_ALL_Bad hsv 359,100,".Value("Farbdurchlauf_Bad_Dim")." ".Value("Farbdurchlauf_Bad_Time")." l q");;\
$Count++;;\
} \
Log 3, "LED_ALL_Bad on: ".Value("LED_ALL_Bad");;\
;;\
}\
elsif ("$EVTPART0" eq "Aus" ) \
{\
Log 3, "LED_ALL_Bad off: ".Value("LED_ALL_Bad");;\
fhem("set LED_ALL_Bad hsv 0,0,0 10 ");;\
Log 3, "LED_ALL_Bad off: ".Value("LED_ALL_Bad");;\
;;\
}\
elsif ("$EVTPART0" eq "dim" ) \
{\
fhem "set Farbdurchlauf_Bad_Dim ".(split(" ", $EVENT))[1];;\
Log 3, "Value Dim: ".Value("Farbdurchlauf_Bad_Dim");;\
fhem("set LED_ALL_Bad dim ".Value("Farbdurchlauf_Bad_Dim")." 10 ");;\
}\
elsif ("$EVTPART0" eq "time" ) \
{\
fhem "set Farbdurchlauf_Bad_Time ".(split(" ", $EVENT))[1] * 60;;\
Log 3, "Value Time: ".Value("Farbdurchlauf_Bad_Time");;\
}\
elsif ("$EVTPART0" eq "anz" ) \
{\
fhem "set Farbdurchlauf_Bad_Anz ".(split(" ", $EVENT))[1];;\
Log 3, "Value Anz: ".Value("Farbdurchlauf_Bad_Anz");;\
}\
}\
Die Schleife (im "An" Part) wird entsprechend der Einträge im Log entsprechend oft durchlaufen, aber nur der erste set Befehl (Initialisierung) innerhalb der Schleife wird entsprechend oft durchgeführt und danach nur ein einziges mal der 2te set Befehl mit dem eigentlichen Farbwechsel. Ich verstehe einfach nicht, warum ...
Vielleicht kann mir ja eine/r von Euch hier weiterhelfen ???
Die (von der FHEM Lösung eigentlich recht begeisterte) Betonmöwe
Hast Du schon versucht fhem (...) zu teilen, dann kannst Du die Ausgabe detailierter untersuchen.
fhem ("set LED_ALL_Bad hsv 0,100," ...
fhem ("set LED_ALL_Bad hsv 359,100," ...
Hi,
habe ich auch schon versucht ... leider keine Änderung! Das erste set ... wird so oft wie die schleife läuft direkt hintereinander ausgeführt und danach erst die 2te set Anweisung.
Gruß
die Betonmöwe
if ( "$EVTPART0" eq "An" )
wird wohl nie wahr werden ;)
if ($EVTPART0 eq "An" )
und folgende auch anpassen dann sollte eher ein Schuh draus werden solange in $EVTPART0 auch wirklich An und folgende stehen können.
Achtung mit eventMap! mWn muss dennoch auf on/off gebprüft werden.
Das sollte dir aber der EventMonitor resp. eine Logausgabe im Logfile zeigen können.
Einfach mal $EVTPART0 loggen lassen.
Warum aber in einem Dummy noch ein eventMap setzen??