Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. while(getState(x).val)...

    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

    while(getState(x).val)...

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

      Hallo zusammen

      Heut sind meine Xiaomi Rauchmelder angekommen und zu meinem Erstaunen wurden sie durch ConBee 2 korrekt in den IoBroker eingebunden - coole Sache.

      Nun stellt er einen Wert auf true, sobald Rauch gesensed wird.

      Ich möchte jetzt, sobald er dies bemerkt, alle 5 Sekunden über Sonos den Ort des Rauches ausgeben.

      on({id: "deconz.0.Sensors.7.fire", change: "ne"}, function (obj) {
              if(obj.newState.val){
               console.log('Feueralarm ausgelöst');
               require("request")('http://192.168.1.xxx:5005/say/FEUER im Zimmer von x/de-de/60').on("error", function (e) {console.error(e);});
            }
        });
      

      Also das Skript funktioniert. Nur möchte ich alle 5 Sekunden überprüfen, ob der Wert noch auf true ist, und wenn ja, das Skript nochmals ausführen.

      while(getState('...').val){
      .....
      sleep(5000);
      }
      

      scheint nicht möglich zu sein. (Wahrscheinlich weil er einen Thread blockiert)

      Wie löse ich das?

      Danke

      1 Reply Last reply Reply Quote 0
      • K
        klassisch Most Active last edited by

        Dazu gibt es hier einen Beitrag
        https://forum.iobroker.net/topic/32305/intervall-zur-datenabfrage-festlegen

        Und es gibt die Funktion setInterval

        https://www.a-coding-project.de/ratgeber/javascript/setinterval

        Wie bei allen timern, hinterher wieder clearen mit clearInterval

        Dominic Reber 1 Reply Last reply Reply Quote 0
        • Dominic Reber
          Dominic Reber @klassisch last edited by

          @klassisch Super, danke

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

          Support us

          ioBroker
          Community Adapters
          Donate

          408
          Online

          31.8k
          Users

          80.0k
          Topics

          1.3m
          Posts

          2
          3
          153
          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