Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst] http request

    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] http request

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

      @paul53:

      @Lenny.CB:

      Ich weis nicht wie ich mit "request = require('request')" user/password mitgeben kann, sodass das ganze letztlich funktioniert. [https://www.npmjs.com/package/request#http-authentication](https://www.npmjs.com/package/request#http-authentication) der Link war gestern meine Abendlektüre, leider ohne Ergebnisse.

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

        @Lenny.CB:

        also aus dem Script heraus geht es mit:

        exec('wget http://192.168.2.37:8091/SetState.pl?R16=1&RT16=0');
        

        hier ist aber zwischen Befehl und Ausführung ein Zeitversatz den ich nicht gut finde (knapp 5 Sekunden).

        Im Prinzip will ich mit einem Xiaomi-Taster bzw. einem Bewegungsmelder Leuchten im Garten schalten, die an meinem Pool-Controller angeschlossen sind.

        Und beim "Licht schalten" ist ein "Versatz" von über einer Sekunde absolut nicht schön.

        Daher auch die Überlegung mit dem request. Das muss doch damit auch gehen? Hat noch wer Ideen? `

        hier hast du aber auch keine Authentisierung und es klappt

        1 Reply Last reply Reply Quote 0
        • Lenny.CB
          Lenny.CB Most Active last edited by

          @homecineplexx:

          @Lenny.CB:

          also aus dem Script heraus geht es mit:

          exec('wget http://192.168.2.37:8091/SetState.pl?R16=1&RT16=0');
          

          hier ist aber zwischen Befehl und Ausführung ein Zeitversatz den ich nicht gut finde (knapp 5 Sekunden).

          Im Prinzip will ich mit einem Xiaomi-Taster bzw. einem Bewegungsmelder Leuchten im Garten schalten, die an meinem Pool-Controller angeschlossen sind.

          Und beim "Licht schalten" ist ein "Versatz" von über einer Sekunde absolut nicht schön.

          Daher auch die Überlegung mit dem request. Das muss doch damit auch gehen? Hat noch wer Ideen? `

          hier hast du aber auch keine Authentisierung und es klappt `
          jupp da hast du recht, dennoch ist mir unklar warum es mit request nicht klappt.

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

            probiers mal ganz erinfach:

            var request = require('request');
            request("http://192.168.2.37:8091/SetState.pl?R16=1&RT16=0").on('error', function  (e) {  log(e, 'error');});
            
            
            1 Reply Last reply Reply Quote 0
            • Lenny.CB
              Lenny.CB Most Active last edited by

              @homecineplexx:

              probiers mal ganz erinfach:

              var request = require('request');
              request("http://192.168.2.37:8091/SetState.pl?R16=1&RT16=0").on('error', function  (e) {  log(e, 'error');});
              
              ```` `  gemacht, passiert nichts, kein Schalten, kein Log…
              1 Reply Last reply Reply Quote 0
              • H
                homecineplexx last edited by

                den javaScript adpater hast du mal auf debug gestellt?

                siehst du eigentlich irgendwo einen log, dass er versucht diesen request abzuschicken?

                1 Reply Last reply Reply Quote 0
                • Lenny.CB
                  Lenny.CB Most Active last edited by

                  @homecineplexx:

                  den javaScript adpater hast du mal auf debug gestellt? ` jupp
                  @homecineplexx:

                  siehst du eigentlich irgendwo einen log, dass er versucht diesen request abzuschicken? ` nein

                  ich fasse mal zusammen:

                  deine Code-Zeile erzeugt keine Befehle und auch keine Logeinträge

                  var request = require('request');
                  request("http://192.168.2.37:8091/SetState.pl?R16=1&RT16=0").on('error', function  (e) {  log(e, 'error');});
                  

                  Ich hatte dann mal aus dem https://www.npmjs.com/package/request was probiert:

                  var request = require('request');
                  request("http://192.168.2.37:8091/SetState.pl?R16=1&RT16=0", function  (error, response, body) {
                      log('error: ' + error);
                      log('response: ' + JSON.stringify(response));
                      log('body: ' + body);
                  });
                  

                  erzeugt dann dieses Log:````
                  12:58:34.714 [info] javascript.0 script.js.Testscripte.Skript1: error: null
                  12:58:34.715 [info] javascript.0 script.js.Testscripte.Skript1: response: {"statusCode":401,"body":"","headers":{"server":"PoolController","www-authenticate":"Poolauth realm="NeedPassword"","content-type":"text/html"},"request":{"uri":{"protocol":"http:","slashes":true,"auth":null,"host":"192.168.2.37:8091","port":"8091","hostname":"192.168.2.37","hash":null,"search":"?R16=1&RT16=0","query":"R16=1&RT16=0","pathname":"/SetState.pl","path":"/SetState.pl?R16=1&RT16=0","href":"http://192.168.2.37:8091/SetState.pl?R16=1&RT16=0"},"method":"GET","headers":{}}}
                  12:58:34.716 [info] javascript.0 script.js.Testscripte.Skript1: body:

                  
                  da steht was von "****Poolauth realm=\"NeedPassword\****". Also erweitert mit den Zeilen die ich bei request-npm gefunden habe (ob das richtig ist, sein mal dahin gestellt):````
                  request({
                      method: 'POST',
                      uri: 'http://192.168.2.37:8091/SetState.pl?R16=1&RT16=0',
                      auth: [{
                          'user': 'admin',
                          'pass': 'admin',
                          'sendImmediately': false
                          }]
                    },
                    function (error, response, body) {
                      log('error: ' + error);
                      log('response: ' + response);
                      //log('response: ' + JSON.stringify(response));
                      log('body: ' + body);
                    });
                   */
                  

                  erzeug dieses Log:````
                  13:04:02.185 [info] javascript.0 script.js.Testscripte.Skript1: error: Error: no auth mechanism defined
                  13:04:02.185 [info] javascript.0 script.js.Testscripte.Skript1: response: undefined
                  13:04:02.185 [info] javascript.0 script.js.Testscripte.Skript1: body: undefined

                  
                  Hmmm, nun gehts nicht weiter…
                  1 Reply Last reply Reply Quote 0
                  • H
                    homecineplexx last edited by

                    und so?

                    var requestTest = require('request'),
                    
                    var options = {
                        url: 'http://192.168.2.37:8091/SetState.pl?R16=1&RT16=0',
                        method: 'POST',
                        formData: {
                            'username':'admin',
                            'password':'admin'
                        }
                    }
                    
                    requestTest(options, function  (error, response, body) {
                        log('error: ' + error);
                        log('response: ' + JSON.stringify(response));
                        log('body: ' + body);
                    });
                    
                    
                    1 Reply Last reply Reply Quote 0
                    • Lenny.CB
                      Lenny.CB Most Active last edited by

                      @homecineplexx:

                      und so?

                      var requestTest = require('request'),
                      
                      var options = {
                          url: 'http://192.168.2.37:8091/SetState.pl?R16=1&RT16=0',
                          method: 'POST',
                          formData: {
                              'username':'admin',
                              'password':'admin'
                          }
                      }
                      
                      requestTest(options, function  (error, response, body) {
                          log('error: ' + error);
                          log('response: ' + JSON.stringify(response));
                          log('body: ' + body);
                      });
                      
                      ```` `  
                      

                      ergibt das: ` > 14:45:24.506 [info] javascript.0 script.js.Testscripte.Skript1: error: Error: read ECONNRESET

                      14:45:24.523 [info] javascript.0 script.js.Testscripte.Skript1: response: undefined

                      14:45:24.523 [info] javascript.0 script.js.Testscripte.Skript1: body: undefined `

                      habe in der ersten Zeile mal das "Komma" mit einem "Semikolon" getauscht?

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

                        Sorry war ein Schreibfehler.

                        Natürlich so.

                        Aber du bekommst keine Authfehler mehr?

                        var requestTest = require('request');
                        
                        var options = {
                            url: 'http://192.168.2.37:8091/SetState.pl?R16=1&RT16=0',
                            method: 'POST',
                            formData: {
                                'username':'admin',
                                'password':'admin'
                            }
                        };
                        
                        requestTest(options, function  (error, response, body) {
                            log('error: ' + error);
                            log('response: ' + JSON.stringify(response));
                            log('body: ' + body);
                        });
                        
                        
                        1 Reply Last reply Reply Quote 0
                        • Lenny.CB
                          Lenny.CB Most Active last edited by

                          @homecineplexx:

                          Sorry war ein Schreibfehler.

                          Natürlich so.

                          Aber du bekommst keine Authfehler mehr?

                          var requestTest = require('request');
                          
                          var options = {
                              url: 'http://192.168.2.37:8091/SetState.pl?R16=1&RT16=0',
                              method: 'POST',
                              formData: {
                                  'username':'admin',
                                  'password':'admin'
                              }
                          };
                          
                          requestTest(options, function  (error, response, body) {
                              log('error: ' + error);
                              log('response: ' + JSON.stringify(response));
                              log('body: ' + body);
                          });
                          
                          ```` `  Nein.
                          1 Reply Last reply Reply Quote 0
                          • H
                            homecineplexx last edited by

                            Schaltet dein Teil jetzt mal?

                            1 Reply Last reply Reply Quote 0
                            • Lenny.CB
                              Lenny.CB Most Active last edited by

                              @homecineplexx:

                              Schaltet dein Teil jetzt mal? ` Ne tuts leider nicht…

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

                                mal was anderes. siehst du auf dem 192.168.2.37:8091, den du steuern möchtest, irgendwelche logs?

                                1 Reply Last reply Reply Quote 0
                                • Lenny.CB
                                  Lenny.CB Most Active last edited by

                                  @homecineplexx:

                                  mal was anderes. siehst du auf dem 192.168.2.37:8091, den du steuern möchtest, irgendwelche logs? ` Logs in dem Sinne sind da nicht zu holen.

                                  ABER, ich habe jetzt was gefunden was auch klappt.

                                  var request = require('request'),
                                      username = "admin",
                                      password = "admin",
                                      url = 'http://192.168.2.37:8091/SetState.pl?R16=0&RT16=0',
                                      auth = "Basic " + new Buffer(username + ":" + password).toString("base64");
                                  
                                  request({
                                          url : url,
                                          headers : {'Authorization' : auth}
                                      },
                                      function (error, response, body) {
                                              log('error: ' + error);
                                              log('response: ' + JSON.stringify(response));
                                              log('body: ' + body);
                                      }
                                  );
                                  

                                  erzeugt dann dieses LOG und schaltet auch das Relais im Controler:

                                  08:23:02.308	[info]	javascript.0 script.js.Testscripte.Skript1: error: null
                                  08:23:02.310	[info]	javascript.0 script.js.Testscripte.Skript1: response: {"statusCode":200,"body":"0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0\n","headers":{"server":"PoolController V.1.6.8","connection":"close","content-type":"text/plain; charset=ISO-8859-1"},"request":{"uri":{"protocol":"http:","slashes":true,"auth":null,"host":"192.168.2.37:8091","port":"8091","hostname":"192.168.2.37","hash":null,"search":"?R16=0&RT16=0","query":"R16=0&RT16=0","pathname":"/SetState.pl","path":"/SetState.pl?R16=0&RT16=0","href":"http://192.168.2.37:8091/SetState.pl?R16=0&RT16=0"},"method":"GET","headers":{"Authorization":"Basic YWxxxx46xxxxaWxxxx=="}}}
                                  08:23:02.310	[info]	javascript.0 script.js.Testscripte.Skript1: body: 0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0
                                  

                                  nochmal danke an alle die so geduldig waren. 😄

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

                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  643
                                  Online

                                  31.7k
                                  Users

                                  79.9k
                                  Topics

                                  1.3m
                                  Posts

                                  7
                                  29
                                  7473
                                  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