Beiträge von evgen.m76
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.
-
-
hier ist jezt entgültige schaltung und skript.
leider abschaltung in App Relais steuerung funktionirte nicht.
(
App-/Web-Steuerung deaktivieren
======================================================
Shelly.addEventHandler(function (event) {
// Wenn jemand über App oder Web ein Relais manuell ändert:
if (event.component === "switch:" + RELAY1
event.component === "switch:" + RELAY2) {let relayId = parseInt(event.component.split(":")[1]);
let requested = event.info.output;
// App-Steuerung sperren
print("⚠️ Manuelle Schaltung erkannt (Relais " + relayId + ") → zurückgesetzt");
// Relais wieder auf vom Skript verwalteten Zustand setzen
Shelly.call("Switch.GetStatus", { id: relayId }, function (status) {
// Sofort zurücksetzen
Shelly.call("Switch.Set", { id: relayId, on: !requested });
});
enforceRelayLock();
}
});
)
Logik:
1. Beim Start:
- Beide Relais aus
- Wenn Uhrzeit zwischen 06:00–24:00 → nach 5s Relais 1 ein
- Sonst: beide Relais aus
2. Wenn Eingang 1 < 60s EIN → Relais 1 bleibt an
3. Wenn Eingang 1 > 60s EIN → Relais 1 sofort aus, nach 5s Relais 2 ein
4. Wenn Eingang 1 AUS:
- Nach 4min Relais 2 aus
- Wenn Eingang 1 in diesen 4min wieder EIN → Timer stoppt, Relais 2 bleibt an
- Wenn Eingang 1 dann erneut AUS → Zyklus neu: Relais 2 aus, beide Relais aus,
nach 5s Relais 1 ein
Skript:
let RELAY1 = 0;
let RELAY2 = 1;
let INPUT1 = 0;
// Timer-Handles
let longPressTimer = null;
let offDelayTimer = null;
// Hilfsfunktion: aktuelle Zeit in Minuten (0–1439)
function getMinutes() {
let now = new Date();
return now.getHours() * 60 + now.getMinutes();
}
// ========================================================
// 1. Startverhalten
// ========================================================
function init() {
print("=== Shelly Automationsskript startet ===");
Shelly.call("Switch.Set", { id: RELAY1, on: false });
Shelly.call("Switch.Set", { id: RELAY2, on: false });
let minutes = getMinutes();
if (minutes >= 360 && minutes < 1440) {
print("Zwischen 06:00 und 24:00 → nach 5s Relais 1 EIN");
Timer.set(5000, false, function () {
Shelly.call("Switch.Set", { id: RELAY1, on: true });
print("Relay 1 eingeschaltet (Startup)");
});
} else {
print("Außerhalb 06:00–24:00 → beide Relais bleiben aus");
}
}
init();
// ========================================================
// 2. Ereignisseingang beobachten
// ========================================================
let inputStartTime = 0;
Shelly.addEventHandler(function (event) {
if (event.component === "input:" + INPUT1) {
let state = event.info.state;
// Eingang EIN
if (state === true) {
print("Eingang 1 → EIN erkannt");
inputStartTime = Date.now();
// Falls ein 4-Minuten-Timer läuft → stoppen
if (offDelayTimer) {
Timer.clear(offDelayTimer);
offDelayTimer = null;
print("4-Minuten-Timer gestoppt (Eingang wieder EIN)");
}
// Starte 60s-Timer für "langes Signal"
if (longPressTimer) Timer.clear(longPressTimer);
longPressTimer = Timer.set(60000, false, function () {
print("Eingang > 60s EIN → Relais 1 AUS, nach 5s Relais 2 EIN");
Shelly.call("Switch.Set", { id: RELAY1, on: false });
Timer.set(5000, false, function () {
Shelly.call("Switch.Set", { id: RELAY2, on: true });
print("Relay 2 eingeschaltet (nach langem Signal)");
});
});
}
// Eingang AUS
else {
print("Eingang 1 → AUS erkannt");
// Dauer berechnen
let duration = Date.now() - inputStartTime;
// 60s-Timer stoppen (falls aktiv)
if (longPressTimer) {
Timer.clear(longPressTimer);
longPressTimer = null;
}
if (duration < 60000) {
print("Eingang < 60s EIN → Relay 1 bleibt an");
}
// Starte 4-Minuten-Timer für Relay 2 AUS
offDelayTimer = Timer.set(4 * 60 * 1000, false, function () {
print("Eingang AUS > 4min → Relay 2 AUS, Zyklus neu");
Shelly.call("Switch.Set", { id: RELAY2, on: false });
Shelly.call("Switch.Set", { id: RELAY1, on: false });
// Nach 5s Relay 1 wieder an (neuer Zyklus)
Timer.set(5000, false, function () {
Shelly.call("Switch.Set", { id: RELAY1, on: true });
print("Neuer Zyklus gestartet: Relay 1 EIN");
});
});
}
}
});
Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen. so wie thgoebel geschrieben hat:
``Weil bei gleichzeitiger Einschaltung von O1 und O2 der Lüftermotor (genauer gesagt der Kondensator) zerstört wird, muß ein Script zur gegenseitigen Verriegelung der beiden Ausgänge verwendet werden. Nutzer „Ostfriese“ hat ein solches hier im Forum veröffentlicht.``hab leider nichts gefunden.
werde ich weiter suchen.
Danke an Allen
bis nächstes Mal.
-
original ist siemens verbaut
Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen. nun ist nach 12 Jahren kaput gegangen.
hab frühe mit schelly an und aus geschaltet. L unterbrochen bei Q1
hab probiert mit diese schaltung ersetzen.

nun das eingänge von Shelly pro3 kriege ich nicht so programmieren, damit die relais richtig schalten.
die starten die szenen nicht .
shalter am S1 (WC Licht) angeschlossen.
macht auch keine unterschied welche eingang ich nutze.
-
so kann man auch zeitgesteuert machen.
Das Eingänge S1 S2 Shelly kann man als auslöser programmieren?
oder Laufen die mit relais paralell?
S1 mit Zeitsteuerung.
S2 als stufenschaltung.
Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen. -
Danke, hat mir sehr geholfen.
-
Guten Tag zusammen,
ich habe folgende Aufgabe:
Ein zweistufiger Ventilator soll im Normalbetrieb rund um die Uhr (24/7) auf Stufe 1 laufen.
Sobald vom WC-Lichtschalter das Signal „Licht an“ kommt, soll automatisch auf Stufe 2 umgeschaltet werden.Sobald das Signal vom WC-Schalter wieder weg ist (also das Licht ausgeschaltet wird), soll der Ventilator wieder zurück auf Stufe 1 schalten.
Wie lässt sich das am besten umsetzen?
Vielen Dank im Voraus!