Sonos2mqtt - vielleicht hat jemand Lust mitzumachen

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

Vorheriges Thema - Nächstes Thema

Stefan_Hvr

Du nimmst irgendeinen PLAYER, der in keiner Gruppe ist und fügst ihn zum Bad dazu.
Ist Bad in dem Moment Master oder Member?  oder Stand alone?

bei mir geht
set alias=Kueche joinGroup Bad oder set PLAYERNAME joinGroup Bad nicht

if($cmd eq 'joinGroup') {return qq(sonos/$uuid/control { "command": "joingroup",  "input": "$payload"})} - so steht es in der 99_sonos2mqttUtils.pm falls Dir das weiterhilft
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

#871
Es ist eigentlich egal
Alle sind für sich.
Ich mache
set alias=Bad joinGroup Arbeitszimmer
set alias=Kueche joinGroup Bad

Anschließend sind drei Player in der Gruppe Arbeitszimmer

Edit: Das Problem ist sicher: durch einen mir nicht klaren Fehler wird bei einem Player das joinGroup setList nicht richtig gesetzt - mit dem funktioniert es nicht.
Wenn Du da mal schaust und es einfach so setzt wie bei den anderen sollte alles gehen.
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

Einer meiner Player ist im Raum "Steffis Reich", dadurch ein Leerzeichen in der setlist
joinGroup:Bad,Esszimmer,Gäste-WC,Küche,Lina,Schlafzimmer,Steffis Reich,Wohnzimmer {sonos2mqtt($NAME,$EVENT)} dann geht's nicht mehr. Lösche ich den Raum aus der Setlist ist alles OK
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, es gibt da also noch ein paar Dinge zu machen ;)
Die Sache mit der Klappliste dachte ich ist vielleicht ein Gimmick, aber jetzt habe ich Stunden nach einem Fehler gesucht den die Routine bei mir wirft (ich bin am glauben: da ist an einer ganz anderen Stelle was faul) und habe erstmal keine Lust mehr.  :'(

Kommt Zeit ... bis dahin geht's auch ohne :) ich konzentrier mich erstmal auf das Setup Sprachausgabe und die Auswahl TTS.
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

#874
Steffis Reich heisst jetzt in Sonos schon Steffis-Reich. ;-) Der Weg des geringsten Widerstands :-) - damit ist alles gut.

Noch ein Hinweis zum sayText bzw. speak - das hier funktioniert bei mir nach dem Fhem-Wiki. Danke!
Hast Du schon ne Idee wie man Durchsagen an mehrere Gruppen senden kann?
Ich hatte im Sonos-Modul immer dies, damit wurde in jeder Gruppe die Ansage (asynchron) gestartet.
set TYPE=SONOSPLAYER:FILTER=IsMaster=1 -->

So klappt's aber nicht. - Hat ganz merkwürdige Ergebnisse an den Tag gebracht.
set isMaster=1 sayText Hallo Du <Text>
set isMaster=1 speak <Lautstärke> <Text>


set SonosTTS tts <TEXT>; sleep SonosTTS:playing:.0 ; set isMaster=1 notify 25 [SonosTTS:httpName]
aus dem Wiki klappt für mich aber als Workaround.

Letzte Frage:
ich würde gern den Sleep Timer im Sonos setzen.
kannst Du mir nen Tipp geben, wie ich das publishen kann. habe damit keinen Erfolg:
set MQTT2_FHEM_Server publish sonos/RINCON_5CAAFD99F2A201400/control {  "command": "sleep",  "input": 30}

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

#875
Hab noch nie einen sleep-Timer genutzt und einfach mal ausprobiert.

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}

Ein paar Sekunden vor Ende des Timer wird die Lautstärke immer kleiner.(edit: das Reading volume ändert sich aber nicht)

Ein Reading dazu gibts nicht/wurde nicht angelegt, den MQTT-Verkehr hab ich mir nicht angeschaut.

Gruß

Thomas


Otto123

Für so Experimente haben wir ja x_raw_payload  eingebaut, da kann man mal das einwerfen was in der Doku steht ;)
Für solche globalen Dinge (Durchsage an Alle) gibt es noch diese Info https://svrooij.io/sonos2mqtt/global-commands.html
Ich habe es noch nicht probiert.

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

Stefan, Du hattest nach dem Unterschied speak und sayText gefragt, ich habe gestern etwas wesentliches vergessen:
sayText beherrscht mehrere Ausgaben in kurzer Folge, also wenn von unterschiedlichen Ecken Ansagen in kurzer Folge abgeschickt werden, entsteht kein Sprachsalat sondern alles wird schön aneinandergereiht und als Block ausgegeben.
Beispiel als Block zum testen in der Raw Def absetzen
set alias=Kueche speak 20 Hallo Willi
set alias=Kueche speak 20 wie geht es heute
set alias=Kueche speak 20 war das Abendessen gut?

set alias=Kueche sayText Hallo Willi
set alias=Kueche sayText wie geht es heute
set alias=Kueche sayText war das Abendessen gut?
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 28 Februar 2021, 22:56:27
Stefan, Du hattest nach dem Unterschied speak und sayText gefragt, ich habe gestern etwas wesentliches vergessen:
sayText beherrscht mehrere Ausgaben in kurzer Folge, also wenn von unterschiedlichen Ecken Ansagen in kurzer Folge abgeschickt
[...]
Super --- sehr gutes Beispiel
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

Stefan_Hvr

Zitat von: TomLee am 28 Februar 2021, 19:18:29
Hab noch nie einen sleep-Timer genutzt und einfach mal ausprobiert.
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}
Ein paar Sekunden vor Ende des Timer wird die Lautstärke immer kleiner.(edit: das Reading volume ändert sich aber nicht)
Ein Reading dazu gibts nicht/wurde nicht angelegt, den MQTT-Verkehr hab ich mir nicht angeschaut.

Gruß
Thomas

hab die setList erweitert::

sleep:15,30,45,60,120 {sonos2mqtt($NAME,$EVENT)}

und die 99_sonos2mqttUtils.pm
if($cmd eq 'sleep') {return qq(sonos/$uuid/control {"command":"sleep","input":$payload}) }
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

Und ?

Klappt oder nicht ?




Die Alternative zur statischen Angabe:

Zitatsleep:15,30,45,60,120 {sonos2mqtt($NAME,$EVENT)}

selectnumbers:

sleep:selectnumbers,0,15,120,0,lin

Stefan_Hvr

Zitat von: TomLee am 01 März 2021, 00:18:06
Und ?
Klappt oder nicht ?
Danke für den Hinweis
Jau haut hin, wenn die Speaker nicht gruppiert sind. Ich denke es muss immer an den Master gehen, wenn ich das richtig sehe.
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

Stefan_Hvr

#882
Zitat von: Otto123 am 28 Februar 2021, 20:45:35
Für so Experimente haben wir ja x_raw_payload  eingebaut, da kann man mal das einwerfen was in der Doku steht ;)
Für solche globalen Dinge (Durchsage an Alle) gibt es noch diese Info https://svrooij.io/sonos2mqtt/global-commands.html
Ich habe es noch nicht probiert.

Ich habe das Folgende in der setList ergänzt:
notifyall:textField {sonos2mqtt($NAME,$EVENT)}
announcementall:textField {sonos2mqtt($NAME,$EVENT)}


dazu die 99_sonos2mqttUtils.pm ergänzt um:
if($cmd eq 'announcementall') { ($cmd,$text) = split(' ', $EVENT,2)}
if($cmd eq 'notifyall') {return qq(sonos/cmd/notify {"trackUri":"$arr[2]","onlyWhenPlaying":false,"timeout":100,"volume":$arr[1],"delayMs":700})}
if($cmd eq 'announcementall') {fhem("setreading $tts text ".ReadingsVal($tts,'text',' ').' '.$text.";sleep 0.4 tts;set $tts tts [$tts:text];sleep $tts:playing:.0 ;set $NAME notifyall [$tts:vol] [$tts:httpName];deletereading $tts text")}


mit announcementall kann ich jetzt die Durchsage/notify an alle Speaker geben
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

Für die Tester:
Als Zwischenschritt zum Testen habe ich ne neue Version eingecheckt:

  • tts von Stefan: Ich habe das zwar noch nicht im Wiki - aber jetzt in der Utils https://forum.fhem.de/index.php/topic,111711.msg1134006.html#msg1134006
    Wenn der speak Befehl so aussieht: "speak de-DE Vicki 25 Test" - also mit der Sprache in Form "ab-CD" beginnt, wird der Befehl wie im Beitrag von Patrick abgesetzt.
  • sleep bei den Playern eingefügt, die setList wird bei Neuanlage des Players mit eingefügt
  • notifyall,announcementall für die Bridge eingefügt, die setList muss noch manuell eingefügt werden (siehe Beitrag eins zurück)
  • den Code ein klein wenig aufgeräumt - ich weiß da ist noch Luft nach Oben.
  • mein Template muss man nicht erneut anwenden, man kann einfach die (oder einen ) Player löschen und den neu anlegen lassen (Stop/Play in der App reicht)

{ Svn_GetFile("contrib/AttrTemplate/99_sonos2mqttUtils.pm", "FHEM/99_sonos2mqttUtils.pm", sub(){ CommandReload(undef, "99_sonos2mqttUtils") }) }

Die Klapplisten für Favoriten und Gruppen kann derzeit so in der FHEM Kommandozeile erfolgen:
{sonosmqtt('SonosBridge','setjoinGroup')}
{sonosmqtt('SonosBridge','setplayFav')}
ein Aufruf über die setList der Bridge wirft bei mir einen unklaren Fehler.

Das Setup für die SonosTTS wird wohl besser weiterhin manuell erfolgen.

Jetzt muss ich mal noch die offiziellen Templates, das Wiki und den ersten Beitrag anpassen.

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

kjmEjfu

Zitat von: Otto123 am 01 März 2021, 12:36:25
Das Setup für die SonosTTS wird wohl besser weiterhin manuell erfolgen.

Den Punkt verstehe ich nicht.
Migriere derzeit zu Home Assistant