Sonos2mqtt - vielleicht hat jemand Lust mitzumachen

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

Vorheriges Thema - Nächstes Thema

Axel_S

Hallo zusammen,
erst einmal vielen Dank für dieses tolle Modul!
Ich habe sonos2mqtt nach Anleitung installiert und eingerichtet, seit ca. 2 Wochen läuft alles stabil. Nur tts funktioniert trotz aller Versuche noch nicht richtig. Die Erzeugung der mp3 über VoiceRSS klappt, diese werden auch im Verzeichnis /opt/fhem/cache abgelegt und lassen sich extern abspielen. SonosSpeakWeb ist mit cache cache angelegt. Zum testen hab ich ein notify (mit https://cdn.smartersoft-group.com/various/pull-bell-short.mp3) abgeschickt, das wird sauber abgespielt. Wenn ich aber ein notify mit einer vorher erzeugten Sprachdatei abschicke (http://192.168.100.xx:8083/fhem/cache/4d082aa86ab506dce974c4b36667f05d.mp3) gibt es nur eine Pause und es wird nichts abgespielt. Es muss also wohl an der Bereitstellung der mp3-Dateien im cache-Verzeichnis liegen. Ein Aufruf von http://192.168.100.xx:8083/fhem/cache/4d082aa86ab506dce974c4b36667f05d.mp3 über einen Webbrowser ist möglich, führt komischerweise aber zu der Abfrage ob die Datei als .wav gespeichert werden soll, auch wenn der Browser mp3 eigentlich abspielen soll.
Vielleicht hat jemand eine Idee, ich bin jetzt leider erstmal am Ende mit meinem Latein.
Gruß Axel

ch.eick

#1381
Hallo zusammen,
erstmal vielen Dank für den SONOS Container und das MQTT Device im FHEM.

Ich verwende den Container bereits seit längerem ohne Probleme, jedoch habe ich eine Group, die ich dynamisch erstelle, bei der die Lautstärkeregelung etwas schwierig ist.

Im Wohnzimmer ist eine Sonos Playbase, die ich mit zwei Sonos One als Stereo Paar erweitere. Das gibt einen schönen Raumklang den ich Sonos_7.1_pseudo getauft habe. Um das anzupassen muss ich jedoch die Balance korrigieren und auch unterschiedliche Lautstärken einstellen, was ebenfalls klappt.

Nun kommt die Herausforderung, in der Sonos App gibt es eine Gruppen Laufstärke, die ich auch gerne vom FHEM aus steuern möchte. Das scheint jedoch im MQTT Device noch nicht umgesetzt zu sein.
Dazu hat mir Stephan van Rooij diese Hinweise gegeben setgroupvolume und setvolume . Leider bin ich im MQTT nicht fit und weiß nicht, wie ich das einbauen müsste.

Es geht letzlich um die Gruppen Lautstärke und die Balance (SetRelativeVolume).

Mit der derzeitigen Implementierung kann ich bereits die Lautstärken passend setzen und auch die Gruppe erzeugen, sowie auflösen. Auch eine Reaktion auf Mute oder Lautstärke 0 habe ich umgesetzt. Balance und Gruppen Lautstärke würde jedoch einiges erleichtern.

Ich würde mich sehr freuen, wenn mir da jemand helfen könnte.

EDIT:
im setList müsste eventuell sowas noch rein, aber das funktioniert so nicht.
volume_LF:slider,0,1,100 {sonos2mqtt($NAME,$EVENT)}
volume_RF:slider,0,1,100 {sonos2mqtt($NAME,$EVENT)}
volumeGroup:slider,0,1,100 {sonos2mqtt($NAME,$EVENT)}

VG  Christian

Im List kann ich da leider auch nichts zu finden.
EDIT: oder eventuell diese Definition "sonos/status/[^/]+/renderingcontrol:.* {}" , da müsste es wohl auch ein "GroupRenderingControl" geben
Internals:
   CID        mqttjs_5a898895
   DEF        mqttjs_5a898895
   FUUID      625e8576-f33f-61a8-86f9-f9b6e25feb27ee4c
   FVERSION   10_MQTT2_DEVICE.pm:0.279350/2023-09-05
   IODev      MQTT2_FHEM_Server
   LASTInputDev MQTT2_FHEM_Server
   MQTT2_FHEM_Server_CONN MQTT2_FHEM_Server_172.18.0.7_47766
   MQTT2_FHEM_Server_MSGCNT 6015
   MQTT2_FHEM_Server_TIME 2024-04-01 11:12:30
   MSGCNT     6015
   NAME       MQTT2_Sonos_bridge
   NR         491
   STATE      2
   TYPE       MQTT2_DEVICE
   eventCount 13
   READINGS:
     2024-03-17 16:06:45   IODev           MQTT2_FHEM_Server
     2022-04-19 12:02:22   attrTemplateVersion 20210303
     2024-03-25 18:45:01   config_RINCON_48A6B8D1200601400 {"available_commands":["adv-command","clearqueue","command","joingroup","leavegroup","mute","next","notify","notifytwo","pause","play","playmode","previous","queue","seek","selecttrack","setbass","setbuttonlockstate","setledstate","setnightmode","setavtransporturi","settreble","sleep","speak","speaktwo","stop","switchtoline","switchtoqueue","switchtotv","toggle","unmute","volume","volumedown","volumeup"],"command_topic":"sonos/RINCON_48A6B8D1200601400/control","device":{"identifiers":["RINCON_48A6B8D1200601400"],"manufacturer":"Sonos","name":"Keller"},"device_class":"speaker","icon":"mdi:speaker","json_attributes":true,"json_attributes_topic":"sonos/RINCON_48A6B8D1200601400","name":"Keller","state_topic":"sonos/RINCON_48A6B8D1200601400","unique_id":"sonos2mqtt_RINCON_48A6B8D1200601400_speaker","availability_topic":"sonos/connected","payload_available":"2"}
     2024-03-25 18:45:01   config_RINCON_5CAAFD32186D01400 {"available_commands":["adv-command","clearqueue","command","joingroup","leavegroup","mute","next","notify","notifytwo","pause","play","playmode","previous","queue","seek","selecttrack","setbass","setbuttonlockstate","setledstate","setnightmode","setavtransporturi","settreble","sleep","speak","speaktwo","stop","switchtoline","switchtoqueue","switchtotv","toggle","unmute","volume","volumedown","volumeup"],"command_topic":"sonos/RINCON_5CAAFD32186D01400/control","device":{"identifiers":["RINCON_5CAAFD32186D01400"],"manufacturer":"Sonos","name":"Wohnzimmer"},"device_class":"speaker","icon":"mdi:speaker","json_attributes":true,"json_attributes_topic":"sonos/RINCON_5CAAFD32186D01400","name":"Wohnzimmer","state_topic":"sonos/RINCON_5CAAFD32186D01400","unique_id":"sonos2mqtt_RINCON_5CAAFD32186D01400_speaker","availability_topic":"sonos/connected","payload_available":"2"}
     2024-03-25 18:45:01   config_RINCON_7828CAE8A7C201400 {"available_commands":["adv-command","clearqueue","command","joingroup","leavegroup","mute","next","notify","notifytwo","pause","play","playmode","previous","queue","seek","selecttrack","setbass","setbuttonlockstate","setledstate","setnightmode","setavtransporturi","settreble","sleep","speak","speaktwo","stop","switchtoline","switchtoqueue","switchtotv","toggle","unmute","volume","volumedown","volumeup"],"command_topic":"sonos/RINCON_7828CAE8A7C201400/control","device":{"identifiers":["RINCON_7828CAE8A7C201400"],"manufacturer":"Sonos","name":"Mobil 2"},"device_class":"speaker","icon":"mdi:speaker","json_attributes":true,"json_attributes_topic":"sonos/RINCON_7828CAE8A7C201400","name":"Mobil 2","state_topic":"sonos/RINCON_7828CAE8A7C201400","unique_id":"sonos2mqtt_RINCON_7828CAE8A7C201400_speaker","availability_topic":"sonos/connected","payload_available":"2"}
     2024-03-25 18:45:01   config_RINCON_7828CAE8A8AE01400 {"available_commands":["adv-command","clearqueue","command","joingroup","leavegroup","mute","next","notify","notifytwo","pause","play","playmode","previous","queue","seek","selecttrack","setbass","setbuttonlockstate","setledstate","setnightmode","setavtransporturi","settreble","sleep","speak","speaktwo","stop","switchtoline","switchtoqueue","switchtotv","toggle","unmute","volume","volumedown","volumeup"],"command_topic":"sonos/RINCON_7828CAE8A8AE01400/control","device":{"identifiers":["RINCON_7828CAE8A8AE01400"],"manufacturer":"Sonos","name":"Mobil 2"},"device_class":"speaker","icon":"mdi:speaker","json_attributes":true,"json_attributes_topic":"sonos/RINCON_7828CAE8A8AE01400","name":"Mobil 2","state_topic":"sonos/RINCON_7828CAE8A8AE01400","unique_id":"sonos2mqtt_RINCON_7828CAE8A8AE01400_speaker","availability_topic":"sonos/connected","payload_available":"2"}
     2024-03-25 18:45:01   config_RINCON_949F3EE130B001400 {"available_commands":["adv-command","clearqueue","command","joingroup","leavegroup","mute","next","notify","notifytwo","pause","play","playmode","previous","queue","seek","selecttrack","setbass","setbuttonlockstate","setledstate","setnightmode","setavtransporturi","settreble","sleep","speak","speaktwo","stop","switchtoline","switchtoqueue","switchtotv","toggle","unmute","volume","volumedown","volumeup"],"command_topic":"sonos/RINCON_949F3EE130B001400/control","device":{"identifiers":["RINCON_949F3EE130B001400"],"manufacturer":"Sonos","name":"Mobil"},"device_class":"speaker","icon":"mdi:speaker","json_attributes":true,"json_attributes_topic":"sonos/RINCON_949F3EE130B001400","name":"Mobil","state_topic":"sonos/RINCON_949F3EE130B001400","unique_id":"sonos2mqtt_RINCON_949F3EE130B001400_speaker","availability_topic":"sonos/connected","payload_available":"2"}
     2024-03-25 18:45:01   connected       2
     2022-04-19 17:06:07   subscriptions   sonos/+/control sonos/cmd/+ sonos/set/+/+
Attributes:
   DbLogExclude .*
   bridgeRegexp sonos/(RINCON_[A-Z0-9]+)[:/].* "$1"
   devStateIcon 0:10px-kreis-rot 1:10px-kreis-gelb 2:10px-kreis-gruen
   devicetopic sonos
   getList    Favorites:noArg Favorites {sonos2mqtt($NAME,$EVENT)}
Reply:Favorites,Radios,Playlists Reply {sonos2mqtt($NAME,$EVENT)}
listalarms:noArg Alarms {sonos2mqtt($NAME,$EVENT)}
   icon       mqtt_bridge_2
   model      sonos2mqtt_bridge
   readingList sonos/status/[^/]+/renderingcontrol:.* {}
homeassistant/music_player/RINCON_([0-9A-Z]+)/sonos/config:.* { $TOPIC =~ m,(RINCON_[0-9A-Z]+),; { "config_$1"=>$EVENT }}
sonos/RINCON_([0-9A-Z]+)/Favorites:.* Favorites
sonos/RINCON_([0-9A-Z]+)/Reply:.* Reply
sonos/alarms:.* Alarms
sonos/connected:.* connected
sonos/status/[^/]+/avtransport:.* {}
   room       MQTT2_DEVICE
   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
   stateFormat connected
   userReadings favlist:Favorites.* {sonos2mqtt_ur($name,'favlist')},
grouplist:Favorites.* {sonos2mqtt_ur($name,'grouplist')}
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Otto123

Christian hat hier diese Frage gestellt https://forum.fhem.de/index.php?topic=88021.msg1309358#msg1309358

Leider sehe ich in Stephans Code keine direkte Realisierung der gewünschten Befehle in sonso2mqtt?
Die hier gezeigten groupvolume Befehle funktionieren nicht und wenn man in den verlinkten Stellen im Code schaut sind die mMn auch nicht in sonos2mqtt implementiert.

Aber es funktioniert - ich erinnere mich: Stephan hat viele Dinge nicht mehr speziell sondern allgemein über advanced commands implementiert. 
Auf die Schnelle geht es ganz einfach :) mit dem json welches man hier erklärt findet,
{
  "command": "adv-command",
  "input": {
    "cmd": "GroupRenderingControlService.SetGroupVolume",
    "val": {
      "InstanceID": 0,
      "Channel": "Master",
      "DesiredVolume": 20
    }
  }
}
{
  "command": "adv-command",
  "input": {
    "cmd": "GroupRenderingControlService.SetRelativeGroupVolume",
    "val": {
      "InstanceID": 0,
      "Channel": "Master",
      "Adjustment": "+20"
    }
  }
}
dies wirft man zum Test einfach in das Textfeld oder in die FHEM Kommandozeile
set alias=Bad x_raw_payload {...}
Probiere das mal bitte - man kann das später in die sonos2mqttUtils implementieren.

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

Otto123

Zitat von: ch.eick am 01 April 2024, 11:02:18im setList müsste eventuell sowas noch rein, aber das funktioniert so nicht.
Dazu muss noch die sonos2mqttUtils erweitert werden...
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

ch.eick

Zitat von: Otto123 am 01 April 2024, 11:48:55dies wirft man zum Test einfach in das Textfeld oder in die FHEM Kommandozeile
Code Auswählen Erweitern
set alias=Bad x_raw_payload {...}
Probiere das mal bitte - man kann das später in die sonos2mqttUtils implementieren.
Hallo Otto,
das klappt auch bei mir
set alias=Wohnzimmer x_raw_payload {"command": "adv-command","input": {"cmd": "GroupRenderingControlService.SetRelativeGroupVolume","val": {"InstanceID": 0,"Channel": "Master","Adjustment": "+2"}}}
Damit werde ich dann mal mein Sonos_7.1_pseudo Device umbauen, auch wenn es noch nicht im sonos2mqttUtils umgesetzt ist.

VG   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

Moinsen,
leider habe ich für die Balance noch nicht den Payload gefunden :-)

Bei der Gruppen Lautstärke gibt es auch noch ein kleines Problem, denn wenn man über die Fernbedienung auf der Base die Lautstärke ändert, dann wird dies nicht auf die Gruppe gemappt. Ändert man die Gruppen Lautstärke in der Handy App, wirkt dies natürlich auf alle Lautsprecher.

Meine Idee wäre nun die Änderung der Lautstärke vom Gruppen Master im FHEM zu erkennen, diese dann zwischen zu speichern und auf dem Master im ersten Schritt wieder zurück zu nehmen. Im zweiten Schritt würde dann stattdessen die Gruppenlautstärke mit dem Lautstärkedelta verändert.

Für bessere Vorschläge wäre ich offen.

VG   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

aski71

Hallo sonos2mqtt-Freunde.
Ich musste heute neu installieren, dabei ist mir folgendes aufgefallen:

npm warn deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
npm warn deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported

Das mit dem leaks memory bereitet mir Kopfschmerzen.
Baut jemand noch an mqtt2sonos? Das Thema hier scheint länger nicht mehr angefasst worden zu sein.

Otto123

Zitat von: aski71 am 25 August 2024, 20:38:47Baut jemand noch an mqtt2sonos? Das Thema hier scheint länger nicht mehr angefasst worden zu sein.
ich verwende nur die Docker Version ;)
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

aski71

Zitat von: Otto123 am 25 August 2024, 20:41:06
Zitat von: aski71 am 25 August 2024, 20:38:47Baut jemand noch an mqtt2sonos? Das Thema hier scheint länger nicht mehr angefasst worden zu sein.
ich verwende nur die Docker Version ;)

Die muss doch auch gepflegt werden?!
Wer ist denn der Autor? :)

Otto123

der Entwickler: Stephan van Rooij ;)
Zitat von: aski71 am 25 August 2024, 21:10:00Die muss doch auch gepflegt werden?!

da muss ich mich nicht um den npm Kram kümmern
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

Ralli

Gruß,
Ralli

Proxmox 8.3 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.3 dev, virtualisierte RaspberryMatic (3.79.6.20241122) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.1.5) und HMW-GW, FRITZBOX 7490 (07.59), FBDECT, Siri und Alexa

aski71

Ich weiß ja nicht, warum meine Frage nach dem Autor mit der Verwendung des Docker Containers beantwortet wird.
Ich verwende den nunmal nicht und habe meine Gründe dafür.

Otto123

#1392
Dann waren Deine Fragen missverständlich gestellt - oder ich habe sie nicht verstanden.

Der Autor von diesem Thread bin ich. Aber für die Installation einer beliebigen npm Version kann ich keinen Support leisten.
Die von Dir zitierten Module sagen mir nichts, wenn die Script nodejs Installation nicht durchläuft bin ich auch aufgeschmissen, deshalb der Hinweis: ich verwende die docker Version aus gutem Grund. ;)

Der Autor von dem verwendeten Modul sonos2mqtt ist Stephan van Rooij - das habe ich oben so beantwortet. Seine Seite https://github.com/svrooij/sonos2mqtt
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

CQuadrat

Hallo Zusammen,

ich habe jetzt auch mal angefangen, meine Sonos-Sachen vom Sonos-Modul auf MQTT umzuziehen. So langsam kann ich (fast) alles, was ich vorher realisiert hatte, jetzt auch mit MQTT. Vielen Dank dafür !!!

Eine Sache fehlt mir aber noch: Beim Sonos-Modul gibt es bei den Playern das Reading presence, was die Werte appeared oder disappeared annehmen kann. Das wird halt übergreifend vom Sonos-Modul gesetzt. Wie habt ihr sowas realisiert? Ich weiß, es gibt das PRESENCE-Modul...


Vielen Dank und viele Grüße

Christoph

PS: Seht mir bitte nach, dass ich nicht 93 Seiten durchlesen kann.
FHEM auf Mini-ITX-Server mit Intel Quad-Core J1900:
+ HM: HM-LAN, HM-USB, HM-MOD-UART mit div. HM-Komponenten
+ RFXtrx: Funkwetterstation Bresser mit ext. Thermometer, Regenmesser und Windmesser
+ TUL (KNX-Anbindung), MQTT, SONOS (div. Gimmicks), OneWire, Hue

Otto123

Hallo Christoph,

bei mir sind die Player immer am Strom, ich habe mir darum nie Gedanken gemacht. Aber ja, wenn dann denke ich das Presence Modul ist richtig? Eventuell mit etwas besserem als einfach Ping?

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