Hallo zusammen,
ich verzweifle gleich. Ich habe folgendes DOIF erstellt, was abhängig von meiner Harmony-Aktion meinen Verstärker auf den richtigen Soundmode und ein anderes Volume regeln soll. Löse ich die einzelnen cmds im DOIF per Hand aus, funktioniert alles, schalte ich mit der Harmony, wird beim Modus "Film" zwar der Soundmode geändert, aber nicht die Lautstärke.
([Harmony:activity] eq "Fernsehen")(set Marantz volume 10)(set Marantz surroundMode Dolby_Digital)
DOELSEIF ([Harmony:activity] eq "Musik")(set Marantz volume 17) (set Marantz surroundMode Multichannel_Stereo)(set Sonos_Wohnzimmer Play)
DOELSEIF ([Harmony:activity] eq "Film") (set Marantz volume 35) (set Marantz surroundMode Game)
DOELSE (set Harmony activity PowerOff)(set Sonos_Wohnzimmer Pause)
Da ich nun schon seit einer Woche bastle, frage ich jetzt mal in die Runde nach Hilfe. Hier noch das list meines DOIFs:
Internals:
DEF ([Harmony:activity] eq "Fernsehen")(set Marantz volume 10)(set Marantz surroundMode Dolby_Digital) DOELSEIF ([Harmony:activity] eq "Musik")(set Marantz volume 17) (set Marantz surroundMode Multichannel_Stereo)(set Sonos_Wohnzimmer Play) DOELSEIF ([Harmony:activity] eq "Film") (set Marantz volume 35) (set Marantz surroundMode Game) DOELSE (set Harmony activity PowerOff)(set Sonos_Wohnzimmer Pause)
MODEL FHEM
NAME MarantzInput
NR 524
NTFY_ORDER 50-MarantzInput
STATE Musik
TYPE DOIF
READINGS:
2018-07-25 20:22:31 Device Harmony
2018-07-25 20:22:31 cmd 2.3
2018-07-25 20:22:31 cmd_event Harmony
2018-07-25 20:22:31 cmd_nr 2
2018-07-25 20:22:31 cmd_seqnr 3
2018-07-25 20:22:30 e_Harmony_activity Musik
2018-07-25 20:22:31 error set Sonos_Wohnzimmer Play: 1
2018-07-25 20:21:51 mode enabled
2018-07-25 20:22:31 state Musik
Regex:
attr:
cmdState:
0:
Fernsehen
1:
Musik
2:
Film
3:
OFF
wait:
waitdel:
condition:
0 ReadingValDoIf($hash,'Harmony','activity') eq "Fernsehen"
1 ReadingValDoIf($hash,'Harmony','activity') eq "Musik"
2 ReadingValDoIf($hash,'Harmony','activity') eq "Film"
devices:
0 Harmony
1 Harmony
2 Harmony
all Harmony
do:
0:
0 set Marantz volume 10
1 set Marantz surroundMode Dolby_Digital
1:
0 set Marantz volume 17
1 set Marantz surroundMode Multichannel_Stereo
2 set Sonos_Wohnzimmer Play
2:
0 set Marantz volume 35
1 set Marantz surroundMode Game
3:
0 set Harmony activity PowerOff
1 set Sonos_Wohnzimmer Pause
helper:
event sleeptimer: expired
globalinit 1
last_timer 0
sleeptimer -1
timerdev Harmony
timerevent activity: Musik
triggerDev Harmony
DOIF_eventas:
cmd_nr: 2
cmd_seqnr: 3
cmd_event: Harmony
error: set Sonos_Wohnzimmer Play: 1
state: Musik
timerevents:
activity: Musik
timereventsState:
activity: Musik
triggerEvents:
sleeptimer: expired
triggerEventsState:
sleeptimer: expired
internals:
itimer:
readings:
0 Harmony:activity
1 Harmony:activity
2 Harmony:activity
all Harmony:activity
trigger:
uiState:
uiTable:
Attributes:
addStateEvent 1
cmdState Fernsehen | Musik | Film | OFF
do always
event-on-change-reading .*
icon helper_doif
room Notify
Vielleicht kann mir jemand auf die Sprünge helfen?
Danke und einen schönen Abend
wolf
P.S. Hier als Ergänzung ein Auszug aus dem Eventmonitor. Ausgelöst sind die Aktionen alle einmal durch und wie man sieht, wird der Volume Befehl im 3. Kommando "Film" nicht ausgeführt:
2018-07-25 21:31:49 DENON_AVR Marantz off
2018-07-25 21:31:49 DOIF MarantzInput cmd_nr: 4
2018-07-25 21:31:49 DOIF MarantzInput cmd_seqnr: 1
2018-07-25 21:31:49 DOIF MarantzInput cmd: 4.1
2018-07-25 21:31:49 DOIF MarantzInput OFF
2018-07-25 21:31:49 DOIF MarantzInput cmd_seqnr: 2
2018-07-25 21:31:49 DOIF MarantzInput cmd: 4.2
2018-07-25 21:31:49 DOIF MarantzInput error: set Sonos_Wohnzimmer Pause: 1
2018-07-25 21:32:00 DENON_AVR Marantz on
2018-07-25 21:32:00 DENON_AVR Marantz volume: 20
2018-07-25 21:32:04 DOIF MarantzInput cmd_nr: 2
2018-07-25 21:32:04 DOIF MarantzInput cmd_seqnr: 1
2018-07-25 21:32:04 DOIF MarantzInput cmd: 2.1
2018-07-25 21:32:04 DOIF MarantzInput Musik
2018-07-25 21:32:04 DENON_AVR Marantz surroundMode: Multichannel_Stereo
2018-07-25 21:32:04 DOIF MarantzInput cmd_seqnr: 2
2018-07-25 21:32:04 DOIF MarantzInput cmd: 2.2
2018-07-25 21:32:04 DOIF MarantzInput cmd_2_2
2018-07-25 21:32:04 DOIF MarantzInput cmd_seqnr: 3
2018-07-25 21:32:04 DOIF MarantzInput cmd: 2.3
2018-07-25 21:32:04 DOIF MarantzInput error: set Sonos_Wohnzimmer Play: 1
2018-07-25 21:32:04 DOIF MarantzInput Musik
2018-07-25 21:32:05 DENON_AVR Marantz input: Mediaplayer
2018-07-25 21:32:05 DENON_AVR Marantz sound: Multichannel Stereo
2018-07-25 21:32:19 DENON_AVR Marantz input: Cbl/Sat
2018-07-25 21:32:20 DENON_AVR Marantz sound: Dolby PL2 C
2018-07-25 21:32:20 DOIF MarantzInput cmd_nr: 1
2018-07-25 21:32:20 DOIF MarantzInput cmd_seqnr: 1
2018-07-25 21:32:20 DOIF MarantzInput cmd: 1.1
2018-07-25 21:32:20 DOIF MarantzInput Fernsehen
2018-07-25 21:32:20 DENON_AVR Marantz surroundMode: Dolby_Digital
2018-07-25 21:32:20 DOIF MarantzInput cmd_seqnr: 2
2018-07-25 21:32:20 DOIF MarantzInput cmd: 1.2
2018-07-25 21:32:20 DENON_AVR Marantz volume: 10
2018-07-25 21:32:36 DOIF MarantzInput cmd_nr: 3
2018-07-25 21:32:36 DOIF MarantzInput cmd_seqnr: 1
2018-07-25 21:32:36 DOIF MarantzInput cmd: 3.1
2018-07-25 21:32:36 DOIF MarantzInput Film
2018-07-25 21:32:36 DENON_AVR Marantz surroundMode: DTS_Surround
2018-07-25 21:32:36 DOIF MarantzInput cmd_seqnr: 2
2018-07-25 21:32:36 DOIF MarantzInput cmd: 3.2
2018-07-25 21:32:37 DENON_AVR Marantz input: Blu-Ray
2018-07-25 21:32:37 DENON_AVR Marantz sound: DTS Neo:6 C
Du verwendest Befehlssequenzen, das ist nur in Verbindung mit wait sinnvoll, das würde ich erstmal bereinigen. https://fhem.de/commandref_DE.html#DOIF_wait
Vielleicht tritt der DOELSE-Fall unerwartet ein und bricht die Sequenz ab.
Hallo Ellert,
danke für den Tipp. Ich habe nun das attibut wait gesetzt:
attr MarantzInput wait 0,0,0.5
Der Effekt ist der gleiche. Allerdings bin ich nicht sicher, dass ich die Doku zu wait richtig verstehe. Der 2. Befehl der 3. Sequenz soll um 0.5 sec verzögert werden....
Wie gesagt, löse ich die Events im DoIf per Hand aus funktioniert alles perfekt. Ich habe auch die Reihenfolge der Befehle der 3. Sequenz schonmal komplett umgestellt - nur Volume will eben nicht.
Das sind meine ersten Gehversuche it DoIF, da ich mal von den notifys wegkommen wollte.
Gibt es eine andere Möglichkeit, meine Befehlssequenzen in dem DoIF abzusetzen?
Viele Grüße
wolf
Du müsstest wait vollständig angeben, wie beschrieben
: trennt die DO...-Zweige
, trennt die Sequenzen innerhalb eines Zweiges
also für
(bed 1) (seq 1) (seq 2)
DOELSEIF (bed 2) (seq 1) (seq 2)
wait t1_1,t1_2:t2_1,t2_2
Warum liefert der set-Befehl eine Fehlermeldung?
Zitat2018-07-25 21:31:49 DOIF MarantzInput error: set Sonos_Wohnzimmer Pause: 1
Guten Abend,
zuerst einmal Danke für die Unterstützung.
Die Errormeldung kommt irgendwie von dem Sonos-Modul, das bei erfolgreichem Schalten, warum auch immer, ne 1 (für Erfolg?) zurückmeldet. Diese sieht man beim Schalten auch im normalen Webinterface ganz oben links....tut aber der Funktion offenbar keinen Abbruch.
Das wait-Attribut habe ich jetzt versucht mit sinnvollen Werten zu füllen. Da nur meine 3. Zweig und davon die Sequenz 2 betroffen ist, habe ich hier einen Wert von 5 sec eingestellt:
attr MarantzInput wait 0,0,0:0,0,0:0,5,0
und siehe da, es scheint zu klappen :)
2018-07-31 20:29:35 DENON_AVR Marantz input: Cbl/Sat
2018-07-31 20:29:36 DENON_AVR Marantz sound: Dolby PL2 C
2018-07-31 20:29:37 DOIF MarantzInput cmd_nr: 1
2018-07-31 20:29:37 DOIF MarantzInput cmd_seqnr: 1
2018-07-31 20:29:37 DOIF MarantzInput cmd: 1.1
2018-07-31 20:29:37 DOIF MarantzInput Fernsehen
2018-07-31 20:29:37 DENON_AVR Marantz surroundMode: Dolby_Digital
2018-07-31 20:29:37 DOIF MarantzInput cmd_seqnr: 2
2018-07-31 20:29:37 DOIF MarantzInput cmd: 1.2
2018-07-31 20:29:37 DOIF MarantzInput cmd_1_2
2018-07-31 20:29:37 DOIF MarantzInput cmd_seqnr: 3
2018-07-31 20:29:37 DOIF MarantzInput cmd: 1.3
2018-07-31 20:29:37 DOIF MarantzInput error: set Sonos_Kueche Pause: 1
2018-07-31 20:29:37 DOIF MarantzInput Fernsehen
2018-07-31 20:29:37 DENON_AVR Marantz volume: 13
2018-07-31 20:29:54 DOIF MarantzInput cmd_nr: 3
2018-07-31 20:29:54 DOIF MarantzInput cmd_seqnr: 1
2018-07-31 20:29:54 DOIF MarantzInput cmd: 3.1
2018-07-31 20:29:54 DOIF MarantzInput Film
2018-07-31 20:29:54 DOIF MarantzInput wait_timer: 31.07.2018 20:29:55 cmd_3_2 Harmony
2018-07-31 20:29:54 DENON_AVR Marantz sound: DTS Neo:6 C
2018-07-31 20:29:55 DENON_AVR Marantz input: Blu-Ray
2018-07-31 20:29:55 DOIF MarantzInput wait_timer: no timer
2018-07-31 20:29:55 DOIF MarantzInput cmd_seqnr: 2
2018-07-31 20:29:55 DOIF MarantzInput cmd: 3.2
2018-07-31 20:29:55 DOIF MarantzInput cmd_3_2
2018-07-31 20:29:55 DENON_AVR Marantz surroundMode: DTS_Surround
2018-07-31 20:29:55 DOIF MarantzInput cmd_seqnr: 3
2018-07-31 20:29:55 DOIF MarantzInput cmd: 3.3
2018-07-31 20:29:55 DOIF MarantzInput Film
[b]2018-07-31 20:29:56 DENON_AVR Marantz volume: 35[/b]
Wäre ich im Leben so nicht drauf gekommen.
1000 Dank für Deine Mühe.
wolf
P.S. ich musste für die anderen Zweige doch noch jeweils vor der Volumenschaltung ein wait einführen, da es sonst bei einem anderen Zweig Probleme mit dem Volume gab. So dass es final jetzt so aussieht:
attr MarantzInput wait 1,0,0:1,0,0:0,1,0