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. Node-Red
  5. JSON oder JavaScript Objekt in iobroker Datenpunkte zerlegen

NEWS

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.1k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    2.8k

JSON oder JavaScript Objekt in iobroker Datenpunkte zerlegen

Geplant Angeheftet Gesperrt Verschoben Node-Red
node-red
114 Beiträge 13 Kommentatoren 26.5k Aufrufe 12 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 mickym

    @frank579 sagte in JSON oder JavaScript Objekt in iobroker Datenpunkte zerlegen:

    @mickym
    sorry lag an mir hatte das ganze Topic drin wenn ich nur den /Info nehme klappte es bei den anderen ist es ja auch kein JSON :man-facepalming: :man-facepalming:

    Trotzdem danke :+1:

    Hmm aber eigentlich darf es gar keine topics geben, die mit . enden. Was meinst Du mit ganzem topic?

    F Offline
    F Offline
    Frank579
    schrieb am zuletzt editiert von
    #71

    @mickym
    Ich hatte in er node shellies/3EM/# eingetragen teilweise legt der mqtt Adapter die aber selbst schon als datenpunkt an, dacht es läge daran.
    so siehts im MQTT aus
    mqtt 3em.PNG

    mickymM 1 Antwort Letzte Antwort
    0
    • F Frank579

      @mickym
      Ich hatte in er node shellies/3EM/# eingetragen teilweise legt der mqtt Adapter die aber selbst schon als datenpunkt an, dacht es läge daran.
      so siehts im MQTT aus
      mqtt 3em.PNG

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

      @frank579 Ich hab den Fehler schon gefunden - ich werkle gerade an einer neuen Version. ;)

      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
      1
      • mickymM Online
        mickymM Online
        mickym
        Most Active
        schrieb am zuletzt editiert von mickym
        #73

        So einen neue Version des Subflows - hat sich sogar vereinfacht.

        Einfach mal testen:

        [
           {
               "id": "6e802f1553b18149",
               "type": "subflow",
               "name": "JSON or Obj to IOBroker",
               "info": "# Creates an IOBroker tree\n\nThis node creates an IOBroker tree out of an Java-Object or JSON String.\n\nThe object tree will be created under 0_userdata.0\nIn addition to the JSON-String or Java Object as `msg.payload` it is necessary to specify a `msg.top` properity in addition to the msg-Object.\n\nThe object tree will be created under 0_userdata.0\n\nExisting `msg.topic` entries will be deleted.\nAn iobroker-out node has to be appended to this subflow node. It is not part of the subflow itself. No topic should be specified in the iobroker out node.\n\nIs `msg.top` property isn't defined, the `top` property of the subflow-node is used. \n\nIn the properties of the subflow node a new property `keepTopic` has been added. Default is _false_ to keep the current behaviour. If set to _true_ then the originial topic will be placed between the `top` property of the subflow node and the property of the analyzed JSON object.\n\n**Attention:**\nIf msg.top and top is empty, all msg.topics (msg.topic) will be directly prefixed with 0_userdata.0. . \n\n**Update 13.09.2022:**\nSpaces in topics of objects are no longer replaced with underscores in objects. No differences between all data types.\n\n# Erstellt einen Objektbaum im ioBroker\n\nDiese Node erstellt einen Objektbaum im ioBroker aus einem JAVA Objekt bzw. einem JSON String. \n\nDer Baum wird in jedem Fall unter 0_userdata.0 erstellt und zwar unter dem Topic der in` msg.top` mitgegeben wurde. In der `msg.payload` befindet sich dann der JSON String oder das entsprechende Objekt.\n\nExistierende `msg.topic `Einträge werden gelöscht.\nEin entsprechende iobroker-out Node muss an den Flow angehängt werden. Sie ist nicht Bestandteil des Subflows. In dieser iobroker-out Node darf kein Topic angegeben werden. \n\nFalls msg.top nicht definiert wurde, wird der `top`-Wert der Subflow-Node verwendet.\n\nIn den Eigenschaften der Subflow-Node wurde ein neuer Parameter `keepTopic` hinzugefügt. Standardwert ist _false_, um das bisherige Verhalten beizubehalten. Setzt man die Eigenschaft auf _true_, dann wird das originale Topic zwischen der `top` Eigenschaft der Subflow-Node und Eigenschaft des analysierten JSON Objektes eingefügt.\n\n**Achtung:**\nWenn top und msg.top leer ist, werden alle msg.topics (msg.topic) direkt unter dem Präfix 0_userdata.0., angelegt bzw. ausgegeben. \n\n**Update 13.09.2022:**\nLeerzeichen werden in Topics von Objekten nicht mehr durch Unterstriche ersetzt. Es gibt keine Unterschiede mehr zwischen den Datentypen.",
               "category": "",
               "in": [
                   {
                       "x": 60,
                       "y": 160,
                       "wires": [
                           {
                               "id": "554b8c663bcb46c2"
                           }
                       ]
                   }
               ],
               "out": [
                   {
                       "x": 2620,
                       "y": 280,
                       "wires": [
                           {
                               "id": "0962842ebd23e0d7",
                               "port": 0
                           }
                       ]
                   }
               ],
               "env": [
                   {
                       "name": "top",
                       "type": "str",
                       "value": "objRoot"
                   },
                   {
                       "name": "keepTopic",
                       "type": "bool",
                       "value": "false"
                   }
               ],
               "meta": {},
               "color": "#E2D96E",
               "icon": "node-red/batch.svg"
           },
           {
               "id": "3e11e8338f694832",
               "type": "split",
               "z": "6e802f1553b18149",
               "name": "split object",
               "splt": "\\n",
               "spltType": "str",
               "arraySplt": 1,
               "arraySpltType": "len",
               "stream": false,
               "addname": "key",
               "x": 1370,
               "y": 160,
               "wires": [
                   [
                       "0562a4249c8b856b"
                   ]
               ]
           },
           {
               "id": "0562a4249c8b856b",
               "type": "change",
               "z": "6e802f1553b18149",
               "name": "add key to topic",
               "rules": [
                   {
                       "t": "set",
                       "p": "stateName",
                       "pt": "msg",
                       "to": "key",
                       "tot": "msg"
                   },
                   {
                       "t": "set",
                       "p": "topic",
                       "pt": "msg",
                       "to": "topic  & '.' & key",
                       "tot": "jsonata"
                   }
               ],
               "action": "",
               "property": "",
               "from": "",
               "to": "",
               "reg": false,
               "x": 1560,
               "y": 160,
               "wires": [
                   [
                       "ddc90985bef0fafa"
                   ]
               ]
           },
           {
               "id": "ddc90985bef0fafa",
               "type": "switch",
               "z": "6e802f1553b18149",
               "name": "is type?",
               "property": "payload",
               "propertyType": "msg",
               "rules": [
                   {
                       "t": "istype",
                       "v": "array",
                       "vt": "array"
                   },
                   {
                       "t": "istype",
                       "v": "object",
                       "vt": "object"
                   },
                   {
                       "t": "else"
                   }
               ],
               "checkall": "true",
               "repair": false,
               "outputs": 3,
               "x": 1740,
               "y": 160,
               "wires": [
                   [
                       "bfce19b206660fbe"
                   ],
                   [
                       "3e11e8338f694832"
                   ],
                   [
                       "1a8c03d866b85b12"
                   ]
               ]
           },
           {
               "id": "bfce19b206660fbe",
               "type": "split",
               "z": "6e802f1553b18149",
               "name": "split array",
               "splt": "\\n",
               "spltType": "str",
               "arraySplt": 1,
               "arraySpltType": "len",
               "stream": false,
               "addname": "",
               "x": 780,
               "y": 280,
               "wires": [
                   [
                       "e89927810c6d75ec"
                   ]
               ]
           },
           {
               "id": "e89927810c6d75ec",
               "type": "change",
               "z": "6e802f1553b18149",
               "name": "add index to topic",
               "rules": [
                   {
                       "t": "set",
                       "p": "topic",
                       "pt": "msg",
                       "to": "topic  & '.' & parts.index",
                       "tot": "jsonata"
                   }
               ],
               "action": "",
               "property": "",
               "from": "",
               "to": "",
               "reg": false,
               "x": 970,
               "y": 280,
               "wires": [
                   [
                       "a4d1a5d04564dc77"
                   ]
               ]
           },
           {
               "id": "f5d52c6a57d08904",
               "type": "change",
               "z": "6e802f1553b18149",
               "name": "finalize msg.topic",
               "rules": [
                   {
                       "t": "set",
                       "p": "top",
                       "pt": "msg",
                       "to": "'0_userdata.0.' & top",
                       "tot": "jsonata"
                   },
                   {
                       "t": "set",
                       "p": "topic",
                       "pt": "msg",
                       "to": "top & '.' & topic",
                       "tot": "jsonata"
                   }
               ],
               "action": "",
               "property": "",
               "from": "",
               "to": "",
               "reg": false,
               "x": 2170,
               "y": 240,
               "wires": [
                   [
                       "0962842ebd23e0d7"
                   ]
               ]
           },
           {
               "id": "158930afddd0780b",
               "type": "json",
               "z": "6e802f1553b18149",
               "name": "",
               "property": "payload",
               "action": "obj",
               "pretty": false,
               "x": 550,
               "y": 160,
               "wires": [
                   [
                       "3649300b4c233b10"
                   ]
               ]
           },
           {
               "id": "1a8c03d866b85b12",
               "type": "switch",
               "z": "6e802f1553b18149",
               "name": "is msg.top != null",
               "property": "top",
               "propertyType": "msg",
               "rules": [
                   {
                       "t": "nnull"
                   },
                   {
                       "t": "null"
                   }
               ],
               "checkall": "true",
               "repair": false,
               "outputs": 2,
               "x": 1950,
               "y": 280,
               "wires": [
                   [
                       "f5d52c6a57d08904"
                   ],
                   [
                       "74c895ce724750de"
                   ]
               ]
           },
           {
               "id": "e023fe88445ce43e",
               "type": "change",
               "z": "6e802f1553b18149",
               "name": "",
               "rules": [
                   {
                       "t": "delete",
                       "p": "topic",
                       "pt": "msg"
                   }
               ],
               "action": "",
               "property": "",
               "from": "",
               "to": "",
               "reg": false,
               "x": 350,
               "y": 200,
               "wires": [
                   [
                       "158930afddd0780b"
                   ]
               ]
           },
           {
               "id": "3649300b4c233b10",
               "type": "switch",
               "z": "6e802f1553b18149",
               "name": "is type?",
               "property": "payload",
               "propertyType": "msg",
               "rules": [
                   {
                       "t": "istype",
                       "v": "array",
                       "vt": "array"
                   },
                   {
                       "t": "istype",
                       "v": "object",
                       "vt": "object"
                   },
                   {
                       "t": "else"
                   }
               ],
               "checkall": "true",
               "repair": false,
               "outputs": 3,
               "x": 720,
               "y": 160,
               "wires": [
                   [
                       "bfce19b206660fbe"
                   ],
                   [
                       "3e11e8338f694832"
                   ],
                   [
                       "a096a93bb82b7a93"
                   ]
               ]
           },
           {
               "id": "1b8480cd2df7ba3f",
               "type": "comment",
               "z": "6e802f1553b18149",
               "name": "Array",
               "info": "",
               "x": 600,
               "y": 280,
               "wires": []
           },
           {
               "id": "b3541807672be040",
               "type": "comment",
               "z": "6e802f1553b18149",
               "name": "object",
               "info": "",
               "x": 1340,
               "y": 100,
               "wires": []
           },
           {
               "id": "a4d1a5d04564dc77",
               "type": "switch",
               "z": "6e802f1553b18149",
               "name": "is type?",
               "property": "payload",
               "propertyType": "msg",
               "rules": [
                   {
                       "t": "istype",
                       "v": "object",
                       "vt": "object"
                   },
                   {
                       "t": "istype",
                       "v": "array",
                       "vt": "array"
                   },
                   {
                       "t": "else"
                   }
               ],
               "checkall": "true",
               "repair": false,
               "outputs": 3,
               "x": 1160,
               "y": 280,
               "wires": [
                   [
                       "3e11e8338f694832"
                   ],
                   [
                       "bfce19b206660fbe"
                   ],
                   [
                       "a096a93bb82b7a93"
                   ]
               ]
           },
           {
               "id": "74c895ce724750de",
               "type": "change",
               "z": "6e802f1553b18149",
               "name": "finalize msg.topic",
               "rules": [
                   {
                       "t": "set",
                       "p": "top",
                       "pt": "msg",
                       "to": "top",
                       "tot": "env"
                   },
                   {
                       "t": "set",
                       "p": "top",
                       "pt": "msg",
                       "to": "'0_userdata.0.' & top",
                       "tot": "jsonata"
                   },
                   {
                       "t": "set",
                       "p": "topic",
                       "pt": "msg",
                       "to": "top & '.' & topic",
                       "tot": "jsonata"
                   }
               ],
               "action": "",
               "property": "",
               "from": "",
               "to": "",
               "reg": false,
               "x": 2170,
               "y": 320,
               "wires": [
                   [
                       "0962842ebd23e0d7"
                   ]
               ]
           },
           {
               "id": "554b8c663bcb46c2",
               "type": "switch",
               "z": "6e802f1553b18149",
               "name": "",
               "property": "keepTopic",
               "propertyType": "env",
               "rules": [
                   {
                       "t": "true"
                   },
                   {
                       "t": "false"
                   }
               ],
               "checkall": "true",
               "repair": false,
               "outputs": 2,
               "x": 170,
               "y": 160,
               "wires": [
                   [
                       "e30ba9f0483285e4"
                   ],
                   [
                       "e023fe88445ce43e"
                   ]
               ]
           },
           {
               "id": "e30ba9f0483285e4",
               "type": "change",
               "z": "6e802f1553b18149",
               "name": "",
               "rules": [
                   {
                       "t": "change",
                       "p": "topic",
                       "pt": "msg",
                       "from": "/",
                       "fromt": "str",
                       "to": ".",
                       "tot": "str"
                   }
               ],
               "action": "",
               "property": "",
               "from": "",
               "to": "",
               "reg": false,
               "x": 350,
               "y": 120,
               "wires": [
                   [
                       "158930afddd0780b"
                   ]
               ]
           },
           {
               "id": "0962842ebd23e0d7",
               "type": "change",
               "z": "6e802f1553b18149",
               "name": "translate invalid chars in topic",
               "rules": [
                   {
                       "t": "change",
                       "p": "topic",
                       "pt": "msg",
                       "from": "..",
                       "fromt": "str",
                       "to": ".",
                       "tot": "str"
                   },
                   {
                       "t": "change",
                       "p": "topic",
                       "pt": "msg",
                       "from": "€",
                       "fromt": "str",
                       "to": "EUR",
                       "tot": "str"
                   }
               ],
               "action": "",
               "property": "",
               "from": "",
               "to": "",
               "reg": false,
               "x": 2430,
               "y": 280,
               "wires": [
                   []
               ]
           },
           {
               "id": "a096a93bb82b7a93",
               "type": "junction",
               "z": "6e802f1553b18149",
               "x": 1380,
               "y": 280,
               "wires": [
                   [
                       "1a8c03d866b85b12"
                   ]
               ]
           },
           {
               "id": "436b84bced4aeddd",
               "type": "subflow:6e802f1553b18149",
               "z": "393214410c8f2f15",
               "name": "",
               "x": 590,
               "y": 840,
               "wires": [
                   []
               ]
           }
        ]
        

        Dann wie unten vorgehen: https://forum.iobroker.net/post/856928

        Dort ist ja auch noch die bisherige Version vorhanden.

        EDIT: Sorry waren die Debug Nodes noch drin.

        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.

        F 1 Antwort Letzte Antwort
        0
        • mickymM mickym

          So einen neue Version des Subflows - hat sich sogar vereinfacht.

          Einfach mal testen:

          [
             {
                 "id": "6e802f1553b18149",
                 "type": "subflow",
                 "name": "JSON or Obj to IOBroker",
                 "info": "# Creates an IOBroker tree\n\nThis node creates an IOBroker tree out of an Java-Object or JSON String.\n\nThe object tree will be created under 0_userdata.0\nIn addition to the JSON-String or Java Object as `msg.payload` it is necessary to specify a `msg.top` properity in addition to the msg-Object.\n\nThe object tree will be created under 0_userdata.0\n\nExisting `msg.topic` entries will be deleted.\nAn iobroker-out node has to be appended to this subflow node. It is not part of the subflow itself. No topic should be specified in the iobroker out node.\n\nIs `msg.top` property isn't defined, the `top` property of the subflow-node is used. \n\nIn the properties of the subflow node a new property `keepTopic` has been added. Default is _false_ to keep the current behaviour. If set to _true_ then the originial topic will be placed between the `top` property of the subflow node and the property of the analyzed JSON object.\n\n**Attention:**\nIf msg.top and top is empty, all msg.topics (msg.topic) will be directly prefixed with 0_userdata.0. . \n\n**Update 13.09.2022:**\nSpaces in topics of objects are no longer replaced with underscores in objects. No differences between all data types.\n\n# Erstellt einen Objektbaum im ioBroker\n\nDiese Node erstellt einen Objektbaum im ioBroker aus einem JAVA Objekt bzw. einem JSON String. \n\nDer Baum wird in jedem Fall unter 0_userdata.0 erstellt und zwar unter dem Topic der in` msg.top` mitgegeben wurde. In der `msg.payload` befindet sich dann der JSON String oder das entsprechende Objekt.\n\nExistierende `msg.topic `Einträge werden gelöscht.\nEin entsprechende iobroker-out Node muss an den Flow angehängt werden. Sie ist nicht Bestandteil des Subflows. In dieser iobroker-out Node darf kein Topic angegeben werden. \n\nFalls msg.top nicht definiert wurde, wird der `top`-Wert der Subflow-Node verwendet.\n\nIn den Eigenschaften der Subflow-Node wurde ein neuer Parameter `keepTopic` hinzugefügt. Standardwert ist _false_, um das bisherige Verhalten beizubehalten. Setzt man die Eigenschaft auf _true_, dann wird das originale Topic zwischen der `top` Eigenschaft der Subflow-Node und Eigenschaft des analysierten JSON Objektes eingefügt.\n\n**Achtung:**\nWenn top und msg.top leer ist, werden alle msg.topics (msg.topic) direkt unter dem Präfix 0_userdata.0., angelegt bzw. ausgegeben. \n\n**Update 13.09.2022:**\nLeerzeichen werden in Topics von Objekten nicht mehr durch Unterstriche ersetzt. Es gibt keine Unterschiede mehr zwischen den Datentypen.",
                 "category": "",
                 "in": [
                     {
                         "x": 60,
                         "y": 160,
                         "wires": [
                             {
                                 "id": "554b8c663bcb46c2"
                             }
                         ]
                     }
                 ],
                 "out": [
                     {
                         "x": 2620,
                         "y": 280,
                         "wires": [
                             {
                                 "id": "0962842ebd23e0d7",
                                 "port": 0
                             }
                         ]
                     }
                 ],
                 "env": [
                     {
                         "name": "top",
                         "type": "str",
                         "value": "objRoot"
                     },
                     {
                         "name": "keepTopic",
                         "type": "bool",
                         "value": "false"
                     }
                 ],
                 "meta": {},
                 "color": "#E2D96E",
                 "icon": "node-red/batch.svg"
             },
             {
                 "id": "3e11e8338f694832",
                 "type": "split",
                 "z": "6e802f1553b18149",
                 "name": "split object",
                 "splt": "\\n",
                 "spltType": "str",
                 "arraySplt": 1,
                 "arraySpltType": "len",
                 "stream": false,
                 "addname": "key",
                 "x": 1370,
                 "y": 160,
                 "wires": [
                     [
                         "0562a4249c8b856b"
                     ]
                 ]
             },
             {
                 "id": "0562a4249c8b856b",
                 "type": "change",
                 "z": "6e802f1553b18149",
                 "name": "add key to topic",
                 "rules": [
                     {
                         "t": "set",
                         "p": "stateName",
                         "pt": "msg",
                         "to": "key",
                         "tot": "msg"
                     },
                     {
                         "t": "set",
                         "p": "topic",
                         "pt": "msg",
                         "to": "topic  & '.' & key",
                         "tot": "jsonata"
                     }
                 ],
                 "action": "",
                 "property": "",
                 "from": "",
                 "to": "",
                 "reg": false,
                 "x": 1560,
                 "y": 160,
                 "wires": [
                     [
                         "ddc90985bef0fafa"
                     ]
                 ]
             },
             {
                 "id": "ddc90985bef0fafa",
                 "type": "switch",
                 "z": "6e802f1553b18149",
                 "name": "is type?",
                 "property": "payload",
                 "propertyType": "msg",
                 "rules": [
                     {
                         "t": "istype",
                         "v": "array",
                         "vt": "array"
                     },
                     {
                         "t": "istype",
                         "v": "object",
                         "vt": "object"
                     },
                     {
                         "t": "else"
                     }
                 ],
                 "checkall": "true",
                 "repair": false,
                 "outputs": 3,
                 "x": 1740,
                 "y": 160,
                 "wires": [
                     [
                         "bfce19b206660fbe"
                     ],
                     [
                         "3e11e8338f694832"
                     ],
                     [
                         "1a8c03d866b85b12"
                     ]
                 ]
             },
             {
                 "id": "bfce19b206660fbe",
                 "type": "split",
                 "z": "6e802f1553b18149",
                 "name": "split array",
                 "splt": "\\n",
                 "spltType": "str",
                 "arraySplt": 1,
                 "arraySpltType": "len",
                 "stream": false,
                 "addname": "",
                 "x": 780,
                 "y": 280,
                 "wires": [
                     [
                         "e89927810c6d75ec"
                     ]
                 ]
             },
             {
                 "id": "e89927810c6d75ec",
                 "type": "change",
                 "z": "6e802f1553b18149",
                 "name": "add index to topic",
                 "rules": [
                     {
                         "t": "set",
                         "p": "topic",
                         "pt": "msg",
                         "to": "topic  & '.' & parts.index",
                         "tot": "jsonata"
                     }
                 ],
                 "action": "",
                 "property": "",
                 "from": "",
                 "to": "",
                 "reg": false,
                 "x": 970,
                 "y": 280,
                 "wires": [
                     [
                         "a4d1a5d04564dc77"
                     ]
                 ]
             },
             {
                 "id": "f5d52c6a57d08904",
                 "type": "change",
                 "z": "6e802f1553b18149",
                 "name": "finalize msg.topic",
                 "rules": [
                     {
                         "t": "set",
                         "p": "top",
                         "pt": "msg",
                         "to": "'0_userdata.0.' & top",
                         "tot": "jsonata"
                     },
                     {
                         "t": "set",
                         "p": "topic",
                         "pt": "msg",
                         "to": "top & '.' & topic",
                         "tot": "jsonata"
                     }
                 ],
                 "action": "",
                 "property": "",
                 "from": "",
                 "to": "",
                 "reg": false,
                 "x": 2170,
                 "y": 240,
                 "wires": [
                     [
                         "0962842ebd23e0d7"
                     ]
                 ]
             },
             {
                 "id": "158930afddd0780b",
                 "type": "json",
                 "z": "6e802f1553b18149",
                 "name": "",
                 "property": "payload",
                 "action": "obj",
                 "pretty": false,
                 "x": 550,
                 "y": 160,
                 "wires": [
                     [
                         "3649300b4c233b10"
                     ]
                 ]
             },
             {
                 "id": "1a8c03d866b85b12",
                 "type": "switch",
                 "z": "6e802f1553b18149",
                 "name": "is msg.top != null",
                 "property": "top",
                 "propertyType": "msg",
                 "rules": [
                     {
                         "t": "nnull"
                     },
                     {
                         "t": "null"
                     }
                 ],
                 "checkall": "true",
                 "repair": false,
                 "outputs": 2,
                 "x": 1950,
                 "y": 280,
                 "wires": [
                     [
                         "f5d52c6a57d08904"
                     ],
                     [
                         "74c895ce724750de"
                     ]
                 ]
             },
             {
                 "id": "e023fe88445ce43e",
                 "type": "change",
                 "z": "6e802f1553b18149",
                 "name": "",
                 "rules": [
                     {
                         "t": "delete",
                         "p": "topic",
                         "pt": "msg"
                     }
                 ],
                 "action": "",
                 "property": "",
                 "from": "",
                 "to": "",
                 "reg": false,
                 "x": 350,
                 "y": 200,
                 "wires": [
                     [
                         "158930afddd0780b"
                     ]
                 ]
             },
             {
                 "id": "3649300b4c233b10",
                 "type": "switch",
                 "z": "6e802f1553b18149",
                 "name": "is type?",
                 "property": "payload",
                 "propertyType": "msg",
                 "rules": [
                     {
                         "t": "istype",
                         "v": "array",
                         "vt": "array"
                     },
                     {
                         "t": "istype",
                         "v": "object",
                         "vt": "object"
                     },
                     {
                         "t": "else"
                     }
                 ],
                 "checkall": "true",
                 "repair": false,
                 "outputs": 3,
                 "x": 720,
                 "y": 160,
                 "wires": [
                     [
                         "bfce19b206660fbe"
                     ],
                     [
                         "3e11e8338f694832"
                     ],
                     [
                         "a096a93bb82b7a93"
                     ]
                 ]
             },
             {
                 "id": "1b8480cd2df7ba3f",
                 "type": "comment",
                 "z": "6e802f1553b18149",
                 "name": "Array",
                 "info": "",
                 "x": 600,
                 "y": 280,
                 "wires": []
             },
             {
                 "id": "b3541807672be040",
                 "type": "comment",
                 "z": "6e802f1553b18149",
                 "name": "object",
                 "info": "",
                 "x": 1340,
                 "y": 100,
                 "wires": []
             },
             {
                 "id": "a4d1a5d04564dc77",
                 "type": "switch",
                 "z": "6e802f1553b18149",
                 "name": "is type?",
                 "property": "payload",
                 "propertyType": "msg",
                 "rules": [
                     {
                         "t": "istype",
                         "v": "object",
                         "vt": "object"
                     },
                     {
                         "t": "istype",
                         "v": "array",
                         "vt": "array"
                     },
                     {
                         "t": "else"
                     }
                 ],
                 "checkall": "true",
                 "repair": false,
                 "outputs": 3,
                 "x": 1160,
                 "y": 280,
                 "wires": [
                     [
                         "3e11e8338f694832"
                     ],
                     [
                         "bfce19b206660fbe"
                     ],
                     [
                         "a096a93bb82b7a93"
                     ]
                 ]
             },
             {
                 "id": "74c895ce724750de",
                 "type": "change",
                 "z": "6e802f1553b18149",
                 "name": "finalize msg.topic",
                 "rules": [
                     {
                         "t": "set",
                         "p": "top",
                         "pt": "msg",
                         "to": "top",
                         "tot": "env"
                     },
                     {
                         "t": "set",
                         "p": "top",
                         "pt": "msg",
                         "to": "'0_userdata.0.' & top",
                         "tot": "jsonata"
                     },
                     {
                         "t": "set",
                         "p": "topic",
                         "pt": "msg",
                         "to": "top & '.' & topic",
                         "tot": "jsonata"
                     }
                 ],
                 "action": "",
                 "property": "",
                 "from": "",
                 "to": "",
                 "reg": false,
                 "x": 2170,
                 "y": 320,
                 "wires": [
                     [
                         "0962842ebd23e0d7"
                     ]
                 ]
             },
             {
                 "id": "554b8c663bcb46c2",
                 "type": "switch",
                 "z": "6e802f1553b18149",
                 "name": "",
                 "property": "keepTopic",
                 "propertyType": "env",
                 "rules": [
                     {
                         "t": "true"
                     },
                     {
                         "t": "false"
                     }
                 ],
                 "checkall": "true",
                 "repair": false,
                 "outputs": 2,
                 "x": 170,
                 "y": 160,
                 "wires": [
                     [
                         "e30ba9f0483285e4"
                     ],
                     [
                         "e023fe88445ce43e"
                     ]
                 ]
             },
             {
                 "id": "e30ba9f0483285e4",
                 "type": "change",
                 "z": "6e802f1553b18149",
                 "name": "",
                 "rules": [
                     {
                         "t": "change",
                         "p": "topic",
                         "pt": "msg",
                         "from": "/",
                         "fromt": "str",
                         "to": ".",
                         "tot": "str"
                     }
                 ],
                 "action": "",
                 "property": "",
                 "from": "",
                 "to": "",
                 "reg": false,
                 "x": 350,
                 "y": 120,
                 "wires": [
                     [
                         "158930afddd0780b"
                     ]
                 ]
             },
             {
                 "id": "0962842ebd23e0d7",
                 "type": "change",
                 "z": "6e802f1553b18149",
                 "name": "translate invalid chars in topic",
                 "rules": [
                     {
                         "t": "change",
                         "p": "topic",
                         "pt": "msg",
                         "from": "..",
                         "fromt": "str",
                         "to": ".",
                         "tot": "str"
                     },
                     {
                         "t": "change",
                         "p": "topic",
                         "pt": "msg",
                         "from": "€",
                         "fromt": "str",
                         "to": "EUR",
                         "tot": "str"
                     }
                 ],
                 "action": "",
                 "property": "",
                 "from": "",
                 "to": "",
                 "reg": false,
                 "x": 2430,
                 "y": 280,
                 "wires": [
                     []
                 ]
             },
             {
                 "id": "a096a93bb82b7a93",
                 "type": "junction",
                 "z": "6e802f1553b18149",
                 "x": 1380,
                 "y": 280,
                 "wires": [
                     [
                         "1a8c03d866b85b12"
                     ]
                 ]
             },
             {
                 "id": "436b84bced4aeddd",
                 "type": "subflow:6e802f1553b18149",
                 "z": "393214410c8f2f15",
                 "name": "",
                 "x": 590,
                 "y": 840,
                 "wires": [
                     []
                 ]
             }
          ]
          

          Dann wie unten vorgehen: https://forum.iobroker.net/post/856928

          Dort ist ja auch noch die bisherige Version vorhanden.

          EDIT: Sorry waren die Debug Nodes noch drin.

          F Offline
          F Offline
          Frank579
          schrieb am zuletzt editiert von
          #74

          @mickym
          Habe es mal schnell getestet irgend was passt jetzt nicht mehr, kann natürlich auch bei mir sein die Werte der Tasmota Steckdose werden nicht mehr aktualisiert...
          aus der debug Node kommt

          0_userdata.0.objRoot.ENERGY.Total : msg.payload : number
          2.689
          

          ist das objRoot richtig da stand vorher der Name vom gerät ...

          mickymM 1 Antwort Letzte Antwort
          0
          • F Frank579

            @mickym
            Habe es mal schnell getestet irgend was passt jetzt nicht mehr, kann natürlich auch bei mir sein die Werte der Tasmota Steckdose werden nicht mehr aktualisiert...
            aus der debug Node kommt

            0_userdata.0.objRoot.ENERGY.Total : msg.payload : number
            2.689
            

            ist das objRoot richtig da stand vorher der Name vom gerät ...

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

            @frank579 Na dann hast Du leider Deine ganze Node ersetzt - Du solltest eigentlich nur wie unter beschrieben den Subflow nehmen.

            2f7f5dd2-198e-4a7f-8a55-c2e3f431860e-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.

            F 1 Antwort Letzte Antwort
            0
            • mickymM mickym

              @frank579 Na dann hast Du leider Deine ganze Node ersetzt - Du solltest eigentlich nur wie unter beschrieben den Subflow nehmen.

              2f7f5dd2-198e-4a7f-8a55-c2e3f431860e-image.png

              F Offline
              F Offline
              Frank579
              schrieb am zuletzt editiert von
              #76

              @mickym hatte ich auch so gemacht, dacht ich ... :) schaue ich direkt mal nach

              mickymM 1 Antwort Letzte Antwort
              0
              • F Frank579

                @mickym hatte ich auch so gemacht, dacht ich ... :) schaue ich direkt mal nach

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

                @frank579 sagte in JSON oder JavaScript Objekt in iobroker Datenpunkte zerlegen:

                @mickym hatte ich auch so gemacht, dacht ich ... :) schaue ich direkt mal nach

                Standardmässig steht in der Node

                665e4a8d-64c4-43af-b044-e5aa4ed78211-image.png

                Daher das objRoot.

                Da musst Du wieder den eigenen Namen eintragen unter dem das unter 0_userdata.0 auftauchen soll und wenn Du einen ganzen Baum schreiben willst, muss das keepTopic auf true.

                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
                • F Offline
                  F Offline
                  Frank579
                  schrieb am zuletzt editiert von
                  #78

                  @mickym genau so war es.
                  wenn ich jetzt wieder den ganzen baum vom 3EM haben möchte bekomme ich immer den im log :

                  	1 Nov 15:55:58 - [error] [json:6908c423c0496cdd] Unexpected token o in JSON at position 0
                  

                  hast du eine idee was das sein könnte komme aber auch so klar benötige ja eigentlich nicht den ganzen Baum ist ja in den Mqtt-Adapter Datenpunkten schon drin, aber evtl. käme ich dann ohne den für die shellies klar nur mit node red, evtl. nehme ich mir auch was viel vor :face_with_rolling_eyes:

                  mickymM 2 Antworten Letzte Antwort
                  0
                  • F Frank579

                    @mickym genau so war es.
                    wenn ich jetzt wieder den ganzen baum vom 3EM haben möchte bekomme ich immer den im log :

                    	1 Nov 15:55:58 - [error] [json:6908c423c0496cdd] Unexpected token o in JSON at position 0
                    

                    hast du eine idee was das sein könnte komme aber auch so klar benötige ja eigentlich nicht den ganzen Baum ist ja in den Mqtt-Adapter Datenpunkten schon drin, aber evtl. käme ich dann ohne den für die shellies klar nur mit node red, evtl. nehme ich mir auch was viel vor :face_with_rolling_eyes:

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

                    @frank579 Ja hab noch einen Fehler gefunden - das Problem ist, dass er Zahlen als JSON Objekte erkennt, Strings aber nicht, da kommt dann dieser Fehler. Nächste Version folgt. ;)

                    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
                    1
                    • F Frank579

                      @mickym genau so war es.
                      wenn ich jetzt wieder den ganzen baum vom 3EM haben möchte bekomme ich immer den im log :

                      	1 Nov 15:55:58 - [error] [json:6908c423c0496cdd] Unexpected token o in JSON at position 0
                      

                      hast du eine idee was das sein könnte komme aber auch so klar benötige ja eigentlich nicht den ganzen Baum ist ja in den Mqtt-Adapter Datenpunkten schon drin, aber evtl. käme ich dann ohne den für die shellies klar nur mit node red, evtl. nehme ich mir auch was viel vor :face_with_rolling_eyes:

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

                      @frank579 So nächste Version. ;) - Ist wieder etwas komplexer, aber ich hoffe jetzt passt es:

                      [
                         {
                             "id": "6e802f1553b18149",
                             "type": "subflow",
                             "name": "JSON or Obj to IOBroker",
                             "info": "# Creates an IOBroker tree\n\nThis node creates an IOBroker tree out of an Java-Object or JSON String.\n\nThe object tree will be created under 0_userdata.0\nIn addition to the JSON-String or Java Object as `msg.payload` it is necessary to specify a `msg.top` properity in addition to the msg-Object.\n\nThe object tree will be created under 0_userdata.0\n\nExisting `msg.topic` entries will be deleted.\nAn iobroker-out node has to be appended to this subflow node. It is not part of the subflow itself. No topic should be specified in the iobroker out node.\n\nIs `msg.top` property isn't defined, the `top` property of the subflow-node is used. \n\nIn the properties of the subflow node a new property `keepTopic` has been added. Default is _false_ to keep the current behaviour. If set to _true_ then the originial topic will be placed between the `top` property of the subflow node and the property of the analyzed JSON object.\n\n**Attention:**\nIf msg.top and top is empty, all msg.topics (msg.topic) will be directly prefixed with 0_userdata.0. . \n\n**Update 13.09.2022:**\nSpaces in topics of objects are no longer replaced with underscores in objects. No differences between all data types.\n\n# Erstellt einen Objektbaum im ioBroker\n\nDiese Node erstellt einen Objektbaum im ioBroker aus einem JAVA Objekt bzw. einem JSON String. \n\nDer Baum wird in jedem Fall unter 0_userdata.0 erstellt und zwar unter dem Topic der in` msg.top` mitgegeben wurde. In der `msg.payload` befindet sich dann der JSON String oder das entsprechende Objekt.\n\nExistierende `msg.topic `Einträge werden gelöscht.\nEin entsprechende iobroker-out Node muss an den Flow angehängt werden. Sie ist nicht Bestandteil des Subflows. In dieser iobroker-out Node darf kein Topic angegeben werden. \n\nFalls msg.top nicht definiert wurde, wird der `top`-Wert der Subflow-Node verwendet.\n\nIn den Eigenschaften der Subflow-Node wurde ein neuer Parameter `keepTopic` hinzugefügt. Standardwert ist _false_, um das bisherige Verhalten beizubehalten. Setzt man die Eigenschaft auf _true_, dann wird das originale Topic zwischen der `top` Eigenschaft der Subflow-Node und Eigenschaft des analysierten JSON Objektes eingefügt.\n\n**Achtung:**\nWenn top und msg.top leer ist, werden alle msg.topics (msg.topic) direkt unter dem Präfix 0_userdata.0., angelegt bzw. ausgegeben. \n\n**Update 13.09.2022:**\nLeerzeichen werden in Topics von Objekten nicht mehr durch Unterstriche ersetzt. Es gibt keine Unterschiede mehr zwischen den Datentypen.",
                             "category": "",
                             "in": [
                                 {
                                     "x": 60,
                                     "y": 160,
                                     "wires": [
                                         {
                                             "id": "554b8c663bcb46c2"
                                         }
                                     ]
                                 }
                             ],
                             "out": [
                                 {
                                     "x": 2620,
                                     "y": 280,
                                     "wires": [
                                         {
                                             "id": "0962842ebd23e0d7",
                                             "port": 0
                                         }
                                     ]
                                 }
                             ],
                             "env": [
                                 {
                                     "name": "top",
                                     "type": "str",
                                     "value": "objRoot"
                                 },
                                 {
                                     "name": "keepTopic",
                                     "type": "bool",
                                     "value": "false"
                                 }
                             ],
                             "meta": {},
                             "color": "#E2D96E",
                             "icon": "node-red/batch.svg"
                         },
                         {
                             "id": "3e11e8338f694832",
                             "type": "split",
                             "z": "6e802f1553b18149",
                             "name": "split object",
                             "splt": "\\n",
                             "spltType": "str",
                             "arraySplt": 1,
                             "arraySpltType": "len",
                             "stream": false,
                             "addname": "key",
                             "x": 1370,
                             "y": 160,
                             "wires": [
                                 [
                                     "0562a4249c8b856b"
                                 ]
                             ]
                         },
                         {
                             "id": "0562a4249c8b856b",
                             "type": "change",
                             "z": "6e802f1553b18149",
                             "name": "add key to topic",
                             "rules": [
                                 {
                                     "t": "set",
                                     "p": "stateName",
                                     "pt": "msg",
                                     "to": "key",
                                     "tot": "msg"
                                 },
                                 {
                                     "t": "set",
                                     "p": "topic",
                                     "pt": "msg",
                                     "to": "topic  & '.' & key",
                                     "tot": "jsonata"
                                 }
                             ],
                             "action": "",
                             "property": "",
                             "from": "",
                             "to": "",
                             "reg": false,
                             "x": 1560,
                             "y": 160,
                             "wires": [
                                 [
                                     "ddc90985bef0fafa"
                                 ]
                             ]
                         },
                         {
                             "id": "ddc90985bef0fafa",
                             "type": "switch",
                             "z": "6e802f1553b18149",
                             "name": "is type?",
                             "property": "payload",
                             "propertyType": "msg",
                             "rules": [
                                 {
                                     "t": "istype",
                                     "v": "array",
                                     "vt": "array"
                                 },
                                 {
                                     "t": "istype",
                                     "v": "object",
                                     "vt": "object"
                                 },
                                 {
                                     "t": "else"
                                 }
                             ],
                             "checkall": "true",
                             "repair": false,
                             "outputs": 3,
                             "x": 1740,
                             "y": 160,
                             "wires": [
                                 [
                                     "bfce19b206660fbe"
                                 ],
                                 [
                                     "3e11e8338f694832"
                                 ],
                                 [
                                     "1a8c03d866b85b12"
                                 ]
                             ]
                         },
                         {
                             "id": "bfce19b206660fbe",
                             "type": "split",
                             "z": "6e802f1553b18149",
                             "name": "split array",
                             "splt": "\\n",
                             "spltType": "str",
                             "arraySplt": 1,
                             "arraySpltType": "len",
                             "stream": false,
                             "addname": "",
                             "x": 780,
                             "y": 280,
                             "wires": [
                                 [
                                     "e89927810c6d75ec"
                                 ]
                             ]
                         },
                         {
                             "id": "e89927810c6d75ec",
                             "type": "change",
                             "z": "6e802f1553b18149",
                             "name": "add index to topic",
                             "rules": [
                                 {
                                     "t": "set",
                                     "p": "topic",
                                     "pt": "msg",
                                     "to": "topic  & '.' & parts.index",
                                     "tot": "jsonata"
                                 }
                             ],
                             "action": "",
                             "property": "",
                             "from": "",
                             "to": "",
                             "reg": false,
                             "x": 970,
                             "y": 280,
                             "wires": [
                                 [
                                     "a4d1a5d04564dc77"
                                 ]
                             ]
                         },
                         {
                             "id": "f5d52c6a57d08904",
                             "type": "change",
                             "z": "6e802f1553b18149",
                             "name": "finalize msg.topic",
                             "rules": [
                                 {
                                     "t": "set",
                                     "p": "top",
                                     "pt": "msg",
                                     "to": "'0_userdata.0.' & top",
                                     "tot": "jsonata"
                                 },
                                 {
                                     "t": "set",
                                     "p": "topic",
                                     "pt": "msg",
                                     "to": "top & '.' & topic",
                                     "tot": "jsonata"
                                 }
                             ],
                             "action": "",
                             "property": "",
                             "from": "",
                             "to": "",
                             "reg": false,
                             "x": 2170,
                             "y": 240,
                             "wires": [
                                 [
                                     "0962842ebd23e0d7"
                                 ]
                             ]
                         },
                         {
                             "id": "1a8c03d866b85b12",
                             "type": "switch",
                             "z": "6e802f1553b18149",
                             "name": "is msg.top != null",
                             "property": "top",
                             "propertyType": "msg",
                             "rules": [
                                 {
                                     "t": "nnull"
                                 },
                                 {
                                     "t": "null"
                                 }
                             ],
                             "checkall": "true",
                             "repair": false,
                             "outputs": 2,
                             "x": 1950,
                             "y": 280,
                             "wires": [
                                 [
                                     "f5d52c6a57d08904"
                                 ],
                                 [
                                     "74c895ce724750de"
                                 ]
                             ]
                         },
                         {
                             "id": "e023fe88445ce43e",
                             "type": "change",
                             "z": "6e802f1553b18149",
                             "name": "",
                             "rules": [
                                 {
                                     "t": "delete",
                                     "p": "topic",
                                     "pt": "msg"
                                 }
                             ],
                             "action": "",
                             "property": "",
                             "from": "",
                             "to": "",
                             "reg": false,
                             "x": 350,
                             "y": 200,
                             "wires": [
                                 [
                                     "3649300b4c233b10"
                                 ]
                             ]
                         },
                         {
                             "id": "3649300b4c233b10",
                             "type": "switch",
                             "z": "6e802f1553b18149",
                             "name": "is type?",
                             "property": "payload",
                             "propertyType": "msg",
                             "rules": [
                                 {
                                     "t": "istype",
                                     "v": "json",
                                     "vt": "json"
                                 },
                                 {
                                     "t": "istype",
                                     "v": "array",
                                     "vt": "array"
                                 },
                                 {
                                     "t": "istype",
                                     "v": "object",
                                     "vt": "object"
                                 },
                                 {
                                     "t": "else"
                                 }
                             ],
                             "checkall": "true",
                             "repair": false,
                             "outputs": 4,
                             "x": 600,
                             "y": 160,
                             "wires": [
                                 [
                                     "fc7913a8524badb7"
                                 ],
                                 [
                                     "bfce19b206660fbe"
                                 ],
                                 [
                                     "3e11e8338f694832"
                                 ],
                                 [
                                     "9ac3cc3681e8b6c6"
                                 ]
                             ]
                         },
                         {
                             "id": "1b8480cd2df7ba3f",
                             "type": "comment",
                             "z": "6e802f1553b18149",
                             "name": "Array",
                             "info": "",
                             "x": 600,
                             "y": 280,
                             "wires": []
                         },
                         {
                             "id": "b3541807672be040",
                             "type": "comment",
                             "z": "6e802f1553b18149",
                             "name": "object",
                             "info": "",
                             "x": 1340,
                             "y": 100,
                             "wires": []
                         },
                         {
                             "id": "a4d1a5d04564dc77",
                             "type": "switch",
                             "z": "6e802f1553b18149",
                             "name": "is type?",
                             "property": "payload",
                             "propertyType": "msg",
                             "rules": [
                                 {
                                     "t": "istype",
                                     "v": "object",
                                     "vt": "object"
                                 },
                                 {
                                     "t": "istype",
                                     "v": "array",
                                     "vt": "array"
                                 },
                                 {
                                     "t": "else"
                                 }
                             ],
                             "checkall": "true",
                             "repair": false,
                             "outputs": 3,
                             "x": 1160,
                             "y": 280,
                             "wires": [
                                 [
                                     "3e11e8338f694832"
                                 ],
                                 [
                                     "bfce19b206660fbe"
                                 ],
                                 [
                                     "a096a93bb82b7a93"
                                 ]
                             ]
                         },
                         {
                             "id": "74c895ce724750de",
                             "type": "change",
                             "z": "6e802f1553b18149",
                             "name": "finalize msg.topic",
                             "rules": [
                                 {
                                     "t": "set",
                                     "p": "top",
                                     "pt": "msg",
                                     "to": "top",
                                     "tot": "env"
                                 },
                                 {
                                     "t": "set",
                                     "p": "top",
                                     "pt": "msg",
                                     "to": "'0_userdata.0.' & top",
                                     "tot": "jsonata"
                                 },
                                 {
                                     "t": "set",
                                     "p": "topic",
                                     "pt": "msg",
                                     "to": "top & '.' & topic",
                                     "tot": "jsonata"
                                 }
                             ],
                             "action": "",
                             "property": "",
                             "from": "",
                             "to": "",
                             "reg": false,
                             "x": 2170,
                             "y": 320,
                             "wires": [
                                 [
                                     "0962842ebd23e0d7"
                                 ]
                             ]
                         },
                         {
                             "id": "554b8c663bcb46c2",
                             "type": "switch",
                             "z": "6e802f1553b18149",
                             "name": "",
                             "property": "keepTopic",
                             "propertyType": "env",
                             "rules": [
                                 {
                                     "t": "true"
                                 },
                                 {
                                     "t": "false"
                                 }
                             ],
                             "checkall": "true",
                             "repair": false,
                             "outputs": 2,
                             "x": 170,
                             "y": 160,
                             "wires": [
                                 [
                                     "e30ba9f0483285e4"
                                 ],
                                 [
                                     "e023fe88445ce43e"
                                 ]
                             ]
                         },
                         {
                             "id": "e30ba9f0483285e4",
                             "type": "change",
                             "z": "6e802f1553b18149",
                             "name": "",
                             "rules": [
                                 {
                                     "t": "change",
                                     "p": "topic",
                                     "pt": "msg",
                                     "from": "/",
                                     "fromt": "str",
                                     "to": ".",
                                     "tot": "str"
                                 }
                             ],
                             "action": "",
                             "property": "",
                             "from": "",
                             "to": "",
                             "reg": false,
                             "x": 350,
                             "y": 120,
                             "wires": [
                                 [
                                     "3649300b4c233b10"
                                 ]
                             ]
                         },
                         {
                             "id": "0962842ebd23e0d7",
                             "type": "change",
                             "z": "6e802f1553b18149",
                             "name": "translate invalid chars in topic",
                             "rules": [
                                 {
                                     "t": "change",
                                     "p": "topic",
                                     "pt": "msg",
                                     "from": "..",
                                     "fromt": "str",
                                     "to": ".",
                                     "tot": "str"
                                 },
                                 {
                                     "t": "change",
                                     "p": "topic",
                                     "pt": "msg",
                                     "from": "€",
                                     "fromt": "str",
                                     "to": "EUR",
                                     "tot": "str"
                                 }
                             ],
                             "action": "",
                             "property": "",
                             "from": "",
                             "to": "",
                             "reg": false,
                             "x": 2430,
                             "y": 280,
                             "wires": [
                                 []
                             ]
                         },
                         {
                             "id": "9ac3cc3681e8b6c6",
                             "type": "change",
                             "z": "6e802f1553b18149",
                             "name": "set topic, if empty",
                             "rules": [
                                 {
                                     "t": "set",
                                     "p": "topic",
                                     "pt": "msg",
                                     "to": "topic ? topic : $type(payload)\t",
                                     "tot": "jsonata"
                                 }
                             ],
                             "action": "",
                             "property": "",
                             "from": "",
                             "to": "",
                             "reg": false,
                             "x": 950,
                             "y": 200,
                             "wires": [
                                 [
                                     "a096a93bb82b7a93"
                                 ]
                             ]
                         },
                         {
                             "id": "fc7913a8524badb7",
                             "type": "json",
                             "z": "6e802f1553b18149",
                             "name": "",
                             "property": "payload",
                             "action": "obj",
                             "pretty": false,
                             "x": 750,
                             "y": 100,
                             "wires": [
                                 [
                                     "d9e7bdd4c48a8aa1"
                                 ]
                             ]
                         },
                         {
                             "id": "d9e7bdd4c48a8aa1",
                             "type": "switch",
                             "z": "6e802f1553b18149",
                             "name": "is type?",
                             "property": "payload",
                             "propertyType": "msg",
                             "rules": [
                                 {
                                     "t": "istype",
                                     "v": "array",
                                     "vt": "array"
                                 },
                                 {
                                     "t": "istype",
                                     "v": "object",
                                     "vt": "object"
                                 },
                                 {
                                     "t": "else"
                                 }
                             ],
                             "checkall": "true",
                             "repair": false,
                             "outputs": 3,
                             "x": 900,
                             "y": 100,
                             "wires": [
                                 [
                                     "1520be42bcc2145e"
                                 ],
                                 [
                                     "1520be42bcc2145e"
                                 ],
                                 [
                                     "9ac3cc3681e8b6c6"
                                 ]
                             ]
                         },
                         {
                             "id": "a096a93bb82b7a93",
                             "type": "junction",
                             "z": "6e802f1553b18149",
                             "x": 1380,
                             "y": 280,
                             "wires": [
                                 [
                                     "1a8c03d866b85b12"
                                 ]
                             ]
                         },
                         {
                             "id": "1520be42bcc2145e",
                             "type": "junction",
                             "z": "6e802f1553b18149",
                             "x": 480,
                             "y": 20,
                             "wires": [
                                 [
                                     "3649300b4c233b10"
                                 ]
                             ]
                         },
                         {
                             "id": "436b84bced4aeddd",
                             "type": "subflow:6e802f1553b18149",
                             "z": "393214410c8f2f15",
                             "name": "",
                             "x": 590,
                             "y": 840,
                             "wires": [
                                 [
                                     "624a03b2c28140de"
                                 ]
                             ]
                         }
                      ]
                      

                      Außerdem werden jetzt (!!!) wenn gar kein topic gesetzt ist, das topic gelöscht werden soll und von Anfang an skalare Werte übergeben werden, einfach als topic der Datentyp gesetzt. Damit sollte das mit dem . am Ende nicht mehr vorkommen. Das lag an skalaren Typen ohne topic.

                      6a1af9c8-a604-4ba1-800a-cb9b3d07a2a5-image.png

                      Ich hoffe passt jetzt.

                      @Frank579 - eine kurze Rückmeldung wäre Klasse, dann ändere ich den Flow im 1. Post wieder.

                      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.

                      F 1 Antwort Letzte Antwort
                      1
                      • mickymM mickym

                        @frank579 So nächste Version. ;) - Ist wieder etwas komplexer, aber ich hoffe jetzt passt es:

                        [
                           {
                               "id": "6e802f1553b18149",
                               "type": "subflow",
                               "name": "JSON or Obj to IOBroker",
                               "info": "# Creates an IOBroker tree\n\nThis node creates an IOBroker tree out of an Java-Object or JSON String.\n\nThe object tree will be created under 0_userdata.0\nIn addition to the JSON-String or Java Object as `msg.payload` it is necessary to specify a `msg.top` properity in addition to the msg-Object.\n\nThe object tree will be created under 0_userdata.0\n\nExisting `msg.topic` entries will be deleted.\nAn iobroker-out node has to be appended to this subflow node. It is not part of the subflow itself. No topic should be specified in the iobroker out node.\n\nIs `msg.top` property isn't defined, the `top` property of the subflow-node is used. \n\nIn the properties of the subflow node a new property `keepTopic` has been added. Default is _false_ to keep the current behaviour. If set to _true_ then the originial topic will be placed between the `top` property of the subflow node and the property of the analyzed JSON object.\n\n**Attention:**\nIf msg.top and top is empty, all msg.topics (msg.topic) will be directly prefixed with 0_userdata.0. . \n\n**Update 13.09.2022:**\nSpaces in topics of objects are no longer replaced with underscores in objects. No differences between all data types.\n\n# Erstellt einen Objektbaum im ioBroker\n\nDiese Node erstellt einen Objektbaum im ioBroker aus einem JAVA Objekt bzw. einem JSON String. \n\nDer Baum wird in jedem Fall unter 0_userdata.0 erstellt und zwar unter dem Topic der in` msg.top` mitgegeben wurde. In der `msg.payload` befindet sich dann der JSON String oder das entsprechende Objekt.\n\nExistierende `msg.topic `Einträge werden gelöscht.\nEin entsprechende iobroker-out Node muss an den Flow angehängt werden. Sie ist nicht Bestandteil des Subflows. In dieser iobroker-out Node darf kein Topic angegeben werden. \n\nFalls msg.top nicht definiert wurde, wird der `top`-Wert der Subflow-Node verwendet.\n\nIn den Eigenschaften der Subflow-Node wurde ein neuer Parameter `keepTopic` hinzugefügt. Standardwert ist _false_, um das bisherige Verhalten beizubehalten. Setzt man die Eigenschaft auf _true_, dann wird das originale Topic zwischen der `top` Eigenschaft der Subflow-Node und Eigenschaft des analysierten JSON Objektes eingefügt.\n\n**Achtung:**\nWenn top und msg.top leer ist, werden alle msg.topics (msg.topic) direkt unter dem Präfix 0_userdata.0., angelegt bzw. ausgegeben. \n\n**Update 13.09.2022:**\nLeerzeichen werden in Topics von Objekten nicht mehr durch Unterstriche ersetzt. Es gibt keine Unterschiede mehr zwischen den Datentypen.",
                               "category": "",
                               "in": [
                                   {
                                       "x": 60,
                                       "y": 160,
                                       "wires": [
                                           {
                                               "id": "554b8c663bcb46c2"
                                           }
                                       ]
                                   }
                               ],
                               "out": [
                                   {
                                       "x": 2620,
                                       "y": 280,
                                       "wires": [
                                           {
                                               "id": "0962842ebd23e0d7",
                                               "port": 0
                                           }
                                       ]
                                   }
                               ],
                               "env": [
                                   {
                                       "name": "top",
                                       "type": "str",
                                       "value": "objRoot"
                                   },
                                   {
                                       "name": "keepTopic",
                                       "type": "bool",
                                       "value": "false"
                                   }
                               ],
                               "meta": {},
                               "color": "#E2D96E",
                               "icon": "node-red/batch.svg"
                           },
                           {
                               "id": "3e11e8338f694832",
                               "type": "split",
                               "z": "6e802f1553b18149",
                               "name": "split object",
                               "splt": "\\n",
                               "spltType": "str",
                               "arraySplt": 1,
                               "arraySpltType": "len",
                               "stream": false,
                               "addname": "key",
                               "x": 1370,
                               "y": 160,
                               "wires": [
                                   [
                                       "0562a4249c8b856b"
                                   ]
                               ]
                           },
                           {
                               "id": "0562a4249c8b856b",
                               "type": "change",
                               "z": "6e802f1553b18149",
                               "name": "add key to topic",
                               "rules": [
                                   {
                                       "t": "set",
                                       "p": "stateName",
                                       "pt": "msg",
                                       "to": "key",
                                       "tot": "msg"
                                   },
                                   {
                                       "t": "set",
                                       "p": "topic",
                                       "pt": "msg",
                                       "to": "topic  & '.' & key",
                                       "tot": "jsonata"
                                   }
                               ],
                               "action": "",
                               "property": "",
                               "from": "",
                               "to": "",
                               "reg": false,
                               "x": 1560,
                               "y": 160,
                               "wires": [
                                   [
                                       "ddc90985bef0fafa"
                                   ]
                               ]
                           },
                           {
                               "id": "ddc90985bef0fafa",
                               "type": "switch",
                               "z": "6e802f1553b18149",
                               "name": "is type?",
                               "property": "payload",
                               "propertyType": "msg",
                               "rules": [
                                   {
                                       "t": "istype",
                                       "v": "array",
                                       "vt": "array"
                                   },
                                   {
                                       "t": "istype",
                                       "v": "object",
                                       "vt": "object"
                                   },
                                   {
                                       "t": "else"
                                   }
                               ],
                               "checkall": "true",
                               "repair": false,
                               "outputs": 3,
                               "x": 1740,
                               "y": 160,
                               "wires": [
                                   [
                                       "bfce19b206660fbe"
                                   ],
                                   [
                                       "3e11e8338f694832"
                                   ],
                                   [
                                       "1a8c03d866b85b12"
                                   ]
                               ]
                           },
                           {
                               "id": "bfce19b206660fbe",
                               "type": "split",
                               "z": "6e802f1553b18149",
                               "name": "split array",
                               "splt": "\\n",
                               "spltType": "str",
                               "arraySplt": 1,
                               "arraySpltType": "len",
                               "stream": false,
                               "addname": "",
                               "x": 780,
                               "y": 280,
                               "wires": [
                                   [
                                       "e89927810c6d75ec"
                                   ]
                               ]
                           },
                           {
                               "id": "e89927810c6d75ec",
                               "type": "change",
                               "z": "6e802f1553b18149",
                               "name": "add index to topic",
                               "rules": [
                                   {
                                       "t": "set",
                                       "p": "topic",
                                       "pt": "msg",
                                       "to": "topic  & '.' & parts.index",
                                       "tot": "jsonata"
                                   }
                               ],
                               "action": "",
                               "property": "",
                               "from": "",
                               "to": "",
                               "reg": false,
                               "x": 970,
                               "y": 280,
                               "wires": [
                                   [
                                       "a4d1a5d04564dc77"
                                   ]
                               ]
                           },
                           {
                               "id": "f5d52c6a57d08904",
                               "type": "change",
                               "z": "6e802f1553b18149",
                               "name": "finalize msg.topic",
                               "rules": [
                                   {
                                       "t": "set",
                                       "p": "top",
                                       "pt": "msg",
                                       "to": "'0_userdata.0.' & top",
                                       "tot": "jsonata"
                                   },
                                   {
                                       "t": "set",
                                       "p": "topic",
                                       "pt": "msg",
                                       "to": "top & '.' & topic",
                                       "tot": "jsonata"
                                   }
                               ],
                               "action": "",
                               "property": "",
                               "from": "",
                               "to": "",
                               "reg": false,
                               "x": 2170,
                               "y": 240,
                               "wires": [
                                   [
                                       "0962842ebd23e0d7"
                                   ]
                               ]
                           },
                           {
                               "id": "1a8c03d866b85b12",
                               "type": "switch",
                               "z": "6e802f1553b18149",
                               "name": "is msg.top != null",
                               "property": "top",
                               "propertyType": "msg",
                               "rules": [
                                   {
                                       "t": "nnull"
                                   },
                                   {
                                       "t": "null"
                                   }
                               ],
                               "checkall": "true",
                               "repair": false,
                               "outputs": 2,
                               "x": 1950,
                               "y": 280,
                               "wires": [
                                   [
                                       "f5d52c6a57d08904"
                                   ],
                                   [
                                       "74c895ce724750de"
                                   ]
                               ]
                           },
                           {
                               "id": "e023fe88445ce43e",
                               "type": "change",
                               "z": "6e802f1553b18149",
                               "name": "",
                               "rules": [
                                   {
                                       "t": "delete",
                                       "p": "topic",
                                       "pt": "msg"
                                   }
                               ],
                               "action": "",
                               "property": "",
                               "from": "",
                               "to": "",
                               "reg": false,
                               "x": 350,
                               "y": 200,
                               "wires": [
                                   [
                                       "3649300b4c233b10"
                                   ]
                               ]
                           },
                           {
                               "id": "3649300b4c233b10",
                               "type": "switch",
                               "z": "6e802f1553b18149",
                               "name": "is type?",
                               "property": "payload",
                               "propertyType": "msg",
                               "rules": [
                                   {
                                       "t": "istype",
                                       "v": "json",
                                       "vt": "json"
                                   },
                                   {
                                       "t": "istype",
                                       "v": "array",
                                       "vt": "array"
                                   },
                                   {
                                       "t": "istype",
                                       "v": "object",
                                       "vt": "object"
                                   },
                                   {
                                       "t": "else"
                                   }
                               ],
                               "checkall": "true",
                               "repair": false,
                               "outputs": 4,
                               "x": 600,
                               "y": 160,
                               "wires": [
                                   [
                                       "fc7913a8524badb7"
                                   ],
                                   [
                                       "bfce19b206660fbe"
                                   ],
                                   [
                                       "3e11e8338f694832"
                                   ],
                                   [
                                       "9ac3cc3681e8b6c6"
                                   ]
                               ]
                           },
                           {
                               "id": "1b8480cd2df7ba3f",
                               "type": "comment",
                               "z": "6e802f1553b18149",
                               "name": "Array",
                               "info": "",
                               "x": 600,
                               "y": 280,
                               "wires": []
                           },
                           {
                               "id": "b3541807672be040",
                               "type": "comment",
                               "z": "6e802f1553b18149",
                               "name": "object",
                               "info": "",
                               "x": 1340,
                               "y": 100,
                               "wires": []
                           },
                           {
                               "id": "a4d1a5d04564dc77",
                               "type": "switch",
                               "z": "6e802f1553b18149",
                               "name": "is type?",
                               "property": "payload",
                               "propertyType": "msg",
                               "rules": [
                                   {
                                       "t": "istype",
                                       "v": "object",
                                       "vt": "object"
                                   },
                                   {
                                       "t": "istype",
                                       "v": "array",
                                       "vt": "array"
                                   },
                                   {
                                       "t": "else"
                                   }
                               ],
                               "checkall": "true",
                               "repair": false,
                               "outputs": 3,
                               "x": 1160,
                               "y": 280,
                               "wires": [
                                   [
                                       "3e11e8338f694832"
                                   ],
                                   [
                                       "bfce19b206660fbe"
                                   ],
                                   [
                                       "a096a93bb82b7a93"
                                   ]
                               ]
                           },
                           {
                               "id": "74c895ce724750de",
                               "type": "change",
                               "z": "6e802f1553b18149",
                               "name": "finalize msg.topic",
                               "rules": [
                                   {
                                       "t": "set",
                                       "p": "top",
                                       "pt": "msg",
                                       "to": "top",
                                       "tot": "env"
                                   },
                                   {
                                       "t": "set",
                                       "p": "top",
                                       "pt": "msg",
                                       "to": "'0_userdata.0.' & top",
                                       "tot": "jsonata"
                                   },
                                   {
                                       "t": "set",
                                       "p": "topic",
                                       "pt": "msg",
                                       "to": "top & '.' & topic",
                                       "tot": "jsonata"
                                   }
                               ],
                               "action": "",
                               "property": "",
                               "from": "",
                               "to": "",
                               "reg": false,
                               "x": 2170,
                               "y": 320,
                               "wires": [
                                   [
                                       "0962842ebd23e0d7"
                                   ]
                               ]
                           },
                           {
                               "id": "554b8c663bcb46c2",
                               "type": "switch",
                               "z": "6e802f1553b18149",
                               "name": "",
                               "property": "keepTopic",
                               "propertyType": "env",
                               "rules": [
                                   {
                                       "t": "true"
                                   },
                                   {
                                       "t": "false"
                                   }
                               ],
                               "checkall": "true",
                               "repair": false,
                               "outputs": 2,
                               "x": 170,
                               "y": 160,
                               "wires": [
                                   [
                                       "e30ba9f0483285e4"
                                   ],
                                   [
                                       "e023fe88445ce43e"
                                   ]
                               ]
                           },
                           {
                               "id": "e30ba9f0483285e4",
                               "type": "change",
                               "z": "6e802f1553b18149",
                               "name": "",
                               "rules": [
                                   {
                                       "t": "change",
                                       "p": "topic",
                                       "pt": "msg",
                                       "from": "/",
                                       "fromt": "str",
                                       "to": ".",
                                       "tot": "str"
                                   }
                               ],
                               "action": "",
                               "property": "",
                               "from": "",
                               "to": "",
                               "reg": false,
                               "x": 350,
                               "y": 120,
                               "wires": [
                                   [
                                       "3649300b4c233b10"
                                   ]
                               ]
                           },
                           {
                               "id": "0962842ebd23e0d7",
                               "type": "change",
                               "z": "6e802f1553b18149",
                               "name": "translate invalid chars in topic",
                               "rules": [
                                   {
                                       "t": "change",
                                       "p": "topic",
                                       "pt": "msg",
                                       "from": "..",
                                       "fromt": "str",
                                       "to": ".",
                                       "tot": "str"
                                   },
                                   {
                                       "t": "change",
                                       "p": "topic",
                                       "pt": "msg",
                                       "from": "€",
                                       "fromt": "str",
                                       "to": "EUR",
                                       "tot": "str"
                                   }
                               ],
                               "action": "",
                               "property": "",
                               "from": "",
                               "to": "",
                               "reg": false,
                               "x": 2430,
                               "y": 280,
                               "wires": [
                                   []
                               ]
                           },
                           {
                               "id": "9ac3cc3681e8b6c6",
                               "type": "change",
                               "z": "6e802f1553b18149",
                               "name": "set topic, if empty",
                               "rules": [
                                   {
                                       "t": "set",
                                       "p": "topic",
                                       "pt": "msg",
                                       "to": "topic ? topic : $type(payload)\t",
                                       "tot": "jsonata"
                                   }
                               ],
                               "action": "",
                               "property": "",
                               "from": "",
                               "to": "",
                               "reg": false,
                               "x": 950,
                               "y": 200,
                               "wires": [
                                   [
                                       "a096a93bb82b7a93"
                                   ]
                               ]
                           },
                           {
                               "id": "fc7913a8524badb7",
                               "type": "json",
                               "z": "6e802f1553b18149",
                               "name": "",
                               "property": "payload",
                               "action": "obj",
                               "pretty": false,
                               "x": 750,
                               "y": 100,
                               "wires": [
                                   [
                                       "d9e7bdd4c48a8aa1"
                                   ]
                               ]
                           },
                           {
                               "id": "d9e7bdd4c48a8aa1",
                               "type": "switch",
                               "z": "6e802f1553b18149",
                               "name": "is type?",
                               "property": "payload",
                               "propertyType": "msg",
                               "rules": [
                                   {
                                       "t": "istype",
                                       "v": "array",
                                       "vt": "array"
                                   },
                                   {
                                       "t": "istype",
                                       "v": "object",
                                       "vt": "object"
                                   },
                                   {
                                       "t": "else"
                                   }
                               ],
                               "checkall": "true",
                               "repair": false,
                               "outputs": 3,
                               "x": 900,
                               "y": 100,
                               "wires": [
                                   [
                                       "1520be42bcc2145e"
                                   ],
                                   [
                                       "1520be42bcc2145e"
                                   ],
                                   [
                                       "9ac3cc3681e8b6c6"
                                   ]
                               ]
                           },
                           {
                               "id": "a096a93bb82b7a93",
                               "type": "junction",
                               "z": "6e802f1553b18149",
                               "x": 1380,
                               "y": 280,
                               "wires": [
                                   [
                                       "1a8c03d866b85b12"
                                   ]
                               ]
                           },
                           {
                               "id": "1520be42bcc2145e",
                               "type": "junction",
                               "z": "6e802f1553b18149",
                               "x": 480,
                               "y": 20,
                               "wires": [
                                   [
                                       "3649300b4c233b10"
                                   ]
                               ]
                           },
                           {
                               "id": "436b84bced4aeddd",
                               "type": "subflow:6e802f1553b18149",
                               "z": "393214410c8f2f15",
                               "name": "",
                               "x": 590,
                               "y": 840,
                               "wires": [
                                   [
                                       "624a03b2c28140de"
                                   ]
                               ]
                           }
                        ]
                        

                        Außerdem werden jetzt (!!!) wenn gar kein topic gesetzt ist, das topic gelöscht werden soll und von Anfang an skalare Werte übergeben werden, einfach als topic der Datentyp gesetzt. Damit sollte das mit dem . am Ende nicht mehr vorkommen. Das lag an skalaren Typen ohne topic.

                        6a1af9c8-a604-4ba1-800a-cb9b3d07a2a5-image.png

                        Ich hoffe passt jetzt.

                        @Frank579 - eine kurze Rückmeldung wäre Klasse, dann ändere ich den Flow im 1. Post wieder.

                        F Offline
                        F Offline
                        Frank579
                        schrieb am zuletzt editiert von
                        #81

                        @mickym
                        Auf den ersten Blick sieht alles gut aus, log bleibt sauber :)
                        Top Arbeit von dir :+1:

                        mickymM 1 Antwort Letzte Antwort
                        1
                        • F Frank579

                          @mickym
                          Auf den ersten Blick sieht alles gut aus, log bleibt sauber :)
                          Top Arbeit von dir :+1:

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

                          @frank579 Gut, dann übernehm ich diese Version mal in den ersten Post - Historie hab ich schon geändert.

                          Danke für Rückmeldung.

                          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 mickym

                            @noah3112 Das ist Deine mqtt-IN Node - da hast wahrscheinlich angegeben, dass es sich um ein analysiertes JSON Objekt handelt.

                            bc3bbca0-c313-4237-9707-082a99708bd3-image.png

                            Du musst das nur wieder auf String und Buffer umstellen - der Subflow wandelt Strings automatisch um. Das Problem mit der Analyse eines analysierten JSON Objektes der mqtt-In Node schmeisst den Fehler bei Analyse des Objekts bei normalen Strings. Ich hab das im Node Red Forum schon moniert und hoffe, dass es in der Version 3 behoben wird. Also einfach wieder auf String und Buffer umstellen.

                            Falls es Dich interessiert habe ich das Problem hier beschrieben.
                            https://discourse.nodered.org/t/improvement-of-mqtt-in-nodes/55445/17

                            Falls Du in anderen Situationen trotzdem die Funktion des analysierten JSON Objektes in Deiner mqtt-IN Node nutzen willst und aber auch teilweise Strings hast, dann kann man dass auch mit einer Catch NOde abfangen. In dem Fall kann aber der Subflow damit umgehen, da die erste Switch Node sogar den Typ JSON String kennt. ;)

                            Grundsätzlich kannst Du dich schon verlassen, welche Node einen Fehler verursacht:

                            f73f675a-df9b-4fc3-9a50-1c811db3e033-image.png

                            Also die Node "zigbee2mqtt to iobroker"

                            Also lange Rede - kurzer Sinn - einfach wieder auf Auto-Erkennung (string or buffer) umstellen.

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

                            @mickym sagte in JSON oder JavaScript Objekt in iobroker Datenpunkte zerlegen:

                            @noah3112 Das ist Deine mqtt-IN Node - da hast wahrscheinlich angegeben, dass es sich um ein analysiertes JSON Objekt handelt.

                            bc3bbca0-c313-4237-9707-082a99708bd3-image.png

                            Du musst das nur wieder auf String und Buffer umstellen - der Subflow wandelt Strings automatisch um. Das Problem mit der Analyse eines analysierten JSON Objektes der mqtt-In Node schmeisst den Fehler bei Analyse des Objekts bei normalen Strings. Ich hab das im Node Red Forum schon moniert und hoffe, dass es in der Version 3 behoben wird. Also einfach wieder auf String und Buffer umstellen.

                            Falls es Dich interessiert habe ich das Problem hier beschrieben.
                            https://discourse.nodered.org/t/improvement-of-mqtt-in-nodes/55445/17

                            Falls Du in anderen Situationen trotzdem die Funktion des analysierten JSON Objektes in Deiner mqtt-IN Node nutzen willst und aber auch teilweise Strings hast, dann kann man dass auch mit einer Catch NOde abfangen. In dem Fall kann aber der Subflow damit umgehen, da die erste Switch Node sogar den Typ JSON String kennt. ;)

                            Grundsätzlich kannst Du dich schon verlassen, welche Node einen Fehler verursacht:

                            f73f675a-df9b-4fc3-9a50-1c811db3e033-image.png

                            Also die Node "zigbee2mqtt to iobroker"

                            Also lange Rede - kurzer Sinn - einfach wieder auf Auto-Erkennung (string or buffer) umstellen.

                            Dieses Thema ist übrigens seit der neuest Node-Red Version (also NodeRed Adapter 4.0.0) nicht mehr relevant. Das JSON-Objekt wird nun auch bei Strings und skalaren Werten von der mqtt-IN Node richtig interpretiert:

                            61b8dcbd-57cf-464b-ba68-d46ab62b46d2-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 Online
                              mickymM Online
                              mickym
                              Most Active
                              schrieb am zuletzt editiert von
                              #84

                              So ich habe die Eingangsanleitung aktualisiert, damit man sich die Änderungen nicht alle aus dem Thread zusammensuchen muss. ;)

                              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.

                              W 2 Antworten Letzte Antwort
                              1
                              • mickymM mickym

                                So ich habe die Eingangsanleitung aktualisiert, damit man sich die Änderungen nicht alle aus dem Thread zusammensuchen muss. ;)

                                W Offline
                                W Offline
                                warp-it
                                schrieb am zuletzt editiert von
                                #85

                                @mickym said in JSON oder JavaScript Objekt in iobroker Datenpunkte zerlegen:

                                So ich habe die Eingangsanleitung aktualisiert, damit man sich die Änderungen nicht alle aus dem Thread zusammensuchen muss. ;)

                                Extrem cool, vielen Dank!

                                1 Antwort Letzte Antwort
                                0
                                • mickymM mickym

                                  So ich habe die Eingangsanleitung aktualisiert, damit man sich die Änderungen nicht alle aus dem Thread zusammensuchen muss. ;)

                                  W Offline
                                  W Offline
                                  warp-it
                                  schrieb am zuletzt editiert von
                                  #86

                                  @mickym

                                  Mit Deinem Subflow versuche ich per ModbusTCP Daten aus einer Huawei Photovoltaik einzulesen. Soweit funktioniert das auch, aber ich verstehe die Inhalte des entstehenden Array nicht:

                                  01cc401b-2e76-44c0-8769-b1c7e449a5b1-image.png
                                  0660b769-586f-455e-bdf6-b252c4617969-image.png

                                  37109-37110 sieht gut aus, teilt man den Wert durch 100 erhält man den korrekten Strom-Wert.
                                  Aus 37107-37108 hätte ich im Ziel-Array einen dreistelligen negativen Wert erwartet, aber nicht zwei Werte über 65000?

                                  Was raffe ich da wieder nicht? :wink:

                                  Viele Grüße
                                  Heinrich

                                  mickymM 1 Antwort Letzte Antwort
                                  0
                                  • W warp-it

                                    @mickym

                                    Mit Deinem Subflow versuche ich per ModbusTCP Daten aus einer Huawei Photovoltaik einzulesen. Soweit funktioniert das auch, aber ich verstehe die Inhalte des entstehenden Array nicht:

                                    01cc401b-2e76-44c0-8769-b1c7e449a5b1-image.png
                                    0660b769-586f-455e-bdf6-b252c4617969-image.png

                                    37109-37110 sieht gut aus, teilt man den Wert durch 100 erhält man den korrekten Strom-Wert.
                                    Aus 37107-37108 hätte ich im Ziel-Array einen dreistelligen negativen Wert erwartet, aber nicht zwei Werte über 65000?

                                    Was raffe ich da wieder nicht? :wink:

                                    Viele Grüße
                                    Heinrich

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

                                    @warp-it Ich denke da bist du in diesem Thread an der falschen Adresse. ;) - Der Subflow macht nichts anderes als ein Objekt zu zerlegen und in eigene Datenpunkte zu schreiben.

                                    In diesem Objekt sind die Werte ja schon enthalten:
                                    030f323a-bb6e-4772-a6e1-d770650d1dd2-image.png

                                    Und dieser Subflow macht nichts weiter als diese Daten auszusplitten. Wie Du auf die anderen Werte kommst, ist eine Modbus Geschichte.

                                    Aus 37107-37108 hätte ich im Ziel-Array einen dreistelligen negativen Wert erwartet, aber nicht zwei Werte über 65000?

                                    Sowas kann ich ja gar nicht nachvollziehen. Das würde ich in dem anderen Thread mit den Modbus Spezialisten diskutieren. Falls Du die Buffer Node nutzt, dann muss man halt mit den Daten schauen, was Du da rechnest.

                                    Dieser Flow - verändert grundsätzlich KEINE Originalwerte.

                                    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.

                                    W 1 Antwort Letzte Antwort
                                    0
                                    • mickymM mickym

                                      @warp-it Ich denke da bist du in diesem Thread an der falschen Adresse. ;) - Der Subflow macht nichts anderes als ein Objekt zu zerlegen und in eigene Datenpunkte zu schreiben.

                                      In diesem Objekt sind die Werte ja schon enthalten:
                                      030f323a-bb6e-4772-a6e1-d770650d1dd2-image.png

                                      Und dieser Subflow macht nichts weiter als diese Daten auszusplitten. Wie Du auf die anderen Werte kommst, ist eine Modbus Geschichte.

                                      Aus 37107-37108 hätte ich im Ziel-Array einen dreistelligen negativen Wert erwartet, aber nicht zwei Werte über 65000?

                                      Sowas kann ich ja gar nicht nachvollziehen. Das würde ich in dem anderen Thread mit den Modbus Spezialisten diskutieren. Falls Du die Buffer Node nutzt, dann muss man halt mit den Daten schauen, was Du da rechnest.

                                      Dieser Flow - verändert grundsätzlich KEINE Originalwerte.

                                      W Offline
                                      W Offline
                                      warp-it
                                      schrieb am zuletzt editiert von
                                      #88

                                      @mickym said in JSON oder JavaScript Objekt in iobroker Datenpunkte zerlegen:

                                      Der Subflow macht nichts anderes als ein Objekt zu zerlegen und in eigene Datenpunkte zu schreiben.

                                      In der alten Variante, in der die Felder einzeln ausgelesen werden, scheint aber auch nix gerechnet zu werden:

                                      0221234a-01f5-4c72-96aa-ff3ecf3fe7e3-image.png

                                      c212528b-2ebb-417b-bad3-63ca72f41b9d-image.png

                                      Naja, von der alten Variante wollte ich ja ursprünglich weg, weil wohl durch das gehäufte wiederholte Auslesen der einzelnen Felder haufenweise Logeinträge entstanden sind, die aber durch das von @joschipp empfohlene Update von node-red-contrib-modbus tatsächlich verschwunden sind.

                                      mickymM 1 Antwort Letzte Antwort
                                      0
                                      • W warp-it

                                        @mickym said in JSON oder JavaScript Objekt in iobroker Datenpunkte zerlegen:

                                        Der Subflow macht nichts anderes als ein Objekt zu zerlegen und in eigene Datenpunkte zu schreiben.

                                        In der alten Variante, in der die Felder einzeln ausgelesen werden, scheint aber auch nix gerechnet zu werden:

                                        0221234a-01f5-4c72-96aa-ff3ecf3fe7e3-image.png

                                        c212528b-2ebb-417b-bad3-63ca72f41b9d-image.png

                                        Naja, von der alten Variante wollte ich ja ursprünglich weg, weil wohl durch das gehäufte wiederholte Auslesen der einzelnen Felder haufenweise Logeinträge entstanden sind, die aber durch das von @joschipp empfohlene Update von node-red-contrib-modbus tatsächlich verschwunden sind.

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

                                        @warp-it Nun wie gesagt, wenn es der falsche 32bit Wert ist (be statt le) signed oder unsigned - kann ganz schnell eine komischen Wert erzeugen. Wie gesagt, dein Objekt enthielt ja bereits die 65xxx.

                                        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
                                        • H Offline
                                          H Offline
                                          harald07
                                          schrieb am zuletzt editiert von harald07
                                          #90

                                          @mickym Hallo und vielen Dank für das teilen Deines Wissen.

                                          Ich habe dein Beispiel zum Einlesen einer Ordnerstruktur aus dem ioBroker nach gebaut.
                                          545e4e74-c3ff-4535-9872-ce45360751fc-image.png

                                          Als Resultat erhalte ich diese Ausgabe:

                                          {
                                              "Dc.Power": -207.4,
                                              "InstalledCapacity": 1400,
                                              "ConsumedAmphours": -116,
                                              "Capacity": 1284,
                                              "Soc": 92.2,
                                              "TimeToGo": 768059.9,
                                              "Balancing": 0,
                                              "Dc.Voltage": 53.18,
                                              "Dc.Current": -3.9,
                                              "Dc.Temperature": 25.4,
                                              "Info.MaxChargeVoltage": 55.3,
                                              "Info.MaxChargeCurrent": 340,
                                              "Info.MaxDischargeCurrent": 425,
                                              "History.ChargeCycles": 46,
                                              "History.MinimumVoltage": 34.43,
                                              "History.MaximumVoltage": 58.77,
                                              "History.TotalAhDrawn": -60168.2,
                                              "System.MinVoltageCellId": "P4_Z2",
                                              "System.MinCellVoltage": 3.322,
                                              "System.MaxVoltageCellId": "P4_Z1",
                                              "System.MaxCellVoltage": 3.324,
                                              "System.NrOfModulesOnline": 5,
                                              "System.NrOfModulesOffline": 0,
                                              "System.NrOfModulesBlockingCharge": 0,
                                              "System.NrOfModulesBlockingDischarge": 0,
                                              "Io.AllowToCharge": 1,
                                              "Io.AllowToDischarge": 1,
                                              "Io.AllowToBalance": 1
                                          }
                                          

                                          Das json möchte per MQTT an an einen Treiber in VenusOS senden. Der Treiber erwartet die Daten in diesem Format:

                                          {
                                              "Dc": {
                                                  "Power": 321.6,                       
                                                  "Voltage": 52.7,                      
                                                  "Current": 6.10,                      
                                                  "Temperature": 23                     
                                              },
                                              "InstalledCapacity": 200.0,               
                                              "ConsumedAmphours": 74.5,                 
                                              "Capacity": 125.5,                        
                                              "Soc": 63,                                
                                              "TimeToGo": 43967,                        
                                              "Balancing": 0,
                                              "Info": {              
                                                  "MaxChargeVoltage": 55.2,             
                                                  "MaxChargeCurrent": 80.0,             
                                                  "MaxDischargeCurrent": 120.0          
                                              },
                                              "History": {
                                                  "ChargeCycles": 5,                    
                                                  "MinimumVoltage": 40.8,               
                                                  "MaximumVoltage": 58.4,               
                                                  "TotalAhDrawn": 1057.3                
                                              },
                                              "System": {
                                                  "MinVoltageCellId": "C3",             
                                                  "MinCellVoltage": 3.392,              
                                                  "MaxVoltageCellId": "C15",            
                                                  "MaxCellVoltage": 3.417,                            
                                          
                                                  "NrOfModulesOnline": 0,               
                                                  "NrOfModulesOffline": 0,              
                                          
                                                  "NrOfModulesBlockingCharge": 0,       
                                                  "NrOfModulesBlockingDischarge": 0     
                                              },
                                              "Io": {
                                                  "AllowToCharge": 0,                   
                                                  "AllowToDischarge": 0,                
                                                  "AllowToBalance": 0,                 
                                              }
                                          }
                                          

                                          Kannst Du mir sagen wie ich das hinbekommen könnte?

                                          Viele Grüße
                                          Harald

                                          Es ist schon Wahnsinn was mittlerweile alles geht.
                                          Ich habe inzwischen die Lösung von ChatGPT bekommen. ChatGPT hat einen Code ausgespuckt den ich nur noch in eine function Node kopieren brauchte.

                                          var inputJson = JSON.parse(msg.payload);
                                          
                                          var outputJson = {
                                              "Dc": {
                                                  "Power": inputJson["Dc.Power"],
                                                  "Voltage": inputJson["Dc.Voltage"],
                                                  "Current": inputJson["Dc.Current"],
                                                  "Temperature": inputJson["Dc.Temperature"]
                                              },
                                              "InstalledCapacity": inputJson["InstalledCapacity"],
                                              "ConsumedAmphours": inputJson["ConsumedAmphours"],
                                              "Capacity": inputJson["Capacity"],
                                              "Soc": inputJson["Soc"],
                                              "TimeToGo": inputJson["TimeToGo"],
                                              "Balancing": inputJson["Balancing"],
                                              "Info": {
                                                  "MaxChargeVoltage": inputJson["Info.MaxChargeVoltage"],
                                                  "MaxChargeCurrent": inputJson["Info.MaxChargeCurrent"],
                                                  "MaxDischargeCurrent": inputJson["Info.MaxDischargeCurrent"]
                                              },
                                              "History": {
                                                  "ChargeCycles": inputJson["History.ChargeCycles"],
                                                  "MinimumVoltage": inputJson["History.MinimumVoltage"],
                                                  "MaximumVoltage": inputJson["History.MaximumVoltage"],
                                                  "TotalAhDrawn": inputJson["History.TotalAhDrawn"]
                                              },
                                              "System": {
                                                  "MinVoltageCellId": inputJson["System.MinVoltageCellId"],
                                                  "MinCellVoltage": inputJson["System.MinCellVoltage"],
                                                  "MaxVoltageCellId": inputJson["System.MaxVoltageCellId"],
                                                  "MaxCellVoltage": inputJson["System.MaxCellVoltage"],
                                                  "NrOfModulesOnline": inputJson["System.NrOfModulesOnline"],
                                                  "NrOfModulesOffline": inputJson["System.NrOfModulesOffline"],
                                                  "NrOfModulesBlockingCharge": inputJson["System.NrOfModulesBlockingCharge"],
                                                  "NrOfModulesBlockingDischarge": inputJson["System.NrOfModulesBlockingDischarge"]
                                              },
                                              "Io": {
                                                  "AllowToCharge": inputJson["Io.AllowToCharge"],
                                                  "AllowToDischarge": inputJson["Io.AllowToDischarge"],
                                                  "AllowToBalance": inputJson["Io.AllowToBalance"]
                                              }
                                          };
                                          
                                          msg.payload = outputJson;
                                          return msg;
                                          

                                          Wahnsinn!!!

                                          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

                                          882

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          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