Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [Scriptbeispiel] Alle Rollladen zeitverzögert per Taste/vis

NEWS

  • wichtiges UPDATE für controller 7.2.2 im stable
    HomoranH
    Homoran
    8
    1
    502

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    15
    1
    2.7k

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    2.9k

[Scriptbeispiel] Alle Rollladen zeitverzögert per Taste/vis

Geplant Angeheftet Gesperrt Verschoben JavaScript
3 Beiträge 2 Kommentatoren 2.5k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • Y Offline
    Y Offline
    ykuendig
    schrieb am zuletzt editiert von
    #1

    Es wurden schon verschiedene Varianten des Rollladenscripts gezeigt.

    Ich möchte nun auch noch meine Adaption davon vorstellen, da diese gerade im Aufbau der Anlage von Vorteil ist.

    Dieses 'fire and forget' Script fährt immer alle Storen, auch wenn ihr welche abgebaut und / oder angebaut habt. Die einzelnen Läden müssen nicht neu konfiguriert oder eingetragen werden.

    Dafür fahren sie halt 'nur' ganz auf oder ganz zu.

    // Erzeuge zwei Objekte um mit .vis oder anderen Scripten einzugreifen
    createState("javascript.0.vis.Storen.runter", false);
    createState("javascript.0.vis.Storen.hoch", false);
    
    var input1 = "hm-rpc.0.LEQ0656999.1.PRESS_SHORT"/*HM-PB-2-WM55-2 LEQ0656999:1.PRESS_SHORT*/;    // Hier den Auslöse-Datenpunkt für 'AB' einfügen
    var input2 = "javascript.0.vis.Storen.runter"/*javascript.0.vis.Storen.runter*/;
    var input3 = "hm-rpc.0.LEQ0656999.2.PRESS_SHORT"/*HM-PB-2-WM55-2 LEQ0656999:2.PRESS_SHORT*/;    // Hier den Auslöse-Datenpunkt für 'AUF' einfügen
    var input4 = "javascript.0.vis.Storen.hoch"/*javascript.0.vis.Storen.hoch*/;
    var timer1 = 3000;  // Millisekunden Verzögerung zwischen den Storen                            // Das können virtuelle oder richtige Taste sein
    
    // DO NOT CHANGE BELOW THIS LINE, untill you know what you do!
    // It is better to cache all the blinds at start, because in big installations it can take some time to search for blinds
    var cacheSelector = $('channel{TYPE=BLIND}[state.id=*.LEVEL]');     // Get all blinds of Homematic
    var oldTimers = [];
    
    // set timed function
    function timedState(i, id, level) {
      oldTimers.push(setTimeout(function(){
        setState(id, level);
        log("fahre Storen " + id + " auf " + level + "%"); 
      }, timer1 * i));
    }
    
    function setPercent(value) {
        // Terminate old timers. So it is possible to start the next step without waiting 'till the old one finished
        for (var t = 0; t < oldTimers.length; t++) {
             clearTimeout(oldTimers[t]);
        }
        oldTimers = [];
        cacheSelector.each(function (id, i) {
            timedState(i, id, value);       // 0 for 0% or 100 for 100%
        }); 
    }
    
    // blinds down
    on({id: input1}, function () {
        log("Script: Storen schliessen startet");           // Log the action. Default level is always  "info"  
        setPercent(0);
    });
    on({id: input2}, function () {
        log("Script: Storen schliessen startet");
        setPercent(0);
    });
    
    // blinds up
    on({id: input3}, function () {
        log("Script: Storen öffnen startet");
         setPercent(100);
    });
    on({id: input4}, function () {
        log("Script: Storen öffnen startet");
         setPercent(100);
    });
    
    // astro functions
    schedule({astro: "sunriseEnd"}, function () {
        log("Script: Astro-SunriseEnd - Storen öffnen startet");
        setPercent(100);
    });
    schedule({astro: "sunset"}, function () {
        log("Script: Astro-Sunset - Storen schliessen startet");
        setPercent(0);
    });
    
    

    Version 0.2.0 15.06.15 Integration von virtuellen Datenpunkten, um zB mit .vis zu schalten

    Version 0.1.2 12.06.15 Auslösung durch Astro-Funktion angefügt

    Version 0.1.1 05.06.15 Anpassungen von Bluefox nachgetragen

    Version 0.1.0 04.06.15 First release

    Gruss Yves

    1 Antwort Letzte Antwort
    0
    • BluefoxB Offline
      BluefoxB Offline
      Bluefox
      schrieb am zuletzt editiert von
      #2

      Ich wurde das so ändern:

      var input1 = "hm-rpc.0.LEQ0696992.1.PRESS_SHORT"/*HM-PB-2-WM55-2 LEQ0696992:1.PRESS_SHORT*/;    // Hier den Datenpunkt für 'AB' einfügen
      var input2 = "hm-rpc.0.LEQ0696992.2.PRESS_SHORT"/*HM-PB-2-WM55-2 LEQ0696992:2.PRESS_SHORT*/;    // Hier den Datenpunkt für 'AUF' einfügen
      var timer1 = 4000;  // Millisekunden Verzögerung zwischen den Storen                            // Das kann eine Virtuell oder richtige Taste sein
      
      // DO NOT CHANGE BELOW THIS LINE
      // It is better to cache all the blinds at start, because in the big installations it can take the time to search for blinds
      var cacheSelector = $('channel{TYPE=BLIND}[state.id=*.LEVEL]');     // Get all blinds of Homematic
      var oldTimers = [];
      
      // set timed function
      function timedState(i, id, level) {
        oldTimers.push(setTimeout(function(){
          setState(id, level);
          log("fahre Storen " + id + " auf " + level + "%"); 
        }, timer1 * i));
      }
      
      function setPercent(value) {
          // Terminate old timers. So it is possible to start the next step without waiting till the old one finished
          for (var t = 0; t < oldTimers.length; t++) {
               clearTimeout(oldTimers[t]);
          }
          oldTimers = [];
          cacheSelector.each(function (id, i) {
              timedState(i, id, value);       // 0 for 0% or 100 for 100%
          }); 
      }
      
      // blinds down
      on({id: input1}, function () {
          log("Script: Storen schliessen startet");          // Log the action. Default level is always  "info"  
          setPercent(0);
      });
      
      // blinds up
      on({id: input2}, function () {
          log("Script: Storen öffnen startet");       // Log the action. Default level is always  "info" 
           setPercent(100);
      });
      
      
      1 Antwort Letzte Antwort
      0
      • Y Offline
        Y Offline
        ykuendig
        schrieb am zuletzt editiert von
        #3

        Cool; ( Immerhin hatte meins auch funktioniert… )

        Gruss Yves

        1 Antwort Letzte Antwort
        0

        Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

        Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

        Mit deinem Input könnte dieser Beitrag noch besser werden 💗

        Registrieren Anmelden
        Antworten
        • In einem neuen Thema antworten
        Anmelden zum Antworten
        • Älteste zuerst
        • Neuste zuerst
        • Meiste Stimmen


        Support us

        ioBroker
        Community Adapters
        Donate

        618

        Online

        33.0k

        Benutzer

        83.3k

        Themen

        1.3m

        Beiträge
        Community
        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
        ioBroker Community 2014-2026
        logo
        • Anmelden

        • Du hast noch kein Konto? Registrieren

        • Anmelden oder registrieren, um zu suchen
        • Erster Beitrag
          Letzter Beitrag
        0
        • Home
        • Aktuell
        • Tags
        • Ungelesen 0
        • Kategorien
        • Unreplied
        • Beliebt
        • GitHub
        • Docu
        • Hilfe