Sonos mittels PHP Skript steuern

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Gast

    Hallo zusammen,

    leider kann ich keine TTS Nachrichten abspielen. Kann mir jemand eine funktionierende QNAP configuration/Pfadangabe nennen?

    Script Verzeichnis: //192.168.178.50/Web/SONOS/
    TTS Verzeichnis: //192.168.178.50/Multimedia/TTS/

    'messagespath' => '//192.168.178.50/Multimedia/TTS',
    'messageStorePath' => '//192.168.178.50/Multimedia/TTS/',

    Hierbei erhalte ich beim Abspielen von "http://192.168.178.50/SONOS/sonos2.php?zone=esszimmer&volume=40&playgong=yes&a ction=sendmessage&text=Das%20ist%20ein%20Test" folgenden Fehler:
    2016-04-18 21:33:31 - Fehler: [2], file_put_contents(//192.168.178.50/Multimedia/TTS/e1105e7469dd14c0323a242180dea7ea.mp3): failed to open stream: No such file or directory in /share/MD0_DATA/Web/SONOS/t2sv.php in line 38, Variable:Array

    Kommentar


    • BigRitschi
      BigRitschi kommentierte
      Kommentar bearbeiten
      Hallo!

      Probier mal
      'messagespath' => '//192.168.178.50/Multimedia/TTS',
      'messageStorePath' => '//share/Multimedia/TTS/',

      lg, richard

    • Gast
      Gast kommentierte
      Kommentar bearbeiten
      Danke, das funktioniert nun! :-)

    • crasythom
      crasythom kommentierte
      Kommentar bearbeiten
      Bei mir wird die MP3 sauber abgelegt, aber nicht abgespielt. Wenn ich gleichzeitig die Sonos App offen habe, steht da immer Zugriff verweigert. Wie habt ihr denn die Rechte eingestellt?
      ==> Nachtrag: Jetzt geht es! Man muss den Ordner erst in der Songs-App verbinden!
      Zuletzt geändert von crasythom; 21.04.2016, 20:08.
  • Gast

    Hallo zusammen,

    ich habe noch einen Fehler den ich bisher nicht korrigieren konnte:

    Die Uhrzeit in den Logdateien und bei der clock-to-speach Ausgabe ist falsch (CEST + 6 Stunden).

    Als Workaround habe ich einfach bei der Definition der Stunden (in c2s.php + w2s.php) 6 Stunden abgezogen.
    $Stunden = intval(strftime("%H")-6);

    Woher kommt jedoch die falsche Uhrzeit? Die Uhrzeit auf dem QNAP server wird automatisch über das Internet synchronisiert und ist korrekt.
    Zuletzt geändert von Gast; 19.04.2016, 11:45.

    Kommentar


    • Gast
      Gast kommentierte
      Kommentar bearbeiten
      Fehler behoben. Ich berechne die Stunden und Minuten nun wie folgt:

      setlocale(LC_ALL,"de_DE.UTF8"
      date_default_timezone_set("Europe/Berlin"
      $Stunden = date("H"
      $Minuten = date("i"
  • HHoerner
    Extension Master
    • 26.09.2015
    • 101

    Hi, ich habe ein Problem mit der Wetterausgabe. Vielleicht hat da jeamnd eien Tip:
    Welcher Wert gehört ins Feld wgcity?
    Habe es mit geolookup versucht und dort gefundene IDs für den Wert CITY im CONFIG.PHP angeführt, aber erhalte immer Fehlermeldung. Habe den Wert jetzt Testweise mit 'VIENNA' befüllt.
    Das ist auch ein Wert den geolookup für meine Koordinaten als City über Web liefert.
    Rückmeldung in waether_raw_data.txt:


    {
    "response": {
    "version":"0.1",
    "termsofService":"http://www.wunderground.com/weather/api/d/terms.html",
    "features": {

    }

    ,
    "error": {
    "type": "invalidformat"

    ,"description": "you must supply a valid output format"

    }



    }

    Zusatzfrage: wie kann ich bei TTS die erzeugten MP3s nach Durchsage entfernen. Gibt es da einen Parameter oder muss das im Code/Script umgesetzt werden?
    LG Herbert
    in Verwendung: Lox MS, Air, 1wire, EnOcean, Modbus, FastForward Energy Cams, Foscam IPCams, Fronius + Sonnenbattie, LG A/C, Hue, Sonos

    Kommentar

    • Gast

      Hey Oli

      Habs endlich geschaft das Script auf meinem Synology zum laufen zu bringen. Das speichern von VoiceRSS haut zwar noch nicht so ganz, das ist aber auch eher Sekundär.

      Zur Zeit möchte ich vorallem Sonos Räume Gruppieren und lösen via Taster & Wecker. Soweit klappt das auch. Allerdings geht das Volume in allen Räumen auf 0, wenn ich den Syntax von deinem Skript für "Alle Gruppen Auflösen" verwende.

      Hast du da ein Tipp oder eine Ergänzung im Link?
      Falls nicht würde ich bei einem Auflösen mit einer Logik 1s verzögert via Loxone eine Lautstärke senden damit beim nächsten einschalten wieder was kommt. Fände ich aber nicht so schön..

      Kommentar

      • Matt
        Dumb Home'r
        • 15.12.2015
        • 23

        Hallo zusammen!

        Ich kann leider keine TTS Nachrichten abspielen. Es kommt immer die Fehlermeldung Fatal error: Uncaught Error: Call to undefined function t2s()
        Weiß jemand Rat? Danke

        Kommentar


        • Matt
          Matt kommentierte
          Kommentar bearbeiten
          Habe es bisher eigentlich immer nur mit einer mp3 und messageid gemacht. Nun da ich mehr Nachrichten ausgeben will habe ich einen Account bei VoiceRSS.org gemacht und den API Key in die Config eingepflegt. Dann habe ich mein messagepath und messageStorePath eingetragen. Dann probiert und es kam folgende Meldung:
          Fatal error: Uncaught Error: Call to undefined function t2s() in C:\xampp\htdocs\web\Sonos\sonos2.php:688 Stack trace: #0 {main} thrown in C:\xampp\htdocs\web\Sonos\sonos2.php on line 688
          Habe probiert andere Verzeichnisse zu benutzen bei messagepath, leider ohne Erfolg. Habe auch ältere Versionen des Scripts getestet mit folgendem Fehler:
          Warning: file_put_contents(//volume1/Daten/tts/be8ae19542fd4c6c87a00e96d0bd31a1.mp3): failed to open stream: No such file or directory in C:\xampp\htdocs\web\Sonostest\t2s.php on line 43

          Fatal error: Uncaught Exception: 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/31.9-26010 (ZP120) Connection: close s:ClientUPnPError in C:\xampp\htdocs\web\Sonostest\PHPSonos.inc.php:242 7 Stack trace: #0 C:\xampp\htdocs\web\Sonostest\PHPSonos.inc.php(966 ): PHPSonos->sendPacket('POST /MediaRend...') #1 C:\xampp\htdocs\web\Sonostest\sonos2.php(809): PHPSonos->Play() #2 {main} thrown in C:\xampp\htdocs\web\Sonostest\PHPSonos.inc.php on line 2427

        • Liver_64
          Liver_64 kommentierte
          Kommentar bearbeiten
          Deinem Log entnehme ich das du eine Synology nutzt! Hast du denn auch die php_open base dir Einstellungen angepasst? Du verwendest den Ordner Daten zum Speichern der mp3 und der ist meines Wissens nicht in den o.g. Einstellungen enthalten

        • Matt
          Matt kommentierte
          Kommentar bearbeiten
          Ja, ich nutze einen Synology. Aber nur zum zum Abspeichern der mp3s. Nicht als Webserver. Deshalb habe ich auch keine Einstellungen vorgenommen. Wenn ich die mp3s auf meinem Rechner speichern würde, weißt du wie ich den mount pfad herausfinde? Wäre vielleicht vernünftiger wenn ich alles von dort aus mache. Wenn ich bei den neueren Scripts die Ordner ändere, egal wie, kommt immer der oben genannte Fehler call to indefined function...
      • Gast

        Moin zusammen!
        Erstmal vielen Dank an Oliver, dass er dieses Projekt begonnen hat. Ich habe aber weiterhin folgende Fehlermeldung in Sonos:

        "Wiedergabe von xxx.mp3 nicht möglich - Freigabe von //raspberrypi/ ist nicht vorhanden"

        weil ich ständig mit PHP/Samba& Co. Berechtigungsprobleme mit den Ordnern hatte ist mein MessageStorePath einfach nur /var/www/html/ und der messagespath /raspberrypi/ ... nicht gerade elegant aber ich wusste mir nicht anders zu helfen.

        Vom Browser kann ich problemlos die MP3 Dateien auf dem Raspberry ausführen, bspw. 192.168.0.77/3.mp3
        Mit dem sendmessage Befehl erhalte ich aber die obige Fehlermeldung. Andere Kommandos funktionieren problemlos.

        Danke für die Hilfe!
        Jan

        Kommentar

        • Liver_64
          MS Profi
          • 07.09.2015
          • 591

          Hast du den Pi mal deiner Sonos Bibliothek hinzugefügt? Bei den Path Angaben vermisse ich den zweiten Slash am Anfang z.B. //var/... und //raspberrypi/
          Zuletzt geändert von Liver_64; 05.05.2016, 20:17.
          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

          • Gast

            So, ich hab jetzt einfach mal ganz von vorne angefangen und alles von grund auf neu aufgesetzt.

            läuft auch schon mal besser als vorher. sonos kann jetzt auch die mp3s auf dem raspberry abspielen. Das einzige was gerade noch nicht laufen möchte ist Ivona TTS.

            Wenn ich mit der Odyssee durch mache ich mal eine Anleitung für die absoluten noobs. Zumindest VoiceRSS läuft jetzt und Ivona erstellt die mp3, aber ich bekomme die selber Fehlermeldung wie in post #181 (falsch kodiert).

            Besten Gruß,
            Jan
            Zuletzt geändert von Gast; 14.05.2016, 13:22.

            Kommentar

            • Tommes78
              MS Profi
              • 24.09.2015
              • 613

              Top Projekt...Habe es auf einer Synolgy am laufen, nach Berechtigungsproblemen auf Angang (http User Zugriff geben) läuft es nach ersten Tests bei mir schonmal ganz gut.
              Das mit der Wunderground w2s Integration habe ich noch nicht hinbekommen da ich nicht weiß womit ich die variable 'wgcity' aus der config.php füllen muss.

              geolookup habe ich mir ausgeben lassen, aber ich weiß nicht welcher Wert in 'wgcity' gespeichert werden muss. Mit der ID funktioniert es schonmal nicht.

              Vl. kann mir jemand helfen?

              Kommentar

              • -Chris-
                Smart Home'r
                • 09.01.2016
                • 85

                Zitat von -Chris-
                Hallo,

                ich hab es endlich geschafft im A1 Router den Sonosgeräten im Haus feste IP Adressen zu vergeben aber trotzdem hab ich noch immer die Probleme mit dem Ansteuern könnt ihr mir da helfen ich steh gerade voll an.

                ich habe nur mal einen Testbetrieb wie im Screenshot ersichtlich aufgebaut.

                Ich möchte in Zukunft die Sonosgeräte über KNX Taster steuern und auch wenn jemand anläutet oder wenn es einen Alarm gibt dass die Sonosgeräte dies wiedergeben

                Das ganze soll über den NAS Asustor gehen. Bin ich da überhaupt auf den richtigen Weg? Denn in meinem Test betrieb tut sich bei den Sonosgeräten nichts keine Pause kein Play nichts..

                Bittttte Bitttte um Hilfe DANKE


                [ATTACH=CONFIG]n37197[/ATTACH]

                Hallo,

                konnte das Problem lösen man muss, wenn man die Applikation von Loxone verwenden möchte, den port 1400 an die IP Adresse anhängen.

                gruß Chris
                1x Miniserver, 5x Loxone Dimmer, 7x 16 fach MDT Aktoren, 1x 16 fach binär Eingang, 1x 8 fach binär Eingang

                Kommentar

                • HHoerner
                  Extension Master
                  • 26.09.2015
                  • 101

                  Zitat von Tommes78
                  Top Projekt...Habe es auf einer Synolgy am laufen, nach Berechtigungsproblemen auf Angang (http User Zugriff geben) läuft es nach ersten Tests bei mir schonmal ganz gut.
                  Das mit der Wunderground w2s Integration habe ich noch nicht hinbekommen da ich nicht weiß womit ich die variable 'wgcity' aus der config.php füllen muss.

                  geolookup habe ich mir ausgeben lassen, aber ich weiß nicht welcher Wert in 'wgcity' gespeichert werden muss. Mit der ID funktioniert es schonmal nicht.

                  Vl. kann mir jemand helfen?
                  Hi Tommes78,
                  hatte gleiches Problem . hab es so gelöst:

                  GeoLookup-Abfrage nach Wetterstation im Umfeld Wien:

                  Ergab nachfolgenden Response:
                  "response": { "version":"0.1", "termsofService":"http://www.wunderground.com/weather/api/d/terms.html", "features": { "geolookup": 1 } } , "location": { "type":"INTLCITY", "country":"OS", "country_iso3166":"AT", "country_name":"Austria", "state":"", "city":"Vienna", "tz_short":"CEST", "tz_long":"Europe/Vienna", "lat":"48.20000076", "lon":"16.37000084", "zip":"00000", "magic":"1", "wmo":"11034", "l":"/q/zmw:00000.1.11034", "requesturl":"global/stations/11034.html", "wuiurl":"http://www.wunderground.com/global/stations/11034.html", "nearby_weather_stations": { "airport": { "station": [ { "city":"Wien / City", "state":"", "country":"Austria", "icao":"", "lat":"48.19834137", "lon":"16.36643028" } ,{ "city":"Vienna Schwechat", "state":"", "country":"OS", "icao":"LOWW", "lat":"48.11083221", "lon":"16.57083321" } ,{ "city":"Tulln", "state":"", "country":"OS", "icao":"LOXT", "lat":"48.32394028", "lon":"16.11805916" } ,{ "city":"Voeslau Flugfeld", "state":"", "country":"OS", "icao":"LOAV", "lat":"47.96500015", "lon":"16.26055336" } ] } , "pws": { "station": [ { "neighborhood":"B1", "city":"Wien", "state":"", "country":"AT", "id":"IWIEN1085", "lat":48.200001, "lon":16.366699, "distance_km":0, "distance_mi":0 }, ... Aus diesem Response wollte ich auch immer die ID (also z.B. "IWIEN1085") verwenden; nur hat das leider kein Ergebnis sondern nur Fehlermeldung geliefert. Mit der ID "LOWW" in wgcity bekomme ich nun einen vernünftigen Repsonse (eben halt für den Flughafen). Für umliegende "kleine" Wetterstationen geht es bei mir daher auch nocht nicht. Hatte diesbezüglich noch keine Zeit zum Suchen. PS: wie vermeidest Du dass für getätigte Ansagen nachher die temporär erzeugten MP3s herumliegen? Da suche ich noch nach Paramter. Muss wohl in das Programm gehen (was ich vermeiden wollte da ich ohne Adptierung leichter auf neue Vorlage nachziehen kann).
                  LG Herbert
                  in Verwendung: Lox MS, Air, 1wire, EnOcean, Modbus, FastForward Energy Cams, Foscam IPCams, Fronius + Sonnenbattie, LG A/C, Hue, Sonos

                  Kommentar

                  • Tommes78
                    MS Profi
                    • 24.09.2015
                    • 613

                    He HHoerner,
                    hier ist ja doch noch jemand aktiv Danke für deine Hilfe das hat schonmal geklappt.

                    Um das löschen der Dateien habe ich mich noch nicht wirklich gekümmert, aber das sollte ja nicht so das große Problem sein. Zur Not mit einem zusätzlichen Script alles aus dem Ordner löschen was älter als x Tage ist. Ist halt nur blöd, wenn da ansagen drin sind die du nicht löschen willst.

                    Ich habe aber irgendwie noch das Problem das ich in Loxone eigentlich irgendwie den derzeitigen Status abfragen möchte, als wie das Volume oder wie ist der Status, wird gerade was gespeilt oder stoppt der Player. So könnte man dann in Loxone noch auf Sachen ragieren. Ist soetwas überhaupt vorgesehen?

                    Kommentar


                    • Liver_64
                      Liver_64 kommentierte
                      Kommentar bearbeiten
                      Lies dir die Readme bzw. den Post noch mal durch. Da steht beschrieben wie du die Info in den MS holst.
                      Bzgl. löschen der Dateien habe ich mir keine Gedanken gemacht. Die wiederkehrenden MP3's benenne ich in Zahlen um und nutze dann die messageid Funktion, alle anderen lösche ich monatlich bzw. wenn ich mal daran denke.
                  • Gast

                    Servus zusammen,

                    hat das sonst noch jemand mal mit Google Play Music ausprobiert?
                    Klingelfunktion funktioniert bei mir mit normalen Playlists und Radiostationen wie es soll (Musik AUS, Klingel MP3 wird mit gewünschter Lautstärke abgespielt, Musik läuft mit alter Lautstärke weiter). Bei Google Play Music Empfehlungen (z.B. aus: Es ist Dienstagabend/Einschlafen/Elektronische Sounds/Downtempo Instrumentals... Alles andere geht natürlich auch) funktioniert das leider nicht. Es wird lediglich die gerade gespielte Musik in der Lautstärke der Klingellautstärke weitergespielt und verharrt dort. Die Klingel MP3 wird in der Playlist abgelegt aber nicht gestartet...

                    Hat da jemand eine Lösung?

                    Grüße

                    Kommentar

                    • Liver_64
                      MS Profi
                      • 07.09.2015
                      • 591

                      Aufgrund der unterschiedlichen Strukuren des jeweiligen Dienstes ist es nahezu unmöglich das so umzusetzen. Der bei mir seid langem funktionierende Workaround ist die entsprechende Playliste als Sonos PL zu speichern und dann mit dem Script diese PL aufzurufen. Updates der PL mache ich im wöchentlichen Rythmus.
                      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

                      • Gast

                        Zitat von Liver_64
                        Aufgrund der unterschiedlichen Strukuren des jeweiligen Dienstes ist es nahezu unmöglich das so umzusetzen. Der bei mir seid langem funktionierende Workaround ist die entsprechende Playliste als Sonos PL zu speichern und dann mit dem Script diese PL aufzurufen. Updates der PL mache ich im wöchentlichen Rythmus.
                        Ok, Danke für die Info.
                        Da ich es momentan leider nicht ausprobieren kann (bin mit den jeweiligen Diensten momentan noch mit Probemonaten unterwegs...): Betrifft das genauso Spotify, etc.? Oder ist das auf Google, bzw. einige wenige beschränkt?

                        Kommentar

                        Lädt...