Ich habe für meine Anlage zur Steuerung über Alexe folgendes Dummy angelegt:
Internals:
NAME Wohnzimmerradio
NR 148
STATE on
TYPE dummy
READINGS:
2018-10-02 13:01:32 state on
2018-10-02 13:02:02 volume 15
Attributes:
alexaName Anlage
alexaRoom Wohnzimmer
event-on-change-reading .*
readingList state volume
room alexa
setList on off volume:slider,0,1,100
Darauf habe ich folgendes Notify konfiguriert:
Wohnzimmerradio:.* {
#fhem("set Wohnzimmerradio volume AB $EVENT CD"); #Zu Testzwecken
if($EVENT eq "on"){
fhem("set YamahaWohnzimmer power on");
fhem("set YamahaWohnzimmer input line1");
}
if($EVENT eq "off"){
fhem("set YamahaWohnzimmer power standby");
}
if($EVENT =~ "volume.*"){
fhem("set YamahaWohnzimmer volume $EVTPART1");
}
}
Dieses löst allerdings nur bei Änderungen des "volume" readings aus. Auf on/off reagiert es überhaupt nicht.
Habe ich vergessen an dieser Stelle ein Attribut zu setzten?
Kann mir jemand weiter helfen.
Liebe Grüße
Fabian
on und off kommen aus dem state. da greift deine Regex nicht
Wohnzimmerradio:.*
Probiere bitte einmal
Wohnzimmerradio:(on|off|volume:.*)
Wohnzimmerradio:(on|off|volume:.*)
Löst leider auch nur bei Änderungen von "volume" aus.
Ich könnte das ganze sicherlich mit einem zweiten Notify oder DOIF lösen, aber mich würde an dieser Stelle doch interessieren, woran es liegen kann.
Im Log steht unter anderem:
2018.10.02 14:16:38 1: ERROR evaluating my $EVENT='off';my $NAME='Wohnzimmerradio';my $SELF='Wohnzimmerradio_notify_1';my $TYPE='dummy';my $EVTPART0='off';{
fhem("set Wohnzimmerradio volume AB $EVENT CD");
if($EVENT eq "on"){
fhem("set YamahaWohnzimmer power on");
#fhem("set YamahaWohnzimmer volume 56");
fhem("set YamahaWohnzimmer input line1");
}
if($EVENT eq "off"){
fhem("set YamahaWohnzimmer power standby");
}
if($EVENT =~ "volume.*"){
fhem("set YamahaWohnzimmer volume $EVTPART1");
}
}: Global symbol "$EVTPART1" requires explicit package name (did you forget to declare "my $EVTPART1"?) at (eval 927) line 12.
Wohnzimmerradio.(on|off|volume:.*) und so?
Internals:
CFGFN
DEF testdummy:(on|off|volume:.*) set testdummy2 on
NAME notifyTest
NR 110
NTFY_ORDER 50-notifyTest
REGEXP testdummy:(on|off|volume:.*)
STATE 2018-10-02 14:38:28
TRIGGERTIME 1538483908.58246
TYPE notify
READINGS:
2018-10-02 14:37:43 state active
Attributes:
room Test
Keine Ahnung was Du machst, aber das hier geht bei mir bestens.
Ah ich sehe gerade. Volume kann so nicht gehen. Du musst für Volume EVTPART nehmen oder EVENT selber zerlegen.
Wie wäre ein fhem("Log 3 $EVENT")
(ungetestet) am Anfang zu Testzwecken?
Vielleicht nicht die hohe Schule, aber...
Ich teste gerade.
Wohnzimmerradio:(on|off|volume).* set Wohnzimmerradio volume AB $EVENT CD
Das funktioniert.
Das Problem tritt scheinbar ab der Verwendung von "EVTPART1" auf? Ist die Verwendung nicht zulässig bzw. gibt es dazu eine Alternative?
Lg
Fabian
Wohnzimmerradio:(on|off|volume).*
Hier dürfte on und off nicht triggern.
Du kannst mit EVENT arbeiten und ein split verwenden. Alles auf Perlebene halt.
Wohnzimmerradio:(on|off|volume).* {
my ($E1, $E2) = split(':',$EVENT);
if($EVENT eq "on"){
fhem("set YamahaWohnzimmer power on");
fhem("set YamahaWohnzimmer input line1");
}
if($EVENT eq "off"){
fhem("set YamahaWohnzimmer power standby");
}
if($EVENT =~ "volume.*"){
fhem("set YamahaWohnzimmer volume $E2");
}
}
Damit funktioniert es jetzt.
Danke!