Nein nichts geändert - steht wie die gleichzeitig gekaufte andere IKEA Box alone, ohne Stereo etc.
Habe vom Strom genommen, neu angeschlossen, Musik gespielt… keine Änderung der Fehler
Hallo,
letztes Jahr hatte hier schon mal jemand ein ähnliches Problem: Sonos Modul - #1650 von Kugelberg
mit diesem Script (IP anpassen nicht vergessen!) bekommst Du eine Liste all Deiner Boxen:
<?
if(file_exists('../modules/SymconSonos/Sonos/sonosAccess.php')){
include_once '../modules/SymconSonos/Sonos/sonosAccess.php';
}elseif(file_exists('../modules/Sonos/libs/sonosAccess.php')){
include_once '../modules/Sonos/libs/sonosAccess.php';
}elseif(file_exists('../modules/.store/de.kugelberg.sonos/libs/sonosAccess.php')){
include_once '../modules/.store/de.kugelberg.sonos/libs/sonosAccess.php';
}else{
die('sonosAccess.php not found');
}
// enter your IP here
$ip = '192.168.1.10';
//
$sonos = new SonosAccess($ip);
$grouping = new SimpleXMLElement($sonos->GetZoneGroupState());
$zoneGroups = $grouping->ZoneGroups->ZoneGroup;
foreach ($zoneGroups as $zoneGroup) {
foreach ($zoneGroup->ZoneGroupMember as $zoneGroupMember) {
if (isset($zoneGroupMember->attributes()['Invisible'])) {
$invisible = true;
}else{
$invisible = false;
}
if (preg_match('/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/', (string) $zoneGroupMember->attributes()['Location'], $ip_match)) {
if (Sys_ping($ip_match[0], 1000)) {
$xml = @file_get_contents((string) $zoneGroupMember->attributes()['Location']);
if ($xml) {
$description = new SimpleXMLElement($xml);
$SonosDevices[(string) $zoneGroupMember->attributes()['UUID']] = [
'Name' => strval($zoneGroupMember->attributes()['ZoneName']),
'Model' => strval($description->device->displayName),
'RINCON' => strval($zoneGroupMember->attributes()['UUID']),
'IPAddress' => $ip_match[0],
'Invivble' => $invisible
];
}
}
}
}
}
var_dump($SonosDevices);
Kannst Du bitte mal schauen, ob die Box mit dem Fehler als „Invisible“ markiert ist?
Gerne kannst Du mir auch den Output zuschicken.
Dann würde ich den Fehler erwarten…
Gruß,
Thorsten
Hallo,
also:
- SetAVTransportURI spricht dafü, dass gerade eine Quelle eingestellt werden soll.
- x-sonos-vli sieht irgendwie nach Spotify aus, was aus der Spotify App an die Box geschickt wurde.
Hier meine Vermutung, was passiert:
Auf der Box ist noch hinterlegt, dass zuletzt Soptify abgespielt wurde. Aber die wiedergabe ist (evtl. schon länger) pausiert.
Jetzt wird mittels PlayFiles (oder so) einwas abgespielt und danach versucht die letzte Wiedergabe wieder einzustellen.
Und das geht nicht, weil es Spotify ist.
Andere Entwickler scheinen aber das Gleiche Problem zu haben
Liege ich richtig?
Gruß,
Thorsten
Nein invisible ist false.
siehe unten
was auffällig ist der Unterschied Sonos Discovery (trotz aktualisieren) und dem Ergebis vom Script:
Habe nun die IP Nummern im Discovery manuell angepasst und gespeichert. Bei mir waren die Boxen nicht mit fixer IP hinterlegt im DHCP server. Der hatte ein Update mit Neustart - das wird es gewesen sein. Habe jetzt beide Boxen als fix eingetragen.
Seither keine neuen Fehler! Danke - das Script hat den Fehler aufgedeckt.
Allerdings sollte der Discovermode die IP Nummern richtigstellen - oder?
array(3) {
[„RINCON_000E58B693B801400“]=>
array(5) {
[„Name“]=>
string(10) „Wohnzimmer“
[„Model“]=>
string(7) „Playbar“
[„RINCON“]=>
string(24) „RINCON_000E58B693B801400“
[„IPAddress“]=>
string(12) „192.168.2.75“
[„Invivble“]=>
bool(false)
}
[„RINCON_347E5C325F0201400“]=>
array(5) {
[„Name“]=>
string(3) „Bad“
[„Model“]=>
string(9) „Bookshelf“
[„RINCON“]=>
string(24) „RINCON_347E5C325F0201400“
[„IPAddress“]=>
string(13) „192.168.2.141“
[„Invivble“]=>
bool(false)
}
[„RINCON_347E5C30146601400“]=>
array(5) {
[„Name“]=>
string(15) „Schlafzimmer EG“
[„Model“]=>
string(9) „Bookshelf“
[„RINCON“]=>
string(24) „RINCON_347E5C30146601400“
[„IPAddress“]=>
string(13) „192.168.2.143“
[„Invivble“]=>
bool(false)
}
}
Hi Thorsten,
danke für deine Rückmeldung. Deine Theorie könnte etwas damit zu tun haben, aber wir steuern Sonos nicht per Spotify App. Wir hören hier meistens Radio über Tunein (per SNS_SetRadio) und gelegentlich Spotify per Sonos App und manchmal über Alexa getriggert. Das Rückspringen auf die letzte Wiedergabe funktioniert hier bei Ansage über PlayFiles problemlos.
Ich glaube, es tritt auf, wenn ich morgens eine Szene aktiviere, die per Ansage über Sonos quittiert wird und anschließend der Radio-Stream starten soll. Ich denke, er will dann nach der Ansage erstmal wieder zurückspringen, obwohl der alte Transport ja schon lange inaktiv ist bzw. pausiert/gestoppt ist (beides probiert) und dabei bricht er mit dem Fehler ab.
Ich versuche mal, die URI abends zu leeren.
Grüße
Sven
Hallo Thorsten,
ich kann den Fehler hier absolut bestätigen:
Sobald ich über die SpotifyApp auf die Sonos Lautsprecher streame und dann mit SNS_PlayFiles einen Klingelton ausgebe, kommt es zu dem oben genannten Fehler, wie von dir vermutet.
Auch wenn man die Wiedergabe nicht wieder starten kann, weil das API das möglicherweise nicht hergibt: Könntest du in deinem Modul den Fehler abfangen, damit eigene Skripte sauber durchlaufen?
Die werfen einen Fehler, wenn Spotify gestartet ist und man SNS_PlayFiles benutzt. Ich habe schon die @SNS_PlayFiles() Syntax benutzt, aber das Skript bricht an der Stelle ab, nachfolgende Befehle werden nicht mehr ausgeführt.
Gruß,
Georg
Hallo Zusammen,
ich stell mich bissle doof an - wie kann ich denn eine Gruppe erstellen von Lautsprechern?
SNS_SetGroup(int $InstanceID, int $groupCoordinator)
Fügt die Instanz zu einer Gruppe hinzu oder entfernt es aus einer Gruppe.
Wenn die InstanzID eines Gruppenkoordinators mitgegeben wird, wird die instanz dieser Gruppe hinzugefügt.
Wenn 0 mitgegeben wird, wird die Instanz aus allen Gruppen entfernt.
Ich bekomm das net hin - ich mach was falsch!?! Ich will einfach Box 1 und Box 2 und Box 3 in einer gruppe und eine davon soll auch der Coordinator sein…
der Befehl ist schon richtig.
einfach die Instanz-ID der entsprechenden Boxen eintragen.
Sonst poste mal deinen Versuch, damit man dir besser helfen kann.
Gruß, Peter
Hallo,
Ich will einfach Box 1 und Box 2 und Box 3 in einer gruppe und eine davon soll auch der Coordinator sein
Du hast 3 Boxen:
Box1: Object ID 12345
Box2: Object ID 23456
Box3: Object ID 34567
Beispiele:
Box1 aus allen Gruppen nehmen (-> somit ist Box1 quasi eine eigene Gruppe mit sich selbst als Koordinator):
SNS_SetGroup(12345, 0);
Box3 dem Koordinator Box1 zuordnen:
SNS_SetGroup(34567, 12345);
Das sollte reichen, oder?
Gruß,
Thorsten
Hallo Thorsten,
ich bekomme bei einer Durchsage immer mal wieder folgende Fehlermeldung. Die Durchsage wird auch in diesem Fall nicht ausgegeben:
16.03.2022, 08:40:02 | FlowHandler | Kann Daten nicht zur Instanz #25147 weiterleiten:
Fatal error: Uncaught Exception: Error during Soap Call: UPnPError s:Client 402 (UNKNOWN) in C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\libs\sonosAccess.php:801
Stack trace:
#0 C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\libs\sonosAccess.php(558): SonosAccess->processSoapCall('/MediaRenderer/...', 'urn:schemas-upn...', 'SetAVTransportU...', Array)
#1 C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\SonosPlayer\module.php(604): SonosAccess->SetAVTransportURI('x-sonos-vli:RIN...', '<DIDL-Lite xmln...')
#2 C:\Windows\System32\-(3): SonosPlayer->ReceiveData('{"DataID":"{36E...')
#3 {main}
thrown in C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\libs\sonosAccess.php on line 801
Ich habe das etwas beobachtet, die Box scheint, wenn der Fehler entsteht, erreichbar zu sein.
Der Aufruf erfolgt so:
SNS_PlayFilesGrouping(24536 , json_encode( array( 25147 => array( "volume" => 55),
11982 => array( "volume" => 35) ) ), json_encode(Array( "http://192.168.100.3/durchsage/ansage.mp3") ), 55);
Hast Du da eine Idee?
LG Tom
Hallo,
Hast Du da eine Idee?
ja.
Das „x-sonos-vli“ ist verräterisch.
Schau Dir mal meine Antwort an crandler vom 31.1. an (Sonos Modul - #1746 von crandler).
Es scheint sich um eine Wiedergabe zu handelt, die von der Spotify App aus gestartet wurde.
Solche kann ich nicht resumen.
Wenn ich Zeit finde baue ich ein, dass dann einfach nichts gestartet wird. Ob das besser ist habe ich keine Ahnung, aber dann gibt es zumindest keine Exception…
Gruß,
Thorsten
Es scheint sich um eine Wiedergabe zu handelt, die von der Spotify App aus gestartet wurde.
Das kann durchaus sein. Muss ich beobachten. Das würde jedoch erklären, warum die Wiedergabe mal geht und mal nicht.
Wenn ich Zeit finde baue ich ein, dass dann einfach nichts gestartet wird.
Das wäre dann leider nur Kosmetik. Lässt sich da nichts machen um den Fehler zu umgehen?
LG Tom
Hi Thorsten,
das klappt irgendwie nicht…
Unser Code:
//SNS_BecomeCoordinator(54958);
SNS_SetGroup(54958, 0);
SNS_SetGroup(27631, 54958);
SNS_SetGroup(11386, 54958);
SNS_SetGroup(19634, 54958);
Die Fehlermeldung dazu:
Fatal error: Uncaught Exception: Error during Soap Call: UPnPError s:Client 501 (UNKNOWN) in C:\ProgramData\Symcon\modules.store\de.kugelberg.sonos\libs\sonosAccess.php:801
Stack trace:
#0 C:\ProgramData\Symcon\modules.store\de.kugelberg.sonos\libs\sonosAccess.php(558): SonosAccess->processSoapCall(’/MediaRenderer/…’, ‚urn:schemas-upn…‘, ‚SetAVTransportU…‘, Array)
#1 C:\ProgramData\Symcon\modules.store\de.kugelberg.sonos\SonosPlayer\module.php(1854): SonosAccess->SetAVTransportURI(‚x-rincon:RINCON…‘)
#2 C:\ProgramData\Symcon\scripts__generated.inc.php(1407): SonosPlayer->SetGroup(54958)
#3 C:\ProgramData\Symcon\scripts\53063.ips.php(6): SNS_SetGroup(27631, 54958)
#4 {main}
thrown in C:\ProgramData\Symcon\modules.store\de.kugelberg.sonos\libs\sonosAccess.php on line 801
Hast Du eine Idee dazu?
LG Marcus.
SNS_SetGroup(12345, 0);
das führt bei mir auch zum Fehler.
Gruß, Peter
das führt bei mir auch zum Fehler.
zu welchem denn? Ich hoffe Du hast nicht „12345“ als Object ID verwendet.
Hallo,
Hast Du eine Idee dazu?
Also, der Fehler kommt bei SNS_SetGroup(27631, 54958)
.
Kann es sein, dass diese Box gerade ein Koordinator einer anderen Gruppe ist?
Gruß,
Thorsten
Hi Thorsten,
ja das kann gut sein dass sie gerade einer anderen Gruppe als Koordinator zugeiwesen ist. Deshalb hatte ich auch mal testweise die Zeile BecomeCoordinator (siehe oben) vorne ran gestellt, um sicherzu gehen dass es nicht daran liegt. Aber die Fehlermeldung bleibt die selbe.
Hallo Thorsten,
habe natürlich nicht die „12345“ genommen
Fehlermeldung ist
Fatal error: Uncaught Exception: Error during Soap Call: UPnPError s:Client 501 (UNKNOWN) in C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\libs\sonosAccess.php:801
Stack trace:
#0 C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\libs\sonosAccess.php(558): SonosAccess->processSoapCall('/MediaRenderer/...', 'urn:schemas-upn...', 'SetAVTransportU...', Array)
#1 C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\SonosPlayer\module.php(1854): SonosAccess->SetAVTransportURI('x-rincon:RINCON...')
#2 C:\ProgramData\Symcon\scripts\__generated.inc.php(523): SonosPlayer->SetGroup(38920)
#3 C:\ProgramData\Symcon\scripts\38043.ips.php(31): SNS_SetGroup(38260, 38920)
#4 {main}
thrown in C:\ProgramData\Symcon\modules\.store\de.kugelberg.sonos\libs\sonosAccess.php on line 801
Meine Gruppierungs-Sequenz ist:
case 1: // Party-Modus = alle Lautsprecher an
SNS_SetGroup($group_id, 0); // gibt Fehler
SNS_SetGroup($buero_id,$group_id);
SNS_SetGroup($kueche_id,$group_id);
SNS_SetGroup($sz_id,$group_id);
SNS_SetGroup($bad_id,$group_id);
SNS_SetGroup($gabi_id,$group_id);
SNS_SetGroup($wk_id,$group_id);
SNS_SetDefaultGroupVolume($group_id);
// SONOS starten
SNS_Play($group_id);
break;
Den ersten Befehl SNS_SetGroup($group_id, 0);
habe ich erst neu hinzugefügt.
Gruß, Peter
Hallo,
Deshalb hatte ich auch mal testweise die Zeile BecomeCoordinator (siehe oben) vorne ran gestellt, um sicherzu gehen dass es nicht daran liegt.
diese Funktion macht die angegebene Instanz zum Koordinator der Gruppe in der die Box gerade ist.
Wenn aber 11386 in der Gruppe von 27631 ist, hilft ein SNS_BecomeCoordinator(54958); nicht.
Wenn Du sichergehen willst, dass keine Box in einer Gruppe ist könntest Du folgendes für alle Player machen:
Wenn SNS_IsCoordinator() false liefert, ein SNS_SetGroup(, 0) ausführen.
Danach solltest Du keine Player in Gruppen haben.
Gruß,
Thorsten