Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. Mein ersters Projekt Sonos Wecker

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Mein ersters Projekt Sonos Wecker

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

      Ich möchte mein erstes Projekt umsetzen aber habe eigentlich keine Idee wie ich anfangen soll.

      Bisher habe ich schon einen Wecker in homematic.

      Dort gibt es eine Variable Weckzeit und eine Value-List mit Inhalt "aus", "Mo-Fr" und "Mo-So"

      Außerdem gibt es Variablen Arbeitstag (ja/nein) und Anwesenheit (anwesend/abwesend)

      Jede Nacht läuft ein Script welches einen Cuxd Timer stellt. Bin ich abwesend kann der Wecker stehen wie will es wird kein Timer gestellt. Ist kein Arbeitstag wird der Timer nur gestellt sofern der Wecker auf "Mo-Fr" steht.

      Wenn der Timer abgelaufen ist geht ein Schranklicht an. Jetzt soll zusätzlich eine Sonos angehen aber nur der im Schlafzimmer. Alle anderen sollen ausbleiben.

      Die cuxd-Timer sind derzeit nicht in iobroker sichtbar. Erstes weiß ich nicht genau wie und anderseits müsste sowas doch iobroker selbst hinkriegen. So dass ich evtl diesen Timer in homematic nicht mehr brauche. Das Schranklicht könnte ich auch über iobroker laufen.

      Also das erste was ich brauche wäre schonmal sowas wie ein Timer als Auslöser. Habe mal ein wenig mit blockly gespielt aber viel hinbekommen habe ich nicht. Das einzige was ich schonmal geschafft habe ist das mein Bürolicht angeht wenn man PC angeht und einer Minute nachdem er ausgeschaltet wird geht das Licht aus.

      Der Sonos Adapter ist installiert und läuft auch. Ob ich damit aber gleichzeitig eine bestimmte Playlist, eine bestimmte Lautstärke und einen bestimmte Box alleine ansprechen kann weiß ich noch nicht. (Bisher habe ich nur einen Sonos, der fürs Schalfzimmer kommt nächste Woche irgendwann).

      Wer kann mir helfen?

      1 Reply Last reply Reply Quote 0
      • cash
        cash Most Active last edited by

        Für Sonos habe ich schon mal etwas gefunden:

        http://forum.iobroker.net/viewtopic.php?f=37&t=7395

        Wobei ich wahrscheinlich erst richtig anfangen kann wenn die anderen Sonso Boxen hier sind dsmit ich sehe was sich wo im Adapter ändert wenn ich die Getäte per App bediene…

        1 Reply Last reply Reply Quote 0
        • Jey Cee
          Jey Cee Developer last edited by

          Mit Hilfe des upnp adapters lässt sich der auch die Weckfunktion des Sonos Systems stellen. Eventuell ist das für dich ja auch interessant.

          Falls ja kannst du gerne auf mich zu kommen dann helf ich dir da gerne.

          1 Reply Last reply Reply Quote 0
          • cash
            cash Most Active last edited by

            oh ja gerne. Die beiden Boxen werden wohl nächste Woche bei mir sein, dann guck ich mir mal die Weckfunktion von Sonos an und melde mich dann nochmal. Vielen Dank schonmal

            1 Reply Last reply Reply Quote 0
            • M
              marphDE last edited by

              interessant, wäre auch auf die Lösung gespannt.

              @Jay Cee: du hattest doch auch so eine tolle Variante, dass wenn man das Bad betritt, die Sonos Musik abspielen oder ?

              1 Reply Last reply Reply Quote 0
              • Jey Cee
                Jey Cee Developer last edited by

                @marphDE Ja das hatte ich. Aber nur Radio Sender und über den Sonos Adapter. Als Auslöser hab ich einen HM Bewegungsmelder genutzt.

                Das werde ich demnächst auf den upnp Adapter umbauen und als BWM kommt ein enocean Gerät zum Einsatz, da der keine Batterien benötigt.

                Gesendet von Unterwegs

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

                  Ich hab gerade einen Wecker mit Homematic und / oder iobroker umgesetzt.

                  Also in dem Script kannst du sowohl das eine als auch das andere System nutzen, bzw. auch beide parallel:

                  http://forum.iobroker.net/viewtopic.php?f=21&t=10013

                  Mit dem Sonos Adapter kannst du immer exakt einen Sonos ansprechen, mit entsprechender Lautstärke.

                  Jegliche Tracks und Playlisten geht meines Wissens nicht, nur die Tracks / Playlisten die du unter "Favoriten" gespeichert hast.

                  1 Reply Last reply Reply Quote 0
                  • cash
                    cash Most Active last edited by

                    Deinen Thread hatte ich beim suchen schon gefunden ist mir aber zu komplex :geek:

                    Ich kann zwar theoretisch die Weckzeit über die ccu Variable änderm aber praktisch kommt das nie vor. Das heisst der Wecker läuft jeden Tag ohne das ich was tun muss. Wenn ich Deine Lösung verstehe änderst Du abends den Wecker und dadurch werden dann z. B. Alarmanlage scharf und sowas gestellt…

                    Ich werde es mir aber nochmal genauer angucken.

                    Playlist ist kein Problem, die habe ich sowieso als Favorit. Beim aufwecken soll auch nur der im Schlafzimmer spielen. Die Gruppe aus allen brauche ich erst später wenn ich dann mit dem Hund raus war und anschließend frühstücke.

                    Die beiden Sonos Ones sind heute dann auch gekommen. Schon echt geiler Schei...

                    Und soviel schlechter wie der Play5 (2gen) im Wohnzimmer find ich die garnicht.

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

                      Das mit der Alarmanlage ist nur ein Nebeneffekt den ich jetzt erst nach und nach einbaue.

                      Die Komplexität kommt auch hauptsächlich dadurch dass ich 2 Wecker benutzen kann - den Homematic über die Variablen und den über die VIS.

                      Und dass ich noch einen Schlummermodus eingebaut habe, und dass es gleich 2 Wecker sind (für 2 Personen), die sich gegenseitig auch nicht in die Quere kommen.

                      Wenn du das alles weglässt halbiert sich das Script 😉

                      Kannst es ja einfach mal reinladen in Blockly und dir die Blocks in Ruhe anschauen.

                      Ja Sonos ist Mega. Ich liebe es seit ich es habe. Steure bei mir aber nur externe Boxen mit Connect:Amp und Connect.

                      Schön wäre es wenn man irgendwann nochmal die Möglichkeit hat, jedweden Titel aus der Musikbibliothek abzuspielen durch Pfadeingabe oder so… Oder auch Random Tracks aus bestimmten Ordnern.

                      1 Reply Last reply Reply Quote 0
                      • Jey Cee
                        Jey Cee Developer last edited by

                        Pfadangabe geht doch, upnp adapter.

                        http://forum.iobroker.net/viewtopic.php … =20#p70730

                        Gesendet von Unterwegs

                        1 Reply Last reply Reply Quote 0
                        • cash
                          cash Most Active last edited by

                          So das erste habe ich schon mal geschafft. Zu einer festen Uhrzeit spielen alle Boxen.

                          Erst klappe es nicht aber wenn man das Bild sieht weiß man auch warum. Ich musste natürlich noch bei zwei Boxen das Objekt Volume auswählen….
                          1407_sonos.jpg

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

                            Cool, kannst du das Blockly exportieren oder den Code anzeigen?

                            Würde mich interessieren.

                            Lieben Dank 🙂

                            1 Reply Last reply Reply Quote 0
                            • cash
                              cash Most Active last edited by

                              kann ich machen.

                              Wie kann ich dort denn so eine Abfrage realisieren?

                              SV Arbeitstag heute = ja

                              und SV Anwesenheit = anwesend

                              und SV Krank zu Hause = nein

                              und (SV Wecker = 1

                              oder SV Wecker = 2)

                              1 Reply Last reply Reply Quote 0
                              • cash
                                cash Most Active last edited by

                                Hier den Blockyteil als export

                                ! ````
                                <xml xmlns="http://www.w3.org/1999/xhtml"><block type="comment" id="%1qlxJ]O7l9?fEF{},~M" x="63" y="-137"><field name="COMMENT">Setzt alle Sonos in eine Gruppe und startet Sonos Wohnzimmer</field>
                                <next><block type="schedule" id="dn^qh||xyA?ajVCG3_-"><field name="SCHEDULE">00 07 * * 1-5</field>
                                <statement name="STATEMENT"><block type="comment" id="(c|YY4s3=TM;i{m[]Ta."><field name="COMMENT">Master (Sonos Wohnzimmer</field>
                                <next><block type="control" id="Zs%m[UrUt,K#o2g/d}w9"><mutation delay_input="false"></mutation>
                                <field name="OID">sonos.0.root.192_168_178_35.coordinator</field>
                                <field name="WITH_DELAY">FALSE</field>
                                <value name="VALUE"><block type="text" id=",O==H0AZX;;1ks1-9yjQ"><field name="TEXT">192_168_178_35</field></block></value>
                                <next><block type="control" id="Wi0PK}38PtaeC~9MPz{d"><mutation delay_input="false"></mutation>
                                <field name="OID">sonos.0.root.192_168_178_35.volume</field>
                                <field name="WITH_DELAY">FALSE</field>
                                <value name="VALUE"><block type="math_number" id="KScb?k(kd=c#exr.WFZq"><field name="NUM">12</field></block></value>
                                <next><block type="comment" id="-Kyi
                                b;?-E{T:c^%8q4u"><field name="COMMENT">Sonos Schlafzimmer</field>
                                <next><block type="control" id="@%l{2VR;ofkDko)#oDM9"><mutation delay_input="false"></mutation>
                                <field name="OID">sonos.0.root.192_168_178_47.coordinator</field>
                                <field name="WITH_DELAY">FALSE</field>
                                <value name="VALUE"><block type="text" id="{5!OeKd)b@gIS^AOrCv~"><field name="TEXT">192_168_178_35</field></block></value>
                                <next><block type="control" id="^-5s(+!b9c4e?j!r;,X"><mutation delay_input="false"></mutation>
                                <field name="OID">sonos.0.root.192_168_178_47.volume</field>
                                <field name="WITH_DELAY">FALSE</field>
                                <value name="VALUE"><block type="math_number" id="pR.(-fXgx9tGmr/t1Av"><field name="NUM">20</field></block></value> <next><block type="comment" id=";G/W[=PQ?Cms]l2IFWVV"><field name="COMMENT">Sonos Küche</field> <next><block type="control" id="Z)t^vO.ziw1sZbC[S)E@"><mutation delay_input="false"></mutation> <field name="OID">sonos.0.root.192_168_178_48.coordinator</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="G975i_T!Qnf}O3UT]wL"><field name="TEXT">192_168_178_35</field></block></value>
                                <next><block type="control" id="S:;=aL[;(##Bp3Balbsa"><mutation delay_input="false"></mutation>
                                <field name="OID">sonos.0.root.192_168_178_48.volume</field>
                                <field name="WITH_DELAY">FALSE</field>
                                <value name="VALUE"><block type="math_number" id="~ky%3o)eJ5U/,zr;)BW1"><field name="NUM">6</field></block></value>
                                <next><block type="comment" id="(eE4V=QNx]mhhW|F52Y"><field name="COMMENT">Playlist auswählen und play</field>
                                <next><block type="control" id="xKZrn^%P%^v%ZW{c}v}O"><mutation delay_input="false"></mutation>
                                <field name="OID">sonos.0.root.192_168_178_35.favorites_set</field>
                                <field name="WITH_DELAY">FALSE</field>
                                <value name="VALUE"><block type="text" id="5qV6F53^Xq0C)=.%ltiM"><field name="TEXT">HIT RADIO FFH</field></block></value>
                                <next><block type="control" id="`P
                                NL_mwOC#G:
                                !fPTYQ"><mutation delay_input="true"></mutation>
                                <field name="OID">sonos.0.root.192_168_178_35.state</field>
                                <field name="WITH_DELAY">TRUE</field>
                                <field name="DELAY_MS">1000</field>
                                <field name="UNIT">ms</field>
                                <field name="CLEAR_RUNNING">FALSE</field>
                                <value name="VALUE"><block type="text" id="F.2d./evwHGM?~;cuoi@"><field name="TEXT">play</field></block></value></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></statement></block></next></block></xml>

                                
                                Weiter komme ich derzeit einfach nicht weil ich an den Prüfungen der Systemvariablen scheitere. Blockly ist da dann doch etwas zickig…
                                
                                Ansonsten macht der Sonos Adapter das schon für mich völlig ausreichend. Er gruppiert die drei Geräte die am Abend vorher noch getrennt waren und regelt die Lautstärke.
                                
                                Da muss man übrigens wirklich aufpassen :mrgreen: Hatte Küche und Schlafzimmer vertauscht. Im Schlafzimmer hatte ich bewusst etwas lauter gestellt damit man im Flur auch noch was davon hat. Jedenfalls war es leider die Küche. Meine Frau hatte fast einen Herzinfakt bekommen :mrgreen: :mrgreen:
                                1 Reply Last reply Reply Quote 0
                                • cash
                                  cash Most Active last edited by

                                  Tja was soll ich sagen? Heute Morgen pünktlich um 7:00 Uhr spiele die Musik aber leider nicht aus allen Boxen sondern nur vom Wohnzimmer.

                                  Nach etwas testen weiß ich jetzt auch warum. Jede zweite Ausführung funktionierte so. Das heißt wenn bei einem Gerät der Coordinator schon der Chef ist dann klappt es nicht.

                                  Ich habe also jeztt umgestellt auf Javascript. Nach Durchsicht der guten Hilfe ist JavaScript nicht so viel anders wie HomematicScript :mrgreen:

                                  Das kann ich zwar nicht perfekt aber es reicht um so leichte sachen umzustellen:

                                  // Sonos-Geräte abfragen wer derzeit der Coordinator ist
                                    var _Sonos_Wohnzimmer = getState("sonos.0.root.192_168_178_35.coordinator").val;
                                    var _Sonos_Schlafzimmer = getState("sonos.0.root.192_168_178_47.coordinator").val;
                                    var _Sonos_Kueche = getState("sonos.0.root.192_168_178_48.coordinator").val; 
                                  
                                  if(_Sonos_Wohnzimmer != "192_168_178_35"){setState("sonos.0.root.192_168_178_35.coordinator", '192_168_178_35');}
                                  if(_Sonos_Schlafzimmer != "192_168_178_35"){setState("sonos.0.root.192_168_178_47.coordinator", '192_168_178_35');}
                                  if(_Sonos_Kueche != "192_168_178_35"){setState("sonos.0.root.192_168_178_48.coordinator", '192_168_178_35');}
                                  
                                    setState("sonos.0.root.192_168_178_35.volume", 16);
                                    setState("sonos.0.root.192_168_178_47.volume", 14); 
                                    setState("sonos.0.root.192_168_178_48.volume", 8);
                                    setState("sonos.0.root.192_168_178_35.favorites_set", 'HIT RADIO FFH'); 
                                    setState("sonos.0.root.192_168_178_35.state", 'play');
                                  
                                  console.log(_Sonos_Wohnzimmer);
                                  console.log(_Sonos_Schlafzimmer);
                                  console.log(_Sonos_Kueche); 
                                  

                                  Mit diesem Code hat das ganze nun zuverlässig funktioniert. Das ganze muss ich halt jetzt noch erweitern das er dann Morgens startet.

                                  Der Vorteil vom Javascript für mich ist natürlich das es so etwas schneller geht als per Blockly und ich so auch leicht auf divere Systemvariablen der ccu abfragen kann wie (Urlaubstag, Feiertag, Wecker usw)

                                  Ich werde wieder berichten.

                                  So langsam kriege ich etwas Spaß an iobroker :mrgreen:

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

                                    @cash:

                                    So langsam kriege ich etwas Spaß an iobroker :mrgreen: `
                                    Ohja den Moment hab ich schon hinter mir und es ist suuuper cool 🙂

                                    1 Reply Last reply Reply Quote 0
                                    • D
                                      Don_Hasso last edited by

                                      EDIT: Habe meinen Beitrag gelöscht, mein Fehler war die zu gering eingestellte Lautstärke… :roll:
                                      4223_fehler.png

                                      1 Reply Last reply Reply Quote 0
                                      • cash
                                        cash Most Active last edited by

                                        Habe meinen Wecker nun auch komplett fertig. Paul53 hat mir freundlicherweise etwas unter die Arme gegriffen :mrgreen:

                                        /**************************
                                        * Wecker
                                        * Wecker stellen über ccu
                                        * _Wecker = 0 (Wecker aus)
                                        * _Wecker = 1 (Wecker Mo-Fr)
                                        * _Wecker = 2 (Wecker Mo-So)
                                        * Weckzeit auch über ccu
                                        * steht der Musikwecker im auf ja wird die Sonos Gruppe aufgelöst und er spielt meine Playlist
                                        * Version 1.00 vom 20.01.18 
                                        * 
                                        **************************/
                                        
                                        var _Wecker =  getState("hm-rega.0.21759").val;
                                        // _Wecker = 0 (Wecker aus)
                                        // _Wecker = 1 (Wecker Mo-Fr)
                                        // _Wecker = 2 (Wecker Mo-So)
                                        var _Weckzeit = getState("hm-rega.0.21758").val;
                                        var _Arbeitstag = getState("Systemvariable.0.Arbeitstag").val;
                                        var _Schranklicht = getState("hm-rpc.0.LEQ0928629.1.STATE"/*Schlafzimmer Schranklicht:1.STATE*/).val;
                                        var _Sonos_Schlafzimmer = getState("sonos.0.root.192_168_178_47.coordinator").val;
                                        var _Musikwecker = getState("Systemvariable.0.Musikwecker").val;
                                        var _Sonos_Play = getState("sonos.0.root.192_168_178_47.state").val;
                                        
                                        function _Wecken() {
                                            if(_Arbeitstag && _Wecker == 1){
                                               if(!_Schranklicht){setState("hm-rpc.0.LEQ0928629.1.STATE"/*Schlafzimmer Schranklicht:1.STATE*/, true);}
                                               if(_Musikwecker){
                                               // Falls bei einem Gerät nicht der Wonhzimmer Sonos der Coordinator ist setze Wohnzimmer Sonos
                                               if(_Sonos_Schlafzimmer != "192_168_178_47"){setState("sonos.0.root.192_168_178_47.coordinator", '192_168_178_47');}
                                                setState("sonos.0.root.192_168_178_47.volume", 6); // Lautstärke Schlafzimmer
                                                setState("sonos.0.root.192_168_178_47.favorites_set", 'Meine Lieder'); 
                                                setState("sonos.0.root.192_168_178_47.state", 'play');
                                                }
                                                setTimeout(function() {
                                                if(_Schranklicht){setState("hm-rpc.0.LEQ0928629.1.STATE"/*Schlafzimmer Schranklicht:1.STATE*/, false);}
                                                if((_Sonos_Play == 'play') && (_Sonos_Schlafzimmer = "192_168_178_47")){setState("sonos.0.root.192_168_178_47.state", 'stop');}
                                                }, 25 * 60000);  // 25 Minuten Verzögerung 
                                            }
                                            if(_Wecker == 2){
                                               if(!_Schranklicht){setState("hm-rpc.0.LEQ0928629.1.STATE"/*Schlafzimmer Schranklicht:1.STATE*/, true);}
                                               if(_Musikwecker){
                                               // Falls bei einem Gerät nicht der Wonhzimmer Sonos der Coordinator ist setze Wohnzimmer Sonos
                                               if(_Sonos_Schlafzimmer != "192_168_178_47"){setState("sonos.0.root.192_168_178_47.coordinator", '192_168_178_47');}
                                                setState("sonos.0.root.192_168_178_47.volume", 6); // Lautstärke Schlafzimmer
                                                setState("sonos.0.root.192_168_178_47.favorites_set", 'Meine Lieder'); 
                                                setState("sonos.0.root.192_168_178_47.state", 'play');
                                                }
                                                setTimeout(function() {
                                                if(_Schranklicht){setState("hm-rpc.0.LEQ0928629.1.STATE"/*Schlafzimmer Schranklicht:1.STATE*/, false);}
                                                if((_Sonos_Play == 'play') && (_Sonos_Schlafzimmer = "192_168_178_47")){setState("sonos.0.root.192_168_178_47.state", 'stop');}
                                                }, 25 * 60000);  // 25 Minuten Verzögerung 
                                            }
                                        }
                                        
                                        // Skriptstart
                                        
                                        var t = getState("hm-rega.0.21758").val.split(':');
                                        var sched = schedule(t[1] + ' ' + t[0] + ' * * *', _Wecken);
                                        
                                        on("hm-rega.0.21758", function(dp) {  // Vorgabezeit ändert sich
                                          clearSchedule(sched);  // bestehendes Schedule löschen
                                          t = dp.state.val.split(':');
                                          sched = schedule(t[1] + ' ' + t[0] + ' * * *', _Wecken);      
                                        });
                                        
                                        //console.log(_Wecker);
                                        

                                        Der einzige Harken ist jetzt eigentlich nur noch der Sonos Adapter. Dieser kann leider keine Shuffle Funktion. Das heißt wenn man von seiner Playlist geweckt werden will und nicht per Radio hört man jeden Morgen die gleiche Musik…

                                        Mit dieser Lösung fallen bei mir 3 ccu Programme weck.

                                        • jede Nacht den Wecker stellen

                                        • Wecker start

                                        • Wecker Ende

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

                                        Support us

                                        ioBroker
                                        Community Adapters
                                        Donate

                                        611
                                        Online

                                        31.7k
                                        Users

                                        79.7k
                                        Topics

                                        1.3m
                                        Posts

                                        5
                                        18
                                        3545
                                        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