Sonos mittels PHP Skript steuern

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Liver_64
    MS Profi
    • 07.09.2015
    • 591

    ja, ich vermute an dem nicht vorhanden curl Packet auf dem deinem Raspi. In den vorherigen Versionen habe ich curl nicht genutzt.
    Prüf doch in der deiner php.ini ob es aktiviert ist!
    apt-get install php5-curl
    /etc/init.d/apache2 restart
    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
      doc-brown kommentierte
      Kommentar bearbeiten
      VIELEN DANK!!! das wars wohl ;-) nachinstalliert und es geht ;-) hab ich offensichtlich nicht mitbekommen, dass das notwendig ist auf dem raspi :-)

      danke dir!
  • Liver_64
    MS Profi
    • 07.09.2015
    • 591

    Guude zsamme,
    ich stelle hiermit die Entwicklung des Sonos Plugin für den Loxberry leider ein. Das Plugin funktioniert soweit, nur bekomme ich es mit der Konfigurationsseite in Perl/CGI nicht hin.
    Dafür ist jetzt aber wieder mehr Zeit für neue Ideen rund um Sonos :-)
    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

    • Christian Fenzl
      Lebende Foren Legende
      • 31.08.2015
      • 11201

      Wo hapert's denn?
      Vielleicht kann dir jemand damit helfen.
      Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

      Kommentar


      • Liver_64
        Liver_64 kommentierte
        Kommentar bearbeiten
        an Perl/CGI und das Speichern/Einlesen einer dynamischen HTML Tabelle mit 2 Text Input Feldern als späteres array für PHP (radio_name[]=SWR3, FFH, usw. Habe mich nahezu totgegooggelt und kriege es einfach nicht hin :-( Mir ist das alles zu zeitaufwendig, gerade weil man die Sprache nicht kann.
    • uli
      LoxBus Spammer
      • 30.08.2015
      • 224

      Hallo,

      ich bin mit der neuen Version noch etwas verwirrt. Ich lasse zwei Zonen (badunten + dusche) eigentlich immer als Gruppe laufen. Nun möchte ich den nächsten Radiosender oder das nächste Lied abspielen.

      Mit dem Kommando "/index.php?zone=badunten&action=next" an den Group Coordinator klappt das ja auch wunderbar. Nun wird der Group Coordinator aber hin und wieder gewechselt (siehe #372). Sende ich das Kommando nun an die Box die kein Group Coordinator mehr ist, erhalte ich ja eine Fehlermeldung.

      Wie setze ich die Funktion am einfachsten um? Gibt es ein "groupaction"-Kommando?

      Kommentar


      • uli
        uli kommentierte
        Kommentar bearbeiten
        Genau. Es ist zwar keine T2S sondern W2S, aber das Prinzip ist ja das gleiche. Ich denke ich werde einfach in Zukunft die W2S mit der vorhandenen Gruppe statt nur mit einer Box abspielen, dann sollte das Problem ja erst mal gelöst sein. (Habe nämlich gerade gesehen, dass es dieses Kommando auch gibt.)

        Wie verhält sich Sonos eigentlich, wenn zur vorhandenen Gruppe eine dritte Box temporär für T2S hinzukommt? Bleibt der GC danach der alte?

      • Liver_64
        Liver_64 kommentierte
        Kommentar bearbeiten
        das lässt sich relativ einfach lösen. Beim nächsten Release wird es dabei sein

      • uli
        uli kommentierte
        Kommentar bearbeiten
        Klasse!

        Wenn Du da am programmieren bist, hätte ich noch einen kleinen Verbesserungsvorschlag: Wenn man etwas über eine bereits bestehende Gruppe abspielen möchte, wäre es doch ev. sinnvoll wenn das Skript die bestehende Gruppe erkennt und sie dann vorher nicht trennt und neu zusammen setzt.

        Dann hätte man etwas Zeit gewonnen. Vielleicht ist das ja auch Quatsch oder zu schwer umzusetzen, aber ich dachte mir ich schlag es mal vor.
    • Christian Fenzl
      Lebende Foren Legende
      • 31.08.2015
      • 11201

      Liver_64 Kannst du deinen bisherigen Code irgendwo ablegen, z.b. Github.
      Ich bin auch Perl-Neuling, und bei sowas ($_ =~ s/<!--\$(.*?)-->/${$1}/g muss ich meine Übelkeitsreflexe zurückhalten :-)
      Wenn wir uns die nötigen Zeilen gemeinsam anschauen, schaffen wir's vielleicht, und der Professor schaut vielleicht auch mal drauf.

      Es wäre schade, wenn du schon so weit bist, das einfach einzustellen.
      Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

      Kommentar

      • Liver_64
        MS Profi
        • 07.09.2015
        • 591

        Hi Christian,
        Danke für dein Angebot mal drüber zu schauen. Perl ist wirklich furchtbar, aber auch mächtig. Ich werde noch einige Fehler beseitigen und dann auf Github posten.
        Wäre wirklich Schade, aber nur im Nirvana rumstochern erhöht den Frustfaktor immens und verringert den Spaß daran. Funktionieren tut es ja schon lange, wenn da nicht diese Hyroglyphen wären...
        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

        • Prof.Mobilux
          Supermoderator
          • 25.08.2015
          • 4591

          Wenn das Skript an sich funktioniet schaue ich auch gerne mal über den Perlteil. Ich habe mich nur immer zurückgehalten weil ich selbst kein Sonos habe und daher nicht testen kann.

          Am besten wirklich auf GIT hochladen - dann kriegen wir das schon hin :-)
          🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine


          LoxBerry - Beyond the Limits

          Kommentar


          • Liver_64
            Liver_64 kommentierte
            Kommentar bearbeiten
            vielen Dank vorab. Für den Perl Teil bzw. die Config Seite kann ich dir gerne ein Sonos System "simulieren". Für das Testen der http Befehle habe ich bereits genug User, da hat sich auch gegenüber der bestehenden Version nichts geändert.

          • Liver_64
            Liver_64 kommentierte
            Kommentar bearbeiten
            Hey Michael. Ich habe das Loxberry Plugin auf Github gepostet (siehe PN).
            Wäre echt toll wenn wir das hinkriegen würden, vielen Dank vorab schon mal :-)
        • Fuxi
          LoxBus Spammer
          • 26.08.2015
          • 255

          Wie schon mal erwähnt,ich stehe euch bereit zum Testen für das Loxberry Plugin.

          EDIT:
          Ich möchte nochmal erwähnen, dass ich sehr erfreut wäre über das Sonos Loxberry Plugin. Leider kann ich euch mit dem Programmieren nicht helfen (keine Ahnung davon) aber wenns ums Testen geht bin ich dabei. Hoffe es wird nochwas mit dem Plugin !!!
          Zuletzt geändert von Fuxi; 19.11.2016, 17:44.

          Kommentar

          • Gast

            Hi,
            erstmal vielen dank für deine tolle Arbeit! Damit hast du mir viel Zeit und Nerven erspart
            Ich gebe zu ich verwende deine Arbeit nicht in Verbindung mit Loxone, sondern ich entwickle mein eigenes System aber da passen deine Scripte auch perfekt rein.

            Was mir dabei aufgefallen ist, ist ein kleiner Fehler in der Programmierung. Ich weis nicht ob dieser bereits bekannt ist, aber meine Suche hier im Thread hat nichts ergeben.
            Mir ist aufgefallen, dass Befehle, welche in die Playlist eingereifen (z.b. sendmessage für TTS-Durchsagen) nicht mehr funktionieren wenn sich in der Playliste mehr als 1000 Songs befinden. Aufgefallen ist mir das bei einer 8000 Song Playlist in Spotify. Wenn dann eine TTS Ansage angestoßen wird, wird diese zwar an das Ende der Liste eingefügt, aber es wird anstatt der durchsage immer Song Nr 1001 in der Playliste abgespielt mit der fürs TTS gedachten Lautstärke.
            Es wäre echt klasse, wenn das gefixt werden würde, oder wenn mir jemand sagen könnte an welcher Stelle ich selbst Hand anlegen kann

            Gruß Tim

            Edit:Ich hab noch vergessen zu erwähnen, ich habe die Dateien schon durchforstet und glaube das Problem liegt daran, dass die Position des Tracks aus der Playlist errechnet wird. In der Funktion GetCurrentPlaylist() in PHPSonos steht aber diese Zeile <RequestedCount>1000</RequestedCount>
            Ich dachte erst es liegt daran, dass er beim erfassen der Playlist nur bis 1000 Einträge zählt. Aber selbst wenn ich die Zahl auf 10000 erhöhe ändert sich das Ergebnis nicht.
            Zuletzt geändert von Gast; 18.11.2016, 19:01.

            Kommentar


            • Gast
              Gast kommentierte
              Kommentar bearbeiten
              dankeschön das testen übernehme ich natürlich umgehend sobald du was rausfindest

            • Liver_64
              Liver_64 kommentierte
              Kommentar bearbeiten
              muss euch beide enttäuschen, das lässt sich nicht ändern da von Sonos nur 1.000 Datensätze geliefert werden! Ich habe das mit DeviceSpy nachvollzogen, habe dabei auch eine Zählung von meiner PL (1.034 Titel) erhalten, aber die Rückgabe der Datensätze ist bei 1.000 begrenzt.

            • Liver_64
              Liver_64 kommentierte
              Kommentar bearbeiten
              habe das Problem gelöst. Kommt mit dem nächsten Release :-)
          • Gast

            leider wird die aktuelle wiedergabe nach abspielen von TTS Nachrichten nicht wieder gestartet ... ist das grundsätzlich so, oder hab ich hier was falsch "eingestellt"?!

            Kommentar

            • Gast

              Zitat von dersteve
              leider wird die aktuelle wiedergabe nach abspielen von TTS Nachrichten nicht wieder gestartet ... ist das grundsätzlich so, oder hab ich hier was falsch "eingestellt"?!
              Das ist nicht generell so. Bei mir funktioniert das einwandfrei..

              Kommentar

              • doc-brown
                Lox Guru
                • 13.09.2015
                • 1454

                hey,

                die funktion:

                http://10.70.19.5/loxone/index.php?z...mmer&text=dies ist ein Test an eine gruppe&groupvolume=40

                sendet ja die textmessage an die ganze gruppe.

                gibts sowas auch für w2s ?

                sorry - vielleicht hab ichs übersehen...

                danke euch :-)



                Kommentar


                • Liver_64
                  Liver_64 kommentierte
                  Kommentar bearbeiten
                  http://<DEINE IP>/<DEIN VERZEICHNIS>/index.php/?zone=<ZONE>&action=sendgroupmessage&member=><ZONE 1>,<ZONE2>&weather
              • Gast

                Hi,

                die Möglichkeiten des PHP Script finde ich sehr interessant. Danke für die Arbeit daran.
                Ich habe es auch schon auf meinem rapsi eingespielt erhalte aber nun immer die Fehler Meldung (siehe Screenshoot)
                Dabei ist es egal ob ich den Zonennamen klein schreibe , eine oder zwei Player angebe. Woran könnte das liegen ? (Die IP Adressen sind in Ordnung)

                VG
                Andreas

                PS: Hier der Eintrag in der Config.php:

                $config = array(
                # Hier werden die einzelnen Sonos Zonen gepflegt (ACHTUNG: kleingeschreibung)
                # die Aufschl�sselung ist wie folgt: 'Zone' => array('IP Adresse','Standardvolume f�r T2S Ansagen','Standardvolume f�r Sonos')
                'sonoszonen' => array(
                'esszimmer' => array('192.168.178.29','40','20'),
                'wohnzimmer' => array('192.168.178.31','40','20')
                ),

                # Hier k�nnen eigene Radio Sender definiert werden, welche bei 'nextradio' oder 'prevradio' angesteuert werden
                #
                # An der Stelle kommt nur der Stationsname rein.
                'radio_name' => array ( "Radio 90.1",
                "WDR2 Rheinland"
                ),

                # und hier die URL zum Stationsnamen.
                'radio_adresse' => array ("x-rincon-mp3radio:http://edge.live.mp3.mdn.newmedia.nacamar.net/ps-radiomg/livestream.mp3",
                "x-rincon-mp3radio:http://wdr-mp3-m-wdr2-koeln.akacast.akamaistream.net/7/812/119456/v1/gnl.akacast.akamaistream.net/wdr-mp3-m-wdr2-koeln"
                ),

                Zuletzt geändert von Gast; 22.11.2016, 23:27.

                Kommentar


                • Holger K.
                  Holger K. kommentierte
                  Kommentar bearbeiten
                  Oh Mann, ja klar! Sowas nennt man "Brett vorm Kopf". Danke für deine Hilfe.
                  Werde bei Gelegenheit was zusammenbasteln.

                • Gast
                  Gast kommentierte
                  Kommentar bearbeiten
                  Hi,

                  ich hatte nun Gelegenheit zum Testen . Wenn man versteht, dass es ein Script ist und keine Click Webseite, funktioniert das Ganze auch. Danke für den Hinweis. Das Ganze ist bei mir auf nem Raspi wo auch Fhem drauf läuft schon sehr langsam. Da werde ich mir was anderes einfallen lassen müssen.

                  Greetings.

                • Liver_64
                  Liver_64 kommentierte
                  Kommentar bearbeiten
                  steht ganz groß im Thread Titel ;-)
              • tomjons
                Extension Master
                • 27.10.2016
                • 123

                Hallo,

                kann mir mal jemand verraten welche ports ich von extern brauche.
                habe das script auf meinen Webserver und muss die sonos zone nun per dyndns anstatt lokaler ip adresse ansteuer:

                'kueche' => array('yx,ddnss.de:9090','30','30'),

                Portfreigabe der Fritzbox müsste dann wie lauten:

                9090 zu 80 und ip vom Zoneplayer ?

                Kommentar


                • Liver_64
                  Liver_64 kommentierte
                  Kommentar bearbeiten
                  Das wird nicht funktionieren, da Sonos bekanntermaßen nicht außerhalb des WLANs errreichbar ist.
                  Du kannst deinen Webserver per DynDNS steuern, dann lauten der Befehl statt http://<DEINE IP>... halt http://<DYNDNS>...
                  So setzte ich TTS von wo auch immer ab (z.B. Smartphone)
              • allp
                Smart Home'r
                • 23.09.2015
                • 64

                Hallo zusammen,

                ersmal danke Liver_64 für das coole Tool.
                Das einrichten auf einem Synology Server hat auf anhib funktioniert. Sonos kann ich nun schon steuern.
                Aber einige Probleme habe ich noch:
                1. Bei Eingabe von http://192.168.178.50/sonos/index.ph...er&action=play wird Sonos gestartet, was auch richtig ist. Leider wird die Lautstärke schrittweise auf max erhöht. Wieso?
                2. Leider kriege ich es nicht hin Texte wiederzugeben (TTS). Bei Ivona habe ich mich erfolgreich regestriert und die MP3 werden nach Eingabe von: http://192.168.178.50/sonos/index.ph...ht%20es%20dir? auch im angegebenem Pfad gespeichert. Die Wiedergabe wird wie beschrieben unterbrochen und startet wieder nach ner gewissen Zeit. Aber der Text wird einfach nicht wieder gegeben.
                3. Clock to Speech geht aucvh nicht. Auch hier wird die Wiedergabe unternrochen aber die zeit wird nicht durchgesagt.

                Was mache ich falsch?

                Kommentar


                • allp
                  allp kommentierte
                  Kommentar bearbeiten
                  Egal ob leer PL oder radio. Eine MP3 wird erstellt aber nicht wiedergegeben. Sonos erkennt diese auch, da ich in der app den namen der mp3 angezeigt bekomme aber mit der meldung dass der zugriff auf Synology verweigert ist verweigert ist. Kann es sein das ich irgendwo noch Synology Zugangsdaten eingeben muss?

                • Liver_64
                  Liver_64 kommentierte
                  Kommentar bearbeiten
                  Ja, du musst den User (...action=getuser) der Gruppe http hinzufügen

                • allp
                  allp kommentierte
                  Kommentar bearbeiten
                  So ich habs jetzt. De fehler lag daran, dass ich Synology nicht als Bibliothek unter sonos angelegt habe.
              Lädt...