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 Wert auslesen. Hilfe

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    9
    1
    96

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.4k

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

JSON Wert auslesen. Hilfe

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
9 Beiträge 2 Kommentatoren 2.8k Aufrufe
  • Ä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.
  • N Offline
    N Offline
    nelzon
    schrieb am zuletzt editiert von
    #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 Antwort Letzte Antwort
    0
    • paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #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 Antwort Letzte Antwort
      0
      • N Offline
        N Offline
        nelzon
        schrieb am zuletzt editiert von
        #3

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

        1 Antwort Letzte Antwort
        0
        • paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          0
          • N Offline
            N Offline
            nelzon
            schrieb am zuletzt editiert von
            #5

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

            Werde es morgen mal ausprobieren

            1 Antwort Letzte Antwort
            0
            • N Offline
              N Offline
              nelzon
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              0
              • paul53P Offline
                paul53P Offline
                paul53
                schrieb am zuletzt editiert von
                #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 Antwort Letzte Antwort
                0
                • N Offline
                  N Offline
                  nelzon
                  schrieb am zuletzt editiert von
                  #8

                  TOP :D

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

                    822

                    Online

                    32.5k

                    Benutzer

                    81.7k

                    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