Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Rückgabe body & error von request sind keine strings?

    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

    Rückgabe body & error von request sind keine strings?

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

      Hi zusammen,

      ich habe ein kleines Script, welches einen Wert in einem Tasmota Device setzt. Das iobroker Log meldet mir jedoch, dass ich einen Wert nicht als string übergebe. Die Rückgabe von body & error aus einem request müssten doch aber strings sein?

      Kann ich das irgendwie umgehen?

      Logfile:

      You are assigning a object to the state "0_userdata.0.Pool.setTempErrorString" which expects a string. Please fix your code to use a string or change the state type to object. This warning might become an error in future versions.
      

      Script:

      var parseString = require('xml2js').parseString;
      var request = require('request');
      
      //Baue URL zusammen
      var deviceip = '192.168.69.90'
      var command = '/cm?user=joker&password=Xcmnd=mem1%20'
      var temp = getState("hm-rega.0.21812").val
      var callURL = "http://" + deviceip + command + temp
      
      //Request an Device
      request(callURL, function (error, response, body) {
          if (!error && response.statusCode == 200) {
              
          setState("0_userdata.0.Pool.setTempError", false);
          setState("0_userdata.0.Pool.setTempErrorString", body);
          setState("0_userdata.0.Pool.setTempErrorCount", 0);
      
          } else  {
      
          //Wenn Error, schreibe Objekte
          setState("0_userdata.0.Pool.setTempError", true);
          setState("0_userdata.0.Pool.setTempErrorString", error);
          setState("0_userdata.0.Pool.setTempErrorCount", (getState("0_userdata.0.Pool.setTempErrorCount").val + 1));
          }
      });
      
      mickym 1 Reply Last reply Reply Quote 0
      • mickym
        mickym Most Active @gutgut30 last edited by

        @gutgut30 Ändere halt einfach den Datentyp des Datenpunktes - Bleistiftsymbol rechts anklicken

        G 1 Reply Last reply Reply Quote 0
        • G
          gutgut30 @mickym last edited by gutgut30

          @mickym said in Rückgabe body & error von request sind keine strings?:

          @gutgut30 Ändere halt einfach den Datentyp des Datenpunktes - Bleistiftsymbol rechts anklicken

          Das hatte ich auch versucht.

          Allerdings bekomme ich dann den Fehler in Zeile 15 - body ist nämlich ein String und möchte natürlich nicht so gerne in ein object schreiben.

          Also egal wie ich es drehe, einen von beiden Werten muss ich als String oder als Object bekommen. Und den Error als String erscheint mir passender. Ich hätte halt auch erwartet, dass es ein string ist.

          EDIT: Habs gelöst mit

           String(error)
          

          Ich war von groovy irgendwie mit error.toString auf dem Holzweg. Läuft jetzt.

          mickym OliverIO 2 Replies Last reply Reply Quote 0
          • mickym
            mickym Most Active @gutgut30 last edited by

            @gutgut30 Du schreibst grundsätzlich nur Strings und nie Objekte. Objekte müssen ggf. als JSONS in Strings gewandelt werden.

            1 Reply Last reply Reply Quote 0
            • OliverIO
              OliverIO @gutgut30 last edited by

              @gutgut30 said in Rückgabe body & error von request sind keine strings?:

              Ich war von groovy irgendwie mit error.toString auf dem Holzweg. Läuft jetzt

              fast richtig.
              error.toString()
              https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString?retiredLocale=de

              aber bei den meisten Objekten kommt dann halt nur
              '[object Object]'
              raus. die wenigsten überlagern die Methode der Object-Klasse mit einer eigenen toString() Methode

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

              Support us

              ioBroker
              Community Adapters
              Donate

              453
              Online

              31.8k
              Users

              80.0k
              Topics

              1.3m
              Posts

              3
              5
              205
              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