Shelly Zeitversetzt abschalten wenn ein Signal am Schalter Eingang kommt

  • Hallo ich bräuchte mal Hilfe,

    alle meine versuche ein Skript zu diesen Thema zu schreiben waren falsch oder haben lustige Effekte erzeugt.

    Hier meine Anforderung an meinen Shelly Plus 2PM

    Shelly Schaltausgang 1 wird per Astrozeit bei Sonnenaufgang eingeschalten bleibt an bis Shelly Schaltausgang 2 bei Sonnenuntergang einschaltet und 2 Sek verstrichen sind (Erkennung ob Shelly Schaltausgang 2 angezogen hat über Schalter Eingang). In der Früh schaltet dann wieder Shelly Schaltausgang 1 ein und schaltet 2 sec verzögert den Shelly Schaltausgang 2 aus.

    Wichtig ist das die Shelly Schalltausgänge beim Wechsel 2 Sek gleichzeitig an sind (sich überschneiden).

    Cool wäre wenn man das auch noch per Meldung überwachen könnte Beispiel beide Shellys aus oder beide gleichzeitig länger 5 Sek. an.

    Hoffe mir kann jemand helfen ich finde einfach keine Lösung und tue mir auch sehr schwer beim Schreiben vom Skript

    Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen.
  • Es gibt dafür verschiedene Implementationsmöglichkeiten. Am flexibelsten ist hier immer, auch ein Skript zu verwenden.

    Ich skizziere mal zwei Varianten, die jeweils ein geeignetes Skript im zusammenwirken mit zwei Schedule Jobs nutzen.

    Vatriante 1

    Das Skript stellt zwei Funktionen zur Verfügung, ich nenne sie sunset() und sunrise().

    Diese werden per zweier Schedule Jobs mit der Methode Script.Eval aufgerufen, der eine Job ruft sunset() auf, der andere sunrise().

    Einen EventHandler brauchst du zunächst nicht dazu.

    sunset() und sunrise() schalten jeweils "ihre primären" Ausgänge, starten jeweils einen Timer, welcher nach 2000ms eine Funktion abarbeitet, die den anderen Ausgang passend schaltet.

    Mit dieser Implementation brauchst du die von dir verdrahtete Rückkopplungen nicht.

    Ein geeigneter Schedule Job kann wie folgt angelegt werden:

    http://<IP Adresse Shelly>/rpc/schedule.create?timespec="@sunset * * *"&calls=[{"method":"script.eval","params":{"id":<Script Id>,"code":"sunset()"}}]

    Variante 2

    Du kannst selbstverständlich auch die Rückkopplungen zusammen mit einem EventHandler einsetzen.

    Der EventHandler reagiert selektiv auf die Änderungen an den Eingängen wie folgt.

    Er startet einen Timer, der nach 2000ms den gewünschten Ausgang ausschaltet. Die Wartezeit ist aber nur erforderlich, wenn nicht sofort nach eintreffen des Eingangsänderungs-Ereignisses geschaltet werden soll.

    Die beiden Schedule Jobs brauchen dann nicht wie in Variante 1 die Methode Script.Eval sondern die Methode Switch.Set mit der Ausgangs ID und on=true.
    Ein solcher Schedule Job kann wie folgt angelegt werden:

    http://<IP Adresse Shelly>/rpc/schedule.create?timespec="@sunset * * *"&calls=[{"method":"switch.set","params":{"id":<Ausgangs Id>,"on":true}}]

    Das Senden

    Bei Variante 1 kannst du per RPC Methode die Daten anfordern und in der callback Funktion senden lassen.

    Bei Variante 2 kann der EventHandler die eintreffenden Informationen senden.

    In beiden Fällen sollten die Daten mit JSON.stringify(Daten) vorher in einen String umgewandelt werden.

    Oder ähnlich, falls dies nicht ganz zu deinem Anliegen passen sollte.

    Auch kannst du Daten regelmäßig senden lassen, wozu ein weiterer Schedule Job empfehlenswert ist ,,,

    Falls du konkreteres wünschst, empfehle ich zunächst meine Skripteinführung.

    Es sollte zumindest deutlich geworden sein, dass dein Anliegen implementierbar ist.

    Edit:

    Notfalls gelingt dein Vorhaben vermutlich auch ohne Skript und ausschließlich mit vier Schedule Jobs - zwei zum sunrise und zwei zum sunset.

    zum sunrise:

    Ein Job lässt bei @sunrise Ausgang 0, der andere Job (versuchsweise) bei @sunrise+2s Ausgang 1 schalten.

    Damit ist aber noch kein senden von Daten verbunden. Ob dies ohne Skript brauchbar gelingen kann, vermute ich, weiß ich aber derzeit nicht.

    Für die beiden @sunset(+2s) Jobs gilt entsprechendes.

    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.

    3 Mal editiert, zuletzt von eiche (7. März 2024 um 17:29)