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. Entwicklung
  4. Anfängerfrage: setState nur bei Änderung?

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    3.2k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.1k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.4k

Anfängerfrage: setState nur bei Änderung?

Geplant Angeheftet Gesperrt Verschoben Entwicklung
adapterentwicklung
7 Beiträge 3 Kommentatoren 398 Aufrufe 2 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.
  • H Offline
    H Offline
    HausBusDe
    schrieb am zuletzt editiert von HausBusDe
    #1

    Hallo,
    ist vielleicht eine blöde Frage, aber muss man im Adapter immer selbst prüfen, ob der Status eines Gerätesensors von dem aktuellen Status in IO Broker abweicht und darf nur dann den geänderten Status per setState melden? Ich hätte eigentlich gedacht, dass man jederzeit setState auch mit unverändertem Wert aufrufen kann und IO Broker meldet das nur dann an Subscriber weiter, wenn der Wert sich auch geändert hat. Wenn ich mich selbst per adapter.on('stateChange' anmelde, bekomme ich jeden einzelnen Aufruf, auch wenn sich der Wert nicht geändert hat.
    Bedeutet das auch andersrum, dass man damit rechnen muss, dass man z.b. LampeAnschalten=true auch mehrmals nacheinander bekommen kann und man erstmal selbst prüfen muss, ob die Lampe nicht eh schon an ist?

    OliverIOO paul53P 2 Antworten Letzte Antwort
    0
    • H HausBusDe

      Hallo,
      ist vielleicht eine blöde Frage, aber muss man im Adapter immer selbst prüfen, ob der Status eines Gerätesensors von dem aktuellen Status in IO Broker abweicht und darf nur dann den geänderten Status per setState melden? Ich hätte eigentlich gedacht, dass man jederzeit setState auch mit unverändertem Wert aufrufen kann und IO Broker meldet das nur dann an Subscriber weiter, wenn der Wert sich auch geändert hat. Wenn ich mich selbst per adapter.on('stateChange' anmelde, bekomme ich jeden einzelnen Aufruf, auch wenn sich der Wert nicht geändert hat.
      Bedeutet das auch andersrum, dass man damit rechnen muss, dass man z.b. LampeAnschalten=true auch mehrmals nacheinander bekommen kann und man erstmal selbst prüfen muss, ob die Lampe nicht eh schon an ist?

      OliverIOO Offline
      OliverIOO Offline
      OliverIO
      schrieb am zuletzt editiert von
      #2

      @HausBusDe
      Ich merke mir im Adapter immer zuerst selbst den letzten Wert und führe setstate erst aus, wenn sich der Wert geändert hat.

      Meine Adapter und Widgets
      TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
      Links im Profil

      H 1 Antwort Letzte Antwort
      0
      • OliverIOO OliverIO

        @HausBusDe
        Ich merke mir im Adapter immer zuerst selbst den letzten Wert und führe setstate erst aus, wenn sich der Wert geändert hat.

        H Offline
        H Offline
        HausBusDe
        schrieb am zuletzt editiert von
        #3

        Aber das ist eigentlich recht unnötig bzw. ineffizient, weil die kompletten Daten dann nochmal gespiegelt im Adapter vorgehalten werden. Kennt jemand einen guten Grund wieso IO Broker das so handhabt? Es wäre doch ein leichtes, die Listener nur dann zu informieren, wenn ein gesetzter State auch anders ist, als der vorherige. Natürlich nur bei den setState mit ack und nicht bei Aufrufen, die Aktionen bewirken.

        1 Antwort Letzte Antwort
        0
        • H HausBusDe

          Hallo,
          ist vielleicht eine blöde Frage, aber muss man im Adapter immer selbst prüfen, ob der Status eines Gerätesensors von dem aktuellen Status in IO Broker abweicht und darf nur dann den geänderten Status per setState melden? Ich hätte eigentlich gedacht, dass man jederzeit setState auch mit unverändertem Wert aufrufen kann und IO Broker meldet das nur dann an Subscriber weiter, wenn der Wert sich auch geändert hat. Wenn ich mich selbst per adapter.on('stateChange' anmelde, bekomme ich jeden einzelnen Aufruf, auch wenn sich der Wert nicht geändert hat.
          Bedeutet das auch andersrum, dass man damit rechnen muss, dass man z.b. LampeAnschalten=true auch mehrmals nacheinander bekommen kann und man erstmal selbst prüfen muss, ob die Lampe nicht eh schon an ist?

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

          @HausBusDe sagte:

          IO Broker meldet das nur dann an Subscriber weiter, wenn der Wert sich auch geändert hat.

          ioBroker meldet auch eine Aktualisierung des Zeitstempels (change: "any"). Andernfalls könnte man nicht auf Datenpunkte mit konstantem Wert (z.B. Taster) triggern.

          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

          H 1 Antwort Letzte Antwort
          0
          • paul53P paul53

            @HausBusDe sagte:

            IO Broker meldet das nur dann an Subscriber weiter, wenn der Wert sich auch geändert hat.

            ioBroker meldet auch eine Aktualisierung des Zeitstempels (change: "any"). Andernfalls könnte man nicht auf Datenpunkte mit konstantem Wert (z.B. Taster) triggern.

            H Offline
            H Offline
            HausBusDe
            schrieb am zuletzt editiert von
            #5

            @paul53 danke, das ist ein guter Hinweis. Wie werden Taster denn abgebildet? Die melden quasi nicht zwei Events, dass sie gedrückt und dann losgelassen wurden, sondern nur einen value "ausgelöst", der sich nie ändert und nur nen neuen Timestamp bekommt?

            paul53P 1 Antwort Letzte Antwort
            0
            • H HausBusDe

              @paul53 danke, das ist ein guter Hinweis. Wie werden Taster denn abgebildet? Die melden quasi nicht zwei Events, dass sie gedrückt und dann losgelassen wurden, sondern nur einen value "ausgelöst", der sich nie ändert und nur nen neuen Timestamp bekommt?

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

              @HausBusDe sagte:

              Wie werden Taster denn abgebildet?

              Ich kenne nur die HomeMatic-Taster (klassisch): Der Wert ist immer true. PRESS_SHORT aktualisiert den Zeitstempel, wenn die Taste innerhalb von 0,4 s nach Drücken losgelassen wird; PRESS_LONG aktualisiert den Zeitstempel, wenn nach 0,4 s die Taste noch gedrückt ist.

              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

              H 1 Antwort Letzte Antwort
              0
              • paul53P paul53

                @HausBusDe sagte:

                Wie werden Taster denn abgebildet?

                Ich kenne nur die HomeMatic-Taster (klassisch): Der Wert ist immer true. PRESS_SHORT aktualisiert den Zeitstempel, wenn die Taste innerhalb von 0,4 s nach Drücken losgelassen wird; PRESS_LONG aktualisiert den Zeitstempel, wenn nach 0,4 s die Taste noch gedrückt ist.

                H Offline
                H Offline
                HausBusDe
                schrieb am zuletzt editiert von
                #7

                @paul53 danke! Ich glaube, dann mache ich das auch so. Wir haben klicked, double klicked und hold start und hold end

                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

                575

                Online

                32.7k

                Benutzer

                82.3k

                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