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. Frage: MQTT Server (Broker) in Adapter benötigt

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.4k

Frage: MQTT Server (Broker) in Adapter benötigt

Geplant Angeheftet Gesperrt Verschoben Entwicklung
6 Beiträge 4 Kommentatoren 493 Aufrufe 4 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.
  • AcguaA Offline
    AcguaA Offline
    Acgua
    schrieb am zuletzt editiert von
    #1

    Hi,

    ich möchte einen MQTT-Server (Broker) in den Fully Browser Adapter integrieren und hab das Vorhaben hier gepostet.

    Hintergrund: Die Fully Browser App (Android) agiert – optional zuschaltbar – als MQTT-Client und publiziert Status und Events an einen MQTT-Server - siehe https://www.fully-kiosk.com/en/#mqtt - das ist alles. (Kommandos senden an den Fully (z.B. "Bildschirm aus") geht allerdings nur über die REST API lt. Doku, und nicht via MQTT.)
    Diese Infos und Events vom Fully möchte ich nun im Adapter abgreifen, brauche also dafür einen MQTT-Server (Broker).

    Macht es Sinn, hier einen Server direkt im Adapter zu implementieren, also etwa mittels mqtt-connection oder aedes?

    Etwa die Adapter mqtt, Shelly, und Sonoff haben eigene Server implementiert und nutzen dafür mqtt-connection.
    Mein Test mit mqtt-connection im Entwicklungs-Adapter funktioniert. Aber etwa client.on('publish' ...) wirft alle paar Millisekunden ein neues Paket aus. Also wohl viel zu oft. Mit aedes auch so bei (this.aedes.on('publish', (packet, client) => {).
    Jetzt müsste ich mich vermutlich deutlich mehr in MQTT einlesen und damit viel Zeit verbringen, dabei auch mit QOS, PUBREC usw. .... Darauf habe ich aber keine allzu große Lust, zumal das schon viele andere vor mir ausgiebig machten und implementierten :-)

    Mein Zwischenfazit:
    Too much effort for this simple use case... Ich will ja nur paar Daten abgreifen. Dazu kommt die Arbeit an Maintenance einer solchen MQTT-Implementierung, etc...

    Nur: es gibt kein aktives node.js-Modul auf Github bzw. npm, welches mir diese Arbeit abnehmen könnte, und z.B. auf aedes basiert. Hab wirklich alles durchsucht :grinning:

    Aber es gibt ja noch den ioBroker mqtt-Server-Adapter, der die komplette Arbeit abnimmt.
    Die Readme des Adapters meint: [...] saves always the values into the States-DB, so it can be processed by other adapters..

    Ok. Also besser diesen Adapter nutzen und dann von meinem Adapter aus nur die States/Objekte auslesen? Gibt halt auch Redundanz...

    Was ist hier denn der empfehlenswerte Weg?

    BananaJoeB haus-automatisierungH 2 Antworten Letzte Antwort
    0
    • AcguaA Acgua

      Hi,

      ich möchte einen MQTT-Server (Broker) in den Fully Browser Adapter integrieren und hab das Vorhaben hier gepostet.

      Hintergrund: Die Fully Browser App (Android) agiert – optional zuschaltbar – als MQTT-Client und publiziert Status und Events an einen MQTT-Server - siehe https://www.fully-kiosk.com/en/#mqtt - das ist alles. (Kommandos senden an den Fully (z.B. "Bildschirm aus") geht allerdings nur über die REST API lt. Doku, und nicht via MQTT.)
      Diese Infos und Events vom Fully möchte ich nun im Adapter abgreifen, brauche also dafür einen MQTT-Server (Broker).

      Macht es Sinn, hier einen Server direkt im Adapter zu implementieren, also etwa mittels mqtt-connection oder aedes?

      Etwa die Adapter mqtt, Shelly, und Sonoff haben eigene Server implementiert und nutzen dafür mqtt-connection.
      Mein Test mit mqtt-connection im Entwicklungs-Adapter funktioniert. Aber etwa client.on('publish' ...) wirft alle paar Millisekunden ein neues Paket aus. Also wohl viel zu oft. Mit aedes auch so bei (this.aedes.on('publish', (packet, client) => {).
      Jetzt müsste ich mich vermutlich deutlich mehr in MQTT einlesen und damit viel Zeit verbringen, dabei auch mit QOS, PUBREC usw. .... Darauf habe ich aber keine allzu große Lust, zumal das schon viele andere vor mir ausgiebig machten und implementierten :-)

      Mein Zwischenfazit:
      Too much effort for this simple use case... Ich will ja nur paar Daten abgreifen. Dazu kommt die Arbeit an Maintenance einer solchen MQTT-Implementierung, etc...

      Nur: es gibt kein aktives node.js-Modul auf Github bzw. npm, welches mir diese Arbeit abnehmen könnte, und z.B. auf aedes basiert. Hab wirklich alles durchsucht :grinning:

      Aber es gibt ja noch den ioBroker mqtt-Server-Adapter, der die komplette Arbeit abnimmt.
      Die Readme des Adapters meint: [...] saves always the values into the States-DB, so it can be processed by other adapters..

      Ok. Also besser diesen Adapter nutzen und dann von meinem Adapter aus nur die States/Objekte auslesen? Gibt halt auch Redundanz...

      Was ist hier denn der empfehlenswerte Weg?

      BananaJoeB Online
      BananaJoeB Online
      BananaJoe
      Most Active
      schrieb am zuletzt editiert von
      #2

      @acgua ich könnte damit völlig Leben.
      Du müsstest in deinem Adapter dann ja nur den Pfad dafür Konfigurierbar machen.
      Ich habe mehrere FullyKiosk Browser am laufen und dementsprechend mehrere Instanzen.
      Überall habe ich schon zusätzlich MQTT konfiguriert.

      ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

      BananaJoeB 1 Antwort Letzte Antwort
      0
      • arteckA Offline
        arteckA Offline
        arteck
        Developer Most Active
        schrieb am zuletzt editiert von
        #3

        schau dir den zigbee2mqtt adapter mal an.. da ist der mqtt server einfach implemmentiert..

        zigbee hab ich, zwave auch, nuc's genauso und HA auch

        1 Antwort Letzte Antwort
        0
        • AcguaA Acgua

          Hi,

          ich möchte einen MQTT-Server (Broker) in den Fully Browser Adapter integrieren und hab das Vorhaben hier gepostet.

          Hintergrund: Die Fully Browser App (Android) agiert – optional zuschaltbar – als MQTT-Client und publiziert Status und Events an einen MQTT-Server - siehe https://www.fully-kiosk.com/en/#mqtt - das ist alles. (Kommandos senden an den Fully (z.B. "Bildschirm aus") geht allerdings nur über die REST API lt. Doku, und nicht via MQTT.)
          Diese Infos und Events vom Fully möchte ich nun im Adapter abgreifen, brauche also dafür einen MQTT-Server (Broker).

          Macht es Sinn, hier einen Server direkt im Adapter zu implementieren, also etwa mittels mqtt-connection oder aedes?

          Etwa die Adapter mqtt, Shelly, und Sonoff haben eigene Server implementiert und nutzen dafür mqtt-connection.
          Mein Test mit mqtt-connection im Entwicklungs-Adapter funktioniert. Aber etwa client.on('publish' ...) wirft alle paar Millisekunden ein neues Paket aus. Also wohl viel zu oft. Mit aedes auch so bei (this.aedes.on('publish', (packet, client) => {).
          Jetzt müsste ich mich vermutlich deutlich mehr in MQTT einlesen und damit viel Zeit verbringen, dabei auch mit QOS, PUBREC usw. .... Darauf habe ich aber keine allzu große Lust, zumal das schon viele andere vor mir ausgiebig machten und implementierten :-)

          Mein Zwischenfazit:
          Too much effort for this simple use case... Ich will ja nur paar Daten abgreifen. Dazu kommt die Arbeit an Maintenance einer solchen MQTT-Implementierung, etc...

          Nur: es gibt kein aktives node.js-Modul auf Github bzw. npm, welches mir diese Arbeit abnehmen könnte, und z.B. auf aedes basiert. Hab wirklich alles durchsucht :grinning:

          Aber es gibt ja noch den ioBroker mqtt-Server-Adapter, der die komplette Arbeit abnimmt.
          Die Readme des Adapters meint: [...] saves always the values into the States-DB, so it can be processed by other adapters..

          Ok. Also besser diesen Adapter nutzen und dann von meinem Adapter aus nur die States/Objekte auslesen? Gibt halt auch Redundanz...

          Was ist hier denn der empfehlenswerte Weg?

          haus-automatisierungH Offline
          haus-automatisierungH Offline
          haus-automatisierung
          Developer Most Active
          schrieb am zuletzt editiert von haus-automatisierung
          #4

          @acgua sagte in Frage: MQTT Server (Broker) in Adapter benötigt:

          Etwa die Adapter mqtt, Shelly, und Sonoff haben eigene Server implementiert

          Der Grund dafür ist aber nicht, dass es so viel Spaß macht, sondern damit man wirklich sicherstellen kann, dass sich nur Geräte von Shelly oder auch nur Sonoff-Geräte mit dem (integrierten) MQTT-Broker verbinden. Einfach, um die ganzen Nachrichten von anderen Clients nicht filtern zu müssen. Da sind auch keine vollwertigen MQTT-Broker implementiert. Ein Subscribe usw. läuft einfach ins leere. Also eine Nachricht von Client A (publish) an Client B (subscribe) weiterzuleiten, ist dort gar nicht umgesetzt (weil nicht notwendig).

          Man könnte ja auch eine Adapter-Konfiguration anbieten, dass man den Adapter gegen einen bestehenden MQTT-Broker verbindet. Machen einige Adapter ja auch schon so.

          Langfristig wäre es ganz schön, wenn man für den MQTT-Server Adapter Plugins programmieren könnte (so wie beim web Adapter). Dann bekäme man einfach Nachrichten rein, welche man abonniert hat.

          🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
          🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
          📚 Meine inoffizielle ioBroker Dokumentation

          1 Antwort Letzte Antwort
          0
          • BananaJoeB BananaJoe

            @acgua ich könnte damit völlig Leben.
            Du müsstest in deinem Adapter dann ja nur den Pfad dafür Konfigurierbar machen.
            Ich habe mehrere FullyKiosk Browser am laufen und dementsprechend mehrere Instanzen.
            Überall habe ich schon zusätzlich MQTT konfiguriert.

            BananaJoeB Online
            BananaJoeB Online
            BananaJoe
            Most Active
            schrieb am zuletzt editiert von BananaJoe
            #5

            @haus-automatisierung
            Der Adapter reagiert dann ja auf Änderungen der Datenpunkte unterhalb eines bestimmten Pfades von mqtt.x, sollte also kein Problem mit der Subscription haben, die Werte sind ja eh schon da.

            Ich würde die Idee das der Adapter das bestehende MQTT nutzt gut finden. Wenn z.B. nach einem Firmwareupdate da neue Topics erscheinen kann man diese Nutzen auch wenn der Adapter damit noch nichts anfangen kann

            Letztendlich ist es auch alles eine Frage der Leistungsfähigkeit. Der Sonoff-Adapter kackt bei meinen über 100 Tasmotageräten ab, deshalb nutze ich den in dieser Hinsicht leistungsfähigeren Mosquitto-Broker - und dann eigene Skripte.

            ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

            1 Antwort Letzte Antwort
            0
            • AcguaA Offline
              AcguaA Offline
              Acgua
              schrieb am zuletzt editiert von Acgua
              #6

              @arteck - Danke, das hatte ich auch gesehen (main/lib/mqttServerController.js), ist mit aedes umgesetzt, aber halt nur mit listen und dann Info-Ausgabe in ein paar Zeilen und leider für meinen Use Case so nicht hilfreich...

              @haus-automatisierung
              Danke, kann ich sehr gut nachvollziehen, warum man eigene Server in den Adaptern implementiert hat.

              Langfristig wäre es ganz schön, wenn man für den MQTT-Server Adapter Plugins programmieren könnte (so wie beim web Adapter). Dann bekäme man einfach Nachrichten rein, welche man abonniert hat.

              +1 :+1:

              @BananaJoe
              Danke für die "Unterstützung", den mqtt-Adapter zu nehmen :-)


              Mittlerweile hab ich übrigens herausgefunden, dass der Fully Browser nach einem Neustart nur jede Minute ein neues Info-Paket sendet, nicht alle paar Millisekunden. Nur nach mehreren "intensiven" Tests in der Entwicklungsumgebung kommen diese dann wieder alle paar ms rein. Wohl aber nur aufgrund meiner Tests. Ich schau mir das noch näher an.
              Aber so wie es aussieht, kann ich wohl doch aedes verwenden in einer sauberen Umgebung und Infos kommen nur jede Minute, Events sofort, wie es sein soll. Jeweils als QOS 1 und Info als retain, event als nicht retain.

              Code-Auszug

              /**
               * fired when a client publishes a message packet on the topic
               */
              this.aedes.on('publish', (packet, client) => {
              	if (!client || !packet) return;
              
              	if (packet.qos === 1 && packet.retain) {
              		/**
              		 * Device Info coming in...
              		 * Per fully documentation: The complete device info will be published every 60 seconds as fully/deviceInfo/[deviceId] topic (retaining, QOS=1).
              		 */
              		const info = JSON.parse(packet.payload.toString());
              		this.adapter.log.debug(`[MQTT] Client ${info.ip4} Publish Info: topic: ${packet.topic}, qos: ${packet.qos}`);
              	} else if (packet.qos === 1 && !packet.retain) {
              		/**
              		 * Event coming in...
              		 * Per fully documentation: Events will be published as fully/event/[eventId]/[deviceId] topic (non-retaining, QOS=1).
              		 */
              		const event = JSON.parse(packet.payload.toString());
              		this.adapter.log.debug(`[MQTT] Client Publish Event: topic: ${packet.topic}, qos: ${packet.qos}, payload: ${packet.payload.toString()}`);
              	} else {
              		// Ignore
              		return;
              	}
              });
              
              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

              724

              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