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. ioBroker Allgemein
  4. Sammel-MQTT-Publish für mehrere Datenpunkte?

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    14
    1
    275

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    1.8k

Sammel-MQTT-Publish für mehrere Datenpunkte?

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
14 Beiträge 3 Kommentatoren 1.1k Aufrufe 3 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.
  • K Offline
    K Offline
    Kater
    schrieb am zuletzt editiert von
    #1

    Hallo,

    ich bräuchte eine Funktion, die bei Änderung eines einzelnen Datenpunkts diesen zusammen mit seinen „Geschwistern“, also den Datenpunkten, die daneben am selben Elternknoten hängen, per MQTT-Publish absetzt. Ich hätte gedacht, dass es dazu am Elternknoten einen entsprechenden Zahnrad-Button gibt, in dem man das konfigurieren kann. Die untergeordneten Knoten/Blätter könnten dann gemeinsam als JSON-Struktur abgesetzt werden, auch über mehrere Ebenen. Vorteil wäre z.B. bei nachgeschaltetem Telegraf/InfluxDB-Setup, dass die Daten mit identischem Zeitstempel in der Datenbank landen und der Zusammenhang damit erhalten bleibt. Das nachträglich zu rekonstruieren ist ziemlich umständlich, ebenso vor dem Datenbankeintrag durch einen individuellen Node-RED-Flow (MQTT in, Skripterei, MQTT out) – das ist mein aktueller Ansatz.

    Ist so ein Feature beim MQTT-Adapter geplant? Oder gibt es einen brauchbaren Workaround?

    Danke.

    BananaJoeB 1 Antwort Letzte Antwort
    0
    • K Kater

      Hallo,

      ich bräuchte eine Funktion, die bei Änderung eines einzelnen Datenpunkts diesen zusammen mit seinen „Geschwistern“, also den Datenpunkten, die daneben am selben Elternknoten hängen, per MQTT-Publish absetzt. Ich hätte gedacht, dass es dazu am Elternknoten einen entsprechenden Zahnrad-Button gibt, in dem man das konfigurieren kann. Die untergeordneten Knoten/Blätter könnten dann gemeinsam als JSON-Struktur abgesetzt werden, auch über mehrere Ebenen. Vorteil wäre z.B. bei nachgeschaltetem Telegraf/InfluxDB-Setup, dass die Daten mit identischem Zeitstempel in der Datenbank landen und der Zusammenhang damit erhalten bleibt. Das nachträglich zu rekonstruieren ist ziemlich umständlich, ebenso vor dem Datenbankeintrag durch einen individuellen Node-RED-Flow (MQTT in, Skripterei, MQTT out) – das ist mein aktueller Ansatz.

      Ist so ein Feature beim MQTT-Adapter geplant? Oder gibt es einen brauchbaren Workaround?

      Danke.

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

      @kater klingt doch cool - schreib ein passendes Skript was das alles macht ... das wäre dein Workaround

      kannst natürlich auch auf GitHub das als Issue als Featurerequest absetzen. Ich kann mir beim besten willen nicht vorstellen das es als Feature geplant ist.

      Daten werden aktualisiert (und ggf. aufgezeichnet) wenn sich der Datenpunkt ändert. Das muss im Normalfall auch so sein.
      Die Zeitstempel kannst du am besten erreichen indem du die Daten einfach nimmst und direkt in die Datenbank schreibst - dann kannst du nämlich den Zeitstempel mitgeben so das alle einfach den gleichen nutzen.

      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

      K 1 Antwort Letzte Antwort
      0
      • mickymM Online
        mickymM Online
        mickym
        Most Active
        schrieb am zuletzt editiert von
        #3

        Mit NodeRed ist es easy. Alles in einem Kontextobjekt sammeln und mit meinem Flow das Objekt schreiben.

        https://forum.iobroker.net/topic/43856/json-oder-javascript-objekt-in-iobroker-datenpunkte-zerlegen

        Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

        K 1 Antwort Letzte Antwort
        0
        • mickymM mickym

          Mit NodeRed ist es easy. Alles in einem Kontextobjekt sammeln und mit meinem Flow das Objekt schreiben.

          https://forum.iobroker.net/topic/43856/json-oder-javascript-objekt-in-iobroker-datenpunkte-zerlegen

          K Offline
          K Offline
          Kater
          schrieb am zuletzt editiert von
          #4

          @mickym Was du mit deinem Flow machst, ist genau die andere Richtung, nämlich von draußen kommend in ein ioBroker-Objekt.
          Ich will dagegen ein zusammengesetztes ioBroker-Objekte nach einem Update durch z.B. eine Gerätekopplung quasi en bloc (d.h. 1:1 als JSON-Struktur) auf MQTT absetzen, um es dann ebenso zusammenhängend in meine InfluxDB zu schreiben.

          mickymM 1 Antwort Letzte Antwort
          0
          • K Kater

            @mickym Was du mit deinem Flow machst, ist genau die andere Richtung, nämlich von draußen kommend in ein ioBroker-Objekt.
            Ich will dagegen ein zusammengesetztes ioBroker-Objekte nach einem Update durch z.B. eine Gerätekopplung quasi en bloc (d.h. 1:1 als JSON-Struktur) auf MQTT absetzen, um es dann ebenso zusammenhängend in meine InfluxDB zu schreiben.

            mickymM Online
            mickymM Online
            mickym
            Most Active
            schrieb am zuletzt editiert von
            #5

            @kater Na dafür sammelst Du alles in einer JOIN Node und schreibst das Objekt mit einer JSON Node wieder in den Datenpunkt. Oder Du sammelst alles im Flow Kontext und speicherst es dann weg, wann Du willst.

            Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

            K 1 Antwort Letzte Antwort
            0
            • BananaJoeB BananaJoe

              @kater klingt doch cool - schreib ein passendes Skript was das alles macht ... das wäre dein Workaround

              kannst natürlich auch auf GitHub das als Issue als Featurerequest absetzen. Ich kann mir beim besten willen nicht vorstellen das es als Feature geplant ist.

              Daten werden aktualisiert (und ggf. aufgezeichnet) wenn sich der Datenpunkt ändert. Das muss im Normalfall auch so sein.
              Die Zeitstempel kannst du am besten erreichen indem du die Daten einfach nimmst und direkt in die Datenbank schreibst - dann kannst du nämlich den Zeitstempel mitgeben so das alle einfach den gleichen nutzen.

              K Offline
              K Offline
              Kater
              schrieb am zuletzt editiert von
              #6

              @bananajoe Das (Node-RED-)Skript, das das macht, habe ich ja schon. Mich stört nur, dass es zum einen strukturspezifisch angepasst sein muss, und zum anderen, dass es sich auf eine Heuristik verlassen muss, d.h. ich muss die Zeitstempel so „π * Daumen“ ansetzen, dass zusammengehörende Änderungen auch korrekt zusammengefasst werden. Und ich empfinde es als nicht sooo sinnvoll, zusammengehörige Daten erst zu zerlegen und dann wieder „ungefähr“ zusammenzufassen 😉.

              1 Antwort Letzte Antwort
              0
              • mickymM mickym

                @kater Na dafür sammelst Du alles in einer JOIN Node und schreibst das Objekt mit einer JSON Node wieder in den Datenpunkt. Oder Du sammelst alles im Flow Kontext und speicherst es dann weg, wann Du willst.

                K Offline
                K Offline
                Kater
                schrieb am zuletzt editiert von
                #7

                @mickym Meinst du mit "JOIN Node" den Node aus node-red-contrib-join? Muss ich mir mal angucken. Könnte aber problematisch werden, weil ich nicht weiß, in welcher Reihenfolge die zerlegten Einzelmeldungen eintrudeln. Bestenfalls habe ich wieder eine Heuristik, weil ich mir das ein paar Mal angucke und dann feststelle, dass typischerweise eine bestimmte Komponente als letzte generiert wird – wenn das so ist.

                mickymM 1 Antwort Letzte Antwort
                0
                • K Kater

                  @mickym Meinst du mit "JOIN Node" den Node aus node-red-contrib-join? Muss ich mir mal angucken. Könnte aber problematisch werden, weil ich nicht weiß, in welcher Reihenfolge die zerlegten Einzelmeldungen eintrudeln. Bestenfalls habe ich wieder eine Heuristik, weil ich mir das ein paar Mal angucke und dann feststelle, dass typischerweise eine bestimmte Komponente als letzte generiert wird – wenn das so ist.

                  mickymM Online
                  mickymM Online
                  mickym
                  Most Active
                  schrieb am zuletzt editiert von mickym
                  #8

                  @kater Die JOIN Node erstellt Dir ein Objekt, wo Du bestimmen kannst wann ein Objekt fertig ist. Wenn Du die Anzahl auf 1 setzt dann baut sich das Objekt auf. Ansonsten wird mit jeder Nachricht nur die entspechende Eigenschaft aktualisiert und kann weggeschrieben werden:

                  a4cccad7-4748-4389-8a55-a527b08479ce-image.png

                  Wann was eintrudelt ist egal - weil nach jedem Update auch das ganze Objekt geschickt wird.

                  Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                  K 1 Antwort Letzte Antwort
                  0
                  • mickymM mickym

                    @kater Die JOIN Node erstellt Dir ein Objekt, wo Du bestimmen kannst wann ein Objekt fertig ist. Wenn Du die Anzahl auf 1 setzt dann baut sich das Objekt auf. Ansonsten wird mit jeder Nachricht nur die entspechende Eigenschaft aktualisiert und kann weggeschrieben werden:

                    a4cccad7-4748-4389-8a55-a527b08479ce-image.png

                    Wann was eintrudelt ist egal - weil nach jedem Update auch das ganze Objekt geschickt wird.

                    K Offline
                    K Offline
                    Kater
                    schrieb am zuletzt editiert von
                    #9

                    @mickym said in Sammel-MQTT-Publish für mehrere Datenpunkte?:

                    Wann was eintrudelt ist egal - weil nach jedem Update auch das ganze Objekt geschickt wird.

                    Das wäre eher kontraproduktiv. Wenn z.B. drei Einzelwerte zusammengehören und im Minutenrhythmus aktualisiert werden, dann wird knapp 60 Sekunden nach dem letzten Update der erste neue Wert in den Node gesendet. Der kombiniert ihn dann mit den anderen beiden alten Werten und schickt alles raus. Beim zweiten Wert passiert das entsprechend nochmal, erst beim dritten werden sie alle korrekt zusammengefasst.

                    Aber dein Screenshot zeigt, dass man das auch zeitgesteuert konfigurieren kann. Wenn man „bei Zeitablauf nach erster Nachricht von“ z.B. auf 5 Sekunden setzt, ist man wohl einigermaßen auf der sicheren Seite. Vielleicht probiere ich das dann beim nächsten Mal, bis auf weiteres lasse ich meinen Flow mit Speicherung im Kontext laufen. Der macht ja im Prinzip dasselbe ;-)

                    mickymM 1 Antwort Letzte Antwort
                    0
                    • K Kater

                      @mickym said in Sammel-MQTT-Publish für mehrere Datenpunkte?:

                      Wann was eintrudelt ist egal - weil nach jedem Update auch das ganze Objekt geschickt wird.

                      Das wäre eher kontraproduktiv. Wenn z.B. drei Einzelwerte zusammengehören und im Minutenrhythmus aktualisiert werden, dann wird knapp 60 Sekunden nach dem letzten Update der erste neue Wert in den Node gesendet. Der kombiniert ihn dann mit den anderen beiden alten Werten und schickt alles raus. Beim zweiten Wert passiert das entsprechend nochmal, erst beim dritten werden sie alle korrekt zusammengefasst.

                      Aber dein Screenshot zeigt, dass man das auch zeitgesteuert konfigurieren kann. Wenn man „bei Zeitablauf nach erster Nachricht von“ z.B. auf 5 Sekunden setzt, ist man wohl einigermaßen auf der sicheren Seite. Vielleicht probiere ich das dann beim nächsten Mal, bis auf weiteres lasse ich meinen Flow mit Speicherung im Kontext laufen. Der macht ja im Prinzip dasselbe ;-)

                      mickymM Online
                      mickymM Online
                      mickym
                      Most Active
                      schrieb am zuletzt editiert von
                      #10

                      @kater Nun Du kannst aber mit der Anzahl der Nachrichten und ohne den Haken dass bei jeder nachfolgenden Nachricht geschickt wird - quasi warten bis alle Eigenschaften aktualisiert wurden und selbst wenn eine zweimal reinkommt, wird immer nur das komplette Objekt gesendet. Macht die Node alles automatisch

                      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                      K 1 Antwort Letzte Antwort
                      0
                      • mickymM mickym

                        @kater Nun Du kannst aber mit der Anzahl der Nachrichten und ohne den Haken dass bei jeder nachfolgenden Nachricht geschickt wird - quasi warten bis alle Eigenschaften aktualisiert wurden und selbst wenn eine zweimal reinkommt, wird immer nur das komplette Objekt gesendet. Macht die Node alles automatisch

                        K Offline
                        K Offline
                        Kater
                        schrieb am zuletzt editiert von
                        #11

                        @mickym Ja, klar. Trotzdem muss ja irgendwie der Zusammenhang definiert sein bzw. festgestellt werden. Entweder durch die zeitliche Lücke zwischen zwei „Nachrichtenschauern“ (→ Timeout-Parameter) oder durch eine feste Reihenfolge, bei der bekannt ist, welche Komponente als letztes kommt.

                        Im übrigen muss ich nach dem Join-Node dann ohnehin nochmal mit JS drübergehen und die erzeugte Struktur mit dem joinedMsgs-Array etc. umbauen in die Ziel-Struktur, die an die Datenbank weitergeleitet wird. Da wäre dann vielleicht der Vorteil gegenüber meinem alten Workaround auch nicht mehr so groß.

                        mickymM 1 Antwort Letzte Antwort
                        0
                        • K Kater

                          @mickym Ja, klar. Trotzdem muss ja irgendwie der Zusammenhang definiert sein bzw. festgestellt werden. Entweder durch die zeitliche Lücke zwischen zwei „Nachrichtenschauern“ (→ Timeout-Parameter) oder durch eine feste Reihenfolge, bei der bekannt ist, welche Komponente als letztes kommt.

                          Im übrigen muss ich nach dem Join-Node dann ohnehin nochmal mit JS drübergehen und die erzeugte Struktur mit dem joinedMsgs-Array etc. umbauen in die Ziel-Struktur, die an die Datenbank weitergeleitet wird. Da wäre dann vielleicht der Vorteil gegenüber meinem alten Workaround auch nicht mehr so groß.

                          mickymM Online
                          mickymM Online
                          mickym
                          Most Active
                          schrieb am zuletzt editiert von mickym
                          #12

                          @kater sagte in Sammel-MQTT-Publish für mehrere Datenpunkte?:

                          oder durch eine feste Reihenfolge, bei der bekannt ist, welche Komponente als letztes kommt.

                          Nein eben nicht. Die Reihenfolge ist egal - wenn Du die Anzahl der Nachrichten auf die Anzahl der Eigenschaften im Objekt setzt, wird es erst geschickt, wenn es vollständig ist, egal wie die Nachrichten eintrudeln. Der Zusammenhang wird anhand der topics ermittelt, die ja dann Eigenschaften im Objekt sind (falls Du msg. topic) verwendest.

                          Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                          K 1 Antwort Letzte Antwort
                          0
                          • mickymM mickym

                            @kater sagte in Sammel-MQTT-Publish für mehrere Datenpunkte?:

                            oder durch eine feste Reihenfolge, bei der bekannt ist, welche Komponente als letztes kommt.

                            Nein eben nicht. Die Reihenfolge ist egal - wenn Du die Anzahl der Nachrichten auf die Anzahl der Eigenschaften im Objekt setzt, wird es erst geschickt, wenn es vollständig ist, egal wie die Nachrichten eintrudeln. Der Zusammenhang wird anhand der topics ermittelt, die ja dann Eigenschaften im Objekt sind (falls Du msg. topic) verwendest.

                            K Offline
                            K Offline
                            Kater
                            schrieb am zuletzt editiert von Kater
                            #13

                            @mickym Das setzt voraus, dass Join-Node und Nachrichten synchronisiert sind. Das ist höchstwahrscheinlich der Fall, aber sobald z.B. eine Nachricht verlorengeht oder eine Seite während eines Bulks neu gestartet wird, verschiebt sich alles.

                            mickymM 1 Antwort Letzte Antwort
                            0
                            • K Kater

                              @mickym Das setzt voraus, dass Join-Node und Nachrichten synchronisiert sind. Das ist höchstwahrscheinlich der Fall, aber sobald z.B. eine Nachricht verlorengeht oder eine Seite während eines Bulks neu gestartet wird, verschiebt sich alles.

                              mickymM Online
                              mickymM Online
                              mickym
                              Most Active
                              schrieb am zuletzt editiert von
                              #14

                              @kater Ja klar - dann bist natürlich mit dem Zeitintervall besser dran, wenn Du nicht garantieren kannst, dass alle Nachrichten zusammengehörig kommen.

                              Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                              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
                              FAQ Cloud / IOT
                              HowTo: Node.js-Update
                              HowTo: Backup/Restore
                              Downloads
                              BLOG

                              730

                              Online

                              32.5k

                              Benutzer

                              81.9k

                              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