Sonos2mqtt - vielleicht hat jemand Lust mitzumachen

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

Vorheriges Thema - Nächstes Thema

Guybrush

bei mir funktioniert das auch nicht, dass die musik weiter spielt, wenn eine sprachdurchsage gemacht wird. ich hab mir da insoweit geholfen, dass ich in meiner Funktion, welche die Sprachdurchsage generiert, eine Abfrage eingebaut habe.

my $currentTransportState = ReadingsVal('Sonos.FlurEG', 'transportState', '');
my $currentTrackUri = ReadingsVal('Sonos.FlurEG', 'currentTrack_TrackUri', '');

...

if ($currentTransportState eq 'PLAYING' && $currentTrackUri =~ /^x-sonosapi-stream:.*/) {
  fhem('defmod Tmp.Sonos.FlurEG.playFav AT +00:00:05 set Sonos.FlurEG playFav '.ReadingsVal('Sonos.FlurEG', 'playFav', ''));

dazu noch das setList im Sonos Device ergänzt um

fhem("setreading $NAME playFav $EVTPART1")
damit geht es nun.

Treibhaus

Hallo Guybrush,

Danke, ich habe es kurz probiert .. überhaupt rauszufinden wo ich es implementiere.

Dann habe ich meine Version nochmal getestet. Dabei ist mir aufgefallen, das die Musik wieder startet wenn Sie voeher nicht läuft.

Somit habe ich einen Versuch gestartet 'die Musik zuvor zu stoppen'. Siehe da: Es funktioniert. Die Laufzeit ist nur lang .. (könnte kürzer sein)

Als DoIf:  ([EnergieAnsage2] ist ein Dummybutton)

([EnergieAnsage2] eq "on")(set alias=Küche stop)({fhem ("set alias=Küche speak 40 Die Batterie ist bei".ReadingsVal('MQTT2_127.0.0.1','batterysoc', 0)."%")})(set EnergieAnsage2 off)(set alias=Küche play)
Das funktioniert mit "playUri" streaming !!  Ich kann im Moment hier keine "playFav" testen.

Gruß Jörg
Signatur:
Raspberry 5 & NVMe + HM-Module für 3 Etagen (inkl  Garage/Garten) 
+BSC EnOcean TCM310 -Fensterkontakt,-Bewegungsmelder
+ 1-wired Temp-Sensoren + RHASSPY-Spracherkennung

Ralli

Gruß,
Ralli

Proxmox 9 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.4 dev, virtualisierte RaspberryMatic (3.83.6.20250824) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.4.1) und HMW-GW, FRITZBOX 7490 (07.59), FBDECT, Siri und Alexa

Otto123

#1473
Zitat von: Treibhaus am 31 Mai 2025, 21:04:36- Wie kann oder könnte man den Bass oder auch Loudness steuern ?
Zu Deiner zweiten Frage: über x_raw_payload kann man alles machen ;)
Und ich habe seinerzeit noch eine Hilfsroutine dafür gebaut: https://forum.fhem.de/index.php?topic=111711.msg1150534#msg1150534
Da habe ich aber wohl nie weiter gebaut bzw. die Beschreibung nicht erweitert  :-X
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

Treibhaus

#1474
Hallo Otto,

habe ich versucht und teils hinbekommen.


in der fhem - commandozeile:   set alias=Küche x_raw_payload {(sonos2mqtt_command('SetBass','DesiredBass',-1))}    funktioniert es


in setList
bass:slider,-10,1,10 x_raw_payload {sonos2mqtt_command('SetBass','DesiredBass',$EVENT)}   funktioniert nicht.


Signatur:
Raspberry 5 & NVMe + HM-Module für 3 Etagen (inkl  Garage/Garten) 
+BSC EnOcean TCM310 -Fensterkontakt,-Bewegungsmelder
+ 1-wired Temp-Sensoren + RHASSPY-Spracherkennung

Treibhaus

#1475
Hallo Otto,

habe ich versucht und teils hinbekommen.


in der fhem - commandozeile:   set alias=Küche x_raw_payload {(sonos2mqtt_command('SetBass','DesiredBass',-1))}    funktioniert es


in setList
bass:slider,-10,1,10 x_raw_payload {sonos2mqtt_command('SetBass','DesiredBass',$EVENT)}   funktioniert nicht.
Hier kommt dann im log (logischer weise) 22:42:28 5: MQTT2_Client_MOSQI: sending PUBLISH 0F(0)(13)x_raw_payload{(sonos2mqtt_command('SetBass','DesiredBass',bass -1))}
Wobei "bass -1 "   besser  "-1" heissen sollte . 

Gruß Jörg
Signatur:
Raspberry 5 & NVMe + HM-Module für 3 Etagen (inkl  Garage/Garten) 
+BSC EnOcean TCM310 -Fensterkontakt,-Bewegungsmelder
+ 1-wired Temp-Sensoren + RHASSPY-Spracherkennung

Otto123

#1476
Hallo Jörg,

meine Hilfsroutinen erzeugen lediglich die benötigten Textzeilen. Die kann man auch einfach so mit den passenden Parametern aufrufen um das Ergebnis zu kontrollieren.

In der setList kommt ein publish Kommando zum Einsatz: sonos/NameDesPlayers/control Kommando
Das kann man mit der Hilfsroutine erzeugen {sonos2mqtt($NAME,$EVENT)}

In $EVENT stünde im Fall "bass:slider,-10,1,10" dann "bass -1", d.h. wir dürfen nur den zweiten Teil an die zweite Hilfsroutine übergeben (FHEM splittet den Event - siehe help notify ).
Da wir hier innerhalb Perl sind, fallen die ganzen Klammern um den Aufruf weg und das Ergebnis wird mit dem String "x_raw_payload " verkettet.
{sonos2mqtt($NAME, "x_raw_payload ".sonos2mqtt_command('SetBass','DesiredBass',$EVTPART1) )}Die gesamte setList Zeile sieht dann so aus.
bass:slider,-10,1,10 {sonos2mqtt($NAME, "x_raw_payload ".sonos2mqtt_command('SetBass','DesiredBass',$EVTPART1) )}
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

Treibhaus

Hallo Otto,

meine Bassregler funktionieren.   ;)  ;)  Ich bin  begeistert.
Vielen Dank.


Nun versuche ich mich an einer neuen Herausfoderung oder bin auf etwas gestossen was nicht funktioniert.
Ein Webradio "https://www.mallorca1.com/radio/"  das als Icecast-Stream (ohne Endung) sendet http://streaming.mallorcahit.fm/live
bekomme ich auf der Sonos per   set alias=SonosZpAnbau playUri  http://streaming.mallorcahit.fm/live oder  set RINCON_000E583xyzB801400 playUri  http://streaming.mallorcahit.fm/live nicht zur Wiedergabe.   
Der Player startet - allerdings mit dem alten vorherigen funktionierenden Stream.
Dieser hat eine Endung :  https://stream.zeno.fm/bv0vhzlckdzvv.mp3 

Eine Lösung finde ich nicht.  Vielleicht hat jemand eine Idee ?
Bin um jeden Rat dankbar !
Gruß Jörg

Signatur:
Raspberry 5 & NVMe + HM-Module für 3 Etagen (inkl  Garage/Garten) 
+BSC EnOcean TCM310 -Fensterkontakt,-Bewegungsmelder
+ 1-wired Temp-Sensoren + RHASSPY-Spracherkennung

binford6000

Probier mal
set alias=SonosZpAnbau playUri x-rincon-mp3radio://streaming.mallorcahit.fm/live

Treibhaus

Hallo,

gibt es eine Lösung das die Player bei neuer IP-Vergabe (durch Dhcp) auch wieder in FHEM funktionieren.
Staische IP habe ich jetzt für einige noch nicht festgelegt (auch bedingt durch unterschiedliche Einbindung (mal WIFI mal ETH))
Und alles löschen und neu generieren lassen möchte ich auch nicht unbedingt.

Gruß Jörg
Signatur:
Raspberry 5 & NVMe + HM-Module für 3 Etagen (inkl  Garage/Garten) 
+BSC EnOcean TCM310 -Fensterkontakt,-Bewegungsmelder
+ 1-wired Temp-Sensoren + RHASSPY-Spracherkennung

JudgeDredd

ist zwar schon länger her, das ich das sonos2mqtt produktiv genommen habe,
aber ich kann mich nicht erinnern, wozu man die SONOS IP benötigen sollte.
Der SONOS meldet sich doch via Broadcast-Discovery beim Node/pm2 Modul.
Router: Eigenbau (pfSense)
FHEM: Proxmox (DELL R720) | Debian 12 (VM)

Treibhaus

Hi
das waere ja wie ich mir das wünschen würde. Leider funktioniert das nicht bei mir. Ich vermute allerdings eh das es nicht unbedingt zu 100%ig bei mir funktioniert
Wie kann ich das den Prüfen.. die communication per node/pm?
Signatur:
Raspberry 5 & NVMe + HM-Module für 3 Etagen (inkl  Garage/Garten) 
+BSC EnOcean TCM310 -Fensterkontakt,-Bewegungsmelder
+ 1-wired Temp-Sensoren + RHASSPY-Spracherkennung

Ralli

Du kannst dem sonos2mqtt helfen, indem du eine IP eines einzigen SONOS-Device mitgibst. Wenn du diesem keine statische IP zuweisen kannst/willst, dann kannst du den DHCP-Server aber konfigurieren, dass diesem einen SONOS-Device immer die gleiche IP zugewiesen wird.

https://sonos2mqtt.svrooij.io/getting-started.html
Gruß,
Ralli

Proxmox 9 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.4 dev, virtualisierte RaspberryMatic (3.83.6.20250824) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.4.1) und HMW-GW, FRITZBOX 7490 (07.59), FBDECT, Siri und Alexa

JudgeDredd

Zitat von: Treibhaus am 06 September 2025, 14:05:28Ich vermute allerdings eh das es nicht unbedingt zu 100%ig bei mir funktioniert
Könnte man das evtl. noch etwas spezifizieren ?
Dein erster Post suggeriert ja, das es funktioniert und nur bei IP Wechsel die Probleme auftreten.

Kommen denn am MQTT überhaupt topics an ?
Router: Eigenbau (pfSense)
FHEM: Proxmox (DELL R720) | Debian 12 (VM)

Treibhaus

Zitat von: Ralli am 06 September 2025, 14:13:50Du kannst dem sonos2mqtt helfen, indem du eine IP eines einzigen SONOS-Device mitgibst. Wenn du diesem keine statische IP zuweisen kannst/willst, dann kannst du den DHCP-Server aber konfigurieren, dass diesem einen SONOS-Device immer die gleiche IP zugewiesen wird.

https://sonos2mqtt.svrooij.io/getting-started.html

Hi Ralli,
das habe ich gemacht.
ZitatDu kannst dem sonos2mqtt helfen, indem du eine IP eines einzigen SONOS-Device mitgibst
Sowohl fuer die SONOS1 als auch SONOS2.(Es kann jetzt allerdings sein, das bei den SONOS1-Geräten (genau die sind gerade das Problem) die IP nicht stimmt.
Somit auch die zugewiese IP nicht. 
Ich habe sonos2mqtt per docker laufen. Für ein Rasp4 habe ich kein empx  gefunden. Somit habe ich mosquitte im docker. Ich glaube das war von dir .. =>
ZitatOptional MQTT server (I like emqx over mosquitto)

Am Ende werde ich den Geräten eine feste IP zuweisen. Entweder über das SONSO Devive selber oder über den DCPP-Server .

Aktuell wöre dann wohl die Lösung, die IP der SONOS1-Geräte zu suchen, bzw. eine der IPs und diese manuell in der Docker-Datei zu ändern und das Docker-Image neu zu starten ?
Signatur:
Raspberry 5 & NVMe + HM-Module für 3 Etagen (inkl  Garage/Garten) 
+BSC EnOcean TCM310 -Fensterkontakt,-Bewegungsmelder
+ 1-wired Temp-Sensoren + RHASSPY-Spracherkennung