Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Entwicklung
    4. Adapter stateChange Event Verhalten

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Adapter stateChange Event Verhalten

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

      Hallo zusammen,

      versuche schon seit geraumer Zeit mich mit einer Adapterentwicklung auseinander zu setzen und habe ein Verhalten im Adapter, was ich so nicht verstehe. Folgende Konfiguration:

      Mein Testadapter abonniert einen ForeignState hier eine IP-Adresse vom Ping-Adapter. Diese IP-Adresse wird vom Ping-Adapter fleissig gepingt , und ich bekomme permanent ein Event ‚stateChange‘ true zurück (jedesmal nach einem ping request) obwohl sich der Status/Wert nie ändert.

      Was könnte der Grund sein ?

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

        Naja, der Grund ist das bei Adaptern bei jeder Änderung auf subscribed States getriggert wird. Wenn du Wissen willst ob sich der Wert geändert hat Must du dir den Wert vorher merken und vergleichen.

        1 Reply Last reply Reply Quote 0
        • R
          Rasputin last edited by

          @apollon77:

          Naja, der Grund ist das bei Adaptern bei jeder Änderung auf subscribed States getriggert wird. Wenn du Wissen willst ob sich der Wert geändert hat Must du dir den Wert vorher merken und vergleichen. `

          Aha :?: :!:

          Aber das ist für mich ein Widerspruch, es hat sich nichts beim Ping-Adapter geändert, aber mein Adapter bekommt ein stateofChange.

          Dann fehlt wohl dem Admin die Logik eine Wertänderung festzustellen und verteilt alle Werte bei setState ohne Prüfung einfach an alle Abonnenten. Das ist elementar, den das treibt die Systemlast hoch bei vielen abonnierten Werten, denn die Events werden immer generiert auch wenn sich nichts ändert . Da sollte mal in der Doku erwähnt werden.

          Wäre es denn nicht sinnvoller wenn der Ping-Adapter das machen würde, nur dann setState aufrufen wenn der PingStatus sich ändert, dies sollten dann alle Adapter so machen.

          1 Reply Last reply Reply Quote 0
          • AlCalzone
            AlCalzone Developer last edited by

            @Rasputin:

            Aber das ist für mich ein Widerspruch, es hat sich nichts beim Ping-Adapter geändert, aber mein Adapter bekommt ein stateofChange. `
            Und wenn du im Adapter auf eine Aktualisierung lauschen willst und nicht eine (wirkliche) Änderung? Dann geht das nur, wenn der Controller alle Events sendet und den Adaptern das Filtern überlässt.

            Da sollte natürlich darauf geachtet werden, dass nicht auf sämtliche States gelauscht wird, etwa per

            adapter.subscribeForeignStates("*")
            

            sondern nur die, die tatsächlich benötigt werden.

            > Wäre es denn nicht sinnvoller wenn der Ping-Adapter das machen würde, nur dann setState aufrufen wenn der PingStatus sich ändert, dies sollten dann alle Adapter so machen.
            Da hast du möglicherweise Recht!

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

            Support us

            ioBroker
            Community Adapters
            Donate

            366
            Online

            31.7k
            Users

            79.8k
            Topics

            1.3m
            Posts

            3
            4
            871
            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