Shelly Skript über Taster ausführen

VPN/Proxy erkannt

Es scheint, dass Sie einen VPN- oder Proxy-Dienst verwenden. Bitte beachten Sie, dass die Nutzung eines solchen Dienstes die Funktionalität dieser Webseite einschränken kann.

  • Hallo zusammen, Ich bin absoluter Neuling was die Programmierung der Shellys per Skript angeht.


    Ich habe vor mir ein Shelly plus 1PM der neusten Generation und möchte hier ein Skript über einen Tastereingang programmieren.


    Das Relais soll nach Tastendruck für 5Sekunden Schließen und danach 30 Sekunden pausieren bevor der nächste Durchlauf Startet. (5 Durchläufe geplant)


    das ganze läuft auf 24v.


    anschluss ist folgendermaßen: + und - sind klar,

    taster ist zwischen SW und - angeschlossen.

    Wenn ich jetzt aber den Taster betätige, schließt das Relais nir solange der Zaster gedrückt ist. Sobald man diesen loslässt öffnet es wieder.


    Mein Skript sieht bisher so aus:

    const CONFIG = {
    INPUT_ID: SW, // Eingang (Taster)
    OUTPUT_ID: 0, // Ausgang (Relais)
    ON_TIME: 3000, // 3 Sekunden EIN (Millisekunden)
    OFF_TIME: 20000, // 20 Sekunden AUS (Millisekunden)
    REPEAT_COUNT: 5, // Anzahl der Wiederholungen
    COMPONENT_TYPE: 'input'
    };

    let currentCycle = 0;
    let isRunning = false;
    let timer = null;

    function runCycle() {
    if (currentCycle >= CONFIG.REPEAT_COUNT) {
    // fertig → alles zurücksetzen
    Shelly.call("Switch.Set", { id: CONFIG.OUTPUT_ID, on: false });
    currentCycle = 0;
    isRunning = false;
    return;
    }

    // Ausgang EIN
    Shelly.call("Switch.Set", { id: CONFIG.OUTPUT_ID, on: true });

    // Nach ON_TIME wieder ausschalten
    Timer.set(CONFIG.ON_TIME, false, function () {
    Shelly.call("Switch.Set", { id: CONFIG.OUTPUT_ID, on: false });

    // Nächsten Zyklus nach OFF_TIME starten
    Timer.set(CONFIG.OFF_TIME, false, function () {
    currentCycle++;
    runCycle();
    });
    });
    }

    function setup() {
    // Eingang als Button konfigurieren
    Shelly.call("Switch.SetConfig", {
    id: CONFIG.INPUT_ID,
    config: { in_mode: "detached" }
    });

    Shelly.call("Input.SetConfig", {
    id: CONFIG.INPUT_ID,
    config: { type: "button" }
    });

    // Event-Handler für Tastendruck
    Shelly.addEventHandler(function (event) {
    if (event.info.event === "single_push" &&
    event.id === CONFIG.INPUT_ID &&
    event.info.component === CONFIG.COMPONENT_TYPE + ":" + JSON.stringify(CONFIG.INPUT_ID)) {

    if (!isRunning) {
    isRunning = true;
    currentCycle = 0;
    runCycle();
    }
    }
    });
    }

    setup();


    Danke für eure Hilfe!

    Liebe Grüße!