Die Shelly Geräte unterschiedlicher Generationen beinhalten unterschiedliche Mikrocontroller von Espressif.
- In Geräten der ersten Generation arbeiten ESP8266.
- Geräte der zweiten Generation beinhalten ESP32, die deutlich leistungsfähiger sind als die älteren ESP8266.
Das Shelly Scripting steht erst in Shelly Geräten der zweiten Generation zur Verfügung. Diese beinhalten in den Gerätetypnamen das Wort "Plus". Dieses Scripting steht in den meisten Geräten der zweiten Generation zur Verfügung, aber nicht in allen.
Beispiel:
Ein "Shelly 1" gehört der ersten Generation an - kein Scripting möglich.
Ein "Shelly Plus 1" ist ein Gerät der zweiten Generation - hier ist die Nutzung von Skripten möglich.
Im folgenden werden sinnvollerweise ausschließlich Shelly Geräte zu Grunde gelegt, in welchen Scripting möglich ist. Die Verwendungsmöglichkeiten dieser Geräte ist auf der folgenden Dokumentations-Website recht ausführlich beschrieben: https://shelly-api-docs.shelly.cloud/gen2/ . Die Einarbeitung in diese Dokumentation ist als Neuling recht mühsam. Es braucht einige Übung und vermutlich Experimente, darin zielgerichtet navigieren zu können. Das liegt auch an den unterschiedlichen Schnittstellen (API = Application Programming Interface), welche die Firmware dankenswerterweise bereit hält und wodurch Skripte sehr flexibel gestaltet werden können.
Die Firmware solcher Shelly basiert auf einem relativ leistungsfähigen "Real Time Operating System", kurz RTOS. Zusätzlich ist ein JavaScript Interpreter enthalten, welcher dazu dient, aktivierte Skripte auszuführen. JavaScript ist eine relativ einfach gehaltene Programmiersprache, deren Syntax sich an die alte und sehr bewährte Programmiersprache C anlehnt.
Der JavaScript Interpreter zum Shelly Scripting beinhaltet nur eine Untermenge (subset) von JavaScript, ergänzt durch Shelly spezifische Objekte und Methoden (=Objektfunktionen). Diese wird in der o.a. Dokumentation unter "Scripts" beschrieben. Um selbst solche Skripte erstellen oder zumindest analysieren zu können, sind wenigstens Grundlagenkenntnisse in JavaScript erforderlich.
Eine gut zusammengestellte Website zu Programmiersprachen, u.a. auch JavaScript, ist https://www.w3schools.com/ . Hier kann man u.a. zielführend nachschlagen, um die Syntax zu einzelnen Funktionen (Unterprogramme) zu recherchieren.
Besonders erwähnenswert ist ein im RTOS enthaltener Scheduler, der es gestattet, sehr flexibel zeitgesteuerte Aktionen auszulösen. Dies wird bspw. in Wochenplänen genutzt, die auf der Website des Shelly eingerichtet werden können. Die zugrunde liegenden Schedule Jobs sind aber sehr viel vielseitiger als nur in solchen Wochenplänen nutzbar. Die Syntax der Schedule Einträge folgt im wesentlichen derjenigen von Linux Betriebssystemen, dort als Cron Jobs bekannt, die in einer Cron Tabelle eingetragen werden.
Die Shelly interne Uhr läuft ausschließlich, wenn das Gerät mit Strom versorgt wird. Es gibt keine Batterie- bzw. Akkumulator-gepufferte Uhr, die bei Stromausfall weiterläuft. Wenn das Gerät für eine Anwendung die aktuelle Uhrzeit braucht, muss es nach einem Stromausfall wenigstens kurzzeitig die Uhrzeit von einem Zeitserver erhalten, also online sein. Hierfür genügt eine halbe Minute. Danach "tickt" die Shelly interne Uhr mit der richtigen Uhrzeit und Datum weiter. Ein Shelly kann ja die Stromausfalldauer nicht autark ermitteln und somit seine interne Uhrzeit nicht eigenständig korrigieren. Wenn das Gerät über die Uhrzeit und Datum verfügt, dann kann der Scheduler Uhrzeit gesteuert arbeiten. Andernfalls sind ausschließlich zeitliche Abstände in Stunden, Minuten und Sekunden nach einem reboot nutzbar. Ohne aktuelle Uhrzeit und Datum können Aktionen per Scheduler ausschließlich in Zeitabständen nach einem Reboot ausgelöst werden, also bspw. alle 10 Minuten.
Solche Schedule Jobs können sehr gut für Anwendungen eingesetzt werden, die zu bestimmten, sekundengenauen Zeitpunkten etwas tun sollen, wie bspw.
- einen Messwert speichern oder senden,
- den aktuellen Zustand desselben oder eines anderen Gerätes erfassen - und ggf. zustandsgesteuerte Aktionen ausführen,
- mehrere über einen Tag erfasste/gespeicherte Messwerte in einer Nachricht senden,
- eine Nebenuhr, die ansonsten von Hauptuhren gesteuert werden, per Shelly betreiben,
- eine Tür entriegeln bzw. verriegeln,
- eine spezifische Anwendung, bspw. per Skript implementiert, starten oder beenden,
- eine Zustandsvariable innerhalb eines Skript manipulieren.
Zu 2. ist erwähnenswert, dass ein Shelly der zweiten Generation auch ein eigenes WLAN aufspannen kann, also einen eigenen Access Point (AP) zur Verfügung stellen kann. Dies gelingt auch parallel zur Einbindung in ein anderes Netzwerk. Somit kann bei Bedarf ein Shelly als Bridge fungieren, indem es einerseits mit Geräten in seinem AP-WLAN und andererseits mit dem Netzwerk kommuniziert, in welches diese Bridge eingebunden ist.