Beiträge von Andy_S

    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.");
    }
    });