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. ack in Skripten setzen?

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    475

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.6k

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

ack in Skripten setzen?

Geplant Angeheftet Gesperrt Verschoben JavaScript
5 Beiträge 3 Kommentatoren 711 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.
  • S Offline
    S Offline
    stan23
    schrieb am zuletzt editiert von
    #1

    Hi,
    zum Thema ack bei States habe ich ein paar ältere Threads und Erklärungen gefunden, z.B.
    https://forum.iobroker.net/topic/773/setstate-mit-acknowledge/11
    https://forum.iobroker.net/topic/11657/gelöst-datenpunkt-aktualisieren-ohne-aktion
    https://github.com/ioBroker/ioBroker/wiki/Adapter-Development-Documentation#commands-and-statuses

    Mir ist bewusst dass der "normale" Anwendungsfall ist, ein Command oder Status eines Adapters mit ack=false zu setzen, und der Adapter bestätigt das in dem er ack=true setzt.

    Kann und darf ich das auch bei meinen eigenen Datenpunkten innerhalb von 0_userdata.0 verwenden?
    Also ich setze in eimem TS-Skript einen eigenen Datenpunkt mit ack=false und in einer zweiten Funktion subscribe ich darauf, verwende ihn weiter und setze darin dann ack=true?

    Wenn ja, gibt es dazu einen einfachen Weg?

    So erscheint es mit recht umständlich:

    const dpMyUserState: string = '0_userdata.0.testState';
    
    subscribe ({id: dpMyUserState}, function (obj) {
        /* do the stuff*/
        
        /* set the ack */
        setState (obj.id, obj.state.val, true);
    });
    

    Viele Grüße
    Marco

    Viele Grüße
    Marco

    paul53P 1 Antwort Letzte Antwort
    0
    • S stan23

      Hi,
      zum Thema ack bei States habe ich ein paar ältere Threads und Erklärungen gefunden, z.B.
      https://forum.iobroker.net/topic/773/setstate-mit-acknowledge/11
      https://forum.iobroker.net/topic/11657/gelöst-datenpunkt-aktualisieren-ohne-aktion
      https://github.com/ioBroker/ioBroker/wiki/Adapter-Development-Documentation#commands-and-statuses

      Mir ist bewusst dass der "normale" Anwendungsfall ist, ein Command oder Status eines Adapters mit ack=false zu setzen, und der Adapter bestätigt das in dem er ack=true setzt.

      Kann und darf ich das auch bei meinen eigenen Datenpunkten innerhalb von 0_userdata.0 verwenden?
      Also ich setze in eimem TS-Skript einen eigenen Datenpunkt mit ack=false und in einer zweiten Funktion subscribe ich darauf, verwende ihn weiter und setze darin dann ack=true?

      Wenn ja, gibt es dazu einen einfachen Weg?

      So erscheint es mit recht umständlich:

      const dpMyUserState: string = '0_userdata.0.testState';
      
      subscribe ({id: dpMyUserState}, function (obj) {
          /* do the stuff*/
          
          /* set the ack */
          setState (obj.id, obj.state.val, true);
      });
      

      Viele Grüße
      Marco

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

      @stan23 sagte: setze in eimem TS-Skript einen eigenen Datenpunkt mit ack=false und in einer zweiten Funktion subscribe ich darauf, verwende ihn weiter und setze darin dann ack=true?

      Wozu soll das gut sein? Virtuelle Datenpunkte setzt man mit ack = true.

      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

      AsgothianA 1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @stan23 sagte: setze in eimem TS-Skript einen eigenen Datenpunkt mit ack=false und in einer zweiten Funktion subscribe ich darauf, verwende ihn weiter und setze darin dann ack=true?

        Wozu soll das gut sein? Virtuelle Datenpunkte setzt man mit ack = true.

        AsgothianA Offline
        AsgothianA Offline
        Asgothian
        Developer
        schrieb am zuletzt editiert von Asgothian
        #3

        @paul53 sagte in ack in Skripten setzen?:

        @stan23 sagte: setze in eimem TS-Skript einen eigenen Datenpunkt mit ack=false und in einer zweiten Funktion subscribe ich darauf, verwende ihn weiter und setze darin dann ack=true?

        Wozu soll das gut sein? Virtuelle Datenpunkte setzt man mit ack = true.

        @stan23 bei selbst definierten Daten punkten darfst du das natürlich tun. Du solltest aber in deinem trigger dann auch sicherstellen das ack false ist und ansonsten nix tun.

        @paul53 zum Thema wozu: wenn ein Skript sich wie ein Adapter verhalten soll und mit dem ack bestätigen soll das die gewünschte Funktion ausgeführt wurde ist das ein Weg. Ein weiterer Grund ist das verhindern von “change loops”

        Von “extern” wird der state üblicherweise ohne ack gesetzt. Wenn du jetzt 2 states hast die z.bsp. Eine Umrechnung machen und sich gegenseitig beeinflussen dann kannst du im Skript auf setzen ohne ack triggern und das Ergebnis mit ack setzen. Dadurch verhinderst du einen change Loop ohne im trigger durch prüfen von obj.state.from Anpassungen durch den JS adapter zu unterbinden.

        A.

        ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
        "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

        paul53P S 2 Antworten Letzte Antwort
        1
        • AsgothianA Asgothian

          @paul53 sagte in ack in Skripten setzen?:

          @stan23 sagte: setze in eimem TS-Skript einen eigenen Datenpunkt mit ack=false und in einer zweiten Funktion subscribe ich darauf, verwende ihn weiter und setze darin dann ack=true?

          Wozu soll das gut sein? Virtuelle Datenpunkte setzt man mit ack = true.

          @stan23 bei selbst definierten Daten punkten darfst du das natürlich tun. Du solltest aber in deinem trigger dann auch sicherstellen das ack false ist und ansonsten nix tun.

          @paul53 zum Thema wozu: wenn ein Skript sich wie ein Adapter verhalten soll und mit dem ack bestätigen soll das die gewünschte Funktion ausgeführt wurde ist das ein Weg. Ein weiterer Grund ist das verhindern von “change loops”

          Von “extern” wird der state üblicherweise ohne ack gesetzt. Wenn du jetzt 2 states hast die z.bsp. Eine Umrechnung machen und sich gegenseitig beeinflussen dann kannst du im Skript auf setzen ohne ack triggern und das Ergebnis mit ack setzen. Dadurch verhinderst du einen change Loop ohne im trigger durch prüfen von obj.state.from Anpassungen durch den JS adapter zu unterbinden.

          A.

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

          @asgothian sagte: wenn ein Skript sich wie ein Adapter verhalten soll

          @stan23 sagte in ack in Skripten setzen?:

          in einer zweiten Funktion subscribe ich

          Eine zweite Funktion ist nicht unbedingt ein zweites Skript.

          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

          1 Antwort Letzte Antwort
          0
          • AsgothianA Asgothian

            @paul53 sagte in ack in Skripten setzen?:

            @stan23 sagte: setze in eimem TS-Skript einen eigenen Datenpunkt mit ack=false und in einer zweiten Funktion subscribe ich darauf, verwende ihn weiter und setze darin dann ack=true?

            Wozu soll das gut sein? Virtuelle Datenpunkte setzt man mit ack = true.

            @stan23 bei selbst definierten Daten punkten darfst du das natürlich tun. Du solltest aber in deinem trigger dann auch sicherstellen das ack false ist und ansonsten nix tun.

            @paul53 zum Thema wozu: wenn ein Skript sich wie ein Adapter verhalten soll und mit dem ack bestätigen soll das die gewünschte Funktion ausgeführt wurde ist das ein Weg. Ein weiterer Grund ist das verhindern von “change loops”

            Von “extern” wird der state üblicherweise ohne ack gesetzt. Wenn du jetzt 2 states hast die z.bsp. Eine Umrechnung machen und sich gegenseitig beeinflussen dann kannst du im Skript auf setzen ohne ack triggern und das Ergebnis mit ack setzen. Dadurch verhinderst du einen change Loop ohne im trigger durch prüfen von obj.state.from Anpassungen durch den JS adapter zu unterbinden.

            A.

            S Offline
            S Offline
            stan23
            schrieb am zuletzt editiert von
            #5

            @asgothian said in ack in Skripten setzen?:

            Du solltest aber in deinem trigger dann auch sicherstellen das ack false ist und ansonsten nix tun.

            Stimmt, das müsste also so aussehen, damit da keine Schleife entsteht:

            const dpMyUserState: string = '0_userdata.0.testState';
            
            subscribe ({id: dpMyUserState, ack: false}, function (obj) {
                /* do the stuff*/
            
                /* set the ack */
                setState (obj.id, obj.state.val, true);
            });
            

            Danke :)

            Viele Grüße
            Marco

            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

            713

            Online

            32.5k

            Benutzer

            81.8k

            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