[
   {
       "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": "a075356cecfc791a",
       "type": "inject",
       "z": "7e6af0015415146d",
       "name": "",
       "props": [
           {
               "p": "payload"
           }
       ],
       "repeat": "",
       "crontab": "",
       "once": false,
       "onceDelay": 0.1,
       "topic": "",
       "payload": "{\"data\":[{\"type\":\"fiat_wallet_transaction\",\"attributes\":{\"fiat_wallet_id\":\"4019cdb0-1d62-11e8-b4b2-313f9b0a3bca\",\"user_id\":\"331efc50-1d62-11e8-89e6-c9db2cf7f1cc\",\"fiat_id\":\"1\",\"amount\":\"10.00000000\",\"fee\":\"0.00000000\",\"to_eur_rate\":\"1.00000000\",\"time\":{\"date_iso8601\":\"2019-02-21T17:53:23+01:00\",\"unix\":\"1550768003\"},\"in_or_out\":\"outgoing\",\"type\":\"transfer\",\"status\":\"finished\",\"confirmation_by\":\"not_required\",\"confirmed\":false,\"payment_option_id\":\"12\",\"requires_2fa_approval\":false,\"last_changed\":{\"date_iso8601\":\"2019-02-21T17:53:23+01:00\",\"unix\":\"1550768003\"}},\"id\":\"330bf710-35f9-11e9-9ad6-835877ccb6b9\"},{\"type\":\"fiat_wallet_transaction\",\"attributes\":{\"fiat_wallet_id\":\"2a02d5e0-9fad-11e8-b262-8fdb9d6a563e\",\"user_id\":\"331efc50-1d62-11e8-89e6-c9db2cf7f1cc\",\"fiat_id\":\"1\",\"amount\":\"10.00000000\",\"fee\":\"0.00000000\",\"to_eur_rate\":\"1.00000000\",\"time\":{\"date_iso8601\":\"2019-02-21T17:53:23+01:00\",\"unix\":\"1550768003\"},\"in_or_out\":\"incoming\",\"type\":\"transfer\",\"status\":\"finished\",\"confirmation_by\":\"not_required\",\"confirmed\":false,\"payment_option_id\":\"12\",\"requires_2fa_approval\":false,\"last_changed\":{\"date_iso8601\":\"2019-02-21T17:53:23+01:00\",\"unix\":\"1550768003\"}},\"id\":\"33190c50-35f9-11e9-8642-a5468ff4ff64\"}],\"meta\":{\"total_count\":114,\"next_cursor\":\"33190c50-35f9-11e9-8642-a5468ff4ff64\",\"page_size\":2},\"links\":{\"next\":\"?next_cursor=33190c50-35f9-11e9-8642-a5468ff4ff64&page_size=2\",\"self\":\"?cursor=&page_size=2\"}}",
       "payloadType": "json",
       "x": 150,
       "y": 5240,
       "wires": [
           [
               "3dc0702e714a897f"
           ]
       ]
   },
   {
       "id": "b898d86b3884bc36",
       "type": "debug",
       "z": "7e6af0015415146d",
       "name": "Transactions (Menge, Gebühr)",
       "active": true,
       "tosidebar": true,
       "console": false,
       "tostatus": false,
       "complete": "payload",
       "targetType": "msg",
       "statusVal": "",
       "statusType": "auto",
       "x": 1210,
       "y": 5160,
       "wires": []
   },
   {
       "id": "8b8520f92f681b04",
       "type": "subflow:6e802f1553b18149",
       "z": "7e6af0015415146d",
       "name": "",
       "env": [
           {
               "name": "top",
               "value": "Bitpanda.transactions",
               "type": "str"
           }
       ],
       "x": 570,
       "y": 5240,
       "wires": [
           [
               "6979094714cf1209"
           ]
       ]
   },
   {
       "id": "98cef2a01bd11c8d",
       "type": "ioBroker out",
       "z": "7e6af0015415146d",
       "name": "",
       "topic": "",
       "ack": "true",
       "autoCreate": "true",
       "stateName": "",
       "role": "",
       "payloadType": "",
       "readonly": "false",
       "stateUnit": "",
       "stateMin": "",
       "stateMax": "",
       "x": 1160,
       "y": 5240,
       "wires": []
   },
   {
       "id": "3dc0702e714a897f",
       "type": "change",
       "z": "7e6af0015415146d",
       "name": "",
       "rules": [
           {
               "t": "set",
               "p": "payload",
               "pt": "msg",
               "to": "payload.data[0].{\t   \"Menge\": $number(attributes.amount),\t   \"Gebühr\": $number(attributes.fee),\t   \"Wechselkurs\": $number(attributes.to_eur_rate),\t   \"status\": attributes.status,\t   \"datum\": attributes.time.date_iso8601\t}",
               "tot": "jsonata"
           }
       ],
       "action": "",
       "property": "",
       "from": "",
       "to": "",
       "reg": false,
       "x": 330,
       "y": 5240,
       "wires": [
           [
               "8b8520f92f681b04"
           ]
       ]
   },
   {
       "id": "6979094714cf1209",
       "type": "switch",
       "z": "7e6af0015415146d",
       "name": "",
       "property": "topic",
       "propertyType": "msg",
       "rules": [
           {
               "t": "regex",
               "v": "Menge|Gebühr",
               "vt": "str",
               "case": false
           },
           {
               "t": "else"
           }
       ],
       "checkall": "true",
       "repair": false,
       "outputs": 2,
       "x": 770,
       "y": 5240,
       "wires": [
           [
               "b6fce51641a34e9e"
           ],
           [
               "1aba9e20b023f374",
               "98cef2a01bd11c8d"
           ]
       ]
   },
   {
       "id": "1aba9e20b023f374",
       "type": "debug",
       "z": "7e6af0015415146d",
       "name": "Transactions",
       "active": true,
       "tosidebar": true,
       "console": false,
       "tostatus": false,
       "complete": "payload",
       "targetType": "msg",
       "statusVal": "",
       "statusType": "auto",
       "x": 950,
       "y": 5300,
       "wires": []
   },
   {
       "id": "b6fce51641a34e9e",
       "type": "change",
       "z": "7e6af0015415146d",
       "name": "",
       "rules": [
           {
               "t": "set",
               "p": "stateUnit",
               "pt": "msg",
               "to": "€",
               "tot": "str"
           }
       ],
       "action": "",
       "property": "",
       "from": "",
       "to": "",
       "reg": false,
       "x": 950,
       "y": 5160,
       "wires": [
           [
               "b898d86b3884bc36",
               "98cef2a01bd11c8d"
           ]
       ]
   }
]