Ich habe jetzt nochmal rumprobiert. Die Zeile muss richtig lauten:
Hier nochmal das komplette Script, diesmal ohne HTTP aufrufe:
Code
// WLAN-Watchdog für Shelly Gen2+
let wifiLossTime = 300; // Zeit in Sekunden bis zum Reboot
let checkInterval = 10; // Prüfintervall in Sekunden
let lostTimeCounter = 0;
let apEnabled = true;
function checkWiFi() {
Shelly.call("WiFi.GetStatus", {}, function (res, err) {
if (err) {
print("❌ Fehler beim WLAN-Status:", JSON.stringify(err));
return;
}
if (res.status === "got ip") {
lostTimeCounter = 0;
print("✅ WLAN verbunden");
if (apEnabled) {
Shelly.call("WiFi.SetConfig", {"config":{ "ap": {"enable": false}}}, function (res, err) {
if (err) {
print("❌ Fehler beim Deaktivieren des AP:", JSON.stringify(err));
} else {
print("🔄 AP deaktiviert");
apEnabled = false;
}
});
}
} else {
lostTimeCounter += checkInterval;
print("⚠️ WLAN getrennt seit " + lostTimeCounter + " Sekunden");
if (!apEnabled) {
Shelly.call("WiFi.SetConfig", {"config":{ "ap": {"enable": true}}}, function (res, err) {
if (err) {
print("❌ Fehler beim Aktivieren des AP:", JSON.stringify(err));
} else {
print("🔄 AP aktiviert");
apEnabled = true;
}
});
}
if (lostTimeCounter >= wifiLossTime) {
print("🚨 WLAN zu lange getrennt – Neustart...");
Shelly.call("Shelly.Reboot", {});
}
}
});
}
// Starte die Überwachung
Timer.set(checkInterval * 1000, true, checkWiFi);
Alles anzeigen