Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

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

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. setStateChanged überschreibt gleichen Wert

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.5k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.1k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    2.8k

setStateChanged überschreibt gleichen Wert

Geplant Angeheftet Gesperrt Verschoben JavaScript
5 Beiträge 3 Kommentatoren 353 Aufrufe 3 Watching
  • Ä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.
  • O Offline
    O Offline
    olterion
    schrieb am zuletzt editiert von
    #1

    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

    paul53P 1 Antwort Letzte Antwort
    0
    • O olterion

      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

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von paul53
      #2

      @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.

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      mcm1957M 1 Antwort Letzte Antwort
      0
      • paul53P 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.

        mcm1957M Online
        mcm1957M Online
        mcm1957
        schrieb am zuletzt editiert von
        #3

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

        Entwicklung u Betreuung: envertech-pv, hoymiles-ms, ns-client, pid, snmp Adapter;
        Support Repositoryverwaltung.

        Wer Danke sagen will, kann nen Kaffee spendieren: https://paypal.me/mcm1957atiobroker

        LESEN - gute Forenbeitrage

        1 Antwort Letzte Antwort
        1
        • O Offline
          O Offline
          olterion
          schrieb am zuletzt editiert von
          #4

          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

          mcm1957M 1 Antwort Letzte Antwort
          0
          • O olterion

            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

            mcm1957M Online
            mcm1957M Online
            mcm1957
            schrieb am zuletzt editiert von
            #5

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

            Entwicklung u Betreuung: envertech-pv, hoymiles-ms, ns-client, pid, snmp Adapter;
            Support Repositoryverwaltung.

            Wer Danke sagen will, kann nen Kaffee spendieren: https://paypal.me/mcm1957atiobroker

            LESEN - gute Forenbeitrage

            1 Antwort Letzte Antwort
            0
            Antworten
            • In einem neuen Thema antworten
            Anmelden zum Antworten
            • Älteste zuerst
            • Neuste zuerst
            • Meiste Stimmen


            Support us

            ioBroker
            Community Adapters
            Donate

            875

            Online

            32.4k

            Benutzer

            81.5k

            Themen

            1.3m

            Beiträge
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
            ioBroker Community 2014-2025
            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