Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Entwicklung
    4. wie ack-Eigenschaft genau behandeln?

    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

    wie ack-Eigenschaft genau behandeln?

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

      Hallo!
      Ich entwickle einen Adapter, der angeschlossene Hardware steuern soll. Diese ist aber nicht zu 100% zuverlässig.
      In onStateChange bekomme ich also die Info, dass der Benutzer den Wert geändert haben möchte, also steht ack auf false und der gewünschte Wert in state.val.
      Dies leite ich an die Hardware weiter, die im Erfolgsfall die Statusänderung bestätigt, woraufhin ich setState mit ack=true machen kann, fertig.
      Nach dem Informieren der Hardware schaue ich per setTimeout nach ein paar Sekunden nach, ob es geklappt hat, also die Bestätigung kam. Wenn nicht, mache ich ein paar erneute Versuche.
      Nun endlich die Frage: Wenn ich nun nach ein paar Versuchen zum Ergebnis komme, dass der gewünschte Befehl nicht abschließend ausgeführt werden konnte ("Hardware klemmt"), wie gehe ich mit state.val und ack um?
      Einfach so lassen würde ja wohl bedeuten "wird gerade auf x gesetzt, ist aber noch nicht fertig", was evtl. zu Verwirrung führen könnte.
      Wieder zurücksetzen auf den vorherigen Wert mit ack=true? Dann müsste ich mir den alten Wert noch irgendwo merken. Oder finde ich den in state? stat.previousval oder so?
      Scheint mir alles nicht so toll zu sein. Gibt es da ein übliches Vorgehen?

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

        @ELK sagte in:

        "wird gerade auf x gesetzt, ist aber noch nicht fertig", was evtl. zu Verwirrung führen könnte.

        Wieso Verwirrung ? Genau das sagt ack = false aus und wird als Rückgabe vom Adapter erwartet.

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

          ok. Dann bleibt im Fehlerfalle also der Status auf dem Wunschwert und ack auf false.
          Hätte ja auch sein können, dass ein ack=false zu interpretieren ist als "in Arbeit, bitte später nochmal nachschauen". Aber offenbar ist es eher "sollte (irgendwann damals mal) geändert werden, hat bis jetzt aber noch nicht geklappt."
          Schön, spart mir Aufwand 😉

          OliverIO 1 Reply Last reply Reply Quote 0
          • OliverIO
            OliverIO @ELK last edited by

            @ELK
            wenn dann die hardware regelmäßig abgefragt wird, dann wird bei der nächsten ordentlichen abfrage
            der Datenpunkt neu geschrieben und dann wieder mit ack bestätigt.
            wenn der adapter feststellt, das die Ansteuerung der Hardware nicht mehr funktioniert, dann sollte die Connection Eigenschaft auf false gesetzt werden, dann geht der adapter auf rot. dann muss erst das Problem grundsätzlich gelöst werden.

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

            Support us

            ioBroker
            Community Adapters
            Donate

            904
            Online

            31.9k
            Users

            80.2k
            Topics

            1.3m
            Posts

            adapter entwicklung ack
            3
            4
            252
            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