Sonos mittels PHP Skript steuern

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Michael Mausbach
    Dumb Home'r
    • 29.08.2015
    • 12

    Mal eine ganz einfache Frage: Woher weiß eigentlich das Skript, mit welchem User er sich an der Syno anmelden muss?

    Kommentar


    • Liver_64
      Liver_64 kommentierte
      Kommentar bearbeiten
      gebe mal ...&action=getuser ein, dann siehst du welchen User das Skript nutzt und füge diesen zur Gruppe http hinzu,
      Sollte i.d.R. der User sein mit welchem du an deinem PC/NAS arbeitest.
  • Gast

    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/',
    NAS=NAS nicht IP!
    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

    • Gast

      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ß
      Andy

      Kommentar


      • Liver_64
        Liver_64 kommentierte
        Kommentar bearbeiten
        seltsam, $title kann eigentlich nicht gehen, da vorher (Zeile 25 und 31) die variable $titel erstellt wird.
        Aber wenn dem bei dir so ist und es funktioniert, dann ist es ja gut.
    • Michael Mausbach
      Dumb Home'r
      • 29.08.2015
      • 12

      Also, meine Audio Datei ist auch von "Everyone". Meine Version ist die 1.5.1. Auch wenn ich als messagepath '//DISKSTATION/web' eingebe, ändert das nichts (gleiche Fehlermeldung).
      Angehängte Dateien
      Zuletzt geändert von Michael Mausbach; 21.08.2016, 22:43. Grund: Datei hinzugefügt

      Kommentar

      • Michael Mausbach
        Dumb Home'r
        • 29.08.2015
        • 12

        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


        • Liver_64
          Liver_64 kommentierte
          Kommentar bearbeiten
          schau mal in der Sonos App nach und lösche ggf. die Datei. Das Skript versucht eine MP3 Datei abzuspielen die es nicht gibt.
          Wie verhält es sich bei einer anderen Zone?

        • Michael Mausbach
          Michael Mausbach kommentierte
          Kommentar bearbeiten
          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.
      • Gast

        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

        • Liver_64
          MS Profi
          • 07.09.2015
          • 591

          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ß Oliver
          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

          • doc-brown
            Lox Guru
            • 13.09.2015
            • 1456

            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


            • Liver_64
              Liver_64 kommentierte
              Kommentar bearbeiten
              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

            • doc-brown
              doc-brown kommentierte
              Kommentar bearbeiten
              hi oliver,
              meinst du den "MP3path"? hier würden dann meine standard mp3´s ihren platz finden - die die standardansagen abbilden sollen?

            • Liver_64
              Liver_64 kommentierte
              Kommentar bearbeiten
              Ja, genau. Habe schon ein Update auf Github gepostet.
          • Gast

            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,

            Chris

            Kommentar

            • baldaum
              Extension Master
              • 24.05.2016
              • 133

              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
              Markus

              Kommentar


              • Liver_64
                Liver_64 kommentierte
                Kommentar bearbeiten
                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
            • Gast

              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

              • Liver_64
                MS Profi
                • 07.09.2015
                • 591

                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ß Oliver
                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

                • Liver_64
                  MS Profi
                  • 07.09.2015
                  • 591

                  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ß Oliver
                  Zuletzt 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

                  • baldaum
                    Extension Master
                    • 24.05.2016
                    • 133

                    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%20aktiviert

                    Kommentar

                    • Liver_64
                      MS Profi
                      • 07.09.2015
                      • 591

                      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

                      Lädt...