Ich hätte noch einen Vorschlag. Der HTTP-Server sendet bei dir keine Antwort an den BWM, so dass dieser nach seinem HTTP-Request wartet, bis zum timeout.
Funktioniert, ist aber in manchen Fällen lästig. Kannst du testen, wenn du:
im Browser eingibst.
Sende ihm einfach eine Antwort. Füge in dein Skript einfach folgende Funktion mit ein.
Code
function send_response(response, body) {
response.code = 200;
response.body = body;
response.send();
}
und ändere deinen Code so:
Code
HTTPServer.registerEndpoint('on',
function (request, response) {
send_response(response, "OK"); //<----- Diese Zeile zusätzlich.
if (on!==true) { // false or null or undefined
Shelly.call("Switch.set", {'id': 0, 'on': true});
if (request.query.length > 0) {
let dur = JSON.parse(request.query);
if(!isNaN(dur) && dur>0) {
th = Timer.set(Math.floor(1000*dur), false,
function () {
Shelly.call("Switch.set", {'id': 0, 'on': false});
}
);
}
}
}
}
);
Alles anzeigen