Da bei mir das Abspielen der Nachrichten mal wieder nicht funktionierte und die Codequalität unterirdisch war (ein kurzer Hack, der sich bewährt hat), habe ich mich daran gesetzt und das Skript komplett neu geschrieben.

Features

  • das Skript ist jetzt eine Klasse und übersichtlich gegliedert
  • Konfiguration in config.php ausgelagert
  • einiges mehr wie z.B. Pfade konfigurierbar gemacht
  • für die nextRadio – Funktion wird jetzt keine Datenbankanbindung mehr benötigt, die Angabe der Radiosender erfolgt in der config.php, der aktuell abgespielte Radiosender wird in einer Textdatei abgelegt.
  • Die URL Struktur ist gleich geblieben, anstatt ‚do‘ sollte aber in Zukunft ‚action‘ verwendet werden (es geht beides)

Das Hosting der neuen Version erfolgt auf Github. Dort könnt Ihr auch Bugs melden, Verbeserungen oder neue Features vorschlagen und selbst hinzufügen. Dort könnt Ihr euch auch über neue Versionen benachrichtigen lassen.

Hier geht es zum Skript auf GitHub: https://github.com/ThomasTr/sonos

Download der aktuellen Version als zip: https://github.com/ThomasTr/sonos/archive/master.zip

Image: „Home Automation“ (CC BY-NC-SA 2.0) by  multimedia_tech

Hinterlasse einen Kommentar

52 Kommentare auf "SONOS mit GIRA Homeserver steuern – neue Version"

Benachrichtige mich zu:
avatar
Sortiert nach:   neuste | älteste | beste Bewertung
Le Voisin
Gast

Hallo erstmal, danke für das sehr ausgefeilte Script,
ich hätte da mal ne Frage,
Lässt es sich umsetzen, das wenn es klingelt, einige Zonen gruppiert werden, dann der
Klingelton abspielen und anschließend die Gruppierung wieder aufheben?
Klingt ziemlich kompliziert, ich weiß.
Grüße Le Voisin

lu
Gast

Hallo.
Kannst du mir sagen wie ich einen Radiosender auswählen kann, der in der config definiert wurde

lu
Gast

vielen dank für die info.
wie aufwändig wäre es das zu implementieren.
im php-slript von ip-symcom ist die funktion ja implementiert

lu
Gast

Habs gelöst,
indem ich im sonos.php skript für den jeweiligen sender eine action zugefügt habe,die dann per setradio einen radiostream aufruft und auch noch benennen kann

lu
Gast

Vielleicht willst du die Funktion ja mal hinzufügen.
Oder es gibt evtl die möglichkeit den radiostream anhand des in der config definierten namens aufzurufen. hier die funktion:

protected function _action“NAMEDESSENDERS“()
{
$this->_PHPSonos->SetRadio(„x-rincon-mp3radio://RADIO-URL“,
‚NAME DES SENDERS‘);
$this->_PHPSonos->Play();
}

Stefan
Gast
Hallo Erst mal vielen Dank für die Scrpits. Bei mir will die Sache noch nicht so recht, ich habe den folgenden Fehler. Warning: fopen(log.txt): failed to open stream: Permission denied in /volume1/web/sonos/sonos.php on line 394 Warning: fwrite() expects parameter 1 to be resource, boolean given in /volume1/web/sonos/sonos.php on line 395 Warning: fclose() expects parameter 1 to be resource, boolean given in /volume1/web/sonos/sonos.php on line 396 Fatal error: Uncaught exception ‚Exception‘ with message ‚Missing zone‘ in /volume1/web/sonos/sonos.php:73 Stack trace: #0 /volume1/web/sonos/sonos.php(61): Sonos->_assertZone(“) #1 /volume1/web/sonos/sonos.php(13): Sonos->_main() #2 /volume1/web/sonos/index.php(8): Sonos->__construct() #3 {main} thrown in /volume1/web/sonos/sonos.php on line 73 Bei mir liegen die folgenden… Read more »
Stefan
Gast

Danke für die schnelle Antwort.

Wären die Rechte 755 dann in Ordnung?

Ich werde das mit dem log.txt heute Abend mal versuchen.

Könnte es vielleicht auch an der Schreibweise der Zonen liegen, ich habe in der config.php die Zonen Gross/Klein geschrieben, in der Sonos App werden die Zonen jedoch in alles Grossbuchstaben angezeigt?

Viele Grüsse

Stefan
Gast

Hallo

Ich habe den Test gemacht, es wird zwar nun in die log.txt geschrieben (Rechte sollten also passen), doch es kommt beim Aufruf von

http://[meineip]/sonos/index.php

Fatal error: Uncaught exception ‚Exception‘ with message ‚Missing zone‘ in /volume1/web/sonos/sonos.php:73 Stack trace: #0 /volume1/web/sonos/sonos.php(61): Sonos->_assertZone(“) #1 /volume1/web/sonos/sonos.php(13): Sonos->_main() #2 /volume1/web/sonos/index.php(8): Sonos->__construct() #3 {main} thrown in /volume1/web/sonos/sonos.php on line 73

Also irgend etwas mit den Zonen muss da falsch sein.

Gruss