Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst] Sonos Adapter einfach nur ein aus?

    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

    [gelöst] Sonos Adapter einfach nur ein aus?

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

      Kaum habe ich angefangen, scheitere ich schon wieder. Eigentlich möchte ich nur ein kleines Problem lösen:

      Der Sonos Adapter soll, ereignis- oder zeitbezogen, einen bestimmten Radiosender abspielen. Und dann wieder stoppen.

      Dafür benötige ich drei Dinge: den Radiosender, den play und den stop Befehl in JavaScript. Der Sender ist in den Favoriten hinterlegt. Ich habe zwar play und stop gefunden. Aber das sind ja Buttons.

      • Wie löse ich die in JavaScript aus?
      • Und wie sage ich dem Adapter: spiele den Sender x?
      • Wie stoppe ich das Ganze wieder?

      Ich habe das Forum durchsucht. Da steht viel Blockly drin, das ich aber nicht benutze.

      Danke für Euere Hilfe schon im voraus.

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

        Abspielen kannst du mit

         setState("sonos.0.root.x_x_x_x.favorites_set"/*favorites_set*/, HIER DER SENDER);    
        

        Der Sender muss in deinen Sonos Favoriten gespeichert sein (glaube ich)

        stoppen mit

             setState("sonos.0.root.x_x_x_x.state", "stop"); 
        
        1 Reply Last reply Reply Quote 0
        • S
          skorpil last edited by

          tempestas, ich bin begeistert. Danke. Das klappt. Wenn ich das Programm komplett habe, werde ich es hier posten.

          1 Reply Last reply Reply Quote 0
          • S
            skorpil last edited by

            Noch mal kurz eine Anfängerfrage an die Javascript Gurus:

            Ich habe mir testweise dieses Script geschrieben:

            raum = "192_168_XX_XX"; //Küche
            laut = getState('sonos.0.root.raum.volume').val;
            

            also: den Raum in eine Variable geschrieben (um nicht jedesmal in allen Anweisungen den Raum ändern zu müssen) und dann diese Variable in die getState Anweisung übernommen. Das funktioniert aber nicht. Fehlermeldung

            19:01:06.169	[warn]	javascript.0 at script.js.common.Test.Test_Sonos_Radio_ein_u__Volume:27:8
            

            Was mache ich da falsch?

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

              Du hast jetzt eine id, die Sonos.0.raum.volume heißt durch die Anführungszeichen.

              Die Id gibt's aber nicht.

              Probier Mal

              
              laut = getState('sonos.0.root.' + raum + '.volume').val;
              
              
              1 Reply Last reply Reply Quote 0
              • S
                skorpil last edited by

                ahhhh. Die Notation in JavaScript muss ich wirklich noch verinnerlichen. Vielen Dank.

                1 Reply Last reply Reply Quote 0
                • S
                  skorpil last edited by

                  so, es läuft. AAAAAAber, ich bekomme immer noch eine Warnmeldung.

                  Das Script:

                  ! laut = "10";//<–----hier gewünschte LAUTSTÄRKE eintragen
                  ! // ************************************************
                  ! // Anweisung zur Raumwahl:
                  ! // Büro: 192_168_xx_xx
                  ! // Wohnzimmer: 192_168_xx_xx
                  ! // Terrasse: 192_168_xx_xx
                  ! // Schlafzimmer: 192_168_xx_xx
                  ! // Küche: 192_168_xx_xx
                  ! // ************************************************
                  ! raum = "192_168_0_xx";//<------hier gewünschten RAUM eintragen
                  ! // ************************************************
                  ! // Auswahl Radiosender
                  ! // Sender muß in Favoriten vorhanden sein
                  ! // momentan: 104.6 RTL Weihnachtsradio, RTL Deutschlands Hit-Radio
                  ! // ************************************************
                  ! sender = "RTL Deutschlands Hit-Radio"; //<------hier gewünschten SENDER eintragen
                  ! // Befehle ausführen
                  ! // ************************************************
                  ! // Befehl zum play
                  ! // ************************************************
                  ! setState("sonos.0.root." + raum + ".volume", laut);
                  ! setState("sonos.0.root." + raum + ".favorites_set"/favorites_set/,sender);

                  Die Warnung:

                  10:11:19.996	[info]	javascript.0 Stop script script.js.common.Test.Test_start
                  10:11:20.033	[info]	javascript.0 Start javascript script.js.common.Test.Test_start
                  10:11:20.034	[warn]	javascript.0 at script.js.common.Test.Test_start:30:1
                  10:11:20.034	[info]	javascript.0 script.js.common.Test.Test_start: registered 0 subscriptions and 0 schedules
                  

                  Ich weiß nicht, was die Warnmeldungen (generell) bedeuten (wo kann man das evtl nachlesen?).

                  Aber ausgehend von der Annahme, es handelt sich hier um Zeile 30, dann geht es um die Zeile "setState("sonos.0.root." + raum + ".volume", laut);". Was wäre da falsch oder einer Warung würdig. Sehe ich den Wald vor lauter Bäumen nicht? Jedenfalls wird das Script korrekt ausgefühhrt-

                  1 Reply Last reply Reply Quote 0
                  • S
                    skorpil last edited by

                    Ich bin, glaube ich, selber drauf gekommen. die Variable "laut" darf nicht als string, also laut = "10" gesetzt werden. Wenn man also laut = 10 schreibt, verschwindet die Warnung. Funktioniert hat es allerdings trotzdem 😄

                    1 Reply Last reply Reply Quote 0
                    • S
                      skorpil last edited by

                      so, hier nun die komplette Beschreibung:

                      Vorbemerkung: bisher lief das alles ohne iobroker, direkt auf derCCU mit dem Sonosscript. Allerdings ist mein Lieblingssender pötzlich nicht mehr verfügbar. Und die Umstellung auf den neuen Sender funktioniert aus mir unbekannten Gründen auf der CCU nicht mehr.

                      1. auf der CCU läuft ein Programm, welches nach Auslösen durch einen Bewegungsmelder seinerseits morgens eine CCU Variable Sayit auslöst (diese benötige ich noch für andere Funktionen. Sayit löst nun wieder die CCU Variabe SayItRadio aus (schaltet auf true), und zwar nach 50 sec und schaltet das Radio nach 45 min wieder ab, also stellt die Variable SayItRadio auf false. (warum habe ich das mit Hilfe der CCU gelöst: weil mir das einfacher von der Hand geht, als das in Javascript zu lösen)

                      2. das Javascript

                      ! //*******************************************
                      ! //Javascript zum Schalten von Sonos
                      ! //*******************************************
                      ! //Trigger aus CCU holen, hier: Variable Sayit
                      ! var idRadio = "hm-rega.0.1726"/SayItRadio/;
                      ! // Trigger setzen
                      ! on({id: idRadio, val: true}, function (data) {
                      ! //*******************************************
                      ! // Definitionen
                      ! //*******************************************
                      ! // ************************************************
                      ! // Anweisung setzen LAUTSTAERKE
                      ! // var laut;
                      ! // ************************************************
                      ! laut = 8;//<–----hier gewünschte LAUTSTÄRKE eintragen
                      ! // ************************************************
                      ! // Anweisung zur Raumwahl:
                      ! // Büro: 192_168_xx_xx
                      ! // Wohnzimmer: 192_168_xx_xx
                      ! // Terrasse: 192_168_xx_xx
                      ! // Schlafzimmer: 192_168_xx_xx
                      ! // Küche: 192_168_xx_xx
                      ! // ************************************************
                      ! raum = "192_168_xx_xx";//<------hier gewünschten RAUM eintragen
                      ! // ************************************************
                      ! // Auswahl Radiosender
                      ! // Sender muß in Favoriten vorhanden sein
                      ! // momentan: 104.6 RTL Weihnachtsradio, RTL Deutschlands Hit-Radio
                      ! // ************************************************
                      ! sender = "RTL Deutschlands Hit-Radio"; //<------hier gewünschten SENDER eintragen
                      ! // Befehle ausführen
                      ! // ************************************************
                      ! // Befehl zum play
                      ! // ************************************************
                      ! setState("sonos.0.root." + raum + ".volume", laut);
                      ! setState("sonos.0.root." + raum + ".favorites_set"/favorites_set/,sender);
                      ! // ************************************************
                      ! // Befehl zum stop
                      ! // ************************************************
                      ! // setState("sonos.0.root." + raum + ".state", "stop");
                      ! });

                      wird nun ausgelöst, wenn die CCU Variable SayItRadio auf true gesetzt ist und schaltet das Radio im gewünschten Raum mit der gewünschten Lautstärke ein.

                      Das Ausschalten funktioniert quasi im gleichen Script, indem man die beiden Anweisungen

                      setState("sonos.0.root." + raum + ".volume", laut);
                      setState("sonos.0.root." + raum + ".favorites_set"/*favorites_set*/,sender);
                      

                      mit "//" ausschaltet und bei

                      // setState("sonos.0.root." + raum + ".state", "stop");
                      

                      die beiden // rausnimmt. Und natürlich in der "on" Anweisung die Bedingung "true" auf "false" stellt.

                      Bei mir funktioniert das!

                      Vielen Dank den vielen Helfern, tempestas und pix. Frohe Weihnachten allerseits.

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

                        Hallo skorpil,

                        schön, dass es läuft.

                        Ich kann dir nur empfehlen, von der CCU ganz wegzugehen (außer als Hub für die Homematic Sachen). Habe ich vor langer Zeit auch getan und es ist einfach viel einfacher und sinniger, Skripte und Co an nur einem Platz in nur einer Systematik zu haben.

                        Mein erstes Skript bzw erster Kontakt mit JavaScript war übrigens damals auch mit dir 🙂

                        viewtopic.php?f=21&t=3351&p=64569#p64569

                        Frohe Weihnachten

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        695
                        Online

                        31.9k
                        Users

                        80.2k
                        Topics

                        1.3m
                        Posts

                        2
                        10
                        739
                        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