Seite 1 von 1

Echo Dot bei Anruf Pause - Wiedergabe bei Anrufende fortsetzen

Verfasst: 6. Jul 2021 12:45
von DavGre
Hallo zusammen,

ich habe mir folgende Regel gebastelt, die folgendes macht:
- Echo Dot bei eingehendem Anruf auf Pause stellen, sofern z. B. Musik läuft
- Bei Beendigung des Anrufes die Wiedergabe fortsetzen, aber nur sofern vor dem Anruf Musik lief

Regel siehe unten. Diese funktioniert auch einwandfrei.
Jetzt möchte ich allerdings 2 weitere Echo Dots (Echo_OG_Player + Echo_Flur_EG_Player) in die Regel einfügen, bei denen das gleiche passieren soll.

Wie lässt sich das am besten realisieren?
Ich müsste dann ja zunächst die Echo Dots filtern, die zum Anrufzeitpunkt auf "PLAY" stehen und entsprechende Dummy_Items (2 weitere noch erstellen) auf "ON" setzen, damit ich auf diesen Echo Dots die Wiedergabe später fortsetzen kann. Wichtig ist halt, dass wirklich nur auf den Echo Dots die Wiedergabe fortgesetzt wird, auf denen vorher auch Musik lief. Freue mich über jede Hilfe, da ich mal wieder etwas auf dem Schlauch stehe.

1. Regel:

Code: Alles auswählen

rule "Alexa bei Anruf leise"
when
    Item FRITZBox_Anrufzustand changed to RINGING // bei eingehendem Anruf
then
    if(Echo_WZ_Player.state == PLAY) {
        sendCommand(dummy_anruf_alexa_WZ, ON) // Dummy Item, um die Wiedergabe später fortzusetzen
        	sendCommand(Echo_WZ_Player, PAUSE) // Echo Pause
    }
end
2. Regel

Code: Alles auswählen

rule "Alexa nach Anruf Wiedergabe fortsetzen"
when 
    Item FRITZBox_Anrufzustand changed to IDLE // wenn der eingehende Anruf beendet ist
then 
    if(dummy_anruf_alexa_WZ.state == ON) {
    sendCommand(Echo_WZ_Player, PLAY) // Echo Wohnzimmer Wiedergabe fortsetzen
    }
    sendCommand(dummy_anruf_alexa_WZ, OFF) // Reset Dummy_Item
end 

Echo Dot bei Anruf Pause - Wiedergabe bei Anrufende fortsetzen

Verfasst: 6. Jul 2021 16:59
von udo1toni
Also, das Einfachste ist, nur eine Regel zu nutzen, die sich um alle Player kümmert. So:

Code: Alles auswählen

rule "Alexa bei Anruf leise"
when
    Item FRITZBox_Anrufzustand changed // bei eingehendem Anruf
then
    if(newState == “RINGING”) {
        if(Echo_WZ_Player.state == PLAY) {
            dummy_anruf_alexa_WZ.postUpdate(ON) // Dummy Item, um die Wiedergabe später fortzusetzen
            Echo_WZ_Player.sendCommand(PAUSE) // Echo Pause
        }
        if(Echo_2_Player.state == PLAY) {
            dummy_anruf_alexa_2.postUpdate(ON) // Dummy Item, um die Wiedergabe später fortzusetzen
            Echo_2_Player.sendCommand(PAUSE) // Echo Pause
        }
        if(Echo_3_Player.state == PLAY) {
            dummy_anruf_alexa_3.postUpdate(ON) // Dummy Item, um die Wiedergabe später fortzusetzen
            Echo_3_Player.sendCommand(PAUSE) // Echo Pause
        }
    } else if(newState == “IDLE”) {
        if(dummy_anruf_alexa_WZ.state == ON) {
            Echo_WZ_Player.sendCommand(PLAY) // Echo Wohnzimmer Wiedergabe fortsetzen
            dummy_anruf_alexa_WZ.postUpdate(OFF) // Reset Dummy_Item
        }
        if(dummy_anruf_alexa_2.state == ON) {
            Echo_2_Player.sendCommand(PLAY) // Echo Wohnzimmer Wiedergabe fortsetzen
            dummy_anruf_alexa_2.postUpdate(OFF) // Reset Dummy_Item
        }
        if(dummy_anruf_alexa_3.state == ON) {
            Echo_3_Player.sendCommand(PLAY) // Echo Wohnzimmer Wiedergabe fortsetzen
            dummy_anruf_alexa_3.postUpdate(OFF) // Reset Dummy_Item
        }
    }
end
Wobei man den Code auch noch schöne machen kann, wenn man Gruppen nutzt.
Der Punkt ist jedenfalls, dass Du für jeden Player ein eigenes Item brauchst, in dem Du den Zustand vor dem Pausieren festhältst.

Re: Echo Dot bei Anruf Pause - Wiedergabe bei Anrufende fortsetzen

Verfasst: 6. Jul 2021 17:36
von DavGre
Danke dir. Komischerweise zeigt mir die Logdatei bei der Regel dann folgende Fehlermeldung:

Code: Alles auswählen

2021-07-06 17:33:55.375 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'FRITZBox_Anrufzustand' changed from IDLE to RINGING
2021-07-06 17:33:55.380 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'fritzbox-1' failed: The name 'RINGING' cannot be resolved to an item or type; line 8, column 20, length 7 in fritzbox
Irgendwie scheint er nichts mit der Line "if(newState == RINGING)" anfangen zu können?

Edit: Problem gelöst. Das RINGING musste in 'RINGING' umgewandelt werden. Jetzt klappt es!

Re: Echo Dot bei Anruf Pause - Wiedergabe bei Anrufende fortsetzen

Verfasst: 7. Jul 2021 11:02
von udo1toni
Ja, wenn das Item ein String Item ist, muss man grundsätzlich mit Anführungszeichen arbeiten.

Der Trigger der Rule war ebenfalls verkehrt…


Gesendet von iPad mit Tapatalk