Sonos2mqtt - vielleicht hat jemand Lust mitzumachen

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

Vorheriges Thema - Nächstes Thema

Otto123

Ich meine das Device SonosTTS (oder alternativ die sonos-tts von Stefan) an sich.
Ich wollte eigentlich gern so eine Art komplettes Setup Script machen, aber für die "Text zu Sprache" Wandlung an sich, sind einige Eventualitäten abzuklopfen. Gerade Text2Speech hat ja auch Abhängigkeiten.

Die Befehle sind jetzt drin, es ist die Frage ob man da noch was abfangen muss, wenn sie einer verwendet aber SonosTTS (sonos-tts) nicht installiert hat.
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

kjmEjfu

Aaaaah, jetzt, ja :-)

Also, wenn man sonos-tts nutzt, dann werden 1x die input-Felder gefüllt.

Zusätzlich aber auch, sieht man den Erfolg so:

currentTrack_Album sonos-tts-polly by @Svrooij
currentTrack_AlbumArtUri http://192.168.178.31:1400/getaa?s=1&u=x-sonos-spotify:spotify:track:39m87lOMd5ccENPVvAT7gH%3fsid%3d9%26flags%3d8224%26sn%3d2
currentTrack_Artist Vicki Amazon Polly de-DE


Man könnte also einmal eine Testdurchsage "Sonos-TTS wurde korrekt installiert" machen, schauen ob currentTrack_Album passt und entsprechend eine Meldung "sonos-tts ok" bzw. "ooops, sonos-tts will noch nicht richtig" machen.

Oder meintest du das anders?
Migriere derzeit zu Home Assistant

Stefan_Hvr

Zitat von: TomLee am 28 Februar 2021, 19:18:29
Einfach die setList wie folgt ergänzt und das klappt bei mir:
sleep:slider,0,1,60,1 sonos/RINCON_000E58F7F67C01400/control {  "command": "sleep",  "input": $EVTPART1}

Hi Thomas, Hi Otto,
zur Info: der Sleeptimer geht nur bis 59 Minuten. Scheinbar gibt es ab 60 Minuten eine andere Syntax
Viele Grüße aus Hannover
EnOcean, Zigbee, Shelly MQTT, Homebridge, Fritzbox, Harmonyhub, Alexa, Worx MQTT, Sonos MQTT, Tahoma, Telegram, Vorwerk,IRoomba MQTT, Buderus Km200,
seit 08/2019 Hausautomation mit FHEM

TomLee

Wenn man hier unter den ganzen aufgeführten Kommandos den Link mappings aufruft steht da was von Wert unter 60, mglw. ist das dann so, dazu versteh ich aber zu wenig vom Code.

Otto123

unter 60 gilt als minuten und wird intern in dieses Format gewandelt: "00:59:00"
So gehts mit String { "command":"sleep","input":"01:30:00" } und geht quasi direkt.

Ok bauen wir mal noch um
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

Es ist seit kurzem ein in sich konsistenter Stand (template passt zu sonos2mqttUtils) im SVN.

Also einfach Templates laden und anwenden:
{ Svn_GetFile("FHEM/lib/AttrTemplate/mqtt2.template", "FHEM/lib/AttrTemplate/mqtt2.template", sub(){ AttrTemplate_Initialize() }) }

Der erste Teil im Wiki ist auch etwas angepasst: https://wiki.fhem.de/wiki/MQTT2-Module_-_Praxisbeispiele#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

Stefan_Hvr

Zitat von: Otto123 am 01 März 2021, 22:02:12
unter 60 gilt als minuten und wird intern in dieses Format gewandelt: "00:59:00"
So gehts mit String { "command":"sleep","input":"01:30:00" } und geht quasi direkt.
set a:model=sonos2mqtt_speaker:FILTER=isMaster=1 sleep "01:30:00" klappt auch
Viele Grüße aus Hannover
EnOcean, Zigbee, Shelly MQTT, Homebridge, Fritzbox, Harmonyhub, Alexa, Worx MQTT, Sonos MQTT, Tahoma, Telegram, Vorwerk,IRoomba MQTT, Buderus Km200,
seit 08/2019 Hausautomation mit FHEM

Otto123

ginge dann so - -als Test: {my $payload =110;;strftime("%H:%M:%S",gmtime($payload*60))}

Baue ich ein.
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

Stefan_Hvr

Zitat von: Otto123 am 01 März 2021, 22:21:30
ginge dann so - -als Test: {my $payload =110;;strftime("%H:%M:%S",gmtime($payload*60))}
Baue ich ein.

Du kannst Sachen... :-) ;-)

Zitat von: Otto123 am 01 März 2021, 22:06:48
Es ist seit kurzem ein in sich konsistenter Stand (template passt zu sonos2mqttUtils) im SVN.
Also einfach Templates laden und anwenden:
{ Svn_GetFile("FHEM/lib/AttrTemplate/mqtt2.template", "FHEM/lib/AttrTemplate/mqtt2.template", sub(){ AttrTemplate_Initialize() }) }


Beim Anwenden des Templates am Player bekomme ich:
unknown command $DEVICETOPIC/RINCON_5CAAFD9AC1AC01400/ZoneInfo:.*, try help.
Viele Grüße aus Hannover
EnOcean, Zigbee, Shelly MQTT, Homebridge, Fritzbox, Harmonyhub, Alexa, Worx MQTT, Sonos MQTT, Tahoma, Telegram, Vorwerk,IRoomba MQTT, Buderus Km200,
seit 08/2019 Hausautomation mit FHEM

Otto123

#894
ok danke, schau ich mir an. Da hab ich Mist eingebaut. Das automatische Anlegen funktioniert, da sieht man den Fehler nur im Log.  :-[

Edit: Habs gefixed.

Edit: Hab noch das Format für sleep eingebaut - funktioniert jetzt mit allen Zeiten 0 bis 2h.
Hab da gleich noch an den Wecker gedacht - aber das ist komplizierter ;)
Bugfix im Template, das speaker Template stößt jetzt auch das setup an wenn man es manuell anwendet.

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

Stefan_Hvr

Zitat von: Otto123 am 01 März 2021, 23:08:19
Edit: Hab noch das Format für sleep eingebaut - funktioniert jetzt mit allen Zeiten 0 bis 2h.
Hab da gleich noch an den Wecker gedacht - aber das ist komplizierter ;)
--> witzig, wenn man drüber nachdenkt --> ich nutze sleep tatsächlich im Sonos (um es leicht per Sonos-App unterbrechbar und verlängerbar zu machen, wenn ich nicht einschlafen kann.)
Meinen Wecker stelle ich mit dem Weckermodul in FHEM und lasse darüber auch die Playlist (...momentan einen Radiosender  :( ) laden und den Sender starten. Manchmal ist man auch eigenartig  ;)

über x_raw_payload:textField {sonos2mqtt($NAME,$EVENT)}
kann ich aber nur an den Speaker senden, oder? Ein Global command geht per MQTT publish, richtig?

Viele Grüße aus Hannover
EnOcean, Zigbee, Shelly MQTT, Homebridge, Fritzbox, Harmonyhub, Alexa, Worx MQTT, Sonos MQTT, Tahoma, Telegram, Vorwerk,IRoomba MQTT, Buderus Km200,
seit 08/2019 Hausautomation mit FHEM

Otto123

x_raw_payload am Player nimmt ja den topic vom player, damit geht es an ihn.
von welchem setter man die aber an den z.B. sonos/cmd/... sendet ist egal. Könnte man zum Basteln auch an der Bridge einfügen.

Mist ich stelle gerade fest, ich habe zwar den Code in der 99_sonos2mqttUtils drin, aber die Config der Bridge mit notifyall usw. wieder vergessen.

Liefere ich nach :)
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

Stefan_Hvr

Zitat von: Otto123 am 02 März 2021, 17:26:54
[...], aber die Config der Bridge mit notifyall usw. wieder vergessen.
--> auch wenn ich mich gleich wieder oute - in die Bridge? ich habe
notifyall:textField {sonos2mqtt($NAME,$EVENT)}
announcementall:textField {sonos2mqtt($NAME,$EVENT)}

in der setList der Player... ???
Viele Grüße aus Hannover
EnOcean, Zigbee, Shelly MQTT, Homebridge, Fritzbox, Harmonyhub, Alexa, Worx MQTT, Sonos MQTT, Tahoma, Telegram, Vorwerk,IRoomba MQTT, Buderus Km200,
seit 08/2019 Hausautomation mit FHEM

Otto123

Naja - das ist eher ein philosophischer Gedanke ;)
Meine Denke war: die Bridge wozu ist die gut? Im Grunde schmeißt die unnütze MQTT Nachrichten in die Tonne und teilt den Mischmasch so auf das die einzelnen Player betreiben werden können.
Deshalb: wenn sie schon mal da ist kann sie doch zentrale Funktionen übernehmen. Und notifyall hat doch nichts mit einem einzelnen Player zu tun. Braucht man auch bloß einmal?!

{sonos2mqtt_mod_list('a:model=sonos2mqtt_bridge','setList','notifyall:textField {sonos2mqtt($NAME,$EVENT)}')}
{sonos2mqtt_mod_list('a:model=sonos2mqtt_bridge','setList','announcementall:textField {sonos2mqtt($NAME,$EVENT)}')}

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

Stefan_Hvr

Funktionieren beide, werden in der Bridge erweitert und die Funktion ist danach in der Bridge gegeben. :-)
Auch schick.muss ja auch nicht in jedem Speaker stehen. genau. braucht man ja nur einmal.
Viele Grüße aus Hannover
EnOcean, Zigbee, Shelly MQTT, Homebridge, Fritzbox, Harmonyhub, Alexa, Worx MQTT, Sonos MQTT, Tahoma, Telegram, Vorwerk,IRoomba MQTT, Buderus Km200,
seit 08/2019 Hausautomation mit FHEM