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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. JSON Array auslesen: Blockly, JavaScript, NodeRed

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    23
    1
    1.3k

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.5k

JSON Array auslesen: Blockly, JavaScript, NodeRed

Geplant Angeheftet Gesperrt Verschoben Blockly
16 Beiträge 4 Kommentatoren 2.2k Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • Domi920D Offline
    Domi920D Offline
    Domi920
    schrieb am zuletzt editiert von Domi920
    #1

    Hallo,
    würde Hilfe beim Export der Daten des Reinigungsplans meines Ecovacs Saugroboters brauchen.
    Die Reinigungszeiten, Tage, usw. befinden sich im JSON Format.
    Es gibt viele Anleitungen, aber keine die sich mit einen Array im JSON befasst.

    Das JSON sieht wie folgt aus:

    [{"sid":"timing_name_648006833100","cleanCtl":{"type":"SpotArea","spotAreas":"0,2"},"enabled":true,"onlyOnce":false,"weekdays":{"Mon":false,"Tue":true,"Wed":true,"Thu":false,"Fri":true,"Sat":true,"Sun":true},"hour":"19","minute":"0"},{"sid":"timing_name_720007986100","cleanCtl":{"type":"SpotArea","spotAreas":"4,6"},"enabled":true,"onlyOnce":false,"weekdays":{"Mon":false,"Tue":false,"Wed":false,"Thu":false,"Fri":true,"Sat":false,"Sun":true},"hour":"20","minute":"0"},{"sid":"timing_name_630005676100","cleanCtl":{"type":"SpotArea","spotAreas":"4"},"enabled":true,"onlyOnce":false,"weekdays":{"Mon":false,"Tue":false,"Wed":false,"Thu":true,"Fri":false,"Sat":false,"Sun":false},"hour":"17","minute":"30"}]
    

    Hier sieht man einige Daten als Bild:
    bild.jpg

    Weiß jemand wie ich verschiedene Datenpunkte rausholen kann?
    Am besten wäre es, wenn man die Anzahl der Reinigungsprogramme auch zählen lassen könnte.
    Würde gerne einzele Datenpunkte beschreiben und diese dann in der Vis anzeigen lassen.

    Wenn jemanden eine andere und bessere Idee hat, jederzeit her damit.

    Vielen Dank jetzt schon mal an Alle!

    Gruß Dominik

    arteckA paul53P 2 Antworten Letzte Antwort
    0
    • Domi920D Domi920

      Hallo,
      würde Hilfe beim Export der Daten des Reinigungsplans meines Ecovacs Saugroboters brauchen.
      Die Reinigungszeiten, Tage, usw. befinden sich im JSON Format.
      Es gibt viele Anleitungen, aber keine die sich mit einen Array im JSON befasst.

      Das JSON sieht wie folgt aus:

      [{"sid":"timing_name_648006833100","cleanCtl":{"type":"SpotArea","spotAreas":"0,2"},"enabled":true,"onlyOnce":false,"weekdays":{"Mon":false,"Tue":true,"Wed":true,"Thu":false,"Fri":true,"Sat":true,"Sun":true},"hour":"19","minute":"0"},{"sid":"timing_name_720007986100","cleanCtl":{"type":"SpotArea","spotAreas":"4,6"},"enabled":true,"onlyOnce":false,"weekdays":{"Mon":false,"Tue":false,"Wed":false,"Thu":false,"Fri":true,"Sat":false,"Sun":true},"hour":"20","minute":"0"},{"sid":"timing_name_630005676100","cleanCtl":{"type":"SpotArea","spotAreas":"4"},"enabled":true,"onlyOnce":false,"weekdays":{"Mon":false,"Tue":false,"Wed":false,"Thu":true,"Fri":false,"Sat":false,"Sun":false},"hour":"17","minute":"30"}]
      

      Hier sieht man einige Daten als Bild:
      bild.jpg

      Weiß jemand wie ich verschiedene Datenpunkte rausholen kann?
      Am besten wäre es, wenn man die Anzahl der Reinigungsprogramme auch zählen lassen könnte.
      Würde gerne einzele Datenpunkte beschreiben und diese dann in der Vis anzeigen lassen.

      Wenn jemanden eine andere und bessere Idee hat, jederzeit her damit.

      Vielen Dank jetzt schon mal an Alle!

      Gruß Dominik

      arteckA Offline
      arteckA Offline
      arteck
      Developer Most Active
      schrieb am zuletzt editiert von
      #2

      @domi920 ich such mal für dich

      https://forum.iobroker.net/search?term=JSON Array parsen&in=titlesposts&matchWords=all&sortBy=timestamp&sortDirection=desc&showAs=posts

      zigbee hab ich, zwave auch, nuc's genauso und HA auch

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

        Wenn ihr nicht immer an Eurem Blockly hängen würdet, hätte ich ja eine fertige Lösung.

        Obiges Array in Datenpunkten:
        3bc87809-ca70-4aa4-9efd-049c0623b87e-image.png

        aber halt mit einer "besseren" Logikmaschine. ;) - Hilft Dir zwar jetzt nichts - aber vielleicht solltest Du Dir doch mal überlegen, ob Du nicht zumindest 2 gleisig fahren willst. ;)

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

        1 Antwort Letzte Antwort
        0
        • Domi920D Domi920

          Hallo,
          würde Hilfe beim Export der Daten des Reinigungsplans meines Ecovacs Saugroboters brauchen.
          Die Reinigungszeiten, Tage, usw. befinden sich im JSON Format.
          Es gibt viele Anleitungen, aber keine die sich mit einen Array im JSON befasst.

          Das JSON sieht wie folgt aus:

          [{"sid":"timing_name_648006833100","cleanCtl":{"type":"SpotArea","spotAreas":"0,2"},"enabled":true,"onlyOnce":false,"weekdays":{"Mon":false,"Tue":true,"Wed":true,"Thu":false,"Fri":true,"Sat":true,"Sun":true},"hour":"19","minute":"0"},{"sid":"timing_name_720007986100","cleanCtl":{"type":"SpotArea","spotAreas":"4,6"},"enabled":true,"onlyOnce":false,"weekdays":{"Mon":false,"Tue":false,"Wed":false,"Thu":false,"Fri":true,"Sat":false,"Sun":true},"hour":"20","minute":"0"},{"sid":"timing_name_630005676100","cleanCtl":{"type":"SpotArea","spotAreas":"4"},"enabled":true,"onlyOnce":false,"weekdays":{"Mon":false,"Tue":false,"Wed":false,"Thu":true,"Fri":false,"Sat":false,"Sun":false},"hour":"17","minute":"30"}]
          

          Hier sieht man einige Daten als Bild:
          bild.jpg

          Weiß jemand wie ich verschiedene Datenpunkte rausholen kann?
          Am besten wäre es, wenn man die Anzahl der Reinigungsprogramme auch zählen lassen könnte.
          Würde gerne einzele Datenpunkte beschreiben und diese dann in der Vis anzeigen lassen.

          Wenn jemanden eine andere und bessere Idee hat, jederzeit her damit.

          Vielen Dank jetzt schon mal an Alle!

          Gruß Dominik

          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von paul53
          #4

          @domi920 sagte: Das JSON sieht wie folgt aus:

          Beispiel, wie man für jedes Reinigungsprogramm einen String mit den zugehörigen Wochentagen erhält (Debug zeigt den String):

          Bild_2022-08-11_150903260.png

          Weitere Informationen aus der Variable obj zu ermitteln, dürfte nicht schwer fallen.

          @domi920 sagte in JSON Array mit Hilfe von Blockly pharsen, Daten auslesen:

          Anzahl der Reinigungsprogramme auch zählen lassen könnte.

          "Länge von Liste" liefert die Anzahl.

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          1 Antwort Letzte Antwort
          0
          • Domi920D Offline
            Domi920D Offline
            Domi920
            schrieb am zuletzt editiert von
            #5

            Vielen Dank für die großartige Hilfsbereitschaft an alle!

            @mickym deine Lösung sieht im Ergebnis echt super aus! Würde gerne dein Skript mal testen wenn du es zur Verfügung stellst.
            Es wäre in der Tat eine Überlegung Wert zweigleisig ink. Blockly zu fahren.

            @paul53 danke für das tolle Blockly! Es ist sehr gut nachvollziehbar was gemacht wird und man weiß wie man es erweitern kann!

            mickymM 1 Antwort Letzte Antwort
            0
            • Domi920D Domi920

              Vielen Dank für die großartige Hilfsbereitschaft an alle!

              @mickym deine Lösung sieht im Ergebnis echt super aus! Würde gerne dein Skript mal testen wenn du es zur Verfügung stellst.
              Es wäre in der Tat eine Überlegung Wert zweigleisig ink. Blockly zu fahren.

              @paul53 danke für das tolle Blockly! Es ist sehr gut nachvollziehbar was gemacht wird und man weiß wie man es erweitern kann!

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

              @domi920 sagte in JSON Array mit Hilfe von Blockly pharsen, Daten auslesen:

              Vielen Dank für die großartige Hilfsbereitschaft an alle!

              @mickym deine Lösung sieht im Ergebnis echt super aus! Würde gerne dein Skript mal testen wenn du es zur Verfügung stellst.
              Es wäre in der Tat eine Überlegung Wert zweigleisig ink. Blockly zu fahren.

              @paul53 danke für das tolle Blockly! Es ist sehr gut nachvollziehbar was gemacht wird und man weiß wie man es erweitern kann!

              Aber klar doch - mein Script ist ein NodeRed Flow.

              [
                 {
                     "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": "44531c3bb9864c19",
                     "type": "subflow:6e802f1553b18149",
                     "z": "393214410c8f2f15",
                     "name": "",
                     "env": [
                         {
                             "name": "top",
                             "value": "saugroboter",
                             "type": "str"
                         }
                     ],
                     "x": 710,
                     "y": 660,
                     "wires": [
                         [
                             "5f78966b590a9a12"
                         ]
                     ]
                 },
                 {
                     "id": "5f78966b590a9a12",
                     "type": "ioBroker out",
                     "z": "393214410c8f2f15",
                     "name": "",
                     "topic": "",
                     "ack": "true",
                     "autoCreate": "true",
                     "stateName": "",
                     "role": "",
                     "payloadType": "",
                     "readonly": "",
                     "stateUnit": "",
                     "stateMin": "",
                     "stateMax": "",
                     "x": 940,
                     "y": 660,
                     "wires": []
                 },
                 {
                     "id": "07bf530c8f1ad27e",
                     "type": "comment",
                     "z": "393214410c8f2f15",
                     "name": "Saugroboter",
                     "info": "",
                     "x": 430,
                     "y": 600,
                     "wires": []
                 },
                 {
                     "id": "6ba806159cd6d525",
                     "type": "ioBroker in",
                     "z": "393214410c8f2f15",
                     "name": "Saugroboter JSON",
                     "topic": "0_userdata.0.saugroboter.JSON",
                     "payloadType": "value",
                     "onlyack": "",
                     "func": "all",
                     "gap": "",
                     "fireOnStart": "false",
                     "outFormat": "MQTT",
                     "x": 450,
                     "y": 660,
                     "wires": [
                         [
                             "44531c3bb9864c19"
                         ]
                     ]
                 }
              ]
              

              Aber ich mach noch ein paar Videos für Dich, damit Du weißt wie toll integrativ der iobroker ist und man eben nicht auf Blockly festgelegt sein muss. ;)

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

              Domi920D 1 Antwort Letzte Antwort
              0
              • mickymM mickym

                @domi920 sagte in JSON Array mit Hilfe von Blockly pharsen, Daten auslesen:

                Vielen Dank für die großartige Hilfsbereitschaft an alle!

                @mickym deine Lösung sieht im Ergebnis echt super aus! Würde gerne dein Skript mal testen wenn du es zur Verfügung stellst.
                Es wäre in der Tat eine Überlegung Wert zweigleisig ink. Blockly zu fahren.

                @paul53 danke für das tolle Blockly! Es ist sehr gut nachvollziehbar was gemacht wird und man weiß wie man es erweitern kann!

                Aber klar doch - mein Script ist ein NodeRed Flow.

                [
                   {
                       "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": "44531c3bb9864c19",
                       "type": "subflow:6e802f1553b18149",
                       "z": "393214410c8f2f15",
                       "name": "",
                       "env": [
                           {
                               "name": "top",
                               "value": "saugroboter",
                               "type": "str"
                           }
                       ],
                       "x": 710,
                       "y": 660,
                       "wires": [
                           [
                               "5f78966b590a9a12"
                           ]
                       ]
                   },
                   {
                       "id": "5f78966b590a9a12",
                       "type": "ioBroker out",
                       "z": "393214410c8f2f15",
                       "name": "",
                       "topic": "",
                       "ack": "true",
                       "autoCreate": "true",
                       "stateName": "",
                       "role": "",
                       "payloadType": "",
                       "readonly": "",
                       "stateUnit": "",
                       "stateMin": "",
                       "stateMax": "",
                       "x": 940,
                       "y": 660,
                       "wires": []
                   },
                   {
                       "id": "07bf530c8f1ad27e",
                       "type": "comment",
                       "z": "393214410c8f2f15",
                       "name": "Saugroboter",
                       "info": "",
                       "x": 430,
                       "y": 600,
                       "wires": []
                   },
                   {
                       "id": "6ba806159cd6d525",
                       "type": "ioBroker in",
                       "z": "393214410c8f2f15",
                       "name": "Saugroboter JSON",
                       "topic": "0_userdata.0.saugroboter.JSON",
                       "payloadType": "value",
                       "onlyack": "",
                       "func": "all",
                       "gap": "",
                       "fireOnStart": "false",
                       "outFormat": "MQTT",
                       "x": 450,
                       "y": 660,
                       "wires": [
                           [
                               "44531c3bb9864c19"
                           ]
                       ]
                   }
                ]
                

                Aber ich mach noch ein paar Videos für Dich, damit Du weißt wie toll integrativ der iobroker ist und man eben nicht auf Blockly festgelegt sein muss. ;)

                Domi920D Offline
                Domi920D Offline
                Domi920
                schrieb am zuletzt editiert von
                #7

                @mickym vielen Dank!
                NodeRed hab ich zum Glück schon im Einsatz, weil da meine virtuellen Alexa Smart Home Geräte sind.

                Auf das Video bin ich sehr gespannt!

                mickymM 1 Antwort Letzte Antwort
                0
                • Domi920D Domi920

                  @mickym vielen Dank!
                  NodeRed hab ich zum Glück schon im Einsatz, weil da meine virtuellen Alexa Smart Home Geräte sind.

                  Auf das Video bin ich sehr gespannt!

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

                  @domi920 sagte in JSON Array mit Hilfe von Blockly pharsen, Daten auslesen:

                  @mickym vielen Dank!
                  NodeRed hab ich zum Glück schon im Einsatz, weil da meine virtuellen Alexa Smart Home Geräte sind.

                  Auf das Video bin ich sehr gespannt!

                  So ich hoffe, Du nimmst es etwas mit Humor und verzeihst meine nicht ganz perfekten Versuche im Video die beiden Fenster parallel darzustellen. Ich wußte ja nicht, dass Du dieses hervorragende Tool mit den roten Knoten schon im Einsatz hast, weil ihr halt immer Blockly in Euren Threads schreibt. ;) Im Prinzip brauchst Du Video 2 ja dann nicht mehr. ;)

                  Hier mal die Videos:

                  1. BlocklyFan schreibt JSON-string.mp4
                  2. BlocklyFan probiert mal was Neues.mp4
                  3. BlocklyFan importiert 1. Node Red Flow und ist begeistert.mp4
                  4. BlocklyFan ändert JSON String und Datenpunkte werden aktualisiert.mp4

                  Ach und weil Du den NodeRed Adapter schon im Einsatz hast, der Flow funktioniert nur, wenn Du in der Adapterkonfiguration (wie im Video 2 dargestellt), das Erstellen von Fremdobjekten zu lässt (anhakst). ;)

                  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.

                  Domi920D 1 Antwort Letzte Antwort
                  0
                  • mickymM mickym

                    @domi920 sagte in JSON Array mit Hilfe von Blockly pharsen, Daten auslesen:

                    @mickym vielen Dank!
                    NodeRed hab ich zum Glück schon im Einsatz, weil da meine virtuellen Alexa Smart Home Geräte sind.

                    Auf das Video bin ich sehr gespannt!

                    So ich hoffe, Du nimmst es etwas mit Humor und verzeihst meine nicht ganz perfekten Versuche im Video die beiden Fenster parallel darzustellen. Ich wußte ja nicht, dass Du dieses hervorragende Tool mit den roten Knoten schon im Einsatz hast, weil ihr halt immer Blockly in Euren Threads schreibt. ;) Im Prinzip brauchst Du Video 2 ja dann nicht mehr. ;)

                    Hier mal die Videos:

                    1. BlocklyFan schreibt JSON-string.mp4
                    2. BlocklyFan probiert mal was Neues.mp4
                    3. BlocklyFan importiert 1. Node Red Flow und ist begeistert.mp4
                    4. BlocklyFan ändert JSON String und Datenpunkte werden aktualisiert.mp4

                    Ach und weil Du den NodeRed Adapter schon im Einsatz hast, der Flow funktioniert nur, wenn Du in der Adapterkonfiguration (wie im Video 2 dargestellt), das Erstellen von Fremdobjekten zu lässt (anhakst). ;)

                    Domi920D Offline
                    Domi920D Offline
                    Domi920
                    schrieb am zuletzt editiert von
                    #9

                    @mickym Natürlich nehme ich deine Nachricht mit Humor :laughing: Dein Humor & vor allem deine Hilfe ist exzellent!
                    Ich glaube, dass viele Leute hier lieber Blockly haben, weil sie NodeRed nicht kennen. Ich selbst habe es auch nur wegen Alexa :laughing:

                    Wenn wir noch den Feinschliff machen könnten, wär ich nur noch glücklich:
                    Wie bzw. wo kann man den Pfad von

                    0_userdata.0.saugroboter.
                    

                    ändern?

                    Muss der JSON im gleichen Ordner sein, oder ist es auch in Ordnung, wenn dieser im Ordner vom Saugroboter ist?

                    Wenn ich das richtig sehe, kann man in NodeRed im "Eingangs-Datenpunkt" einstellen, ob dieser nur auf bestätigte oder egal reagiert, oder?

                    mickymM 1 Antwort Letzte Antwort
                    0
                    • Domi920D Domi920

                      @mickym Natürlich nehme ich deine Nachricht mit Humor :laughing: Dein Humor & vor allem deine Hilfe ist exzellent!
                      Ich glaube, dass viele Leute hier lieber Blockly haben, weil sie NodeRed nicht kennen. Ich selbst habe es auch nur wegen Alexa :laughing:

                      Wenn wir noch den Feinschliff machen könnten, wär ich nur noch glücklich:
                      Wie bzw. wo kann man den Pfad von

                      0_userdata.0.saugroboter.
                      

                      ändern?

                      Muss der JSON im gleichen Ordner sein, oder ist es auch in Ordnung, wenn dieser im Ordner vom Saugroboter ist?

                      Wenn ich das richtig sehe, kann man in NodeRed im "Eingangs-Datenpunkt" einstellen, ob dieser nur auf bestätigte oder egal reagiert, oder?

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

                      @domi920 Also eigene Daten schreiben sollte man immer unter 0_userdata.0 - deswegen habe ich das auch so fest codiert.

                      So nun zu Deinen Fragen:

                      1. Nein den JSON kannst Du herausholen woher Du willst (ist in der iobroker IN Node festgelegt) - der Flow läuft immer von links nach rechts wie beim Lesen. Also Eingang (iobroker-IN) - Subflow ist Bearbeitung - Ausgang ist iobrokerOut:

                      3604ff70-0810-4bb8-8d22-a6ce3b40f2b3-image.png

                      Einfach bei Topic den richtigen Pfad reinkopieren in die iobroker-IN Node

                      1. Das ACK - Flag entspricht dem Blockly egal=Send all events, bestätigt = Only updates, unbestätigt = only commands

                      2. Den Ausgang muss wie gesagt direkt unter 0_userdata.0 liegen - da dies der vorgesehene Punkt ist, um eigene Datenpunkte zu erstellen:

                      Wie der oberste Punkte heißen soll, kannst Du in meiner Subflow Node festlegen:

                      ee6f4b99-b6d5-4b8f-8599-54e9ac0cfd54-image.png

                      Du kannst da auch tiefer liegende Punkte nehmen, wie wohnung.saugroboter.

                      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.

                      Domi920D 1 Antwort Letzte Antwort
                      0
                      • mickymM mickym

                        @domi920 Also eigene Daten schreiben sollte man immer unter 0_userdata.0 - deswegen habe ich das auch so fest codiert.

                        So nun zu Deinen Fragen:

                        1. Nein den JSON kannst Du herausholen woher Du willst (ist in der iobroker IN Node festgelegt) - der Flow läuft immer von links nach rechts wie beim Lesen. Also Eingang (iobroker-IN) - Subflow ist Bearbeitung - Ausgang ist iobrokerOut:

                        3604ff70-0810-4bb8-8d22-a6ce3b40f2b3-image.png

                        Einfach bei Topic den richtigen Pfad reinkopieren in die iobroker-IN Node

                        1. Das ACK - Flag entspricht dem Blockly egal=Send all events, bestätigt = Only updates, unbestätigt = only commands

                        2. Den Ausgang muss wie gesagt direkt unter 0_userdata.0 liegen - da dies der vorgesehene Punkt ist, um eigene Datenpunkte zu erstellen:

                        Wie der oberste Punkte heißen soll, kannst Du in meiner Subflow Node festlegen:

                        ee6f4b99-b6d5-4b8f-8599-54e9ac0cfd54-image.png

                        Du kannst da auch tiefer liegende Punkte nehmen, wie wohnung.saugroboter.

                        Domi920D Offline
                        Domi920D Offline
                        Domi920
                        schrieb am zuletzt editiert von
                        #11

                        @mickym Habs gerade durch etwas rumprobieren selbst rausgefunden. Aber da bin ich noch am Screenshots machen, bekomme ich von dir schon die Meisterlösung!
                        Respekt!

                        Nur noch kurz am Rande, weißt Du zufälligerweise, wie man die Zeitpläne zählen kann? Also sprich wie viele Ordner erstellt wurden?

                        Wobei es dann auch wichtig wäre, dass die Ordner gelöscht werden, wenn eine Reinigungsaufgabe gelöscht wird und das JSON dementsprechend aktualisiert wird.
                        Was meinst Du? Ist das möglich, oder überhaupt sinnvoll?

                        mickymM 2 Antworten Letzte Antwort
                        0
                        • Domi920D Offline
                          Domi920D Offline
                          Domi920
                          schrieb am zuletzt editiert von
                          #12

                          Muss jetzt leider los zur Arbeit...:disappointed:
                          Werde die Beiträge Nachmittags sehen, bin aber schon sehr gespannt!

                          Nochmals vielen Dank!:clap:

                          1 Antwort Letzte Antwort
                          0
                          • Domi920D Domi920

                            @mickym Habs gerade durch etwas rumprobieren selbst rausgefunden. Aber da bin ich noch am Screenshots machen, bekomme ich von dir schon die Meisterlösung!
                            Respekt!

                            Nur noch kurz am Rande, weißt Du zufälligerweise, wie man die Zeitpläne zählen kann? Also sprich wie viele Ordner erstellt wurden?

                            Wobei es dann auch wichtig wäre, dass die Ordner gelöscht werden, wenn eine Reinigungsaufgabe gelöscht wird und das JSON dementsprechend aktualisiert wird.
                            Was meinst Du? Ist das möglich, oder überhaupt sinnvoll?

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

                            @domi920 Also löschen geht meines Erachten im iobroker generell schlecht (unabhängig von Blockly oder NodeRed) - da musst Du dann wirklich Javascript bemühen - da muss man in der Objektdatenbank rumpfuschen - Das ist generell nicht vorgesehen.
                            Die aktiven Pläne musst Du dann wie gesagt über die Anzahl der Array-Elemente ermitteln oder über den Datenpunkt enabled=true in den jeweiligen Programmen.

                            Entweder nimmst Du die Lösung von @paul53 und schreibst die Anzahl in einen eigenen Datenpunkt oder natürlich kannst Du das auch mit NodeRed machen und das ebenfalls wegschreiben.

                            fa41ccb0-dce8-41d3-a7f7-c7619c5093a5-image.png

                            [
                               {
                                   "id": "baf62ac3e6514347",
                                   "type": "json",
                                   "z": "8f752c62d86ac247",
                                   "name": "",
                                   "property": "payload",
                                   "action": "",
                                   "pretty": false,
                                   "x": 470,
                                   "y": 260,
                                   "wires": [
                                       [
                                           "3e49a6f21e39ab84"
                                       ]
                                   ]
                               },
                               {
                                   "id": "3e49a6f21e39ab84",
                                   "type": "change",
                                   "z": "8f752c62d86ac247",
                                   "name": "",
                                   "rules": [
                                       {
                                           "t": "set",
                                           "p": "payload",
                                           "pt": "msg",
                                           "to": "$count(payload)\t",
                                           "tot": "jsonata"
                                       }
                                   ],
                                   "action": "",
                                   "property": "",
                                   "from": "",
                                   "to": "",
                                   "reg": false,
                                   "x": 650,
                                   "y": 260,
                                   "wires": [
                                       [
                                           "f9d30469e17cd287"
                                       ]
                                   ]
                               },
                               {
                                   "id": "f9d30469e17cd287",
                                   "type": "debug",
                                   "z": "8f752c62d86ac247",
                                   "name": "",
                                   "active": true,
                                   "tosidebar": true,
                                   "console": false,
                                   "tostatus": false,
                                   "complete": "false",
                                   "statusVal": "",
                                   "statusType": "auto",
                                   "x": 870,
                                   "y": 260,
                                   "wires": []
                               }
                            ]
                            

                            Also 3 aktive Pläne - 0,1,2

                            0b8244a6-476f-49b0-bb19-825f337f7289-image.png

                            Ansonsten frohes Schaffen. :)

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

                            1 Antwort Letzte Antwort
                            0
                            • Domi920D Domi920

                              @mickym Habs gerade durch etwas rumprobieren selbst rausgefunden. Aber da bin ich noch am Screenshots machen, bekomme ich von dir schon die Meisterlösung!
                              Respekt!

                              Nur noch kurz am Rande, weißt Du zufälligerweise, wie man die Zeitpläne zählen kann? Also sprich wie viele Ordner erstellt wurden?

                              Wobei es dann auch wichtig wäre, dass die Ordner gelöscht werden, wenn eine Reinigungsaufgabe gelöscht wird und das JSON dementsprechend aktualisiert wird.
                              Was meinst Du? Ist das möglich, oder überhaupt sinnvoll?

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

                              @domi920 sagte in JSON Array mit Hilfe von Blockly pharsen, Daten auslesen:

                              @mickym Habs gerade durch etwas rumprobieren selbst rausgefunden. Aber da bin ich noch am Screenshots machen, bekomme ich von dir schon die Meisterlösung!
                              Respekt!

                              Nur noch kurz am Rande, weißt Du zufälligerweise, wie man die Zeitpläne zählen kann? Also sprich wie viele Ordner erstellt wurden?

                              Wobei es dann auch wichtig wäre, dass die Ordner gelöscht werden, wenn eine Reinigungsaufgabe gelöscht wird und das JSON dementsprechend aktualisiert wird.
                              Was meinst Du? Ist das möglich, oder überhaupt sinnvoll?

                              Na in dem Fall ist Blockly - bzw. der Javascript Adapter dem NodeRed Adapter überlegen. :( - Aber wir haben ja den iobroker, der aus beiden Welten das Zusammenspiel perfekt macht. ;)

                              1f58a8c4-5676-400a-b188-de31fe8dc149-image.png

                              hier mal die Javascript-Funktion aus Blockly heraus, die zum Beispiel den Folder 2 löscht.

                              <xml xmlns="https://developers.google.com/blockly/xml">
                               <variables>
                                 <variable id="g:Gr?6y85H-gihw.$wnT">x</variable>
                               </variables>
                               <block type="update" id="wK+|12P;LDH{a5Z]Sr:q" disabled="true" x="-3412" y="88">
                                 <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                 <field name="OID">0_userdata.0.saugroboter.JSON</field>
                                 <field name="WITH_DELAY">FALSE</field>
                                 <value name="VALUE">
                                   <block type="text" id="PpI!PNqc:^[L|B9@jKDz">
                                     <field name="TEXT">[{"sid":"timing_name_648006833100","cleanCtl":{"type":"SpotArea","spotAreas":"0,2"},"enabled":true,"onlyOnce":false,"weekdays":{"Mon":false,"Tue":true,"Wed":true,"Thu":true,"Fri":true,"Sat":true,"Sun":true},"hour":"19","minute":"0"},{"sid":"timing_name_720007986100","cleanCtl":{"type":"SpotArea","spotAreas":"4,6"},"enabled":true,"onlyOnce":false,"weekdays":{"Mon":false,"Tue":false,"Wed":false,"Thu":false,"Fri":true,"Sat":false,"Sun":true},"hour":"20","minute":"0"},{"sid":"timing_name_630005676100","cleanCtl":{"type":"SpotArea","spotAreas":"4"},"enabled":true,"onlyOnce":false,"weekdays":{"Mon":false,"Tue":false,"Wed":false,"Thu":true,"Fri":false,"Sat":false,"Sun":false},"hour":"17","minute":"30"}]</field>
                                   </block>
                                 </value>
                               </block>
                               <block type="procedures_defcustomnoreturn" id="a2D_Fmwyck/4#~s8?Cd," x="-3412" y="188">
                                 <mutation statements="false">
                                   <arg name="x" varid="g:Gr?6y85H-gihw.$wnT"></arg>
                                 </mutation>
                                 <field name="NAME">deleteFolder</field>
                                 <field name="SCRIPT">ZGVsZXRlT2JqZWN0KCcwX3VzZXJkYXRhLjAuc2F1Z3JvYm90ZXIuJyArIHgsdHJ1ZSk7</field>
                                 <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                               </block>
                               <block type="procedures_callcustomnoreturn" id="i1}%R1(cx,TY4cg_vcJK" x="-3412" y="263">
                                 <mutation name="deleteFolder">
                                   <arg name="x"></arg>
                                 </mutation>
                                 <value name="ARG0">
                                   <block type="text" id="Qd$6sU!+1=}G?~QKJw@.">
                                     <field name="TEXT">2</field>
                                   </block>
                                 </value>
                               </block>
                              </xml>
                              

                              Wie gesagt - ich weiß aber nicht, ob das sinnvoll ist. In meinen Augen sind das ja nur die Reinigungsprogramme und das sagt meines Erachtens nichts über den Vollzug aus. Du kannst nur - wie beschrieben die Elemente zählen und die überzähligen dann ggf. Löschen - um das 1:1 mit dem Gerät zu halten.

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

                              1 Antwort Letzte Antwort
                              2
                              • mickymM Online
                                mickymM Online
                                mickym
                                Most Active
                                schrieb am zuletzt editiert von mickym
                                #15

                                OK - ich glaub ich hab es Dir nun rund gemacht - mit der Visualisierung musst Dich aber nun selbst kümmern.

                                Ich muss aber wieder mal zugeben, dass mir die letzte Stunde, das Blockly den letzten Nerv gekostet hat:

                                b53d0412-ad24-4f7d-90ae-7e2fd3f44759-image.png

                                Diese blöde Schleife hat auch gezählt wenn der neue Wert GRÖSSER als der vorherige Wert war, obwohl die Schrittweite positiv war.

                                Wenn ich also meine Zähler i von 4 nach 3 in Schritten von +1 - bin ich davon ausgegangen, dass die Schleife gar nicht ausgeführt wird. Anstelle dessen wir im Javascript Code eine Prüfung gemacht und diese immer ausgeführt also rückwärts und vorwärts. Sowas finde ich echt ätzend.

                                Na wenn mans weiß, macht man halt so ein Bedingung vorne dran.

                                So der ganze Zyklus sieht nun so aus. Wo immer Dein Array mit den Staubsauger-Programmen herkommt, triggert dies den NodeRed Flow. Dieser Schreibt nun die Datenpunkte und zählt gleichzeitig die aktiven Programme und schreibt diese in einen Datenpunkt active:

                                587b6a8b-e04e-4147-9f4f-14ec2c740244-image.png

                                d258fe16-c278-4418-95a1-36048e4fc9a8-image.png

                                Hier der Flow:

                                [
                                   {
                                       "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": "44531c3bb9864c19",
                                       "type": "subflow:6e802f1553b18149",
                                       "z": "8f752c62d86ac247",
                                       "name": "",
                                       "env": [
                                           {
                                               "name": "top",
                                               "value": "saugroboter",
                                               "type": "str"
                                           }
                                       ],
                                       "x": 530,
                                       "y": 200,
                                       "wires": [
                                           [
                                               "5f78966b590a9a12"
                                           ]
                                       ]
                                   },
                                   {
                                       "id": "5f78966b590a9a12",
                                       "type": "ioBroker out",
                                       "z": "8f752c62d86ac247",
                                       "name": "",
                                       "topic": "",
                                       "ack": "true",
                                       "autoCreate": "true",
                                       "stateName": "",
                                       "role": "",
                                       "payloadType": "",
                                       "readonly": "false",
                                       "stateUnit": "",
                                       "stateMin": "",
                                       "stateMax": "",
                                       "x": 860,
                                       "y": 200,
                                       "wires": []
                                   },
                                   {
                                       "id": "07bf530c8f1ad27e",
                                       "type": "comment",
                                       "z": "8f752c62d86ac247",
                                       "name": "Saugroboter",
                                       "info": "",
                                       "x": 250,
                                       "y": 140,
                                       "wires": []
                                   },
                                   {
                                       "id": "6ba806159cd6d525",
                                       "type": "ioBroker in",
                                       "z": "8f752c62d86ac247",
                                       "name": "Saugroboter JSON",
                                       "topic": "0_userdata.0.saugroboter.JSON",
                                       "payloadType": "value",
                                       "onlyack": "",
                                       "func": "all",
                                       "gap": "",
                                       "fireOnStart": "false",
                                       "outFormat": "MQTT",
                                       "x": 270,
                                       "y": 200,
                                       "wires": [
                                           [
                                               "44531c3bb9864c19",
                                               "baf62ac3e6514347"
                                           ]
                                       ]
                                   },
                                   {
                                       "id": "baf62ac3e6514347",
                                       "type": "json",
                                       "z": "8f752c62d86ac247",
                                       "name": "",
                                       "property": "payload",
                                       "action": "",
                                       "pretty": false,
                                       "x": 470,
                                       "y": 260,
                                       "wires": [
                                           [
                                               "3e49a6f21e39ab84"
                                           ]
                                       ]
                                   },
                                   {
                                       "id": "3e49a6f21e39ab84",
                                       "type": "change",
                                       "z": "8f752c62d86ac247",
                                       "name": "",
                                       "rules": [
                                           {
                                               "t": "set",
                                               "p": "payload",
                                               "pt": "msg",
                                               "to": "$count(payload)\t",
                                               "tot": "jsonata"
                                           }
                                       ],
                                       "action": "",
                                       "property": "",
                                       "from": "",
                                       "to": "",
                                       "reg": false,
                                       "x": 650,
                                       "y": 260,
                                       "wires": [
                                           [
                                               "cb865b6162ed7ec9"
                                           ]
                                       ]
                                   },
                                   {
                                       "id": "cb865b6162ed7ec9",
                                       "type": "ioBroker out",
                                       "z": "8f752c62d86ac247",
                                       "name": "",
                                       "topic": "0_userdata.0.saugroboter.active",
                                       "ack": "true",
                                       "autoCreate": "true",
                                       "stateName": "",
                                       "role": "",
                                       "payloadType": "",
                                       "readonly": "false",
                                       "stateUnit": "",
                                       "stateMin": "",
                                       "stateMax": "",
                                       "x": 910,
                                       "y": 260,
                                       "wires": []
                                   }
                                ]
                                

                                Nur wenn sich diese Anzahl in saugroboter.active ÄNDERT wird dann das Blockly getriggert und dann auch nur was gemacht, wenn dieser Wert kleiner dem vorherigen war.

                                Ist dies der Fall, werden die überschüssigen Instanzen (Folder) aus dem Objektbaum gelöscht.

                                <xml xmlns="https://developers.google.com/blockly/xml">
                                 <variables>
                                   <variable id="g:Gr?6y85H-gihw.$wnT">x</variable>
                                   <variable id="Y-Z`dQy%$Td7c7O`-EJk">i</variable>
                                 </variables>
                                 <block type="procedures_defcustomnoreturn" id="a2D_Fmwyck/4#~s8?Cd," x="-3338" y="163">
                                   <mutation statements="false">
                                     <arg name="x" varid="g:Gr?6y85H-gihw.$wnT"></arg>
                                   </mutation>
                                   <field name="NAME">deleteFolder</field>
                                   <field name="SCRIPT">ZGVsZXRlT2JqZWN0KCcwX3VzZXJkYXRhLjAuc2F1Z3JvYm90ZXIuJyArIHgsdHJ1ZSk7</field>
                                   <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                 </block>
                                 <block type="on" id="fu-KQiD%.0vog6%T@$y|" x="-3310" y="212">
                                   <field name="OID">0_userdata.0.saugroboter.active</field>
                                   <field name="CONDITION">ne</field>
                                   <field name="ACK_CONDITION"></field>
                                   <statement name="STATEMENT">
                                     <block type="controls_if" id="t4?%.,%m20rnv[ozfOGe">
                                       <value name="IF0">
                                         <block type="logic_compare" id="vR3-_hRs(p+Nl8,F-OVV">
                                           <field name="OP">LT</field>
                                           <value name="A">
                                             <block type="on_source" id="hr%EaHL{hsPNYY~K;aaX">
                                               <field name="ATTR">state.val</field>
                                             </block>
                                           </value>
                                           <value name="B">
                                             <block type="on_source" id="%aE{/c6}0,-.aVd3KiM}">
                                               <field name="ATTR">oldState.val</field>
                                             </block>
                                           </value>
                                         </block>
                                       </value>
                                       <statement name="DO0">
                                         <block type="controls_for" id="GNNhz!w:xNy~]@a,m-]3">
                                           <field name="VAR" id="Y-Z`dQy%$Td7c7O`-EJk">i</field>
                                           <value name="FROM">
                                             <shadow type="math_number" id="2j`MFD9kK9);d]-Ms1+B">
                                               <field name="NUM">0</field>
                                             </shadow>
                                             <block type="on_source" id="CR,@!%|Sl}[MaT/)28%E">
                                               <field name="ATTR">state.val</field>
                                             </block>
                                           </value>
                                           <value name="TO">
                                             <shadow type="math_number" id="BE[.yVgscNuBm(]AYehV">
                                               <field name="NUM">10</field>
                                             </shadow>
                                             <block type="math_arithmetic" id="9Kl;E,/s?6caL%a[P:oO">
                                               <field name="OP">MINUS</field>
                                               <value name="A">
                                                 <shadow type="math_number" id="C9mU)9lGiRAR^M0*dR%_">
                                                   <field name="NUM">1</field>
                                                 </shadow>
                                                 <block type="on_source" id="#Fh2=M^I[X5MhcE%0]Z:">
                                                   <field name="ATTR">oldState.val</field>
                                                 </block>
                                               </value>
                                               <value name="B">
                                                 <shadow type="math_number" id="OZi=IHmpz~fLy$*G){1a">
                                                   <field name="NUM">1</field>
                                                 </shadow>
                                               </value>
                                             </block>
                                           </value>
                                           <value name="BY">
                                             <shadow type="math_number" id="m{of7#bxr2dv#]CEa+)-">
                                               <field name="NUM">1</field>
                                             </shadow>
                                           </value>
                                           <statement name="DO">
                                             <block type="procedures_callcustomnoreturn" id="i1}%R1(cx,TY4cg_vcJK">
                                               <mutation name="deleteFolder">
                                                 <arg name="x"></arg>
                                               </mutation>
                                               <value name="ARG0">
                                                 <block type="variables_get" id="/]dc7r$3FiA4t9sY7i,Y">
                                                   <field name="VAR" id="Y-Z`dQy%$Td7c7O`-EJk">i</field>
                                                 </block>
                                               </value>
                                             </block>
                                           </statement>
                                         </block>
                                       </statement>
                                     </block>
                                   </statement>
                                 </block>
                                </xml>
                                

                                Einerseits zwar schade, dass man nicht ohne Blockly auskommt, andererseits ist es perfektes Beispiel wie die beiden Tools aus 2 Welten im iobroker zusammen arbeiten können.

                                EDIT: Und die aktuelles JS Doku zufinden - ist auch ein Kampf - wenn man das nicht jeden Tag braucht - sollte irgendwie in der aktuellen Doku irgendwo verlinkt sein:
                                https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#deleteobject

                                fe3a257e-00b0-48ab-93fd-5c2f77632cd8-image.png

                                und Achtung - ich habe die "very dangerous" Variante in dem Blockly verwendet. ;)

                                Es wurden also verwendet bei dieser Logik:

                                1. NodeRed
                                2. Blockly
                                3. JavaScript

                                Ach und vielleicht solltest Du die Überschrift des Threadtitels anpassen. ;)

                                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.

                                Domi920D 1 Antwort Letzte Antwort
                                1
                                • mickymM mickym

                                  OK - ich glaub ich hab es Dir nun rund gemacht - mit der Visualisierung musst Dich aber nun selbst kümmern.

                                  Ich muss aber wieder mal zugeben, dass mir die letzte Stunde, das Blockly den letzten Nerv gekostet hat:

                                  b53d0412-ad24-4f7d-90ae-7e2fd3f44759-image.png

                                  Diese blöde Schleife hat auch gezählt wenn der neue Wert GRÖSSER als der vorherige Wert war, obwohl die Schrittweite positiv war.

                                  Wenn ich also meine Zähler i von 4 nach 3 in Schritten von +1 - bin ich davon ausgegangen, dass die Schleife gar nicht ausgeführt wird. Anstelle dessen wir im Javascript Code eine Prüfung gemacht und diese immer ausgeführt also rückwärts und vorwärts. Sowas finde ich echt ätzend.

                                  Na wenn mans weiß, macht man halt so ein Bedingung vorne dran.

                                  So der ganze Zyklus sieht nun so aus. Wo immer Dein Array mit den Staubsauger-Programmen herkommt, triggert dies den NodeRed Flow. Dieser Schreibt nun die Datenpunkte und zählt gleichzeitig die aktiven Programme und schreibt diese in einen Datenpunkt active:

                                  587b6a8b-e04e-4147-9f4f-14ec2c740244-image.png

                                  d258fe16-c278-4418-95a1-36048e4fc9a8-image.png

                                  Hier der Flow:

                                  [
                                     {
                                         "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": "44531c3bb9864c19",
                                         "type": "subflow:6e802f1553b18149",
                                         "z": "8f752c62d86ac247",
                                         "name": "",
                                         "env": [
                                             {
                                                 "name": "top",
                                                 "value": "saugroboter",
                                                 "type": "str"
                                             }
                                         ],
                                         "x": 530,
                                         "y": 200,
                                         "wires": [
                                             [
                                                 "5f78966b590a9a12"
                                             ]
                                         ]
                                     },
                                     {
                                         "id": "5f78966b590a9a12",
                                         "type": "ioBroker out",
                                         "z": "8f752c62d86ac247",
                                         "name": "",
                                         "topic": "",
                                         "ack": "true",
                                         "autoCreate": "true",
                                         "stateName": "",
                                         "role": "",
                                         "payloadType": "",
                                         "readonly": "false",
                                         "stateUnit": "",
                                         "stateMin": "",
                                         "stateMax": "",
                                         "x": 860,
                                         "y": 200,
                                         "wires": []
                                     },
                                     {
                                         "id": "07bf530c8f1ad27e",
                                         "type": "comment",
                                         "z": "8f752c62d86ac247",
                                         "name": "Saugroboter",
                                         "info": "",
                                         "x": 250,
                                         "y": 140,
                                         "wires": []
                                     },
                                     {
                                         "id": "6ba806159cd6d525",
                                         "type": "ioBroker in",
                                         "z": "8f752c62d86ac247",
                                         "name": "Saugroboter JSON",
                                         "topic": "0_userdata.0.saugroboter.JSON",
                                         "payloadType": "value",
                                         "onlyack": "",
                                         "func": "all",
                                         "gap": "",
                                         "fireOnStart": "false",
                                         "outFormat": "MQTT",
                                         "x": 270,
                                         "y": 200,
                                         "wires": [
                                             [
                                                 "44531c3bb9864c19",
                                                 "baf62ac3e6514347"
                                             ]
                                         ]
                                     },
                                     {
                                         "id": "baf62ac3e6514347",
                                         "type": "json",
                                         "z": "8f752c62d86ac247",
                                         "name": "",
                                         "property": "payload",
                                         "action": "",
                                         "pretty": false,
                                         "x": 470,
                                         "y": 260,
                                         "wires": [
                                             [
                                                 "3e49a6f21e39ab84"
                                             ]
                                         ]
                                     },
                                     {
                                         "id": "3e49a6f21e39ab84",
                                         "type": "change",
                                         "z": "8f752c62d86ac247",
                                         "name": "",
                                         "rules": [
                                             {
                                                 "t": "set",
                                                 "p": "payload",
                                                 "pt": "msg",
                                                 "to": "$count(payload)\t",
                                                 "tot": "jsonata"
                                             }
                                         ],
                                         "action": "",
                                         "property": "",
                                         "from": "",
                                         "to": "",
                                         "reg": false,
                                         "x": 650,
                                         "y": 260,
                                         "wires": [
                                             [
                                                 "cb865b6162ed7ec9"
                                             ]
                                         ]
                                     },
                                     {
                                         "id": "cb865b6162ed7ec9",
                                         "type": "ioBroker out",
                                         "z": "8f752c62d86ac247",
                                         "name": "",
                                         "topic": "0_userdata.0.saugroboter.active",
                                         "ack": "true",
                                         "autoCreate": "true",
                                         "stateName": "",
                                         "role": "",
                                         "payloadType": "",
                                         "readonly": "false",
                                         "stateUnit": "",
                                         "stateMin": "",
                                         "stateMax": "",
                                         "x": 910,
                                         "y": 260,
                                         "wires": []
                                     }
                                  ]
                                  

                                  Nur wenn sich diese Anzahl in saugroboter.active ÄNDERT wird dann das Blockly getriggert und dann auch nur was gemacht, wenn dieser Wert kleiner dem vorherigen war.

                                  Ist dies der Fall, werden die überschüssigen Instanzen (Folder) aus dem Objektbaum gelöscht.

                                  <xml xmlns="https://developers.google.com/blockly/xml">
                                   <variables>
                                     <variable id="g:Gr?6y85H-gihw.$wnT">x</variable>
                                     <variable id="Y-Z`dQy%$Td7c7O`-EJk">i</variable>
                                   </variables>
                                   <block type="procedures_defcustomnoreturn" id="a2D_Fmwyck/4#~s8?Cd," x="-3338" y="163">
                                     <mutation statements="false">
                                       <arg name="x" varid="g:Gr?6y85H-gihw.$wnT"></arg>
                                     </mutation>
                                     <field name="NAME">deleteFolder</field>
                                     <field name="SCRIPT">ZGVsZXRlT2JqZWN0KCcwX3VzZXJkYXRhLjAuc2F1Z3JvYm90ZXIuJyArIHgsdHJ1ZSk7</field>
                                     <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                   </block>
                                   <block type="on" id="fu-KQiD%.0vog6%T@$y|" x="-3310" y="212">
                                     <field name="OID">0_userdata.0.saugroboter.active</field>
                                     <field name="CONDITION">ne</field>
                                     <field name="ACK_CONDITION"></field>
                                     <statement name="STATEMENT">
                                       <block type="controls_if" id="t4?%.,%m20rnv[ozfOGe">
                                         <value name="IF0">
                                           <block type="logic_compare" id="vR3-_hRs(p+Nl8,F-OVV">
                                             <field name="OP">LT</field>
                                             <value name="A">
                                               <block type="on_source" id="hr%EaHL{hsPNYY~K;aaX">
                                                 <field name="ATTR">state.val</field>
                                               </block>
                                             </value>
                                             <value name="B">
                                               <block type="on_source" id="%aE{/c6}0,-.aVd3KiM}">
                                                 <field name="ATTR">oldState.val</field>
                                               </block>
                                             </value>
                                           </block>
                                         </value>
                                         <statement name="DO0">
                                           <block type="controls_for" id="GNNhz!w:xNy~]@a,m-]3">
                                             <field name="VAR" id="Y-Z`dQy%$Td7c7O`-EJk">i</field>
                                             <value name="FROM">
                                               <shadow type="math_number" id="2j`MFD9kK9);d]-Ms1+B">
                                                 <field name="NUM">0</field>
                                               </shadow>
                                               <block type="on_source" id="CR,@!%|Sl}[MaT/)28%E">
                                                 <field name="ATTR">state.val</field>
                                               </block>
                                             </value>
                                             <value name="TO">
                                               <shadow type="math_number" id="BE[.yVgscNuBm(]AYehV">
                                                 <field name="NUM">10</field>
                                               </shadow>
                                               <block type="math_arithmetic" id="9Kl;E,/s?6caL%a[P:oO">
                                                 <field name="OP">MINUS</field>
                                                 <value name="A">
                                                   <shadow type="math_number" id="C9mU)9lGiRAR^M0*dR%_">
                                                     <field name="NUM">1</field>
                                                   </shadow>
                                                   <block type="on_source" id="#Fh2=M^I[X5MhcE%0]Z:">
                                                     <field name="ATTR">oldState.val</field>
                                                   </block>
                                                 </value>
                                                 <value name="B">
                                                   <shadow type="math_number" id="OZi=IHmpz~fLy$*G){1a">
                                                     <field name="NUM">1</field>
                                                   </shadow>
                                                 </value>
                                               </block>
                                             </value>
                                             <value name="BY">
                                               <shadow type="math_number" id="m{of7#bxr2dv#]CEa+)-">
                                                 <field name="NUM">1</field>
                                               </shadow>
                                             </value>
                                             <statement name="DO">
                                               <block type="procedures_callcustomnoreturn" id="i1}%R1(cx,TY4cg_vcJK">
                                                 <mutation name="deleteFolder">
                                                   <arg name="x"></arg>
                                                 </mutation>
                                                 <value name="ARG0">
                                                   <block type="variables_get" id="/]dc7r$3FiA4t9sY7i,Y">
                                                     <field name="VAR" id="Y-Z`dQy%$Td7c7O`-EJk">i</field>
                                                   </block>
                                                 </value>
                                               </block>
                                             </statement>
                                           </block>
                                         </statement>
                                       </block>
                                     </statement>
                                   </block>
                                  </xml>
                                  

                                  Einerseits zwar schade, dass man nicht ohne Blockly auskommt, andererseits ist es perfektes Beispiel wie die beiden Tools aus 2 Welten im iobroker zusammen arbeiten können.

                                  EDIT: Und die aktuelles JS Doku zufinden - ist auch ein Kampf - wenn man das nicht jeden Tag braucht - sollte irgendwie in der aktuellen Doku irgendwo verlinkt sein:
                                  https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#deleteobject

                                  fe3a257e-00b0-48ab-93fd-5c2f77632cd8-image.png

                                  und Achtung - ich habe die "very dangerous" Variante in dem Blockly verwendet. ;)

                                  Es wurden also verwendet bei dieser Logik:

                                  1. NodeRed
                                  2. Blockly
                                  3. JavaScript

                                  Ach und vielleicht solltest Du die Überschrift des Threadtitels anpassen. ;)

                                  Domi920D Offline
                                  Domi920D Offline
                                  Domi920
                                  schrieb am zuletzt editiert von
                                  #16

                                  @mickym ich bin sprachlos begeistert!
                                  Da hast du wirklich das Non-Plus-Ultra vorgelegt!
                                  Und vor allem einfach, nachvollziehbar & detailliert beschrieben :clap:

                                  Werde Deine Vorlage noch ausgiebig testen und mich dann nochmal melden, falls noch was sein sollte.

                                  Nachdem ich bei mir alles zufriedenstellend integriert habe, werde ich den Entwickler vom Ecovacs Adapter kontaktieren und dies verlinken.
                                  Denke es könnte für viele eine große Hilfe sein.

                                  Vielen vielen Dank nochmal für Deine Kompetenz!

                                  Ich hoffe der Titel bzw. die Überschrift ist passend. Falls nich nehme ich gerne Vorschläge an :smile:

                                  Gruß Dominik

                                  1 Antwort Letzte Antwort
                                  1
                                  Antworten
                                  • In einem neuen Thema antworten
                                  Anmelden zum Antworten
                                  • Älteste zuerst
                                  • Neuste zuerst
                                  • Meiste Stimmen


                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  738

                                  Online

                                  32.5k

                                  Benutzer

                                  81.7k

                                  Themen

                                  1.3m

                                  Beiträge
                                  Community
                                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                  ioBroker Community 2014-2025
                                  logo
                                  • Anmelden

                                  • Du hast noch kein Konto? Registrieren

                                  • Anmelden oder registrieren, um zu suchen
                                  • Erster Beitrag
                                    Letzter Beitrag
                                  0
                                  • Home
                                  • Aktuell
                                  • Tags
                                  • Ungelesen 0
                                  • Kategorien
                                  • Unreplied
                                  • Beliebt
                                  • GitHub
                                  • Docu
                                  • Hilfe