Sonos2mqtt - vielleicht hat jemand Lust mitzumachen

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

Vorheriges Thema - Nächstes Thema

Otto123

#1275
Moin Reiner,

in Deiner Versuchsreihe fehlte dann aber MQTT2_SERVER :)

Kannst Du mal das logging im sonos Container hochschrauben, geht mit einem publish an sonos/cmd/setlogging verbose siehe https://svrooij.io/sonos2mqtt/global-commands.html
Und dann schauen was beim pauseall im Log passiert? Interessant bei mir: das Kommando wird ausgeführt aber sonos2mqtt wirft danach einen Fehler und startet neu.

Oder was passiert wenn Du über Deinen MQTT Server ein publish absetzt sonos/cmd/pauseall

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

Gesagt , getan!
Hier der Wechsel auf ein höheres Log-Level und der Output nach dem command pauseall.

2023-01-19T11:01:13.597Z [Information] LogLevel changed to verbose
2023-01-19T11:01:48.656Z [Debug] Mqtt got generic command pauseall
2023-01-19T11:01:48.656Z [Debug] Got generic command pauseall from mqtt
/usr/local/lib/node_modules/sonos2mqtt/node_modules/@svrooij/sonos/lib/services/base-service.js:226
            if (typeof errorResponse['s:Envelope']['s:Body']['s:Fault'] !== 'undefined') {
                                                  ^
TypeError: Cannot read properties of undefined (reading 's:Body')
    at AVTransportService.handleErrorResponse (/usr/local/lib/node_modules/sonos2mqtt/node_modules/@svrooij/sonos/lib/services/base-service.js:226:51)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async AVTransportService.handleRequest (/usr/local/lib/node_modules/sonos2mqtt/node_modules/@svrooij/sonos/lib/services/base-service.js:188:16)
    at async AVTransportService.SoapRequestWithBodyNoResponse (/usr/local/lib/node_modules/sonos2mqtt/node_modules/@svrooij/sonos/lib/services/base-service.js:123:16)
    at async AVTransportService.Pause (/usr/local/lib/node_modules/sonos2mqtt/node_modules/@svrooij/sonos/lib/services/av-transport.service.js:169:53)
    at async SonosDevice.Pause (/usr/local/lib/node_modules/sonos2mqtt/node_modules/@svrooij/sonos/lib/sonos-device.js:938:28)
    at async Promise.all (index 1)
Node.js v17.3.0
2023-01-19T11:01:49.315Z [Information] Starting sonos2mqtt v3.2.0
2023-01-19T11:01:49.324Z [Information] LogLevel changed to information
2023-01-19T11:01:49.399Z [Information] Found 7 sonos speakers
2023-01-19T11:01:49.426Z [Information] Mqtt connection changed to connected: true


Sagt dir das was?

Otto123

Bei mir wird das Kommando ausgeführt und es entsteht (offenbar danach) ein upnp Fehler
Meine Interpretation von Deinem Log:
Bei Dir erhält er das Kommando und erzeugt einen Fehler, den er selbst nicht kennt.

Passiert das auch wenn Du direkt über den MQTT Server ein publish absetzt -> 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

Das publish -> sonos/cmd/pauseall erzeugt über den MQTT Server sowie über MQtt.fx exakt den gleichen Fehler innerhalb von sonos2mqtt!

Otto123

Welche Parameter hast Du definiert?
Ich habe diese in der docker compose Datei:
      - SONOS2MQTT_DEVICE=192.168.56.238 # Service discovery doesn't work very well inside docker, so start with one device.
      - SONOS2MQTT_MQTT=mqtt://fhem:1883
      - SONOS_LISTENER_HOST=192.168.56.121 #  Docker host IP
      - SONOS_TTS_ENDPOINT=http ....
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

Bei mir sieht das so aus:
- SONOS2MQTT_DEVICE=192.168.178.51
- SONOS2MQTT_MQTT=mqtt://192.168.178.80:1883
- SONOS_LISTENER_HOST=192.168.178.80
- SONOS_TTS_ENDPOINT=http://sonos-tts:5601/api/generate

Otto123

#1281
ok da gehen mir jetzt die Ideen aus. Offenbar stört ihn etwas in deiner Sonos Landschaft.
Bei mir stört etwas in der UPNP Landschaft, bei mir kommt der Fehler auch in einer lokal installierten Instanz also unabhängig von Docker und irgendwelchen Listener Adressen.
Also ich merke den Fehler nicht, wenn ich nicht ins Log schaue.

Du kannst nur mal Stephan anfragen, ob er zu dem Fehler ein Idee hat. Ich denke ja, es hat nicht mit unsere Anbindung mit FHEM zu tun. Du setzt den Befehl über den von ihm empfohlenen MQTT Server ab, alles Docker, alles soweit definiert...

notifyall schau ich mir mal an ob ich da was stricken kann.
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

Die Anfrage läuft...
Ich Informiere dich zu etwaigen Neuigkeiten!

Nochmals vielen Dank für deine Unterstützung.

Gruß
Reiner

Reinschki

Hallo Otto,

mit der svrooij/sonos2mqtt:3.2.0-beta.11 wurde das Problem gelöst!
:)

Schönes Wochenende!

Otto123

ich habe den Befehl set SonosBridge speak  ... nachgerüstet. Der ersetzt eigentlich den Befehl announcementall und funktioniert analog zum speak Befehl am Player.

{ Svn_GetFile("contrib/AttrTemplate/99_sonos2mqttUtils.pm", "FHEM/99_sonos2mqttUtils.pm", sub(){ CommandReload(undef, "99_sonos2mqttUtils") }) }
Am einfachsten in der setList von der SonosBridge die folgende Zeile nachrüsten
speak:textField {sonos2mqtt($NAME,$EVENT)}

Danach geht so eine Nachricht an alle Player
set SonosBridge speak de-DE Vicki 25 Rundruf Test
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

Mitch

Hallo Zusammen,

seit langem "Musste" ich mal wieder etwas in fhem machen.
Habe mich nun doch durchgerungen auf S2 zu gehen, obwohl mein AMP nur S1 kann.
Jetzt habe ich das ganze getrennt.
Kann ich denn S1 und S2 zusammen über sonos2mqtt in fhem bringen?

Sorry, wenn das hier schon irgendwo steht, die Suche war nicht erfolgreich.
FHEM im Proxmox Container

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

Mitch

Das kenne ich, Danke Otto.
Habe aber kein Docker und konnte das in Ubuntu nicht nachbauen.
FHEM im Proxmox Container

Otto123

#1288
Ich glaube nicht, dass es docker spezifisch ist, wenn auch aus meiner Sicht viel einfacher.
https://sonos2mqtt.svrooij.io/getting-started.html#configuration
Du müsstest nur zwei sonos2mqtt Instanzen aufbauen, keine Ahnung wie das unter nodejs geht - aber Du hast ja proxmox. ;)
... zwei Maschinen mit sonso2mqtt bauen?
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

Mitch

Genau so hatte ich das heute probiert, zwei VMs.
Ich bin auch so weit gekommen, dass ich eine Instanz für S1 und eine für S2 habe.
Mir fehlt quasi ein Parameter, den es beim Docker gibt: SONOS_LISTENER_PORT
Rest war nicht so schwer aus dieser Liste zu holen:
Usage: index.js [options]

Options:
      --prefix           instance name. used as prefix for all topics   [default: "sonos"]
      --mqtt             mqtt broker url. See
                         https://svrooij.io/sonos2mqtt/getting-started.html#configuration
                                                             [default: "mqtt://127.0.0.1"]
      --clientid         Specify the client id to be used
      --wait             Number of seconds to search for a speaker, until exit
                                                                    [number] [default: 30]
      --log              Set the loglevel
                     [choices: "warning", "information", "debug"] [default: "information"]
  -d, --distinct         Publish distinct track states          [boolean] [default: false]
  -h, --help             Show help                                               [boolean]
      --ttslang          Default TTS language                           [default: "en-US"]
      --ttsendpoint      Default endpoint for text-to-speech
      --device           Start with one known IP instead of device discovery.
      --discovery        Emit retained auto-discovery messages for each player.
                                                                [boolean] [default: false]
      --friendlynames    Use device name or uuid in topics (except the united topic,
                         always uuid)                            [choices: "name", "uuid"]
      --tvGroup        The UUID of the coordinator to which the Soundbar should be joined
      --tvUuid         The UUID of the soundbar which should auto stop the tvGroup
      --tvVolume       Volume the soundbar should go to when TV playback starts
      --version          Show version number 


Was mir nicht ganz klar ist, mal von der ID abgesehen, brauche ich auch zwei Sonos Bridges? Evtl. sogar zwei MQTT Server?

Angelegt wurde mir der S1 Amp, aber nicht richtig.
FHEM im Proxmox Container