-
Autor
Hallo,
bin neu und kenne mich leider mit mit Java oder Programmierung gar nicht aus. Ich hatte ChatGPT ein Skript erstellen lassen das von Sonnenuntergang bis Sonnenaufgang bei mehr als 5 Watt Verbrauch nach 20 Min abschalten soll. Ist ein Shelly Outdoor Plug mit aktueller Firmware. Per Zeitplan (unabhängig vom Skript) soll 15 Min vor Sonnenaufgang wieder eingeschaltet werden. Hintergrund ist das ich den Netzbezug meiner Balkonkraftwerkspeichers nachts kappen will (Anker Solix Solarbank 2 E1600 AC). Dieser zieht halt im Leerlauf (Speicher leer) knapp 15 Watt und im Geräteschlaf immer noch knapp 9 Watt. Da hab ich keinen Bock drauf. Wenn der Speicher sich ggf. nachts leert und solange negativer Verbrauch da ist und Strom eingespeist wird ist alles gut aber wenn dieser nachts anfängt Strom zu verbrauchen zwinge ich den dem Skript das aus ihrer eigenen internen Reserve zu machen.
Leider läuft das Skript einfach nicht. Ich klicke auf den Play Botton und nach kurzer zeit ist der wieder aktivierbar. hab es zig mal versucht. hier das Skript
let wattThreshold = 5;
let durationThreshold = 20 * 60;
let checkInterval = 30;
let highPowerStart = null;
let timer = null;
function isNight() {
let now = new Date();
let sunrise = Shelly.getComponentStatus("sys").sunrise;
let sunset = Shelly.getComponentStatus("sys").sunset;
return now < new Date(sunrise) || now > new Date(sunset);
}
function checkPower() {
Shelly.call("EM.GetStatus", { id: 0 }, function (res) {
let power = res.apower;
if (isNight()) {
if (power > wattThreshold) {
if (highPowerStart === null) {
highPowerStart = Timer.now();
} else if ((Timer.now() - highPowerStart) > durationThreshold) {
Shelly.call("Switch.Set", { id: 0, on: false });
highPowerStart = null;
}
} else {
highPowerStart = null;
}
}
});
}
if (timer !== null) {
Timer.clear(timer);
}
timer = Timer.set(checkInterval * 1000, true, checkPower);
Alles anzeigen
Kann mir da jemand Helfen?
vielen Dank