2026-07-27
Hier stelle ich alle zum Projekt gehörenden Skripte zum herunterladen bereit. Die Dateinamen beinhalten auch eine Versionskennzeichnung, die sich aus dem Datum ergibt, gefolgt von einer laufenden Nummer, bspw. Bewaesserung_2026-07-26_01. Wenn ich eine neuere Version bereitstelle, dann werden die neueren Dateien eine neuere Versionskennzeichnung im Namen enthalten.
Das ZIP-Archiv beinhaltet die folgenden Dateien.
- "Bewaesserung_..." ist das Master Skript und immer erforderlich.
- "Wasserzaehler_..." ist das Assistent Skript und nur bei Nutzung der Volumenmessung via Shelly Plus UNI auf diesem zu installieren.
- "scriptcheck-anonym_..." ist das Observer Skript mit anonymisierten Keys, die der Anwender ersetzen muss, wenn er callmebot.com nutzen will. Es ist auf jedem skriptfähigen Shelly nutzbar, hier insbesondere auf dem Master und auf Assistenten. Zusätzlich ist auf jedem dieser Geräte ein Zeitplan anzulegen, der die Überwachungen periodisch auslöst.
Das Archiv Bewaesserung.zip zum herunterladen
Installation
Die zu nutzenden Dateien sind via Copy & Paste auf die Shelly Geräte zu übertragen, unter einem gewünschten Namen zu speichern und passend zu konfigurieren. Die Konfigurationen sind in den Skriptbeschreibungen Teil 1 und 3 erklärt, jeweils unter einer Überschrift, welche das Wort Konfiguration enthält.
Nur wenige Konfigurationsänderungen sind notwendig, die restlichen können nach Bedarf und später erfolgen.
Das Observer-Skript ist nicht zwingend erforderlich und kann (zunächst) weggelassen werden, um den Einstieg weniger komplex zu erleben. Der Observer unterstützt nur die Zuverlässigkeit der Anlage und das Erkennen von ggf. auftretenden Skriptproblemen. In der letzten Version traten bisher keine Skriptprobleme auf.
Zeitpläne (Schedule jobs)
Ich empfehle vor dem unten folgenden Anlegen eines Observer Zeitplans, solche Zeitpläne für Bewässerungen via Web UI oder App anzulegen, damit diese vor dem Observer Zeitplan erscheinen. Die Zeitpläne zum einschalten von Bewässerungen sind leicht editierbar und vor allem deaktivierbar, wenn sie nicht gebraucht werden. Ausgeschaltet wird via Skripte respektive Firmware ohne Zeitplan.
Anlegen eines geeigneten Zeitplans für den Observer
Ohne Zeitplan arbeitet der Observer nicht. Wird die Überwachung des für die Bewässerung erforderlichen Skripts weggelassen, entfällt auch das Anlegen dieses Zeitplans.
Weil weder Web UI noch die Shelly Smart Control App in den Zeitplankonfigurationen die Flexibilität bieten, die für den Observer-Zeitplan erforderlich ist, muss ein anderer Weg beschritten werden. Diese Konfiguration des Zeitplans muss je Observer nur einmal geschehen, weshalb ich dafür keinen Skriptweg implementiere. Stattdessen biete ich u.a. folgende Webseiten dafür an, die auch heruntergeladen und lokal genutzt werden können.
- https://tools.eichelsdoerfer.net/schedjob.html für Aufrufe einzelner Skriptfunktionen, hier hinreichend
- https://tools.eichelsdoerfer.net/schedjob_methods.html für bis zu vier zugleich nutzbarer Methoden (flexibelste Nutzung)
Über den ersten Link gelangt man zum Anlegen eines Zeitplans, in welchem zuerst die IP Adresse des Shelly einzutragen ist. Dann unter 6. den timespec eintragen, bspw. "5 */30 * * * *" (ohne Anführungszeichen) für alle 30 Minuten +5s. Unter Skript Id die Id Nummer des Observer-Skripts und unter Funktionsaufruf folgenden Code eintragen.
checkScripts('local',<Id des zu observierenden Skripts>,0,true)
checkSkripts ist der Name der aufzurufenden Skriptfunktion. Die Id-Nummer des Anwendungsskripts ist der Skriptübersicht auf dem Shelly zu entnehmen. Der letzte Parameter "true" sorgt dafür, dass das Skript gestartet wird, falls es inaktiv vorgefunden wird. Fehlt dieser Parameter oder ist er "false", wird das ggf. inaktive Skript nicht gestartet.
Den Haken unter "aktiv" setzen und mit Klick auf den gelben Link die HTTP Request abschicken. Der Link wird syntaxgerecht so dargestellt, wie er als URL in der Browser-Adresszeile zu nutzen wäre.
Zur Kontrolle kann hinter Punkt 2 der Link angeklickt werden, um sich alle Schedule Job Einträge des Shelly anzeigen zu lassen. Die HTTP Antwort muss strukturell folgendes enthalten.
{
"id": 3,
"enable": true,
"timespec": "5 */30 * * * *",
"calls": [
{
"method": "script.eval",
"params": {
"id": 3,
"code": "checkScripts('local',2,0,true)"
}
}
]
}
Der timespec Wert ergibt sich aus den Wünschen des Anwenders. Mit dem obigen timespec wird als Zeitpunkt jede halbe Stunde + 5s festgelegt. Hiermit wird alle 30 Minuten geprüft, ob das funktionsichtige Skript läuft. Der Versatz von 5s dient profilaktisch dazu, weniger leicht mit anderen Zeitplänen zu kollidieren, die bei 0s starten.
Die Id Werte und der zweite Aufrufparameter von checkScripts (hier 2) variiert je nach eigener Zusammenstellung auf dem Shelly. Die Zeiten, zu welchen die Funktion checkScripts() aufgerufen wird, können später auch via Web UI oder App geändert werden, ohne darin den "calls" Eintrag zu ändern. Der Warnhinweis "Call may not work as expected" ist dabei zu ignorieren.
Nachwort
Nachdem alle Konfigurationen (und ggf. Zeitpläne) eingerichtet/angepasst wurden, kann die Anlage genutzt werden.
...
Weitere Hinweise können folgen.