Hi!
Ich hab folgende Konstellation:
Internals:
NAME EG.Wohnzimmer.Radio
NR 84
STATE on
TYPE dummy
Readings:
2016-12-13 19:54:36 state on
Attributes:
alias Radio im Wohnzimmer
devStateIcon on:audio_sound@green off:audio_sound@white
room Alexa,EG.Wohnzimmer
setList on off
Internals:
DEF ([EG.Wohnzimmer.Radio] eq "on")(set EG.Wohnzimmer.Receiver on)(set EG.Wohnzimmer.Receiver volume 25)(set EG.Wohnzimmer.Receiver input fm)
DOELSEIF ([EG.Wohnzimmer.Radio] eq "off")(set EG.Wohnzimmer.Receiver off)
NAME EG.Wohnzimmer.Radio.Set
NR 85
NTFY_ORDER 50-EG.Wohnzimmer.Radio.Set
STATE cmd_1
TYPE DOIF
Readings:
2016-12-13 19:54:36 Device EG.Wohnzimmer.Radio
2016-12-13 19:54:40 cmd 1.3
2016-12-13 19:54:40 cmd_event EG.Wohnzimmer.Radio
2016-12-13 19:54:40 cmd_nr 1
2016-12-13 19:54:40 cmd_seqnr 3
2016-12-13 19:54:36 e_EG.Wohnzimmer.Radio_STATE on
2016-12-13 19:54:40 state cmd_1
2016-12-13 19:54:40 wait_timer no timer
Condition:
0 InternalDoIf($hash,'EG.Wohnzimmer.Radio','STATE') eq "on"
1 InternalDoIf($hash,'EG.Wohnzimmer.Radio','STATE') eq "off"
Devices:
0 EG.Wohnzimmer.Radio
1 EG.Wohnzimmer.Radio
all EG.Wohnzimmer.Radio
Do:
0:
0 set EG.Wohnzimmer.Receiver on
1 set EG.Wohnzimmer.Receiver volume 25
2 set EG.Wohnzimmer.Receiver input fm
1:
0 set EG.Wohnzimmer.Receiver off
Helper:
event on
globalinit 1
last_timer 0
sleepdevice EG.Wohnzimmer.Radio
sleepsubtimer -1
sleeptimer -1
timerdev EG.Wohnzimmer.Radio
timerevent on
triggerDev EG.Wohnzimmer.Radio
timerevents:
on
timereventsState:
state: on
triggerEvents:
on
triggerEventsState:
state: on
Internals:
0 EG.Wohnzimmer.Radio:STATE
1 EG.Wohnzimmer.Radio:STATE
all EG.Wohnzimmer.Radio:STATE
Itimer:
Readings:
Regexp:
0:
1:
All:
State:
Trigger:
Attributes:
do always
room EG.Wohnzimmer
wait 0,2,2:0
EG.Wohnzimmer.Receiver ist ein Onkyo-Receiver (Modul ONKYO_AVR), das passt auch alles soweit.
Wenn ich über den Dummy EG.Wohnzimmer.Radio den Receiver einschalte, funktioniert das auch alles wunderbar. Mein Problem ist aber:
Wie bekommen sowohl Dummy und DOIF mit, wenn ich den Receiver direkt am Gerät anschalte? Ich hab schon probiert, mit einem zweiten DOIF auf den Statuswechsel des Receivers direkt zu reagieren und dort drin dann mit setstate sowohl Dummy als auch DOIF zu setzen. Aber bei dem DOIF hat das irgendwie nicht funktioniert...
Kann mir jemand noch nen Tipp geben?
Gruß
Oli
Ich kenne den receiver nicht, wie ich aber der commandref zu ONKYO_AVR entnehme, hat das Teil ein LAN Interface.
Über das Presence-Modul könntest du doch auswerten (incl. manuellem aus/ein) , ob er läuft oder nicht und das Ergebnis (present oder absent) in Dummy/DOIF einfließen lassen...
Der Receiver ist, wie ich geschrieben habe, bereits über das ONKYO_AVR-Modul integriert und lässt sich auch wunderbar über FHEM bedienen.
Vielleicht muss ich mein Problem etwas detailierter beschreiben...
Der Dummy wird über diverse Quellen (TelegramBot, Alexa, at) gesetzt und schaltet wie gewünscht den Receiver ein,setzt die Lautstärke und die Quelle. Soweit so gut. Auch das Ausschalten über den Dummy funktionert.
Aber wenn ich den Receiver jetzt direkt am Gerät (oder auch direkt das Receiver-Objekt in FHEM) einschalte, dann wird zum Einen der Status des Dummy falsch dargestellt, zum anderen ist der DOIF im falschen Zustand und dadurch lässt sich der Receiver auch nur noch direkt am Gerät und nicht mehr über den Dummy ausschalten. Dasselbe umgekehrt: Wird der Receiver direkt ausgeschaltet, funktioniert das Einschalten über den Dummy nicht mehr...
Ich bin ein Stück weiter...
Mein DoIf sieht jetzt so aus:
([EG.Wohnzimmer.Radio] eq "on")(set ReceiverDummy on)(setreading ReceiverDummy volume 25)(setreading ReceiverDummy input fm)
DOELSEIF ([EG.Wohnzimmer.Radio] eq "off")(set ReceiverDummy off)
DOELSEIF ([ReceiverDummy] eq "off")(set EG.Wohnzimmer.Radio off)
DOELSEIF ([ReceiverDummy] eq "on")(set EG.Wohnzimmer.Radio on)
Hab den Receiver provisorisch durch nen Dummy ersetzt, damit mein Sohn in Ruhe Fernsehen kann... ;D
Wenn jetzt aber der Receiver direkt eingeschaltet wird, dann steht der Doif ja in cmd_4, was dazu führt, dass per Dummy trotzdem eingeschaltet werden kann und dann wieder Lautstärke und Quelle gesetzt werden. Das gilt es jetzt noch zu vermeiden....
Hach, ich liebe DOIF! :D
So funktionierts...
([EG.Wohnzimmer.Radio] eq "on" and [?ReceiverDummy] eq "off")(set ReceiverDummy on)(setreading ReceiverDummy volume 25)(setreading ReceiverDummy input fm)
DOELSEIF ([EG.Wohnzimmer.Radio] eq "off")(set ReceiverDummy off)
DOELSEIF ([ReceiverDummy] eq "off")(set EG.Wohnzimmer.Radio off)
DOELSEIF ([ReceiverDummy] eq "on")(set EG.Wohnzimmer.Radio on)
Man sollte doch öfters (Fast-)Monologe führen...
Vielleicht hilfts ja dem einen oder anderen... :)
Gruß
Oli