Sonos2mqtt - vielleicht hat jemand Lust mitzumachen

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

Vorheriges Thema - Nächstes Thema

Otto123

Irgendwie bist Du durcheinander
Maschine 1 - dort startest Du sonos2mqtt mit dem parameter --mqtt der exakte Syntax steht in der Originaldoku, Link ist im Wiki im ersten Satz.
Alle Angaben in diesem Parameter sind die vom MQTT Server! IP Adresse, Port Wenn vorhanden Zugangskonto...
Wenn Du pm2 nimmst musst Du nach sonos2mqtt die Parameter mit -- "einleiten" und dann die Parameter mit zwei Strichen eintragen. Sind in Summe vier (sonst würde es doch nicht dastehen  :o)
Wenn Du nodejs direkt startest geht es glaub über die config.json.
Bei Docker über die Environment Variable.

Maschine 2 - hier hast Du KEIN sonos2mqtt, hier hast Du FHEM mit MQTT2 Server und in diesem FHEM werden Deine Player konfiguriert. Hier definierst Du ausschließlich die Bridge - alles andere passiert automatisch wenn ein Player startet.

Wenn Du das hinbekommen hast - sag mir bitte was man im Wiki anders schreiben muss, damit das einfach und klar 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

Otto123

@Kai Damit bekommt man RelTime -ist es das was Du suchst?
{
  "command": "adv-command",
  "input": {
    "cmd": "AVTransportService.GetPositionInfo",
    "val": {
      "InstanceID": 0
    },
"reply": "Reply"
  }
}
https://svrooij.io/node-sonos-ts/sonos-device/services/av-transport-service.html#getpositioninfo
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

87insane

#932
Zitat von: Otto123 am 14 März 2021, 23:09:52
@Kai Damit bekommt man RelTime -ist es das was Du suchst?
{
  "command": "adv-command",
  "input": {
    "cmd": "AVTransportService.GetPositionInfo",
    "val": {
      "InstanceID": 0
    },
"reply": "Reply"
  }


}
https://svrooij.io/node-sonos-ts/sonos-device/services/av-transport-service.html#getpositioninfo

Guten Morgen!

Die ganzen erweiterten Befehle.. Na klar :) Ja genau. Muss ich mal sehen wie das sinnig einbaubar ist. Hattest du ggf generell daran gedacht, mehr davon rein zu holen oder ist der Player soweit fertig für Dich?

Gruß


EDIT:
Es landet auf jedenfall direkt ein neuer ReadingList Eintrag: sonos/RINCON_5CAAFD79D52801400/Reply:.* { json2nameValue($EVENT) }
Auch das Reading erscheint. Allerdings müsste man nun trotz Eintrag immer manuell abholen. Also immer mit zb: set DEVICE BEFEHLNAME:noArg sonos/RINCON_5CAAFD79D52801400/control {"command": "adv-command","input": {"cmd": "AVTransportService.GetPositionInfo","val": {"InstanceID": 0},"reply": "Reply"}}.

Hast du für solche Fälle ein Vorgehen? Wenn nein, wäre ich hier ja noch komplett frei. Hätte gedacht das zb alle X Sekunden, bei Status PLAYING dieses Reading mit aktuell gehalten wird.

Otto123

Moin,

keine Ahnung - für meine Begriffe ist es vom Inhalt her gut. Ich will die Abstimmung zwischen Template und sonos2mqttUtils noch rund machen.
Alles ein bisschen modular und dokumentiert - damit man auch mal ein halbes Jahr loslassen kann :)
Das kann dann auch jeder selbst modifizieren und erweitern, man kann sicher auch immer mal wieder eine Funktion einbauen.

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

87insane

Ja! Ich bin ab Punkt x auch nicht mehr mitgekommen. Hab dann immer nur zusammen gesucht. (Dein Blog ist aber immer wieder gut;))

Ich würde (wie immer) eine notify freie Lösung haben wollen. Aktuell denke ich aber ich muss mit .sleepxxxxx oder einem notify Konstrukt arbeiten.
Bedingungen wäre ja hier (in meinen Augen ausreichend):
- WENN Status = PLAYING
  - Bei Track-Wechsel abfragen
  - Ab dann alle 5? Sekunden

Lese die Doku aber auch nochmal etwas tiefer. Ggf. kann man das automatische senden dieser Inhalte ja aktivieren. 

Otto123

 automatische senden dieser Inhalte ja aktivieren.

Es gibt da noch den Punkt der Events die man abonnieren kann ... Keine Ahnung ob man das auch darüber bekommt. Da braucht man das Polling nicht. Aber bis auf Ideen und Erinnerung vom Lesen der Doku würde ich mich da erstmal raushalten ;)

Hab dann immer nur zusammen gesucht.
Ich habe versucht alles aktuell im Wiki zu halten. Normal sollte ein Neuankömmling über das Wiki und die eingebauten automatischen Setups zum Ziel kommen. Die erste Seite hier und auch mein Artikel im Blog weisen eigentlich auch genau auf diesen Weg. Hier im Thread zusammen suchen macht kaum Sinn.
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

87insane

#936
ZitatIch habe versucht alles aktuell im Wiki zu halten. Normal sollte ein Neuankömmling über das Wiki und die eingebauten automatischen Setups zum Ziel kommen. Die erste Seite hier und auch mein Artikel im Blog weisen eigentlich auch genau auf diesen Weg. Hier im Thread zusammen suchen macht kaum Sinn.
Naja ich hatte im Ursprung ja auch mit geholfen. Da hat mich natürlich nicht nur die Essens interessiert. Oft wollte ich einfach wissen, welche Wege es gab und welche es geworden sind usw. Passt aber soweit alles.

Abo auf Events...Okay... der Punkt ist seitens FHEM oder aber Modul? (In FHEM ist er ja als ABO eingetragen nur kommt eben nichts (nur manuell). sonos/RINCON_5CAAFD79D52801400/Reply:.* { json2nameValue($EVENT) })
Lesen tu ich eh schon... Testen und Ideen sammeln.

Danke!

Otto123

Nein ich meine die Events seitens Modul
https://svrooij.io/node-sonos-ts/sonos-device/events.html
Das hier "reagiert" ja nur auf die Anforderung - z.B. wenn ich Favoriten Listen auslese.
sonos/RINCON_5CAAFD79D52801400/Reply:.* { json2nameValue($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

87insane

Wie baust du dir aus den Beispielen die entsprechende JSON? Habe jetzt einiges probiert aber bekomme es nicht hin. Von der Theorie hätte ich gedacht, kann ich einfach den Befehl übernehmen.
{"command": "adv-command","input": {"cmd": "sonosDevice.Events.on","val": "AVTransportService.GetPositionInfo","reply": "Reply"}}
Geht natürlich nicht.

Die Idee ist natürlich schonmal super. Man könnte es variabel halten und am ende auch Abo´s je nach Bedarf setzen.

Otto123

Das ist immer ganz viel Ratespiel. Stephans Json Beispiele auf der Webseite gehen meist genau so wie sie sind im x_raw_payload

Das gestern aus #913 war auch irgendwie ne Kombination aus dem ContentDirectoryService.BrowseParsed und dem was an Werten in der Tabelle steht. Wo dann ,"reply" steht war mir völlig unklar - ging aber dann irgendwie.

Events abonnieren - keine Ahnung, da muss ja noch was anderes passieren.
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

Ich habe mal einen neuen Stand der sonos2mqttUtils eingecheckt.
Funktion im Prinzip wie hier beschrieben https://forum.fhem.de/index.php/topic,111711.msg1139045.html#msg1139045
Kann man sich wie immer so aktuell holen, oder wird beim template aktuell geholt. Das Template selbst ist nicht verändert.
{ Svn_GetFile("contrib/AttrTemplate/99_sonos2mqttUtils.pm", "FHEM/99_sonos2mqttUtils.pm", sub(){ CommandReload(undef, "99_sonos2mqttUtils") }) }
Im Wiki habe ich auch noch ein bisschen ergänzt (auch zu Spartacus seinen Fragen)
Den speak Befehl habe ich auch mit gehosteter tts-polly getestet.

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

87insane

Das mit Reply verstehe ich noch...
Send a command that you expect to return data and specify the `reply` option.

Topic: `sonos/uuid_of_speaker/control`
Payload:

```json
{
  "command": "adv-command",
  "input": {
    "cmd": "RenderingControlService.GetVolume",
    "val": {
      "InstanceID": 0,
      "Channel": "Master"
    },
    "reply": "GetVolumeResponse"
  }
}
```

You will then get a message at `sonos/uuid_of_speaker/{reply}` like `sonos/uuid_of_speaker/GetVolumeResponse`.

```json
{ "CurrentVolume": 40 }
```


Finde die Doku zu Events aber nicht verständlich. Ich habe nichtmal einen Ansatz. :-\

Otto123

Naja war auch nur so eine Idee beim Stöbern.
genaugenommen ist das ja auch nicht sonos2mqtt sondern die wohl die dem zu Grunde liegende node-sonos-ts Library
Vielleicht geht das auch gar nicht? Oder nur über andere Wege?
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

87insane

#943
Hatte gesehen das es die LIB ist.. Scheint aber irgendwie ja auch drin zu sein.

(https://svrooij.io/sonos-api-docs/services/av-transport.html#events)
Hier sieht man ganz gut was sendet und was nicht. Was aber auch ein wenig angepasst zu sein scheint vom Ursprung her.

Um das ganze mal zu testen und den State zu erfahren, hätte sowas (in meinen Augen) funktionieren müssen:
{"command": "adv-command","input": {"cmd": "SonosEventListener.GetStatus","val": {"InstanceID": 0},"reply": "TestReply"}} - Passiert aber nichts.

Wie testest du das am besten um ggf. Syntax Fehler schnell zu finden?
Ich glaube nun einfach mal das Event Handling ist drin. Wenn dem so ist, muss ich ja nur noch "bescheid geben" -> Bitte Abo auf xyz.

Phiolin

#944
Ich hab hier ein kleines Problem mit joinGroup/leaveGroup.
Die Kommandos an sich funktionieren, aber die resultierenden Readings stimmen in manchen Fällen nicht.
Habe ich 2 gruppierte Player (Arbeitszimmer, Schlafzimmer) und führe ein

set Schlafzimmer leaveGroup

aus, würde ich erwarten das das Schlafzimmer Device danach ein isMaster 1 und inGroup 0 Reading hat.
Manchmal bleibt inGroup aber auf 1 und isMaster wird auch nicht auf 0 gesetzt, obwohl der Player in keiner Gruppe mehr ist.
Dabei scheint jede mögliche Kombination auftreten zu können. Habe zum Beispiel auch einen Player, der inGroup 1 und isMaster 1 hat, aber das einzige Device in seiner "Gruppe" ist - demnach sollte es eigentlich gar keine Gruppe sein.
Ein anderer Player hat inGroup 1 und isMaster 0, ist aber das einzige Device in seiner "Gruppe" und demnach müsste er auf jeden Fall ein Master sein.

Das "alte" Sonos Modul, das parallel auch noch läuft, hat die Readings korrekt. Dort sind die Player die eigentlich in keiner Gruppe mehr sind korrekt mit isMaster 1 ausgewiesen. Ist also vermutlich nur irgendwas in der Modullogik?

Kann ich eigentlich die Player mit "rename" umbenennen, oder führt das zu Problemen?