Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JSON Wert auslesen. Hilfe

NEWS

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.8k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.1k

JSON Wert auslesen. Hilfe

Scheduled Pinned Locked Moved Skripten / Logik
9 Posts 2 Posters 2.7k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • N Offline
    N Offline
    nelzon
    wrote on last edited by
    #1

    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
    0
    • paul53P Offline
      paul53P Offline
      paul53
      wrote on last edited by
      #2

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

      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 Reply Last reply
      0
      • N Offline
        N Offline
        nelzon
        wrote on last edited by
        #3

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

        1 Reply Last reply
        0
        • paul53P Offline
          paul53P Offline
          paul53
          wrote on last edited by
          #4

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

          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 Reply Last reply
          0
          • N Offline
            N Offline
            nelzon
            wrote on last edited by
            #5

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

            Werde es morgen mal ausprobieren

            1 Reply Last reply
            0
            • N Offline
              N Offline
              nelzon
              wrote on last edited by
              #6

              @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
              0
              • paul53P Offline
                paul53P Offline
                paul53
                wrote on last edited by
                #7

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

                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 Reply Last reply
                0
                • N Offline
                  N Offline
                  nelzon
                  wrote on last edited by
                  #8

                  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
                  0
                  • paul53P Offline
                    paul53P Offline
                    paul53
                    wrote on last edited by
                    #9
                    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.

                    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 Reply Last reply
                    0
                    Reply
                    • Reply as topic
                    Log in to reply
                    • Oldest to Newest
                    • Newest to Oldest
                    • Most Votes


                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    532

                    Online

                    32.4k

                    Users

                    81.4k

                    Topics

                    1.3m

                    Posts
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                    ioBroker Community 2014-2025
                    logo
                    • Login

                    • Don't have an account? Register

                    • Login or register to search.
                    • First post
                      Last post
                    0
                    • Recent
                    • Tags
                    • Unread 0
                    • Categories
                    • Unreplied
                    • Popular
                    • GitHub
                    • Docu
                    • Hilfe