Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Cloud Dienste
    4. [Anleitung][HowTo] SONOS über Alexa steuern

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [Anleitung][HowTo] SONOS über Alexa steuern

    This topic has been deleted. Only users with topic management privileges can see it.
    • BBTown
      BBTown last edited by

      Nachtrag Beispielcodes aus dem HowTo:

      javascript code von Pix um die Stati ("state", "play", "stop", "pause") in Abhängigkeit der Lautsärke (<>1) zu setzen

      ! ````
      /* Alexa_Sonos_schalten
      ! reagiert auf Lautstärkeänderungen
      Alexa Smartname zeigt auf .volume
      Sonos-Adapter Version 1.6.0 voraus!
      ! http://forum.iobroker.net/viewtopic.php?f=37&p=75526#p75526
      ! 15.07.2017 erstellt von pix nach Idee von BBTown
      16.07.2017 Quelle zugefügt
      */
      const logging = true;
      ! // sonos.0.root.XXX_XXX_XXX_XXX.volume
      var regex_vol = /^sonos.[0-9].root.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)_(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).volume$/;
      ! on({
      id: regex_vol,
      change: 'ne'
      }, function(data) {
      var pfad = getIdByName(data.channelName);
      if (logging) log(data.channelName + ' (' + pfad + '.' + data.name + ') Lautstärke auf ' + data.state.val + '% geändert');
      if (data.state.val >= 2) {
      setState(pfad + '.muted', false);
      setState(pfad + '.state', 'play');
      setState(pfad + '.play', true);
      setState(pfad + '.stop', false);
      }
      if (data.state.val < 2) {
      setState(pfad + '.state', 'stop');
      setState(pfad + '.play', false);
      setState(pfad + '.stop', true);
      }
      });

      Als Alternative zum Script von Pix: Blockly-code um die Stati der SONOS Geräte zu wechseln.
      
      Dieses Beispiel berücksichtigt allerdings nur jeweils ein Gerät und muss daher für jedes SONOS Gerät separat angelegt werden.
      
      (Die Empfehlung liegt daher in der Nutzung des generischen Scriptes von Pix)
      
      >! ````
       <xml xmlns="http://www.w3.org/1999/xhtml"><block id="dbjr?Bo*P5BB-X`|8a`)" type="on_ext" x="-412" y="-212"><mutation items="1"></mutation>
          <field name="CONDITION">ne</field>
      
          <value name="OID0"><shadow id="NIZw?^l|a|~Az]6-ODC`" type="field_oid"><field name="oid">sonos.0.root.192_168_178_61.volume</field></shadow></value> 
          <statement name="STATEMENT"><block id="/P]OaJvPo(8t|_b@_DWg" type="controls_if"><value name="IF0"><block id="F}%}QU.H.2ReY*27Vujw" type="logic_compare"><field name="OP">GT</field>
                  <value name="A"><block id="2pVgp@S^Gkk4m*FcYp/@" type="get_value"><field name="ATTR">val</field>
                      <field name="OID">sonos.0.root.192_168_178_61.volume</field></block></value> 
                  <value name="B"><block id="?*,meW}Ty_jsc#/(d2jk" type="math_number"><field name="NUM">1</field></block></value></block></value> 
              <statement name="DO0"><block id="M7=jamTO`f_Vy3asBWy_" type="control"><mutation delay_input="false"></mutation>
                  <field name="OID">sonos.0.root.192_168_178_61.state</field>
                  <field name="WITH_DELAY">FALSE</field>
                  <value name="VALUE"><block id="Cp/7yeWv1Aei%jeL-SQl" type="text"><field name="TEXT">play</field></block></value> 
                  <next><block id="0^SZ=tQeC/|]-Su_(|=k" type="control"><mutation delay_input="false"></mutation>
                      <field name="OID">sonos.0.root.192_168_178_61.play</field>
                      <field name="WITH_DELAY">FALSE</field>
                      <value name="VALUE"><block id=":f1y3j};K,ER@r(@VEc#" type="logic_boolean"><field name="BOOL">TRUE</field></block></value> 
                      <next><block id="]C+RB`OFy[Nq.:xeJFeJ" type="control"><mutation delay_input="false"></mutation>
                          <field name="OID">sonos.0.root.192_168_178_61.stop</field>
                          <field name="WITH_DELAY">FALSE</field>
                          <value name="VALUE"><block id="WGj!w{y;A:*[^G+z?23+" type="logic_boolean"><field name="BOOL">FALSE</field></block></value></block></next></block></next></block></statement> 
              <next><block id="?|=4%gRKMF*SU8f-4qaQ" type="controls_if"><value name="IF0"><block id="eRFu+k!9zXX,SBm`-?Xv" type="logic_compare"><field name="OP">LT</field>
                      <value name="A"><block id="C{^ngt;Ddf@.VWP6Fi83" type="get_value"><field name="ATTR">val</field>
                          <field name="OID">sonos.0.root.192_168_178_61.volume</field></block></value> 
                      <value name="B"><block id="4?Z!^[,Mzgu0uyx!)N48" type="math_number"><field name="NUM">2</field></block></value></block></value> 
                  <statement name="DO0"><block id=".GJO4s}Fbo6P/hJxl`@v" type="control"><mutation delay_input="false"></mutation>
                      <field name="OID">sonos.0.root.192_168_178_61.state</field>
                      <field name="WITH_DELAY">FALSE</field>
                      <value name="VALUE"><block id="!-]HLRwr%H%Ts]2~`8a:" type="text"><field name="TEXT">stop</field></block></value> 
                      <next><block id="jS#;~DOdAs]o3D?3W|sf" type="control"><mutation delay_input="false"></mutation>
                          <field name="OID">sonos.0.root.192_168_178_61.stop</field>
                          <field name="WITH_DELAY">FALSE</field>
                          <value name="VALUE"><block id="kzfnxW5)Rze:pthw-ik)" type="logic_boolean"><field name="BOOL">TRUE</field></block></value> 
                          <next><block id="F?~^/4!sN_J]Vp4uOvH@" type="control"><mutation delay_input="false"></mutation>
                              <field name="OID">sonos.0.root.192_168_178_61.play</field>
                              <field name="WITH_DELAY">FALSE</field>
                              <value name="VALUE"><block id="r@4()cyk@FckKsuiGR/q" type="logic_boolean"><field name="BOOL">FALSE</field></block></value></block></next></block></next></block></statement></block></next></block></statement></block></xml> 
      >! ````
      Blockly-code um die Musikquelle zu wechseln. Die Musikquelle wird nur geändert, wenn der "coordinator" das Gerät selbst ist (es sich nicht in einer Gruppe befindet).
      
      Dieses Beispiel berücksichtigt jeweils eine Musikquelle und muss daher für jede Musikquelle separat angelegt werden.
      
      >! ````
       <xml xmlns="http://www.w3.org/1999/xhtml"><block type="comment" id="DDc2(CXiW`i%YbZCOHtn" x="-687" y="-663"><field name="COMMENT">Script zum Umstellen der Musikquelle (Favoriten) der Sonos Geräte</field>
          <next><block type="comment" id="U(ssna#u!#22z2e*CTs~"><field name="COMMENT">Die Musikquelle soll jedoch nur umgestellt werden, wenn das SONOS Gerät sich nicht im "Gruppenmodus" befindet</field>
              <next><block type="comment" id="oWuGUW*?xO,ktJChx3st"><field name="COMMENT">Es wird daher gepürft ob das Gerät sich selbst steuert</field>
                  <next><block type="comment" id="gB__Bhl%W:n34..Juzrn"><field name="COMMENT">Die Variable "Favoriten" enthällt die Musikquelle auf die das SONOS Gerät umgestellt werden soll</field>
                      <next><block type="variables_set" id="4Ow@Ij%T@)(5BB~TP}_f"><field name="VAR">Favoriten</field>
                          <value name="VALUE"><block type="text" id="vRmA_},G_f`8m)I6shhl"><field name="TEXT">Metal</field></block></value> 
                          <next><block type="controls_if" id="t_at/+~?]X*R`;{bd8uJ"><value name="IF0"><block type="logic_compare" id="+yi[V.j8DczWgJ{bz9Pv"><field name="OP">EQ</field>
                                  <value name="A"><block type="get_value" id="q-Ia(|5ci1tf%h1jpcYM"><field name="ATTR">val</field>
                                      <field name="OID">sonos.0.root.192_168_178_61.coordinator</field></block></value> 
                                  <value name="B"><block type="text" id="#]/voG:Je;,8E[l*[dXh"><field name="TEXT">192_168_178_61</field></block></value></block></value> 
                              <statement name="DO0"><block type="control" id="0^SZ=tQeC/|]-Su_(|=k"><mutation delay_input="false"></mutation>
                                  <field name="OID">sonos.0.root.192_168_178_61.favorites_set</field>
                                  <field name="WITH_DELAY">FALSE</field>
                                  <value name="VALUE"><block type="variables_get" id="rn8e^R@=Z;nl41_#/j[i"><field name="VAR">Favoriten</field></block></value></block></statement> 
                              <next><block type="controls_if" id="k(6c3}DW:J1.J%eY1#^%"><value name="IF0"><block type="logic_compare" id="a,k_yEU/wslOv1Ll8R2t"><field name="OP">EQ</field>
                                      <value name="A"><block type="get_value" id="S_(%l8fg=zJwn;bB{km*"><field name="ATTR">val</field>
                                          <field name="OID">sonos.0.root.192_168_178_62.coordinator</field></block></value> 
                                      <value name="B"><block type="text" id="Y5:C%p!O)[PO.~AMzlD@"><field name="TEXT">192_168_178_62</field></block></value></block></value> 
                                  <statement name="DO0"><block type="control" id="jl;/+3-Ae7Df{qVjrv5Y"><mutation delay_input="false"></mutation>
                                      <field name="OID">sonos.0.root.192_168_178_62.favorites_set</field>
                                      <field name="WITH_DELAY">FALSE</field>
                                      <value name="VALUE"><block type="variables_get" id="8DSwvGv;SiFAf+bi@N|9"><field name="VAR">Favoriten</field></block></value></block></statement> 
                                  <next><block type="controls_if" id="}P;{/oP)9WTDuTx[[O;d"><value name="IF0"><block type="logic_compare" id="@b+}gnFJK(I5BvJn.dF@"><field name="OP">EQ</field>
                                          <value name="A"><block type="get_value" id="mU8pD7hbY~ks,zAH6/2Z"><field name="ATTR">val</field>
                                              <field name="OID">sonos.0.root.192_168_178_63.coordinator</field></block></value> 
                                          <value name="B"><block type="text" id="KOLcM3:eTW=}.(`f~@_f"><field name="TEXT">192_168_178_63</field></block></value></block></value> 
                                      <statement name="DO0"><block type="control" id="Nf!DEt_h=/elg2,p4Jgy"><mutation delay_input="false"></mutation>
                                          <field name="OID">sonos.0.root.192_168_178_63.favorites_set</field>
                                          <field name="WITH_DELAY">FALSE</field>
                                          <value name="VALUE"><block type="variables_get" id=";0G8S23CVVWa8j;9,*k["><field name="VAR">Favoriten</field></block></value></block></statement> 
                                      <next><block type="controls_if" id="Aa9o*W?kC--9f0wcd86V"><value name="IF0"><block type="logic_compare" id="6|!(TtNTAfn`PW1xkx.M"><field name="OP">EQ</field>
                                              <value name="A"><block type="get_value" id="AcAXt(7I],/38S{LWY/w"><field name="ATTR">val</field>
                                                  <field name="OID">sonos.0.root.192_168_178_64.coordinator</field></block></value> 
                                              <value name="B"><block type="text" id="-Rx!FC^I*?Krq7RQEba/"><field name="TEXT">192_168_178_64</field></block></value></block></value> 
                                          <statement name="DO0"><block type="control" id="7%NVv[=fP~_`Ce5!DR!7"><mutation delay_input="false"></mutation>
                                              <field name="OID">sonos.0.root.192_168_178_64.favorites_set</field>
                                              <field name="WITH_DELAY">FALSE</field>
                                              <value name="VALUE"><block type="variables_get" id="#N/[%5Q{PC+90E@e#~kj"><field name="VAR">Favoriten</field></block></value></block></statement> 
                                          <next><block type="controls_if" id="-5`LKX3X42N=*)8)k._!"><value name="IF0"><block type="logic_compare" id="[kCcIn5.lw,4a/L+z=~n"><field name="OP">EQ</field>
                                                  <value name="A"><block type="get_value" id="PW9+-4e64D7a=NWrCG!^"><field name="ATTR">val</field>
                                                      <field name="OID">sonos.0.root.192_168_178_68.coordinator</field></block></value> 
                                                  <value name="B"><block type="text" id="i1[KP`ob[7UxpR+lEKVJ"><field name="TEXT">192_168_178_68</field></block></value></block></value> 
                                              <statement name="DO0"><block type="control" id="SIZl,Mq4xa%xJZ[N_dAh"><mutation delay_input="false"></mutation>
                                                  <field name="OID">sonos.0.root.192_168_178_68.favorites_set</field>
                                                  <field name="WITH_DELAY">FALSE</field>
                                                  <value name="VALUE"><block type="variables_get" id="f7Di|lqGI!N#lKQnP=,y"><field name="VAR">Favoriten</field></block></value></block></statement> 
                                              <next><block type="controls_if" id="RvfHJ{:nI=K7:.HO.re8"><value name="IF0"><block type="logic_compare" id="s5GIlAJ%=P{q;,,}3/!9"><field name="OP">EQ</field>
                                                      <value name="A"><block type="get_value" id="a]2Jn^F5XNfxWZ-nayWv"><field name="ATTR">val</field>
                                                          <field name="OID">sonos.0.root.192_168_178_69.coordinator</field></block></value> 
                                                      <value name="B"><block type="text" id="?PPxZIvV1ksc@0BLywBs"><field name="TEXT">192_168_178_69</field></block></value></block></value> 
                                                  <statement name="DO0"><block type="control" id="el]E{g@/Uj.p?5b=]htN"><mutation delay_input="false"></mutation>
                                                      <field name="OID">sonos.0.root.192_168_178_69.favorites_set</field>
                                                      <field name="WITH_DELAY">FALSE</field>
                                                      <value name="VALUE"><block type="variables_get" id="qr7HPu_wppaGbU~q6L!x"><field name="VAR">Favoriten</field></block></value></block></statement></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></xml> 
      >! ````
      [Edit] Ergänzung am 27.07.2017
      
      Beispielcode um per javascript den ****coordinator**** zu adressieren/ändern
      
      (in diesem Beispiel soll das SONOS Gerät ****192_168_178_72**** der Gruppe vom SONOS Gerät ****192_168_178_75**** zugeordnet werden)
      

      setState("sonos.0.root.192_168_178_72.coordinator", '192_168_178_75')

      1 Reply Last reply Reply Quote 0
      • T
        tempestas last edited by

        Ganz stark! Vielen Dank an beide

        Jetzt kann / muss ich mir mal via Blockly die Javascripte anschauen und sehen, warum ich bislang zu bläd war, über coordinator Gruppen zu erstellen.

        1 Reply Last reply Reply Quote 0
        • Homoran
          Homoran Global Moderator Administrators last edited by

          @tempestas:

          Vielen Dank an beide `
          Heiko & Heiko :shock:

          Gruß

          Rainer

          1 Reply Last reply Reply Quote 0
          • T
            tempestas last edited by

            Ich habe Pix da für sein Skript mit einbezogen. Bin ja ein freundlicher Mensch 😉

            Heikos Arbeit habe ich dann zusätzlich noch durch den Daumen hoch geehrt 🙂

            1 Reply Last reply Reply Quote 0
            • BBTown
              BBTown last edited by

              Ergänzung der http://forum.iobroker.net/viewtopic.php?f=37&t=7395#p77123 um per javascript den coordinator zu adressieren/ändern

              (in diesem Beispiel soll das SONOS Gerät 192_168_178_72 der Gruppe vom SONOS Gerät 192_168_178_75 zugeordnet werden

              setState("sonos.0.root.192_168_178_72.coordinator", '192_168_178_75')
              
              1 Reply Last reply Reply Quote 0
              • K
                kaiserm last edited by

                Moin zusammen,

                vielen Dank erstmal für das tolle HowTo.

                Ich bin noch totaler iobroker Newbie.

                Mich interessiert vor allen Dingen die Lautstärke Geschichte.

                Funktionieren tut damit z.B. Alexa stelle Sonos Esszimmer auf 30%

                Was mir jetz noch fehlt:

                Alexa mach Sonos Esszimmer 5% (Werte z.B. von 1-25) lauter (leiser)

                Alexa mach Sonos Esszimmer lauter / leiser (also ohne Prozentangabe - dann sollte es jeweils um z.B. 5% (einstellbar) lauter/leiser werden)

                Toll wäre Alexa mach Sonos Esszimer etwas lauter/leiser (also ohne Prozentangabe - dann sollte es jeweils um z.B. 2% (einstellbar) lauter/leiser werden)

                Die Sonos Lautstärke muss begrenzbar sein (z.B. maximal 70%)

                Weiteres Problem: Im Wohnzimmer habe ich einen Sonos Connect, der hängt an einem Verstärker ohne jegliche Smart Funktionen.

                Ich müsste also im Wohnzimmer z.B. mit dem Befehl Alexa mach Sonos Wohnzimmer lauter z.B. 5 x schnell hintereinander den Volume Up Befehl per Harmony Hub an den Verstärker senden (Den Befehl dafür sehe ich im Harmony Adapter)

                Wäre Klasse wenn so etwas gehen würde.

                Danke im Voraus

                LG Martin

                1 Reply Last reply Reply Quote 0
                • BBTown
                  BBTown last edited by

                  Moin Martin,

                  das sind aber viele Wünsche auf einmal 8-)

                  Für die maximal Lautstärke (in deinem Beispiel 70%) versuche doch mal folgendes:

                  In den Eigenschaften des Datenpunktes "volume" des entsprechendes SONOS Gerätes dem "max" Wert von 100 auf 70 stellen. Vielleicht reicht das bereits aus?!

                  Bezüglich deines Wunsches der Lautstärkeregelung wirst Du deinen Wunsch wohl eher an Amazon/Alexa richten müssen. 8-) .

                  Du könntest versuchen dir ein Script anzulegen, welches den aktuellen Lautstärkewert fix z.B. jedesmal um 5% anhebt oder senkt (Aktueller Wert +5 oder Aktueller Wert -5).

                  Aberrrrrrr … wie sprichst Du das Kommando?

                  Wenn ich recht weiß, dann kannst Du aktuell einen "level" Datenpunkt mit dem Kommando "setze" oder "stelle" auf einen Wert einstellen. Ansonsten kannst Du nur (ein/aus) "schallten".

                  Würdest Du nun also das Script "SONOS Esszimmer lauter" nennen, dann wäre das Kommando:

                  "Alexa, schalte SONOS Esszimmer lauter ein" damit das Script ausgeführt wird.

                  Das klingt ziemlich unnatürlich, oder?

                  Ansonsten wird, so ist zumindest mein Kenntnisstand, "lauter" und "leiser" durch Alexa immer auf sich selbst bezogen.

                  Vielleicht hat jemand anderes aber auch schon einmal erfolgreich eine andere Syntax erfolgreich umgesetzt?!

                  1 Reply Last reply Reply Quote 0
                  • BBTown
                    BBTown last edited by

                    @kaiserm:

                    Weiteres Problem: Im Wohnzimmer habe ich einen Sonos Connect, der hängt an einem Verstärker ohne jegliche Smart Funktionen.

                    Ich müsste also im Wohnzimmer z.B. mit dem Befehl Alexa mach Sonos Wohnzimmer lauter z.B. 5 x schnell hintereinander den Volume Up Befehl per Harmony Hub an den Verstärker senden (Den Befehl dafür sehe ich im Harmony Adapter) ` Das ist exakt auch meine Kombination.

                    Yamaha AV-Receiver ohne Smart Funktion

                    Steuerung über Broadlink RM pro

                    Meine Grundlautstärke des Connect ist bei mir 85%, so dass kaum noch "Reserven" für die Lautstärkeregelung über SONOS vorhanden sind. Absenken der Lautstärke funktioniert auch beim Connect tadellos (gemäß des HowTo`s) nur viel Lauter geht es bei 85% Grundlautstärke dann eben nicht.

                    Wenn ich ehrlich bin, dann benötige ich derart selten eine Lautstärkeanpassung bei mir im Wohnzimmer, dass das in der Praxis völlig irrelevant ist. Wenn ich doch einmal deutlich lauter im Wohnzimmer werden will, dann muss ich eben doch die Fernbedienung in die Hand nehmen, dann würde mich Alexa aber wahrscheinlich sowieso kaum noch verstehen 😉

                    1 Reply Last reply Reply Quote 0
                    • K
                      kaiserm last edited by

                      Moinsen,

                      vielen Dank für Deine ausführliche Antwort.

                      Das mit der Begrenzung auf 75% werde ich mal probieren.

                      Der Connect steht auf fix, so dass ich die Lautstärke mit dem Amp regeln muss.

                      Ich denke im Wohnzimmer nehme ich da einfach die Fernbedienung.

                      In den anderen Räumen werde ich mal versuchen ob es irgendwie geht mit Alexa Lautstärke plus x% (minus x%) zu steuern.

                      Das mit dem mach lauter in Raum x macht ja der Sonos Skill. Aber die derzeitigen 10% Sprünge sind einfach nicht praxisgerecht.)

                      LG Martin

                      1 Reply Last reply Reply Quote 0
                      • P
                        Panobbi last edited by

                        Hallo zusammen,

                        vielen Dank für die ausführliche Beschreibung.

                        AAABER: Was ist hier mein Vorteil gegenüber der Einbindung über die Alexa-App?

                        Danke und Gruß

                        Christian

                        1 Reply Last reply Reply Quote 0
                        • BBTown
                          BBTown last edited by BBTown

                          Wenn Du keinen Vorteil siehst, dann kann ich das nicht für dich beantworten :lol:

                          Ich weiss ehrlich gesagt gar nicht in wie weit man über die Alexa-App Gruppen bilden kann?!

                          Du kannst ja nun beliebige Gruppenkombinationen mit Namen vergeben und diese nun zusammenschalten oder wieder trennen.

                          Ich weiss auch nicht in wie weit es möglich ist über die Alexa-App Favoriten anzusteuern?

                          Die gleiche Lösung sollte zudem zukünftig auch für GoogleHome funktionieren.

                          Weiterhin steuere ich anhand der Einbindung über den Sonos Adapter auch zum Beispiel die Musik im Badezimmer durch einschalten des Lichts.

                          Ich für mich habe einige Vorteile gefunden … ohne jedoch zu prüfen ob es auch über die Alexa App gegangen wäre ... meine Steuerung ist ja nunmal ioBroker und nicht Alexa ... Alexa ist nur eine weiteres Steuermedium, aber nicht meine Zentrale

                          1 Reply Last reply Reply Quote 0
                          • BBTown
                            BBTown last edited by BBTown

                            Mit v.10.1 der SONOS App können nun auch externe Eingänge zu den Favoriten hinzugefügt und sollten damit nun auch per Alexa angesprochen werden können 👍

                            1 Reply Last reply Reply Quote 0
                            • First post
                              Last post

                            Support us

                            ioBroker
                            Community Adapters
                            Donate
                            FAQ Cloud / IOT
                            HowTo: Node.js-Update
                            HowTo: Backup/Restore
                            Downloads
                            BLOG

                            448
                            Online

                            31.9k
                            Users

                            80.1k
                            Topics

                            1.3m
                            Posts

                            alexa template
                            5
                            13
                            7605
                            Loading More Posts
                            • Oldest to Newest
                            • Newest to Oldest
                            • Most Votes
                            Reply
                            • Reply as topic
                            Log in to reply
                            Community
                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                            The ioBroker Community 2014-2023
                            logo