Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Einsteigerfragen
    4. [gelöst] json abfragen - Objekte erstellen

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [gelöst] json abfragen - Objekte erstellen

    This topic has been deleted. Only users with topic management privileges can see it.
    • rtwl
      rtwl last edited by rtwl

      Ich hab es zwar mit dem Adapter "Systeminfo Adapter to get data from systems" geschafft meine json abzufragen, und die benötigten Werte als Objekte zu speichern, aber das vermutlich nicht so optimal gelöst, da dieser Adapter laut log anscheinend bald entfernt wird.

      Daher die Frage, was ein einfacherer Weg wäre eine Json abzufragen und die Werte als Objekte zu speichern?
      Da ich kompletter Anfänger bin (mit ein wenig Hausverstand und den Mut zum testen/probieren) wäre ich froh wenn mir hier jemand helfen könnte.

      die json hier im Spoiler:

      {
       "channel0": {
         "temperature": "23.3",
         "humidity": "0",
         "chid": "0"
       },
       "channel1": {
         "temperature": "",
         "humidity": "",
         "chid": "0"
       },
       "channel2": {
         "temperature": "22.8",
         "humidity": "28",
         "chid": "C0"
       },
       "channel3": {
         "temperature": "26.4",
         "humidity": "6",
         "chid": "4F"
       },
       "channel4": {
         "temperature": "23.7",
         "humidity": "15",
         "chid": "B5"
       },
       "channel5": {
         "temperature": "22.9",
         "humidity": "17",
         "chid": "B0"
       },
       "channel6": {
         "temperature": "22.3",
         "humidity": "36",
         "chid": "3D"
       },
       "channel7": {
         "temperature": "23.6",
         "humidity": "32",
         "chid": "54"
       },
       "channel8": {
         "temperature": "5.5",
         "humidity": "65",
         "chid": "77"
       },
       "channel9": {
         "temperature": "23.8",
         "humidity": "33",
         "chid": "30"
       },
       "channel10": {
         "temperature": "3.8",
         "humidity": "67",
         "chid": "C1"
       },
       "channel11": {
         "temperature": "3.2",
         "humidity": "69",
         "weather id": 804,
         "chid": "0"
       },
       "chhead": "0"
      }
      

      PS: ioBroker ist bei mir seit gestern auf einem Raspi installiert.

      mickym 2 Replies Last reply Reply Quote 0
      • mickym
        mickym Most Active @rtwl last edited by mickym

        @rtwl Hängt davon ab, welche Logikmaschine Du nutzen willst. Wenn Du NodeRed nutzen würdest, dann hätte ich quasi eine beinahe out of the Box Lösung:
        https://forum.iobroker.net/topic/43856/json-string-oder-java-object-in-iobroker-struktur

        Mit Deinem Input würde dann unter einem von Dir gewählten Namen mit diesem Flow folgende Struktur gebildet:

        2d326167-eb98-4775-bf4c-601766e66ff1-image.png

        Die Inject Node enthält Deinen JSON String:

        aa16558e-f677-4957-8162-4def96f2d8a8-image.png
        d06e9019-40c6-4af2-804d-25933d0668bb-image.png

        [
           {
               "id": "c3403a60.92fbb8",
               "type": "subflow",
               "name": "JSON or Obj to IOBroker",
               "info": "# Creates an IOBroker tree\n\nThis node creates an IOBroker tree out of an Java-Object or JSON String.\n\nThe object tree will be created under 0_userdata.0\nIn addition to the JSON-String or Java Object as `msg.payload` it is necessary to specify a `msg.top` properity in addition to the msg-Object.\n\nThe object tree will be created under 0_userdata.0\n\nExisting `msg.topic` entries will be deleted.\nAn iobroker-out node has to be appended to this subflow node. It is not part of the subflow itself. No topic should be specified in the iobroker out node.\n\nIs `msg.top` property isn't defined, the top-value of the node (environment variable top) is used. \n\n**Attention:**\nIf msg.top and top is empty, all msg.topics (msg.topic) will be directly prefixed with 0_userdata.0. . \n\n# Erstellt einen Objektbaum im ioBroker\n\nDiese Node erstellt einen Objektbaum im ioBroker aus einem JAVA Objekt bzw. einem JSON String. \n\nDer Baum wird in jedem Fall unter 0_userdata.0 erstellt und zwar unter dem Topic der in` msg.top` mitgegeben wurde. In der `msg.payload` befindet sich dann der JSON String oder das entsprechende Objekt.\n\nExistierende `msg.topic `Einträge werden gelöscht.\nEin entsprechende iobroker-out Node muss an den Flow angehängt werden. Sie ist nicht Bestandteil des Subflows. In dieser iobroker-out Node darf kein Topic angegeben werden. \n\nFalls msg.top nicht definiert wurde, wird der top-Wert (Umgebungsvariable top) der Node verwendet. <br>\n\n**Achtung:**\nWenn top und msg.top leer ist, werden alle msg.topics (msg.topic) direkt unter dem Präfix 0_userdata.0., angelegt bzw. ausgegeben. ",
               "category": "parser",
               "in": [
                   {
                       "x": 60,
                       "y": 160,
                       "wires": [
                           {
                               "id": "94876630.f71748"
                           }
                       ]
                   }
               ],
               "out": [
                   {
                       "x": 2120,
                       "y": 280,
                       "wires": [
                           {
                               "id": "74b0b536.02371c",
                               "port": 0
                           },
                           {
                               "id": "ad539a91.237888",
                               "port": 0
                           }
                       ]
                   }
               ],
               "env": [
                   {
                       "name": "top",
                       "type": "str",
                       "value": "objRoot"
                   }
               ],
               "meta": {},
               "color": "#E2D96E",
               "icon": "node-red/batch.svg"
           },
           {
               "id": "eea737e7.7e8fb8",
               "type": "split",
               "z": "c3403a60.92fbb8",
               "name": "split object",
               "splt": "\\n",
               "spltType": "str",
               "arraySplt": 1,
               "arraySpltType": "len",
               "stream": false,
               "addname": "key",
               "x": 1170,
               "y": 160,
               "wires": [
                   [
                       "dc473616.c2b508"
                   ]
               ]
           },
           {
               "id": "dc473616.c2b508",
               "type": "change",
               "z": "c3403a60.92fbb8",
               "name": "add key to topic",
               "rules": [
                   {
                       "t": "set",
                       "p": "stateName",
                       "pt": "msg",
                       "to": "key",
                       "tot": "msg"
                   },
                   {
                       "t": "set",
                       "p": "topic",
                       "pt": "msg",
                       "to": "topic  & '.' & key",
                       "tot": "jsonata"
                   },
                   {
                       "t": "change",
                       "p": "topic",
                       "pt": "msg",
                       "from": " ",
                       "fromt": "str",
                       "to": "_",
                       "tot": "str"
                   }
               ],
               "action": "",
               "property": "",
               "from": "",
               "to": "",
               "reg": false,
               "x": 1360,
               "y": 160,
               "wires": [
                   [
                       "78697695.9a72c8"
                   ]
               ]
           },
           {
               "id": "78697695.9a72c8",
               "type": "switch",
               "z": "c3403a60.92fbb8",
               "name": "is type?",
               "property": "payload",
               "propertyType": "msg",
               "rules": [
                   {
                       "t": "istype",
                       "v": "array",
                       "vt": "array"
                   },
                   {
                       "t": "istype",
                       "v": "object",
                       "vt": "object"
                   },
                   {
                       "t": "else"
                   }
               ],
               "checkall": "true",
               "repair": false,
               "outputs": 3,
               "x": 1540,
               "y": 160,
               "wires": [
                   [
                       "d839cef8.577f1"
                   ],
                   [
                       "eea737e7.7e8fb8"
                   ],
                   [
                       "bdfdae99.f4d9d"
                   ]
               ]
           },
           {
               "id": "d839cef8.577f1",
               "type": "split",
               "z": "c3403a60.92fbb8",
               "name": "split array",
               "splt": "\\n",
               "spltType": "str",
               "arraySplt": 1,
               "arraySpltType": "len",
               "stream": false,
               "addname": "",
               "x": 580,
               "y": 280,
               "wires": [
                   [
                       "36327f2d.8efc3"
                   ]
               ]
           },
           {
               "id": "36327f2d.8efc3",
               "type": "change",
               "z": "c3403a60.92fbb8",
               "name": "add index to topic",
               "rules": [
                   {
                       "t": "set",
                       "p": "topic",
                       "pt": "msg",
                       "to": "topic  & '.' & parts.index",
                       "tot": "jsonata"
                   }
               ],
               "action": "",
               "property": "",
               "from": "",
               "to": "",
               "reg": false,
               "x": 770,
               "y": 280,
               "wires": [
                   [
                       "d8f58d9b.b6a1"
                   ]
               ]
           },
           {
               "id": "74b0b536.02371c",
               "type": "change",
               "z": "c3403a60.92fbb8",
               "name": "finalize msg.topic",
               "rules": [
                   {
                       "t": "set",
                       "p": "top",
                       "pt": "msg",
                       "to": "'0_userdata.0.' & top",
                       "tot": "jsonata"
                   },
                   {
                       "t": "set",
                       "p": "topic",
                       "pt": "msg",
                       "to": "top & topic",
                       "tot": "jsonata"
                   },
                   {
                       "t": "change",
                       "p": "topic",
                       "pt": "msg",
                       "from": "..",
                       "fromt": "str",
                       "to": ".",
                       "tot": "str"
                   }
               ],
               "action": "",
               "property": "",
               "from": "",
               "to": "",
               "reg": false,
               "x": 1970,
               "y": 240,
               "wires": [
                   []
               ]
           },
           {
               "id": "4cdee7cb.910c38",
               "type": "switch",
               "z": "c3403a60.92fbb8",
               "name": "is type?",
               "property": "payload",
               "propertyType": "msg",
               "rules": [
                   {
                       "t": "istype",
                       "v": "json",
                       "vt": "json"
                   },
                   {
                       "t": "istype",
                       "v": "object",
                       "vt": "object"
                   },
                   {
                       "t": "istype",
                       "v": "array",
                       "vt": "array"
                   },
                   {
                       "t": "else"
                   }
               ],
               "checkall": "true",
               "repair": false,
               "outputs": 4,
               "x": 400,
               "y": 160,
               "wires": [
                   [
                       "c1c41535.17d3b8"
                   ],
                   [
                       "eea737e7.7e8fb8"
                   ],
                   [
                       "d839cef8.577f1"
                   ],
                   [
                       "d8f58d9b.b6a1"
                   ]
               ]
           },
           {
               "id": "c1c41535.17d3b8",
               "type": "json",
               "z": "c3403a60.92fbb8",
               "name": "",
               "property": "payload",
               "action": "",
               "pretty": false,
               "x": 570,
               "y": 120,
               "wires": [
                   [
                       "3ccd67db.375058"
                   ]
               ]
           },
           {
               "id": "bdfdae99.f4d9d",
               "type": "switch",
               "z": "c3403a60.92fbb8",
               "name": "is msg.top != null",
               "property": "top",
               "propertyType": "msg",
               "rules": [
                   {
                       "t": "nnull"
                   },
                   {
                       "t": "null"
                   }
               ],
               "checkall": "true",
               "repair": false,
               "outputs": 2,
               "x": 1750,
               "y": 280,
               "wires": [
                   [
                       "74b0b536.02371c"
                   ],
                   [
                       "ad539a91.237888"
                   ]
               ]
           },
           {
               "id": "94876630.f71748",
               "type": "change",
               "z": "c3403a60.92fbb8",
               "name": "",
               "rules": [
                   {
                       "t": "delete",
                       "p": "topic",
                       "pt": "msg"
                   }
               ],
               "action": "",
               "property": "",
               "from": "",
               "to": "",
               "reg": false,
               "x": 210,
               "y": 160,
               "wires": [
                   [
                       "4cdee7cb.910c38"
                   ]
               ]
           },
           {
               "id": "3ccd67db.375058",
               "type": "switch",
               "z": "c3403a60.92fbb8",
               "name": "is array?",
               "property": "payload",
               "propertyType": "msg",
               "rules": [
                   {
                       "t": "istype",
                       "v": "array",
                       "vt": "array"
                   },
                   {
                       "t": "else"
                   }
               ],
               "checkall": "true",
               "repair": false,
               "outputs": 2,
               "x": 700,
               "y": 120,
               "wires": [
                   [
                       "d839cef8.577f1"
                   ],
                   [
                       "eea737e7.7e8fb8"
                   ]
               ]
           },
           {
               "id": "80dde279.c28ec",
               "type": "comment",
               "z": "c3403a60.92fbb8",
               "name": "Array",
               "info": "",
               "x": 400,
               "y": 280,
               "wires": []
           },
           {
               "id": "95ee816e.68a16",
               "type": "comment",
               "z": "c3403a60.92fbb8",
               "name": "object",
               "info": "",
               "x": 1140,
               "y": 100,
               "wires": []
           },
           {
               "id": "d8f58d9b.b6a1",
               "type": "switch",
               "z": "c3403a60.92fbb8",
               "name": "is type?",
               "property": "payload",
               "propertyType": "msg",
               "rules": [
                   {
                       "t": "istype",
                       "v": "object",
                       "vt": "object"
                   },
                   {
                       "t": "istype",
                       "v": "array",
                       "vt": "array"
                   },
                   {
                       "t": "else"
                   }
               ],
               "checkall": "true",
               "repair": false,
               "outputs": 3,
               "x": 960,
               "y": 280,
               "wires": [
                   [
                       "eea737e7.7e8fb8"
                   ],
                   [
                       "d839cef8.577f1"
                   ],
                   [
                       "bdfdae99.f4d9d"
                   ]
               ]
           },
           {
               "id": "ad539a91.237888",
               "type": "change",
               "z": "c3403a60.92fbb8",
               "name": "finalize msg.topic",
               "rules": [
                   {
                       "t": "set",
                       "p": "top",
                       "pt": "msg",
                       "to": "top",
                       "tot": "env"
                   },
                   {
                       "t": "set",
                       "p": "top",
                       "pt": "msg",
                       "to": "'0_userdata.0.' & top",
                       "tot": "jsonata"
                   },
                   {
                       "t": "set",
                       "p": "topic",
                       "pt": "msg",
                       "to": "top & topic",
                       "tot": "jsonata"
                   },
                   {
                       "t": "change",
                       "p": "topic",
                       "pt": "msg",
                       "from": "..",
                       "fromt": "str",
                       "to": ".",
                       "tot": "str"
                   }
               ],
               "action": "",
               "property": "",
               "from": "",
               "to": "",
               "reg": false,
               "x": 1970,
               "y": 320,
               "wires": [
                   []
               ]
           },
           {
               "id": "f9650286e66bcfe1",
               "type": "inject",
               "z": "54b226bc.0793e8",
               "name": "",
               "props": [
                   {
                       "p": "payload"
                   }
               ],
               "repeat": "",
               "crontab": "",
               "once": false,
               "onceDelay": 0.1,
               "topic": "",
               "payload": "{\"channel0\":{\"temperature\":\"23.3\",\"humidity\":\"0\",\"chid\":\"0\"},\"channel1\":{\"temperature\":\"\",\"humidity\":\"\",\"chid\":\"0\"},\"channel2\":{\"temperature\":\"22.8\",\"humidity\":\"28\",\"chid\":\"C0\"},\"channel3\":{\"temperature\":\"26.4\",\"humidity\":\"6\",\"chid\":\"4F\"},\"channel4\":{\"temperature\":\"23.7\",\"humidity\":\"15\",\"chid\":\"B5\"},\"channel5\":{\"temperature\":\"22.9\",\"humidity\":\"17\",\"chid\":\"B0\"},\"channel6\":{\"temperature\":\"22.3\",\"humidity\":\"36\",\"chid\":\"3D\"},\"channel7\":{\"temperature\":\"23.6\",\"humidity\":\"32\",\"chid\":\"54\"},\"channel8\":{\"temperature\":\"5.5\",\"humidity\":\"65\",\"chid\":\"77\"},\"channel9\":{\"temperature\":\"23.8\",\"humidity\":\"33\",\"chid\":\"30\"},\"channel10\":{\"temperature\":\"3.8\",\"humidity\":\"67\",\"chid\":\"C1\"},\"channel11\":{\"temperature\":\"3.2\",\"humidity\":\"69\",\"weather id\":804,\"chid\":\"0\"},\"chhead\":\"0\"}",
               "payloadType": "json",
               "x": 330,
               "y": 3160,
               "wires": [
                   [
                       "9dd8d4c58f1fdd0f"
                   ]
               ]
           },
           {
               "id": "9dd8d4c58f1fdd0f",
               "type": "subflow:c3403a60.92fbb8",
               "z": "54b226bc.0793e8",
               "name": "",
               "env": [
                   {
                       "name": "top",
                       "value": "rtwl",
                       "type": "str"
                   }
               ],
               "x": 540,
               "y": 3160,
               "wires": [
                   [
                       "34a25d549811fb9c"
                   ]
               ]
           },
           {
               "id": "34a25d549811fb9c",
               "type": "ioBroker out",
               "z": "54b226bc.0793e8",
               "name": "",
               "topic": "",
               "ack": "true",
               "autoCreate": "true",
               "stateName": "",
               "role": "",
               "payloadType": "",
               "readonly": "false",
               "stateUnit": "",
               "stateMin": "",
               "stateMax": "",
               "x": 770,
               "y": 3160,
               "wires": []
           }
        ]
        

        Die fehlenden Objekte musst halt mit einem Javascript noch anlegen.

        rtwl 1 Reply Last reply Reply Quote 1
        • rtwl
          rtwl @mickym last edited by

          @mickym
          Vielen Dank für deine Erklärung. Da ich ja ganz neu in der Materie bin, hab ich jetzt beim lesen (während der Arbeitspause) mal keine Idee wie ich das ganze implementiert bekomme ☺️
          aber am Abend dann werde ich mich hinsetzen und schauen ob ich es schaffe.
          Wäre gut, wenn du mir bei folgefragen dann eventuell noch weiter unterstützen könntest.

          liv-in-sky 1 Reply Last reply Reply Quote 0
          • liv-in-sky
            liv-in-sky @rtwl last edited by liv-in-sky

            @rtwl

            oder ohne nodered - mit einem javascript

            let helper=JSON.parse(getState("0_userdata.0.TESTDatenpunktAnlegen.MyTestData").val)
            
             var keysFirst = Object.keys(helper);
              
              //  log(keysFirst.toString())
             //   log(Object.keys(helper.channel0).toString())
            
            for(let u=0;u<keysFirst.length;u++){
                //  log(helper.keysFirst[u])
               let keysSecond=Object.keys(helper[keysFirst[u]]);
            
              //  log(keysSecond[0])
              for(let uu=0;uu<keysSecond.length;uu++){
                   let einheit;
                   if(keysSecond[uu].includes("temp") ) einheit="°C";
                   if(keysSecond[uu].includes("hum") ) einheit="%";
                   if(keysSecond[uu].includes("chid") ) einheit="";
                    let theVal=helper[keysFirst[u]][keysSecond[uu]] ; // log(theVal)
                    if(existsState('0_userdata.0.TESTDatenpunktAnlegen.'+keysFirst[u]+'.'+keysSecond[uu])) setState('0_userdata.0.TESTDatenpunktAnlegen.'+keysFirst[u]+'.'+keysSecond[uu],theVal);
                     else createState('0_userdata.0.TESTDatenpunktAnlegen.'+keysFirst[u]+'.'+keysSecond[uu], theVal, { name: keysSecond[uu], unit: einheit});
                  
               
                  }
            
            
            }
            

            der dp in der ersten zeile muss von dir eingestellt werden - die daten müssen ja irgendwo herkommen - in diesem fall , von einem dp

            Image 5.png

            1 Reply Last reply Reply Quote 0
            • mickym
              mickym Most Active @rtwl last edited by

              @rtwl Um die gleiche Funktionalität des Javascripts mit NodeRed zu implementieren - ergänzt Du den Flow um die eingerahmten Nodes:

              d455a2d5-5a4e-4962-a545-54b5c332d45e-image.png

              Damit werden dann auch numerische Werte mit den entsprechenden Units erstellt:

              ea8b4609-053a-4543-a3bf-1500e3b0759b-image.png

              Hier noch der Code für die eingerahmten Nodes:

              [
                 {
                     "id": "d0c6fba4707a4e76",
                     "type": "change",
                     "z": "54b226bc.0793e8",
                     "name": "",
                     "rules": [
                         {
                             "t": "set",
                             "p": "key",
                             "pt": "msg",
                             "to": "topic",
                             "tot": "msg"
                         },
                         {
                             "t": "change",
                             "p": "key",
                             "pt": "msg",
                             "from": ".*\\.(.*)$",
                             "fromt": "re",
                             "to": "$1",
                             "tot": "str"
                         }
                     ],
                     "action": "",
                     "property": "",
                     "from": "",
                     "to": "",
                     "reg": false,
                     "x": 590,
                     "y": 2780,
                     "wires": [
                         [
                             "158ec84a1b8fc50c"
                         ]
                     ]
                 },
                 {
                     "id": "158ec84a1b8fc50c",
                     "type": "switch",
                     "z": "54b226bc.0793e8",
                     "name": "",
                     "property": "key",
                     "propertyType": "msg",
                     "rules": [
                         {
                             "t": "eq",
                             "v": "temperature",
                             "vt": "str"
                         },
                         {
                             "t": "eq",
                             "v": "humidity",
                             "vt": "str"
                         },
                         {
                             "t": "else"
                         }
                     ],
                     "checkall": "true",
                     "repair": false,
                     "outputs": 3,
                     "x": 770,
                     "y": 2780,
                     "wires": [
                         [
                             "e73b7b8152f09240"
                         ],
                         [
                             "f97af63bc52b6f0c"
                         ],
                         [
                             "46cc9ab14e59223b"
                         ]
                     ]
                 },
                 {
                     "id": "e73b7b8152f09240",
                     "type": "change",
                     "z": "54b226bc.0793e8",
                     "name": "",
                     "rules": [
                         {
                             "t": "set",
                             "p": "stateUnit",
                             "pt": "msg",
                             "to": "°C",
                             "tot": "str"
                         },
                         {
                             "t": "set",
                             "p": "payload",
                             "pt": "msg",
                             "to": "payload = \"\" ? 0 : $number(payload)",
                             "tot": "jsonata"
                         }
                     ],
                     "action": "",
                     "property": "",
                     "from": "",
                     "to": "",
                     "reg": false,
                     "x": 950,
                     "y": 2740,
                     "wires": [
                         [
                             "4f135de5123e98f1"
                         ]
                     ]
                 },
                 {
                     "id": "f97af63bc52b6f0c",
                     "type": "change",
                     "z": "54b226bc.0793e8",
                     "name": "",
                     "rules": [
                         {
                             "t": "set",
                             "p": "stateUnit",
                             "pt": "msg",
                             "to": "%",
                             "tot": "str"
                         },
                         {
                             "t": "set",
                             "p": "payload",
                             "pt": "msg",
                             "to": "payload = \"\" ? 0 : $number(payload)",
                             "tot": "jsonata"
                         }
                     ],
                     "action": "",
                     "property": "",
                     "from": "",
                     "to": "",
                     "reg": false,
                     "x": 950,
                     "y": 2780,
                     "wires": [
                         [
                             "4f135de5123e98f1"
                         ]
                     ]
                 },
                 {
                     "id": "46cc9ab14e59223b",
                     "type": "change",
                     "z": "54b226bc.0793e8",
                     "name": "do nothing",
                     "rules": [],
                     "action": "",
                     "property": "",
                     "from": "",
                     "to": "",
                     "reg": false,
                     "x": 950,
                     "y": 2820,
                     "wires": [
                         [
                             "4f135de5123e98f1"
                         ]
                     ]
                 }
              ]
              

              1 Reply Last reply Reply Quote 1
              • Homoran
                Homoran Global Moderator Administrators last edited by

                Aber ihr habt schon gelesen:

                @rtwl sagte in json abfragen - Objekte erstellen:

                Da ich kompletter Anfänger bin
                ...
                ioBroker ist bei mir seit gestern auf einem Raspi installiert.

                und wir uns hier im Einsteiger-Unterforum befinden, wo

                @homoran sagte in Diskussionsthread zum neuen Unterforum für Einsteiger:

                Fortgeschrittene und "Nerds" können und sollen dort natürlich auch antworten und helfen..
                Aber bitte in laienverständlicher Form.

                mickym 1 Reply Last reply Reply Quote 0
                • mickym
                  mickym Most Active @Homoran last edited by

                  @homoran Nun ja - ich habe es glaube ich nicht, dass @liv-in-sky oder ich mit vielen Fachwörtern geschrieben haben, sondern wir beide haben dem TE fertige Lösungen für sein Problem geboten - halt mit unterschiedlichen Tools.

                  Ich habe den 2. Flow nur nachgeschoben, damit man hier nicht Äpfel mit Birnen vergleicht.

                  Du kannst ja gerne noch eine fertige Blockly-Lösung beisteuern.
                  Die Aufgabe bzw. die Fragestellung des TE war doch nur, wie er den JSON in eine Objektstruktur im iobroker bekommt.

                  Wenn dann noch konkrete Fragen sind, helfen wir doch gerne weiter. Und wenn diese Lösung nicht für Anfänger taugt, könnte man ggf. den Thread verschieben?

                  Homoran 1 Reply Last reply Reply Quote 0
                  • Homoran
                    Homoran Global Moderator Administrators @mickym last edited by Homoran

                    @mickym dazu müsste ich erst einmal verstehen, was @rtwl wirklich will.
                    Nach euren Antworten bin ich mir da gar nicht mehr so sicher.

                    Die Aussage:
                    @rtwl sagte in json abfragen - Objekte erstellen:

                    Ich hab es zwar mit dem Adapter "Systeminfo Adapter to get data from systems" geschafft meine json abzufragen

                    sagt mir gar nichts 🙂

                    Weder der Adapter, noch (oder vielleicht deswegen) wie man damit eine JSON abfragt - und wo?
                    Ob jetzt das JSON irgendwo bereits vorliegt, oder ob es erneut abgefragt werden soll, womöglich direkt zerlegt

                    mickym liv-in-sky rtwl 3 Replies Last reply Reply Quote 0
                    • mickym
                      mickym Most Active @Homoran last edited by mickym

                      @homoran sagte in json abfragen - Objekte erstellen:

                      Die Aussage:
                      @rtwl sagte in json abfragen - Objekte erstellen:

                      Ich hab es zwar mit dem Adapter "Systeminfo Adapter to get data from systems" geschafft meine json abzufragen

                      sagt mir gar nichts
                      Weder der Adapter, noch (oder vielleicht deswegen) wie man damit eine JSON abfragt - und wo?
                      Ob jetzt das JSON irgendwo bereits vorliegt, oder ob es erneut abgefragt werden soll, womöglich direkt zerlegt

                      OK da gebe ich Dir Recht, dass das nicht aus dem Eingangsposting hervorgeht. Ich habe den JSON String als gegeben vorausgesetzt, woher der auch immer kommt und die Aufgabenstellung darin gesehen, dass dieser als einzelne Datenpunkte zerlegt und im iobroker sichtbar sein sollten.

                      Das kann aber letztlich nur der TE beantworten und wird sich wahrscheinlich im Verlauf bei weiteren Fragen noch ergeben. Da bin ich zuversichtlich. 😉

                      Letztlich kann nur der TE beurteilen, ob wir ihm eine Hilfe sind oder mehr zur Verwirrung beitragen.

                      1 Reply Last reply Reply Quote 1
                      • liv-in-sky
                        liv-in-sky @Homoran last edited by

                        @homoran

                        ich denke mal, er wird schon nachfragen, wenn es irgendwo hakt.

                        1 Reply Last reply Reply Quote 0
                        • Homoran
                          Homoran Global Moderator Administrators last edited by

                          zum Abschrecken (@rtwl ist nicht ernst gemeint 🙂 ) habe ich mal versucht etwas zu zaubern.
                          Ich kann es aber auch nicht wirklich.

                          JSON_lesen.png


                          Wenn ich das hier
                          @rtwl sagte in json abfragen - Objekte erstellen:

                          die Werte als Objekte zu speichern?

                          richtig verstehe, nämlich, dass du alle Ergebnisse in Datenpunkte setzen willst, benötigst du 33 Datenpunkte.
                          Die lassen sich (vielleicht) automatisch erzeugen.
                          Das hatte ich (zum ersten mal selber) versucht.

                          der dritte Wert (chid) pro Channel hatte ich als ChannelID angenommen.
                          leider ist diese nicht eindeutig

                          1 Reply Last reply Reply Quote 0
                          • rtwl
                            rtwl last edited by

                            Vielen Dank vorerst an alle. Ich sitze immer noch bei der Arbeit fest 😬
                            kurz gesagt. Mich verwirrt so ziemlich alles was ihr geschrieben habt. Aber ich kenne iobroker noch nicht so auswendig um es nachvollziehen zu können. Aber ich teste dann gern am Abend und werde mich ziemlich sicher mit weiteren Fragen melden.

                            die json kommt von einem externen Gerät und kann jederzeit per URL im Netzwerk abgerufen werden (http://IP/weather.json) Diese soll dann auch als Quelle verwendet werden.

                            den datenpunkt CHID aus der json wird nicht benötigt. Lediglich Temperatur und Luftfeuchtigkeitswerte.

                            die Lösungen in den Screenshots gefallen mir sehr gut, so wäre auch meine Wunsch Lösung dafür.

                            mein generelles Ziel ist es später mal die VIS damit zu befüllen bzw auch logiken daraus zu erstellen zb je nach Temperatur mach dies oder das usw. Aber dazu erst wenn ich soweit bin.

                            Homoran 1 Reply Last reply Reply Quote 0
                            • Homoran
                              Homoran Global Moderator Administrators @rtwl last edited by Homoran

                              @rtwl sagte in json abfragen - Objekte erstellen:

                              Mich verwirrt so ziemlich alles was ihr geschrieben habt.

                              das hatte ich befürchtet!

                              Lösch alles in deinem Geiste, was bisher da steht.
                              Wenn du von der Arbeit kommst fangen wir nochmal ganz von vorne an - Step by Step!!!

                              @rtwl sagte in json abfragen - Objekte erstellen:

                              die Lösungen in den Screenshots gefallen mir sehr gut, so wäre auch meine Wunsch Lösung dafür.

                              aber du willst es ja selber schaffen! Hut ab dafür!
                              Die "fertigen" Ergebnisse sollen dir jetzt nur zeigen, dass es geht


                              @rtwl sagte in json abfragen - Objekte erstellen:

                              den datenpunkt CHID aus der json wird nicht benötigt.

                              den könnte man zur Identifikation der Daten nutzen.
                              Wenn die Daten ganz sicher immer in der selben Reihenfolge kommen, kann man die CHID natürlich "vergessen"

                              Dann musst du dir die Datenpunkte aber manuell, ggf. mit sprechenden Namen, selber in einer sinnvollen Struktur anlegen.

                              1 Reply Last reply Reply Quote 0
                              • mickym
                                mickym Most Active last edited by mickym

                                Nun ja - auch wenn ich dem Globalen Moderator mal widersprechen möchte, alles aus dem Geiste zu löschen, solltest Du Dich @rtwl immer ganz systematisch Deiner Aufgabenstellung nähern und das ist erst mal unabhängig von den Tools - wo bei ich auf diese noch zu sprechen komme.

                                Um sich dem ganzen logisch zu nähern gibt es ein einheitliches Schema - das man grundsätzlich im Kopf durchgehen sollte.

                                Fangen wir mal an:

                                1. Auslöser (= Trigger)

                                Egal was Du mit Deinem Hausautomationssystem machen möchtest brauchst Du immer einen Auslöser. Auslöser gibt es viele, aber Du musst Dir immer !!! am Anfang überlegen, wer oder was meinen Flow, meine Aktion auslösen soll.

                                Was gibt es für Auslöser:

                                • Sensoren: Sensoren liefern Daten und man kann nun entscheiden, ob man auf diese Daten reagieren möchte oder nicht. Im iobroker werden diese Sensoren oft über Adapter als Daten in den Objekten/Zuständen (=states) zur Verfügung gestellt. Manchmal triggern Sensoren auch nur und Du musst Dich selbst drum kümmern, Dir die Daten zu holen.
                                • Der Anwender, Mensch, der im Prinzip auf eine Taste in einer Visualisierung manuell einen Prozess anstößt.
                                • Ein zeitliches Ereignis: Das kann periodisch sein oder zu einem bestimmten Zeitpunkt.

                                Oft verknüpft man diese Auslöser miteinander. Also es soll nur auf eine Bewegung hin ein Licht geschaltet werden, wenn es Nacht ist. Ein Sensor liefert also den Trigger, der mit dem Zeitpunkt geprüft wird um dann eine Aktion auszulösen.

                                1. Das Sammeln von Daten:
                                  Oft liefer die Sensoren über die Adapter automatisch die Daten. In Deinem Fall jedoch musst Du die Daten erst holen, in dem Du eine URL aufrufst und über eine API (Application Programming Interface) Dir diese Daten besorgst. Oft muss man sich auch von mehreren Stellen Daten holen, um später die geeignete Logik abzubilden. Man kann sich die Daten anfangs besorgen oder man besorgt sie sich, während man die Daten aufbereitet.

                                2. Die Datenverarbeitung:
                                  Hier werden die Daten ggf. logisch miteinander in Beziehung gesetzt, um gewisse komplexere Zustände zu definieren, oder die Daten werden nur aufbereitet, wie in unseren Beispielen um eine Temperatur in °C oder die Luftfeuchtigkeit in % in den Datenpunkten anzeigen zu lassen.

                                3. Die Ausgabe - in Deinem Fall eben in die Datenpunkte. Es kann aber natürlich auch ein Schalten eines Gerätes, das Abspielen von Sound, ein E-Mail Ausgabe - was auch immer sein. Letztlich die Aktion, die Du beabsichtigst.

                                Die Tools mit den Du Auslöser verarbeiten oder erzeugen kannst, Daten sammeln kannst und verarbeiten kannst hast Du hier kennengelernt.

                                Dabei wird das halt nur unterschiedlich visualisiert, aber in der Regel werden die Daten sequentiell verarbeitet.

                                Hier mal die 3 Möglichkeiten zusammengefasst (in Node Red würdest Du Schleifen halt als Linien sehen, die sich überschneiden). Im Gegensatz zu den beiden anderen Tools ist der Programmfluss aber durch die Linien grafisch dargestellt:

                                screen.png

                                Du siehst letztlich arbeitet man sich beim Blockly und JS von oben nach unten durch, wobei durch Schleifen und Funktionen auch da drin gesprungen wird.

                                In NodeRed bewegt man sich in der Regel von links nach rechts, so wie Du einen Text lesen würdest.

                                Also Trigger, Daten holen, Daten verarbeiten, Ausgabe.

                                So nun zu Deiner Aufgabenstellung:

                                die json kommt von einem externen Gerät und kann jederzeit per URL im Netzwerk abgerufen werden (http://IP/weather.json) Diese soll dann auch als Quelle verwendet werden.

                                Im Allgemeinen kann ich DIr nur empfehlen immer die ganze Aufgabenstellung zu beschreiben, sonst gibt es solche Fragen wie @Homoran gestellt hat. 😉

                                @mickym dazu müsste ich erst einmal verstehen, was @rtwl wirklich will.

                                Nach euren Antworten bin ich mir da gar nicht mehr so sicher

                                Im Prinzip ist es nun klarer geworden, wobei Du noch entscheiden müsstest, wie oft Du Dir diese Daten holen möchtest.

                                Homoran 1 Reply Last reply Reply Quote 0
                                • Homoran
                                  Homoran Global Moderator Administrators @mickym last edited by Homoran

                                  @mickym sagte in json abfragen - Objekte erstellen:

                                  auch wenn ich dem Globalen Moderator mal widersprechen möchte, alles aus dem Geiste zu löschen,

                                  ...und dein Pamphlet, was ihn möglicherweise wieder unnötig erschlägt, wollte ich nach dem Leeren des Zwischenspeichers mit ihm erarbeiten, damit es einen höheren Lerneffekt hat, was er ja von uns erbeten hatte

                                  mickym 1 Reply Last reply Reply Quote 0
                                  • mickym
                                    mickym Most Active @Homoran last edited by

                                    @homoran Ok ich halte mich raus.

                                    Homoran 1 Reply Last reply Reply Quote 0
                                    • Homoran
                                      Homoran Global Moderator Administrators @mickym last edited by

                                      @mickym sagte in json abfragen - Objekte erstellen:

                                      @homoran Ok ich halte mich raus.

                                      das Schlimme ist ja, dass da bei dir alles richtig ist.
                                      Nur das ist für Einsteiger zuviel Information auf einmal.

                                      Man muss selektiv auf mögliche Verständnishürden eingehen können, bevor der nächste Schritt gemacht wird

                                      mickym 1 Reply Last reply Reply Quote 0
                                      • mickym
                                        mickym Most Active @Homoran last edited by

                                        @homoran Nun jeder hat seine eigenen didaktischen Vorstellungen, wie er einen Zusammenhang glaubt verständlich vermitteln zu können und ich denke ich habe in diversen Threads durchaus gezeigt, dass ich hierbei schon manchem geholfen habe. Wenn Deine Vorgehensweise dann aber die einzig richtige ist, dann will ich mich hier nicht streiten oder auch nicht mehr die Mühe machen, einen Sachverhalt auf meine Weise darzustellen.

                                        Wie gesagt mach Du es so, wie Du es Dir vorstellst - ich bin hier erst mal raus, außer mir werden konkrete Fragen von @rtwl gestellt.

                                        Homoran 1 Reply Last reply Reply Quote 0
                                        • Homoran
                                          Homoran Global Moderator Administrators @mickym last edited by Homoran

                                          @mickym sagte in json abfragen - Objekte erstellen:

                                          Wenn Deine Vorgehensweise dann aber die einzig richtige ist,

                                          das würde ich niemals behaupten!

                                          @mickym sagte in json abfragen - Objekte erstellen:

                                          außer mir werden konkrete Fragen von @rtwl gestellt.

                                          und genau darauf warte ich. Und ich dachte, das hätte ich auch so dargestellt, dass wir erst abwarten bis @rtwl sich eingelesen hat und dann Fragen stellt.

                                          1 Reply Last reply Reply Quote 0
                                          • rtwl
                                            rtwl last edited by

                                            zuerst einmal: Danke allen.

                                            Dein ewig langer Post unter:

                                            @mickym sagte in json abfragen - Objekte erstellen:

                                            Fangen wir mal an:

                                            ...hat mir schon geholfen, und eigentlich nicht erschreckt. Aber das konnte @Homoran natürlich nicht wissen. Ich finde beide Ansätze durchaus interessant und für mich als möglichkeit zum Lernen durchaus okay. Auch wenn ich jetzt noch nicht alles verstehe, werde ich den Beitrag in 1 Woche, 3 Monaten oder einem Jahr erneut lesen und dann "achsooo, das haben die gemeint" sagen.
                                            Nochmal kurz zu mir: Ich habe ein ausgesprochen gutes Excel wissen, und hab schon die verzweigtesten und verschachtelsten Excel Formeln erstellt. Am logischem denken wirds bei mir nicht scheitern. Auch hab ich aktuell die logiken meiner smarten Wohnung mittels Tasker (Android) erstellt und läuft wie es soll. Aber auch das natürlich mit Unterstützung.
                                            Demnächst steht der Umzug ins neue Haus an, und dafür hab ich mir den Raspberry mit ioBroker zugelegt, um die Steuerung auf eben diesen umzustellen.

                                            Da ich von javascript null Ahnung hab, und Blockly optisch mehr zusagt als nodered, würde ich gerne den weg mit Blockly gehen, falls das dann möglich ist.

                                            Am liebsten hätte ich eigentlich ein "fast" fertiges blockly-skript welches ich dann importieren und studieren kann, um daraus zu lernen.

                                            Als erste Frage: Welchen Block nimmt man um die json Daten von meiner URL in EINEN Datenpunkt (nennt man das überhaupt so?) zu bekommen. @Homoran Du hast ja im Screenshot die Daten als "Text" eingefügt.

                                            Vielen Dank schonmal.

                                            Homoran 2 Replies Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            812
                                            Online

                                            31.7k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            abfragen json objekte
                                            5
                                            51
                                            1458
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo