Ankündigung

Einklappen
Keine Ankündigung bisher.

HS & Sonos - gibts was Neues?

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

    HS/FS HS & Sonos - gibts was Neues?

    Hallo!

    Ich wollte mal nachfragen ob jemand etwas Neues bezüglich der Anbindung Homeserver - Sonos weiß?

    Nachwievor schwanke ich zwischen Sonos und Squeezebox, steuerbar sowohl über HS als auch iPhone wobei ja anscheinend bei Bedienung und Geschwindigkeit des Browsens die iPhone-Variante von Sonos die Nase vorn haben dürfte (zumindest war das mein Eindruck).

    @meudenbach: Natürlich wäre ich auch an einer Lösung mit m..mh interessiert - wenn ich Sie mal restlos verstehen würde ;-)

    lg
    Fredl

    #2
    wenn ich Sie mal restlos verstehen würde ;-)
    Da kippst Du Öl ins Feuer... Ja aber ich geb zu, bei der derzeitigen Komplexität ist das schwierig...

    LG

    Kommentar


      #3
      Hi,
      ich habe Sonos mit HS verbunden.

      Über eine Gruppenadresse wird mit dem einschalten des Lichts im Bad´s ein Script von Hs auf dem Webserver (Qnap) gestartet.

      Für jede Aktion habe ich ein eigenes Script: Play, pause, 50% Lautstärke etc.

      Gruß Marc

      <?
      //Sonos ZP IPAdresse
      $address = "192.168.177.50"; // z.B. Bad
      $action = "Play"; //Pause, Play, SetVolume, Next, Previous, Rewind
      //$action = "SetMute";
      $volume = 25; //Nur bei SetVolume
      $domute = 0; //Nur bei SetMute / 0 > Musik / 1 > kein Ton
      //--- Nix verändern ab hier
      $content_pause='POST /MediaRenderer/AVTransport/Control HTTP/1.1
      CONNECTION: close
      HOST: '.$address.':1400
      CONTENT-LENGTH: 252
      CONTENT-TYPE: text/xml; charset="utf-8"
      SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Pause"
      <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/enco...:Body><u:Pause xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><InstanceID>0</InstanceID></u:Pause></s:Body></s:Envelope>';
      $content_play='POST /MediaRenderer/AVTransport/Control HTTP/1.1
      CONNECTION: close
      HOST: '.$address.':1400
      CONTENT-LENGTH: 266
      CONTENT-TYPE: text/xml; charset="utf-8"
      SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Play"
      <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/enco...s:Body><u:Play xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><InstanceID>0</InstanceID><Speed>1</Speed></u:Play></s:Body></s:Envelope>';
      $content_next='POST /MediaRenderer/AVTransport/Control HTTP/1.1
      CONNECTION: close
      HOST: '.$address.':1400
      CONTENT-LENGTH: 250
      CONTENT-TYPE: text/xml; charset="utf-8"
      SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Next"
      <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/enco...s:Body><u:Next xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><InstanceID>0</InstanceID></u:Next></s:Body></s:Envelope>';
      $content_previous='POST /MediaRenderer/AVTransport/Control HTTP/1.1
      CONNECTION: close
      HOST: '.$address.':1400
      CONTENT-LENGTH: 258
      CONTENT-TYPE: text/xml; charset="utf-8"
      SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Previous"
      <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/enco...dy><u:Previous xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><InstanceID>0</InstanceID></u:Previous></s:Body></s:Envelope>';
      $content_rewind='POST /MediaRenderer/AVTransport/Control HTTP/1.1
      CONNECTION: close
      HOST: '.$address.':1400
      CONTENT-LENGTH: 296
      CONTENT-TYPE: text/xml; charset="utf-8"
      SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Seek"
      <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/enco...s:Body><u:Seek xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><InstanceID>0</InstanceID><Unit>REL_TIME</Unit><Target>00:00:00</Target></u:Seek></s:Body></s:Envelope>';
      $content_setvolume='POST /MediaRenderer/RenderingControl/Control HTTP/1.1
      CONNECTION: close
      HOST: '.$address.':1400
      CONTENT-LENGTH: 32'.strlen($volume).'
      CONTENT-TYPE: text/xml; charset="utf-8"
      SOAPACTION: "urn:schemas-upnp-org:service:RenderingControl:1#SetVolume"
      <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/enco...y><u:SetVolume xmlns:u="urn:schemas-upnp-org:service:RenderingControl:1"><InstanceID>0</InstanceID><Channel>Master</Channel><DesiredVolume>'.$volume.'</DesiredVolume></u:SetVolume></s:Body></s:Envelope>';
      $content_startradio='POST /MediaRenderer/AVTransport/Control HTTP/1.1
      CONNECTION: close
      HOST: '.$address.':1400
      CONTENT-LENGTH: 1106
      CONTENT-TYPE: text/xml; charset="utf-8"
      SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#SetAVTransportURI"
      <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/enco...AVTransportURI xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><InstanceID>0</InstanceID><CurrentURI>x-rincon-mp3radio://lsd.newmedia.tiscali-business.com/bb/redirect.lsc?content=live&amp;media=ms&amp;stream= ndr/live/ndr1wellenord.wma</CurrentURI><CurrentURIMetaData>&lt;DIDL-Lite xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:upnp=&quot;urn:schemas-upnp-org:metadata-1-0/upnp/&quot; xmlns:r=&quot;urn:schemas-rinconnetworks-com:metadata-1-0/&quot; xmlns=&quot;urn:';
      $content_startradio.='schemas-upnp-org:metadata-1-0/DIDL-Lite/&quot;&gt;&lt;item id=&quot;R:0/42&quot; parentID=&quot;R:0&quot; restricted=&quot;true&quot;&gt;&lt;dc:title&gt;Wel le Nord&lt;/dc:title&gt;&lt;upnp:class&gt;object.item.audioIte m.audioBroadcast&lt;/upnp:class&gt;&lt;desc id=&quot;cdudn&quot; nameSpace=&quot;urn:schemas-rinconnetworks-com:metadata-1-0/&quot;&gt;RINCON_AssociatedZPUDN&lt;/desc&gt;&lt;/item&gt;&lt;/DIDL-Lite&gt;</CurrentURIMetaData></u:SetAVTransportURI></s:Body></s:Envelope>';
      $content_setmute='POST /MediaRenderer/RenderingControl/Control HTTP/1.1
      CONNECTION: close
      HOST: '.$address.':1400
      CONTENT-LENGTH: 314
      CONTENT-TYPE: text/xml; charset="utf-8"
      SOAPACTION: "urn:schemas-upnp-org:service:RenderingControl:1#SetMute"
      <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/enco...ody><u:SetMute xmlns:u="urn:schemas-upnp-org:service:RenderingControl:1"><InstanceID>0</InstanceID><Channel>Master</Channel><DesiredMute>'.$domute.'</DesiredMute></u:SetMute></s:Body></s:Envelope>';
      //send via socket
      $port = 1400;
      switch($action)
      {
      case "Pause":
      $content = $content_pause;
      break;
      case "Play":
      $content = $content_play;
      break;
      case "SetVolume":
      $content = $content_setvolume;
      break;
      case "Next":
      $content = $content_next;
      break;
      case "Previous":
      $content = $content_previous;
      break;
      case "Rewind":
      $content = $content_rewind;
      break;
      case "StartRadio":
      $content = $content_startradio;
      break;
      case "SetMute":
      $content = $content_setmute;
      break;
      }

      $fp = fsockopen ($address, $port, $errno, $errstr, 10);
      if (!$fp) {
      echo "$errstr ($errno)<br />\n";
      } else {
      fputs ($fp, $content);
      $ret = "";
      while (!feof($fp)) {
      $ret.= fgets($fp,128);
      }
      fclose($fp);
      }

      //Rückgabe
      if(strpos($ret, "200 OK") === false)
      {
      echo $ret;
      } else {
      echo "OK";
      }
      ?>

      Kommentar


        #4
        Meinen vollen Respekt !!!!

        wie bist Du darauf gekommen? Gibt es endlich eine Doku zum Protokoll, oder hast das mühselig mit einem Sniffer ausgelesen?

        würde das gern in mmh einbinden, und wie das ausschaut geht das auch.

        LG

        Kommentar


          #5
          Oh, doch wieder was Neues bei Sonos. Dabei hab ich mich jetzt schon sehr mit der von Mike vorgeschlagenen zentralen Variante mit einem Russound im Keller angefreundet.


          @meudenbach

          Apropos Mike: Ich hab Dir noch eine private Nachricht geschickt, es ginge ums konkrete Feintuning und der Eli steht in den Startlöchern...

          Kommentar


            #6
            Ich mach mein Postfach bald dicht, dann hört das auf ... Habe das nicht im Fokus !!!

            LG

            P.S.: RUSSOUND und SONOS .. schlechter Vergleich

            Kommentar


              #7
              Ich habe die Idee und Script ist aus diesem Forum:
              Einzelne Sonos Player ansteuern - IP-Symcon Community Forum

              Habe es danach noch angepasst.

              Kommentar


                #8
                auf die Art und Weise steuere ich auch mein Sonos System, allerdings mit Misterhouse und nicht mit dem HS...

                Im IP-Symcon Forum gibt es auch weitere Kommandos wie Playliste auswählen, Tracks hinzufügen, Internetradio, externe Quelle auswählen etc.

                Anbei ein Bild wie die Steuerung des Sonos Systems über das Info Terminal Touch bei mir aussieht.
                Angehängte Dateien
                Gruß,
                Marc

                Kommentar


                  #9
                  Habe hier mal drei Screenshots von meiner HS-logik angehängt:
                  Angehängte Dateien

                  Kommentar


                    #10
                    Hallo Marc,

                    wie hast du das mit der Regelung der Lautstärke geregelt? Hast du für jede Lautstäreke ein eigenes Script?

                    Kommentar


                      #11
                      Zitat von marct Beitrag anzeigen
                      wie hast du das mit der Regelung der Lautstärke geregelt? Hast du für jede Lautstäreke ein eigenes Script?
                      Nein, in Misterhouse geht alles mit Perl.
                      Ich habe ein Perl-Skript zur Steuerung der Sonos-Kisten und darin für jede Funktion eine Subroutine, der ich z.B. die ID der jeweiligen Box und im Fall der Lautstärkeregelung noch einen Zahlenwert für die Lautstärke übergebe. Ein Tastendruck auf dem InfoTerminal macht bei mir 5% leiser/lauter (damit es besser klingt in 1% Schritten und 0.5s Pause zwischen den Schritten):
                      Code:
                      if (state_now $Sonos_Leiser) {
                         for($i=1;$i<6;$i++){
                            Sonos_Volume($SonosPlayerNR, $SonosVolume-$i);
                            select(undef, undef, undef, 0.5);                  # sleep 0.5s between every step
                         }
                         $SonosVolume -= $i
                      }
                      Gruß,
                      Marc

                      Kommentar


                        #12
                        Hallo marct!

                        Endlich hat jemand eine Lösung gefunden! Find ich toll. Ich hab zwar noch keinen Sonos Player aber unter diesem umständen werde ich gleich aufrüsten! Davor wollte ich aber noch fragen ob du eine genaue Anleitung posten kannst wie man diese script zur Steuerung anlegt und in welchem Ordner bzw. wo man diese dann speichern muß um sie per Ip Telegramme senden kann.

                        Übrigens kann man über diese Variante eigentlich auch den Status bzw. Playlists und Titeln vom Sonos Player abfragen!

                        Freu mich auf deine Antwort
                        Lg

                        Thomas3007

                        Kommentar


                          #13
                          Die Phpscripte werden auf deinem Webserver abgelegt und auf diesem durch HS gestartet. Ich hatte drei Screenshots gepostet wo die Einstellung im HS angezeigt wird.

                          Abfrage:
                          So weit bin ich leider noch nicht. Bisher kann ich jeden Sonosplayer separat einschalten, Laustärke ändern, Titel vor zurück. Mehr habe ich in den Script noch nicht ändern können.

                          Kommentar


                            #14
                            Hi!

                            Finde es toll, dass es immer wieder Bastler gibt, die sich mit solchen Themen befassen!

                            Hat sich eigentlich hier etwas getan? Wir haben seit ein paar Tagen ein Sonos System im Haus, ist toll, aber wäre super, wenn man es in Szenen einbauen kann,...

                            Hat vielleicht schon jemand das ordentlich geschafft und könnte die Logiken und Scripts posten? Vielleicht mit Anleitung, für die nicht so technisch bewanderten ;-)

                            lg Stefan

                            Kommentar


                              #15
                              yes, that would be nice :-)
                              grusse,

                              Mike van der Hulst
                              Domoticom (NL)

                              Kommentar

                              Lädt...
                              X