Meiner Meinung nach füllen die Geräte des Bulgarischen Herstellers Allterco Robotics eine Lücke, die ich gerne nutze.

Allterco Robotics legt weitgehend die Möglichkeiten der Firmware offen und sieht sogar vor, dass ein Anwender oder ein Installateur andere Firmware aufspielt (flashen). Die Dokumentation zeigt u.a. die Verwendbarkeit von MQTT, was ein Standard in der IoT (Internet of Things) Kommunikation ist. Man braucht keine Bridges, Gateways oder sonstige Konverter für die Nutzung der Shelly Geräte. Alleine die MQTT Nutzung bietet ein weites Feld von Anwendung bezogenen Erweiterungen, ohne hierfür auf proprietäre Protokolle angewiesen zu sein.

Insbesondere die Geräte der zweiten Generation auf Basis des Mikrocontrollers ESP32 mit dem Namensteil "Plus" können per Scripts die Firmware durch spezifische Funktionalitäten erweitert werden. Etwas ähnliches bietet Tasmota32 für ESP32 Mikrocontroller Boards mit der Implementation eines Compilers und Interpreters der Sprache Berry an. Das Tasmota Konzept gefällt mir derzeit noch besser als die Möglichkeiten der Shelly Scripts. Allerdings sind die Shelly Scripts durchaus interessant und für spezifische Erweiterungen der Firmware geeignet. Ich habe mich etwas ausgiebiger mit den verfügbaren Sprach-Elementen von Shelly Script beschäftigt.

Die Nutzbarkeit

Die Geräte der zweiten Generation bieten erheblich mehr Anwendungspotential als die der ersten Generation. Es ist bspw. möglich, parallel die Cloud und die MQTT Kommunikation zu nutzen. So ist es auf einfache Weise möglich, die inzwischen deutlich verbesserte Cloud App sowie die Sprachsteuerung per Amazon Echo Geräten und zugleich die vielfältigen Möglichkeiten von MQTT Anwendungen zu nutzen. Bei Bedarf kann ein Anwender leicht und schnell die Cloud Integration oder die MQTT Kommunikation deaktivieren.

Ich implementiere verschiedene Funktionalitäten per Scripts auf Basis von MQTT. Diese gestatten bspw. das Einstellen verschiedener Applikation Parameter, was derzeit nicht per Sprachsteuerung unterstützt wird. Zugleich schätze ich auch die Möglichkeit, ein Gerät per Shelly Plus und Sprachsteuerung ein- bzw. auszuschalten. Im Beitrag "Generation 2 - Gartenbewässerung und mehr" habe ich die Implementation von drei virtuellen Geräten per Scripts dargelegt, die per MQTT kommunizieren.

Die Scriptsprache

Für die Shelly Scripts steht die Interpretersprache mJS zur Verfügung. Diese Sprache beinhaltet eine Untermenge von JavaScript. Für Shelly Plus ist sie ergänzt durch spezielle Funktionen

  • zur Steuerung des Gerätes, insbesondere schalten
  • zur Abfrage des aktuellen Status, die Zeitinformationen sind mir dabei wichtig
  • zur Ereignisbehandlung (event handler)
  • zur MQTT Kommunikation (subscribe, publish)
  • für Zeitsteuerungen (Timer)

Die verfügbaren Sprachelemente, ergänzt durch oben angedeutete Funktionen, bieten vielfältige Möglichkeiten der Implementation gewünschter Verhaltensweisen eines Shelly Plus Gerätes. Allerdings fehlen (noch) hilfreiche Bestandteile der Sprache.

  • Es gibt keine Include Funktionalität. Es ist also nicht möglich, eine Script Datei zu erstellen, die in anderen Scripts nutzbar ist. Dies erschwert das Coden und Pflegen von Projekten erheblich.
  • Es gibt keine Funktion, die eine Zeichenkette (String) in eine Zahl konvertiert und dazu die Information liefert, ob die Konvertierung gelungen ist. Ein Workaround per JSON.parse() ist zwar einsetzbar, liefert aber keine nutzbare Information über das Gelingen der Konvertierung.
  • Die MQTTT Ereignisse disconnected und connected sind per selbst erstellter Handler behandelbar. Tritt connected ein, kann aber nicht unmittelbar eine MQTT Nachricht erfolgreich gesendet werden. Hierzu muss leider eine Verzögerung per Timer implementiert werden.

Fazit

Insgesamt finde ich die bisherige Firmware in der Version 0.10.1 weitgehend überzeugend, allerdings erschweren die oben angeführten Mängel das Coden von Scripts und die Pflege von Shelly Projekten. Ich hoffe auf geeignete Erweiterungen/Verbesserungen der Firmware.

2022-04-13