2025-04-25

Das Ziel lässt sich mit Hilfe von Schedule Jobs (Zeitpläne) erreichen, aber nicht ausschließlich über die Web UI eines Shelly oder per App/Cloud. Hierzu sind vertiefte Kenntnisse der Schedule Jobs notwendig. Ein Skript ist dafür nicht erforderlich.

Zu den Schedule Jobs:

Eine Beschreibung zur Vorgehensweise gibt es auch im Shelly Forum - Beitrag #33.

Erforderliche Schedule Jobs

Hierfür sind insgesamt fünf Schedule Jobs erforderlich. Die folgenden Listen-Nummern stehen auch für die id-Nummern dieser Jobs.

  1. Bei Sonnenaufgang: Job 4 freigeben, selbst immer freigegeben
  2. Bei Sonnenaufgang: Rollladen öffnen, abends gesperrt
  3. Um xx Uhr: Job 2 freigeben, selbst immer freigegeben
  4. Um xx Uhr: Rollladen öffnen, abends gesperrt
  5. Bei Sonnenuntergang: Rollladen schließen, Jobs 2 und 4 sperren, selbst immer freigegeben

Selbstverständlich kann statt Sonnenuntergang auch eine feste Zeit verwendet werden. Voraussetzung ist, dass xx Uhr vor Sonnenuntergang bzw. abendlicher Uhrzeit liegt.

Empfohlene Vorgehensweise

Lege mit dem Web UI, der App oder der Cloud die obigen fünf Zeitpläne im "Advanced Mode" an! Wähle bei allen Zeitplänen als Action "Open Cover"! Diese Action bleibt nur bei den Jobs 2 und 4 bestehen. In den anderen Jobs sind die Methoden anschließend zu ändern, was nicht per genannter Werkzeuge gelingt.

Nun sind die Jobs 1, 3 und 5 zu ändern, wobei die gewählten Zeiten erhalten bleiben. Geändert werden ausschließlich die eingetragenen Methoden. Diese stehen in den "calls" Einträgen der Schedule Jobs. "calls" beinhaltet eine Liste (hier: ein Datenfeld) von auszuführenden Methoden. Es sind also mehrere Methoden möglich.

Man kann die Methoden-Änderung per URL in der Browser Adresszeile erreichen, was erforderlich macht, die Zeile fehlerfrei zusammenzustellen. Es gelingt etwas leichter mit meiner dazu geeigneten Webseite. Diese stellt Eingabefelder und Links (URLs) zur Verfügung. Die Links werden auf Grund der Inhalte der Eingabefelder zusammengesetzt und anklickbar angezeigt. Wenn alle Einträge vorliegen, klickt man auf den gewünschten Link, wodurch die Aktion per RPC auf dem Shelly ausgeführt wird.

Dort ist unter 1. die IP-Adresse des betreffenden Shelly einzutragen. Bei Bedarf kann man sich die aktuell vorliegenden Schedule Jobs anzeigen lassen.

Unter 6. stehen in vier Zeilen bis zu vier Methoden- incl. Parametereintragsfelder zur Verfügung. Der folgende Screenshot zeigt die Einträge und den Link zur Änderung von Schedule Job 1.

Einträge und Link zu Schedule Job 1
Einträge und Link zu Schedule Job 1

Die Methode Schedule.Update ändert einen Job. Der Parameter {"id":4,"enable":true} gibt in sog. JSON (JavaScript Object Notation) an, dass im Job 4 enable auf true zu setzen ist, also Job 4 freigegeben wird. Der in gelb vollständige Link kann nun angeklickt werden, damit der Shelly die Änderung durchführt - einmal genügt 😇.

Wichtig zum Verständnis der Änderung!
Der Job 1 gibt zur zuvor per Web UI ... festgelegten Zeit den Job 4 frei, aktiviert ihn also. Mit dieser Änderung wird nicht etwa Job 4 freigegeben. Dies tut Job 1 zu seinem Zeitpunkt.

Entsprechend sind die Methoden in den Jobs 3 und 5 zu ändern. Dies zeigen die beiden folgenden Screenshots.

Einträge und Link zu Schedule Job 3
Einträge und Link zu Schedule Job 3
Einträge und Link zu Schedule Job 5
Einträge und Link zu Schedule Job 5

Zu Schedule Job 5 ist ausschließlich der dritte Link anzuklicken. Man kann zwar zuvor die Links darüber anklicken, diese Änderungen würden aber mit dem dritten Link überschrieben. So gäbe es mehr Änderungen (= schreiben in den nichtflüchtigen Speicher) als erforderlich.

Ab nun sind die fünf Schedule Jobs passend präpariert. Falls bei Fertigstellung der Rollladen bereits per Schedule Job 5 geschlossen wurde und schon am folgenden Tag der Rollladen zeitgerecht fahren soll, sind für den nächsten Tag die Jobs 2 und 4 zu sperren (disable bzw. enable=false). Andernfalls greift die Zusammenstellung der Zeitpläne vollständig erst am übernächsten Morgen.

Sollen die Zeiten geändert werden, kann dies leicht mit den Standardmitteln geschehen. Dabei dürfen die Methoden nicht geändert werden. Im Web UI steht an den Stellen solcher Methoden, die das UI nicht "kennt", der Text "Call may not work as expected". Sie funktionieren trotzdem. Das Web-UI, App und Cloud arbeiten aus verständlichen Gründen für Standardanwendungen mit eingeschränkten Möglichkeiten. Der Scheduler ist erheblich vielseitiger, weil er Teil des RPC Konzeptes ist.

Zusatzhinweis - zweiten Shelly per Zeitpläne steuern

Man kann bspw. in den Jobs 2 und 4 zusätzlich die Methode HTTP.GET mit einem URL als Parameter eintragen. Auf diese Weise lassen sich andere Shelly zusätzlich steuern. Wenn man zwei Rollläden zeitgleich steuern will, können auf einem Shelly diese Zeitpläne konfiguriert werden. Per Methode HTTP.GET können die Jobs 2 und 4 den anderen Shelly beauftragen, seinen Rollladen ebenfalls zu öffnen. Diese HTTP.GET Einträge sind zwar etwas aufwändig zusammenzustellen, dafür braucht man aber diese Zeitsteuerung nur auf einem dieser Shelly zu konfigurieren. Auch dies gelingt bspw. mit der o.a. Webseite und nicht mit den Standardmitteln.

Wie lang ein "calls"-Eintrag werden kann, ist mir allerdings nicht bekannt.

Vorteil: Will man die Zeiten ändern, braucht man dies mit den Standardmitteln nur auf dem einen Shelly zu tun.

Für die Jobs 2 und 4 lautet ein solcher calls-Eintrag (ungetestet)

  • Methode: HTTP.GET
  • Parameter: {"url":"http://<IP-Adresse das zweiten Shelly>/rpc/cover.open?id=0"}

Im Job 5 wäre hierfür ein vierter calls-Eintrag erforderlich, was meine Webseite inzwischen unterstützt.

Die Methodennamen sind übrigens case insensitiv, d.h. Groß- und Kleinschreibung spielt keine Rolle.