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. json parse array aus Datenpunkt

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.0k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    925

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

json parse array aus Datenpunkt

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
7 Beiträge 2 Kommentatoren 445 Aufrufe 1 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.
  • A Offline
    A Offline
    australien
    schrieb am zuletzt editiert von
    #1

    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?

    paul53P 1 Antwort Letzte Antwort
    0
    • A australien

      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?

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

      @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.

      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

      A 1 Antwort Letzte Antwort
      0
      • paul53P 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 Offline
        A Offline
        australien
        schrieb am zuletzt editiert von australien
        #3

        @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?

        paul53P 1 Antwort Letzte Antwort
        0
        • A 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?

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

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

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

          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

          A 1 Antwort Letzte Antwort
          0
          • paul53P paul53

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

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

            A Offline
            A Offline
            australien
            schrieb am zuletzt editiert von
            #5

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

            paul53P 1 Antwort Letzte Antwort
            0
            • A australien

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

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

              @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);
                  }
              });
              

              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

              A 1 Antwort Letzte Antwort
              0
              • paul53P 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 Offline
                A Offline
                australien
                schrieb am zuletzt editiert von
                #7

                @paul53
                Super, DANKE!

                Wieder was dazu gelernt!

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


                Support us

                ioBroker
                Community Adapters
                Donate

                440

                Online

                32.6k

                Benutzer

                82.2k

                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