Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. setStateChanged überschreibt gleichen Wert

    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

    setStateChanged überschreibt gleichen Wert

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

      Hallo,

      ich würde gerne einen gleichen Wert nicht überschreiben, wenn setState ausgeführt wird.

      Dies ist natürlich über folgende Abfrage möglich:

      function test(){
         if(getState('myState').val != false){
            setState('myState', false);
         }
      }
      

      Ich habe in der JavaScript Doku folgende Funktion gefunden:
      setStateChanged

      Wenn ich dann allerdings diese Funktion nutze, wird beim Aufruf der Funktion "test" trotzdem der Wert false erneut geschrieben.

      function test(){
         setStateChanged('myState', false);
      }
      

      Mache ich irgendwas falsch? Ist die Funktion dafür nicht geeignet?

      Grüße,
      Olli

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

        @olterion sagte: trotzdem der Wert false erneut geschrieben.

        Gerade getestet: Es wird nur dann nicht aktualisiert, wenn sowohl der Wert als auch die Bestätigung übereinstimmen. Das macht natürlich bei Adapter-Datenpunkten keinen Sinn.

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

          setStateChanged prüft alle Attribute (val, ack, q, expire, from, user, ...) und aktualisiert nur dann nicht, wenn es KEINE Änderung in irgendeinem Attribut gibt.

          1 Reply Last reply Reply Quote 1
          • O
            olterion last edited by

            Hallo,

            vielen Dank für die Erläuterungen.
            Ich versuche tatsächlich einen Datenpunkt eines Adapters zu beschreiben.
            Dieser setzt dann natürlich den ack immer auf true, wenn er die Daten verarbeitet hat.

            Schade, die Dokumentation sagt ja aus, dass der Datenpunkt nur geschrieben wird, wenn die VALUE (val) sich geändert hat:

            Same as setState, but set value only if the value is really changed.

            An der Stelle ist die Dokumentation dann wohl nicht ganz korrekt.

            @Bluefox könnte man die Funktion setStateChanged nicht so erweitern, dass man angeben kann, welche Attribute betrachtet werden sollen? (in meinem Fall würde der Vergleich von val ausreichen)

            Grüße,
            Olli

            mcm1957 1 Reply Last reply Reply Quote 0
            • mcm1957
              mcm1957 @olterion last edited by

              Zu dem Thema gibts ein Issue
              https://github.com/ioBroker/ioBroker.javascript/issues/1720

              paul53 created this issue in ioBroker/ioBroker.javascript

              open [Bug]: setStateChanged funktioniert nicht wie erwartet #1720

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

              Support us

              ioBroker
              Community Adapters
              Donate

              860
              Online

              31.8k
              Users

              79.9k
              Topics

              1.3m
              Posts

              3
              5
              254
              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