Mit Shelly Plus 1 Treppenhausautomation umsetzen

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 habe mit dem Shelly Plus 1 bereits eine Treppenhausautomation zur Ansteuerung eines Treppenlichts wie folgt umgesetzt:

    Shelly wird mittels Taster angesteuert und schaltet Licht für eine bestimmte Zeit (aktuell 10 Minuten), bevor es wieder ausgeht.

    Ebenso wird bei erneutem Tastendruck während dieser Zeitspanne der Timer wieder von neuem gestartet, also eine "Standard"-Treppenhausautomation.


    Nun zu meiner Frage:

    Ich würde gerne im letzten Bereich der Zeitspanne (also z.B. in den letzten 10 Sekunden des 10 minütigen Timers) das Licht blinken lassen (z.B. 1 Sekunde aus, 1 Sekunde ein etc.), um zu signalisieren, dass das Treppenlicht bald komplett ausgehen wird und man so die Chane hat den Taster nochmals zu drücken, um den 10-minutigen Timer für das Licht erneut zu starten.

    Seht ihr hier eine Möglichkeit dies umzusetzen und wenn ja wie?


    Vielen Dank schonmal für eure Hilfe.


    Gruß,

    Christian

  • Solches gelingt, vermutlich ausschließlich, per Skript. Wenn du dich darauf einlassen willst, können wir darüber reden.

    Eine Lösung mit Aktionen und zwei Schedule Jobs (Zeitpläne) könnte möglich sein, ist aber eher ein Krampf.

    Dir sollte klar sein, dass mit diesem Blinken die Leuchtmittel schneller altern.

    An Cloud-/Szenen-Benutzer (insbesondere für Regelungen): Was erwartest du, wenn Internet oder Cloud sabotiert werden? Nicht nur dafür meine kleine Skripteinführung  8)

    Die einzig existierende Konstante ist der Wandel. Oft liegt die größte Schwierigkeit darin, das Anliegen des Klienten zu verstehen.

  • Hallo eiche,

    danke für deine Antwort.

    Gerne kannst du mir die Umsetzung per Skript näher bringen.

    Ich hatte zwar bisher noch keinen direkten Kontakt mit dem Skript bei Shelly, allerdings habe ich Grundkenntnisse in C/C++, die mir hier hoffentlich weiterhelfen können.


    Gruß,

    Einmal editiert, zuletzt von christian24395 (3. August 2025 um 20:19)

  • Eine Lösung mit Aktionen und zwei Schedule Jobs (Zeitpläne) könnte möglich sein, ist aber eher ein Krampf.

    Nur der Vollständigkeit halber, hier die Beschreibung dazu:

    thgoebel
    20. April 2025 um 17:57

    Überwiegend PRO 3EM im Einsatz zur Haus und PV Überwachung

  • christian24395

    Es gibt eine recht gute API Dokumentation zu den Shelly.

    Shelly Skripte werden ereignisgesteuert abgearbeitet. Hierfür sind am besten sog. EventHandler geeignet - s.a. den Link zur Skripteinführung in meiner Signatur. Ein solcher EventHandler muss dem Betriebssystem mitgeteilt werden, damit dieser in die Ereignismitteilung einbezogen wird. Ein solcher EventHandler ist eine Funktion in einem Skript.

    Für dein Anliegen will ich zunächst die Lösungsidee umreißen. Es gibt verschiedene alternative Wege der Implementation deines Wunsches. Ich erläutere hier zunächst nur die (fast) reine Skriptlösung, weil sie letztlich am einfachsten ist, wenn das Skript irgendwann vorliegt.

    1. Der im System registrierte EventHandler empfängt vom System ein Objekt als Parameter, welches er selektiv verarbeitet. Das hier interessierende Ereignis ist das Ausschalten des Shelly Ausgang oder beide Ausgangs-Schaltvorgänge.
    2. Es können u.a. zwei alternative Wege zur Implementation genutzt werden.
      1. Mit konfiguriertem Einschalttimer, der automatisch nach einer eingestellten Dauer ausschaltet.
      2. Mit Einschaltdauer per Timer Objekt, wobei der skriptinterne Timer nach einer Dauer eine callback Funktion aufruft, die den Ausgang ausschaltet.
    3. Beide Wege sind gleichwertig, die beiden Skripte unterscheiden sich nur geringfügig. Ich setze zunächst Variante 1 voraus. Hier braucht der EventHandler ausschließlich das Ausschalten des Ausgangs zu verarbeiten.
    4. Das Skript beinhaltet im einfachsten Fall eine Konstante "Blinks", die die Blinkanzahl beinhaltet, bspw. 3, und eine Konstante "Period", welche die Periodendauer des Blinkens beinhaltet, bspw. 1000ms.
    5. Sobald das Licht ausgeschaltet wird, wird
      1. eine Variable "Count" mit 2 * Blinks, z.B. 6, initialisiert und
      2. ein skriptinterner periodisch arbeitender Timer gestartet, dessen callback Funktion den Ausgang umschaltet (toggle), welche ich entsprechend "toggle()" nenne. Der erste Parameter des gestarteten Timers ergibt sich aus Period / 2, z.B. 500ms.
    6. toggle() schaltet den Ausgang schlicht um und zählt Count herunter.
    7. Sobald Count den Wert 0 erreicht, wird der Timer gestoppt, was zur Beendigung des Blinkens führt. Der letzte Zustand ist "Aus".

    Das Blinken wird somit an das temporäre Einschalten des Lichts angehängt. Blinkfrequenz und -anzahl sind frei im Skript per Konstanten konfigurierbar.

    Diese Liste stellt die Planung des Skripts dar. Das Coden folgt später, derzeit bin ich wegen Krankenhausaufenthaltes etwas verhindert.

    Bei Fragen bitte den entsprechenden Punkt in obiger Liste aufführen!

    An Cloud-/Szenen-Benutzer (insbesondere für Regelungen): Was erwartest du, wenn Internet oder Cloud sabotiert werden? Nicht nur dafür meine kleine Skripteinführung  8)

    Die einzig existierende Konstante ist der Wandel. Oft liegt die größte Schwierigkeit darin, das Anliegen des Klienten zu verstehen.

    Einmal editiert, zuletzt von eiche (4. August 2025 um 11:08)

  • Dieses Thema enthält 2 weitere Beiträge, die nur für registrierte Benutzer sichtbar sind.