-
Autor
Hallo zusammen,
vielleicht kann mir hier jemand helfen.
Wenn ich den Shelly einschalte, soll er sich automatisch abschalten wenn die Leistung unter 20W sinkt.
Ich habe hier erst einmal geringe Werte zum testen eingestellt.
hm, leider funktioniert es nicht so wie es sein soll, der Shelly schaltet nicht ab.
Ich habe am Ausgang eine Leistung <15W aber es erfolgt keine Abschaltung nach den eingestellten 120 sec.
Was ist hier falsch? Kann mir jemand helfen.
Script
// Konfiguration - hier kannst du die Werte anpassen
var POWER_THRESHOLD = 20; // Schwellwert in Watt (unter diesem Wert wird abgeschaltet)
var CHECK_INTERVAL = 10; // Prüfintervall in Sekunden
var DELAY_BEFORE_SHUTDOWN = 120; // Wartezeit in Sekunden bevor abgeschaltet wird
// Variablen für die Logik
var lowPowerStartTime = null;
var isMonitoring = false;
// Funktion zum Prüfen der aktuellen Leistung
function checkPowerConsumption() {
Shelly.call("Switch.GetStatus", {id: 0}, function(result) {
if (result && result.output === true) { // Nur prüfen wenn eingeschaltet
var currentPower = result.apower | | 0; // Aktuelle Leistung in Watt
print("Aktuelle Leistung: " + currentPower + "W (Schwellwert: " + POWER_THRESHOLD + "W)");
if (currentPower < POWER_THRESHOLD) {
// Leistung unter Schwellwert
if (lowPowerStartTime === null) {
lowPowerStartTime = Timer.now();
print("Niedrige Leistung erkannt. Warte " + DELAY_BEFORE_SHUTDOWN + " Sekunden...");
} else {
// Prüfen ob genug Zeit vergangen ist
var timeInLowPower = (Timer.now() - lowPowerStartTime) / 1000;
if (timeInLowPower >= DELAY_BEFORE_SHUTDOWN) {
print("Schalte automatisch ab - Leistung zu niedrig für " + timeInLowPower + " Sekunden");
Shelly.call("Switch.Set", {id: 0, on: false});
lowPowerStartTime = null;
isMonitoring = false;
}
}
} else {
// Leistung über Schwellwert - Reset
if (lowPowerStartTime !== null) {
print("Leistung wieder über Schwellwert - Abschaltung abgebrochen");
lowPowerStartTime = null;
}
}
} else {
// Switch ist aus - Überwachung stoppen
isMonitoring = false;
lowPowerStartTime = null;
}
});
}
// Event-Handler für Ein-/Ausschalten
Shelly.addEventHandler(function(event) {
if (event.component === "switch:0") {
if (event.info.output === true) {
// Switch wurde eingeschaltet - Überwachung starten
print("Switch eingeschaltet - starte Leistungsüberwachung");
isMonitoring = true;
lowPowerStartTime = null;
} else {
// Switch wurde ausgeschaltet - Überwachung stoppen
print("Switch ausgeschaltet - stoppe Leistungsüberwachung");
isMonitoring = false;
lowPowerStartTime = null;
}
}
});
// Hauptschleife für die Überwachung
Timer.set(CHECK_INTERVAL * 1000, true, function() {
if (isMonitoring) {
checkPowerConsumption();
}
});
print("Script gestartet. Konfiguration:");
print("- Schwellwert: " + POWER_THRESHOLD + "W");
print("- Prüfintervall: " + CHECK_INTERVAL + "s");
print("- Wartezeit vor Abschaltung: " + DELAY_BEFORE_SHUTDOWN + "s");
Wäre toll wenn ich hier eine Lösung bekomme.
VG Ulli![]()