Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo
  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.2k

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

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

JSON oder JavaScript Objekt in iobroker Datenpunkte zerlegen

Scheduled Pinned Locked Moved Node-Red
node-red
114 Posts 13 Posters 26.3k Views 12 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • W Offline
    W Offline
    Waldmensch
    wrote on last edited by
    #14

    @mickym Ich habe gerade mal Deinen Subflow getestet. Der läuft soweit 1A. Ich schreibe damit das Objekt, was mein PV Speicher liefert. Was seltsam ist, ist, das mein Log mit warnings geflutet wird. Das scheint daran zu liegen, das die Datenpunkte readonly angelegt werden

    
    node-red.0
    2021-11-28 08:41:42.027	warn	Read-only state "0_userdata.0.Solarwatt.SData.ACS.U_L2" has been written without ack-flag with value "225"
    
    

    Man kann das umgehen, indem man in der Ouot-Node unten bei "Readonly" einstellt "Object is writable".

    iobroker.png

    mickymM 2 Replies Last reply
    0
    • W Waldmensch

      @mickym Ich habe gerade mal Deinen Subflow getestet. Der läuft soweit 1A. Ich schreibe damit das Objekt, was mein PV Speicher liefert. Was seltsam ist, ist, das mein Log mit warnings geflutet wird. Das scheint daran zu liegen, das die Datenpunkte readonly angelegt werden

      
      node-red.0
      2021-11-28 08:41:42.027	warn	Read-only state "0_userdata.0.Solarwatt.SData.ACS.U_L2" has been written without ack-flag with value "225"
      
      

      Man kann das umgehen, indem man in der Ouot-Node unten bei "Readonly" einstellt "Object is writable".

      iobroker.png

      mickymM Online
      mickymM Online
      mickym
      Most Active
      wrote on last edited by
      #15

      @waldmensch Ja das war mir bekannt - das sind alles Dinge seit dem admin5 - Du musst auch nachdem der Flow gelaufen ist, einmal das Skript von fastfoot drüber laufen lassen, damit die Objekte angelegt werden.

      Da das ganze ja in userdata geschrieben wird - kann man man anstelle es auf writeable zu setzen das ACK -Flag setzen, also anstelle von command - ein value setzen. Das sollte ebenfalls gehen:

      100f74bd-11d3-4a98-ab60-4a8d949e10fb-image.png

      Es ist generelle so, dass man mit den Einstellungen in der iobroker-out Node - die Prüfung dieser Nodes ausschaltet . Der Subflow hat damit eigentlich gar nichts zu tun, der spaltet die Objekte ja nur in Einzelnachrichten auf und setzt die topics. 😉

      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 Reply Last reply
      0
      • W Waldmensch

        @mickym Ich habe gerade mal Deinen Subflow getestet. Der läuft soweit 1A. Ich schreibe damit das Objekt, was mein PV Speicher liefert. Was seltsam ist, ist, das mein Log mit warnings geflutet wird. Das scheint daran zu liegen, das die Datenpunkte readonly angelegt werden

        
        node-red.0
        2021-11-28 08:41:42.027	warn	Read-only state "0_userdata.0.Solarwatt.SData.ACS.U_L2" has been written without ack-flag with value "225"
        
        

        Man kann das umgehen, indem man in der Ouot-Node unten bei "Readonly" einstellt "Object is writable".

        iobroker.png

        mickymM Online
        mickymM Online
        mickym
        Most Active
        wrote on last edited by mickym
        #16

        @waldmensch Generell muss man seit dem Admin5 - einmal auch immer noch das Skript von @fastfoot drüberlaufen lassen - das automatische Erstellen von Objekten im Admin5 lässt wohl auf sich warten.

        Also dieses Skript importieren - und einmal ausführen:

        /**
        * Zweck:       Korrigiert übergeordnete Ordnerstrukturen eines Datenpunkts
        * Datum:      07.08.2021
        * Autor:       @fastfoot
        */
        
        //              In den Settings der Javascript-Instanz muss setObject erlaubt sein!!!
        
        let arr = [],
          id = '';
        
        const ids = $('0_userdata.0.*');
        ids.each(idTmp => {
          arr=idTmp.split('.');
          arr.splice(arr.length-1);
          id=arr.join('.');
          if(arr[0] === '0_userdata' || arr[0] === 'alias' || arr[0] === 'mqtt' || arr[0] === 'javascript'){
              correctObject(id, arr);
          }
        })
        
        function correctObject(id,arr){
          if(arr.length === 2) return;
          if(!existsObject(id)){
              let obj = {};
              obj = {
                  type: 'folder',
                  common:{
                      name: arr[arr.length - 1]
                  }
              }
              extendObject(id, obj, e => {
                  if (e) log('Fehler beim Schreiben des Objektes: '+ id + ' ' + e);
              })
          }
          arr.splice(arr.length - 1);
          id = arr.join('.');
          correctObject(id, arr);
        }
        

        Muss man nur einmal machen - wenn die Objekte angelegt sind - kann der Flow ungehindert weiter in die einzelnen Datenpunkte schreiben.

        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 Reply Last reply
        0
        • mickymM mickym

          Wichtig:

          In der aktuellen NodeRed Version funktioniert alles wieder ohne Fehlermeldungen

          ===================================================================

          Nachdem hier wohl einige der Meinung sind, dass NodeRed auch noch ioBroker Strukturen von sich aus anlegen können sollte, obwohl es den ioBroker zu dem Zeitpunkt noch gar nicht gab, habe ich mal eine kleinen Subflow erstellt.

          Ähnliche Anforderungen wurden ja auch im Blockly oder Javascript Umfeld gestellt. Ich habe das ganze aber nicht lange durchgetestet, sodass ihr bitte diesen Subflow rein mal als Basis nehmen könnt und ggf. noch anpassen müsst.
          Inzwischen denke ich, kann man den Subflow bedenklos nutzen, da er bereits mehrfach seit über einem Jahr im Einsatz ist. 😉

          Der Objektbaum wird aus einem JSON-String oder einem JS Objekt gebildet. Es kann als topic für den Objektbaum ein Name in der Eigenschaft msg.top mit gegeben werden, dann wird dieser Datenpunkt als Wurzel unter 0_userdata.0.top mit dem im Objekt oder JSON-String zugehörigen Objekten angelegt oder er wird direkt in der Subflow Node unter top definiert. Wenn man nichts eingibt, dann werden alle Datenpunkte unter 0_userdata.0.objRoot angelegt:
          1b645fde-f1e8-4d68-8c3b-49b516ccd4ad-image.png

          Das Keep-Topic kann man dann auf true setzen, wenn man ganze Bäume also mit Wildcards über mqtt- einliest:
          Siehe dieses Posting anhand eines Zigbee2mqtt baums: https://forum.iobroker.net/post/820702
          ef66f891-ee41-4534-9910-4377629fd11c-image.png

          Voraussetzung hierfür ist natürlich, dass man Node-Red die Erlaubnis erteilt selbstständig Objekte anlegen zu dürfen.

          In der Adapterkonfiguration des Node-Red Adapters also die Option:
          a3d0a5c9-2fdc-424e-b410-fc30dae075b8-image.png

          aktivieren.

          Hier der Import:

          Hier den Subflow zum Importieren:

          [
              {
                  "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": "change",
                          "p": "key",
                          "pt": "msg",
                          "from": ".",
                          "fromt": "str",
                          "to": "_",
                          "tot": "str"
                      },
                      {
                          "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": "8d36fab85a67b5f5",
                  "type": "subflow:6e802f1553b18149",
                  "z": "7e6af0015415146d",
                  "name": "",
                  "x": 550,
                  "y": 3860,
                  "wires": [
                      []
                  ]
              }
          ]
          

          Hier wieder der Hilfetext zur Node:

          cb9a4eb3-185e-49fd-87d0-adf31fb8f291-image.png

          EDIT: Den Testflow habe ich rausgenommen, da er die alte Node enthielt. Kann man aber auch anhand des Screenshots erkennen.

          EDIT 7.4.2021: So hab den Subflow nochmal geändert, da bei Übergabe eines reinen Arrays - der Flow nicht richtig funktioniert hat. Ausserdem habe ich mal den Subflow durch Beschreibung der Nodes besser dokumentiert.

          EDIT 8.4.2021: Für einfache Arrays (die keine Objekte enthielten), hat der Flow noch nicht funktioniert. Nun wurde dies behoben und auch skalare - also auch Input, der kein Objekt enthält wird auf 0_userdata.0.{{msg.top}} durchgereicht. Die Beispiele werden in einem eigenen Post dargestellt.

          EDIT 7.12.2021: Anstelle von msg.top kann man den Startpunkt für den Objektbaum nun auch direkt in der Node angeben:
          b0ca565a-7cc3-43d1-a87e-21c4198d5f8d-image.png

          Ist msg.top leer werden alle states direkt unter 0_userdata.0 angelegt.

          EDIT 14.6.2022: Ein neue Eigenschaft wurde der Subflow-Node hinzugefügt: keepTopic

          Damit kann man die bisherigen Topic behalten und mit Wildcards arbeiten und somit ganze Objektbäume im iobroker erstellen:

          e3c0bf54-096e-4d01-a4f1-5c366352bc50-image.png

          Ein Beispiel gibts im Posting vom heutigen Datum also dem 14.6.2022.

          EDIT 13.9.2022:

          Leerzeichen in den topics werden nicht mehr bei Objekten ersetzt und somit erfolgt keine Ungleichbehandlung zwischen Objekten und anderen Datentypen. Das hat ansonsten zur Mehrfachanlage der Topics geführt.

          EDIT 01.11.2022:
          Weitere Fehlerbehebungen. Wenn skalare Objekte zu Beginn gesendet wurden und das Topic nicht übernommen werden sollte, oder gar nicht vorhanden war, dann entstanden topics mit einem Punkt am Ende. Das wurde nun behoben. Das bedeutet jedoch andererseits, dass skalare Werte nicht mehr direkt in den top Datenpunkt geschrieben werden, sondern als Wert mit der Bezeichnung ihres Datentyps. "Hello World" als String, wird deshalb als Wert mit Namen "string" ausgegeben - Ausnahme ist, natürlich wenn die topics erhalten bleiben (keepTopic = true)

          EDIT 22.05.2023:
          Objekteigenschaften mit Punkten können im iobroker nicht als topic bzw. state erstellt werden. Deshalb werden alle Punkte in Objekteigenschaften durch Unterstriche ersetzt. Also "Wohnzi." wird zu "Wohnzi_".

          =============================================================================================================================

          Für alle die, die Node bereits benutzen - wie folgt vorgehen.

          1. Den Code normal in die Zwischenablage kopieren und dann importieren.
          2. Da das System erkennst, dass es diesen Subflow/Nodes bereits gibt - bitte auf "Zeige Nodes ... " gehen.

          07910a9e-986e-4d20-aa8a-694cf1a0a62e-image.png

          1. Anschließend braucht man nur den Subflow ersetzen.

          0861d7e5-b997-4960-b83c-309033d5015b-image.png

          1. Nach dem man auf "Importiere Auswahl" geklickt hat, wird einem angezeigt, wieviele Nodes ersetzt wurden. Dann noch auf Deploy.

          =============================================================================================================================

          Anwendungsbeispiele und Flows:

          befc4a14-483d-43fc-b4a5-23fefaf0fa09-image.png

          Nun zu den einzelnen Inputs in den Inject-Nodes:

          1. Example.SimpleArray

          [1,5,6.2,2,3]
          

          fd24d6d6-0979-4160-a519-8e1c973cf897-image.png
          Ergebnis

          309b4092-119c-4d58-b807-f868f9c7b637-image.png

          2. Example.ComplexArray

          [1,2,[3,4,5],{"Leaving":"288.700000","Returning":"24.900000"}]
          

          020f93df-4c30-4fab-8596-380ca60051cd-image.png
          Ergebnis

          1d21885e-c2e4-4d5c-a56c-1054d97cfad1-image.png

          3. Skalar (Input ist kein Objekt)

          d0f5c66f-ff51-4931-b5d2-2cf6f2b713a0-image.png

          Ergebnis

          cad2b586-de06-4303-a705-6a79709f779d-image.png

          4. Objekt:

          {"Präsenz Wohnzimmer Essbereich":true,"Präsenz Bad":true,"Präsenz Schlafzimmer":true,"Thermometer Bad":true,"Präsenz Flur":true,"Würfel Wohnzimmer":{"1":"TV"},"Präsenz Küche":true,"Würfel Schlafzimmer":true,"Thermometer Küche":true,"Präsenz Diele":true,"Präsenz Wohnzimmer":true,"Präsenz Büro":true}
          

          89c6e1d7-b5f0-4dab-b137-b5775b4781ec-image.png
          Ergebnis:

          704546f2-3b16-4b2d-94d4-e4836c03550c-image.png

          5. ObjectArray:

          [
              {
                  "start": 45,
                  "end": 100,
                  "date": "24.3.2021 18:44",
                  "diff": 1,
                  "quantity": 0,
                  "price": "0.00",
                  "basicPrice": 0,
                  "startDate": "24.3.2021 18:44",
                  "duration": 1,
                  "perHour": 0
              },
              {
                  "start": 51,
                  "end": 52,
                  "date": "24.3.2021 15:59",
                  "diff": 3,
                  "quantity": 0,
                  "price": "0.00",
                  "basicPrice": 0,
                  "startDate": "24.3.2021 15:57",
                  "duration": 3,
                  "perHour": 0
              },
              {
                  "start": 59,
                  "end": 100,
                  "date": "24.2.2021 14:27",
                  "diff": 29,
                  "quantity": 0,
                  "price": "0.00",
                  "basicPrice": 0,
                  "startDate": "24.2.2021 13:59",
                  "duration": 29,
                  "perHour": 0
              }
          ]
          

          d2fe3518-677f-4ed1-864d-674c7806a35b-image.png

          Ergebnis:

          586d1ec2-d51c-4b58-97ba-8aa0c2bc370b-image.png

          6. JSON-String

          {"squadName":"Super hero squad","homeTown":"Metro City","formed":2016,"secretBase":"Super tower","active":true,"members":[{"name":"Molecule Man","age":29,"secretIdentity":"Dan Jukes","powers":["Radiation resistance","Turning tiny","Radiation blast"],"dressed":{"head":"Kopfbedeckung"}},{"name":"Madame Uppercut","age":69,"secretIdentity":"Jane Wilson","powers":["Million tonne punch","Damage resistance","Superhuman reflexes"]},{"name":"Eternal Flame","age":1000000,"secretIdentity":"Unknown","powers":["Immortality","Heat Immunity","Inferno","Teleportation","Interdimensional travel"]}]}
          

          4ae85b8b-85bf-4513-b701-6bdf1147808e-image.png
          Ergebnis:

          6e21154f-c8ce-4477-9633-926d2af2ebf1-image.png

          mickymM Online
          mickymM Online
          mickym
          Most Active
          wrote on last edited by
          #17

          @mickym So ich habe die Node nochmals leicht überarbeitet. Die Bedeutung ist leider mit dem Admin 5 etwas verloren gegangen und man hat auch in den letzten 4 Monaten anscheinend immer noch keine Zeit gehabt den Admin oder NodeRed so anzupassen, dass ggf. Objekte selbst erstellt werden. Dennoch ist der Flow vielleicht noch hilfreich.

          Die Node setzt nun nicht mehr zwingend das Füttern der Node mit msg.top voraus, um den Ausgangsdatenpunkt (objRoot) für den zu erstellenden Objektbaum festzulegen, sondern die Node kann nun auch mit Umgebungsvaribalen arbeiten. Endlich mal ein sinnvoller Einsatz für Umgebungsvariablen in Subflows. 😉

          43d96699-8c8e-4c99-a76e-c7131fd930a4-image.png

          Das heißt man kann nun direkt in der Node den Startpunkt eingeben. msg.top funktioniert aber weiterhin.

          [
             {
                 "id": "c3403a60.92fbb8",
                 "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-value of the node (environment variable top) is used. \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# 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 (Umgebungsvariable top) der Node verwendet. <br>\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. ",
                 "category": "parser",
                 "in": [
                     {
                         "x": 60,
                         "y": 160,
                         "wires": [
                             {
                                 "id": "94876630.f71748"
                             }
                         ]
                     }
                 ],
                 "out": [
                     {
                         "x": 2120,
                         "y": 280,
                         "wires": [
                             {
                                 "id": "74b0b536.02371c",
                                 "port": 0
                             },
                             {
                                 "id": "ad539a91.237888",
                                 "port": 0
                             }
                         ]
                     }
                 ],
                 "env": [
                     {
                         "name": "top",
                         "type": "str",
                         "value": "objRoot"
                     }
                 ],
                 "meta": {},
                 "color": "#E2D96E",
                 "icon": "node-red/batch.svg"
             },
             {
                 "id": "eea737e7.7e8fb8",
                 "type": "split",
                 "z": "c3403a60.92fbb8",
                 "name": "split object",
                 "splt": "\\n",
                 "spltType": "str",
                 "arraySplt": 1,
                 "arraySpltType": "len",
                 "stream": false,
                 "addname": "key",
                 "x": 1170,
                 "y": 160,
                 "wires": [
                     [
                         "dc473616.c2b508"
                     ]
                 ]
             },
             {
                 "id": "dc473616.c2b508",
                 "type": "change",
                 "z": "c3403a60.92fbb8",
                 "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"
                     },
                     {
                         "t": "change",
                         "p": "topic",
                         "pt": "msg",
                         "from": " ",
                         "fromt": "str",
                         "to": "_",
                         "tot": "str"
                     }
                 ],
                 "action": "",
                 "property": "",
                 "from": "",
                 "to": "",
                 "reg": false,
                 "x": 1360,
                 "y": 160,
                 "wires": [
                     [
                         "78697695.9a72c8"
                     ]
                 ]
             },
             {
                 "id": "78697695.9a72c8",
                 "type": "switch",
                 "z": "c3403a60.92fbb8",
                 "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": 1540,
                 "y": 160,
                 "wires": [
                     [
                         "d839cef8.577f1"
                     ],
                     [
                         "eea737e7.7e8fb8"
                     ],
                     [
                         "bdfdae99.f4d9d"
                     ]
                 ]
             },
             {
                 "id": "d839cef8.577f1",
                 "type": "split",
                 "z": "c3403a60.92fbb8",
                 "name": "split array",
                 "splt": "\\n",
                 "spltType": "str",
                 "arraySplt": 1,
                 "arraySpltType": "len",
                 "stream": false,
                 "addname": "",
                 "x": 580,
                 "y": 280,
                 "wires": [
                     [
                         "36327f2d.8efc3"
                     ]
                 ]
             },
             {
                 "id": "36327f2d.8efc3",
                 "type": "change",
                 "z": "c3403a60.92fbb8",
                 "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": 770,
                 "y": 280,
                 "wires": [
                     [
                         "d8f58d9b.b6a1"
                     ]
                 ]
             },
             {
                 "id": "74b0b536.02371c",
                 "type": "change",
                 "z": "c3403a60.92fbb8",
                 "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"
                     },
                     {
                         "t": "change",
                         "p": "topic",
                         "pt": "msg",
                         "from": "..",
                         "fromt": "str",
                         "to": ".",
                         "tot": "str"
                     }
                 ],
                 "action": "",
                 "property": "",
                 "from": "",
                 "to": "",
                 "reg": false,
                 "x": 1970,
                 "y": 240,
                 "wires": [
                     []
                 ]
             },
             {
                 "id": "4cdee7cb.910c38",
                 "type": "switch",
                 "z": "c3403a60.92fbb8",
                 "name": "is type?",
                 "property": "payload",
                 "propertyType": "msg",
                 "rules": [
                     {
                         "t": "istype",
                         "v": "json",
                         "vt": "json"
                     },
                     {
                         "t": "istype",
                         "v": "object",
                         "vt": "object"
                     },
                     {
                         "t": "istype",
                         "v": "array",
                         "vt": "array"
                     },
                     {
                         "t": "else"
                     }
                 ],
                 "checkall": "true",
                 "repair": false,
                 "outputs": 4,
                 "x": 400,
                 "y": 160,
                 "wires": [
                     [
                         "c1c41535.17d3b8"
                     ],
                     [
                         "eea737e7.7e8fb8"
                     ],
                     [
                         "d839cef8.577f1"
                     ],
                     [
                         "d8f58d9b.b6a1"
                     ]
                 ]
             },
             {
                 "id": "c1c41535.17d3b8",
                 "type": "json",
                 "z": "c3403a60.92fbb8",
                 "name": "",
                 "property": "payload",
                 "action": "",
                 "pretty": false,
                 "x": 570,
                 "y": 120,
                 "wires": [
                     [
                         "3ccd67db.375058"
                     ]
                 ]
             },
             {
                 "id": "bdfdae99.f4d9d",
                 "type": "switch",
                 "z": "c3403a60.92fbb8",
                 "name": "is msg.top != null",
                 "property": "top",
                 "propertyType": "msg",
                 "rules": [
                     {
                         "t": "nnull"
                     },
                     {
                         "t": "null"
                     }
                 ],
                 "checkall": "true",
                 "repair": false,
                 "outputs": 2,
                 "x": 1750,
                 "y": 280,
                 "wires": [
                     [
                         "74b0b536.02371c"
                     ],
                     [
                         "ad539a91.237888"
                     ]
                 ]
             },
             {
                 "id": "94876630.f71748",
                 "type": "change",
                 "z": "c3403a60.92fbb8",
                 "name": "",
                 "rules": [
                     {
                         "t": "delete",
                         "p": "topic",
                         "pt": "msg"
                     }
                 ],
                 "action": "",
                 "property": "",
                 "from": "",
                 "to": "",
                 "reg": false,
                 "x": 210,
                 "y": 160,
                 "wires": [
                     [
                         "4cdee7cb.910c38"
                     ]
                 ]
             },
             {
                 "id": "3ccd67db.375058",
                 "type": "switch",
                 "z": "c3403a60.92fbb8",
                 "name": "is array?",
                 "property": "payload",
                 "propertyType": "msg",
                 "rules": [
                     {
                         "t": "istype",
                         "v": "array",
                         "vt": "array"
                     },
                     {
                         "t": "else"
                     }
                 ],
                 "checkall": "true",
                 "repair": false,
                 "outputs": 2,
                 "x": 700,
                 "y": 120,
                 "wires": [
                     [
                         "d839cef8.577f1"
                     ],
                     [
                         "eea737e7.7e8fb8"
                     ]
                 ]
             },
             {
                 "id": "80dde279.c28ec",
                 "type": "comment",
                 "z": "c3403a60.92fbb8",
                 "name": "Array",
                 "info": "",
                 "x": 400,
                 "y": 280,
                 "wires": []
             },
             {
                 "id": "95ee816e.68a16",
                 "type": "comment",
                 "z": "c3403a60.92fbb8",
                 "name": "object",
                 "info": "",
                 "x": 1140,
                 "y": 100,
                 "wires": []
             },
             {
                 "id": "d8f58d9b.b6a1",
                 "type": "switch",
                 "z": "c3403a60.92fbb8",
                 "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": 960,
                 "y": 280,
                 "wires": [
                     [
                         "eea737e7.7e8fb8"
                     ],
                     [
                         "d839cef8.577f1"
                     ],
                     [
                         "bdfdae99.f4d9d"
                     ]
                 ]
             },
             {
                 "id": "ad539a91.237888",
                 "type": "change",
                 "z": "c3403a60.92fbb8",
                 "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"
                     },
                     {
                         "t": "change",
                         "p": "topic",
                         "pt": "msg",
                         "from": "..",
                         "fromt": "str",
                         "to": ".",
                         "tot": "str"
                     }
                 ],
                 "action": "",
                 "property": "",
                 "from": "",
                 "to": "",
                 "reg": false,
                 "x": 1970,
                 "y": 320,
                 "wires": [
                     []
                 ]
             },
             {
                 "id": "eaa55be.3b517a8",
                 "type": "subflow:c3403a60.92fbb8",
                 "z": "73f6b143.7ca56",
                 "name": "",
                 "env": [],
                 "x": 270,
                 "y": 520,
                 "wires": [
                     []
                 ]
             }
          ]
          

          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.

          WalW 1 Reply Last reply
          0
          • mickymM mickym

            @mickym So ich habe die Node nochmals leicht überarbeitet. Die Bedeutung ist leider mit dem Admin 5 etwas verloren gegangen und man hat auch in den letzten 4 Monaten anscheinend immer noch keine Zeit gehabt den Admin oder NodeRed so anzupassen, dass ggf. Objekte selbst erstellt werden. Dennoch ist der Flow vielleicht noch hilfreich.

            Die Node setzt nun nicht mehr zwingend das Füttern der Node mit msg.top voraus, um den Ausgangsdatenpunkt (objRoot) für den zu erstellenden Objektbaum festzulegen, sondern die Node kann nun auch mit Umgebungsvaribalen arbeiten. Endlich mal ein sinnvoller Einsatz für Umgebungsvariablen in Subflows. 😉

            43d96699-8c8e-4c99-a76e-c7131fd930a4-image.png

            Das heißt man kann nun direkt in der Node den Startpunkt eingeben. msg.top funktioniert aber weiterhin.

            [
               {
                   "id": "c3403a60.92fbb8",
                   "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-value of the node (environment variable top) is used. \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# 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 (Umgebungsvariable top) der Node verwendet. <br>\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. ",
                   "category": "parser",
                   "in": [
                       {
                           "x": 60,
                           "y": 160,
                           "wires": [
                               {
                                   "id": "94876630.f71748"
                               }
                           ]
                       }
                   ],
                   "out": [
                       {
                           "x": 2120,
                           "y": 280,
                           "wires": [
                               {
                                   "id": "74b0b536.02371c",
                                   "port": 0
                               },
                               {
                                   "id": "ad539a91.237888",
                                   "port": 0
                               }
                           ]
                       }
                   ],
                   "env": [
                       {
                           "name": "top",
                           "type": "str",
                           "value": "objRoot"
                       }
                   ],
                   "meta": {},
                   "color": "#E2D96E",
                   "icon": "node-red/batch.svg"
               },
               {
                   "id": "eea737e7.7e8fb8",
                   "type": "split",
                   "z": "c3403a60.92fbb8",
                   "name": "split object",
                   "splt": "\\n",
                   "spltType": "str",
                   "arraySplt": 1,
                   "arraySpltType": "len",
                   "stream": false,
                   "addname": "key",
                   "x": 1170,
                   "y": 160,
                   "wires": [
                       [
                           "dc473616.c2b508"
                       ]
                   ]
               },
               {
                   "id": "dc473616.c2b508",
                   "type": "change",
                   "z": "c3403a60.92fbb8",
                   "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"
                       },
                       {
                           "t": "change",
                           "p": "topic",
                           "pt": "msg",
                           "from": " ",
                           "fromt": "str",
                           "to": "_",
                           "tot": "str"
                       }
                   ],
                   "action": "",
                   "property": "",
                   "from": "",
                   "to": "",
                   "reg": false,
                   "x": 1360,
                   "y": 160,
                   "wires": [
                       [
                           "78697695.9a72c8"
                       ]
                   ]
               },
               {
                   "id": "78697695.9a72c8",
                   "type": "switch",
                   "z": "c3403a60.92fbb8",
                   "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": 1540,
                   "y": 160,
                   "wires": [
                       [
                           "d839cef8.577f1"
                       ],
                       [
                           "eea737e7.7e8fb8"
                       ],
                       [
                           "bdfdae99.f4d9d"
                       ]
                   ]
               },
               {
                   "id": "d839cef8.577f1",
                   "type": "split",
                   "z": "c3403a60.92fbb8",
                   "name": "split array",
                   "splt": "\\n",
                   "spltType": "str",
                   "arraySplt": 1,
                   "arraySpltType": "len",
                   "stream": false,
                   "addname": "",
                   "x": 580,
                   "y": 280,
                   "wires": [
                       [
                           "36327f2d.8efc3"
                       ]
                   ]
               },
               {
                   "id": "36327f2d.8efc3",
                   "type": "change",
                   "z": "c3403a60.92fbb8",
                   "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": 770,
                   "y": 280,
                   "wires": [
                       [
                           "d8f58d9b.b6a1"
                       ]
                   ]
               },
               {
                   "id": "74b0b536.02371c",
                   "type": "change",
                   "z": "c3403a60.92fbb8",
                   "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"
                       },
                       {
                           "t": "change",
                           "p": "topic",
                           "pt": "msg",
                           "from": "..",
                           "fromt": "str",
                           "to": ".",
                           "tot": "str"
                       }
                   ],
                   "action": "",
                   "property": "",
                   "from": "",
                   "to": "",
                   "reg": false,
                   "x": 1970,
                   "y": 240,
                   "wires": [
                       []
                   ]
               },
               {
                   "id": "4cdee7cb.910c38",
                   "type": "switch",
                   "z": "c3403a60.92fbb8",
                   "name": "is type?",
                   "property": "payload",
                   "propertyType": "msg",
                   "rules": [
                       {
                           "t": "istype",
                           "v": "json",
                           "vt": "json"
                       },
                       {
                           "t": "istype",
                           "v": "object",
                           "vt": "object"
                       },
                       {
                           "t": "istype",
                           "v": "array",
                           "vt": "array"
                       },
                       {
                           "t": "else"
                       }
                   ],
                   "checkall": "true",
                   "repair": false,
                   "outputs": 4,
                   "x": 400,
                   "y": 160,
                   "wires": [
                       [
                           "c1c41535.17d3b8"
                       ],
                       [
                           "eea737e7.7e8fb8"
                       ],
                       [
                           "d839cef8.577f1"
                       ],
                       [
                           "d8f58d9b.b6a1"
                       ]
                   ]
               },
               {
                   "id": "c1c41535.17d3b8",
                   "type": "json",
                   "z": "c3403a60.92fbb8",
                   "name": "",
                   "property": "payload",
                   "action": "",
                   "pretty": false,
                   "x": 570,
                   "y": 120,
                   "wires": [
                       [
                           "3ccd67db.375058"
                       ]
                   ]
               },
               {
                   "id": "bdfdae99.f4d9d",
                   "type": "switch",
                   "z": "c3403a60.92fbb8",
                   "name": "is msg.top != null",
                   "property": "top",
                   "propertyType": "msg",
                   "rules": [
                       {
                           "t": "nnull"
                       },
                       {
                           "t": "null"
                       }
                   ],
                   "checkall": "true",
                   "repair": false,
                   "outputs": 2,
                   "x": 1750,
                   "y": 280,
                   "wires": [
                       [
                           "74b0b536.02371c"
                       ],
                       [
                           "ad539a91.237888"
                       ]
                   ]
               },
               {
                   "id": "94876630.f71748",
                   "type": "change",
                   "z": "c3403a60.92fbb8",
                   "name": "",
                   "rules": [
                       {
                           "t": "delete",
                           "p": "topic",
                           "pt": "msg"
                       }
                   ],
                   "action": "",
                   "property": "",
                   "from": "",
                   "to": "",
                   "reg": false,
                   "x": 210,
                   "y": 160,
                   "wires": [
                       [
                           "4cdee7cb.910c38"
                       ]
                   ]
               },
               {
                   "id": "3ccd67db.375058",
                   "type": "switch",
                   "z": "c3403a60.92fbb8",
                   "name": "is array?",
                   "property": "payload",
                   "propertyType": "msg",
                   "rules": [
                       {
                           "t": "istype",
                           "v": "array",
                           "vt": "array"
                       },
                       {
                           "t": "else"
                       }
                   ],
                   "checkall": "true",
                   "repair": false,
                   "outputs": 2,
                   "x": 700,
                   "y": 120,
                   "wires": [
                       [
                           "d839cef8.577f1"
                       ],
                       [
                           "eea737e7.7e8fb8"
                       ]
                   ]
               },
               {
                   "id": "80dde279.c28ec",
                   "type": "comment",
                   "z": "c3403a60.92fbb8",
                   "name": "Array",
                   "info": "",
                   "x": 400,
                   "y": 280,
                   "wires": []
               },
               {
                   "id": "95ee816e.68a16",
                   "type": "comment",
                   "z": "c3403a60.92fbb8",
                   "name": "object",
                   "info": "",
                   "x": 1140,
                   "y": 100,
                   "wires": []
               },
               {
                   "id": "d8f58d9b.b6a1",
                   "type": "switch",
                   "z": "c3403a60.92fbb8",
                   "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": 960,
                   "y": 280,
                   "wires": [
                       [
                           "eea737e7.7e8fb8"
                       ],
                       [
                           "d839cef8.577f1"
                       ],
                       [
                           "bdfdae99.f4d9d"
                       ]
                   ]
               },
               {
                   "id": "ad539a91.237888",
                   "type": "change",
                   "z": "c3403a60.92fbb8",
                   "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"
                       },
                       {
                           "t": "change",
                           "p": "topic",
                           "pt": "msg",
                           "from": "..",
                           "fromt": "str",
                           "to": ".",
                           "tot": "str"
                       }
                   ],
                   "action": "",
                   "property": "",
                   "from": "",
                   "to": "",
                   "reg": false,
                   "x": 1970,
                   "y": 320,
                   "wires": [
                       []
                   ]
               },
               {
                   "id": "eaa55be.3b517a8",
                   "type": "subflow:c3403a60.92fbb8",
                   "z": "73f6b143.7ca56",
                   "name": "",
                   "env": [],
                   "x": 270,
                   "y": 520,
                   "wires": [
                       []
                   ]
               }
            ]
            

            WalW Online
            WalW Online
            Wal
            Developer
            wrote on last edited by
            #18

            @mickym ,
            danke das funktioniert mit dem LibreHardwareMonitor sehr gut.
            Objekte werden jetzt selbst erstellt.

            Gruß
            Walter

            DoorIO-Adapter
            wioBrowser-Adapter und wioBrowser

            Bernd1967B 1 Reply Last reply
            0
            • WalW Wal

              @mickym ,
              danke das funktioniert mit dem LibreHardwareMonitor sehr gut.
              Objekte werden jetzt selbst erstellt.

              Bernd1967B Offline
              Bernd1967B Offline
              Bernd1967
              wrote on last edited by Bernd1967
              #19

              @mickym
              Danke für dein Subflow, kann ich auch gerade sehr gut gebrauchen.

              Ich hab allerdings Schwierigkeiten die Daten in einen Json String zurück zu konvertieren.
              Hab es oben wie Du mit der Tasmota Steckdose es gemacht hast nachgebaut, nur mit einem anderen Pfad.
              Aber das klappt nicht, ich nehme an das es am Change Node liegt und dort bei den Regulären Ausdruck ?
              Ich möchte ganz einfach das was im IOBroker Pfad untet "0_userdata.0.objRoot" vorhanden ist als Datei speichern.

              Unbenannt.jpg

              1.jpg

              Struktur im IOBroker:
              2.jpg

              Ergebnis:
              {"version":3,"devices.554-6546532-36565-654654.Test":""}

              mickymM 1 Reply Last reply
              0
              • Bernd1967B Bernd1967

                @mickym
                Danke für dein Subflow, kann ich auch gerade sehr gut gebrauchen.

                Ich hab allerdings Schwierigkeiten die Daten in einen Json String zurück zu konvertieren.
                Hab es oben wie Du mit der Tasmota Steckdose es gemacht hast nachgebaut, nur mit einem anderen Pfad.
                Aber das klappt nicht, ich nehme an das es am Change Node liegt und dort bei den Regulären Ausdruck ?
                Ich möchte ganz einfach das was im IOBroker Pfad untet "0_userdata.0.objRoot" vorhanden ist als Datei speichern.

                Unbenannt.jpg

                1.jpg

                Struktur im IOBroker:
                2.jpg

                Ergebnis:
                {"version":3,"devices.554-6546532-36565-654654.Test":""}

                mickymM Online
                mickymM Online
                mickym
                Most Active
                wrote on last edited by mickym
                #20

                @bernd1967 Mal unabhängig davon, dass man so eine Struktur im iobroker auch einfach exportieren kann, aber was stimmt denn mit dem Ergebnis nicht? - Das schaut doch richtig aus?

                Das was Du vielleicht als Problem ansiehst - ist ggf. gar keines. Falls Du erwartet hast, dass Du unter devices eine hierarchische Struktur bekommst - kann nicht funktionieren, da das kein Objekt ist. Das Problem ist eher die list Node - die gibt auch wenn Du ANY als Filter hast nur die states aus. Da müsste man halt wieder ein Issue aufmachen.

                Für das Wiederherstellen der Struktur spielt das aber keine Rolle - diese wird, wenn Du meinen Subflow nimmst wieder 1:1 richtig hergestellt:

                45868363-176a-4f42-bc07-55e405f9f246-image.png

                Du siehst ja, dass Du aus der List node nur 2 Objekte rausbekommst:

                c8664fab-7997-4c08-8de8-b2a77251a259-image.png

                Auch wenn ich das im iobroker direkt exportiere bekommst Du nur 2 Objekte zurück:

                {
                 "0_userdata.0.objRoot.devices.554-6546532-36565-654654.Test": {
                   "common": {
                     "read": true,
                     "write": true,
                     "desc": "Created by Node-Red",
                     "role": "state",
                     "name": "devices.554-6546532-36565-654654.Test",
                     "type": "string"
                   },
                   "native": {},
                   "type": "state",
                   "from": "system.adapter.node-red.0",
                   "user": "system.user.admin",
                   "ts": 1646489307670,
                   "_id": "0_userdata.0.objRoot.devices.554-6546532-36565-654654.Test",
                   "acl": {
                     "object": 1636,
                     "state": 1636,
                     "owner": "system.user.admin",
                     "ownerGroup": "system.group.administrator"
                   }
                 },
                 "0_userdata.0.objRoot.version": {
                   "common": {
                     "read": true,
                     "write": true,
                     "desc": "Created by Node-Red",
                     "role": "state",
                     "name": "version",
                     "type": "number"
                   },
                   "native": {},
                   "type": "state",
                   "from": "system.adapter.node-red.0",
                   "user": "system.user.admin",
                   "ts": 1646489307667,
                   "_id": "0_userdata.0.objRoot.version",
                   "acl": {
                     "object": 1636,
                     "state": 1636,
                     "owner": "system.user.admin",
                     "ownerGroup": "system.group.administrator"
                   }
                 }
                }
                

                Falls Du eine Objekthierarchie in Deinem JSON wiederherstellen möchtest, dann ist da nicht banal und muss man quasi selbst programmieren.

                Mit einer Flow Variablen und einer function Node ist das dann sicher am Einfachsten. Hier mal eine Möglichkeit:

                0820c6f6-f5cc-435b-acbb-de46b5d1509a-image.png

                [
                   {
                       "id": "fe734f5c8eab6919",
                       "type": "ioBroker list",
                       "z": "54b226bc.0793e8",
                       "name": "",
                       "topic": "0_userdata.0.objRoot.*",
                       "objType": "",
                       "regex": "",
                       "asArray": "false",
                       "onlyIDs": "true",
                       "withValues": "true",
                       "x": 340,
                       "y": 2620,
                       "wires": [
                           [
                               "6a6e0bcf573c21d2"
                           ]
                       ]
                   },
                   {
                       "id": "81d74c3a4c8d8c69",
                       "type": "inject",
                       "z": "54b226bc.0793e8",
                       "name": "Trigger",
                       "props": [
                           {
                               "p": "payload"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "",
                       "payload": "true",
                       "payloadType": "bool",
                       "x": 150,
                       "y": 2620,
                       "wires": [
                           [
                               "fe734f5c8eab6919"
                           ]
                       ]
                   },
                   {
                       "id": "6a6e0bcf573c21d2",
                       "type": "change",
                       "z": "54b226bc.0793e8",
                       "name": "",
                       "rules": [
                           {
                               "t": "set",
                               "p": "payload",
                               "pt": "msg",
                               "to": "payload.val",
                               "tot": "msg"
                           },
                           {
                               "t": "change",
                               "p": "topic",
                               "pt": "msg",
                               "from": ".*objRoot\\.(.*)$",
                               "fromt": "re",
                               "to": "$1",
                               "tot": "str"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 570,
                       "y": 2620,
                       "wires": [
                           [
                               "c54cee7f0f242594"
                           ]
                       ]
                   },
                   {
                       "id": "c54cee7f0f242594",
                       "type": "function",
                       "z": "54b226bc.0793e8",
                       "name": "",
                       "func": "flow.set (\"objRoot.\" + msg.topic, msg.payload);\nreturn msg;",
                       "outputs": 1,
                       "noerr": 0,
                       "initialize": "",
                       "finalize": "",
                       "libs": [],
                       "x": 760,
                       "y": 2620,
                       "wires": [
                           [
                               "1d53b3a03cb1e658"
                           ]
                       ]
                   },
                   {
                       "id": "1d53b3a03cb1e658",
                       "type": "change",
                       "z": "54b226bc.0793e8",
                       "name": "",
                       "rules": [
                           {
                               "t": "set",
                               "p": "payload",
                               "pt": "msg",
                               "to": "objRoot",
                               "tot": "flow"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 950,
                       "y": 2620,
                       "wires": [
                           [
                               "22c29b67c34b4b4f"
                           ]
                       ]
                   },
                   {
                       "id": "eef15bb0d92eb826",
                       "type": "debug",
                       "z": "54b226bc.0793e8",
                       "name": "",
                       "active": true,
                       "tosidebar": true,
                       "console": false,
                       "tostatus": false,
                       "complete": "false",
                       "statusVal": "",
                       "statusType": "auto",
                       "x": 1490,
                       "y": 2620,
                       "wires": []
                   },
                   {
                       "id": "22c29b67c34b4b4f",
                       "type": "trigger",
                       "z": "54b226bc.0793e8",
                       "name": "",
                       "op1": "",
                       "op2": "",
                       "op1type": "nul",
                       "op2type": "payl",
                       "duration": "250",
                       "extend": true,
                       "overrideDelay": false,
                       "units": "ms",
                       "reset": "",
                       "bytopic": "all",
                       "topic": "topic",
                       "outputs": 1,
                       "x": 1160,
                       "y": 2620,
                       "wires": [
                           [
                               "90872318bacb6745"
                           ]
                       ]
                   },
                   {
                       "id": "90872318bacb6745",
                       "type": "json",
                       "z": "54b226bc.0793e8",
                       "name": "",
                       "property": "payload",
                       "action": "",
                       "pretty": false,
                       "x": 1330,
                       "y": 2620,
                       "wires": [
                           [
                               "eef15bb0d92eb826"
                           ]
                       ]
                   }
                ]
                

                damit bekommst dann dieses Ergebnis:

                {"version":3,"devices":{"554-6546532-36565-654654":{"Test":""}}}
                

                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.

                Bernd1967B 1 Reply Last reply
                0
                • mickymM mickym

                  @bernd1967 Mal unabhängig davon, dass man so eine Struktur im iobroker auch einfach exportieren kann, aber was stimmt denn mit dem Ergebnis nicht? - Das schaut doch richtig aus?

                  Das was Du vielleicht als Problem ansiehst - ist ggf. gar keines. Falls Du erwartet hast, dass Du unter devices eine hierarchische Struktur bekommst - kann nicht funktionieren, da das kein Objekt ist. Das Problem ist eher die list Node - die gibt auch wenn Du ANY als Filter hast nur die states aus. Da müsste man halt wieder ein Issue aufmachen.

                  Für das Wiederherstellen der Struktur spielt das aber keine Rolle - diese wird, wenn Du meinen Subflow nimmst wieder 1:1 richtig hergestellt:

                  45868363-176a-4f42-bc07-55e405f9f246-image.png

                  Du siehst ja, dass Du aus der List node nur 2 Objekte rausbekommst:

                  c8664fab-7997-4c08-8de8-b2a77251a259-image.png

                  Auch wenn ich das im iobroker direkt exportiere bekommst Du nur 2 Objekte zurück:

                  {
                   "0_userdata.0.objRoot.devices.554-6546532-36565-654654.Test": {
                     "common": {
                       "read": true,
                       "write": true,
                       "desc": "Created by Node-Red",
                       "role": "state",
                       "name": "devices.554-6546532-36565-654654.Test",
                       "type": "string"
                     },
                     "native": {},
                     "type": "state",
                     "from": "system.adapter.node-red.0",
                     "user": "system.user.admin",
                     "ts": 1646489307670,
                     "_id": "0_userdata.0.objRoot.devices.554-6546532-36565-654654.Test",
                     "acl": {
                       "object": 1636,
                       "state": 1636,
                       "owner": "system.user.admin",
                       "ownerGroup": "system.group.administrator"
                     }
                   },
                   "0_userdata.0.objRoot.version": {
                     "common": {
                       "read": true,
                       "write": true,
                       "desc": "Created by Node-Red",
                       "role": "state",
                       "name": "version",
                       "type": "number"
                     },
                     "native": {},
                     "type": "state",
                     "from": "system.adapter.node-red.0",
                     "user": "system.user.admin",
                     "ts": 1646489307667,
                     "_id": "0_userdata.0.objRoot.version",
                     "acl": {
                       "object": 1636,
                       "state": 1636,
                       "owner": "system.user.admin",
                       "ownerGroup": "system.group.administrator"
                     }
                   }
                  }
                  

                  Falls Du eine Objekthierarchie in Deinem JSON wiederherstellen möchtest, dann ist da nicht banal und muss man quasi selbst programmieren.

                  Mit einer Flow Variablen und einer function Node ist das dann sicher am Einfachsten. Hier mal eine Möglichkeit:

                  0820c6f6-f5cc-435b-acbb-de46b5d1509a-image.png

                  [
                     {
                         "id": "fe734f5c8eab6919",
                         "type": "ioBroker list",
                         "z": "54b226bc.0793e8",
                         "name": "",
                         "topic": "0_userdata.0.objRoot.*",
                         "objType": "",
                         "regex": "",
                         "asArray": "false",
                         "onlyIDs": "true",
                         "withValues": "true",
                         "x": 340,
                         "y": 2620,
                         "wires": [
                             [
                                 "6a6e0bcf573c21d2"
                             ]
                         ]
                     },
                     {
                         "id": "81d74c3a4c8d8c69",
                         "type": "inject",
                         "z": "54b226bc.0793e8",
                         "name": "Trigger",
                         "props": [
                             {
                                 "p": "payload"
                             }
                         ],
                         "repeat": "",
                         "crontab": "",
                         "once": false,
                         "onceDelay": 0.1,
                         "topic": "",
                         "payload": "true",
                         "payloadType": "bool",
                         "x": 150,
                         "y": 2620,
                         "wires": [
                             [
                                 "fe734f5c8eab6919"
                             ]
                         ]
                     },
                     {
                         "id": "6a6e0bcf573c21d2",
                         "type": "change",
                         "z": "54b226bc.0793e8",
                         "name": "",
                         "rules": [
                             {
                                 "t": "set",
                                 "p": "payload",
                                 "pt": "msg",
                                 "to": "payload.val",
                                 "tot": "msg"
                             },
                             {
                                 "t": "change",
                                 "p": "topic",
                                 "pt": "msg",
                                 "from": ".*objRoot\\.(.*)$",
                                 "fromt": "re",
                                 "to": "$1",
                                 "tot": "str"
                             }
                         ],
                         "action": "",
                         "property": "",
                         "from": "",
                         "to": "",
                         "reg": false,
                         "x": 570,
                         "y": 2620,
                         "wires": [
                             [
                                 "c54cee7f0f242594"
                             ]
                         ]
                     },
                     {
                         "id": "c54cee7f0f242594",
                         "type": "function",
                         "z": "54b226bc.0793e8",
                         "name": "",
                         "func": "flow.set (\"objRoot.\" + msg.topic, msg.payload);\nreturn msg;",
                         "outputs": 1,
                         "noerr": 0,
                         "initialize": "",
                         "finalize": "",
                         "libs": [],
                         "x": 760,
                         "y": 2620,
                         "wires": [
                             [
                                 "1d53b3a03cb1e658"
                             ]
                         ]
                     },
                     {
                         "id": "1d53b3a03cb1e658",
                         "type": "change",
                         "z": "54b226bc.0793e8",
                         "name": "",
                         "rules": [
                             {
                                 "t": "set",
                                 "p": "payload",
                                 "pt": "msg",
                                 "to": "objRoot",
                                 "tot": "flow"
                             }
                         ],
                         "action": "",
                         "property": "",
                         "from": "",
                         "to": "",
                         "reg": false,
                         "x": 950,
                         "y": 2620,
                         "wires": [
                             [
                                 "22c29b67c34b4b4f"
                             ]
                         ]
                     },
                     {
                         "id": "eef15bb0d92eb826",
                         "type": "debug",
                         "z": "54b226bc.0793e8",
                         "name": "",
                         "active": true,
                         "tosidebar": true,
                         "console": false,
                         "tostatus": false,
                         "complete": "false",
                         "statusVal": "",
                         "statusType": "auto",
                         "x": 1490,
                         "y": 2620,
                         "wires": []
                     },
                     {
                         "id": "22c29b67c34b4b4f",
                         "type": "trigger",
                         "z": "54b226bc.0793e8",
                         "name": "",
                         "op1": "",
                         "op2": "",
                         "op1type": "nul",
                         "op2type": "payl",
                         "duration": "250",
                         "extend": true,
                         "overrideDelay": false,
                         "units": "ms",
                         "reset": "",
                         "bytopic": "all",
                         "topic": "topic",
                         "outputs": 1,
                         "x": 1160,
                         "y": 2620,
                         "wires": [
                             [
                                 "90872318bacb6745"
                             ]
                         ]
                     },
                     {
                         "id": "90872318bacb6745",
                         "type": "json",
                         "z": "54b226bc.0793e8",
                         "name": "",
                         "property": "payload",
                         "action": "",
                         "pretty": false,
                         "x": 1330,
                         "y": 2620,
                         "wires": [
                             [
                                 "eef15bb0d92eb826"
                             ]
                         ]
                     }
                  ]
                  

                  damit bekommst dann dieses Ergebnis:

                  {"version":3,"devices":{"554-6546532-36565-654654":{"Test":""}}}
                  
                  Bernd1967B Offline
                  Bernd1967B Offline
                  Bernd1967
                  wrote on last edited by Bernd1967
                  #21

                  @mickym sagte in JSON String oder Java Object in IOBroker Struktur:

                  hierarchische Struktur

                  Ja genau 🙂 , das hat mich irritiert, die hierarchische Struktur......
                  Mit deinem Beispiel klappte es
                  Danke

                  Nachtrag: bei komplexen Strukturen entstehen allerding viele Fehler 😞
                  Ist doch wohl nicht so einfach.

                  mickymM 1 Reply Last reply
                  0
                  • Bernd1967B Bernd1967

                    @mickym sagte in JSON String oder Java Object in IOBroker Struktur:

                    hierarchische Struktur

                    Ja genau 🙂 , das hat mich irritiert, die hierarchische Struktur......
                    Mit deinem Beispiel klappte es
                    Danke

                    Nachtrag: bei komplexen Strukturen entstehen allerding viele Fehler 😞
                    Ist doch wohl nicht so einfach.

                    mickymM Online
                    mickymM Online
                    mickym
                    Most Active
                    wrote on last edited by mickym
                    #22

                    @bernd1967 Ja - entweder muss man das halt wirklich auflösen oder Du schickst mal ein Beispiel wo es Probleme gibt, dass man es nachvollziehen kann.

                    Das Problem ist, dass nach der Aufsplittung halt bestimmte Originalinformationen für immer verloren sind, es werden ja Arrays und Objekte in gleicher Weise behandelt.

                    Die Frage ist halt wirklich braucht man diese Hierarchie oder kann man nicht mit dem Original leben - wie Du es am Anfang gemacht hast. Ich habe allerdings eine recht komplexe Struktur durchlaufen lassen und das ging fehlerfrei.

                    Also müsste man das wohl anhand Deines Beispiels, das nicht läuft nachvollziehen.
                    Ich hab den Flow nochmal angepasst - sodass die function Node zum Aufbau der Objektstruktur ausreicht und diese nach jeder Ausgabe gelöscht wird - damit es da kein Durcheinander gibt.

                    652774ca-03c7-4f1c-9d00-6eddad862acd-image.png

                    [
                       {
                           "id": "d11089310692b73f",
                           "type": "change",
                           "z": "54b226bc.0793e8",
                           "name": "",
                           "rules": [
                               {
                                   "t": "set",
                                   "p": "payload",
                                   "pt": "msg",
                                   "to": "payload.val",
                                   "tot": "msg"
                               },
                               {
                                   "t": "change",
                                   "p": "topic",
                                   "pt": "msg",
                                   "from": ".*objRoot\\.(.*)$",
                                   "fromt": "re",
                                   "to": "$1",
                                   "tot": "str"
                               }
                           ],
                           "action": "",
                           "property": "",
                           "from": "",
                           "to": "",
                           "reg": false,
                           "x": 570,
                           "y": 1980,
                           "wires": [
                               [
                                   "e4a1e5e5e9dc34ee"
                               ]
                           ]
                       },
                       {
                           "id": "e4a1e5e5e9dc34ee",
                           "type": "function",
                           "z": "54b226bc.0793e8",
                           "name": "",
                           "func": "if (msg.reset) {\n    context.set(\"objRoot\",undefined);\n    return null;\n}\ncontext.set (\"objRoot.\" + msg.topic, msg.payload);\nmsg.payload=context.get(\"objRoot\");\nreturn msg;",
                           "outputs": 1,
                           "noerr": 0,
                           "initialize": "",
                           "finalize": "",
                           "libs": [],
                           "x": 760,
                           "y": 1980,
                           "wires": [
                               [
                                   "5200812ceca93736"
                               ]
                           ]
                       },
                       {
                           "id": "a9d3e44f37652c2e",
                           "type": "debug",
                           "z": "54b226bc.0793e8",
                           "name": "",
                           "active": false,
                           "tosidebar": true,
                           "console": false,
                           "tostatus": false,
                           "complete": "false",
                           "statusVal": "",
                           "statusType": "auto",
                           "x": 1270,
                           "y": 2040,
                           "wires": []
                       },
                       {
                           "id": "5200812ceca93736",
                           "type": "trigger",
                           "z": "54b226bc.0793e8",
                           "name": "",
                           "op1": "",
                           "op2": "",
                           "op1type": "nul",
                           "op2type": "payl",
                           "duration": "250",
                           "extend": true,
                           "overrideDelay": false,
                           "units": "ms",
                           "reset": "",
                           "bytopic": "all",
                           "topic": "topic",
                           "outputs": 1,
                           "x": 940,
                           "y": 1980,
                           "wires": [
                               [
                                   "82c103eb2cf2057f",
                                   "4aa8543b3675c7d1",
                                   "0f757a3fa3b26e8f"
                               ]
                           ]
                       },
                       {
                           "id": "82c103eb2cf2057f",
                           "type": "json",
                           "z": "54b226bc.0793e8",
                           "name": "",
                           "property": "payload",
                           "action": "str",
                           "pretty": false,
                           "x": 1130,
                           "y": 1980,
                           "wires": [
                               [
                                   "a9d3e44f37652c2e",
                                   "45d69ff41aed483a"
                               ]
                           ]
                       },
                       {
                           "id": "0d87b95094bc6985",
                           "type": "ioBroker list",
                           "z": "54b226bc.0793e8",
                           "name": "",
                           "topic": "0_userdata.0.objRoot.*",
                           "objType": "",
                           "regex": "",
                           "asArray": "false",
                           "onlyIDs": "true",
                           "withValues": "true",
                           "x": 340,
                           "y": 1980,
                           "wires": [
                               [
                                   "d11089310692b73f"
                               ]
                           ]
                       },
                       {
                           "id": "272ea867090d9156",
                           "type": "inject",
                           "z": "54b226bc.0793e8",
                           "name": "Trigger",
                           "props": [
                               {
                                   "p": "payload"
                               }
                           ],
                           "repeat": "",
                           "crontab": "",
                           "once": false,
                           "onceDelay": 0.1,
                           "topic": "",
                           "payload": "true",
                           "payloadType": "bool",
                           "x": 150,
                           "y": 1980,
                           "wires": [
                               [
                                   "0d87b95094bc6985"
                               ]
                           ]
                       },
                       {
                           "id": "4aa8543b3675c7d1",
                           "type": "debug",
                           "z": "54b226bc.0793e8",
                           "name": "",
                           "active": true,
                           "tosidebar": true,
                           "console": false,
                           "tostatus": false,
                           "complete": "false",
                           "statusVal": "",
                           "statusType": "auto",
                           "x": 1170,
                           "y": 1920,
                           "wires": []
                       },
                       {
                           "id": "45d69ff41aed483a",
                           "type": "file",
                           "z": "54b226bc.0793e8",
                           "name": "",
                           "filename": "/home/iobroker/output.json",
                           "appendNewline": true,
                           "createDir": false,
                           "overwriteFile": "true",
                           "encoding": "none",
                           "x": 1340,
                           "y": 1980,
                           "wires": [
                               []
                           ]
                       },
                       {
                           "id": "0f757a3fa3b26e8f",
                           "type": "change",
                           "z": "54b226bc.0793e8",
                           "name": "",
                           "rules": [
                               {
                                   "t": "set",
                                   "p": "reset",
                                   "pt": "msg",
                                   "to": "true",
                                   "tot": "bool"
                               }
                           ],
                           "action": "",
                           "property": "",
                           "from": "",
                           "to": "",
                           "reg": false,
                           "x": 780,
                           "y": 2060,
                           "wires": [
                               [
                                   "e4a1e5e5e9dc34ee"
                               ]
                           ]
                       },
                       {
                           "id": "4420acc0840bbd1a",
                           "type": "inject",
                           "z": "54b226bc.0793e8",
                           "name": "",
                           "props": [
                               {
                                   "p": "payload"
                               },
                               {
                                   "p": "topic",
                                   "vt": "str"
                               }
                           ],
                           "repeat": "",
                           "crontab": "",
                           "once": false,
                           "onceDelay": 0.1,
                           "topic": "reset",
                           "payload": "true",
                           "payloadType": "bool",
                           "x": 560,
                           "y": 2060,
                           "wires": [
                               [
                                   "0f757a3fa3b26e8f"
                               ]
                           ]
                       }
                    ]
                    

                    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.

                    Bernd1967B 1 Reply Last reply
                    0
                    • mickymM mickym

                      @bernd1967 Ja - entweder muss man das halt wirklich auflösen oder Du schickst mal ein Beispiel wo es Probleme gibt, dass man es nachvollziehen kann.

                      Das Problem ist, dass nach der Aufsplittung halt bestimmte Originalinformationen für immer verloren sind, es werden ja Arrays und Objekte in gleicher Weise behandelt.

                      Die Frage ist halt wirklich braucht man diese Hierarchie oder kann man nicht mit dem Original leben - wie Du es am Anfang gemacht hast. Ich habe allerdings eine recht komplexe Struktur durchlaufen lassen und das ging fehlerfrei.

                      Also müsste man das wohl anhand Deines Beispiels, das nicht läuft nachvollziehen.
                      Ich hab den Flow nochmal angepasst - sodass die function Node zum Aufbau der Objektstruktur ausreicht und diese nach jeder Ausgabe gelöscht wird - damit es da kein Durcheinander gibt.

                      652774ca-03c7-4f1c-9d00-6eddad862acd-image.png

                      [
                         {
                             "id": "d11089310692b73f",
                             "type": "change",
                             "z": "54b226bc.0793e8",
                             "name": "",
                             "rules": [
                                 {
                                     "t": "set",
                                     "p": "payload",
                                     "pt": "msg",
                                     "to": "payload.val",
                                     "tot": "msg"
                                 },
                                 {
                                     "t": "change",
                                     "p": "topic",
                                     "pt": "msg",
                                     "from": ".*objRoot\\.(.*)$",
                                     "fromt": "re",
                                     "to": "$1",
                                     "tot": "str"
                                 }
                             ],
                             "action": "",
                             "property": "",
                             "from": "",
                             "to": "",
                             "reg": false,
                             "x": 570,
                             "y": 1980,
                             "wires": [
                                 [
                                     "e4a1e5e5e9dc34ee"
                                 ]
                             ]
                         },
                         {
                             "id": "e4a1e5e5e9dc34ee",
                             "type": "function",
                             "z": "54b226bc.0793e8",
                             "name": "",
                             "func": "if (msg.reset) {\n    context.set(\"objRoot\",undefined);\n    return null;\n}\ncontext.set (\"objRoot.\" + msg.topic, msg.payload);\nmsg.payload=context.get(\"objRoot\");\nreturn msg;",
                             "outputs": 1,
                             "noerr": 0,
                             "initialize": "",
                             "finalize": "",
                             "libs": [],
                             "x": 760,
                             "y": 1980,
                             "wires": [
                                 [
                                     "5200812ceca93736"
                                 ]
                             ]
                         },
                         {
                             "id": "a9d3e44f37652c2e",
                             "type": "debug",
                             "z": "54b226bc.0793e8",
                             "name": "",
                             "active": false,
                             "tosidebar": true,
                             "console": false,
                             "tostatus": false,
                             "complete": "false",
                             "statusVal": "",
                             "statusType": "auto",
                             "x": 1270,
                             "y": 2040,
                             "wires": []
                         },
                         {
                             "id": "5200812ceca93736",
                             "type": "trigger",
                             "z": "54b226bc.0793e8",
                             "name": "",
                             "op1": "",
                             "op2": "",
                             "op1type": "nul",
                             "op2type": "payl",
                             "duration": "250",
                             "extend": true,
                             "overrideDelay": false,
                             "units": "ms",
                             "reset": "",
                             "bytopic": "all",
                             "topic": "topic",
                             "outputs": 1,
                             "x": 940,
                             "y": 1980,
                             "wires": [
                                 [
                                     "82c103eb2cf2057f",
                                     "4aa8543b3675c7d1",
                                     "0f757a3fa3b26e8f"
                                 ]
                             ]
                         },
                         {
                             "id": "82c103eb2cf2057f",
                             "type": "json",
                             "z": "54b226bc.0793e8",
                             "name": "",
                             "property": "payload",
                             "action": "str",
                             "pretty": false,
                             "x": 1130,
                             "y": 1980,
                             "wires": [
                                 [
                                     "a9d3e44f37652c2e",
                                     "45d69ff41aed483a"
                                 ]
                             ]
                         },
                         {
                             "id": "0d87b95094bc6985",
                             "type": "ioBroker list",
                             "z": "54b226bc.0793e8",
                             "name": "",
                             "topic": "0_userdata.0.objRoot.*",
                             "objType": "",
                             "regex": "",
                             "asArray": "false",
                             "onlyIDs": "true",
                             "withValues": "true",
                             "x": 340,
                             "y": 1980,
                             "wires": [
                                 [
                                     "d11089310692b73f"
                                 ]
                             ]
                         },
                         {
                             "id": "272ea867090d9156",
                             "type": "inject",
                             "z": "54b226bc.0793e8",
                             "name": "Trigger",
                             "props": [
                                 {
                                     "p": "payload"
                                 }
                             ],
                             "repeat": "",
                             "crontab": "",
                             "once": false,
                             "onceDelay": 0.1,
                             "topic": "",
                             "payload": "true",
                             "payloadType": "bool",
                             "x": 150,
                             "y": 1980,
                             "wires": [
                                 [
                                     "0d87b95094bc6985"
                                 ]
                             ]
                         },
                         {
                             "id": "4aa8543b3675c7d1",
                             "type": "debug",
                             "z": "54b226bc.0793e8",
                             "name": "",
                             "active": true,
                             "tosidebar": true,
                             "console": false,
                             "tostatus": false,
                             "complete": "false",
                             "statusVal": "",
                             "statusType": "auto",
                             "x": 1170,
                             "y": 1920,
                             "wires": []
                         },
                         {
                             "id": "45d69ff41aed483a",
                             "type": "file",
                             "z": "54b226bc.0793e8",
                             "name": "",
                             "filename": "/home/iobroker/output.json",
                             "appendNewline": true,
                             "createDir": false,
                             "overwriteFile": "true",
                             "encoding": "none",
                             "x": 1340,
                             "y": 1980,
                             "wires": [
                                 []
                             ]
                         },
                         {
                             "id": "0f757a3fa3b26e8f",
                             "type": "change",
                             "z": "54b226bc.0793e8",
                             "name": "",
                             "rules": [
                                 {
                                     "t": "set",
                                     "p": "reset",
                                     "pt": "msg",
                                     "to": "true",
                                     "tot": "bool"
                                 }
                             ],
                             "action": "",
                             "property": "",
                             "from": "",
                             "to": "",
                             "reg": false,
                             "x": 780,
                             "y": 2060,
                             "wires": [
                                 [
                                     "e4a1e5e5e9dc34ee"
                                 ]
                             ]
                         },
                         {
                             "id": "4420acc0840bbd1a",
                             "type": "inject",
                             "z": "54b226bc.0793e8",
                             "name": "",
                             "props": [
                                 {
                                     "p": "payload"
                                 },
                                 {
                                     "p": "topic",
                                     "vt": "str"
                                 }
                             ],
                             "repeat": "",
                             "crontab": "",
                             "once": false,
                             "onceDelay": 0.1,
                             "topic": "reset",
                             "payload": "true",
                             "payloadType": "bool",
                             "x": 560,
                             "y": 2060,
                             "wires": [
                                 [
                                     "0f757a3fa3b26e8f"
                                 ]
                             ]
                         }
                      ]
                      

                      Bernd1967B Offline
                      Bernd1967B Offline
                      Bernd1967
                      wrote on last edited by
                      #23

                      @mickym
                      Danke für deine Mühe, ich werde das später nochmal ausprobieren.

                      Der Fehler der immer wieder auftaucht ist übrigens folgender:
                      [error] [function:e4a1e5e5e9dc34ee] Error: Invalid property expression: unexpected { at position 67

                      Ein Beispiel kann ich Dir jetzt nicht geben weil dort sensible Daten vorhanden sind.
                      Die müßte ich erstmal rausfiltern und das ist aufwendig.
                      Ich kopiere im Moment alles manuelle mit einem JSON Editor.

                      mickymM 1 Reply Last reply
                      0
                      • Bernd1967B Bernd1967

                        @mickym
                        Danke für deine Mühe, ich werde das später nochmal ausprobieren.

                        Der Fehler der immer wieder auftaucht ist übrigens folgender:
                        [error] [function:e4a1e5e5e9dc34ee] Error: Invalid property expression: unexpected { at position 67

                        Ein Beispiel kann ich Dir jetzt nicht geben weil dort sensible Daten vorhanden sind.
                        Die müßte ich erstmal rausfiltern und das ist aufwendig.
                        Ich kopiere im Moment alles manuelle mit einem JSON Editor.

                        mickymM Online
                        mickymM Online
                        mickym
                        Most Active
                        wrote on last edited by
                        #24

                        @bernd1967 Warum speicherst Du den JSON String vor der Aufteilung eigentlich nicht gleich in eine Datei?

                        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 Reply Last reply
                        0
                        • mickymM Online
                          mickymM Online
                          mickym
                          Most Active
                          wrote on last edited by mickym
                          #25

                          @apollon77

                          Um diesen Flow mal mit der Erstellung von Folder Objekten zu testen habe ich mal die Objekte aus folgendem Ast meines mqtt Adapters exportiert:

                          475fecb3-b9c2-4208-994d-a273e8f016df-image.png

                          Mit den Eigenschaften der Objekte ergibt es dann folgenden JSON String:

                          {
                           "mqtt.1.zigbee2mqtt.temperatur.kueche": {
                             "common": {
                               "name": "zigbee2mqtt/temperatur/kueche",
                               "write": true,
                               "read": true,
                               "role": "variable",
                               "desc": "mqtt client variable",
                               "type": "string"
                             },
                             "native": {
                               "topic": "zigbee2mqtt/temperatur/kueche"
                             },
                             "type": "state",
                             "from": "system.adapter.mqtt.1",
                             "user": "system.user.admin",
                             "ts": 1645439171879,
                             "_id": "mqtt.1.zigbee2mqtt.temperatur.kueche",
                             "acl": {
                               "object": 1636,
                               "state": 1636,
                               "owner": "system.user.admin",
                               "ownerGroup": "system.group.administrator"
                             }
                           },
                           "mqtt.1.zigbee2mqtt.temperatur.kueche.availability": {
                             "common": {
                               "name": "zigbee2mqtt/temperatur/kueche/availability",
                               "write": true,
                               "read": true,
                               "role": "variable",
                               "desc": "mqtt client variable",
                               "type": "string"
                             },
                             "native": {
                               "topic": "zigbee2mqtt/temperatur/kueche/availability"
                             },
                             "type": "state",
                             "from": "system.adapter.mqtt.1",
                             "user": "system.user.admin",
                             "ts": 1645495334609,
                             "_id": "mqtt.1.zigbee2mqtt.temperatur.kueche.availability",
                             "acl": {
                               "object": 1636,
                               "state": 1636,
                               "owner": "system.user.admin",
                               "ownerGroup": "system.group.administrator"
                             }
                           },
                           "mqtt.1.zigbee2mqtt.temperatur.kueche.gefrierfach": {
                             "common": {
                               "name": "zigbee2mqtt/temperatur/kueche/gefrierfach",
                               "write": true,
                               "read": true,
                               "role": "variable",
                               "desc": "mqtt client variable",
                               "type": "string"
                             },
                             "native": {
                               "topic": "zigbee2mqtt/temperatur/kueche/gefrierfach"
                             },
                             "type": "state",
                             "from": "system.adapter.mqtt.1",
                             "user": "system.user.admin",
                             "ts": 1645447173980,
                             "_id": "mqtt.1.zigbee2mqtt.temperatur.kueche.gefrierfach",
                             "acl": {
                               "object": 1636,
                               "state": 1636,
                               "owner": "system.user.admin",
                               "ownerGroup": "system.group.administrator"
                             }
                           },
                           "mqtt.1.zigbee2mqtt.temperatur.kueche.gefrierfach.availability": {
                             "common": {
                               "name": "zigbee2mqtt/temperatur/kueche/gefrierfach/availability",
                               "write": true,
                               "read": true,
                               "role": "variable",
                               "desc": "mqtt client variable",
                               "type": "string"
                             },
                             "native": {
                               "topic": "zigbee2mqtt/temperatur/kueche/gefrierfach/availability"
                             },
                             "type": "state",
                             "from": "system.adapter.mqtt.1",
                             "user": "system.user.admin",
                             "ts": 1645495334777,
                             "_id": "mqtt.1.zigbee2mqtt.temperatur.kueche.gefrierfach.availability",
                             "acl": {
                               "object": 1636,
                               "state": 1636,
                               "owner": "system.user.admin",
                               "ownerGroup": "system.group.administrator"
                             }
                           },
                           "mqtt.1.zigbee2mqtt.temperatur.kueche.kuehlschrank": {
                             "common": {
                               "name": "zigbee2mqtt/temperatur/kueche/kuehlschrank",
                               "write": true,
                               "read": true,
                               "role": "variable",
                               "desc": "mqtt client variable",
                               "type": "string"
                             },
                             "native": {
                               "topic": "zigbee2mqtt/temperatur/kueche/kuehlschrank"
                             },
                             "type": "state",
                             "from": "system.adapter.mqtt.1",
                             "user": "system.user.admin",
                             "ts": 1645446952602,
                             "_id": "mqtt.1.zigbee2mqtt.temperatur.kueche.kuehlschrank",
                             "acl": {
                               "object": 1636,
                               "state": 1636,
                               "owner": "system.user.admin",
                               "ownerGroup": "system.group.administrator"
                             }
                           },
                           "mqtt.1.zigbee2mqtt.temperatur.kueche.kuehlschrank.availability": {
                             "common": {
                               "name": "zigbee2mqtt/temperatur/kueche/kuehlschrank/availability",
                               "write": true,
                               "read": true,
                               "role": "variable",
                               "desc": "mqtt client variable",
                               "type": "string"
                             },
                             "native": {
                               "topic": "zigbee2mqtt/temperatur/kueche/kuehlschrank/availability"
                             },
                             "type": "state",
                             "from": "system.adapter.mqtt.1",
                             "user": "system.user.admin",
                             "ts": 1645495334777,
                             "_id": "mqtt.1.zigbee2mqtt.temperatur.kueche.kuehlschrank.availability",
                             "acl": {
                               "object": 1636,
                               "state": 1636,
                               "owner": "system.user.admin",
                               "ownerGroup": "system.group.administrator"
                             }
                           }
                          }
                          

                          Dieser wird nun als States die einzelnen Endpunkte aufdröseln und erzeugt die Topics die dann über die iobroker -out Node geschrieben werden:

                          543741bd-c78d-4da8-84fb-bf2583096f0c-image.png

                          Die Struktur ist dann:

                          673d5a7f-bc18-4d68-a9a0-457575793b55-image.png

                          Die fehlenden Objekte müsste also die iobroker-Node selbst erzeugen.

                          134bf836-7ab4-4d8b-bbcd-9d6b50216873-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 Reply Last reply
                          0
                          • mickymM Online
                            mickymM Online
                            mickym
                            Most Active
                            wrote on last edited by
                            #26

                            So ich habe die Subflow Node etwas erweitert, indem man das topic bei Benutzung von Wildcards mit verwenden kann.

                            d87cceb6-0fa8-47d8-9561-737ce1afd1af-image.png

                            Default ist natürlich false, um das bisherige Verhalten zu erhalten. Der Hilfetext wurde wie folgt angepasst:

                            fe1ae134-5aa1-4ac4-9985-e8ce1d8dcf80-image.png

                            Ich will das mal an einem Beispiel demonstrieren. Wenn man anstelle des zigbee Adapter das zigbee2mqtt Projekt verwenden will und die JSON Objekte ebenfalls als einzelne Datenpunkt verfügbar haben will, kann man wie folgt vorgehen.

                            Ich zeige mal wie ich meine Bewegungsmelder unter zigbee2mqtt angelegt habe:

                            fb337adf-bb20-4a85-bd49-cf714b8d454c-image.png

                            Die Bewegungsmelder geben unter dem mqtt Adapter den Status als JSON Strings zurück, um das nun mit dieser Node alles auf einmal als Objektbaum im iobroker darzustellen, kann man das wie folgt erreichen:

                            Über die Wildcards liefert die mqtt-In Nodes alle Daten vom Bewegungsmelder - ob man oder wie man das topic modifiziert, kann man selbst entscheiden.

                            9e667342-6b82-438f-9d3e-1c49fddcd6a8-image.png

                            In der Subflow Node setzt man keepTopic auf true:

                            41730041-2be3-402b-bf2a-cc0c244b211e-image.png

                            Somit wird automatisch für alle Bewegungsmelder einzelne Datenpunkte unter 0_userdata.0 erstellt, also ein ganzer Objektbaum: 🙂

                            80534df5-8b4b-4c52-909f-faa6e314ae21-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 Reply Last reply
                            0
                            • mickymM mickym

                              So ich habe die Subflow Node etwas erweitert, indem man das topic bei Benutzung von Wildcards mit verwenden kann.

                              d87cceb6-0fa8-47d8-9561-737ce1afd1af-image.png

                              Default ist natürlich false, um das bisherige Verhalten zu erhalten. Der Hilfetext wurde wie folgt angepasst:

                              fe1ae134-5aa1-4ac4-9985-e8ce1d8dcf80-image.png

                              Ich will das mal an einem Beispiel demonstrieren. Wenn man anstelle des zigbee Adapter das zigbee2mqtt Projekt verwenden will und die JSON Objekte ebenfalls als einzelne Datenpunkt verfügbar haben will, kann man wie folgt vorgehen.

                              Ich zeige mal wie ich meine Bewegungsmelder unter zigbee2mqtt angelegt habe:

                              fb337adf-bb20-4a85-bd49-cf714b8d454c-image.png

                              Die Bewegungsmelder geben unter dem mqtt Adapter den Status als JSON Strings zurück, um das nun mit dieser Node alles auf einmal als Objektbaum im iobroker darzustellen, kann man das wie folgt erreichen:

                              Über die Wildcards liefert die mqtt-In Nodes alle Daten vom Bewegungsmelder - ob man oder wie man das topic modifiziert, kann man selbst entscheiden.

                              9e667342-6b82-438f-9d3e-1c49fddcd6a8-image.png

                              In der Subflow Node setzt man keepTopic auf true:

                              41730041-2be3-402b-bf2a-cc0c244b211e-image.png

                              Somit wird automatisch für alle Bewegungsmelder einzelne Datenpunkte unter 0_userdata.0 erstellt, also ein ganzer Objektbaum: 🙂

                              80534df5-8b4b-4c52-909f-faa6e314ae21-image.png

                              ? Offline
                              ? Offline
                              A Former User
                              wrote on last edited by
                              #27

                              @mickym ich habe das Ganze mal ausprobiert und habe folgendes Problem. Wenn ich die gesamte Ordnerstruktur wie in deinem Beispiel einlese erhalte ich folgendes...

                              komplett.png

                              Also die gleiche Ordnerstruktur wie sie mein zigbee2mqtt anlegt. Wenn ich aber nur einen Sensor auslese dann habe ich das gewünschte Ergebnis.

                              einzeln.png

                              Was mache ich falsch?

                              node1.png node2.png node3.png node4.png

                              ? mickymM 4 Replies Last reply
                              0
                              • ? A Former User

                                @mickym ich habe das Ganze mal ausprobiert und habe folgendes Problem. Wenn ich die gesamte Ordnerstruktur wie in deinem Beispiel einlese erhalte ich folgendes...

                                komplett.png

                                Also die gleiche Ordnerstruktur wie sie mein zigbee2mqtt anlegt. Wenn ich aber nur einen Sensor auslese dann habe ich das gewünschte Ergebnis.

                                einzeln.png

                                Was mache ich falsch?

                                node1.png node2.png node3.png node4.png

                                ? Offline
                                ? Offline
                                A Former User
                                wrote on last edited by
                                #28

                                @noah3112 Ach ja das mit dem Script habe ich auch gemacht. Ist das überhaupt noch nötig?

                                mickymM 1 Reply Last reply
                                0
                                • ? A Former User

                                  @mickym ich habe das Ganze mal ausprobiert und habe folgendes Problem. Wenn ich die gesamte Ordnerstruktur wie in deinem Beispiel einlese erhalte ich folgendes...

                                  komplett.png

                                  Also die gleiche Ordnerstruktur wie sie mein zigbee2mqtt anlegt. Wenn ich aber nur einen Sensor auslese dann habe ich das gewünschte Ergebnis.

                                  einzeln.png

                                  Was mache ich falsch?

                                  node1.png node2.png node3.png node4.png

                                  mickymM Online
                                  mickymM Online
                                  mickym
                                  Most Active
                                  wrote on last edited by
                                  #29

                                  @noah3112 Also im Prinzip bist Du halt verantwortlich, dass Du das topic so aus Deinen msg.topics präparierst, dass das topic so erstellt wird.

                                  Das topic wird nach dem top eingefügt - dann erfolgen die topics des Objektes. Ich hatte ja das Beispiel des Bewegungsmelders gebracht. Du kannst auch zigbee/# nehmen. Letztlich siehst Du ja wenn Du nach der subflow Node eine debug Node machst erst mal welche topics rauskommen.

                                  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 Reply Last reply
                                  0
                                  • ? A Former User

                                    @noah3112 Ach ja das mit dem Script habe ich auch gemacht. Ist das überhaupt noch nötig?

                                    mickymM Online
                                    mickymM Online
                                    mickym
                                    Most Active
                                    wrote on last edited by
                                    #30

                                    @noah3112 Welches Script meinst Du?

                                    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 Reply Last reply
                                    0
                                    • ? A Former User

                                      @mickym ich habe das Ganze mal ausprobiert und habe folgendes Problem. Wenn ich die gesamte Ordnerstruktur wie in deinem Beispiel einlese erhalte ich folgendes...

                                      komplett.png

                                      Also die gleiche Ordnerstruktur wie sie mein zigbee2mqtt anlegt. Wenn ich aber nur einen Sensor auslese dann habe ich das gewünschte Ergebnis.

                                      einzeln.png

                                      Was mache ich falsch?

                                      node1.png node2.png node3.png node4.png

                                      mickymM Online
                                      mickymM Online
                                      mickym
                                      Most Active
                                      wrote on last edited by mickym
                                      #31

                                      @noah3112 Ich hab mal mein ganzen zigbee2mqtt Baum ausgelesen Indem ich als topic zigbee2mqtt/# nehme.

                                      47e53d4d-7b22-4ade-b823-870e0220a461-image.png

                                      [
                                          {
                                              "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# 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. ",
                                              "category": "",
                                              "in": [
                                                  {
                                                      "x": 60,
                                                      "y": 160,
                                                      "wires": [
                                                          {
                                                              "id": "554b8c663bcb46c2"
                                                          }
                                                      ]
                                                  }
                                              ],
                                              "out": [
                                                  {
                                                      "x": 2320,
                                                      "y": 280,
                                                      "wires": [
                                                          {
                                                              "id": "f5d52c6a57d08904",
                                                              "port": 0
                                                          },
                                                          {
                                                              "id": "74c895ce724750de",
                                                              "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"
                                                  },
                                                  {
                                                      "t": "change",
                                                      "p": "topic",
                                                      "pt": "msg",
                                                      "from": " ",
                                                      "fromt": "str",
                                                      "to": "_",
                                                      "tot": "str"
                                                  }
                                              ],
                                              "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"
                                                  },
                                                  {
                                                      "t": "change",
                                                      "p": "topic",
                                                      "pt": "msg",
                                                      "from": "..",
                                                      "fromt": "str",
                                                      "to": ".",
                                                      "tot": "str"
                                                  }
                                              ],
                                              "action": "",
                                              "property": "",
                                              "from": "",
                                              "to": "",
                                              "reg": false,
                                              "x": 2170,
                                              "y": 240,
                                              "wires": [
                                                  []
                                              ]
                                          },
                                          {
                                              "id": "c863dd7d651b2272",
                                              "type": "switch",
                                              "z": "6e802f1553b18149",
                                              "name": "is type?",
                                              "property": "payload",
                                              "propertyType": "msg",
                                              "rules": [
                                                  {
                                                      "t": "istype",
                                                      "v": "json",
                                                      "vt": "json"
                                                  },
                                                  {
                                                      "t": "istype",
                                                      "v": "object",
                                                      "vt": "object"
                                                  },
                                                  {
                                                      "t": "istype",
                                                      "v": "array",
                                                      "vt": "array"
                                                  },
                                                  {
                                                      "t": "else"
                                                  }
                                              ],
                                              "checkall": "true",
                                              "repair": false,
                                              "outputs": 4,
                                              "x": 580,
                                              "y": 160,
                                              "wires": [
                                                  [
                                                      "158930afddd0780b"
                                                  ],
                                                  [
                                                      "3e11e8338f694832"
                                                  ],
                                                  [
                                                      "bfce19b206660fbe"
                                                  ],
                                                  [
                                                      "a4d1a5d04564dc77"
                                                  ]
                                              ]
                                          },
                                          {
                                              "id": "158930afddd0780b",
                                              "type": "json",
                                              "z": "6e802f1553b18149",
                                              "name": "",
                                              "property": "payload",
                                              "action": "",
                                              "pretty": false,
                                              "x": 770,
                                              "y": 120,
                                              "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": [
                                                  [
                                                      "c863dd7d651b2272"
                                                  ]
                                              ]
                                          },
                                          {
                                              "id": "3649300b4c233b10",
                                              "type": "switch",
                                              "z": "6e802f1553b18149",
                                              "name": "is array?",
                                              "property": "payload",
                                              "propertyType": "msg",
                                              "rules": [
                                                  {
                                                      "t": "istype",
                                                      "v": "array",
                                                      "vt": "array"
                                                  },
                                                  {
                                                      "t": "else"
                                                  }
                                              ],
                                              "checkall": "true",
                                              "repair": false,
                                              "outputs": 2,
                                              "x": 900,
                                              "y": 120,
                                              "wires": [
                                                  [
                                                      "bfce19b206660fbe"
                                                  ],
                                                  [
                                                      "3e11e8338f694832"
                                                  ]
                                              ]
                                          },
                                          {
                                              "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"
                                                  ],
                                                  [
                                                      "1a8c03d866b85b12"
                                                  ]
                                              ]
                                          },
                                          {
                                              "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"
                                                  },
                                                  {
                                                      "t": "change",
                                                      "p": "topic",
                                                      "pt": "msg",
                                                      "from": "..",
                                                      "fromt": "str",
                                                      "to": ".",
                                                      "tot": "str"
                                                  }
                                              ],
                                              "action": "",
                                              "property": "",
                                              "from": "",
                                              "to": "",
                                              "reg": false,
                                              "x": 2170,
                                              "y": 320,
                                              "wires": [
                                                  []
                                              ]
                                          },
                                          {
                                              "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": [
                                                  [
                                                      "c863dd7d651b2272"
                                                  ]
                                              ]
                                          },
                                          {
                                              "id": "6f9ad0fae408d97f",
                                              "type": "subflow:6e802f1553b18149",
                                              "z": "393214410c8f2f15",
                                              "name": "",
                                              "env": [
                                                  {
                                                      "name": "top",
                                                      "value": "zigbee",
                                                      "type": "str"
                                                  },
                                                  {
                                                      "name": "keepTopic",
                                                      "value": "true",
                                                      "type": "bool"
                                                  }
                                              ],
                                              "x": 790,
                                              "y": 460,
                                              "wires": [
                                                  [
                                                      "997fd3a2eec1d4d4",
                                                      "ad50aeda7750ebf1"
                                                  ]
                                              ]
                                          },
                                          {
                                              "id": "73ad04043864791c",
                                              "type": "change",
                                              "z": "393214410c8f2f15",
                                              "name": "",
                                              "rules": [
                                                  {
                                                      "t": "change",
                                                      "p": "topic",
                                                      "pt": "msg",
                                                      "from": "zigbee2mqtt\\/(.*)$",
                                                      "fromt": "re",
                                                      "to": "$1",
                                                      "tot": "str"
                                                  }
                                              ],
                                              "action": "",
                                              "property": "",
                                              "from": "",
                                              "to": "",
                                              "reg": false,
                                              "x": 550,
                                              "y": 460,
                                              "wires": [
                                                  [
                                                      "6f9ad0fae408d97f",
                                                      "5bfd9417fad9ef9a"
                                                  ]
                                              ]
                                          },
                                          {
                                              "id": "997fd3a2eec1d4d4",
                                              "type": "debug",
                                              "z": "393214410c8f2f15",
                                              "name": "",
                                              "active": true,
                                              "tosidebar": true,
                                              "console": false,
                                              "tostatus": false,
                                              "complete": "false",
                                              "statusVal": "",
                                              "statusType": "auto",
                                              "x": 1030,
                                              "y": 400,
                                              "wires": []
                                          },
                                          {
                                              "id": "5bfd9417fad9ef9a",
                                              "type": "debug",
                                              "z": "393214410c8f2f15",
                                              "name": "",
                                              "active": true,
                                              "tosidebar": true,
                                              "console": false,
                                              "tostatus": false,
                                              "complete": "true",
                                              "targetType": "full",
                                              "statusVal": "",
                                              "statusType": "auto",
                                              "x": 750,
                                              "y": 400,
                                              "wires": []
                                          },
                                          {
                                              "id": "ad50aeda7750ebf1",
                                              "type": "ioBroker out",
                                              "z": "393214410c8f2f15",
                                              "name": "",
                                              "topic": "",
                                              "ack": "true",
                                              "autoCreate": "true",
                                              "stateName": "",
                                              "role": "",
                                              "payloadType": "",
                                              "readonly": "",
                                              "stateUnit": "",
                                              "stateMin": "",
                                              "stateMax": "",
                                              "x": 1020,
                                              "y": 460,
                                              "wires": []
                                          }
                                      ]
                                      

                                      Ich hab meinen zigbee2mqtt halt nach Funktionen gegliedert - aber wird alles aufgelöst.

                                      50792a04-2fcb-4028-98e3-f29eac875a07-image.png,

                                      die states werden auch korrekt aufgeschlüsselt:

                                      bbaa56a9-2476-4084-bfdf-1c128159e45c-image.png

                                      Importiere ggf- nochmals neu - damit Du auch die aktuellste Version hast.

                                      Die Subflow Node muss halt keepTopic auf true sein:

                                      ad3004fd-babd-4eec-88da-84348a0d2481-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 Reply Last reply
                                      0
                                      • ? A Former User

                                        @mickym ich habe das Ganze mal ausprobiert und habe folgendes Problem. Wenn ich die gesamte Ordnerstruktur wie in deinem Beispiel einlese erhalte ich folgendes...

                                        komplett.png

                                        Also die gleiche Ordnerstruktur wie sie mein zigbee2mqtt anlegt. Wenn ich aber nur einen Sensor auslese dann habe ich das gewünschte Ergebnis.

                                        einzeln.png

                                        Was mache ich falsch?

                                        node1.png node2.png node3.png node4.png

                                        mickymM Online
                                        mickymM Online
                                        mickym
                                        Most Active
                                        wrote on last edited by mickym
                                        #32

                                        @noah3112 Wahrscheinlich hast Du Dein zigbee2mqtt struktur anders aufgebaut. Wie gesagt nutze mal zigbee2mqtt/# als input - die Change Node um das Topic zu isolieren, habe ich angepasst. Das mit dem Bewegungsmelder war nur ein Beispiel wenn man selektieren möchte und nicht den ganzen Baum abbilden will.

                                        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 Reply Last reply
                                        0
                                        • mickymM mickym

                                          @waldmensch Generell muss man seit dem Admin5 - einmal auch immer noch das Skript von @fastfoot drüberlaufen lassen - das automatische Erstellen von Objekten im Admin5 lässt wohl auf sich warten.

                                          Also dieses Skript importieren - und einmal ausführen:

                                          /**
                                          * Zweck:       Korrigiert übergeordnete Ordnerstrukturen eines Datenpunkts
                                          * Datum:      07.08.2021
                                          * Autor:       @fastfoot
                                          */
                                          
                                          //              In den Settings der Javascript-Instanz muss setObject erlaubt sein!!!
                                          
                                          let arr = [],
                                            id = '';
                                          
                                          const ids = $('0_userdata.0.*');
                                          ids.each(idTmp => {
                                            arr=idTmp.split('.');
                                            arr.splice(arr.length-1);
                                            id=arr.join('.');
                                            if(arr[0] === '0_userdata' || arr[0] === 'alias' || arr[0] === 'mqtt' || arr[0] === 'javascript'){
                                                correctObject(id, arr);
                                            }
                                          })
                                          
                                          function correctObject(id,arr){
                                            if(arr.length === 2) return;
                                            if(!existsObject(id)){
                                                let obj = {};
                                                obj = {
                                                    type: 'folder',
                                                    common:{
                                                        name: arr[arr.length - 1]
                                                    }
                                                }
                                                extendObject(id, obj, e => {
                                                    if (e) log('Fehler beim Schreiben des Objektes: '+ id + ' ' + e);
                                                })
                                            }
                                            arr.splice(arr.length - 1);
                                            id = arr.join('.');
                                            correctObject(id, arr);
                                          }
                                          

                                          Muss man nur einmal machen - wenn die Objekte angelegt sind - kann der Flow ungehindert weiter in die einzelnen Datenpunkte schreiben.

                                          ? Offline
                                          ? Offline
                                          A Former User
                                          wrote on last edited by
                                          #33

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

                                          @waldmensch Generell muss man seit dem Admin5 - einmal auch immer noch das Skript von @fastfoot drüberlaufen lassen - das automatische Erstellen von Objekten im Admin5 lässt wohl auf sich warten.

                                          Also dieses Skript importieren - und einmal ausführen:

                                          /**
                                          * Zweck:       Korrigiert übergeordnete Ordnerstrukturen eines Datenpunkts
                                          * Datum:      07.08.2021
                                          * Autor:       @fastfoot
                                          */
                                          
                                          //              In den Settings der Javascript-Instanz muss setObject erlaubt sein!!!
                                          
                                          let arr = [],
                                            id = '';
                                          
                                          const ids = $('0_userdata.0.*');
                                          ids.each(idTmp => {
                                            arr=idTmp.split('.');
                                            arr.splice(arr.length-1);
                                            id=arr.join('.');
                                            if(arr[0] === '0_userdata' || arr[0] === 'alias' || arr[0] === 'mqtt' || arr[0] === 'javascript'){
                                                correctObject(id, arr);
                                            }
                                          })
                                          
                                          function correctObject(id,arr){
                                            if(arr.length === 2) return;
                                            if(!existsObject(id)){
                                                let obj = {};
                                                obj = {
                                                    type: 'folder',
                                                    common:{
                                                        name: arr[arr.length - 1]
                                                    }
                                                }
                                                extendObject(id, obj, e => {
                                                    if (e) log('Fehler beim Schreiben des Objektes: '+ id + ' ' + e);
                                                })
                                            }
                                            arr.splice(arr.length - 1);
                                            id = arr.join('.');
                                            correctObject(id, arr);
                                          }
                                          

                                          Muss man nur einmal machen - wenn die Objekte angelegt sind - kann der Flow ungehindert weiter in die einzelnen Datenpunkte schreiben.

                                          Das war mit dem Script gemeint.

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


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          761

                                          Online

                                          32.4k

                                          Users

                                          81.4k

                                          Topics

                                          1.3m

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

                                          • Don't have an account? Register

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