Sonos2mqtt - vielleicht hat jemand Lust mitzumachen

Begonnen von Otto123, 31 Mai 2020, 18:30:55

Vorheriges Thema - Nächstes Thema

Loetkolben

Nachdem ich mit dem normalen Sonos-Modul immer wieder Probleme hatte, bin ich jetzt auch auf Sonos2MQTT umgestiegen, mit Hilfe des Wiki eigentlich recht einfach.
Grundsätzlich klappt alles wunderbar, nur habe ich noch ne Frage zu den Favoriten.

Mit der alten Version hatten die einzelnen Sonos-Gerät eine eigene Favoritenliste, in TabletUI konnte man dann aus dem Reading 'FavouritesList' ein schönes DropDown bauen und hier z.B. einen Radiosender auswählen.

In der neuen Variante gibt es die Favoritenliste nicht in den einzelnen Playern, sondern nur im Device 'SonosBridge'.
Wie könnte man das hier machen.


Grüße - Andreas
1x Pi3, 1x Pi4, CUL V3, miniCUL433+868, IKEA-Steckdosen, sonoff, shelly1, Conbee II, div. Zigbee-Leuchten, Alexa, Homematic, Tablet UI

Otto123

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Loetkolben

Hallo Otto,

den Abschnitt habe ich durch.
Damit wird im Player kein Reading erstellt, in dem die Favoriten sind - richtig?
Ich habe mir jetzt erstmal manuell ein Reading 'favlist' im Player erstellt, das kann ich über TabletUI auswerten und somit auch den Player vrsorgen.

Grüße - Andreas
1x Pi3, 1x Pi4, CUL V3, miniCUL433+868, IKEA-Steckdosen, sonoff, shelly1, Conbee II, div. Zigbee-Leuchten, Alexa, Homematic, Tablet UI

Otto123

Hallo Andreas,
Naja das grundlegende reading favlist entsteht an der Bridge - wozu braucht man diese Information redundant an jedem Player? Aber wenn man will kann man das mit einem Befehl aus der Bridge übernehmen. ;)
Am Player entsteht ein setter playFav der direkt die Favoritenlisten enthält - diese ist ja am Player in WebUI direkt verwendbar.

Ich wollte sogar vom Ansatz her auf diese Datenschubserei ganz verzichten, deswegen kann der Befehl play ja die Listen direkt nach Begriffen durchsuchen. Aber ich bediene mein Heim nur selten mit der FHEM WebUI. Ich setze auf unsichtbare Automation, zum Bedienen von Sonos nehme ich die Sonos App. ;D

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Reinschki

#1264
Hallo in die Runde,

wie werden folgende set-Befehle an der Bridge angewendet und was muss passieren?

set SonosBridge announcementall
set SonosBridge notifyall
set SonosBridge PauseAll


Bei mir schmiert Fhem ab, wenn ich nichts weiter angebe...
Bei Angabe eines Textes passiert nix!
Bei PauseAll pausiert keiner der laufenden Player...

Grüße

Reinschki

Habe noch ne Frage...

Wie stelle ich es am geschicktesten an, wenn ich einen Sound gefolgt von einer Sprachnachricht an eine Gruppe Player senden will.
Die vorherige Gruppierung sollte am besten wieder hergestellt, das Programm fortgesetzt werden.

Hier die DEF meines aktuellen Doif:
([deCONZ_Switch_08:"^click$"])
((set a:model=sonos2mqtt_speaker:FILTER=alias=Roam|Flex|Wohnzimmer joinGroup Küche))
(set a:model=sonos2mqtt_speaker volume 30)
(set a:model=sonos2mqtt_speaker:FILTER=alias=Küche notify 50 {('http://[SonosTTS:host]/fhem/cache/Ship_Bell.mp3')})
({fhem("set a:model=sonos2mqtt_speaker:FILTER=alias=Küche speak es-ES Enrique 50 Buenas Noches la cena está lista. Buen provecho.")})


Die Angabe der Lautstärke muss ich vorher setzen, da sie unter der Angabe im notify nicht beachtet wird!?
Kann ich nach der Durchsage zum entgruppieren auf irgendetwas reagieren, so dass ich passgenau entkoppeln kann?

Grüße

Otto123

#1266
Hi,

mal noch als Start https://forum.fhem.de/index.php/topic,111711.msg1136303.html#msg1136303

ZitatDie Angabe der Lautstärke muss ich vorher setzen, da sie unter der Angabe im notify nicht beachtet wird!?
Nein siehe Beispiel
Zitatwird mit set Player notify volume uri abgespielt.
Durch den "sonos2mqtt notify" Befehl wird die laufende Umgebung wiederhergestellt.

Wird der Sprachbefehl an den Gruppenmaster gesendet wird die mp3 Datei in der gesamten Gruppe gespielt.
Wird der Sprachbefehl an ein Mitglied einer Gruppe gesendet (nicht den Master) wird die Gruppe aufgetrennt und später wieder hergestellt.
set alias=Arbeitszimmer notify 20 https://cdn.smartersoft-group.com/various/pull-bell-short.mp3
notifyall funktioniert wie notify - das ist genau wie pauseall einfach durchgereicht https://svrooij.io/sonos2mqtt/global-commands.html
PauseAll funktioniert bei mir bei allen Playern die etwas abspielen, also wo nicht der Eingang gespielt wird (TV zum Beispiel)
announcementall sehe ich gerade, wird nur funktionieren wenn SonosTTS definiert ist - da muss man wohl nochmal nacharbeiten.  :-[
Könnte man aber mit x_raw_payload direkt schicken, wenn TTS endpoint eingerichtet ist: siehe speak hier https://svrooij.io/sonos2mqtt/global-commands.html

"Abstürzen" bedeutet FHEM startet neu?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Reinschki

Zitat"Abstürzen" bedeutet FHEM startet neu?
Der set Befehl ohne weitere Angabe von Parametern
set SonosBridge announcementall
erzeugt den Neustart und das im Log:
2023.01.17 12:53:33.012 3: MQTT2_DEVICE set SonosBridge announcementall
2023.01.17 12:53:33.017 1: PERL WARNING: Use of uninitialized value $text in concatenation (.) or string at ./FHEM/99_sonos2mqttUtils.pm line 38.
2023.01.17 12:53:33.017 3: eval: my $DEVICETOPIC=   $evalSpecials->{'%DEVICETOPIC'};my $EVENT=   $evalSpecials->{'%EVENT'};my $EVTPART0=   $evalSpecials->{'%EVTPART0'};my $NAME=   $evalSpecials->{'%NAME'};{sonos2mqtt($NAME,$EVENT)}
2023.01.17 12:53:33.017 3: setreading SonosTTS text   ;sleep 0.4 tts;set SonosTTS tts [SonosTTS:text];sleep SonosTTS:playing:.0 ;set SonosBridge notifyall [SonosTTS:vol] [SonosTTS:httpName];deletereading SonosTTS text : Usage: setreading <name> [YYYY-MM-DD HH:MM:SS] <reading> <value>
where <name> is a single device name, a list separated by comma (,) or a regexp. See the devspec section in the commandref.html for details.
Can't locate object method "name" via package "Empty string, empty guess" (perhaps you forgot to load "Empty string, empty guess"?) at ./FHEM/98_Text2Speech.pm line 627.
/entry.sh: line 621: kill: (17580) - No such process
Abrupt daemon termination, starting 10s countdown .../entry.sh: line 625: kill: (17580) - No such process
10/entry.sh: line 625: kill: (17580) - No such process
9/entry.sh: line 625: kill: (17580) - No such process
8/entry.sh: line 625: kill: (17580) - No such process
7/entry.sh: line 625: kill: (17580) - No such process
6/entry.sh: line 625: kill: (17580) - No such process
5/entry.sh: line 625: kill: (17580) - No such process
4/entry.sh: line 625: kill: (17580) - No such process
3/entry.sh: line 625: kill: (17580) - No such process
2/entry.sh: line 625: kill: (17580) - No such process
1/entry.sh: line 625: kill: (17580) - No such process
/entry.sh: line 632: kill: (17580) - No such process
0
Automatic restart ...

Reinschki

Zitatnotifyall funktioniert wie notify - das ist genau wie pauseall einfach durchgereicht https://svrooij.io/sonos2mqtt/global-commands.html
PauseAll funktioniert bei mir bei allen Playern die etwas abspielen, also wo nicht der Eingang gespielt wird (TV zum Beispiel)

Beides funktioniert nicht, es erfolgt keine Durchsage bzw. die Player spielen weiter!
set SonosBridge PauseAll
set SonosBridge notifyall 20 https://cdn.smartersoft-group.com/various/pull-bell-short.mp3


Das funktioniert einwandfrei:
set MQTT2_RINCON_542A1BBE498001400 notify 20 https://cdn.smartersoft-group.com/various/pull-bell-short.mp3

Vielleicht hast du ja noch ein paar Tipps für mich!?

Beste Grüße
Reiner

Otto123

Hallo Reiner,

zeig mal bitte die Ausgabe von
list SonosBridge devicetopic setList

announcementall schau ich mir an.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Reinschki

Hallo Otto,

hier das List:

SonosBridge                                devicetopic     sonos
                                           setList         CheckSubscription:noArg $DEVICETOPIC/cmd/check-subscriptions
PauseAll:noArg $DEVICETOPIC/cmd/pauseall
announcementall:textField {sonos2mqtt($NAME,$EVENT)}
notifyall:textField {sonos2mqtt($NAME,$EVENT)}
setalarm:textField $DEVICETOPIC/cmd/setalarm


Gruß & Danke für Kümmern
Reiner

Otto123

alles richtig.   :-\
Das klingt mir danach, als ob die Bridge kein publish absetzen kann?
Was hast Du als mqtt Server?
Siehst Du dort den publish ? Beispiel MQTT2_SERVER mit Show MQTT Traffic ...
16:39:15.138 SENT sonos/cmd/pauseall
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Reinschki

Ich nutze mosquitto im Docker Container.
Im traffic kann ich den publish sehen...

:(

Otto123

Moin,

klingt also so, als ob der Weg von der Bridge an den sonos2mqtt Container gestört wird?  :o
Die Steuerung der einzelnen Player geschieht über den topic sonos/RINCON_123456789012345678/control/
Die Steuerung aller Player gemeinsam bzw. zentrale Funktionen passiert über den topic sonos/cmd/ - der scheint bei Dir gestört.

Kann also irgendwie nur sein, dass der mosquitto Container diesen topic nicht weiter an an den sonos2mqtt Container reicht?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Reinschki

Hallo Otto,
ist echt Rätselhaft. Habe heute viel experimentiert. Leider ohne Erfolg...


  • Den Broker EMQX installiert - Kein Erfolg
  • Dann wieder mosquitto und an der Konfig gebastelt - Kein Erfolg
  • sonos2mqtt, sonos-tts-polly, mosquitto vom NUC auf die Diskstation, Fhem weiterhin auf dem NUC - Kein Erfolg
  • Auf der DS noch EMQX statt mosquitto - Kein Erfolg
  • Alles wieder zurück auf den NUC
Immer das gleiche Ergebnis. Es lässt sich alles einzeln steuern. Nur über die Bridge geht es nicht!
Dann habe ich mich mit MQTT.fx mit dem Broker verbunden und sehe per Subscribe das sonos/cmd/pauseall.
Meine Schlussfolgerung ist das die Daten von Fhem an den Broker ausgeliefert werden.
Es muss also was auf der Strecke zwischen dem Broker mosquitto und sonos2mqtt verloren gehen!?

Ich kapier es im Moment nicht.
Für heute mache ich Schluss.

Schönen Abend!

Gruß
Reiner