Sonos2mqtt - vielleicht hat jemand Lust mitzumachen

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

Vorheriges Thema - Nächstes Thema

87insane

Oh da hast du was gefunden was er selber noch auf dem Schirm hatte. Geil. Immer wenn ich beta-user was zeigen kann in der Hinsicht freue ich mich :-P passiert nur leider selten. :-P

Meine Sachen hat er noch nicht aufgenommen. Denke das kommt morgen oder so.

Ich nutze selber kein HA aber das müssen die Kollegen doch gemerkt haben?

Gesendet von meinem LM-G810 mit Tapatalk

svrooij

Hi guys,

Sorry for my english, my german isn't perfect (in reading/writing), I would be able to understand you guys if we would be talking.
Im the author of the sonos2mqtt bridge and I got a mail from Kai the other day that you guys want some bugs fixed.

The latest beta https://www.npmjs.com/package/sonos2mqtt/v/3.0.6-beta.3 solves the issue with the falsy mute readings and the switchtotv not working.

To get the speaker to say stuff you'll need an extra "server". the server will generate the correct mp3 on demand and then play it like a regular notification.
This is described here https://svrooij.github.io/node-sonos-ts/sonos-device/notifications-and-tts.html#text-to-speech

Technical stuff:
I'm also the developer of node-sonos-ts which is used by sonos2mqtt. Next to the commands implemented in sonos2mqtt you can also execute the commands that are available on the device library. Example: if you want to change the led state of a player https://svrooij.github.io/node-sonos-ts/sonos-device/services/devicepropertiesservice.html#setledstate
You can send the following message to sonos/RINCON_xxxx/control

This command is in the DevicePropertiesService and is called SetLEDState


{
  "command": "adv-command",
  "input": {
    "cmd": "DevicePropertiesService.SetLEDState",
    "val": {
      "DesiredLEDState": "On"
    }
  }
}


Since my german isn't very good, I would appreciate if you create an issue like https://github.com/svrooij/sonos2mqtt/issues/97 if you found a bug.
You can also create a feature request there, but for new features (or changes to current features) i'm not able to implement them straight away (since this is only build is my spare time).
Hardcore software developer. See https://github.com/svrooij/

TomLee

#122
ZitatThis issue has been resolved in version 3.0.6-beta.3

Danke, funzt.


defmod MQTT2_RINCON_000E58F7F67C01400 MQTT2_DEVICE RINCON_000E58F7F67C01400
attr MQTT2_RINCON_000E58F7F67C01400 IODev MQTT2_Server
attr MQTT2_RINCON_000E58F7F67C01400 icon audio_volume_low
attr MQTT2_RINCON_000E58F7F67C01400 jsonMap volume_Master:volume mute_Master:mute
attr MQTT2_RINCON_000E58F7F67C01400 model sonos2mqtt_speaker
attr MQTT2_RINCON_000E58F7F67C01400 readingList sonos/RINCON_000E58F7F67C01400:.* { json2nameValue($EVENT,'',$JSONMAP) }
attr MQTT2_RINCON_000E58F7F67C01400 room MQTT2_DEVICE
attr MQTT2_RINCON_000E58F7F67C01400 setList stop:noArg sonos/RINCON_000E58F7F67C01400/control { "command": "stop" }\
  play:noArg sonos/RINCON_000E58F7F67C01400/control { "command": "play" }\
  pause:noArg sonos/RINCON_000E58F7F67C01400/control { "command": "pause" }\
  volume:slider,0,1,100 sonos/RINCON_000E58F7F67C01400/control { "command": "volume", "input": $EVTPART1 }\
  mute:on,off { my $value = $EVTPART1 eq "on" ? "mute" : "unmute";;;; qq(sonos/RINCON_000E58F7F67C01400/control { "command": "$value" } ) }\
  next:noArg sonos/RINCON_000E58F7F67C01400/control { "command": "next" }\
  previous:noArg sonos/RINCON_000E58F7F67C01400/control { "command": "previous" }\
nachricht:textField sonos/RINCON_000E58F7F67C01400/control { "command":"notify","input":{"trackUri":"$EVTPART2","onlyWhenPlaying":false,"timeout":10,"volume":$EVTPART1,"delayMs":700}}

setstate MQTT2_RINCON_000E58F7F67C01400 mute
setstate MQTT2_RINCON_000E58F7F67C01400 2020-06-04 21:32:18 coordinatorUuid RINCON_000E58F7F67C01400
setstate MQTT2_RINCON_000E58F7F67C01400 2020-06-04 21:32:18 currentTrack_Album Reggae Gold 1997
setstate MQTT2_RINCON_000E58F7F67C01400 2020-06-04 21:32:18 currentTrack_AlbumArtUri http://192.168.188.38:1400/getaa?u=x-file-cifs:%2f%2f192.168.188.26%2fOwnMusic%2fTony%20Rebel%2fIf%20Jah.mp3&v=81
setstate MQTT2_RINCON_000E58F7F67C01400 2020-06-04 21:32:18 currentTrack_Artist Tony Rebel
setstate MQTT2_RINCON_000E58F7F67C01400 2020-06-04 21:32:18 currentTrack_Duration 0:03:48
setstate MQTT2_RINCON_000E58F7F67C01400 2020-06-04 21:32:18 currentTrack_ItemId -1
setstate MQTT2_RINCON_000E58F7F67C01400 2020-06-04 21:32:18 currentTrack_ParentId -1
setstate MQTT2_RINCON_000E58F7F67C01400 2020-06-04 21:32:18 currentTrack_ProtocolInfo x-file-cifs:*:audio/mpeg:*
setstate MQTT2_RINCON_000E58F7F67C01400 2020-06-04 21:32:18 currentTrack_Title If Jah
setstate MQTT2_RINCON_000E58F7F67C01400 2020-06-04 21:32:18 currentTrack_TrackUri x-file-cifs://192.168.188.26/OwnMusic/Tony Rebel/If Jah.mp3
setstate MQTT2_RINCON_000E58F7F67C01400 2020-06-04 21:32:18 currentTrack_UpnpClass object.item.audioItem.musicTrack
setstate MQTT2_RINCON_000E58F7F67C01400 2020-06-04 21:32:18 enqueuedMetadata_Album Reggae Gold 1997
setstate MQTT2_RINCON_000E58F7F67C01400 2020-06-04 21:32:18 enqueuedMetadata_AlbumArtUri http://192.168.188.38:1400/getaa?u=x-file-cifs:%2f%2f192.168.188.26%2fOwnMusic%2fTony%20Rebel%2fIf%20Jah.mp3&v=81
setstate MQTT2_RINCON_000E58F7F67C01400 2020-06-04 21:32:18 enqueuedMetadata_Artist Tony Rebel
setstate MQTT2_RINCON_000E58F7F67C01400 2020-06-04 21:32:18 enqueuedMetadata_ItemId S://192.168.188.26/OwnMusic/Tony%20Rebel/If%20Jah.mp3
setstate MQTT2_RINCON_000E58F7F67C01400 2020-06-04 21:32:18 enqueuedMetadata_ParentId A:TRACKS
setstate MQTT2_RINCON_000E58F7F67C01400 2020-06-04 21:32:18 enqueuedMetadata_Title If Jah
setstate MQTT2_RINCON_000E58F7F67C01400 2020-06-04 21:32:18 enqueuedMetadata_UpnpClass object.item.audioItem.musicTrack
setstate MQTT2_RINCON_000E58F7F67C01400 2020-06-04 21:32:18 groupName Wohnzimmer
setstate MQTT2_RINCON_000E58F7F67C01400 2020-06-04 21:32:18 mute true
setstate MQTT2_RINCON_000E58F7F67C01400 2020-06-04 21:32:18 mute_LF false
setstate MQTT2_RINCON_000E58F7F67C01400 2020-06-04 21:32:18 mute_RF false
setstate MQTT2_RINCON_000E58F7F67C01400 2020-06-04 21:32:18 name Wohnzimmer
setstate MQTT2_RINCON_000E58F7F67C01400 2020-06-04 21:32:18 nextTrack_Album Batbox
setstate MQTT2_RINCON_000E58F7F67C01400 2020-06-04 21:32:18 nextTrack_AlbumArtUri http://192.168.188.38:1400/getaa?s=1&u=x-sonos-http:library%2ftracks%2f4fc25e3c-cb5c-4bb0-8dd7-382a7c8931c6%2f.mp3%3fsid%3d201%26flags%3d0%26sn%3d5
setstate MQTT2_RINCON_000E58F7F67C01400 2020-06-04 21:32:18 nextTrack_Artist Miss Kittin
setstate MQTT2_RINCON_000E58F7F67C01400 2020-06-04 21:32:18 nextTrack_Duration 0:03:20
setstate MQTT2_RINCON_000E58F7F67C01400 2020-06-04 21:32:18 nextTrack_ItemId -1
setstate MQTT2_RINCON_000E58F7F67C01400 2020-06-04 21:32:18 nextTrack_ParentId -1
setstate MQTT2_RINCON_000E58F7F67C01400 2020-06-04 21:32:18 nextTrack_ProtocolInfo sonos.com-http:*:audio/mpeg:*
setstate MQTT2_RINCON_000E58F7F67C01400 2020-06-04 21:32:18 nextTrack_Title BatBox
setstate MQTT2_RINCON_000E58F7F67C01400 2020-06-04 21:32:18 nextTrack_TrackUri x-sonos-http:library/tracks/4fc25e3c-cb5c-4bb0-8dd7-382a7c8931c6/.mp3?sid=201&flags=0&sn=5
setstate MQTT2_RINCON_000E58F7F67C01400 2020-06-04 21:32:18 nextTrack_UpnpClass object.item.audioItem.musicTrack
setstate MQTT2_RINCON_000E58F7F67C01400 2020-06-04 21:32:18 playmode NORMAL
setstate MQTT2_RINCON_000E58F7F67C01400 2020-06-04 21:29:27 state mute
setstate MQTT2_RINCON_000E58F7F67C01400 2020-06-04 21:32:18 transportState PLAYING
setstate MQTT2_RINCON_000E58F7F67C01400 2020-06-04 21:32:18 ts 1591299137908
setstate MQTT2_RINCON_000E58F7F67C01400 2020-06-04 21:32:18 uuid RINCON_000E58F7F67C01400
setstate MQTT2_RINCON_000E58F7F67C01400 2020-06-04 21:29:15 volume 10
setstate MQTT2_RINCON_000E58F7F67C01400 2020-06-04 21:29:15 volume_LF 100
setstate MQTT2_RINCON_000E58F7F67C01400 2020-06-04 21:29:15 volume_RF 100



87insane

Zitatstraight away
we all do it as a hobby. I think it's absolutely okay if it's not done right now. Thanks for your quick support! Greetings, Kai

Otto123

Wir sind in 4 Tagen ganz schön weit gekommen :)

Mal als Zwischenstufe (kommt mal noch an einen besseren Platz) eine Kurzanleitung.
Aktuelles FHEM als Voraussetzung!

Auf Systemebene:
setup nodejs
sudo npm install -g sonos2mqtt@3.0.6-beta.3
In FHEM: (Wenn schon ein MQTT2 Instanz vorhanden entsprechen modifizieren)
define mqtt2s MQTT2_SERVER 1883 global
attr mqtt2s room MQTT2_IO

define SonosBridge MQTT2_DEVICE
attr SonosBridge IODev mqtt2s
attr SonosBridge room MQTT2_DEVICE
set SonosBridge attrTemplate sonos2mqtt_bridge
"pm2 start sonos2mqtt"
sleep 8;set MQTT2_RINCON_.* attrTemplate sonos2mqtt_speaker

define n_pm2 notify global:INITIALIZED "pm2 start sonos2mqtt"


Vielleicht ist es schräg den "pm2 start sonos2mqtt" aus FHEM heraus zu machen - aber es funktioniert :)

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

binford6000

Hi Zusammen,
ich habe gerade mal versucht, https://www.npmjs.com/package/sonos2mqtt#run-in-docker zum Laufen zu bringen - hat auch fast auf Anhieb geklappt!  :D
Lediglich das .env File musste etwas an den MQTT2-Server mit basic Auth angepasst werden...

Danach Autocreate on (am MQTT2-Server ist es immer an) und los gehts: Sofort wurden alle Player plus die Bridge angelegt.
attrTemplate gesetzt und zack - alle Player lassen sich steuern!  :)

Da ich das Problem mit den verschwundenen Playern - trotz mehrfachen stromlos machen bei Abwesenheit - nicht habe, werde ich hier nur
rein informativ mitlesen. Falls aber irgendwas in Richtung Docker getestet werden soll kann ich gerne einspringen  ;)

VG Sebastian

Beta-User

So first @svrooij:

Welcome to our forum here!
Thanks for supporting us, too!

One question wrt. to the "LED state" thing you mentioned in your post. There the command "On" is used. Would also be "on" ok as part of the payload (or "off")?
Some background: In FHEM, state of switchable items historically have been written as "on" and "off", so having that type of payload (in sending or receiving) makes it much easier to switch things using timers ("on-till 23:30") and visualize state. So beeing able to send lowercase would be a nice thing beside the suggestions Kai most likely forwarded from one of my previous post (e.g. LWT). Best option wrt. to FHEM would be options to configure the payloads for on/off and other boolean values in sonos2mqtt (we use this option e.g. also when handling Tasmota flashed devices).

Feel free to ask back in case there's sth. to be discussed or unclear. (Or would you prefer german posts to english?)

@Otto:
Was die Anleitung angeht: Warum so viel manuell? Meine bisherige Erfahrung ist eher die, dass die User aus der Spur kommen, sobald mal eine Rückfrage seitens attrTemplate nach sinnhaftem Input kommt... Da ist autocreate+sinnvolles Auflösen der par-Anweisungen (für den Ersteller der Anleitung) stressfreier, und binford6000 hat das ja eben nochmal bestätigt. Bitte auch noch das Deaktivieren der "autodiscovery" aufnehmenaufnehmen (bzw. ignoreRegexp, wenn du schon eine eigene Server-Instanz dafür aufmachst) ::) .
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

87insane

@Beta-User hatte bei mute mal getestet false oder true zu senden, das ging auch. Es scheint also false/off usw bei einigen Befehlen zu klappen. Bin gespannt was er sagt.

Gesendet von meinem LM-G810 mit Tapatalk


Beta-User

Zitat von: 87insane am 05 Juni 2020, 09:34:44
@Beta-User hatte bei mute mal getestet false oder true zu senden, das ging auch. Es scheint also false/off usw bei einigen Befehlen zu klappen.
Thx, dann wird es wohl so sein, dass die Transformation (in Senderichtung) bei allen derartigen Befehlen klappt. Super wäre halt, wenn man es empfangsseitig auch gleich als "on" bzw. "off" bekäme, sonst müssen wir halt ein "clearing" davorsetzen, was immer das Risiko birgt, dass was schief geht, sind ja doch teils längere strings, die da kommen (in dem "true"-Thread war der JSON recht einfach gestrickt, so dass das egal war).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

87insane

Ja - stimmt.

Gesendet von meinem LM-G810 mit Tapatalk


Otto123

#130
SetLEDState tested: On ON Off OFF is working / on off unfortunately not.
But it's advanced mode! All cmd's should go directly - the UPNP Receiver is only responsable.

@Beta-User Wieso viel manuell? Die Server Definition ist für den der noch keinen hat (kann ja vorkommen)
Das Bridge Device kann man entweder anlegen lassen, ich würde es immer anlegen ;)

Und gerade der Rest ist doch vollautomatisch!? :-[

Meine Idee ist: Gar nichts manuell machen, alle Geräte automatisch konfigurieren wenn sie kommen (und löschen wenn sie gehen) Aber davor müssen noch andere Sachen gehen. Wenn man sich die UPNP Umgebung anschaut, da stehen alle Infos wunderbar drin, die muss man doch in FHEM nutzbar machen können!? Radio Listen, Favoriten usw.
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

Also automatisch löschen finde ich nicht so gut. So wie es jetzt passiert...also autocreate > Bridge Template oder speaker wählen, wunderbar. Die templates sollen ja Inspiration sein und kein Zwang. Der eine brauch alle Befehle, der nächste nur 4 und der wieder nächste will nur das Album Cover ansehen..... Schwer das für alle....

Gesendet von meinem LM-G810 mit Tapatalk


Otto123

sudo npm install -g sonos2mqtt@3.0.6-beta.4

Und switchtotv funktioniert!  :D
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

Beta-User

Zitat von: Otto123 am 05 Juni 2020, 09:52:45
SetLEDState tested: On ON Off OFF is working / on off unfortunately not.
But it's advanced mode!
Schade, but really: advanced mode...

Zitat@Beta-User Wieso viel manuell? Die Server Definition ist für den der noch keinen hat (kann ja vorkommen)
Das Bridge Device kann man entweder anlegen lassen, ich würde es immer anlegen ;)
Und gerade der Rest ist doch vollautomatisch!? :-[
Nun ja, der Reihe nach: Wenn man keinen Server hat, muß man einen definieren, stimmt. Die Frage wäre aber gleich: global? Oder lieber dann einen Hinweis auf "allowed"...?
Wir können das gerne diskutieren, ich _glaube_ aber, dass es für die User am einfachsten ist, sich "immer" an den "Praxisbeispielen" orientieren zu können (da (bzw. beim Server-Wiki?) fehlt allowed noch); also würde ich das mit dem Server gar nicht zum Teil der Anleitung machen, sondern voraussetzen, dass man einen hat (oder eben Client+General-Bridge).

Und wieso man das (sonos-) Bridge-Device manuell anlegen müßte oder sollte, erschließt sich mir nicht. Ist doch bei allen anderen unserer "Bridges" genauso (zigbee2mqtt, milight-hub, OpenMQTTGateway). Die erste Nachricht, die kommt, wird nur über die CID identifiziert, alles landet in dem Gerät. Hinterher ist es "kaputt", was aber nichts macht...
Und ja, der Rest geht dann so oder so vollautomatisch.

Zitat
Meine Idee ist: Gar nichts manuell machen, alle Geräte automatisch konfigurieren wenn sie kommen (und löschen wenn sie gehen) Aber davor müssen noch andere Sachen gehen. Wenn man sich die UPNP Umgebung anschaut, da stehen alle Infos wunderbar drin, die muss man doch in FHEM nutzbar machen können!? Radio Listen, Favoriten usw.
Das klingt in der Theorie ganz gut, mal schauen, wie weit du das vorantreiben kannst. Sehr skeptisch bin ich aber beim Löschen (und eigentlich auch beim automatischen Anwenden von attrTemplate). Viele wollen ihre Geräte trotz aller Hilfsmittel doch irgendwie "selber im Griff" haben, und ich wäre z.B. nicht einverstanden, wenn mir irgendwas (!) etwas aus der config löscht. Ist m.E. ein no-go.
Automatisches Neukonfigurieren hat uU. auch so seine Tücken, wenn unterschiedliche firmwares etc. dazukommen.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Otto123

Beim Server gebe ich Dir völlig Recht. Die Bridge gleich erstmal anlegen ist für mich definierter, da muss ich auch nicht beschreiben: Suche in deinen 100 Geräten das gerade neu angelegte Bridge Device und dann klicke klacke :) - aber da akzeptiere ich jede Vorliebe :)

Viele User wollen einfach eine C&P Vorlage ohne Nachdenken - was ich immer problematisch finde - ohne viel gelaber. ::)

Die UPNP Umgebung ist von Grunde her so ausgelegt "automatisch" zu sein. Kommen und gehen... Ich denke da muss man "replizierte" Konfigurationen auch wieder löschen, aber muss man natürlich nicht.
Ich habe das beim Sonos gelernt: define Sonos SONOS legt alles an, delete Sonos löscht alles wieder. Aber beim Neuanlegen fehlen dann meine attribute, deswegen habe ich ein notify welches darauf reagiert und mein Sonos fertig konfiguriert und ich nicht erst in meine Notizen schauen muss :)
Also ich würde mein Framework teilen und niemanden zwingen es so zu tun :)
Die kurze Anleitung von gestern sollte vor allem auch meinen leicht geänderten Stand von der Installation und Konfiguration von nodejs dokumentieren und zur Diskussion stellen.

Und vielleicht ist ja jetzt ein Stand erreicht wo mal noch einer mehr testen will.

Final(schön) ist es glaube ich noch lange nicht ;)
Aber ich bin jetzt mindestens soweit, dass ich meine bisherigen Automatismen umsetzen 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