-
Autor
Ich hab ein kleines Skript geschrieben das die Wlan Verbindung meines Shellys(gen3) überwacht, ist des Shelly nicht verbunden wird der AP des Shellys eingeschaltet und nach eingestellter Zeit ein Reboot ausgelöst. Bitte probiert das aus und gebt mir feedback.
Code
// WLAN-Watchdog für Shelly Gen3 (z. B. 2PM) – ohne persistenten Speicher
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) {
let url = "http://localhost/rpc/WiFi.SetConfig?config=%7B%22ap%22%3A%7B%22enable%22%3Afalse%7D%7D";
Shelly.call("HTTP.GET", { url: url }, function (res, err) {
//Shelly.call("WiFi.SetAPEnable", { 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) {
let url = "http://localhost/rpc/WiFi.SetConfig?config=%7B%22ap%22%3A%7B%22enable%22%3Atrue%7D%7D";
Shelly.call("HTTP.GET", { url: url }, 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