der Aufruf der Funktion ToggleCAM ist soweit korrekt, weil dort zwei Parameter übergeben werden müssen, das sind IP und Port.
function ToggleCAM (ip, port)
war aber ein Fehler im Script, auf den ich schon mal reingefallen bin.. statt input wird hier der state benötigt.
// hier IP und Schalter vom Shelly angeben, 0, 1, 2 oder 3
let CONFIG = {
ip: '10.168.10.22',
id: 0,
};
Shelly.addEventHandler(
function (event, user_data) {
if (typeof event.info.state !== 'undefined') {
if (event.info.id === CONFIG.id && event.info.state === true) {
ToggleCAM(CONFIG.ip, '20001');
}
if (event.info.id === CONFIG.id && event.info.state === false) {
ToggleCAM(CONFIG.ip, '20002');
}
} else {
return true;
}
},
);
function ToggleCAM (ip, port) {
Shelly.call(
"http.get",
{ url: 'http://' + ip + ':' + port + '/'},
function (response, error_code, error_message, ud) {
print(error_code);
print(error_message);
},
null
);
};
Alles anzeigen
Ein Problem gibt es damit allerdings möglicherweise. die Shelly.call Funktion erwartet eine positive Antwort (HTTP 200), die ja von der Kamera laut deiner Aussage nicht kommt. Das führt vermutlich dazu, dass die Funktion in einen Timeout laufen wird. der beträgt soweit ich das bisher getestet habe 15 Sekunden.
wenn jetzt innerhalb von 15 Sekunden mehr als 5 Schaltvorgänge kommen dann führt das Script keine weiteren Calls aus weil da aktuell ein hartes Limit seitens des Herstellers gesetzt ist.
Ich werde bei Gelegenheit mal einen Feature-Request stellen, damit zumindest der Timeout konfigurierbar ist. Aktuell ist das laut Doku leider nicht änderbar.
Du kannst das ja mal testen und dann unten im Scriptfenster gucken, ob da Fehlermeldungen bezüglich Timeout protokolliert werden.