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. [gelöst] http request

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.2k

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.5k

[gelöst] http request

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
29 Beiträge 7 Kommentatoren 8.1k 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.
  • H Offline
    H Offline
    homecineplexx
    schrieb am zuletzt editiert von
    #16

    @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 Antwort Letzte Antwort
    0
    • Lenny.CBL Online
      Lenny.CBL Online
      Lenny.CB
      Most Active
      schrieb am zuletzt editiert von
      #17

      @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 Antwort Letzte Antwort
      0
      • H Offline
        H Offline
        homecineplexx
        schrieb am zuletzt editiert von
        #18

        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 Antwort Letzte Antwort
        0
        • Lenny.CBL Online
          Lenny.CBL Online
          Lenny.CB
          Most Active
          schrieb am zuletzt editiert von
          #19

          @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 Antwort Letzte Antwort
          0
          • H Offline
            H Offline
            homecineplexx
            schrieb am zuletzt editiert von
            #20

            den javaScript adpater hast du mal auf debug gestellt?

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

            1 Antwort Letzte Antwort
            0
            • Lenny.CBL Online
              Lenny.CBL Online
              Lenny.CB
              Most Active
              schrieb am zuletzt editiert von
              #21

              @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 Antwort Letzte Antwort
              0
              • H Offline
                H Offline
                homecineplexx
                schrieb am zuletzt editiert von
                #22

                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 Antwort Letzte Antwort
                0
                • Lenny.CBL Online
                  Lenny.CBL Online
                  Lenny.CB
                  Most Active
                  schrieb am zuletzt editiert von
                  #23

                  @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 Antwort Letzte Antwort
                  0
                  • H Offline
                    H Offline
                    homecineplexx
                    schrieb am zuletzt editiert von
                    #24

                    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 Antwort Letzte Antwort
                    0
                    • Lenny.CBL Online
                      Lenny.CBL Online
                      Lenny.CB
                      Most Active
                      schrieb am zuletzt editiert von
                      #25

                      @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 Antwort Letzte Antwort
                      0
                      • H Offline
                        H Offline
                        homecineplexx
                        schrieb am zuletzt editiert von
                        #26

                        Schaltet dein Teil jetzt mal?

                        1 Antwort Letzte Antwort
                        0
                        • Lenny.CBL Online
                          Lenny.CBL Online
                          Lenny.CB
                          Most Active
                          schrieb am zuletzt editiert von
                          #27

                          @homecineplexx:

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

                          1 Antwort Letzte Antwort
                          0
                          • H Offline
                            H Offline
                            homecineplexx
                            schrieb am zuletzt editiert von
                            #28

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

                            1 Antwort Letzte Antwort
                            0
                            • Lenny.CBL Online
                              Lenny.CBL Online
                              Lenny.CB
                              Most Active
                              schrieb am zuletzt editiert von
                              #29

                              @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. :D

                              1 Antwort Letzte Antwort
                              1
                              Antworten
                              • In einem neuen Thema antworten
                              Anmelden zum Antworten
                              • Älteste zuerst
                              • Neuste zuerst
                              • Meiste Stimmen


                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              757

                              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