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. Datenpunkte in MQTT Json Bündeln

NEWS

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

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    12
    1
    571

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.8k

Datenpunkte in MQTT Json Bündeln

Geplant Angeheftet Gesperrt Verschoben JavaScript
16 Beiträge 4 Kommentatoren 1.2k 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.
  • mickymM Offline
    mickymM Offline
    mickym
    Most Active
    schrieb am zuletzt editiert von
    #5

    Mit NodeRed wäre das kein Problem.

    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.

    MartinPM 1 Antwort Letzte Antwort
    0
    • mickymM mickym

      Mit NodeRed wäre das kein Problem.

      MartinPM Online
      MartinPM Online
      MartinP
      schrieb am zuletzt editiert von
      #6

      @mickym said in Datenpunkte in MQTT Json Bündeln:

      Mit NodeRed wäre das kein Problem.

      Ich habe einen Computer, damit ist das auch kein Problem

      Intel(R) Celeron(R) CPU N3000 @ 1.04GHz 8G RAM 480G SSD
      Virtualization : unprivileged lxc container (debian 12 on Proxmox 8.4.14)
      Linux pve 6.8.12-16-pve
      6 GByte RAM für den Container
      Fritzbox 6591 FW 8.03 (Vodafone Leih-Box)
      Remote-Access über Wireguard der Fritzbox

      1 Antwort Letzte Antwort
      0
      • MartinPM MartinP

        Soll der ioBroker als MQTT Client fungieren, der das Json-Konstrukt als Topic published, oder soll er als MQTT-Broker das Json-Konstrukt an einen MQTT-Client verschicken?

        SunshinemakerS Offline
        SunshinemakerS Offline
        Sunshinemaker
        schrieb am zuletzt editiert von
        #7

        @martinp sagte in Datenpunkte in MQTT Json Bündeln:

        Soll der ioBroker als MQTT Client fungieren, der das Json-Konstrukt als Topic published, oder soll er als MQTT-Broker das Json-Konstrukt an einen MQTT-Client verschicken?

        ioBroker soll das Json-Kunstrukt erstellen und auch publishen. Der MQTT-Broker läuft an anderer stelle.

        @martinp sagte in Datenpunkte in MQTT Json Bündeln:

        @mickym said in Datenpunkte in MQTT Json Bündeln:

        Mit NodeRed wäre das kein Problem.

        Ich habe einen Computer, damit ist das auch kein Problem

        Node-Red im iobroker zu installieren wäre nicht das Problem, aber von Node-Red hab ich genauso wenig Ahnung.

        1 Antwort Letzte Antwort
        0
        • MartinPM Online
          MartinPM Online
          MartinP
          schrieb am zuletzt editiert von
          #8

          @sunshinemaker Node Red benutze ich nicht - hier eine Idee in Blockly - aber ungetestet

          1760b343-9f9d-40e9-b9f9-ffd219ee4b39-grafik.png

          Intel(R) Celeron(R) CPU N3000 @ 1.04GHz 8G RAM 480G SSD
          Virtualization : unprivileged lxc container (debian 12 on Proxmox 8.4.14)
          Linux pve 6.8.12-16-pve
          6 GByte RAM für den Container
          Fritzbox 6591 FW 8.03 (Vodafone Leih-Box)
          Remote-Access über Wireguard der Fritzbox

          1 Antwort Letzte Antwort
          0
          • mickymM Offline
            mickymM Offline
            mickym
            Most Active
            schrieb am zuletzt editiert von
            #9

            Ich hab ehrlich keine Lust mehr zu zeigen, dass ein Computer mit NodeRed mehr kann, als mit Puzzleteilchen und wenn jemand NodeRed nicht lernen will und lieber puzzeln will - dann soll er das halt machen.

            Wenn ich mir anschaue - dass man den halben Bildschirm braucht um ein Objekt mit 3 Eigenschaften braucht, dann viel Spaß.

            Hier mal ein Beispiel wie einfach Du ganze Äste mit NodeRed auslesen kannst - aber auch natürlich viel spezifischer machen kannst. Du hast ausserdem eine direkte Anbindung an deinen mqtt Broker und brauchst dafür keinen iobroker.

            In diesem Ast finden sich 1054 Datenpunkte.

            d9c8746d-30c3-44d8-a1a2-10bdacfddd0a-image.png

            Diese 1054 kann man mit einer list Node in ein Array auslesen

            9245824c-b966-4163-8dca-b8d04ab679c8-image.png

            und ein neues Objekt erstellen mit einer Change Node und JSONATA.

            Das ganze wird dann via mqtt in ein Objekt geschrieben:

            8a02799d-bbf2-4a96-82e0-bd583049b5b1-image.png

            8649083c-46ab-493e-9ad5-08395b847997-image.png
            ff9b6925-4d39-4fac-a3f0-35040412bc53-image.png
            Hier zum Import

            [
               {
                   "id": "bd71cef564083799",
                   "type": "inject",
                   "z": "7e6af0015415146d",
                   "name": "0_userdata.0.accuWeather.*",
                   "props": [
                       {
                           "p": "topic",
                           "vt": "str"
                       }
                   ],
                   "repeat": "",
                   "crontab": "",
                   "once": false,
                   "onceDelay": 0.1,
                   "topic": "0_userdata.0.accuWeather.*",
                   "x": 2040,
                   "y": 140,
                   "wires": [
                       [
                           "066005975670db3c"
                       ]
                   ]
               },
               {
                   "id": "066005975670db3c",
                   "type": "ioBroker list",
                   "z": "7e6af0015415146d",
                   "name": "",
                   "topic": "",
                   "objType": "state",
                   "regex": "",
                   "asArray": "true",
                   "onlyIDs": "false",
                   "withValues": "true",
                   "x": 2250,
                   "y": 140,
                   "wires": [
                       [
                           "9d85ab16951fdf4f",
                           "e904e4d433b4ada0"
                       ]
                   ]
               },
               {
                   "id": "9d85ab16951fdf4f",
                   "type": "change",
                   "z": "7e6af0015415146d",
                   "name": "",
                   "rules": [
                       {
                           "t": "set",
                           "p": "payload",
                           "pt": "msg",
                           "to": "payload.{_id:val}~>$merge()",
                           "tot": "jsonata"
                       }
                   ],
                   "action": "",
                   "property": "",
                   "from": "",
                   "to": "",
                   "reg": false,
                   "x": 2470,
                   "y": 140,
                   "wires": [
                       [
                           "0003e55bdca22fc3"
                       ]
                   ]
               },
               {
                   "id": "0003e55bdca22fc3",
                   "type": "mqtt out",
                   "z": "7e6af0015415146d",
                   "name": "",
                   "topic": "test/hallo",
                   "qos": "",
                   "retain": "",
                   "respTopic": "",
                   "contentType": "",
                   "userProps": "",
                   "correl": "",
                   "expiry": "",
                   "broker": "be6c1eaab0dff4fe",
                   "x": 2680,
                   "y": 140,
                   "wires": []
               },
               {
                   "id": "e904e4d433b4ada0",
                   "type": "debug",
                   "z": "7e6af0015415146d",
                   "name": "alle Datenpunkte",
                   "active": true,
                   "tosidebar": true,
                   "console": false,
                   "tostatus": false,
                   "complete": "payload",
                   "targetType": "msg",
                   "statusVal": "",
                   "statusType": "auto",
                   "x": 2470,
                   "y": 80,
                   "wires": []
               },
               {
                   "id": "be6c1eaab0dff4fe",
                   "type": "mqtt-broker",
                   "name": "",
                   "broker": "192.168.178.104",
                   "port": "1883",
                   "clientid": "mqttClientNodeRedTest",
                   "autoConnect": true,
                   "usetls": false,
                   "protocolVersion": "4",
                   "keepalive": "60",
                   "cleansession": true,
                   "birthTopic": "",
                   "birthQos": "0",
                   "birthPayload": "",
                   "birthMsg": {},
                   "closeTopic": "",
                   "closeQos": "0",
                   "closePayload": "",
                   "closeMsg": {},
                   "willTopic": "",
                   "willQos": "0",
                   "willPayload": "",
                   "willMsg": {},
                   "userProps": "",
                   "sessionExpiry": ""
               }
            ]
            

            Und wenn Du von beidem keine Ahnung hast, dann solltest Dir halt überlegen - wo es sich eher lohnt Deinen Computer mit zu beschäftigen ohne dass Du damit Probleme bekommst.

            Du kannst natürlich auch Javascript lernen,.

            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.

            MartinPM 1 Antwort Letzte Antwort
            0
            • mickymM mickym

              Ich hab ehrlich keine Lust mehr zu zeigen, dass ein Computer mit NodeRed mehr kann, als mit Puzzleteilchen und wenn jemand NodeRed nicht lernen will und lieber puzzeln will - dann soll er das halt machen.

              Wenn ich mir anschaue - dass man den halben Bildschirm braucht um ein Objekt mit 3 Eigenschaften braucht, dann viel Spaß.

              Hier mal ein Beispiel wie einfach Du ganze Äste mit NodeRed auslesen kannst - aber auch natürlich viel spezifischer machen kannst. Du hast ausserdem eine direkte Anbindung an deinen mqtt Broker und brauchst dafür keinen iobroker.

              In diesem Ast finden sich 1054 Datenpunkte.

              d9c8746d-30c3-44d8-a1a2-10bdacfddd0a-image.png

              Diese 1054 kann man mit einer list Node in ein Array auslesen

              9245824c-b966-4163-8dca-b8d04ab679c8-image.png

              und ein neues Objekt erstellen mit einer Change Node und JSONATA.

              Das ganze wird dann via mqtt in ein Objekt geschrieben:

              8a02799d-bbf2-4a96-82e0-bd583049b5b1-image.png

              8649083c-46ab-493e-9ad5-08395b847997-image.png
              ff9b6925-4d39-4fac-a3f0-35040412bc53-image.png
              Hier zum Import

              [
                 {
                     "id": "bd71cef564083799",
                     "type": "inject",
                     "z": "7e6af0015415146d",
                     "name": "0_userdata.0.accuWeather.*",
                     "props": [
                         {
                             "p": "topic",
                             "vt": "str"
                         }
                     ],
                     "repeat": "",
                     "crontab": "",
                     "once": false,
                     "onceDelay": 0.1,
                     "topic": "0_userdata.0.accuWeather.*",
                     "x": 2040,
                     "y": 140,
                     "wires": [
                         [
                             "066005975670db3c"
                         ]
                     ]
                 },
                 {
                     "id": "066005975670db3c",
                     "type": "ioBroker list",
                     "z": "7e6af0015415146d",
                     "name": "",
                     "topic": "",
                     "objType": "state",
                     "regex": "",
                     "asArray": "true",
                     "onlyIDs": "false",
                     "withValues": "true",
                     "x": 2250,
                     "y": 140,
                     "wires": [
                         [
                             "9d85ab16951fdf4f",
                             "e904e4d433b4ada0"
                         ]
                     ]
                 },
                 {
                     "id": "9d85ab16951fdf4f",
                     "type": "change",
                     "z": "7e6af0015415146d",
                     "name": "",
                     "rules": [
                         {
                             "t": "set",
                             "p": "payload",
                             "pt": "msg",
                             "to": "payload.{_id:val}~>$merge()",
                             "tot": "jsonata"
                         }
                     ],
                     "action": "",
                     "property": "",
                     "from": "",
                     "to": "",
                     "reg": false,
                     "x": 2470,
                     "y": 140,
                     "wires": [
                         [
                             "0003e55bdca22fc3"
                         ]
                     ]
                 },
                 {
                     "id": "0003e55bdca22fc3",
                     "type": "mqtt out",
                     "z": "7e6af0015415146d",
                     "name": "",
                     "topic": "test/hallo",
                     "qos": "",
                     "retain": "",
                     "respTopic": "",
                     "contentType": "",
                     "userProps": "",
                     "correl": "",
                     "expiry": "",
                     "broker": "be6c1eaab0dff4fe",
                     "x": 2680,
                     "y": 140,
                     "wires": []
                 },
                 {
                     "id": "e904e4d433b4ada0",
                     "type": "debug",
                     "z": "7e6af0015415146d",
                     "name": "alle Datenpunkte",
                     "active": true,
                     "tosidebar": true,
                     "console": false,
                     "tostatus": false,
                     "complete": "payload",
                     "targetType": "msg",
                     "statusVal": "",
                     "statusType": "auto",
                     "x": 2470,
                     "y": 80,
                     "wires": []
                 },
                 {
                     "id": "be6c1eaab0dff4fe",
                     "type": "mqtt-broker",
                     "name": "",
                     "broker": "192.168.178.104",
                     "port": "1883",
                     "clientid": "mqttClientNodeRedTest",
                     "autoConnect": true,
                     "usetls": false,
                     "protocolVersion": "4",
                     "keepalive": "60",
                     "cleansession": true,
                     "birthTopic": "",
                     "birthQos": "0",
                     "birthPayload": "",
                     "birthMsg": {},
                     "closeTopic": "",
                     "closeQos": "0",
                     "closePayload": "",
                     "closeMsg": {},
                     "willTopic": "",
                     "willQos": "0",
                     "willPayload": "",
                     "willMsg": {},
                     "userProps": "",
                     "sessionExpiry": ""
                 }
              ]
              

              Und wenn Du von beidem keine Ahnung hast, dann solltest Dir halt überlegen - wo es sich eher lohnt Deinen Computer mit zu beschäftigen ohne dass Du damit Probleme bekommst.

              Du kannst natürlich auch Javascript lernen,.

              MartinPM Online
              MartinPM Online
              MartinP
              schrieb am zuletzt editiert von
              #10

              @mickym er hat "Mehrere" geschrieben, nicht "Alle"

              Ein "*" ist da wenig hilfreich...

              Intel(R) Celeron(R) CPU N3000 @ 1.04GHz 8G RAM 480G SSD
              Virtualization : unprivileged lxc container (debian 12 on Proxmox 8.4.14)
              Linux pve 6.8.12-16-pve
              6 GByte RAM für den Container
              Fritzbox 6591 FW 8.03 (Vodafone Leih-Box)
              Remote-Access über Wireguard der Fritzbox

              mickymM 1 Antwort Letzte Antwort
              0
              • MartinPM MartinP

                @mickym er hat "Mehrere" geschrieben, nicht "Alle"

                Ein "*" ist da wenig hilfreich...

                mickymM Offline
                mickymM Offline
                mickym
                Most Active
                schrieb am zuletzt editiert von mickym
                #11

                @martinp Kann man alles machen - nur was Dein Blockly macht, ist nicht ein Objekt mit Einzelwerten sondern ein Array mit Strings

                ["prop1:val1","prop2:val2","prop3:val3"]
                

                ich denke aber er will ein Objekt haben mit 3 Props:

                Also:

                {"prop1":"val1","prop2":"val2","prop3":"val3"}
                

                oder zeig mal deine Ausgabe?

                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
                • mickymM Offline
                  mickymM Offline
                  mickym
                  Most Active
                  schrieb am zuletzt editiert von
                  #12

                  Selbst wenn ich also eine eigene Struktur mit Einzelwerten machen will und Puzzeln wollte, würde ich mit JSONATA und einem Array arbeiten.

                  Nehmen wir also mal an wir wollen die 3 Datenpunkte in ein Objekt verfrachten:

                  3adfd251-5c95-4ddb-b278-22f25afc1a0f-image.png

                  b3bcf57e-8682-49ca-852d-264c11383953-image.png

                  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
                  • mickymM Offline
                    mickymM Offline
                    mickym
                    Most Active
                    schrieb am zuletzt editiert von
                    #13

                    Wenn man die Objekthierarchie erhalten möchte dann bin ich des JS nicht ganz mächtig und hab eine Kontext innerhalb einer function Node genutzt.

                    ca710503-543b-4ee2-a08f-56e0771b9690-image.png

                    ![435109a5-2060-4771-b0af-ea40c6a232ec-image.png](/assets/uploads/files/1706484981316-435109a5-2060-4771-b0af-ea40c6a232ec-image-resized.png) code_text
                    

                    7d9a032c-a2b8-4f7f-8e2b-dae1641b0dfb-image.png

                    Über einen JSON Editor kannst Du dieses Objekt formatieren kommt aber das gleiche raus.

                    Wenn man mit dem Stern nicht alle Daten haben will sondern nur bestimmte Werte, so kann man diese in dem Ast auch noch mit regulären Ausdrücken filtern:

                    de21a607-56f7-4dc3-adf0-9ea820a1a1ba-image.png

                    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
                    • mickymM Offline
                      mickymM Offline
                      mickym
                      Most Active
                      schrieb am zuletzt editiert von mickym
                      #14

                      Um einfach nur 3 beliebige Werte mit NodeRed rauszuholen und als Objekt abzuspeichern - speichert man das in verschiedene Objekteigenschaften. Um das untere Beispiel mit den 3 Werten auszulesen, die ich vorher mit dem Blockly ausgelesen haben kann man 3 get Nodes verwenden und diese 3 Nachrichteneigenschaften zuweisen:

                      Wichtig ist dabei jeden Wert einer unterschiedlichen Nachrichteneigenschaft zuzuweisen:

                      dbe647f1-f0c7-42f0-93a5-d64c9dbef433-image.png

                      Schaut man sich das Nachrichtenobjekt an - sieht man, dass alle Werte in den unterschiedlichen Nachrichteneigenschaften zugewiesen sind.

                      8aeb2523-2c6e-462a-b1e9-8cec50fb81b9-image.png

                      Diese Werte kann man nun beliebig zu benennenden Eigenschaften super einfach via JSONATA zuweisen

                      cf5dc22b-1e7f-4ad0-9126-ce42af4f023f-image.png

                      und erhält so easy ein Objekt mit den gewünschten Eigenschaften und Werten:
                      8a59c687-3729-455e-bf00-17858c7a1c0b-image.png

                      und dann einfach an den mqtt Broker senden - und das Ergebnis ist dann ein JSON Objekt.

                      873f7c15-8a52-4e40-a60c-df6df8cca95f-image.png

                      So damit bin ich am Ende,

                      Weiterhin fröhliches Puzzeln mit problemlosen Computern. ;)

                      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
                      • mickymM Offline
                        mickymM Offline
                        mickym
                        Most Active
                        schrieb am zuletzt editiert von
                        #15

                        @Sunshinemaker

                        Wenn du mehrere Datenpunkte einzeln via mqtt und nicht "gebündelt" versenden willst, dann brauchst nur den mqtt-Client installieren und dann mit dem Zahnrad die entsprechenden Datenpunkte auswählen,

                        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
                        • SunshinemakerS Offline
                          SunshinemakerS Offline
                          Sunshinemaker
                          schrieb am zuletzt editiert von
                          #16

                          @MartinP Danke für deinen Vorschlag :)

                          @mickym Ich bin ausgestiegen bei :"Ich hab ehrlich keine Lust mehr zu zeigen..."

                          Ich hab eine Lösung für mich gefunden und bin zufrieden.

                          PS: Kann NodeRed RSCP für die Anbindung vom E3/DC S10 Pro ?????

                          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

                          871

                          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