Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Gelöst] on - Datenpunkt überwachen - Endlos-Schleife

    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] on - Datenpunkt überwachen - Endlos-Schleife

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

      Hi,

      ich habe einen Datenpunkt mit folgenden Werten:

          "name": "Name",
          "role": "switch",
          "type": "boolean",
          "desc": "Beschreibung",
          "read": true,
          "write": true,
          "def": false,
      

      Wird dieser auf "True" gesetzt, so soll entsprechend was ausgelöst werden, also wie ein Taster. Ich überwache das mit diesem Script (Auszug):

      strObjPath = 'javascript.0.xxxx';
      on({id: strObjPath, change: "any", val: true}, function (obj) {
          var bVal = obj.state.val;
          if (bVal === true) {
              setState('javascript.0.hierEinAndererDatenpunktDenIchSetze', true);
              // jetzt Datenpunkt strObjPath wieder leeren
              //setState(strObjPath, undefined);
          }
      });
      

      Das klappt auch soweit alles prima. Allerdings würde ich gerne nach der Ausführung den Datenpunkt wieder leeren. Das versuche ich mittels "setState(strObjPath, undefined);", siehe auskommentiert oben im Script.

      Allerdings führt das zu tollen Endlos-Schleifen :mrgreen:

      Wie kann ich denn das Script anpassen, damit ich den Datenpunkt nach Ausführung (setzen auf "True") direkt danach wieder leeren kann?

      Oder muss/sollte ich etwa die "role" im Datenpunkt ändern? Ich hab ja im Prinzip einen Taster und keinen Schalter (an/aus).

      Ich hoffe, das war verständlich, was ich meine.

      Danke Euch für Eure Hilfe.

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

        Ein Datenpunkt vom Typ "boolean" kann nur die Werte false und true annehmen. undefined meint, dass der Datenpunkt nicht existiert. Die Abfrage auf true innerhalb der Callback-Funktion ist überflüssig, da dies schon die Triggerbedingung ist.

        strObjPath = 'javascript.0.xxxx';
        on({id: strObjPath, val: true}, function () {
            setState('javascript.0.hierEinAndererDatenpunktDenIchSetze', true);
            // jetzt Datenpunkt strObjPath wieder leeren
            setState(strObjPath, false);
        });
        
        1 Reply Last reply Reply Quote 0
        • Mic
          Mic Developer last edited by

          Perfekt, vielen Dank Paul!

          Ich reflektiere:

          • Abfrage auf true war tatsächlich redundant, entstand nur durch das testen aber ist jetzt natürlich raus

          • nur mit false/true arbeiten, undefined war hier Quatsch

          • Entfernen von change: "any" war hier sicherlich auch angebracht. Vermutlich auch der Trigger für die Endlosschleife.

          Thema gelöst 8-)

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

            @Mic:

            • Entfernen von change: "any" war hier sicherlich auch angebracht. Vermutlich auch der Trigger für die Endlosschleife. `
              Nein, sondern war nur redundant, da change: "any" die Voreinstellung ist, wenn das Muster ein Objekt ist.
            1 Reply Last reply Reply Quote 0
            • Mic
              Mic Developer last edited by

              Ahh, ok, danke für die Info Paul. Also Endlosschleife letztendlich durch das undefined ausgelöst wie schon von dir implizit angemerkt.

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

              Support us

              ioBroker
              Community Adapters
              Donate

              832
              Online

              31.7k
              Users

              79.9k
              Topics

              1.3m
              Posts

              2
              5
              650
              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