Sonos Modul

ich habe das Gleiche Problem

Guten Abend,

da ich ein totaler Hobby Programmierer bin, wollte ich mal fragen ob jemand seinen PHP Code zur Abfrage der Gruppen Zugehörigkeit eines Lautsprechers posten könnte.

Hintergrund:
Ich möchte einen Play 1 im Badezimmer mit Radio abspielen lassen, wenn der Lautsprecher sich nicht in einer Gruppe befindet die gerade Musik abspielt und die Badezimmertür geschlossen ist. Spielt keine Musik soll der Lautsprecher aus der Gruppe heraus genommen werden und Radio Musik spielen. Wird die Tür geöffnet, wird die Musik nach 2 Min beendet.

Ich habe etwas Simples geschrieben was aber manchmal nicht funktioniert. Wenn zB Musik in der Wohnung läuft und man öffnet die Badezimmertür, geht nach 2 Min in der ganzen Wohnung die Musik aus, sprich: Die Gruppenabfrage funktioniert nicht richtig bei mir.

Hier mein Code:

<?
$tuer = GetValue(17718 /*[Räume\Badezimmer\Xiaomi Device\status]*/);
$sonos = GetValue(22916 /*[Musik\Bad\Status]*/);
$member = GetValue(35593 /*[Musik\Bad\MemberOfGroup]*/);
//Variablen abfragen und zuweisen

if($tuer == false){    //Bedinung erfüllt wenn Zu
   if($sonos == 3 && $member == 0){		//Bedinung erfüllt wenn Sonos Pause/Stop
					SNS_RampToVolume(33922 /*[Musik\Bad]*/, 2, 15);
					SNS_SetRadioFavorite(33922 /*[Musik\Bad]*/);
					SNS_Play(33922 /*[Musik\Bad]*/);
					}
}else{  //Bedinung erfüllt wenn Tür auf
if($member == 0){
		SNS_SetSleepTimer(33922 /*[Musik\Bad]*/, 1); //Timer auf 1min gesetzt
		}
	}
?>

Hi Thorsten,

bei mir werden seit dem 12.7. die Playlist-IDs nicht mehr aktualisiert.

Ist mir bis jetzt nicht aufgefallen, da ich diese nur in den Räumen auswerte, wo ich Ansagen durchführe und in diesen meistens Radio läuft.

Mir würde eine Variable genügen, durch die ich erkennen kann, ob eine Playlist aktiv ist oder ein Radio-Stream…?

Besten Dank für eine kurze Rückinfo

Ciao
HerbertF

Abend Zusammen!

Habe folgendes Problem:

Beim Aufruf der Radiostation Playlist. Ist das bekannt?
Könnte sich jemand von Symcon dazu äußern ob es jetzt mit Version 5.x Probleme gibt?

Danke und lg

EDIT: Problem ist bekannt. Siehe hier.

Abend!

Nicht IPS 5 ist das Problem, sondern die neue Sonos Firmware bzw. die neue Sonos API.
Bisher hat Sonos nur die neue API für die Steuerung über die Cloud (Server von Sonos im Internet) veröffentlicht - auf die „lokale“ API, die nur intern im Haus über LAN/WLAN arbeitet, wird noch sehnlichst gewartet (sofern ich nichts verpasst habe)…

Viele Grüße,
Chris

Danke Chris!

„Lokale“ API heißt was? Unabhängigkeit von Sonos für die Zukunft?

lg

Nein. Sonos wurde ja die ganze Zeit „inoffiziell“ über UPnP gesteuert. Denn UPnP wurde nie offiziell von Sonos als API freigegeben, deshalb können die da jederzeit auch einfach was ändern/entfernen.
Sonos hat aber dann entschieden eine offizielle API für Drittanbieter zu erstellen (aber dabei wurden einige der inoffiziellen UPnP „Befehle“ geändert/entfernt, weswegen das Modul hier nicht mehr 100% funktioniert - ich meine bis zur Sonos Firmware 9.1 war noch alles ok und mit 9.2 haben die Probleme dann angefangen).

Bei der neuen offiziellen Sonos API gibt es 2 Varianten:
1.) Steuerung der Sonos-Lautsprecher über die Sonos-Server im Internet
2.) Steuerung der Sonos-Lautsprecher direkt bei sich im Heimnetzwerk

Funktionsweisen der neuen Sonos API mit IPS:
zu 1) IPS schickt einen Befehl an die Sonos-Server im Internet und die Sonos-Server im Internet schicken einen Befehl an deine Sonos zu Hause
zu 2) IPS schickt direkt einen Befehl an die Sonos-Lautsprecher im Heimnetzwerk (keine Internetverbindung notwendig)

Die 1. beschriebene Variante der API ist schon verfügbar und kann verwendet werden (ist auch nicht weiter schwer zu programmieren).
ABER die User wollen natürlich keinen Befehl ins Internet schicken und von da weiter an die Sonos-Lautsprecher im Heimnetzwerk…deshalb warten alle auf die Veröffentlichung der API der 2. beschriebenen Variante, weil da alles im Netzwerk zu Hause passiert und nicht über irgendwelche Server im Internet.

Viele Grüße,
Chris

@Bayaro Herzlichen Dank für die gute Erklärung.

Dann hoffen wir doch mal das wir zeitnah die Lösung 2 bekommen, ansonsten wird es demnächst eine Menge gebrauchter Sonos Lautsprecher auf dem Markt geben :frowning:

Jo, Danke! Alles einfach und klar erklärt. Könntest Lehrer werden :slight_smile:

Jetzt weiß man aber natürlich noch nicht WANN diese 2. API kommt oder?
Und dann programmiert Kugelberg das Modul um?

lg
Christian

Wann die lokale API kommt weiß vlt. nicht mal Sonos selbst :smiley: Ich hoffe bald :slight_smile:

Keine Ahnung, ob TKugelberg sich der Sache dann animmt, oder jemand anderes. Wird sich aber bestimmt ein doofer finden :wink: :smiley: :stuck_out_tongue: …oder ich am Ende der doofe jemand bin :smiley:

Viele Grüße,
Chris

Hallo,

und was geht nun denn aktuell überhaupt noch? Der Thread ist ja länger als ne Boa :slight_smile:

Ich scheitere ja schon im Moment mit einem Code 128 beim beim Instanz anlegen. Oder ist das aktuell eh sinnlos - mit aktuellem (FW) Sonos Player?

Danke und Grüsse,
MaLu

Hallo,

bis vor ein paar Minuten hätte ich gesagt alles.
Dann musste ich aber feststellen, dass ich was kaputt gemacht habe…
Beim fixen des SOAP Problems am 11. September habe ich eine Kleinigkeit übersehen.
Dadurch konnten keine neuen Instanzen mehr angelegt werden.
Ein keines „if“ und es geht jetzt wieder.

Ich habe die Version 1.5.12 gerade committet, und damit sollte nun alles wieder funktionieren.
Wenn nicht, bitte melden.

Gruß,
Thorsten

Hallo,

Nee, geht immer noch net -

Modul nochmal gelöscht - hinzugefügt - sogar mal den Dienst neu gestartet … aber immer beim Instanz hinzufügen kommt sofort - nach entsprechender kurzer „Wartezeit“ … die Meldung …

Error: „Connection timed out after 1016 milliseconds“ - Code: 28

Es entsteht im Baum ein „Unbekanntes Objekt“. Komme aber zu keinem Dialog wo ich überhaupt was eingeben könnte.

Danke und Grüsse,
MaLu

Hallo,
kann völlig daneben sein, aber mit welcher Konsole versuchst du es?

Es gibt Module, so wie da Yamaha Modul,
dies kann man derzeit nur mit der Lagecy Konsole installieren, sonst kommt es zu einer Fehlermeldung ähnlich deiner,
wenn man diese mit der Web Konsole installiert(parametriert).

Nur eine Idee, muss aber nicht sein. Wie gesagt, kann voll daneben sein.

Gruß Achim

Gerade mal Rechner an geschmissen und probiert, daran liegt es nicht. War halt nur ein Gedanke!

Hallo MaLu,

gerade die neue Version probiert, und hier geht es.

Hi tomgr,
ich kann den Fehler von Malu bestätigen, neues Update drauf und Fehler ist noch da.
Fahre 5.0 Stable alle Update installiert.

Dann könnte es an der IPS Version liegen,
auf der 5.1 mit Raspberry ging es mit beiden Consolen.

Hi,

also, ich habe es mit der 4.4er auf dem PI und der 5er per Docker auf Synology probiert.
Beides geht.

Auf was läuft denn euer IPS?
Könnte es ein anderes verhalten auf Windows sein?

Kurze Erklärung des Problems:
Konkret geht es um die Ermittlung der IP:


    protected function getIP(){
        $ip      = gethostbyname($this->ReadPropertyString("IPAddress"));
        $timeout = $this->ReadPropertyInteger("TimeOut");

        if ($ip && $timeout && Sys_Ping($ip, $timeout) != true){
           if (Sys_Ping($ip, $timeout)!= true){
             throw new Exception('Sonos Box '.$ip.' is not available, TimeOut: '.$timeout.'ms.');
           }
        }
        return $ip;
    }

Wenn ich nun eine neue Instanz anlege, ist zunächst die IP leer.
Daher war mein heutiger Fix das „$ip &&“ in der if Bedingung.

Wenn das bei euch jetzt immer noch nicht funktioniert bedeutet dies, dass

gethostbyname('');

etwas zurückliefert.

Ist dem so?!

Danke,
Thorsten

Ich habe Windows 10 x64 - und bei mir liefert die Funktion die IP Adresse des IP-Symcon Rechner zurück -
also in dem Fall - 192.168.2.8 … ich komme somit ja nicht bis zu einem Dialog um etwas einzugeben … was bezüglich Sonos wäre.