Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JSON Wert auslesen. Hilfe

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    JSON Wert auslesen. Hilfe

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

      Hey Leute

      ich habe die Suche bemüht und viele Zeilen ausprobiert, aber ich schaffe es nicht den Dimmwert auszulesen.

      Ich erhalte folgendes, wenn ich http://192.168.70.39/control?cmd=nfx+state auslese

      {
      "plugin": "124",
      "log": "NeoPixelBus: unknown command: state"
      }
      {
      "plugin": "124",
      "mode": "on",
      "lastmode": "on",
      "fadetime": "1000",
      "fadedelay": "0",
      "dim": "70",
      "rgb": "a24911",
      "bgcolor": "ff0000",
      "pixelcount": "184"
      }
      

      nun versuche ich mich (das erste mal in meinem Leben) mit JS

      folgendes bringt mich aber nicht zum Ergebnis einen Wert in IoBroker zu erhalten, um beispielsweise damit weiterzuarbeiten

      const request = require('request');
      const link = 'http://192.168.70.39/control?cmd=nfx+state';
      
      createState('Dimmwert', "", {
          desc: 'Dimmwert',
          type: 'string',
          role: 'value'
      });
      
      function auslesen() {
          request(link, function(error, response, body) {
              if(error) log('Fehler request: ' + error, 'error');
              else {
                  var obj = JSON.parse(body);
                  setState('Dimmwert', obj.dim);
              }    
          });
      }
      
      schedule('*/1 * * * *', auslesen);  // alle 1 Minuten
      

      Jemand ne Idee was falsch sein könnte?

      Im Anhang noch die Fehlermeldung. Wie zählt man eigentlich zur "position 66"?
      3247_2018-01-30_22_18_34-iobroker.admin.png

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

        Das sind zwei Objekte im JSON. Wie sieht der String aus (ohne JSON-Formatierung) ?

        1 Reply Last reply Reply Quote 0
        • N
          nelzon last edited by

          Das wird direkt so im Inetexplorer ausgegeben, wenn ich die URL Aufrufe.

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

            Da ein Wert aus dem 2. Objekt gebraucht wird, muss man erst den 2. Teil aus dem String filtern:

               var pos = body.indexOf('}{');
               var str2 = body.substr(pos + 1);
               var obj = JSON.parse(str2);
            
            
            1 Reply Last reply Reply Quote 0
            • N
              nelzon last edited by

              Danke. Den Gedanken hatte ich auch zwischendurch mal für ne Sekunde gehabt 😉

              Werde es morgen mal ausprobieren

              1 Reply Last reply Reply Quote 0
              • N
                nelzon last edited by

                @paul53:

                Da ein Wert aus dem 2. Objekt gebraucht wird, muss man erst den 2. Teil aus dem String filtern:

                   var pos = body.indexOf('}{');
                   var str2 = body.substr(pos + 1);
                   var obj = JSON.parse(str2);
                
                ```` `  
                
                const request = require('request');
                const link = 'http://192.168.70.39/control?cmd=nfx+state';
                
                createState('Dimmwert', "", {
                    desc: 'Dimmwert',
                    type: 'string',
                    role: 'value'
                });
                
                function auslesen() {
                    request(link, function(error, response, body) {
                        if(error) log('Fehler request: ' + error, 'error');
                        else {
                            var pos = body.indexOf('}{');
                            var str2 = body.substr(pos + 1);
                            var obj = JSON.parse(str2);
                            setState('Dimmwert', obj.dim);
                        }    
                    });
                }
                
                schedule('*/1 * * * *', auslesen);  // alle 1 Minuten
                

                ergibt selbe Fehlerbild wie oben. " javascript.0 SyntaxError: Unexpected token { in JSON at position 66 at Object.parse (native)"

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

                  Dann sind wohl noch Zeichen zwischen den beiden Klammern. Versuche es mal so:

                              var pos = body.indexOf('{', 6);
                              log(pos);
                              var str2 = body.substr(pos);
                  
                  
                  1 Reply Last reply Reply Quote 0
                  • N
                    nelzon last edited by

                    TOP 😄

                    es funktioniert. Danke!

                    kannst du kurz erklären, was deine Zeilen jetzt bewirken?

                    ich hab gestern noch ne App runtergeladen, womit man sich in javascript einüben kann 😉

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

                      var pos = body.indexOf('{', 6);  // ermittelt Position von { ab Position 6, damit die erste { nicht zum Ergebnis führt
                      var str2 = body.substr(pos);  // extrahiert Zeichenkette str2 aus Zeichenkette body ab Postion pos
                      

                      Ich schaue meist in https://wiki.selfhtml.org/wiki/JavaScript/Objekte/String nach.

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

                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      725
                      Online

                      31.7k
                      Users

                      79.8k
                      Topics

                      1.3m
                      Posts

                      2
                      9
                      2539
                      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