Sonos mittels PHP Skript steuern
Einklappen
X
-
Mal eine ganz einfache Frage: Woher weiß eigentlich das Skript, mit welchem User er sich an der Syno anmelden muss?
-
Hier ein Auszug meiner config.php mit den Pfaden zur Synology..
Code:# Pfad zu deinem Speichermedium von dem Sonos die Nachrichen abspielt 'messagespath' => '//NAS/music/tts/', # Windows Backslash \\ und Slash \ in Pfadangaben durch // und / ersetzen ohne Slash am Ende # Nur für User die ihre Skripte NICHT auf eine NAS( QNAP, Synology, etc.) gehostet haben!!! # Der hier angegebene Pfad ist der Speicherort der T2S Engine für die gesendete MP3 Datei. # Wer einen Pi als Webserver und eine NAS/externe Fesplatte nutzt muss hier sein mount Pfad angeben # Wenn die Skripte auf einer NAS gehostet sind ist hier der gleiche Pfad wie bei 'messagepath' einzutragen 'messageStorePath' => '//volume1/music/tts/',
Damit funktioniert es bei mir..
Interessant ist nicht, von wem das php Script ist, sondern von wem die Audio Datei ist..
Die Fehlermeldung über den Browser kann ich aber nicht zuordnen.. Hast du das aktuellste Script oder eine ältere Version? Config Version 1.1.5 vom 23.06.2016 habe ich..Kommentar
-
Hallo Oliver,
ist in der s2s.php, in der Zeile 39 eventuell ein Tippfehler?
Hier steht $titel, bei mir funktioniert die Ansage aber nur wenn ich $title eintrage.
Gruß
AndyKommentar
-
Kommentar
-
Ich bin mal wieder minimal weiter gekommen. Ich habe alles neu aufgesetzt (Original-Dateien, Syno-User, Config.php) und alle Berechtigungen überprüft (mit getuser erhalte ich mal meinen user, mal den Syno-User meiner Frau,was für mich nicht nachvollziehbar ist). Ich kann die Dateien jetzt über http://192.168.1.3/sonos_tts/index.p...ssage&text=Bla generieren und diese auch über die Sonos sehen und abspielen. Dennoch meckert das Skript rum und es erfolgt auch keine Ausgabe:
Fatal error: Uncaught exception 'Exception' with message 'Error sending command: HTTP/1.1 500 Internal Server Error CONTENT-LENGTH: 347 CONTENT-TYPE: text/xml; charset="utf-8" EXT: Server: Linux UPnP/1.0 Sonos/32.11-30071 (ZPS1) Connection: close s:ClientUPnPError' in /volume1/web/sonos_tts/PHPSonos.php:2509 Stack trace: #0 /volume1/web/sonos_tts/PHPSonos.php(925): PHPSonos->sendPacket('POST /MediaRend...') #1 /volume1/web/sonos_tts/sonos2.php(1561): PHPSonos->Play() #2 /volume1/web/sonos_tts/sonos2.php(682): play_tts('ae7523cb4fc04be...', '0') #3 /volume1/web/sonos_tts/index.php(7): require_once('/volume1/web/so...') #4 {main} thrown in /volume1/web/sonos_tts/PHPSonos.php on line 2509 Die "Berechtigungsfrage" sollte doch durch das Abspielen der Datei innerhalb der Sonos App "erledigt" sein, oder irre ich mich? Leider blicke ich noch nicht einmal ansatzweise durch das Skript durch, sodass ich den Fehler wirklich nicht selbst debuggen kann.Kommentar
-
Also, ich habe auch die Datei gelöscht, auch wenn es aus meiner Sicht nicht notwendig ist, denn die Datei, die das Skript aufzurufen versucht "ae7523..:" ist vorhanden und auch in der Sonos App abspielbar.
In einer anderen Zone ist das Verhalten identisch: Datei wird generiert, ist über die Sonos APP (nachdem Musikbiliothek aktualisiert wurde) sicht- und ausführbar, nur das Skript macht es einfach nicht.
-
Hi zusammen,
Erstmal vielen Dank für diese massige Arbeit, die in dem Skripten steckt.
Mich hat dieser Thread dazu bewegt, nun doch mal mit einem Raspberry in mein Loxone/KNX System einzusteigen
Leider kämpfe ich noch mit einer Fehlermeldung:
Das System läuft auf einem Raspberry PI 2, Raspbian, Apache2, PHP und Berechtigungen wurden erstellt.
Skripte liegen im Ordner: /var/www/html. Ich gehe davon aus, diese werden automatisch laufen oder "gestartet" ?
Dann einen player auf die richtige IP, sowie der Eintrag 'sonoszone' in 'eg' geändert.
Der Test verschiedener Syntaxbefehle, z.B.: http://192.168.1.81/index.php?zone=eg&action=stop
im Browser bringt immer wieder Fehlermeldungen und folgenden logeintrag im Debugmodus. Hat hier jemand einen heissen Tip ?
2016-09-03 19:40:41 - Fehler: [8], Undefined index: sonoszone in /var/www/html/sonos2.php in line 118, Variable:Array
(
[_GET] => Array
(
[zone] => eg
[action] => volumedown
)
[_POST] => Array
(
)
[_COOKIE] => Array
(
)
[_FILES] => Array
(
)
[_SERVER] => Array
(
[HTTP_HOST] => 192.168.1.81
[HTTP_CONNECTION] => keep-alive
[HTTP_CACHE_CONTROL] => max-age=0
[HTTP_UPGRADE_INSECURE_REQUESTS] => 1
[HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36
[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
[HTTP_ACCEPT_ENCODING] => gzip, deflate, sdch
[HTTP_ACCEPT_LANGUAGE] => de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
[PATH] => /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
[SERVER_SIGNATURE] => <address>Apache/2.4.10 (Raspbian) Server at 192.168.1.81 Port 80</address>
[SERVER_SOFTWARE] => Apache/2.4.10 (Raspbian)
[SERVER_NAME] => 192.168.1.81
[SERVER_ADDR] => 192.168.1.81
[SERVER_PORT] => 80
[REMOTE_ADDR] => 192.168.1.80
[DOCUMENT_ROOT] => /var/www/html
[REQUEST_SCHEME] => http
[CONTEXT_PREFIX] =>
[CONTEXT_DOCUMENT_ROOT] => /var/www/html
[SERVER_ADMIN] => webmaster@localhost
[SCRIPT_FILENAME] => /var/www/html/index.php
[REMOTE_PORT] => 50637
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.1
[REQUEST_METHOD] => GET
[QUERY_STRING] => zone=eg&action=volumedown
[REQUEST_URI] => /index.php?zone=eg&action=volumedown
[SCRIPT_NAME] => /index.php
[PHP_SELF] => /index.php
[REQUEST_TIME_FLOAT] => 1472931641.325
[REQUEST_TIME] => 1472931641
)
[config] => Array
(
[eg] => Array
(
[kueche] => Array
(
[0] => 192.168.1.36
[1] => 30
[2] => 30
)
)
[radio_name] => Array
(
[0] => Radio FFH
[1] => SWR3
[2] => You FM
[3] => P4 Norge
[4] => FM Jammin 181
[5] => 1 Live
)
[radio_adresse] => Array
(
[0] => x-rincon-mp3radio://ndr-ndr1-han-mp3.akacast.akamaistream.net/7/807/273766/v1/gnl.akacast.akamaistream.net/ndr_ndr1_han_mp3
[1] => x-rincon-mp3radio://swr-mp3-m-swr3.akacast.akamaistream.net/7/720/137136/v1/gnl.akacast.akamaistream.net/swr-mp3-m-swr3
[2] => x-rincon-mp3radio://hr-mp3-m-youfm.akacast.akamaistream.net/7/246/142136/v1/gnl.akacast.akamaistream.net/hr-mp3-m-youfm
[3] => aac://mms-live.online.no/p4_norge
[4] => x-rincon-mp3radio://relay3.181.fm:14042
[5] => x-rincon-mp3radio://1live-diggi.akacast.akamaistream.net/7/965/119435/v1/gnl.akacast.akamaistream.net/1live-diggi
)
[VoiceRSS_key] => xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
[messageLangV] => de-de
[audiocodec] => 48khz_16bit_stereo
[access_key] => xxxxxxxxxxxxxxxxxxxx
[secret_key] => xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
[messageLangI] => de-DE
[voice] => Hans
[lamePath] => /usr/local/bin/
[t2s_engine] => 2001
[messagespath] => //syn-ds415/music/tts/
[messageStorePath] => //volume1/music/tts/
[filePhpSonos] => PHPSonos.php
[logging] => 1
[volumeup] => 3
[volumedown] => 3
[sleeptimegong] => 2
[sleepgroupmessage] => 5
[file_gong] => 2_Airport_gong
[LoxIP] => 192.168.xx.105:80
[LoxUser] => xxxxxxx
[LoxPassword] => xxxxxxxxxxxx
[LoxDaten] =>
[rampto] => alarm
[volrampto] => 35
[fritzboxip] => 192.168.xx.1
[fritzboxpw] => xxxxxxxxxxx
[rufumleitung1] => 017664067xxx
[rufumleitung2] => 017664067xxx
[rufumleitung3] => 016387581yyy
[wgkey] => xxxxxxxxxxxxxxxxx
[wgcity] => Darmstadt
[wgwindschwelle] => 20
[wgregenschwelle] => 25
[debuggen] => 1
)
[debug] => 1
[path] => log
[loxuser] =>
[loxpassword] =>
[loxip] =>
[master] =>
)
Kommentar
-
Hi Christox,
ändere bitte NIE die Platzhalter(Variablen) in der config.php, weil ohne diese die Skripte nicht laufen. In deinem konkreten Fall lösche wieder dein 'eg' und schreibe wieder 'sonoszone' rein.
Hoffe es klappt dann!
Gruß OliverAnmerkung: Bitte keine Fragen mehr per PN sondern direkt im Forum damit andere mithelfen und mitprofitieren können.
Bzgl. Sonos Plugin supporte ich nur noch die jeweils aktuelle Version NUR auf dem LoxBerry, ich kann keine VM Unterstützung mangels Hardware geben. Herzlichen Dank!Kommentar
-
moin,
kurze frage an euch...
ich habe ein paar - sagen wir standard mp3´s mit statusansagen. die sind einfach benannt 1.mp3 2.mp3 etc
weiterhin entstehen ja neue mp3´s beim verwenden von t2s - die haben dann einen buchstaben zahlen namen (kennt wahrscheinlich jeder)
ich haette gerne, dass ich die beiden arten von mp3´s - sprich meine standards und die automatisch generierten in unterschiedlichen verzeichnissen liegen.
würde die automatisch generierten gerne über einen job regelmässig löschen lassen. und dabei wäre es einfacher - einen bestmmten ordner komplett zu leeren.
geht das irgendwie - bzw wie macht ihr das, dass nicht "5 millionen" mp3´s irgendwo rumliegen bleiben?Zuletzt geändert von doc-brown; 04.09.2016, 20:31.Kommentar
-
Hi doc-brown,
in der Entwicklungsumgebung habe ich bereits eine Lösung mit einem separatem Unterverzeichnis zum 'messagespath' für die MP3 files, dieses kann in der config.php angegeben werden.
Danach kannst du ja per Cronjob oder Task Manager das 'messagepath' Verzeichnis regelmässig löschen (*.mp3) lassen.
Gruß Oliver
-
-
Hi Oliver,
Das wars 😄. Vielen Dank für den Tip. Ich dachte fälschlicherweise, die 'sonsozone' kann umbenannt werden und hierüber mehrere Player über eine Syntax angesprochen werden.
Aber läuf, und jetzt kann ich an die spannenden Themen wie Alarmmeldungen per Sprachausgabe oder Sonos-Titelanzeige auf KNX Display.
Vielen Dank !
Grüsse,
ChrisKommentar
-
Hallo Oliver,
Danke für deine ausführliche Beschreibung bezüglich Sonos und Alarmanlage. Ich habe es geschafft den Miniserver and den Rasperry anzubinden und es funktioniert einwandfrei. Jetzt wollte ich die Alarmanlage mit den gleichen Bedingungen nachbauen, wie du es gemacht hast. Ich stoße aber an die Grenze, weil ich nicht ganz weiß, wie ich folgendes umsetzen soll: - Alarmanlage: Haus verlassen und alle Fenster sind geschlossen -> TTS mit Ansage mit Hinweis das in 5 Minuten Alarm scharf geschaltet wird.
Wir hast du die TTS Durchsage umgesetzt und vor allem an welchen Ausgang hast du diese angeschlossen. Am Q Ausgang nutzt es mir nichts, da erst in 5 Minuten scharf geschaltet wird. Am AQT nutzt es auch nichts, weil die Alarmanlage keinen Fehler erkennt und somit keinen Text ausgibt.
Bitte um Deine Hilfe!
Danke
MarkusKommentar
-
Hallo Markus,
grundsätzlich schalte ich die Alarmanlage nicht über den Baustein scharf/unscharf, sondern über andere Funktionen (virtuelle Eingänge) wie z.B. "Gute Nacht" bei Anwesenheit und "Tschüss" bei Abwesenheit. An diesen kannst du dann Verzögerungen oder Prüfungen durchführen und dann über Eingang A oder V die Alarmanlage scharf schalten. Unscharf schalte ich über iButtons an der Haustür.
Ich würde dir ja gerne Screenshots schicken, aber nach dem letzten Update ist die Config seeeehr unübersichtlich weil alles verschoben und Farben weg sind und ich noch keine Zeit hatte da ein wenig aufzuräumen.
Gruß Oliver
-
-
Hallo Oliver,
vielen Dank für tolle Script! Ich bin seit Wochen damit am experimentieren, auch wenn ich keine Loxone habe. Ich nutze es auf einem raspberry pi3 in Verbindung mit einer SPS.
Nun aber zu meiner Frage: es läuft alle incl. Sprachausgaben, allerdings habe ich ein blödes problem bei der einfachsten aller befehle: play :-) wenn ich play ausführe wird in deinem Script zunächst die aktuelle Playliste ausgelesen (GetCurrentPlaylist()). Genau dort scheint mein Problem zu liegen. Wenn ich Radio höre liefert GetCurrentPlaylist bei mir anscheinend immer ein leeres Array. Daher klappt play nicht mehr... Ich schalte das Radio immer mit nextradio ein...
Ist das ein spezielles Problem bei mir?
Danke und Gruß
Thomas
Kommentar
-
Hallo Thomas,
in der Tat, du hast absolut recht, ist mir noch nie aufgefallen :-(
Die Korrektur habe ich auf Github gepostet.
viel Spaß weiterhin mit den Scripts
Gruß OliverAnmerkung: Bitte keine Fragen mehr per PN sondern direkt im Forum damit andere mithelfen und mitprofitieren können.
Bzgl. Sonos Plugin supporte ich nur noch die jeweils aktuelle Version NUR auf dem LoxBerry, ich kann keine VM Unterstützung mangels Hardware geben. Herzlichen Dank!Kommentar
-
Hi zsamme (@Doc-Brown),
habe die MP3 Verzeichnis Funktion in Github hochgeladen. Erstellt euch ein neues Verzeichnis als Unterverzeichnis von 'messagepath' (z.B. MP3) und gebt den Verzeichnisnamen in der config.php an. Falls der Parameter leer gelassen wird, werden alle MP3s aus dem Standard 'messagepath' Verzeichnis abgerufen.
Die geänderten Dateien sind die sonos2.php und die config.php
Viel Spaß weiterhin
Gruß OliverZuletzt geändert von Liver_64; 05.09.2016, 16:05.Anmerkung: Bitte keine Fragen mehr per PN sondern direkt im Forum damit andere mithelfen und mitprofitieren können.
Bzgl. Sonos Plugin supporte ich nur noch die jeweils aktuelle Version NUR auf dem LoxBerry, ich kann keine VM Unterstützung mangels Hardware geben. Herzlichen Dank!Kommentar
-
Hallo, ich habs gerade ausprobiert. leider kommt ein Error:
Fehler: [8], Undefined index: messageid in /var/www/html/sonos2.php in line 1521, Variable:Array
Mein Aufruf lautet:
/index.php?zone=buero&volume=20&playgong=yes&action =sendmessage&text=Alles%20ok%20Alarmanlage%20wird% 20in%20einer%20Minute%20aktiviertKommentar
-
Sorry, typo drin. Habe ein Update auf Github gepostet.Anmerkung: Bitte keine Fragen mehr per PN sondern direkt im Forum damit andere mithelfen und mitprofitieren können.
Bzgl. Sonos Plugin supporte ich nur noch die jeweils aktuelle Version NUR auf dem LoxBerry, ich kann keine VM Unterstützung mangels Hardware geben. Herzlichen Dank!Kommentar
Kommentar