Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Sonos Gruppen bilden

    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

    Sonos Gruppen bilden

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

      Keine Ahnung, wie deine Sonos derzeit in Alexa eingebunden ist, aber offenbar wird der Datenpunkt "sonos.0.root.192_168_x_y.muted" bei den Smartgeräten genutzt. Du kannst statt dessen einfach den "…state_simple" nutzen und einen sinnvollen "smartName" vergeben. Der ist ja auch bereits vom Typ boolean und somit direkt über Alexa steuerbar. Du ersparst dir also den zusätzlichen Umweg über javascript.

      1 Reply Last reply Reply Quote 0
      • L
        Linedancer last edited by

        Nachdem der Thread wieder nach oben kam, hab ich die Gruppenbildung nochmal versucht, und siehe da, es klappt 😄 😄 😄

        Ursachenforschung:

        ich habe jetzt den hier weiter oben geposteten Script angepasst und es läuft.

        vorher hatte ich es mit Blockly probiert und es hat nicht geklappt, obwohl im Log alles genauso gut ausgesehen hat wie jetzt.

        Unterschiede:

        hier die Zeile aus dem Script:

        setState("sonos.0.root.192_168_xxx_yy.add_to_group","192_168_xxx_zz");  // IP-Adressen müssen natürlich angepasst werden

        und hier der Code den Blockly erzeugt:

        setState("sonos.0.root.192_168_xxx_yy.add_to_group"/add_to_group/, '192.168.xxx.zz');

        kann es denn sein, das nur die unterschiedlichen Hochkommas hier entscheiden sind?

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

          Nein, es liegt wohl eher an den Underscores "_" statt den Punkten in der IP-Adresse. Wobei es ja eben keine IP-Adresse sondern der Objekt-Name der Sonos-Boxen ist und der lautet eben wie die IP-Adresse nur mit Underscores statt Punkten.

          1 Reply Last reply Reply Quote 0
          • L
            Linedancer last edited by

            Dank dir

            Oh man, wie blind. Das hätte Mann merken müssen 😞

            1 Reply Last reply Reply Quote 0
            • J
              jokermic last edited by

              @Matten:

              Dank dir, werde ich probieren.

              Ich nutzte die Sonos Steuerung über iobroker, das funktioniert auch im großen und ganzen, allerdings wird mit dem Befehl "schalte Sonos xy aus" nur die Mute Funktion aktiviert, der Stream läuft also weiter (zu sehen in der Sonos App). Das ist natürlich suboptimal. Gibt es dafür eine Lösung? `

              Du hast wahrscheinlich den Datenpunkt xxx.Volumen benutzt. Ich hab das gleiche Phänomen beobachtet, ich hab aber auch noch keine Lösung gefunden. Ich würde gerne mit einem Sprachbefehl z.B. Sonos Wohnzimmer, die Sonos an/abschalten und die Lautstärke verändern. Im Moment kriege ich das so nur über die Yonomi APP hin.

              Hoffe immer noch auf einen heißen Tipp aus der Community 🙂

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

                Hab keine Probleme beim Setzen der Lautstärke. Was funktioniert denn nicht?

                1 Reply Last reply Reply Quote 0
                • J
                  jokermic last edited by

                  Das Setzen der Lautstärke ist auch kein Problem, aber wenn ich die Sonos per Sprachbefehl abschalte, dann geht diese nicht aus, sondern setzt die Lautstärke auf 0 und die Playlist läuft weiter.

                  Das ist mein Problem

                  Gesendet von meinem SM-G900F mit Tapatalk

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

                    Also entweder du nutzt zwei unterschiedliche Datenpunkte für Volumen und On/Off, die dann in Alexa natürlich auch unterschiedlich lauten müssen oder du behilfst dir mit einem Workaround und setzt den Sonos.state auf "stop" sobald die Lautstärke auf 0 steht.

                    on({
                        id: "sonos.0.root.192_168_xx_yy.volume",
                        change: "ne";
                        val: 0
                    }, function (obj) {
                        setState("sonos.0.root.192_168_xx_yy.state", "stop");
                    });
                    
                    
                    1 Reply Last reply Reply Quote 0
                    • J
                      jokermic last edited by

                      Das mit den zwei unterschiedlichen Datenpunkten möchte ich wenn möglich vermeiden.

                      Dieser Workaround hört sich gut an, aber wo gebe ich den Code ein?

                      Gesendet von meinem SM-G900F mit Tapatalk

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

                        :shock: Gibt es ein iobroker-Leben ohne Javascript-Adapter??? 😉

                        Einfach im Admin javascript-Adapter installieren, javascript-Instanz starten, javascript-Editor aufrufen (Reiter "Skripte"; falls der Reiter fehlt, über Bleistift-Symbol rechts daneben und "Zeige…" einblenden), ein neues Script unter "common" anlegen (beliebiger Name), obige Zeilen reinkopieren, speichern und starten (roter Play-Button; falls ein grüner Pause-Button angezeigt wird, läuft das Script bereits).

                        1 Reply Last reply Reply Quote 0
                        • J
                          jokermic last edited by

                          Bin ja noch ganz frisch dabei und das wäre auch das nächste woran ich dann gehen wollte [SMILING FACE WITH OPEN MOUTH]

                          Vielen Dank für die ausführliche Anleitung. Schau ich mir später mal an

                          Gesendet von meinem SM-G900F mit Tapatalk

                          1 Reply Last reply Reply Quote 0
                          • J
                            jokermic last edited by

                            @justr:

                            Also entweder du nutzt zwei unterschiedliche Datenpunkte für Volumen und On/Off, die dann in Alexa natürlich auch unterschiedlich lauten müssen oder du behilfst dir mit einem Workaround und setzt den Sonos.state auf "stop" sobald die Lautstärke auf 0 steht.

                            on({
                                id: "sonos.0.root.192_168_xx_yy.volume",
                                change: "ne";
                                val: 0
                            }, function (obj) {
                                setState("sonos.0.root.192_168_xx_yy.state", "stop");
                            });
                            
                            ```` `  
                            

                            Also der Workaround klappt grundsätzlich ganz gut mit dem JavaScript Code, nur ist mir jetzt aufgefallen, dass der Wecker nicht mehr funktioniert, weil der Wecker wohl langsam von 0 auf Ziel Lautstärke regelt.

                            Bin mir aber noch nicht sicher wie man das abfangen kann.

                            P.S. @justr:

                            Im Code hat sich nur ein Flüchtigkeitsfehler bei " change: "ne"; " eingeschlichen. Am Ende kommt ja ein " , ".

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

                              @jokermic:

                              P.S. @justr:

                              Im Code hat sich nur ein Flüchtigkeitsfehler bei " change: "ne"; " eingeschlichen. Am Ende kommt ja ein " , ". `
                              Sorry! 😉

                              Neuer Versuch:

                              on({
                                  id: "sonos.0.root.192_168_xx_yy.volume",
                                  change: "ne"
                              }, function (obj) {
                                  if (obj === 0) {
                                      setState("sonos.0.root.192_168_xx_yy.state", "stop");
                                  } else {
                                      setState("sonos.0.root.192_168_xx_yy.state", "play");
                                  }
                              });
                              
                              1 Reply Last reply Reply Quote 0
                              • J
                                jokermic last edited by

                                Hmm, jetzt geht der Wecker, aber die Musik lässt sich nicht mehr stoppen [FACE WITH TEARS OF JOY]

                                Ich glaub wenn man die Bedingung Volumen ==0 und state == play sind, dann müsste man die Musik stoppen oder Pause setzen. Aber für die Umsetzung muss ich mir das noch genauer anschauen

                                Gesendet von meinem SM-G900F mit Tapatalk

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

                                  Sorry, man sollte halt die Scripte doch immer erst testen, bevor man "gute" Ratschläge gibt. Da fehlte der Teil des Object-Werts in der if-Abfrage:

                                      if (obj.state.val === 0) {
                                  

                                  Allerdings gefällt mir dieser Workaround mit "play" bei volume != 0 gar nicht, da dies nicht der Sonos-Logik entspricht. D.h. immer wenn du an der Lautstärke was änderst springt die Box an ("play"). Ich würde dir ja eher einen zusätzlichen manuell erstellten Datenpunkt empfehlen,

                                    "common": {
                                      "name": "sonosVolume",
                                      "smartName": "Deine Alexa-Bezeichnung",  // <- Anpassen!
                                      "role": "",
                                      "type": "number",
                                      "desc": "Manuell erzeugt",
                                      "unit": "%",
                                      "min": 0,
                                      "max": 100,
                                      "read": true,
                                      "write": true
                                    },
                                  

                                  der den "smartName" des Sonos-Volumes übernimmt und den du dann per Alexa steuerst und nur wenn dieser auf 0 steht, die Sonos entsprechend stoppst:

                                  on({
                                      id: "javascript.0.myStates.alexa.sonosVolume",  //muss natürlich deinem Alexa-gesteuerten Datenpunkt entsprechen
                                      change: "ne"
                                  }, function (obj) {
                                      var sonVol = obj.state.val;
                                      setState("sonos.0.root.192_168_xx_yy.volume", sonVol);
                                      if (sonVol === 0) {
                                          setState("sonos.0.root.192_168_xx_yy.state", "stop");
                                      }
                                  });
                                  

                                  Hätte halt den Vorteil, dass beim Wecker oder auch sonst sich das Script nicht einmischt. Wenn du das mit dem manuellen Datenpunkt nicht hinbekommen solltest, kannst du natürlich immer noch die if-Abfrage des vorherigen Scripts anpassen (obj.state.val statt obj).

                                  1 Reply Last reply Reply Quote 0
                                  • H
                                    hmanfred last edited by

                                    Ich ziehe diesen Beitrag mal hoch, obwohl er inzwischen etwas OT gelaufen ist.

                                    Ich habe meine Probleme mit der Gruppenbildung:

                                    SONOS Adapter Version 1.5.0

                                    Die Gruppenbildung und -auflösung durch Beschreiben der Datenpunkte add_to_group und remove_from_group geht grundsätzlich. Allerdings ist das bei mir ein Blindflug was die Darstellung der SONOS-Datenpunkte unter "Objects" in IoBroker betrifft.

                                    Konkret:

                                    • der hinzu genommene Player spielt die Musik der Gruppe. Ich sehe dies aber an keinem Objekt dieses Players noch an einem anderen Datenpunkt.

                                    • nach Auflösen der Gruppe werden die Datenpunkte des weggenommenen Players nicht aktualisiert. Er wird gestoppt, der Datenpunkt State bleibt aber z.B. wie vor der Gruppierung. Wenn er vorher also was anderes gespielt hat, steht "play" drin, obwohl er beim Auflösen gestoppt wurde.

                                    • Gibt es keinen Datenpunkt, um das Volume der gesamten Gruppe zu ändern, wie im native Controller?

                                    • Gruppierungen, die ich im native Controller (hier: Android) mache, werden in IoBroker nicht dargestellt, oder ich finde nicht, wo.

                                    Kann mir da bitte mal jemand helfen, die Logik zu verstehen?

                                    1 Reply Last reply Reply Quote 0
                                    • H
                                      hmanfred last edited by

                                      Schade, dass hier niemand die SONOS Gruppenbildung verwendet und bereit ist, mir zu helfen oder mit mir gemeinsam Probleme zu lösen. 😞

                                      Oder mache ich mit / in meinem Post etwas falsch, was euch abschreckt? :oops:

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

                                        @hmanfred:

                                        Schade, dass hier niemand die SONOS Gruppenbildung verwendet und bereit ist, mir zu helfen oder mit mir gemeinsam Probleme zu lösen. 😞 `
                                        ich glaube nicht, dass dies hier im Forum wirklich zum tragen kommt :!:

                                        Eher hat niemand der hier regelmäßig mitliest diese Konstallation.

                                        Ich z.B. habe gerade erst eine Play:1 installiert und noch nie mit Gruppen gearbeitet.

                                        Außerdem schreibst du dass dies nicht das Problem sei.

                                        Der Threadtitel heisst aber "Gruppen bilden"

                                        vielleicht würdest du in einem separaten Thread mit aussagekräftigem Titel eher eine Antwort bekommen.

                                        Gruß

                                        Rainer

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

                                          Hallo hmanfred,

                                          ich kann dir versichern, du bist nicht allein und den "Blindflug" finden sicher viele unschön. Leider weiß ich aber keine Lösung. Momentan merke ich mir den "grouped"-Status in einer Variablen, um entsprechend reagieren zu können. Funktioniert natürlich nur, wenn die Gruppenbildung über ioBroker stattgefunden hat.

                                          Um zumindest beim Start von ioBroker denn IST-Stand zu haben, nutze ich den Parser-Adapter:

                                          URL: http://192.168.16.34:1400/support/review (<- beliebige Sonos-Box)

                                          RegEx: coordinator='false' wirelessmode='.' wirelessleafonly='.' hasconfiguredssid='.' channelfreq='….' behindwifiext='.' wifienabled='.' location='http://192.168.16.31

                                          Es geht hier um den coordinator='false' (somit Slave und gruppiert; coordinator='true' -> nicht gruppiert). Der Rest der RegEx ist nur um auf die richtige IP zu referenzieren. ACHTUNG, ich habe das Intervall bei mir auf 5 min. (300000ms) gesetzt. Ein kurzes Intervall (z.B. 10s) hat die Sonos derart überlastet, dass sie überhaupt nicht mehr reagiert hat.

                                          Natürlich habe ich mir auch mal den Quellcode des Sonos-Adapters angesehen (muss doch auch nativ irgendwie möglich sein), aber "auf die Schnelle" bin ich bei den vielen verlinkten Scripten nicht durchgestiegen.

                                          Beste Grüße, justr

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

                                            PS: Vorsicht, wenn du die Seite "…/support/review" im Browser aufrufst, hat sie ein html-Format, während der Parser-Adapter wohl ein XML-Format provoziert. Somit sieht die Struktur natürlich komplett anders aus und man kann nicht über den Browser vergleichen. Wenn du aber auf den Stift neben der Parser-Regel klickst, findest du nach ein paar Sekunden warten die eingelesene Datei.

                                            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

                                            603
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            9
                                            36
                                            8045
                                            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