Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Gelöst: Verzögerungszeit bei der Ausführung von Anweisungen

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    6
    1
    227

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    8
    1
    221

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    893

Gelöst: Verzögerungszeit bei der Ausführung von Anweisungen

Scheduled Pinned Locked Moved Skripten / Logik
8 Posts 3 Posters 2.7k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • R Offline
    R Offline
    Ralf H.
    wrote on last edited by
    #1

    Hallo und einen schönen Sonntag,

    ich bin neu hier und möchte mich zunächst einmal an all diejenigen bedanken, die ioBroker realisiert haben. Ich bin kein Programmierer, schon etwas älter und war schon etwas frustriert, als ich im Homematic-Forum die Abkündigung von CCU.IO und den diversen AddOns lesen musste – gerade, als ich eine funktionierende Lösung mit einem Raspi auf die Beine gestellt hatte.

    OK – dann also ioBoker ;-)

    Mit Vis habe ich schon die Visualisierung meines Reihenhauses einigermaßen hinbekommen, nun soll es an die Scripte gehen. Und genau hier habe ich ein Problem, dass ich nicht lösen kann:

    Ich habe ein billiges Tablet für die Visualisierung, das dauerhaft mit dem Ladegerät verbunden ist.

    Da alle Tablets, die ich kenne, den Bildschirm aktivieren, wenn mindestens der Ladestrom eingeschaltet wird, verwende ich einen Schaltaktor, der den Ladestrom für eine Sekunde einschaltet, wenn ein bestimmter Bewegungmelder Bewegung erkennt.

    DAS habe ich auch schon hinbekommen:

    on("hm-rpc.0.KEQ1234567.1.MOTION", function(obj) {
        if (obj.newState.val === true) {
            setState('hm-rpc.0.MEQ1234567.1.ON_TIME', 2 );
            setState("hm-rpc.0.MEQ1234567.1.STATE",true);
        }
    });
    

    Das ist ja auch kein Hexenwerk und funktioniert soweit einwandfrei - jedenfalls solange der Schaltaktor vorher AUS war !

    Ich möchte nun diese Funktion aber auch in der Zeit nutzen, in der ich das Tablet zum tatsächlichen Laden mit Strom versorge, der Schaltaktor also den Zustand AN hat.

    Mit einem CCU-Programm hatte ich das gelöst, indem ich -wenn der Schaltaktor EIN ist- erst die Anweisung „Schaltaktor AUS“ und dann mit einer Verzögerungszeit von 2 Sekunden, diesen wieder eingeschaltet habe.

    Das würde ich nun gern in einem ioBroker-Script realisieren.

    Als Anfänger hat mich auch eine Suche nicht weitergebracht, da ich die Lösung wahrscheinlich nicht mal erkenne, wenn ich sie gefunden habe.

    Vielen Dank schon mal und Grüße aus dem Weserbergland - Ralf

    1 Reply Last reply
    0
    • BluefoxB Offline
      BluefoxB Offline
      Bluefox
      wrote on last edited by
      #2
      on("hm-rpc.0.KEQ1234567.1.MOTION", function(obj) {
          if (obj.newState.val === true) {
              // falls schon eingeschaltet
              if (getState("hm-rpc.0.MEQ1234567.1.STATE").val) {
                   // schalte aus
                   setState("hm-rpc.0.MEQ1234567.1.STATE",false);
                   // Timer für 2 sekunden
                   setTimeout(function (){
                       // schalte an
                       setState("hm-rpc.0.MEQ1234567.1.STATE",true);
                   }, 2000);
              } else { 
                  // schalte sofort an
                  setState('hm-rpc.0.MEQ1234567.1.ON_TIME', 2 );
                  setState("hm-rpc.0.MEQ1234567.1.STATE",true);
              }
          }
      });
      
      

      5076_20180203_122044.jpg

      1 Reply Last reply
      0
      • R Offline
        R Offline
        Ralf H.
        wrote on last edited by
        #3

        Hallo Bluefox,

        vielen Dank, das Script funktioniert nun prima.

        -> setTimeout war die Lösung, die ich nicht erkannt hatte!

        Damit nun der vorige Ladezustand wieder hergestellt wird, habe ich die erste Anweisung für die Einschaltdauer in Zeile 10 gelöscht.

        Hintergrund: Das Display soll auch innerhalb des Zeitraums aufgeweckt werden, in dem das Tablet ohnehin geladen wird.

        In der Zwischenzeit ist mir allerdings auch noch eine Alternative eingefallen, die ich aber auch noch nicht ganz umsetzen kann:

        Schritt 1: aktuellen Stand des Schaltaktors abfragen und in einer Variable speichern

        Schritt 2: Statur des Schaltaktors sofort = AUS

        Schritt 2: Status des Schaltaktors nach einer Sekunde = EIN

        Ergebnis: Das Display geht an.

        Schritt 3: den Status des Schaltaktors wieder mit dem Wert der Variable aus Schritt 1 setzen.

        Ergebnis: der alte Status quo ist wieder hergestellt.

        Wäre das möglicherweise eine elegantere Lösung?

        Kommt die CCU2 da auch mit, oder muss dem Schaltaktor Zeit gegeben werden, bis er die nächste Anweisung entgegen und ausführen kann?

        Ralf

        1 Reply Last reply
        0
        • P Offline
          P Offline
          pix
          wrote on last edited by
          #4

          Hallo Ralf H.
          @Ralf H.:

          In der Zwischenzeit ist mir allerdings auch noch eine Alternative eingefallen, die ich aber auch noch nicht ganz umsetzen kann: `
          dann nutze lieber das Skript von Bluefox. Das ist kurz und gut und funktioniert. Hatte vor Monaten selbst so ein Skript laufen (bevor ich auf iPad mit Magnetcover umgestiegen bin).

          Da es analog zu ONTIME keinen Datenpunkt OFFTIME gibt, der für eine bestimmte Zeit einen Aktor ausschaltet, muss man eben so vorgehen. Variablen machen das komplizierter und soviel Code spart das in diesem Fall auch nicht.

          geht aber auch so:

          on("hm-rpc.0.KEQ1234567.1.MOTION", function(obj) {
              if (obj.newState.val === true) {
                  // Aktorstatus in Variable schreiben
                  var ur_status_aktor = getState("hm-rpc.0.MEQ1234567.1.STATE").val;
                  // schalte sofort aus
                  setState("hm-rpc.0.MEQ1234567.1.STATE",false);
                  // Timer für 2 sekunden
                  setTimeout(function (){
                      // schalte an
                      setState("hm-rpc.0.MEQ1234567.1.STATE",true);
                  }, 2000);
                  setState("hm-rpc.0.MEQ1234567.1.STATE",ur_status_aktor);
              }
          });
          
          

          Gruß

          Pix

          ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

          1 Reply Last reply
          0
          • R Offline
            R Offline
            Ralf H.
            wrote on last edited by
            #5

            Hi Pix,

            danke für die Hinweise und den Alternativcode.

            Für mich ist dieses Austesten an einem eigentlich banalen Problem die beste Möglichkeit, die Möglichkeiten der Scripte zu verstehen.

            Grüße Ralf

            1 Reply Last reply
            0
            • P Offline
              P Offline
              pix
              wrote on last edited by
              #6

              @pix:

              Da es analog zu ONTIME keinen Datenpunkt OFFTIME gibt, der für eine bestimmte Zeit einen Aktor ausschaltet, … `
              Jetzt (seit 0.5.8) haben wir ja https://github.com/iobroker/ioBroker.javascript/blob/master/README.md#setstatedelayed

              Vielen Dank an Bluefox.

              Gruß,

              Pix

              ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

              1 Reply Last reply
              0
              • BluefoxB Offline
                BluefoxB Offline
                Bluefox
                wrote on last edited by
                #7

                Und das konnte man dann so umschreiben:

                on("hm-rpc.0.KEQ1234567.1.MOTION", function(obj) {
                    if (obj.newState.val === true) {
                        // falls schon eingeschaltet
                        if (getState("hm-rpc.0.MEQ1234567.1.STATE").val) {
                             // schalte aus
                             setState("hm-rpc.0.MEQ1234567.1.STATE",false);
                             // Timer für 2 sekunden
                            setStateDelayed("hm-rpc.0.MEQ1234567.1.STATE",true, 2000);
                        } else { 
                            // schalte sofort an
                            setState("hm-rpc.0.MEQ1234567.1.STATE",true);
                            setStateDelayed("hm-rpc.0.MEQ1234567.1.STATE",false, 2000);
                        }
                    }
                });
                
                1 Reply Last reply
                0
                • R Offline
                  R Offline
                  Ralf H.
                  wrote on last edited by
                  #8

                  @Bluefox:

                  Und das konnte man dann so umschreiben: `
                  … und hätte es dann (zumindest für mich) auch gleich noch lesbarer und verständlicher, soweit es die "Verwandschaft" zwischen setState und setStateDelayed betrifft.

                  Mann dankt - Ralf

                  1 Reply Last reply
                  0

                  Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                  Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                  With your input, this post could be even better 💗

                  Register Login
                  Reply
                  • Reply as topic
                  Log in to reply
                  • Oldest to Newest
                  • Newest to Oldest
                  • Most Votes


                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  577

                  Online

                  32.8k

                  Users

                  82.8k

                  Topics

                  1.3m

                  Posts
                  Community
                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                  ioBroker Community 2014-2025
                  logo
                  • Login

                  • Don't have an account? Register

                  • Login or register to search.
                  • First post
                    Last post
                  0
                  • Home
                  • Recent
                  • Tags
                  • Unread 0
                  • Categories
                  • Unreplied
                  • Popular
                  • GitHub
                  • Docu
                  • Hilfe