Sonos Modul

Hay, habs mal probiert! Ohne „C:“ erhalte ich folgende Meldung:
Mp3

Wenn ich die Datei direkt anklicke, wird diese aber auf dem Rechner ausgegeben?

Alfred

Hallo,

ich habe mal eine neue Version im Beta bereitgestellt.

Ist beides enthalten.
Es gibt jetzt eine Variable „Track“, die automatisch gefüllt wird. Allerdings steht da z.B: bei einem Stream dann eine 1 drin…
Mit SNS_SetTrack(>ObjectID<, >Track<) kann man jetzt zu einem Track springen.

Hierfür gibt es jetzt die Funktion SNS_GetMembers( >ObjectID< );, die ein JSON Array mit allen Membern zurückliefert.

Wenn ihr mir Rückmeldung gebt, dass es gefällt, packe ich es in die Stable.

Gruß,
Thorsten

Hallo,

Du musst einen Link haben, auf den die Sonos Boxen zugreifen können. Und die machen eigentlich nix anderes, als der Browser.

Du hast unter Deinem Installationsverzeichnis von Symcon ein Verzeichnis „webfront“.

Bei mir habe ich darunter die Verzeichnisstruktur „webfront/user/sonos/temperatur“ angelegt.
In diesem Verzeichnis liegen ganz viele MP3 Dateien.
Die kann ich mit

SNS_PlayFiles(34403, "[\"http://nas.fritz.box:3777/user/sonos/temperatur/".GetValuefloat(23851).".mp3\"]","+5");

abspielen.
=> mach Dich doch mal auf die Suche nach dem webfront Verzeichnis bei Dir, lege da eine Datei ab und versuch es nochmal.

Gruß,
Thorsten

Habs jetzt mehrmals versucht, komme aber zu keiner Ausgabe…

Was hast du denn genau ausprobiert?

Der Vorschlag von Torsten war ja, eine Datei zum Test ins Webfront/User Verzeichnis zu legen und die in der Sonos App abzuspielen.

Wenn das klappt, dann geht es auch über SNS_PlayFiles.

Hallo zusammen,

@Kugelberg die Funktion klappt super danke :slight_smile:

Ich versuche aktuell über einen Taster einen Player aus einer Gruppe zu nehmen, hierzu habe ich mir 2 Funktionen angelegt:

function isCoordinator($devices)
{
    foreach ($devices as $value)

    {
        $Coordinator = SNS_IsCoordinator($value);
                if ($Coordinator == true)
        {
            $test = $value;
            //IPS_LogMessage("SONOS-Control", "Es wurde eine aktive Sonos Gruppe gefunden, Koordinator der Gruppe ist " .IPS_GetName($activeGroup));
            return $test;
            break;
        }
}
}



function leaveGroup($devices, $player)


{

    $Coordinator = isCoordinator($devices);
    $members = SNS_GetMembers($Coordinator);
    $list = json_decode($members, true);
    $newCoordinator = $list[0];
    SNS_DelegateGroupCoordinationTo($Coordinator, $newCoordinator, 0);
}

Das klappt soweit ganz gut, allerdings wenn nur noch 2 Player in der Gruppe sind bekomme ich folgenden Fehler im Skript:

Fatal error:  Uncaught TypeError: asort() expects parameter 1 to be array, null given in /var/lib/symcon/modules/.store/de.kugelberg.sonos/SonosPlayer/module.php:1136
Stack trace:
#0 /var/lib/symcon/modules/.store/de.kugelberg.sonos/SonosPlayer/module.php(1136): asort(NULL)
#1 /var/lib/symcon/scripts/__generated.inc.php(3247): SonosPlayer-&gt;DelegateGroupCoordinationTo(28721, false)
#2 /var/lib/symcon/scripts/29064.ips.php(84): SNS_DelegateGroupCoordinationTo(15723, 28721, 0)
#3 /var/lib/symcon/scripts/29064.ips.php(14): leaveGroup(Array, 15723)
#4 {main}
  thrown in /var/lib/symcon/modules/.store/de.kugelberg.sonos/SonosPlayer/module.php on line 1136

Weiß jemand wo mein Fehler liegt, oder hat Verbesserungsvorschläge zu den Funktionen?

Grüße,

Hallo,

jupp, definitiv ein Fehler bei mir.
Wenn man ein Array sortiert, sollte man auch dafür sorgen, dass es da ist…

Habe ihn grade behoben und im Beta gepublished.
=> Mach mal ein Update, dann sollte er weg sein.

Gruß,
Thorsten

Hallo Thorsten,

jetzt ohne Fehler, wunderbar :slight_smile:

Aber wenn ich jetzt nicht ganz neben der Spur bin, folgendes Problem mit SNS_isCoordinator: wenn ich diese Funktion auf einen Coordinator anwende kommt eine 1 zurück, wenn nicht kommt nichts zurück, eigentlich sollte hier doch True oder False als Ausgabe kommen ?

Hallo,

sehe ich auch so:

    public function IsCoordinator(): bool
    {
        $this->SendDebug('"' . __FUNCTION__ . '" called', '', 0);
        return $this->ReadAttributeBoolean('Coordinator');
    }

Oder verstehe ich etwas falsch?

Gruß,
Thorsten

Du verwendest vermutlich Echo für deinen Test.
Nimm stattdessen besser var_dump().

1 „Gefällt mir“

Hallo Burkhard,

Richtig ich habe Echo verwendet, werde das bei der nächsten Möglichkeit mit var_dump() versuchen.

Gruß,

Hallo!

Ich habe mir nun noch den MOVE für die Terrasse angeschafft.
In der aktuellen Version wird jedoch vom Modul nicht der MOVE erkannt.
Ich würde mich sehr über eine Aktualisierung freuen :slight_smile:
Prima wäre auch der Akkustand noch, wenn der auslesbar ist.

Hallo,

Skandal!

In der Tat habe ich auch schon seit längerem eine Move im Einsatz. Bei dieser habe ich aber das Modell einfach überschrieben… :smirk:

Nun ist es sauber eingebaut, inkl. Batterie und Stromquelle.
Im Beta schon vorhanden, Stable ist eingereicht.

Gruß,
Thorsten

Hey Thorsten,

ausprobiert und funktioniert. Besten Dank :slight_smile:

Grüße
Steffen

Und genehmigt…

Ich habe demnächst einen Kollegen wo ich Sonos in Symcon einbinden wollte aber der hat wohl etwas über 20 Boxen. Was bedeutet das denn genau mit dem Bug, kann man die garnicht einbinden oder nur 20 und dann geht nix. Oder kann man es händisch machen damit es geht ?

Oder wäre es nur möglich 2 Symcon Systeme aufzusetzen und damit mehr als 20 Geräte zu bedienen.
Gruß Daniel G

Hallo,

scheinbar hängt dies nicht nur von den Playern, sondern auch von den Gruppen ab.
Die Funktion „GetZoneGroupState“ wirft einen Fehler, wenn zu viel „was auch immer“ vorhanden sind.

Hier hat das mal jemand untersucht.

Wenn die Player nicht in Gruppen sind, tritt der Fehler bei ca. 20 Playern auf.
Wenn er aber 28 Player in Betrieb hatte, diese aber in 3 Große Gruppen packt, tritt der Fehler nicht auf.

Leider ist das ein Fehler in der SONOS Software (evtl. auch schon behoben…), auf den wir keinen Einfluss haben.
Testen kann ich es auch nicht, es sei denn irgendwer schenkt mir noch ein paar (so 10-15) Player :wink:
→ Ich könnte noch ganz gut eine ARC brauchen…

Ich habe auch noch nicht geforscht, wie man dieses Problem umgehen kann…

Damit es geht, müsste mal mal genau nachstellen, unter welchen Bedingungen die Funktion nicht funktioniert, und dann sicherstellen, dass dies nicht eintritt.
=> Weder in der App noch über Symcon (oder welches Tool auch immer) die Gruppierung so anpassen, dass diese magische Grenze überschritten wird…

Unschöne Antwort, aber leider die einzige, die ich geben kann.

Gruß,
Thorsten

Hallo zusammen,

seit ein paar Tagen habe ich das Problem, dass Sonos nicht mehr meine mit Polly generierten oder statischen mp3- Dateien abspielt:

SNS_PlayFiles(28268, json_encode(Array(„http://ips.fritz.box/media/mp3/xxx.mp3“)), 30);

SNS_PlayFiles(28268, "[„http://ips.fritz.box/media/mp3/xxx.mp3"]","30“);

Donnerstag, 15. Juli 2021 - 08:41 Amsterdam, Berlin, Bern, Rom
Wiedergabe von „xxx.mp3“ nicht möglich - Verbindung mit ips.fritz.box nicht möglich.

Im Browser lässt sich die Datei über den o.g. Link abspielen.

Habt ihr weitere Ideen ? Funktioniert der Zugriff via http nicht mehr mit der Sonos?
Vielen Dank

Hallo,

Du machst mir Angst.
Hast Du das letzte Update eingespielt?

Mein System hat (noch)
Version: 13.1.1 (Build 63289260)

Damit geht es noch.

Hast Du etwas neueres?

Gruß,
Thorsten

Das wird wahrscheinlich der Fehler sein, mein System ist auf 13.1.4 (Build 63290210).

Ich probiere es später mal über ein Samba Share.