Sonos Modul

Hallo zusammen,

ich habe gerade Version 2.5 als Beta bereitgestellt.
Könntet ihr mal testen und schauen ob noch alles geht?
Meine tests waren erfolgreich, aber vielleicht habt ihr ja noch was anderes…

Wenn ich positives Feedback bekomme, würde ich es gerne als „stable“ veröffentlichen.

Es sind vor allem Anassungen in Vorbereitung auf die ISP Version 7.

Danke,
Thorsten

Oder auch nicht. Wartet noch kurz mit dem Testen…

=> Update: Gefunden und behoben.

Da ich eine komplett eigene Visualisierung gebaut habe, hat bei mir erstmal gar nichts richtig funktioniert, da sich wohl die Status-Werte komplett geändert haben… :laughing:

Sowas wie einen „Transistion“ state gibt es nicht mehr? Hatte in der früheren Version den int-Wert 5

Hallo,

ja, das war ein Wunsch von Niels. Jetzt verwende ich das von IPS ausgelieferte Profil.

Weiterhin hatte er den Transition Wert entfernt. Dieser ist im IPS Profil einfach nicht vorhanden.
Wir waren uns aber nicht ganz sicher wie gut das ist.
Alternativ hatten wir darüber nachgedacht, einen negativen Wert zu setzen, dann ist keine Assoziation ausgewählt…

Gruß,
Thorsten

Die Entscheidung ist nachvollziehbar!

Fände das mit dem negativen Wert auch völlig in Ordnung. Für mich wäre es nur schade, wenn dieser Wert komplett verschwinden würde, da meine Oberfläche visuell diesen Zustand darstellt (pulsierend).

@Kugelberg
Hallo Thorsten
bekomme bei der neuesten Beta beim Versuch von Importieren Playlisten folgende Fehlermeldung:

Fatal error: Uncaught TypeError: preg_replace(): Argument #3 ($subject) must be of type array|string, SimpleXMLElement given in C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\SonosSplitter\module.php:558
Stack trace:
#0 C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\SonosSplitter\module.php(558): preg_replace(Array, Array, Object(SimpleXMLElement))
#1 C:\ProgramData\Symcon\scripts\__generated.inc.php(7879): SonosSplitter->UpdatePlaylists()
#2 C:\Windows\System32\-(62): SNS_UpdatePlaylists(21958)
#3 {main}
  thrown in C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\SonosSplitter\module.php on line 558
170
120
5
gespeicherte, importierte & Favoriten
Änderungen übernommen


bzw bei Abspielen einer Playlist:

<?php

//Abzuspielender Wiedergabeliste Spotify
$StatusWiedergabeliste = GetValue(17210);

//Sonos Bad Radio AUS
EIB_Switch(12776, false);

//Sonos BAD Radiosender setzen
SNS_SetPlaylist(21342,"$StatusWiedergabeliste");

//Sonos BAD Radiosender Play
SNS_Play(21342);

//Sonos BAD Lautstärke einstellen
SNS_SetVolume(21342, getvalue(56099));

?>

folgenden Fehler:

Fatal error: Uncaught TypeError: preg_replace(): Argument #3 ($subject) must be of type array|string, SimpleXMLElement given in C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\SonosPlayer\module.php:1988
Stack trace:
#0 C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\SonosPlayer\module.php(1988): preg_replace(Array, Array, Object(SimpleXMLElement))
#1 C:\ProgramData\Symcon\scripts\__generated.inc.php(7759): SonosPlayer->SetPlaylist('Release Radar')
#2 C:\ProgramData\Symcon\scripts\10488.ips.php(10): SNS_SetPlaylist(21342, 'Release Radar')
#3 {main}
  thrown in C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\SonosPlayer\module.php on line 1988

kannst du mir weiterhelfen?
danke
gruß Stefan

@Kugelberg, könntest du einbauen, dass man Sonos Instanzen deaktivieren kann? Ich habe aktuell eine Sonos Box nicht angeschlossen und möchte die Instanz dazu aber nicht löschen. Und ich glaube dadurch erhalte ich folgdene Fehler im Log:

31.05.2023, 07:55:44 | TimerPool            | Sonos Splitter (Sonos Update Grouping): 
Fatal error: Uncaught Exception: Error during Soap Call: Could not connect to host HTTP in /mnt/data/symcon/modules/.store/de.kugelberg.sonos/libs/sonosAccess.php:803
Stack trace:
#0 /mnt/data/symcon/modules/.store/de.kugelberg.sonos/libs/sonosAccess.php(435): SonosAccess->processSoapCall('/ZoneGroupTopol...', 'urn:schemas-upn...', 'GetZoneGroupSta...', Array)
#1 /mnt/data/symcon/modules/.store/de.kugelberg.sonos/SonosSplitter/module.php(390): SonosAccess->GetZoneGroupState()
#2 /mnt/data/symcon/scripts/__generated.inc.php(7503): SonosSplitter->updateGrouping()
#3 /-(1): SNS_updateGrouping(27318)
#4 {main}
  thrown in /mnt/data/symcon/modules/.store/de.kugelberg.sonos/libs/sonosAccess.php on line 803

Es wäre super, wenn man die Instanzen inaktiv schalten könnte.

Grüße,
Kai

1 „Gefällt mir“

Hallo,
Kurzes Update zum Discovery-Problem:

Es hat sich herausgestellt dass meine SymBox welche per Ethernet-Kabel am Router angeschlossen ist keine SSDP/UPnP-Requests ins WLAN Netz schicken kann (Sonos Gerät ist im WLAN).
Dementsprechend funktioniert es dann auch nach manuellem Anlegen nicht richtig.

Das Subnetz ist das gleiche, aber bei SSDP/UPnP macht mein Router wohl doch Unterschiede ob das Gerät drahtlos oder per Kabel verbunden ist.

Einstellen kann ich das wohl nicht, aber wenn beide auf die gleiche Art angeschlossen sind funktioniert die Kommunikation so wie sie soll. :+1:

@somm
So wie ich das sehe wurde nichts geändert was das verursachen könnte.
Der Wert der bei dir Probleme macht wird im Debug-Protokoll der entsprechenden Instanz geloggt.
Steht da etwas wenn du „Playlisten neu einlesen“ ausführst?
Direkt nach dem Eintrag BrowseContentDirectory(‚A:PLAYLISTS‘) (gelb markiert) sollte bei dir ein Eintrag UpdatePlaylists: Found PlayList kommen. Da sollte in der Spalte „Daten“ eigentlich der Name der importierten Playlist drin stehen.

Da steht bei mir eine alte Playlisten die es so nicht mehr gibt.

Hast du den Musikindex mal aktualisiert?
Das sollte die alten Importe die du wieder gelöscht hast aus Sonos entfernen.
Deine Sonos Musikbibliothek aktualisieren

das macht er bei mir Automatisch habs nochmal händisch getestet aber leider keine Änderung kommt immer wider die Fehlermeldungen

Hallo Thorsten,
ich habe meine mp3 „Waesche-fertig“ jetzt am Raspberry pi unter /home/pi/sonos/mp3/ abgelegt.

Mit dem Befehl:

SNS_PlayFiles(10793 /*[PHP_Module\Sonos\Sonos - Büro]*/, array("http://192.168.2.185:3777/home/pi/sonos/mp3/Waesche-fertig.mp3"), 20);

bekomme ich die Fehlermeldung:

Fatal error: Uncaught TypeError: Argument 1 passed to SonosPlayer::PlayFiles() must be of the type string, array given, called in /var/lib/symcon/scripts/__generated.inc.php on line 9499 and defined in /var/lib/symcon/modules/.store/de.kugelberg.sonos/SonosPlayer/module.php:1313 Stack trace: #0 /var/lib/symcon/scripts/__generated.inc.php(9499): SonosPlayer->PlayFiles(Array, 20) #1 /var/lib/symcon/scripts/19088.ips.php(3): SNS_PlayFiles(10793, Array, 20) #2 {main} thrown in /var/lib/symcon/modules/.store/de.kugelberg.sonos/SonosPlayer/module.php on line 1313

Kannst du mir bitte noch einmal genau erklären, wie ich eine mp3 lokal auf dem Raspberry pi abspeichern und abspielen kann?

Viele Grüße
Marvus

Hallo zusammen

mir wird in der Wert in der Variable Radio nach der definierten Zeit von „Update Status Frequenz“
wird gelöscht. Die Variable bleibt dann leer.

  1. Ist das so und kann ich dies irgendwie beheben.

Ich sehe das der Sender unter Details angezeigt wird.
Kann ich das irgendwie auslesen. Also nur der Sender.

Danke
Roland

Hallo,

das steht unter GitHub - tkugelberg/Sonos: Sonos PHP Module for IP-Symcon beschrieben:

Es wird kein php array, sondern ein JSON array erwartet.
wen Du also ein
json_encode(array("http://192.168.2.185:3777/home/pi/sonos/mp3/Waesche-fertig.mp3"))
übergibst, sollte es funktionieren.

Gruß,
Thorsten

EDIT:
Ich sehe gerade, dass Du die Datei im Home Verzeichtnis liegen hast, das kann nicht gehen! Darauf hat der Webserver keinen Zugriff (es sei denn Du hast einen extra so konfiguriert).

Ich habe es bei mir so gemacht, das ich die Dateien nach „/var/lib/symcon/webfront/user/sonos“ (bzw. in Unterverzeichnisse) lege, und dann über „http://symcon.fritz.box:3777/user/sonos/datei.mp3“ abspiele.

Hallo,

ich verstehe nicht ganz, wie das passieren kann.
in dem code lasse ich mir

  • alle bekannten Sonos Instanzen geben.
  • mache einen Sys_Ping() auf die IP
  • bei der ersten, bei der das funktioniert lese ich das Grouping aus.

Das Einzige was ich mir vorstellen kann ist, dass die Eingetragene IP mittleiweile neu vergeben wure, was allerdings fatal wäre. Die Sonos Boxen sollten eine fixe IP bekommen.

Gruß,
Thorsten

Ich prüfe das heute Abend mal, danke für den Tipp.

Grüße,
Kai

@Kugelberg hast du zufällig auch für mich einen Lösungsansatz :blush:
Danke

Hallo,

Du meist wegen der Playlisten? Nein.

Ich zeige nur das, was Sonos mir zurückliefert. Und wenn es da eine Playliste zurückschickt, ist da auch eine.
Ich denke mal, Du sprichst von der Bravi Hits 94…
Irgendwo in Deiner Musikbibliothek scheint es da die m3u Dataei aus dem Debugging log zu geben.

Ich würde mal auf OS Ebene danach suchen.
Bei den von mir bevorzugten Betriebssystemen gibt es das „find“ Kommando…

Gruß,
Thorsten

Die bravohits Liste gibt es nicht mehr er aktualisiert nichts mehr und wirft mir Fehlermeldungen aus.