Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Axios: Fail to parse JSON data','code':-1

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Axios: Fail to parse JSON data','code':-1

    This topic has been deleted. Only users with topic management privileges can see it.
    • cash
      cash Most Active last edited by

      Ich bekomme seit heute ein Fehler von Axios wenn ich versuche eine elgato Keylight einzuschalten.

      Ich habe nichts verändert und verstehe nicht so ganz wo das Problem liegt. Die Status Abfrage funktioniert weiterhin und ich bekomme die Daten ausgelesen.

      Fehler beim einschalten:

      function func_elgato_on(){
          var On_Key_Light_1 = getState(id_On_Key_Light_1).val;
          var Brightness_Key_Light_1 = getState(id_Brightness_Key_Light_1).val;
          var Temperature_Key_Light_1 = getState(id_Temperature_Key_Light_1).val;
          var Status_Update_Key_Light_1 = getState(id_Status_Update_Key_Light_1).val;
          var Switch_Key_Light_1 = getState(id_Switch_Key_Light_1).val;
      
          if(!change){
              Switch_change = true;
              const axios = require('axios');
              axios({
                  method: 'put',
                  url: 'http://192.168.178.75:9123/elgato/lights',
                  headers: {'Content-Type':'application/x-www-form-urlencoded'} ,  
                  data: {
                          
                          "lights":[{
                              "brightness":Brightness_Key_Light_1,
                              "temperature":Temperature_Key_Light_1,
                              "on":1}],
                          "numberOfLights":1
                      },
                  timeout: 4500,
                  responseType: 'json'
              })
              .then((response) => {
                                  
                  if(debugging){
                      console.log('data:' +response.data);
                      console.log('Status: ' +response.status);
                      console.log('Header:' +response.headers);
                  }
                  if(response.status = 200){
                      //Umwandeln in String
                      var data_string = JSON.stringify(response.data)
                      //Ergebnisse
                      var _Status = response.data.lights[0].on;
                      var _Helligkeit = response.data.lights[0].brightness;
                      var _Temperatur = response.data.lights[0].temperature;
                      
                      if(_Status == 1){
                          if(debugging){
                              log('Elgato Key light air wurde über ioBroker eingeschaltet --- Helligkeit: '+_Helligkeit +' --- Temperatur: '+_Temperatur);
                                              
                          }
                          setState(id_On_Key_Light_1,_Status);
                      }
                      else{
                          if(logging){
                              log('Elgato Key light air wurde nicht eingeschaltet (iobroker)');
                              //log('Helligkeit: '+_Helligkeit +' --- Temperatur: '+_Temperatur);
                          }
      
                      }
                      if(debugging){
                          log('Status: '+_Status);
                          log('Helligkeit: '+_Helligkeit);
                          log('Temperatur: '+_Temperatur);
                      
                      }
                  }
                  else{
                      if(logging){
                          log('Hier stimmt etwas nicht. Elgato Key Light air Meldung: '+response.status)
                      }
                  } 
      
                                      
      
              })
              .catch(
                  (error) => {
                      // handle error
                      log('Key Light air sollte eingeschaltet werden. Fehlermeldung: '+error,'warn');
                      if (error.response) {
                      // The request was made and the server responded with a status code
                      // that falls out of the range of 2xx
                          if(debugging){
                              log('Fehler: '+error)
                              log(error.response.data);
                              log(error.response.status);
                              log(error.response.headers);
                          }
                      } 
                      else if (error.request) {
                          log('Request Error beim einschalten vom Key Light air','warn');
                          // The request was made but no response was received
                          // `error.request` is an instance of XMLHttpRequest in the browser and an instance of
                          // http.ClientRequest in node.js
                          if(debugging){
                              console.log(error.request);
                          }
                      }
                      else {
                          // Something happened in setting up the request that triggered an Error
                          log('sonstiger Fehler beim Einschalten vom Key Light air: '+error,'warn');
                         
                  
                      }                    
                  }
              );
          }
          else{
              change= false;
              log('Schaltbefehl wurde unterdrückt (Schaltung wahrscheinlich über App)');
          }
      
      }
      

      was geht:

      function func_elgato_status(){
          var On_Key_Light_1 = getState(id_On_Key_Light_1).val;
          var Brightness_Key_Light_1 = getState(id_Brightness_Key_Light_1).val;
          var Temperature_Key_Light_1 = getState(id_Temperature_Key_Light_1).val;
          var Status_Update_Key_Light_1 = getState(id_Status_Update_Key_Light_1).val;
          var Switch_Key_Light_1 = getState(id_Switch_Key_Light_1).val;
      
          if(Status_Update_Key_Light_1){
              setStateDelayed(id_Status_Update_Key_Light_1,false,5000);
          }
          change= false;
      
          if(!Switch_change){
              const axios = require('axios');
              axios({
                  method: 'get',
                  url: 'http://192.168.178.75:9123/elgato/lights',
                  timeout: 4500,
                  responseType: 'json'
              })
              .then((response) => {
                                  
                  if(debugging){
                      log('data:' +response.data);
                      log(response.data.lights[0].temperature)
                      log(response.data.lights[0].brightness)
                      log(response.data.lights[0].on)
                      log('Status: ' +response.status);
                      log('Header:' +response.headers);
                  }
                  if(response.status = 200){
                      //Umwandeln in String
                      var data_string = JSON.stringify(response.data)
                      
                      //Ergebnisse
                      var _Status = response.data.lights[0].on;
                      var _Helligkeit = response.data.lights[0].brightness;
                      var _Temperatur = response.data.lights[0].temperature;
                      
                      if(On_Key_Light_1 != _Status){
                          setState(id_On_Key_Light_1,_Status);
                          change = true;
                      }
                      if(Brightness_Key_Light_1 != _Helligkeit){
                          setState(id_Brightness_Key_Light_1,_Helligkeit);  
                          change = true;  
                      }
                      if(Temperature_Key_Light_1 != _Temperatur){
                          setState(id_Temperature_Key_Light_1,_Temperatur);
                          change = true;
                      }
                      
                      
                      if(_Status == 1 && !Switch_Key_Light_1){
                          setState(id_Switch_Key_Light_1,true);
                          change = true;    
                      }
                      else if (_Status == 0 && Switch_Key_Light_1){
                          setState(id_Switch_Key_Light_1,false);
                          change = true;    
                      }
                                  
      
                      if(change){
                          if(_Status == 1){
                              if(logging){
                                  log('Elgato Key light air wurde per App eingeschaltet --- Helligkeit: '+_Helligkeit +' --- Temperatur: '+_Temperatur);
                              }
                          }
                          else{
                              if(logging){
                                  log('Elgato Key light air wurde per App ausgeschaltet');
                                  //log('Helligkeit: '+_Helligkeit +' --- Temperatur: '+_Temperatur);
                              }
                          }
                      }
                      if(debugging){
                          log('Status: '+_Status);
                          log('Helligkeit: '+_Helligkeit);
                          log('Temperatur: '+_Temperatur);
                      
                      }
                  }
                  else{
                      if(logging){
                          log('Hier stimmt etwas nicht. Elgato Key Light air Meldung: '+response.status)
                      }
                  } 
      
                                      
      
              })
              .catch(
                  (error) => {
                      // handle error
                      log('Fehler bei der Abfrage der Elgator Key Light air: '+error,'warn');                    
                  }
              );
          }
          else{
              Switch_change = false;
              if(debugging){
                  log('Switch change wird geändert in false');
              }
          }
      
      
      }
      

      Hat jemand eine Idee wo das Problem liegen könnte?

      1 Reply Last reply Reply Quote 0
      • cash
        cash Most Active last edited by

        Kann mir vielleicht jemand helfen?

        Ich habe weiter recherchiert werde aber leider nicht fündig.

        Wenn ich am Mac Terminal

        #!/bin/bash
        curl --location --request PUT 'http://192.168.178.75:9123/elgato/lights' \
        --header 'Content-Type: application/json' \
        --data-raw '{"lights":[{"on":1}],"numberOfLights":1}'
        

        ausführe funktioniert es nicht weiterhin. Also an der Lampe liegt es nicht. Es kann nur an Axiom liegen.

        T 1 Reply Last reply Reply Quote 0
        • T
          tombox @cash last edited by

          @cash du solltest schon den korrekten content-type verwenden er is json und nicht form-urlencoded

          cash 1 Reply Last reply Reply Quote 0
          • cash
            cash Most Active @tombox last edited by

            @tombox genau das war das Problem. Es geht wieder. Danke für den Hinweis. Komisch das es vorher über ein Jahr lang, obwohl falsch, lief...

            Issi 1 Reply Last reply Reply Quote 0
            • Issi
              Issi Developer @cash last edited by

              @cash
              falls es dich interessiert es gibt jetzt auch ein Adapter für Elgato Key Light hier der Forum post dazu https://forum.iobroker.net/topic/62334/test-elgato-key-light-adapter

              cash 1 Reply Last reply Reply Quote 0
              • cash
                cash Most Active @Issi last edited by

                @issi sehr cool. Danke für den Hinweis. Bleibe aber vorerst bei meinen Script da ich von meinen 3 elgatos nur eine steuern möchte und ich den Status auch nur Mo-Fr. von 7:00 - 16:00 abfrage. Somit vermeide ich unnötige Abfragen in meinen Netz. Falls mein Script dann mal wieder nicht läuft steige ich aber wahrscheinlich um.

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

                Support us

                ioBroker
                Community Adapters
                Donate

                403
                Online

                31.8k
                Users

                80.0k
                Topics

                1.3m
                Posts

                3
                6
                253
                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