Sonos2mqtt - vielleicht hat jemand Lust mitzumachen

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

Vorheriges Thema - Nächstes Thema

binford6000

Moin Zusammen,
ich bin mittlerweile totoal überzeugt von sonos2mqtt - tolle Arbeit!
Ich bräuchte aber noch etwas Hilfe beim Einrichten der Sprachausgabe. Im Wiki steht:
ZitatMan hat zwei Möglichkeiten, dies umzusetzen:

1. Text2Speech FHEM intern
2. Mit dem sonos text to speech Server https://svrooij.io/sonos2mqtt/

Da ich auch ein paar Echos am Start habe würde ich gerne den node-sonos-tts-polly Server von Stefan
einsetzen. Wie der zu installieren ist steht ja in der Readme auf github. Aber mir fehlt noch die Verbindung
zu sonos2mqtt  :o Kann mir da bitte mal einer auf die Sprünge helfen?! Danke!  :)

VG Sebastian




Otto123

#1007
@PapaLoewe Das sind wir doch schon einen Schritt weiter ;)
Zitat von: binford6000 am 24 April 2021, 09:56:41
Aber mir fehlt noch die Verbindung
zu sonos2mqtt  :o Kann mir da bitte mal einer auf die Sprünge helfen?! Danke!  :)
Hast Du ein anderes Wiki?
ZitatSpeak Befehl
Dieser Befehl ist ähnlich wie der in der FHEM-Sonos Umgebung:

set Player speak <volume> text
Verwendet man diesen Syntax (mit Sprache und Stimme am Anfang), wird automatisch der speak Befehl an die sonos-tts abgesetzt. Die sonos-tts muss man separat installieren/integrieren!

set EG.KU.Sonos speak de-DE Vicki 25 Test
Intern wird einfach der entsprechende Json String erstellt und an sonos2mqtt gesendet.

Oder meinst Du die Installation / Verbindung des tts Servers an sich? Stichwort Aufruf parameter --ttsendpoint      Default endpoint for text-to-speech
Siehe auch https://svrooij.io/sonos2mqtt/getting-started.html
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

binford6000

Zitat von: Otto123 am 24 April 2021, 11:07:42
Hast Du ein anderes Wiki?

Haha...  :-X

ZitatIntern wird einfach der entsprechende Json String erstellt und an sonos2mqtt gesendet.

Ich kann aber nirgends die Verbindung zu node-sonos-tts-polly sehen/lesen.

Als Docker Container gestartet bekomme ich:
sudo docker run --env-file polly.env -p 5601:5601 svrooij/sonos-tts-polly
Sonos TTS server started at http://0.0.0.0:5601
Press [CTRL]+C to close


Das kann m.M.n. nicht funktionieren, da mein FHEM auf einem anderen Host läuft - wie soll sonos2mqtt den Container denn finden?

Außerdem würde ich lieber die nodejs Variante bevorzugen. Installiert hab ich es auf meine FHEM Host, beim Start kommt aber:
sudo sonos-tts-polly --port 5601 --amazonKey KEY --amazonSecret SECRET
/usr/bin/sonos-tts-polly: 1: use strict: not found
/usr/bin/sonos-tts-polly: 2: Syntax error: "(" unexpected


Die Doku von Stefan zu node-sonos-tts-polly sagt halt auch nicht mehr.
Also mir fehlt immer noch die Verbindung von sonos2mqtt zu node-sonos-tts-polly...

Otto123

#1009
Du hast mein Edit nicht nachgelesen --ttsendpoint damit sagst Du sonos2mqtt wo Dein tts Server zu finden ist.
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

sebbo2002

Zitat von: Otto123 am 19 April 2021, 14:14:17
Ich habe eine neue Version der 99_sonos2mqttUtils.pm eingecheckt.
Neu ist eine sub, die einen Json String zurückliefert, der den advanced commands entspricht. Damit kann man von hier den ServiceNamen heraus nehmen und die erforderlichen Values übergeben. Ich habe das für folgende Kommandos getestet:
Den Erforderlich Wert 0/1 oder On/Off kann man natürlich setzen. Wie man sie ist die Reihenfolge relativ egal nur die Parameterpärchen müssen zusammenstehen.
{sonos2mqtt_command ('SetEQ','DesiredValue',1,'EQType','NightMode')}
{sonos2mqtt_command ('SetEQ','EQType','DialogLevel','DesiredValue',0)}
{sonos2mqtt_command ('SetButtonLockState','DesiredButtonLockState','Off')}
{sonos2mqtt_command ('SetLEDState','DesiredLEDState','On')}
{sonos2mqtt_command ('SetBass','DesiredBass',8)}
{sonos2mqtt_command ('SetTreble','DesiredTreble',-3)}
{sonos2mqtt_command ('AVTransportService.RemoveAllTracksFromQueue')}

Will man die Sub für den Set Befehl x_raw_payload verwenden - muss man wie üblich bei set magic zusätzlich klammern -> {(sonos2mqtt_command ())}

Habe gestern alle Sonos bei mir umgestellt, funktioniert soweit sehr gut bei mir. Vielen Dank für die tolle Arbeit  :D

Wardancer

Hallo zusammen,

ich starte gerade und würde gerne vom Sonos-Modul auf die MQTT-Variante umsteigen. Ich würde auch sagen, das grundsätzlich schon recht viel funktioniert. Was mir aber im Moment noch nicht gelingt ist das Abspielen von Radio-Stationen. Ich hab dazu zunächst wie im Wiki beschrieben die Favoriten, Radiosstationen und Playlisten eingelesen.
Es werden dazu dann auch die entsprechenden Readings im Bridge-Device angelegt. Als Beispiel hier mal die Ausgabe des Radio-Reading:

{"Result":[{"Title":"1Live","UpnpClass":"object.item.audioItem.audioBroadcast","ItemId":"R:0/0/5","ParentId":"R:0/0","TrackUri":"x-rincon-mp3radio://https://dg-wdr-https-dus-dtag-cdn.sslcast.addradio.de/wdr/1live/live/mp3/128/stream.mp3","ProtocolInfo":"x-rincon-mp3radio:*:*:*"},{"Title":"New England Classical Christmas","UpnpClass":"object.item.audioItem.audioBroadcast","ItemId":"R:0/0/62","ParentId":"R:0/0","TrackUri":"x-sonosapi-stream:s257672?sid=254&flags=8224&sn=0","ProtocolInfo":"x-rincon-mp3radio:*:*:*"},{"Title":"Radio Bonn Rhein Sieg","UpnpClass":"object.item.audioItem.audioBroadcast","ItemId":"R:0/0/8","ParentId":"R:0/0","TrackUri":"x-rincon-mp3radio://http://stream.lokalradio.nrw/rbrs","ProtocolInfo":"x-rincon-mp3radio:*:*:*"},{"Title":"SWR3","UpnpClass":"object.item.audioItem.audioBroadcast","ItemId":"R:0/0/7","ParentId":"R:0/0","TrackUri":"x-rincon-mp3radio://http://mp3-live.swr3.de/swr3_m.m3u","ProtocolInfo":"x-rincon-mp3radio:*:*:*"},{"Title":"WDR2","UpnpClass":"object.item.audioItem.audioBroadcast","ItemId":"R:0/0/6","ParentId":"R:0/0","TrackUri":"x-rincon-mp3radio://https://wdr2-lh.akamaihd.net/i/wdr2_rheinland@349349/master.m3u8","ProtocolInfo":"x-rincon-mp3radio:*:*:*"}],"NumberReturned":5,"TotalMatches":5,"UpdateID":1}

Ich würde jetzt gerne per
set devspec-Speaker play Radio WDR2 auf die entsprechende Station wechseln wollen. Problem ist, dass der Speaker nicht wechselt.
Ein set devspec-Speaker play spielt dann einfach wieder die bereits angewählte Station bzw. Playlist.
Gibt es da noch was, was ich nachschauen bzw. einstellen müsste?

Otto123

Hi Wardancer,

das muss ich mir anschauen. Was mir auffällt:
{"Title":"WDR2","UpnpClass":"object.item.audioItem.audioBroadcast","ItemId":"R:0/0/6","ParentId":"R:0/0","TrackUri":"x-rincon-mp3radio://https://wdr2-lh.akamaihd.net/i/wdr2_rheinland@349349/master.m3u8","ProtocolInfo":"x-rincon-mp3radio:*:*:*"}
Deine Trackuri ist völlig anders wie ich die kenne  :-[
{"Title":"WDR 2 Rheinland","UpnpClass":"object.item.audioItem.audioBroadcast","ItemId":"R:0/0/48","ParentId":"R:0/0","TrackUri":"x-sonosapi-stream:s213886?sid=254&flags=8224&sn=0","ProtocolInfo":"x-rincon-mp3radio:*:*:*"}
Mir ist es bei bestimmten TrackUris nicht gelungen die ordentlich zu übergeben :(
ich habe den WDR2 über Tunein -> Suchlauf -> Info&Optionen und dann "Meinen Radiosendern hinzufügen" erstellt
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

Wardancer

Hmm,

weiss auch nicht mehr, wie ich an die URLs gekommen war. Aber ich denke ich hab mit die über die WDR-Seite gezogen und über die Desktop-App dann ins Sonos eigespielt.
Aber wie ich aus deiner Reaktion sehe ist der ungeparste JSON-String nicht das Problem :) Dachte nämlich, dass da an der Ecke noch was nicht stimm. Ich probier das mal mit dem TuneIn WDR2 aus. und melde mich nochmal

Otto123

Nein das Problem ist final der Befehl setAVTuri - da muss die uri ein bestimmtes "Format" haben. Manche nimmt er dort und manche nicht - habe nicht ganz kapiert wie.
Deswegen funktionieren die Sonos Favoriten  nur sehr eingeschränkt.
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

Wardancer

Hi,

Kurze Rückmeldung von mir: Es klappt jetzt. Habt mir die Radiostationen nochmal neu als Favoriten angelegt und jetzt läufts wie am Schnürchen!,

LordVoodoo

Hallo,

ich mache gerade meine ersten Gehversuche mit Sonos/MQTT und bekomme deutlich zuverlässiger Play/Pause hin als über das FHEM-SONOS-Modul.
Jedoch gelingt es mir noch nicht einen Favoriten anzuwählen:

set Sonos_MQTT setAVTUri Chillout-Lounge

Anschließend erscheint im MQTT-Mitschnitt:


{ "command":"setavtransporturi",
  "error":
    {"Action":"SetAVTransportURI",
     "FaultCode":"s:Client",
     "Fault":"UPnPError",
     "UpnpErrorCode":714,
     "UpnpErrorDescription":
     "Illegal MIME-Type",
     "name":"SonosError"}}


Ich habe bewusst einen Favoriteneintrag ohne Leer-/Sonderzeichen verwendet.

Auch über die Kommandozeile, set ... play Favorite Chillout-Lounge, kommt der gleiche Fehler.

Sieht jemand meinen Denkfehler?

Otto123

Hi,

beim Befehl setAVTuri muss wirklich eine uri dahinter, also z.B. sowas:
"x-sonosapi-stream:s213886?sid=254&flags=8224&sn=0"
Was Du willst ist einen Favoriten abspielen den Du schon in der Liste hast? Versuch:
set Sonos_MQTT play Favorite Chillout-Lounge

Kann funktionieren, wenn die uri die dort hinterlegt ist, über den Befehl Befehl setAVTuri "spielbar" ist. Zeig im Zweifelsfall mal die Ausgabe von
{ReadingsVal('SonosBridge','Favorites','')}

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

Phiolin

Was mir hauptsächlich aus dem "alten" Sonos Modul beim MQTT noch fehlt, ist die Möglichkeit vor einer Sprachausgabe noch einen Gong o.ä. abzuspielen. Im Sonos Modul konnte man ja immer praktisch beliebige zusätzliche MP3 files im speak einbinden. Da ich die Sonos Boxen hauptsächlich dafür benutze, fällt das schon auf. Es ist einfach etwas merkwürdig, wenn die Box einfach so zu sprechen anfängt ohne sich vorher durch Gedudel bemerkbar zu machen. :D
Ich vermute aber mal, das ist nicht so einfach zu implementieren?

Otto123

Je nach dem wie man die Sprachausgabe macht. Mit der text2speech Variante geht das ja einfach, die kann das von Hause aus.
https://fhem.de/commandref_DE.html#Text2Speech

Ich bin nicht sicher ob ich das schon probiert habe, wüsste aber nicht warum das nicht gehen sollte.
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