Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. MQTT "LWT"-Feature Wartezeit ?

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

MQTT "LWT"-Feature Wartezeit ?

Scheduled Pinned Locked Moved ioBroker Allgemein
4 Posts 2 Posters 543 Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • W Offline
    W Offline
    WillyIobrok
    wrote on last edited by
    #1

    Hallo zusammen,

    Nehme gerade das LWT-Feature (Last Will/Testament) des MQTT adapters (Version 2.3.4) in Betrieb.

    Wenn ich also meinen ESP32 basierten "Client A" abschalte, möchte ich, daß der MQTT Broker Adapter auf dem ioBroker (Raspberry 4) nach einiger Zeit dem "Client B" mitteilt, daß Client A offline ist.

    Funktioniert auch soweit, aber es dauert ziemlich lange, bis der MQTT broker nach Abschalten eines MQTT clients die LWT-Message ("offline") an die anderen Clients weiterschickt (so ca. 30 ... 100 sek).
    Das ist mir viel zu lange.
    Deshalb suche ich nach einer Möglichkeit, diese Zeit auf z.B. 5 ... 10 sek zu verkürzen, habe aber bis jetzt nix gefunden - weder in der MQTT Oberfläche noch im Forum.
    Gibt's so eine Einstellung nicht?
    Wovon hängt denn diese Wartezeit ab ?

    Grüße,

    WillyIoBrok

    UncleSamU 1 Reply Last reply
    0
    • W WillyIobrok

      Hallo zusammen,

      Nehme gerade das LWT-Feature (Last Will/Testament) des MQTT adapters (Version 2.3.4) in Betrieb.

      Wenn ich also meinen ESP32 basierten "Client A" abschalte, möchte ich, daß der MQTT Broker Adapter auf dem ioBroker (Raspberry 4) nach einiger Zeit dem "Client B" mitteilt, daß Client A offline ist.

      Funktioniert auch soweit, aber es dauert ziemlich lange, bis der MQTT broker nach Abschalten eines MQTT clients die LWT-Message ("offline") an die anderen Clients weiterschickt (so ca. 30 ... 100 sek).
      Das ist mir viel zu lange.
      Deshalb suche ich nach einer Möglichkeit, diese Zeit auf z.B. 5 ... 10 sek zu verkürzen, habe aber bis jetzt nix gefunden - weder in der MQTT Oberfläche noch im Forum.
      Gibt's so eine Einstellung nicht?
      Wovon hängt denn diese Wartezeit ab ?

      Grüße,

      WillyIoBrok

      UncleSamU Offline
      UncleSamU Offline
      UncleSam
      Developer
      wrote on last edited by
      #2

      @willyiobrok So wie ich das sehe, wird das Testament verschickt, sobald der Server mitbekommt, dass die Verbindung abgerissen ist.

      Nun scheint das Problem zu sein, dass das Timeout (bei dir) sehr hoch ist und der Server entsprechend auch sehr lange nicht bemerkt, dass der Client nicht mehr verbunden ist.

      Ich sehe die Lösung im Setzen des Keep-Alive (auf Seite des Clients) auf einen möglichst tiefen Wert.


      Versand:
      https://github.com/ioBroker/ioBroker.mqtt/blob/abb9adfbae66c88bcc377e484e5f496eea1f42a7/lib/server.js#L613-L621
      Fälle, in denen die Verbindung geschlossen wird:
      https://github.com/ioBroker/ioBroker.mqtt/blob/abb9adfbae66c88bcc377e484e5f496eea1f42a7/lib/server.js#L1064-L1069
      Keep-Alive:
      https://github.com/ioBroker/ioBroker.mqtt/blob/abb9adfbae66c88bcc377e484e5f496eea1f42a7/lib/server.js#L764

      Bitte bei Problemen mit meinen Adaptern, Issue auf GitHub erfassen: Loxone | I2C | Luxtronik2
      ♡-lichen Dank an meine Sponsoren

      W 1 Reply Last reply
      0
      • UncleSamU UncleSam

        @willyiobrok So wie ich das sehe, wird das Testament verschickt, sobald der Server mitbekommt, dass die Verbindung abgerissen ist.

        Nun scheint das Problem zu sein, dass das Timeout (bei dir) sehr hoch ist und der Server entsprechend auch sehr lange nicht bemerkt, dass der Client nicht mehr verbunden ist.

        Ich sehe die Lösung im Setzen des Keep-Alive (auf Seite des Clients) auf einen möglichst tiefen Wert.


        Versand:
        https://github.com/ioBroker/ioBroker.mqtt/blob/abb9adfbae66c88bcc377e484e5f496eea1f42a7/lib/server.js#L613-L621
        Fälle, in denen die Verbindung geschlossen wird:
        https://github.com/ioBroker/ioBroker.mqtt/blob/abb9adfbae66c88bcc377e484e5f496eea1f42a7/lib/server.js#L1064-L1069
        Keep-Alive:
        https://github.com/ioBroker/ioBroker.mqtt/blob/abb9adfbae66c88bcc377e484e5f496eea1f42a7/lib/server.js#L764

        W Offline
        W Offline
        WillyIobrok
        wrote on last edited by
        #3

        @unclesam
        Hmm, das dachte ich mir auch schon. Ich benutze als client einen ESP32 mit der Library "EspMQTTClient".
        Das einzige, was ich in der Doku unter "live", "life" oder "time gefunden habe ist:

        Change the keepalive interval (15 seconds by default)

        void setKeepAlive(uint16_t keepAliveSeconds);
        

        Aber 15 sek hört sich doch gar nicht soo schlimm an. Werde es aber trotzdem mal auf 5 sek kürzen.

        Schau ma mal :-)

        Erstmal vielen Dank,

        WillyIoBrok

        W 1 Reply Last reply
        0
        • W WillyIobrok

          @unclesam
          Hmm, das dachte ich mir auch schon. Ich benutze als client einen ESP32 mit der Library "EspMQTTClient".
          Das einzige, was ich in der Doku unter "live", "life" oder "time gefunden habe ist:

          Change the keepalive interval (15 seconds by default)

          void setKeepAlive(uint16_t keepAliveSeconds);
          

          Aber 15 sek hört sich doch gar nicht soo schlimm an. Werde es aber trotzdem mal auf 5 sek kürzen.

          Schau ma mal :-)

          Erstmal vielen Dank,

          WillyIoBrok

          W Offline
          W Offline
          WillyIobrok
          wrote on last edited by
          #4

          @UncleSam
          habs jetzt mit 5s keepalive interval ausprobiert, ja, es geht schneller ! Vielen Dank für den Tip
          (allerdings dauerts trotzdem noch bis zu 20 sek, damit kann/muß ich aber jetzt leben)

          1 Reply Last reply
          0
          Reply
          • Reply as topic
          Log in to reply
          • Oldest to Newest
          • Newest to Oldest
          • Most Votes


          Support us

          ioBroker
          Community Adapters
          Donate
          FAQ Cloud / IOT
          HowTo: Node.js-Update
          HowTo: Backup/Restore
          Downloads
          BLOG

          719

          Online

          32.6k

          Users

          82.2k

          Topics

          1.3m

          Posts
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
          ioBroker Community 2014-2025
          logo
          • Login

          • Don't have an account? Register

          • Login or register to search.
          • First post
            Last post
          0
          • Home
          • Recent
          • Tags
          • Unread 0
          • Categories
          • Unreplied
          • Popular
          • GitHub
          • Docu
          • Hilfe