Sonos Modul

Hi Thorsten

Ich glaube das Problem war eine Fehlannahme meinerseits. Ich bin zuerst davon ausgegangen, dass die Sleeptimer Variable wie z.B. Status oder Mute schaltbar ist, wenn ich einfach eine Aktion definiere die den Wert aus dem Webfront in die Variable schreibt. Das konnte so natürlich nicht klappen, da dies in d. Funktion RequestAction garnicht behandelt wird (habe ich gerade nachgesehen).

Ich dachte eigentlich, dass ich an dieser Stelle recht sauber bin. Falls etwas nicht stimmt, nur her damit.

Bei mir werden bei sämtlichen Zonen nur die Zonengruppen „none“ und „Sonos“ angezeigt. M.E. müssten doch aber auch die Zonen bereits eine Gruppe (nur halt mit einem Member sein)? Dann hätte ich über das Webfront die Möglichkeit einer Gruppe / einem Player der spielt „beizutreten“, was so nicht klappt (da ich ja nur None oder Sonos wählen kann).

Grüße, Benjamin

Hallo,

hatte ich schon mal drüber nachgedacht einzubauen, fand es dann aber doch nicht notwendig…

Kann es sein, dass Du allen Deinen Sonos Instanzen den Namen „Sonos“ gegeben hast?
Eigentlich sollte da jede Box verfügbar sein. Der Gruppenname ist dann aber der Name der Sonos Instanz.

Gruß,
Thorsten

Hi Thorsten

[QUOTE=Kugelberg;290126]
hatte ich schon mal drüber nachgedacht einzubauen, fand es dann aber doch nicht notwendig…

Es geht ja auch so. :slight_smile: Ich habe es jetzt mit einer weiteren Variable gelöst. Vermutlich würde in meinem Skript auch die SNS_SetSleepTimer Funktion funktionieren (das probiere ich heute abend nochmal aus).

[QUOTE]
Kann es sein, dass Du allen Deinen Sonos Instanzen den Namen „Sonos“ gegeben hast?
Eigentlich sollte da jede Box verfügbar sein. Der Gruppenname ist dann aber der Name der Sonos Instanz.

Stimmt, das müsste es sein. :eek:
Ich probiere die Instanzen mal umzubenennen in den Namen der jeweiligen Zone.

Grüße, Benjamin

Hi,

Vielen dank für das Geniale Modul, leider bekomme ich immer wieder folgenden Fehler und ehrlich gesagt weiß ich nichtmal warum. Selbst wenn Die Sonos nicht abspielt füllt sich das Logfile.

Error: Maximum execution time of 30 seconds exceeded
Error in Script C:\IP-Symcon\modules\SymconSonos\Sonos\sonosAccess.php on Line 546
134 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger.inc.php (call IPSLogger_Out)
33 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_Err)
121 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_PhpErrorHandler) in IPSLogger_PhpFatalErrorHandler

Error in Script C:\IP-Symcon\modules\SymconSonos\Sonos\sonosAccess.php on Line 546
134 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger.inc.php (call IPSLogger_Out)
37 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php(call IPSLogger_Err) 
in IPSLogger_PhpErrorHandler in __doRequest
546 in modules\SymconSonos\Sonos\sonosAccess.php (call__soapCall)
253 in modules\SymconSonos\Sonos\sonosAccess.php (call processSoapCall)
39 in scripts\45504.ips.php (call GetVolume)</message></event><event logger="PHP"


Error: Uncaught exception 'Exception' with message
'Error during Soap Call: Could not connect to host HTTP' in 
C:\IP-Symcon\modules\SymconSonos\Sonos\sonosAccess.php:554
Stack trace:

#0 C:\IP-Symcon\modules\SymconSonos\Sonos\sonosAccess.php(253): SonosAccess->processSoapCall('/MediaRenderer/...', 'urn:schemas-upn...','GetVolume', Array)
#1 C:\IP-Symcon\scripts\45504.ips.php(39): SonosAccess->GetVolume()
#2 {main} thrown   
Error in Script C:\IP-Symcon\modules\SymconSonos\Sonos\sonosAccess.php on Line 554
134 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger.inc.php (call IPSLogger_Out)
33 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_Err)
121 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php(call IPSLogger_PhpErrorHandler) in IPSLogger_PhpFatalErrorHandler</message></event>

Ich habe folgende Komponente im Einsatz:
1x Bridge
1x Play:3
1x Play:5
6x Play:1

Wie kann ich dem Problem auf die Spur kommen?

Danke und schönes Wochenende

Hallo,

Du könntst als erstes mal schauen, unter welcher Instanz das Script 45504 liegt.
Da die Funktion GetVolume() mit dem Fehler ‚Error during Soap Call: Could not connect to host HTTP‘ auftritt, hätte ich 3 Punkte, an denen ich schauen würde:

  1. ist evtl die Bridge? --> Die brauchst Du nicht in IPS. Scheint eher Probleme zu machen
  2. steht in der instanz eine falsche IP drin? Wenn der HTTP Server der Box nicht antwortet, scheint es keine zu sein.
  3. Da Du windows hast: Ist evtl. eine Firewall im Spiel?!

Gruß,
Thorsten

Hallo Thorsten,

danke schonmal für deine Hilfe.

  1. ist evtl die Bridge? --> Die brauchst Du nicht in IPS. Scheint eher Probleme zu machen

Nein, ich habe diese nur der Vollständigkeitshalber aufgeführt, in IPS ist die Bridge nicht vorhanden. Allerdings, wenn ich vom iPhone - mittels der Sonos-App - Musik anwähle wird die Bridge verwendet. Könnte das die Ursache sein?

  1. steht in der instanz eine falsche IP drin? Wenn der HTTP Server der Box nicht antwortet, scheint es keine zu sein.

Die IP ist Korrekt, diese ist fest eingestellt. Jetzt bspw, läuft diese Box und mir wird alles Korrekt angezeigt.

  1. Da Du windows hast: Ist evtl. eine Firewall im Spiel?!

Windows ist noch korrekt, aber die Firewall ist aus.

Ich habe folgendes beobachtet, es kann aber auch Zufall sein. Die Kategorie hieß zuvor „Sonos“ und ich habe diese in „Musik“ unbenannt, die SOAP Meldung kam seitdem nicht mehr, die nachfolgende Meldung bekomme ich aber sehr häufig, mal minütlich, mal wie heute vormittag alle 5 Sekunden!

Error: Maximum execution time of 30 seconds exceeded
Error in Script C:\IP-Symcon\modules\SymconSonos\Sonos\sonosAccess.php on Line 546
134 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger.inc.php (call IPSLogger_Out)
33 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_Err)
121 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_PhpErrorHandler) in IPSLogger_PhpFatalErrorHandler

Vielen Dank.

Kristian

Moin,

seit geraumer Zeit geht das abspielen eines Radiostreams über das Sonos Modul nicht mehr (also der Stream, der noch drinne steht geht zwar, aber ich kann nicht mehr wechseln…), bekomme immer eine Fehlermeldung:

  • es geht kein Radiostream, ist auch egal, welchen Namen ist versuche zu laden

  • scheint ein generelles Problem zu sein

  • IPSSonos: 1.1.2 (alle Module auf aktuellem Stand)

  • IPS: 3.4 #3785

Wäre super, wenn jemand helfen kann, verstehe auch nicht, warum das auf einmal kommt, lief bis dato immer einwandfrei.

Gruß Björn

Fatal error: Uncaught exception ‚Exception‘ with message ‚String could not be parsed as XML‘ in C:\Haussteuerung\IP-Symcon\scripts\IPSLibrary\app\modules\IPSSonos\PHPSonos.inc.php:2121
Stack trace:
#0 C:\Haussteuerung\IP-Symcon\scripts\IPSLibrary\app\modules\IPSSonos\PHPSonos.inc.php(2121): SimpleXMLElement->__construct(’’)
#1 C:\Haussteuerung\IP-Symcon\scripts\IPSLibrary\app\modules\IPSSonos\IPSSonos_Server.class.php(640): PHPSonos->Browse(‚R:0/0‘, ‚c‘)
#2 C:\Haussteuerung\IP-Symcon\scripts\IPSLibrary\app\modules\IPSSonos\IPSSonos_Server.class.php(396): IPSSonos_Server->SetQueueRadiostationByName(Object(IPSSonos_Room), Object(PHPSonos), ‚NDR 2 Schleswig…‘)
#3 C:\Haussteuerung\IP-Symcon\scripts\IPSLibrary\app\modules\IPSSonos\IPSSonos.inc.php(338): IPSSonos_Server->SendData(‚AUD‘, ‚Flur‘, ‚PLAYRDNAME‘, ‚NDR 2 Schleswig…‘)
#4 C:\Haussteuerung\IP-Symcon\scripts\19085.ips.php(48): IPSSonos_PlayRadiostationByName(‚Flur‘, ‚NDR 2 Schleswig…‘)
#5 {main}
thrown in C:\Haussteuerung\IP-Symcon\scripts\IPSLibrary\app\modules\IPSSonos\PHPSonos.inc.php on line 2121
Abort Processing during Fatal-Error: Uncaught exception ‚Exception‘ with message ‚String could not be parsed as XML‘ in C:\Haussteuerung\IP-Symcon\scripts\IPSLibrary\app\modules\IPSSonos\PHPSonos.inc.php:2121
Stack trace:
#0 C:\Haussteuerung\IP-Symcon\scripts\IPSLibrary\app\modules\IPSSonos\PHPSonos.inc.php(2121): SimpleXMLElement->__construct(’’)
#1 C:\Haussteuerung\IP-Symcon\scripts\IPSLibrary\app\modules\IPSSonos\IPSSonos_Server.class.php(640): PHPSonos->Browse(‚R:0/0‘, ‚c‘)
#2 C:\Haussteuerung\IP-Symcon\scripts\IPSLibrary\app\modules\IPSSonos\IPSSonos_Server.class.php(396): IPSSonos_Server->SetQueueRadiostationByName(Object(IPSSonos_Room), Object(PHPSonos), ‚NDR 2 Schleswig…‘)
#3 C:\Haussteuerung\IP-Symcon\scripts\IPSLibrary\app\modules\IPSSonos\IPSSonos.inc.php(338): IPSSonos_Server->SendData(‚AUD‘, ‚Flur‘, ‚PLAYRDNAME‘, ‚NDR 2 Schleswig…‘)
#4 C:\Haussteuerung\IP-Symcon\scripts\19085.ips.php(48): IPSSonos_PlayRadiostationByName(‚Flur‘, ‚NDR 2 Schleswig…‘)
#5 {main}
thrown
Error in Script C:\Haussteuerung\IP-Symcon\scripts\IPSLibrary\app\modules\IPSSonos\PHPSonos.inc.php on Line 2121

Der Thread hier bezieht sich auf das PHP Modul dies läuft nur unter IPS 4. Am besten mal in einem Thread bei der IPSLibrary fragen.

Danke, werde ich machen.

Gruß Björn

Hallo allerseits …

@Thorsten: Danke für die Arbeit, ein Supermodul!

Ich hab mich (selbst) überzeugt, für meine Kinder jeweils ein Play:1 zu kaufen, da es mit deren bisherigen Recivia-Playern und UMTS/DLNA nur Probleme gab … und das gejammere über abgebrochene Hörspiele wollte ich mir nicht mehr antun :smiley:

Zwei kurze Fragen:

Wenn ich über die Funktion SNS_PlayFiles ein längeres MP3-File (z.B. ein Hörspiel) abspiele, funktioniert das zwar, allerdings bleibt das Script, in dem die Funktion aufgerufen wird, so lange „hängen“, bis die Datei abgespielt wurde (zumindest, wenn man es manuell startet). Ist das technisch bedingt oder ist das noch ein Fehler im Modul? Die abgespielte Datei erscheint auch nicht in der Sonos-Liste im Controller, aber hier denke ich, dass dies vermutlich nicht realisierbar ist …

Zweite Frage: Gibt es eine Möglichkeit, innerhalb des laufenden Titels an eine andere Position zu springen (analog der Funktion WAC_SetPosition des MediaPlayers in IP-Symcon)?

Danke Euch … viele Grüße …

Hallo,

Die Funktion PlayFiles ist nicht dafür gedacht, eine Datei als Quelle zu setzen, sondern um z.B. eine Ansage zu machen oder die Türklingel über die Boxen zu realisieren.
Also einen kurzen Einspieler, nach dem die ursprüngliche Wiedergabe fortgesetzt (bzw. der ursprünglich Zustand wieder hergestellt) wird.
Daher wird so lange gewartet, bis die Datei rum ist, und danach alles wieder zurückgesetzt.

Dass die Datei nicht in der Liste auftaucht, ist auch gewollt, damit diese durch die Ansagen nicht „verunreinigt“ wird.

–> Es ist also eher ein Feature, denn ein Bug :smiley:

Die mit dem Modul mitgelieferte Klasse „sonosAccess.php“ bietet dies an.
Dort kann man mit Seek($unit,$target) z.B: zu einem Track einer Liste ( $sonos->Seek(„TRACK_NR“,„5“); ) oder zu einer Stelle im Track ($sonos->Seek(„REL_TIME“,„00:01:12“):wink: springen. Als Funktion im Modul habe ich dies noch nicht.
Passt aber zu dem „Backlog Item“ PositionPercent, kommt also evtl. irgendwann.

Gruß,
Thorsten

Hi Thorsten,

danke für die schnelle Antwort.

Daher wird so lange gewartet, bis die Datei rum ist, und danach alles wieder zurückgesetzt.

… ich ahnte das schon, habe aber jetzt die Bestätigung direkt vom Fachmann, danke Dir … :smiley:

Dass die Datei nicht in der Liste auftaucht, ist auch gewollt, damit diese durch die Ansagen nicht „verunreinigt“ wird.

Gäbe es theoretisch die Möglichkeit, eine MP3-Datei per UNC-Pfad in die Trackliste aufzunehmen, so wie man es über die Sonos-App machen kann und diese dann direkt abzuspielen? Ich fürchte nein, denn man bräuchte ja den direkten Bezug zur in Sonos gespeicherten Mediathek, oder?

Passt aber zu dem „Backlog Item“ PositionPercent, kommt also evtl. irgendwann.

Oh, sorry, hab ich gar nicht gesehen, dass das schon mal besprochen wurde … Prima, wär cool, wenn das noch kommt :slight_smile:

Viele Grüße …

Hallo,

ja, also nein.
Man kann jede Datei einfach hinzufügen und braucht sie nicht in der Mediathek.
Aber wieder: die Möglichkeit gibt es noch nicht im Modul, nur über die access Sonos Klasse.


$ip      = 'sonos-gaeste.fritz.box';
include_once("../modules/SymconSonos/Sonos/sonosAccess.php");
$sonos = new SonosAccess($ip);
// Datei von einem HTTP Server
$sonos->AddToQueue("http://www.kugelberg.de/secret/Lewwerworscht.mp3");
// Datei von einem Samba/CIFS share
$sonos->AddToQueue('x-file-cifs://filer.fritz.box/backup/Prince - Purple Rain - Purple Rain.mp3');

Evtl vorher noch ein „$sonos->ClearQueue();“.
Aber „$sonos->Play();“ am Ende nicht vergessen :wink:

Wenn mehrere diese Funktion brauchen, könnte ich sie auch leicht ins Modul aufnehmen.

Gruß,
Thorsten

Hallo,

ich habe es endlich geschafft auch importierte Playlisten zu unterstützen.
Leider ist das mit den maximalen 32 einträgen hier schon eine Limitation…

SymconSonos/CHANGELOG.md at master · tkugelberg/SymconSonos · GitHub

ACHTUNG: Wer die Playlisten schon aktiviert hatte, muss dies wieder tun, da ich die Option von Boolean nach Integer geändert habe.

Gruß,
Thorsten

Hi …

Wenn mehrere diese Funktion brauchen, könnte ich sie auch leicht ins Modul aufnehmen.

Das wäre natürlich absolutes Premium :wink: … ich könnte natürlich die Klasse nehmen, allerdings wäre das über Dein PHP-Modul viel viel eleganter … ich muss mich unbedingt mit den PHP-Modulen beschäftigen :wink:

Toll, Danke Thorsten! Jetzt brauche ich künfig meinen Fork nicht mehr mit deinem Repo mergen :slight_smile:

Hallo zusammen,

ich brauche mal eure Hilfe.

Also, ich würde gerne anbieten, dass man den Fortschritt eines Titels optisch erkennen kann.
Mein letzter versuch das über einen Progress Bar zu machen kam ja nicht so gut an :wink:

Jetzt wäre es auch fein, eine Action darüber triggern zu können, damit man auch spulen könnte.

Die einzige Idee die ich habe ist, dass man eine Variable als Slider nimmt und dann quasi als Prozentualen Wert des Fortschrittes ablegt.

Finde ich aber nicht schön.

Hat jemand eine bessere Idee?

Könnte ich das auch über die HTML Box realisieren (also praktisch eine Action aus der Box raus triggern)?

Danke,
Thorsten

Wie man aus HTMLBoxen heraus Variablen bzw Skripte startet hab ich schon mal irgendwo veröffentlicht…

Aber ob das so schön ist? Man trifft doch eh nie richtig bzw. ob die responsivness dann so gut ist??

Ich habe das mal so gelöst das ich einen Jquery Slider genommen habe der mit Ajax läuft und dann per Formular den Wert an eine PHP Seite schickt die im User Verzeichnis liegt, die dann den eigentlichen Wert in IP-Symcon setzt. Das hat gut funktioniert.
Ich muss jetzt mal schauen wie man das am besten in ein Modul einbauen kann. Ich schaue auch gerade ob ich das ins Denon Modul einbauen kann. Mir ist jetzt noch unklar ob ich dann Jquery mit ins Modul packen müsste oder wie man das am besten löst und ob die PHP Seite die dann den Wert vom Slider auch im Modul Ordner läuft. Ich probiere das mal aus und gebe dann mal Rückmeldung ob das funktioniert.

Ich nutze für Steuerungen aus HTMLBoxen jetzt die Webhooks. Das erspart das anlegen von Dateien im user-Verzeichnis. Gerade in Anbetracht der Symbox sehr praktisch.
Um jedoch konsistent zum restlichen Webfront und kompatible zu Skins zu bleiben nutze ich den IPS-Slider.
Michael