Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [Gelöst] request() - Netatmo

    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

    [Gelöst] request() - Netatmo

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

      Guten Morgen Zusammen,

      Bin am Verzweifeln und verstehe gerade so einiges nicht mehr....
      Bei folgendem vereinfachtem Skript wird der request () in Zeile 18 mal eben locker übersprungen und bei Zeile 29 weiter gemacht. Beim zweiten Durchlauf wird der request dann ausgeführt. Aber warum ist das so? Dachte bis heute, dass die Zeilen sequenziell abgearbeitet werden.

      var access_token;
      
      function readToken() {
      
          var headers = {
              'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
          };
      
          var dataString = 'grant_type=password&client_id=5de0cc77a11ec5960911ffd0&client_secret=MeXp9wwdY7uAKee3MCUzFUJSLphuTIYju&username=xx.yy@zz.de&password=vergessen';
      
          var options = {
              url: 'https://api.netatmo.net/oauth2/token',
              method: 'POST',
              headers: headers,
              body: dataString
          };
      
          request(options, function (error, response, body) {
              if (!error && response.statusCode == 200 ) {
                  var obj = JSON.parse(body, function (key, value){
                      if (key == "access_token") {
                      access_token = value;
                      return value;
                      }
                  });
              };
          });
      
          var request_daten = require('request');
          var dataString_2;
      
          var lat_ne = "50.805642";
          var lon_ne = "6.977646";
          var lat_sw = "-50.803309";
          var lon_sw = "-6.982365";
      
          dataString_2 = 'access_token=' + access_token + '&lat_ne=' + lat_ne + '&lon_ne=' + lon_ne + '&lat_sw=' + lat_sw + '&lon_sw=' + lon_sw;
      }
      
      setTimeout(readToken, 1500);
      

      Eine Idee warum das so ist oder was nicht richtig ist?

      Vielen Dank und Gruß
      Rüdiger

      H 1 Reply Last reply Reply Quote 0
      • H
        homecineplexx @RKBroker last edited by

        @RKBroker said in request() - Netatmo:

        Guten Morgen Zusammen,

        Bin am Verzweifeln und verstehe gerade so einiges nicht mehr....
        Bei folgendem vereinfachtem Skript wird der request () in Zeile 18 mal eben locker übersprungen und bei Zeile 29 weiter gemacht. Beim zweiten Durchlauf wird der request dann ausgeführt. Aber warum ist das so? Dachte bis heute, dass die Zeilen sequenziell abgearbeitet werden.

        var access_token;
        
        function readToken() {
        
            var headers = {
                'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
            };
        
            var dataString = 'grant_type=password&client_id=5de0cc77a11ec5960911ffd0&client_secret=MeXp9wwdY7uAKee3MCUzFUJSLphuTIYju&username=xx.yy@zz.de&password=vergessen';
        
            var options = {
                url: 'https://api.netatmo.net/oauth2/token',
                method: 'POST',
                headers: headers,
                body: dataString
            };
        
            request(options, function (error, response, body) {
                if (!error && response.statusCode == 200 ) {
                    var obj = JSON.parse(body, function (key, value){
                        if (key == "access_token") {
                        access_token = value;
                        return value;
                        }
                    });
                };
            });
        
            var request_daten = require('request');
            var dataString_2;
        
            var lat_ne = "50.805642";
            var lon_ne = "6.977646";
            var lat_sw = "-50.803309";
            var lon_sw = "-6.982365";
        
            dataString_2 = 'access_token=' + access_token + '&lat_ne=' + lat_ne + '&lon_ne=' + lon_ne + '&lat_sw=' + lat_sw + '&lon_sw=' + lon_sw;
        }
        
        setTimeout(readToken, 1500);
        

        Eine Idee warum das so ist oder was nicht richtig ist?

        Vielen Dank und Gruß
        Rüdiger

        also eigentlich definiert man den die variable (require) davor, bevor man sie benutzt. vor allem, wir dein request_daten überhaupt irgendwo verwendet?

        var request = require('request');
        
        request(options, function (error, response, body) {
           // blabla
        });
        
        R 1 Reply Last reply Reply Quote 0
        • R
          RKBroker @homecineplexx last edited by

          @homecineplexx Vielen Dank. Den Teil mit request_daten habe ich nur entfernt, um das Skript hier kurz zu halten. Die Variable hatte ich mal definiert, aber laut Forum ist das für genau diesen Fall nicht mehr notwendig. Aber auch dann wird der request übersprungen.

          Gruß

          Rüdiger

          H 1 Reply Last reply Reply Quote 0
          • H
            homecineplexx @RKBroker last edited by

            @RKBroker said in request() - Netatmo:

            @homecineplexx Vielen Dank. Den Teil mit request_daten habe ich nur entfernt, um das Skript hier kurz zu halten. Die Variable hatte ich mal definiert, aber laut Forum ist das für genau diesen Fall nicht mehr notwendig. Aber auch dann wird der request übersprungen.

            Gruß

            Rüdiger

            ist request nicht ein asynchroner Job/Befehl ?

            R 1 Reply Last reply Reply Quote 0
            • R
              RKBroker @homecineplexx last edited by

              @homecineplexx Absolut keine Ahnung, ob das asynchroner Befehl ist oder nicht.
              Durch eine Menge von console.log konnte ich nur sehen, dass beim ersten Durchlauf der erste request nicht abegarbeitet bzw. aufgerufen wird. Der zweite request wird beim ersten Durlauch abegarbeitet, rennt dann aber gegen die Wand, weil das Ergbnis (sprich, den Token) vom ersten request benötigt wird...

              H 1 Reply Last reply Reply Quote 0
              • H
                homecineplexx @RKBroker last edited by

                @RKBroker das war eigentlich eher als feststellung gemeint. darum hat der request ja auch eine callback function

                R 1 Reply Last reply Reply Quote 0
                • R
                  RKBroker @homecineplexx last edited by

                  @homecineplexx NoP
                  Mal "bildlich" dargestellt:

                     console.log("Request-1 Token");
                  
                     request(options, function (error, response, body) {
                         console.log("Request-2 Token");
                         
                         if (!error && response.statusCode == 200 ) {
                             console.log("Request-3 Token");
                             var obj = JSON.parse(body, function (key, value){
                                 console.log("Request-4 Token");
                                 if (key == "access_token") {
                                 console.log("Request-5 Token");
                                 access_token = value;
                                 return value;
                                 }
                             console.log("Request-6 Token");
                             });
                         console.log("Request-7 Token");
                         };
                         
                     console.log("Read-Token-8: " + access_token);
                  
                     });
                     console.log("Request-9 Token");
                         
                     var request_daten = require('request');
                     var dataString_2;
                  

                  Ergibt im log:

                  11:04:34.242	info	javascript.0 Start javascript script.js.common.OpenWeatherUV.NetAtMo_02
                  11:04:34.243	info	javascript.0 script.js.common.OpenWeatherUV.NetAtMo_02: Request-1 Token
                  11:04:34.243	info	javascript.0 script.js.common.OpenWeatherUV.NetAtMo_02: Request-9 Token
                  11:04:34.243	info	javascript.0 script.js.common.OpenWeatherUV.NetAtMo_02: Data: undefined
                  

                  Demnach wird der request nicht beachtet...

                  R 1 Reply Last reply Reply Quote 0
                  • R
                    RKBroker @RKBroker last edited by RKBroker

                    Ok, Problem gelöst, dafür ein paar Andere 😞

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

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    521
                    Online

                    31.8k
                    Users

                    80.0k
                    Topics

                    1.3m
                    Posts

                    climate javascript
                    2
                    8
                    574
                    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