Sonos: Vordefinierte Lautstärke u. Radiosender bei Start

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Heavy-Dee
Beiträge: 139
Registriert: 18. Jan 2018 16:38

Sonos: Vordefinierte Lautstärke u. Radiosender bei Start

Beitrag von Heavy-Dee »

Hallo zusammen,
Ich betreibe ein Sonos Soundsystem im Haus und kann dieses mittlerweile auch via openHab steuern.
Da die Lautsprecher im Wohnzimmer mit dem TV gekoppelt sind ergibt sich für mich folgendes Problem.
Wenn ich morgens die Lautsprecher einschalte sollte ein bestimmter Radiosender mit einer best. Lautstärke abgespielt werden. (auch wenn am Abend als letzter Kanal das TV eingestellt war)

Hier der nicht funktionierende Versuch.

Item:

Code: Alles auswählen

Player Sonos_Controller_091B34 "Controller" <speaker> (grpMusiksteuerung) ["Switchable"] {channel="sonos:PLAY1:wohnzimmer:control"}
Dimmer Sonos_Volume_091B34 "Volume [%.0f %%]" <soundvolume> (grpMusiksteuerung) {channel="sonos:PLAY1:wohnzimmer:volume"}
Switch Sonos_Mute_091B34 "Mute"                     <soundvolume_mute>  (grpMusiksteuerung)     {channel="sonos:PLAY1:wohnzimmer:mute"}
String Sonos_State_091B34 "Status [%s]" {channel="sonos:PLAY1:wohnzimmer:state"}
String Sonos_Currenttrack_091B34  {channel="sonos:PLAY1:wohnzimmer:currenttrack"}
String Sonos_Tuneinstationid_091B34 "StationID [%s]" {channel="sonos:PLAY1:wohnzimmer:tuneinstationid"}
Rule:

Code: Alles auswählen

rule "WohnzimmerRadio"
   when
    Item Sonos_Controller_091B34 changed from OFF to ON
   then
	if(Sonos_Controller_091B34.state==ON) // Prüfung erneut
	{ 
        sendCommand(Sonos_Volume_091B34, 16)
        sendCommand(Sonos_Tuneinstationid_091B34, "15034")
    }
end
Hat vieleicht jemand nen Tipp für mich?
openHab2 (v. 2.5.2) Docker auf Synology DS920+
openHab4 (v. 4.1.0) Docker auf Synology DS920+ :!:

Benutzeravatar
udo1toni
Beiträge: 13864
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Sonos: Vordefinierte Lautstärke u. Radiosender bei Start

Beitrag von udo1toni »

Die erneute Prüfung ist sinnlos, die Rule wird durch den Status getriggert.
Die Action sendCommand erwartet zwei Strings als Parameter. Besser wäre, die Methode zu nutzen.
Ich habe selbst keine Sonos. Gibt es evtl. Einschränkungen, dass die Sonos direkt nach dem Einschalten einen kleinen Moment "taub" sind, also nciht auf Steuerbefehle hören?
Weißt Du, ob die Rule überhaupt triggert? Mein Vorschlag sähe so aus:

Code: Alles auswählen

var Timer tWZRadio = null

rule "WohnzimmerRadio"
when
    Item Sonos_Controller_091B34 changed to ON
then
    tWZRadio?.cancel
    logInfo("wzRadio","Sonos_Controller_091B34 eingeschaltet!")
    tWZRadio = createTimer(now.plusMillis(500),[|
        Sonos_Volume_091B34.sendCommand(16)
        Sonos_Tuneinstationid_091B34.sendCommand("15034")
    ])
end
Diese Rule wartet eine halbe Sekunde, bis es die Befehle an die Sonos schickt. Sollte das nicht reichen, kannst Du die Zeit natürlich verlängern. Sollte es keine Totzeit geben, kannst Du den Timer weg lassen und stattdessen nur die Methoden im Lambda des Timers testen.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Benutzeravatar
peter-pan
Beiträge: 2564
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: Sonos: Vordefinierte Lautstärke u. Radiosender bei Start

Beitrag von peter-pan »

Hallo,
Klasse Idee und die Umsetzung von @udo1toni. Hab ich gleich ausprobiert.

Da das Controller-Item ein Player item ist, musste ich noch den Trigger auf PLAY ändern. Der Timer bringt bei mir aber ein Fehler-Meldung

Code: Alles auswählen

2019-02-10 19:21:23.831 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'ArbeitszimmerRadio': An error occurred during the script execution: Couldn't invoke 'assignValueTo' for feature JvmVoid:  (eProxyURI: sonos_azRadio.rules#|::0.2.0.2.0.2::0::/1)
obwohl ich mit Einstellungen von 500 Millisekunden bis 5 Sekunden herum gespielt habe.

Ich hab dann den Timer, wie von Udo empfohlen, herausgenommen und siehe da, es klappt. Der Start des Lautsprecher ist leicht zeitversetzt zum Schalter.

So jetzt kann ich auch Antenne Bayern hören ;) .

Die Rule sieht bei mir jetzt so aus:

Code: Alles auswählen

//var Timer tAZRadio = null

rule "ArbeitszimmerRadio"
when
    Item AZ_Sonos_Control changed from PAUSE to PLAY
//      Item AZ_Sonos_Stop changed from ON to OFF
then
//    tAZRadio?.cancel
    logInfo("azRadio","AZ_Sonos_Control eingeschaltet!")
//    tWZRadio = createTimer(now.plusSeconds(5),[|
        AZ_Sonos_Volume.sendCommand(15)
        AZ_Sonos_Tuneinstationid.sendCommand("15034")
//    ])
end
Ich habe den Trigger auch bewusst wieder "from PAUSE to PLAY" gesetzt, da ich bei den ersten Versuchen Probleme hatte.

Gruss - Peter
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.1 openhabian

mamoel
Beiträge: 137
Registriert: 12. Jan 2019 19:56

Re: Sonos: Vordefinierte Lautstärke u. Radiosender bei Start

Beitrag von mamoel »

Ich bin mir nicht sicher, ob Du mit dieser Regel glücklich wirst.
Grundsätzlich würde ich erst mal die "when"-Bedingung ändern auf:

Code: Alles auswählen

Item AZ_Sonos_Control changed to PLAY
Grund: "PAUSED" wird soweit ich weiß nur gesetzt, wenn jemand auf dem PLAY:1 auf START/PAUSE drückt. Wenn aber z.B. meine Kinder ihr Hörbuch zu Ende gehört haben ist der Status anschließend "STOPPED". Man müsste also prüfen, was der Status ist, wenn Du am Abend zuvor TV geschaut hast.
Andererseits soll der Radio ja auch starten, wenn zuvor etwas anderes gespielt wurde, denke ich?

Warum ich dennoch befürchte, das die Regel problematisch sein könnte:
Wenn Du Deinen Fernseher startest und die PLAY:1 angehen (ich denke Du hast mindestens 2?), dann wird die Regel ebenfalls getriggert und Du hörst statt TV Radio.
Ich würde also noch weitere Bedingungen einbauen. Ich kenne Dein Setup nicht, aber kannst Du herausfinden ob Dein Fernseher läuft (Harmony Hub, TV mit Smarthome-Features?) oder gar einen Extra-Button irgendwo installieren, Alexa/GoogleHome benutzen, ....
openHAB 2.5 (M1) in Docker auf NAS: Synology DS418play
mit Homematic, Hue, TP-Link, AVM Fritz!, FritzboxTR064, Nuki, Amazon Echo, Sonos, Harmony, zigbee2mqtt, Denon/Marantz, ...

Benutzeravatar
udo1toni
Beiträge: 13864
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Sonos: Vordefinierte Lautstärke u. Radiosender bei Start

Beitrag von udo1toni »

mamoel hat geschrieben: 11. Feb 2019 08:14 Warum ich dennoch befürchte, das die Regel problematisch sein könnte
Der Gedanke kam mir auch schon. :)

Da es dem Threadersteller um eine konkrete Uhrzeit ging, wäre es eventuell das Einfachste, tatsächlich auf einen Zeitraum zu prüfen - Hör- und Sehgewohnheiten sind oft regelmäßig genug, um da recht enge Grenzen setzen zu können.

Eine andere Alternative wäre, beim Ausschalten des Geräts automatisch die Quelle und Lautstärke zu setzen.
Wenn das Gerät durch den Fernseher eingeschaltet wird, ändert sich die Quelle automatisch?
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Heavy-Dee
Beiträge: 139
Registriert: 18. Jan 2018 16:38

Re: Sonos: Vordefinierte Lautstärke u. Radiosender bei Start

Beitrag von Heavy-Dee »

mamoel hat geschrieben: 11. Feb 2019 08:14 Ich bin mir nicht sicher, ob Du mit dieser Regel glücklich wirst.
Grundsätzlich würde ich erst mal die "when"-Bedingung ändern auf:

Code: Alles auswählen

Item AZ_Sonos_Control changed to PLAY
Grund: "PAUSED" wird soweit ich weiß nur gesetzt, wenn jemand auf dem PLAY:1 auf START/PAUSE drückt. Wenn aber z.B. meine Kinder ihr Hörbuch zu Ende gehört haben ist der Status anschließend "STOPPED". Man müsste also prüfen, was der Status ist, wenn Du am Abend zuvor TV geschaut hast.
Andererseits soll der Radio ja auch starten, wenn zuvor etwas anderes gespielt wurde, denke ich?
Grundsätzlich stimme ich dir zu! Aber wenn ich den Fernseher eingeschaltet habe, kann ich über die Sitemap die Lautstärke ändern. Ein Status wird mir aber nicht angezeigt.
PLAY/STOPP/PAUSE wird nur angezeigt wenn das Radio oder eine Playlist läuft.

Ich werde es heute Abend mal versuchen umzusetzen und melde mich dann wieder mit neuen Erkenntnissen.
openHab2 (v. 2.5.2) Docker auf Synology DS920+
openHab4 (v. 4.1.0) Docker auf Synology DS920+ :!:

Heavy-Dee
Beiträge: 139
Registriert: 18. Jan 2018 16:38

Re: Sonos: Vordefinierte Lautstärke u. Radiosender bei Start

Beitrag von Heavy-Dee »

@udo1toni
Da es dem Threadersteller um eine konkrete Uhrzeit ging, wäre es eventuell das Einfachste, tatsächlich auf einen Zeitraum zu prüfen - Hör- und Sehgewohnheiten sind oft regelmäßig genug, um da recht enge Grenzen setzen zu können.
Es ging nicht um eine konkrete Uhrzeit !
Eine andere Alternative wäre, beim Ausschalten des Geräts automatisch die Quelle und Lautstärke zu setzen.
Wenn das Gerät durch den Fernseher eingeschaltet wird, ändert sich die Quelle automatisch?
... du meinst über das Ausschaltsignal des SAMSUNG-Binding (SamsungTV)
Beim Einschalten des TV wird der optische Ausgang des TV benutzt und somit der optische Eingang der Sonos Anlage geschaltet. Dieser Kanal hat eine Art Vorangschaltung und der Audiokanal Sonos wird aktiviert.
openHab2 (v. 2.5.2) Docker auf Synology DS920+
openHab4 (v. 4.1.0) Docker auf Synology DS920+ :!:

Benutzeravatar
udo1toni
Beiträge: 13864
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Sonos: Vordefinierte Lautstärke u. Radiosender bei Start

Beitrag von udo1toni »

Heavy-Dee hat geschrieben: 11. Feb 2019 16:02 Es ging nicht um eine konkrete Uhrzeit !
Dann habe ich das rein interpretiert :)

Aber wenn AZ_Sonos_Control ausreicht, um die verschiedenen Betriebsarten auseinander zu halten, ist es ja auch kein Problem :)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Benutzeravatar
peter-pan
Beiträge: 2564
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: Sonos: Vordefinierte Lautstärke u. Radiosender bei Start

Beitrag von peter-pan »

Hallo Zusammen,
beim Testen hab ich jetzt nicht so genau darauf geachtet, ob nun STOPPED oder PAUSE gesetzt ist, aber nur

Code: Alles auswählen

Item XX_Sonos_Control changed to PLAY
zu benutzen würde ich nicht machen, da ich hier Probleme hatte. Ich vermute mal das kommt daher, das der Trigger dann in eine Endlosschleife geht, weil er bekommt ja immer wieder die Aufforderung zu PLAYen, egal wie der Zustand vorher war.

Welcher Sonos Player gemeint ist geht aus dem Item-Namen eindeutig hervor. AZ_Sonos_Control ist bei mir der Player im Arbeitszimmer, der Play 3 im Wohnzimmer heisst WZ_Sonos_Control usw.

Ich habe auch gerade nochmal nachgeschaut. Es gibt noch einen anderen Channel "state" der zeigt z.B.: STOPPED oder PAUSED_PLAYBACK an. Hier zum Vergleich die beiden Items/Channel

Code: Alles auswählen

Player GA_Sonos_Control "Player"       <sonos_control> (GA_Sonos)  {channel="sonos:PLAY1:RINCON_5CAAFDC29C0201400:control"}
String GA_Sonos_State   "State [%s]"   <sonos_state>   (GA_Sonos)  {channel="sonos:PLAY1:RINCON_5CAAFDC29C0201400:state"}
Das Binding Manual hier sagt aber nichts genaues dazu. Vielleicht einfach mal im Logger schauen, was das Item sagt(Player), wenn es geändert wird (event steht bei mir auf WARN), deshalb hab ich's nicht nachgeschaut. Im Falle von @HeavyDee halt nachdem er den Fernseher ausgeschaltet hat.
Hier noch eine Frage von mir an @HeavyDee: Was für ein Samsung Modell hast du denn ? Und wie klappt das ?

Gruss - Peter
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.1 openhabian

mamoel
Beiträge: 137
Registriert: 12. Jan 2019 19:56

Re: Sonos: Vordefinierte Lautstärke u. Radiosender bei Start

Beitrag von mamoel »

peter-pan hat geschrieben: 12. Feb 2019 10:55 Hallo Zusammen,
beim Testen hab ich jetzt nicht so genau darauf geachtet, ob nun STOPPED oder PAUSE gesetzt ist, aber nur

Code: Alles auswählen

Item XX_Sonos_Control changed to PLAY
zu benutzen würde ich nicht machen, da ich hier Probleme hatte. Ich vermute mal das kommt daher, das der Trigger dann in eine Endlosschleife geht, weil er bekommt ja immer wieder die Aufforderung zu PLAYen, egal wie der Zustand vorher war.
Ist das so? Ich würde erwarten dass "changed to PLAY" bedeutet, dass hier nur getriggert wird, wenn der Zustand vorher nicht PLAY war.

@ Heavy-Dee
Deine PLAY:1 sind aber nicht direkt am TV angeschlossen - die haben ja weder Klinke noch Toslink? Hast Du noch eine Playbar?
Bei meinem Connect:AMP ist es so, dass wenn ich den Line-In-Eingang mit meiner Soundkarte am PC verbunden habe und Audio wiedergegeben wird, so ziemlich alle anderen Kanäle "leer" sind und nur der Status während der Wiedergabe auf PLAY wechselt. Vielleicht verhält sich Dein System ähnlich und man kann davon ausgehen, wenn der Controller auf PLAY wechselt und keine Media-/Radio- oder sonstige Informationen vorhanden sind, dass dann der Fernseher gestartet wurde (und somit kein Radio abgespielt werden soll).
Irgend etwas in die Richtung...
Zuletzt geändert von mamoel am 12. Feb 2019 15:37, insgesamt 1-mal geändert.
openHAB 2.5 (M1) in Docker auf NAS: Synology DS418play
mit Homematic, Hue, TP-Link, AVM Fritz!, FritzboxTR064, Nuki, Amazon Echo, Sonos, Harmony, zigbee2mqtt, Denon/Marantz, ...

Antworten