Habe die Verbesserung von towiat aus #17 noch eingebaut.
Dann gab es noch einen Syntax Fehler, weil ich zwischenzeitlich schon den Timer integriert hatte.
Habe eine } in Zeile 48 (vorletzte Zeile!) ergänzt und funktioniert.
Hier das Skript komplett so wie es jetzt bei mir läuft
Wenn die } wo anders rein muss, lasst es mich bitte wissen. Ansonsten verwende ich das nun produktiv....
Danke euch.
Code
let AUTH_KEY = "XXX";
let HOST = "shelly-140-eu.shelly.cloud"; // Host aus deiner Shelly-App
let TARGET_DEVICE = "XXX";
// Funktion: Zweiten Shelly schalten
function controlTargetShelly(turnOn) {
let url = "https://" + HOST + "/v2/devices/api/set/switch?auth_key=" + AUTH_KEY;
let body = {
id: TARGET_DEVICE,
channel: 0,
on: turnOn
};
Shelly.call(
"http.request",
{
method: "POST",
url: url,
headers: { "Content-Type": "application/json" },
body: JSON.stringify(body),
timeout: 5
},
function (res, err) {
if (err) {
print("Error:", JSON.stringify(err));
} else {
print("Remote Shelly Response:", res.body);
}
}
);
}
// Ereignis-Handler: Reagiert auf das interne Relais vom Plus 1
Shelly.addEventHandler(function (event) {
if (event.component === "switch:0") {
if (event.info && event.info.event === "toggle") {
let newState = event.info.state; // true = AN, false = AUS
// Zeitversatz: 5 Sekunden (5000 ms)
Timer.set(3000, false, function () {
controlTargetShelly(newState);
print("Lokales Relais geändert → Remote Shelly (nach 5s):", newState ? "AN" : "AUS");
});
print("Lokales Relais geändert → Verzögerung gestartet (5s)");
}} // Zeile48
});
Alles anzeigen