thgoebel
Ganz wie du willst. Trotzdem könntest du mal folgendes testen:
http://<ip-address>/rpc/Schedule.Create?timespec="0 * * * * *"&calls=[{"method":"Switch.Set", "params":{"id":0,"on":true,"toggle_after":10}}]
Dies erstellt auf deinem Shelly einen Schedule-Eintrag. Dieser Eintrag bewirkt zu jedem Sekundenstand von 0, also jede abgelaufene Minute, das Auslösen der Methode Switch.Set mit den angegebenen Parametern.
Der Default-Wert von enable ist true, könnte aber auch zwischen dem timespec- und dem calls-Teil eingefügt werden. Das ist eher interessant, wenn man testen will, ob Schedule.Create erfolgreich abgearbeitet wurde, ohne den Eintrag zu aktivieren.
http://<ip-address>/rpc/Schedule.Create?timespec="0 * * * * *"&enable="false"&calls=[{"method":"Switch.Set", "params":{"id":0,"on":true,"toggle_after":10}}]
Das zusätzlich Interessante daran ist, dass es verlässlich funktioniert und du kein Skript hierfür benötigst.
Die Einschaltdauer von 10s ist selbstverständlich für den Test gedacht. Hier wirst du für den Betrieb bspw. eher 1 einsetzen.
Willst du diese Dauer oder andere Dinge im selben Schedule-Eintrag ändern, brauchst du dessen id dazu. Diese erhältst du mit
http://<ip-address>/rpc/Schedule.List
Angenommen, diese id ist 1, dann änderst du obige Einschaltdauer auf 1s mit
http://<ip-address>/rpc/Schedule.Update?id=1×pec="0 * * * * *"&calls=[{"method":"Switch.Set",%20"params":{"id":0,"on":true,"toggle_after":1}}]
Die kürzere Variante lautet:
http://<ip-address>/rpc/Schedule.Update?id=1&calls=[{"method":"Switch.Set",%20"params":{"id":0,"on":true,"toggle_after":1}}]
Es muss nur das angegeben werden, was im Schedule-Eintrag zu ändern ist. In diesem Fall muss es der gesamte calls-Teil sein.
Das Ganze lässt sich auch per MQTT und RPC gestalten, ebenfalls ohne Skript.
Ich betone noch einmal, dass für diesen Zweck Timer.set suboptimal ist.
Hinweis: Der Scheduler ist Teil des Betriebssystems mongoose und entspricht dem von Unixen, also bspw, Linux.
Gruß aus Rheinland-Pfalz