GELÖST - DOIF mit Denon und Hamony

Begonnen von wolfram, 25 Juli 2018, 20:35:43

Vorheriges Thema - Nächstes Thema

wolfram

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


Ellert

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.

wolfram

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


Ellert

#3
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 

wolfram

#4
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