Hallo,
Ich habe einen Shelly Plug S und einen Shelly 3EM.
Ich hätte gerne, dass der Plug nur an ist wenn ich von meiner PV-Anlage 2kw Überschuss produziere und er soll dann nur um 13Uhr für 10min angehen. Ich habe dafür ein skript geschrieben leider aus mir unbekannten gründen klappt dieses nicht und der Plug läuft dauerhaft. Bin dankbar für jede Hilfe.
Das Skript:
let checkInterval = 30; // Alle 30 Sekunden prüfen
let powerThreshold = 2000; // Einspeisegrenze in Watt
let activeTime = 10 * 60 * 1000; // 10 Minuten in Millisekunden
let emIp = "192.168.178.198"; // IP deines Shelly 3EM
let emChannel = 0; // 0 = Gesamtleistung
let lastTriggerDate = ""; // Merkt sich, ob heute schon geschaltet wurde
// Timer läuft alle 30 Sekunden
Timer.set(checkInterval * 1000, true, function () {
print("Script läuft alle 30 Sekunden...");
let now = new Date();
let hour = now.getHours();
let minute = now.getMinutes();
let today = now.toDateString();
// Nur zwischen 13:00 und 13:00:59 ausführen und nur einmal pro Tag
if (hour === 13 && minute === 0 && lastTriggerDate !== today) {
print("13:00 erreicht, prüfe Überschuss...");
HTTP.get("http://" + emIp + "/rpc/EM.GetStatus?id=" + emChannel, function (res, err) {
if (err) {
print("Fehler beim Abrufen der 3EM-Daten:", err);
return;
}
let data = JSON.parse(res.body);
let exportPower = data.total_act_power * -1; // Negativ = Einspeisung
print("Aktueller Überschuss:", exportPower, "W");
if (exportPower > powerThreshold) {
Shelly.call("Switch.Set", { id: 0, on: true }, function () {
print("✅ Steckdose eingeschaltet für 10 Minuten");
lastTriggerDate = today; // Nur einmal pro Tag triggern
Timer.set(activeTime, false, function () {
Shelly.call("Switch.Set", { id: 0, on: false });
print("⏱️ Steckdose wieder ausgeschaltet");
});
});
} else {
print("⛔️ Nicht genug Überschuss:", exportPower, "W");
}
});
} else {
print("Warte auf 13:00 Uhr oder schon heute ausgeführt.");
}
});