Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. json parse array aus Datenpunkt

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    json parse array aus Datenpunkt

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

      Hallo zusammen,

      ich würde gerne nach einer Vorlage meinen Datenpunkt aufteilen.

      //Verschachteltes JSON Object - dynamisch
      
      const json = 'mqtt.1.SmartHome.Velux.tele.SENSOR';
      
      const obj2 = JSON.parse(json);
      
      for (var key in obj2) {
          console.log(key + ' => ' + obj2[key]);
          if (key === "Time") {
              createState("0_userdata.0.Test2.DHT11." + key , "", {name: key,  type: 'string'});
              setState('0_userdata.0.Test2.DHT11.' + key , obj2[key], true);
          }
      }
      
      for (var key in obj2.DHT11) {
          console.log(key + ' => ' + obj2.DHT11[key]);
          createState("0_userdata.0.Test2.DHT11." + key , "", {name: key,  type: 'number'});
          setState('0_userdata.0.Test2.DHT11.' + key , obj2.DHT11[key], true);
      }
      

      bekomme ich diese Fehlermelungen

      2:09:37.734	info	javascript.0 (842) Stop script script.js.common.Velux_Sensor
      12:09:37.889	info	javascript.0 (842) Start javascript script.js.common.Velux_Sensor
      12:09:37.919	info	javascript.0 (842) script.js.common.Velux_Sensor: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
      12:09:37.922	error	javascript.0 (842) script.js.common.Velux_Sensor: SyntaxError: Unexpected token m in JSON at position 0
      12:09:37.922	error	javascript.0 (842) at script.js.common.Velux_Sensor:5:19
      12:09:37.922	error	javascript.0 (842) at script.js.common.Velux_Sensor:20:3
      

      wenn ich

      const json = '{"Time":"2023-02-06T12:00:30","DHT11":{"Temperature":20.8,"Humidity":15.0,"DewPoint":-6.9},"TempUnit":"C"}';
      

      eingebe, passt alles.
      Warum stimmt das beim Datenpunkt nicht?

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @australien last edited by paul53

        @australien sagte:

        const json = 'mqtt.1.SmartHome.Velux.tele.SENSOR';
        

        Das ist eine Datenpunkt-ID - kein JSON. Richtig:

        const json = getState('mqtt.1.SmartHome.Velux.tele.SENSOR').val;
        

        Im Skript fehlt ein Trigger. Der Datenpunkt wird nur einmal bei Skriptstart eingelesen.

        A 1 Reply Last reply Reply Quote 0
        • A
          australien @paul53 last edited by australien

          @paul53
          Danke, genau das war es.
          nur noch eines, warum wird die TempUnit am ende des json nicht erkannt?

          {"Time":"2023-02-06T12:20:30","DHT11":{"Temperature":20.8,"Humidity":15.0,"DewPoint":-6.9},"TempUnit":"C"}
          

          d1ce6a11-28f8-45c4-aa9b-fbcaee3951c7-grafik.png
          Kein Trigger?
          Wird das script nicht immer nach Änderung des json ausgeführt?

          paul53 1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @australien last edited by

            @australien sagte: Wird das script nicht immer nach Änderung des json ausgeführt?

            Nein, genau dafür benötigt man einen Trigger.

            A 1 Reply Last reply Reply Quote 0
            • A
              australien @paul53 last edited by

              @paul53
              wie du merkst hab ich da keine Ahnung. Wie bekomme ich diesen Trigger?

              paul53 1 Reply Last reply Reply Quote 0
              • paul53
                paul53 @australien last edited by paul53

                @australien sagte: Wie bekomme ich diesen Trigger?

                const idJson = 'mqtt.1.SmartHome.Velux.tele.SENSOR';
                const json = getState(idJson).val;
                const obj2 = JSON.parse(json);
                 
                for (var key in obj2) {
                    console.log(key + ' => ' + obj2[key]);
                    if (key === "Time") {
                        createState("0_userdata.0.Test2.DHT11." + key , "", {name: key,  type: 'string'});
                    }
                }
                 
                for (var key in obj2.DHT11) {
                    console.log(key + ' => ' + obj2.DHT11[key]);
                    createState("0_userdata.0.Test2.DHT11." + key , "", {name: key,  type: 'number'});
                }
                
                on(idJson, function(dp) { // triggert bei Wertänderung
                    const obj = JSON.parse(dp.state.val);
                    setState('0_userdata.0.Test2.DHT11.Time', obj.Time, true);
                    for (var key in obj.DHT11) {
                        setState('0_userdata.0.Test2.DHT11.' + key , obj.DHT11[key], true);
                    }
                });
                
                A 1 Reply Last reply Reply Quote 0
                • A
                  australien @paul53 last edited by

                  @paul53
                  Super, DANKE!

                  Wieder was dazu gelernt!

                  1 Reply Last reply Reply Quote 0
                  • First post
                    Last post

                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  214
                  Online

                  31.7k
                  Users

                  79.8k
                  Topics

                  1.3m
                  Posts

                  2
                  7
                  381
                  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