NEWS
[Gelöst] Problem mit URL Request: "Error: self signed certificate"
-
Hallo zusammen,
ich möchte gerne in einem Skript eine URL Aufrufen lassen.
Das Skript dazu bekomme ich auch gebaut, allerdings scheints Probleme mit dem "https" zu geben.
Ich bekomme als error im log "Error: self signed certificate"
Die URL die ausgeführt wird, gehört zu einer webcam, die für den SSL Zugriff offenbar ein selbstsigniertes Zertifikat verwendet. Zugriff ohne SSL lässt sich leider nicht aktivieren.
Gibt es eine Möglichkeit iobroker dazu zu bringen auch diese Zertifikate zu akzeptieren?
-
Ich habe mal für dich gegoogelt … Erstes Ergebnis: https://stackoverflow.com/questions/108 ... ps-request
-
Danke!
Leider komm ich damit auch nicht weiter. Habe nun folgenden Code:
on({id: 'mihome.0.devices.switch_158d0002107b85.click', change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("mihome.0.devices.switch_158d0002107b85.click").val == true) { var request = require("request"); var agentOptions; var agent; agentOptions = { host: '192.168.178.161' , port: '443' , path: '/' , rejectUnauthorized: false }; agent = new https.Agent(agentOptions); request({ url: "https://192.168.178.161/cgi-bin/action.cgi?cmd=ir_led_off" , method: 'GET' , agent: agent }, function (err, resp, body) { // ... }); } });
Bekomme aber damit folgenden Fehler:
javascript.0 2018-08-22 08:27:56.627 error at Object. <anonymous>(script.js.Cam.Skript2:16:13)
javascript.0 2018-08-22 08:27:56.627 error Error in callback: ReferenceError: https is not defined
Jemand noch eine Idee, was ich falsch mache?</anonymous>
-
Mal mindestens fehlt denke ich ein
https = require(‚https‘);
Und bitte die Anführungszeichen nicht kopieren sondern selber richtig schreiben
Gesendet vom Handy …
-
agent = new https.Agent(agentOptions);
ReferenceError: https is not defined `
Ja, ganz oben einfügen:
const https = require("https");
-
Danke!!
Jetzt gibt das Skript keinen Error mehr aus.
Allerdings wird offenbar die URL nicht ausgeführt.
Wenn ich die URL im Browser ausführe, schaltet sich das IR-Licht meiner Webcam aus. Beim Skript tut sich allerdings nichts.
-
Dann logge mal im Callback den Inhalt von resp und err:
if (err) log(JSON.stringify(err)); if (resp) log(JSON.stringify(resp));
-
Wirklich echt super, dass ihr mir auf die Sprünge helft!!
Sorry, ich bin totaler Neuanfänger mit Javascript.
Ich hab die Zeilen jetzt so eingebaut:
const https = require("https"); on({id: 'javascript.0.Alarm', change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("javascript.0.Alarm").val == true) { var request = require("request"); var agentOptions; var agent; agentOptions = { host: '192.168.178.161' , port: '443' , path: '/' , rejectUnauthorized: false }; agent = new https.Agent(agentOptions); request({ url: "https://192.168.178.161/cgi-bin/action.cgi?cmd=ir_led_off" , method: 'GET' , agent: agent }, function (err, resp, body) { if (err) log(JSON.stringify(err)); if (resp) log(JSON.stringify(resp)); }); } });
Bekomme aber keinen log Eintrag.
-
Dann wird der Request sehr wahrscheinlich nicht ausgeführt. Das kannst du am besten überprüfen, indem du direkt vor der Zeile noch eine Logausgabe einfügst.
-
Der Request wird offenbar doch ausgeführt. Aber ich bekomme die Rückmeldung 401, da ich auch noch ganz vergessen hatte, dass die http Oberfläche durch Zugangsdaten gesperrt ist.
Mit der angepassten url: https://user:password@192.x usw. hats dann funktioniert!
Nochmal vielen Dank euch für die Hilfe!!!