Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Javascript: Mehrere Raffstores über einen Schalter hoch oder herunter fahren

    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

    Javascript: Mehrere Raffstores über einen Schalter hoch oder herunter fahren

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

      Hallo liebe Leute,

      ich möchte mit einem Button alle meine Raffstores über Shelly2 und seinen Adapter gerne hoch- und herunter fahren.

      Ich erstelle also unter commons ein Script für nauf und eines für runter:

      const myStateId = 'Raff_runter';

      // Datenpunkt anlegen

      createState(myStateId , {name: 'Raffstores runter', type: 'boolean', def: false, read: true, write: true, role: 'switch'});

      on('javascript.0.'+myStateId , function (obj) {

      var val = obj.state.val;

      // Mehrer States schalten

      setState("shelly.0.SHSW-21#hier_die_ID#1.Shutter.Close", true);

      setState("shelly.0.SHSW-21#hier_die_ID#1.Shutter.Close", true);

      setState("shelly.0.SHSW-21#hier_die_ID#1.Shutter.Close", true);

      setState("shelly.0.SHSW-21#hier_die_ID#1.Shutter.Close", true);

      })

      ich aktiviere das Script und binde den Schalter (javascript.0.Raff_runter) im vis ein. Warum passiert jetzt aber gar nichts wenn ich den Button klicke?

      1 Reply Last reply Reply Quote 0
      • Mic
        Mic Developer last edited by

        Ungetestet, nur kleine Korrektur bezüglich des Datenpunktes. Habe die Konstante auch groß geschrieben, da gängige Praxis.

        const MY_STATE_ID = 'javascript.0.Raff_runter';
        
        // Datenpunkt anlegen
        createState(MY_STATE_ID , {name: 'Raffstores runter', type: 'boolean', def: false, read: true, write: true, role: 'switch'});
        
        on(MY_STATE_ID , function (obj) {
          // Mehrer States schalten
          setState("shelly.0.SHSW-21#hier_die_ID#1.Shutter.Close", true);
          setState("shelly.0.SHSW-21#hier_die_ID#1.Shutter.Close", true);
          setState("shelly.0.SHSW-21#hier_die_ID#1.Shutter.Close", true);
          setState("shelly.0.SHSW-21#hier_die_ID#1.Shutter.Close", true);
        })
        
        
        1 Reply Last reply Reply Quote 0
        • paul53
          paul53 last edited by

          @Merowinger:

          Warum passiert jetzt aber gar nichts wenn ich den Button klicke? `
          Wenn es tatsächlich ein Button ist, dann ändert sich nicht der Wert beim Klicken. Deshalb bei jeder Aktualisierung des Zeitstempels triggern.

          on({id: 'javascript.0.' + myStateId}, function() {
          
          1 Reply Last reply Reply Quote 0
          • Mic
            Mic Developer last edited by

            Auf Paul ist Verlass 😄 Das fehlende "id:" hatte ich übersehen, so sollte es gehen.

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

              Wow vielen Dank schon mal für die rasche Hilfe:

              aber jetzt habe ich es so und das Script scheint jetzt defekt:

              const MY_STATE_ID = 'javascript.0.Raff_runter';

              // Datenpunkt anlegen

              createState(MY_STATE_ID , {name: 'Raffstores runter', type: 'boolean', def: false, read: true, write: true, role: 'switch'});

              on({id: 'javascript.0.' + myStateId}, function() {

              var val = obj.state.val;

              // Mehrer States schalten

              setState("shelly.0.SHSW-21#32B74B#1.Shutter.Close", val);

              setState("shelly.0.SHSW-21#32B8C6#1.Shutter.Close", val);

              setState("shelly.0.SHSW-21#32BF9F#1.Shutter.Close", val);

              setState("shelly.0.SHSW-21#5B2AFA#1.Shutter.Close", val);

              })

              19:34:59.001 [error] javascript.0 script.js.common.Raff_runter: script.js.common.Raff_runter:6

              19:34:59.001 [error] javascript.0 at script.js.common.Raff_runter:6:27

              1 Reply Last reply Reply Quote 0
              • Mic
                Mic Developer last edited by

                In Zeile 6 verweist Du auf eine nicht definierte Variable, daher:

                const MY_STATE_ID = 'javascript.0.Raff_runter';
                
                // Datenpunkt anlegen
                createState(MY_STATE_ID , {name: 'Raffstores runter', type: 'boolean', def: false, read: true, write: true, role: 'switch'});
                
                on({id: MY_STATE_ID}, function(obj) {
                  var val = obj.state.val;
                
                  // Mehrer States schalten
                    setState("shelly.0.SHSW-21#32B74B#1.Shutter.Close", val);
                    setState("shelly.0.SHSW-21#32B8C6#1.Shutter.Close", val);
                    setState("shelly.0.SHSW-21#32BF9F#1.Shutter.Close", val);
                    setState("shelly.0.SHSW-21#5B2AFA#1.Shutter.Close", val);
                })
                
                1 Reply Last reply Reply Quote 0
                • M
                  Merowinger last edited by

                  warn: Wrong type of shelly.0.SHSW-21#32B74B#1.Shutter.Open: "string". Please fix, while deprecated and will not work in next versions.

                  Kann es sein das am Ende, also nach dem Schalter nicht "val" stehen muss, sondern "true"?

                  so?

                  const MY_STATE_ID = 'javascript.0.Raff_runter';

                  // Datenpunkt anlegen

                  createState(MY_STATE_ID , {name: 'Raffstores runter', type: 'boolean', def: false, read: true, write: true, role: 'switch'});

                  on({id: MY_STATE_ID}, function(obj) {

                  var val = obj.state.val;

                  // Mehrer States schalten

                  setState("shelly.0.SHSW-21#32B74B#1.Shutter.Close", true);

                  setState("shelly.0.SHSW-21#32B8C6#1.Shutter.Close", true);

                  setState("shelly.0.SHSW-21#32BF9F#1.Shutter.Close", true);

                  setState("shelly.0.SHSW-21#5B2AFA#1.Shutter.Close", true);

                  })

                  Vielen Dank, mit true läuft es jetzt!!!

                  Super

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

                    @Merowinger:

                    also nach dem Schalter nicht "val" stehen muss, sondern "true"? `
                    Ja, aber wie kommt ein String in den Button-Datenpunkt ?

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

                      Vielen Dank für die tolle Hilfe.

                      Ich habe zu dem Thema noch ein Ergänzungsfrage:

                      Aktuell haben wir einen Wind das die Raffstores klappern. Wenn ich diese alle für ca eine halbe Sekunde nach oben fahre, bleiben sie noch geschlossen, klappern jedoch weniger.

                      Wie setze ich jetzt jeden Raffstore für ca eine halbe Sekunde auf "öffnen"?

                      Vielen Dank

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

                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      948
                      Online

                      31.7k
                      Users

                      79.9k
                      Topics

                      1.3m
                      Posts

                      3
                      9
                      364
                      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