Hallo,
um sicherzustellen, dass das Magnetventil und der Impuls für den Generator nur bei geschlossener Tür (Reedkontakt am Add-on) starten, nutzt du ein Skript auf dem Shelly Plus 2PM.
Logik des Skripts:
- Überwachung: Das Skript lauscht auf das Event des physischen Schalters (S1).
- Bedingung (Start): Wenn Kippschalter S1 gedrückt wird, prüft das Skript den Status des Add-on-Eingangs (Reedkontakt).
- Aktion: Nur wenn der Reedkontakt geschlossen ist, wird der Ausgang 1 (Magnetventil) eingeschaltet und der HTTP-Befehl an den Shelly 1PM (Generator) gesendet.
- Laufender Betrieb: Da die Tür danach ignoriert werden kann, wird die Bedingung nur im "Off-to-On"-Moment des Kippschalters S1 geprüft.
Vorbereitung am Shelly Plus 2PM:
- Detached Mode: Stelle sicher, dass der Eingang (Input) für das Magnetventil auf "Detached" (Getrennter Schalter) steht. So schaltet der Schalter das Relais nicht mehr direkt hardwareseitig.
- Add-on Setup: Der Reedkontakt muss am digitalen Eingang des Plus Add-ons konfiguriert sein (zugeordnete ID prüfen)
Skript-Beispiel (vereinfacht):
Du kannst diesen Code im Bereich „Scripts“ deines Shelly Plus 2PM einfügen:
// EINSTELLUNGEN - BITTE ANPASSEN
let REED_INPUT_ID = 100; // ID des Add-on digitalen Eingangs (meist 100, bitte in Settings prüfen)
let IP_SHELLY_1PM = "192.168.XXX.XXX"; // Hier die IP-Adresse des Shelly 1PM für den Generator eintragen
// Event-Überwachung für den physischen Kippschalter (Input 0)
Shelly.addEventHandler(function (event) {
// LOGIK: WENN DER KIPPSCHALTER AUF "AN" GESTELLT WIRD
if (event.component === "input:0" && event.info.state === true) {
// Status des Reedkontakts (Add-on) abfragen
Shelly.call("Input.GetStatus", { id: REED_INPUT_ID }, function (result) {
// Prüfen, ob der Reedkontakt geschlossen ist (result.state === true)
if (result && result.state === true) {
// 1. Magnetventil am Shelly Plus 2PM (Output 0) einschalten
Shelly.call("Switch.Set", { id: 0, on: true });
// 2. Impuls an den Shelly 1PM (Generator) senden (1 Sekunde Timer)
let url_1pm = "http://" + IP_SHELLY_1PM + "/relay/0?turn=on&timer=1";
Shelly.call("HTTP.GET", { url: url_1pm });
print("Dampfbad-Start: Schalter EIN & Tür ZU. System aktiviert.");
} else {
// Falls die Tür offen ist, bleibt das Relais AUS
print("Sicherheits-Blockade: Tür ist OFFEN. Start abgebrochen.");
}
});
}
// LOGIK: WENN DER KIPPSCHALTER AUF "AUS" GESTELLT WIRD
// Beendet das Magnetventil manuell
if (event.component === "input:0" && event.info.state === false) {
Shelly.call("Switch.Set", { id: 0, on: false });
print("Dampfbad manuell über Kippschalter ausgeschaltet.");
}
});
Alles anzeigen
- Sicherheit beim Start: Das Magnetventil öffnet nur, wenn die Tür wirklich zu ist.
- Flexibilität im Betrieb: Einmal gestartet, bleibt das Ventil offen, auch wenn die Tür danach geöffnet wird (da das Skript nur auf das "Push"-Event reagiert).
- Ausschalt-Logik: es ist ein zweiter Block hinzugefügt, damit das Magnetventil auch wieder schließt, wenn der Kippschalter manuell auf "AUS" stellt (state === false). Ohne diesen Block würde das Ventil sonst dauerhaft anbleiben.
- IP-Adresse: im Skript die Zeile let IP_SHELLY_1PM = "192.168.XXX.XXX"; mit der echten IP des Shelly 1PM füllen.
- Input-Typ: In den Shelly-Einstellungen unter Input/Output -> Input 0 muss der "Input Type" zwingend auf "Switch" stehen (nicht Button/Taster).
- Detached Mode: Der Input 0 muss auf "Detached" gestellt sein, damit das Skript die Kontrolle übernimmt und der Schalter das Ventil nicht unkontrolliert schaltet.
- Add-on ID: Falls der Reedkontakt nicht reagiert, unter Settings -> Components prüfen, ob der Add-on-Eingang wirklich die ID 100 hat (manchmal auch 101, falls mehrere Komponenten am Add-on sind).
- Um den Status der Tür und das Skript live zu testen, kannst du die Log-Konsole im Shelly-Webinterface nutzen. Dort werden dann die print-Befehle angezeigt
Kannst ja mal eine Rückmeldung geben, ob das so alles zufriedenstellend funktioniert.
Disclaimer:
die Verwendung von Skripten erfolgt ausdrücklich auf eigene Gefahr. Keine Haftung für mögliche Schäden, Fehlfunktionen, Datenverluste oder anderweitige Beeinträchtigungen, die durch die Nutzung von Skripten entstehen könnten. Bitte stelle vor dem Einsatz sicher, dass der Quellcode verstanden wurde und man sich der möglichen Auswirkungen bewusst ist. Skript ohne Gewähr.