Shelly 2.5 auf Tasmota flashen

Bastelecke > Smarthome > Shelly 2.5 auf Tasmota flashen

Wer sich mit Smarthome beschäftigt, und seine Schalter automatisieren möchte, wird auf kurz oder lang auf die Shelly Aktoren von Allterco Robotics stoßen. Viele Elektriker schreien jetzt sicher auf, die Dinger sind von schlechter Qualität, unzuverlässig, nicht endkundenfreundlich... Und ja, ihr habt alle vollkommen Recht. Ich würde niemals auf die Idee kommen so ein Teil als professionelle Lösung zu verkaufen, alles zuvor gesagte stimmt. Aber sie sind auch noch etwas anderes, nämlich klein, unschlagbar günstig und in ihnen drinnen steckt ein ESP Microcontroller, was sie zu alternativer Firmware kompatibel macht.

Allerdings haben Shelly Produkte mit massiven Qualitätsproblemen zu kämpfen. Lese hierzu hier mehr:

 

OTA Update

Beim Over The Air Update geht es darum dem Shelly mithilfe der eigenen Updatefunktion die Tasmota Software zu verpassen. Man "mogelt" ihm quasi die Tasmota Firmware als Shelly Firmware unter. Die Shelly Firmware stellt hierfür sogar ein eigenes Web-Interface zur Verfügung. Ruft man im Browser die Shelly Adresse auf, und übermittelt ihm die Webadresse der zu flashenden Tasmota Version, dann spielt er diese einfach blind drauf, ohne sie zu prüfen. ... Zumindest theoretisch. Praktisch hat das bei mir jedoch nur dazu geführt daß der Shelly komplett tot war. Führte also doch kein Weg am Flashen mit Adapter und Kabel, zum wiederbeleben, dran vorbei.

 

UART zu USB

Wer schonmal mit einem ESP Controller experimentiert hat, kennt das Prozedere: USB Kabel anschließen, Programmcode drauf laden, Spaß haben. ;)

...beim Shelly: Fehlanzeige! Während beispielsweise beim Wemos D1 Mini der UART zu USB Chip direkt mit verlötet ist, hat man beim Shelly darauf verzichtet. Immerhin sind die Dinger ja primär nicht hierfür gebaut. Zumindest wurden aber die nötigen Pins auf einer 6-poligen Stiftsockelleiste hinaus gelegt. Leider jedoch im 1,27mm Raster Format. Aber mit ein klein wenig Bastelgeschick lässt sich hier dennoch spielend einfach ein handelsüblicher USB zu UART Adapter verbinden. Diesen gibt es schon für paar wenig Euro z. B. auf Amazon.

UART-TTL USB Adapter mit CH340G Konverter für 3.3V und 5V mit Jumperkabel kompatibel mit Arduino: Amazon.de: Elektronik & Foto

Kann auch ein anderer sein. Hauptsache ist das er 3,3 Volt unterstützt, mit 5 Volt grillt ihr den Shelly.

Zwar schreibt der Händler auf Amazon dass das Teil voll Plug-and-Play ist und kein Treiber benötigt wird, bei mir war das jedoch nicht so. Einen passenden Treiber, vorausgesetzt ihr habt euch den gleichen Adapter geholt wie ich, bekommt ihr hier:

https://www.mykaefer.net/data/uploads/downloads/ch341ser.zip

Kommen wir nun zum Shelly.

ACHTUNG: Der Shelly darf hierbei auf keinen Fall an 230 Volt hängen!!! Abgesehen von der großen Gefahr eines elektrischen Schlags, liegt auch an den Pins 230 Volt an. Sollte man nicht schon vorher eine gewischt bekommen, würde man spätestens beim Anschluss an den PC das Mainboard grillen! Beim Programmieren, sowie auch später bei der Konfiguration, bezieht der Shelly seine Energie über die GND und 3,3V Pins des Adapters vom PC.

Die Pins am Stecker sind wie folgt belegt:

Von den 6 Pins benötigt man 5, RST bleibt unbelegt. Leider ist der Stecker im kleinen 1,27mm Raster, so dass man die Dupont Stecker vom Adapter nicht direkt verbinden kann. Wer jetzt viele Shellys umprogrammieren will, kann sich auch eine entsprechende Adapterplatine mit Pfostenstecker-Leiste kaufen. Diese kosten als Lötbausatz jedoch um die 15 Euro, und das war es mir nicht wert. Ich habe als Adapter einfach einen alten Widerstand aus der Bastelschublade geopfert. Aus den Beinen dessen kurzerhand 5 kurze Drahtstücke geschnitten, passen diese stramm in die Löcher der Steckerleiste am Shelly und man kann die Dupont Stecker vom Adapter nach folgendem Schema aufstecken:

GND - GND

3,3V - 3,3V

RX - TX

TX - RX

Auch auf den GPIO0 Pin kommt ein Kabel, dieses lässt man jedoch zunächst lose hängen. Es wird benötigt um den Shelly in den Programmiermodus zu versetzen. Hierfür hält man es an GND, während man den Adapter in den USB-Anschluss steckt anschließend kann es wieder lose runter hängen, der Shelly wartet dann brav auf seinen neuen Programmcode.

Es gibt gefühlt tausend Wege um Tasmota zu flashen. Der einfachste führt direkt über den Web-Installer auf der Github-Seite von Tasmota:

Getting Started - Tasmota

Einfach gewünschte Sprachversion auswählen und auf Connect drücken. Vorausgesetzt der Shelly ist im Programmiermodus und der Adapter richtig verbunden, verbindet sich der Webinstaller nun direkt über den COM-Port des Adapters auf den Shelly und spielt Tasmota auf. Anschließend startet man den Shelly neu indem man den UART-Adapter kurz abzieht und neu einsteckt, jetzt jedoch ohne GPIO0 auf GND zu halten, damit der Shelly im normalen Betriebsmodus startet.

 

Im W-LAN anmelden

Solange der Shelly noch nicht weiß welches W-LAN er nutzen soll, macht Tasmota ein eigenes offenes zur Konfiguration auf. Dieses nennt sich "tasmota-*irgendwas*". Meiner Erfahrung nach kann man sich am besten mit dem Smartphone verbinden, da dieses einen, nach dem Verbinden, direkt auf die Seite des Shellys weiterleitet. Macht man das vom PC aus, kann es sein das man manuell die Seite aufrufen muss. Diese erreicht man unter:

http://192.168.4.1/

Hier wählt man nun sein eigenes W-LAN aus, gibt die Zugangsdaten ein und speichert. Der Shelly sollte jetzt neu starten und sich mit dem W-LAN verbinden. Schlägt die Verbindung fehl, weil man vielleicht das Passwort falsch eingegeben hat, muss der Shelly erneut neu gestartet werden und das "tasmota-*irgendwas*" W-LAN erscheint wieder. Hat alles geklappt, taucht der Shelly nun im eigenen W-LAN auf und ist über eine zugewiesene IP-Adresse erreichbar. Welche Adresse er bekommen hat, kann man entweder per IP-Scanner App oder in der Firewall (bspw. Fritzbox) nachsehen. Als Port- und Adressscanner App empfehle ich Net-X:

NetX Network Tools – Apps bei Google Play

Hat alles geklappt, bekommt man beim ersten Aufruf diese Seite zu sehen:

 

Konfiguration

Kommen wir nun zum nervigsten Schritt, wenn man nicht weiß was zu tun ist und keine anständige Anleitung zur Verfügung hat. Nachdem nun Tasmota auf dem Shelly läuft, müssen wir ihm noch beibringen wer er ist und was er zu tun hat. Von Haus aus weiß Tasmota nämlich noch nicht einmal welches Relais auf welchem Pin des Controllerchips liegt, geschweige denn ob der Licht, Rollläden oder was auch immer steuern soll. Den Shelly jetzt schon ins Stromnetz einzubinden kann fatale Folgen haben und zur Zerstörung des Rollladenmotors führen. Also bitte weiterhin brav am PC hängen lassen, solange noch keine Vorlage aufgespielt wurde.

Hierfür klicken wir zunächst im Hauptmenu auf "Configuration" und danach auf "Configure Other". Es erscheint folgender Bildschirm:

Im Textfeld "Template" ist nun die entsprechende Vorlage einzufügen. Einfach kopieren und einfügen:

Wenn die Steuerung über normale Kippschalter erfolgen soll:

{"NAME":"Shelly 2.5","GPIO":[56,0,17,0,21,83,0,0,6,82,5,22,156],"FLAG":2,"BASE":18}

Werden Taster angeschlossen, verwendet man hingegen:

{"NAME":"Shelly 2.5 (buttons)","GPIO":[56,0,19,0,21,127,0,0,6,126,5,22,156],"FLAG":2,"BASE":18}

Jetzt noch den Haken bei "activate" setzen und "Save" drücken. Der Shelly sollte nun neu starten. Wenn alles geklappt hat, erscheinen nun zwei ON/OFF Buttons auf der Hauptseite.

Jetzt kann der Shelly auch erstmals vom PC entfernt und ins Stromnetz eingebunden werden. Ich würde jedoch empfehlen vorerst die beiden Kabel von O1 und O2, zum Rollladenmotor, getrennt zu lassen bis alles vollständig konfiguriert ist. Bei der Belegung empfehle ich O1/S1 für "hoch" und O2/S2 für "runter". Zwar lässt sich das später auch per Konsolenbefehl invertieren oder die Pin-Zusweisung intern ändern, aber so spart man sich den Schritt. Außerdem ist es besser wenn von Anfang an alles richtig verdrahtet ist, anstatt später tricksen zu müssen.

 

Konsole

Die weitere Konfiguration erfolgt nun mittels Befehlen in der Konsole. Diese erreicht man über einen Button im Hauptbildschirm.

Lassen wir die Kalibrierung der Strommessung mal außen vor. Für gewöhnlich passen die Werte beim Shelly auch einigermaßen, so das hier nichts weiter vorgenommen werden muss.

In der Standard-Konfiguration ist der Shelly 2.5 auf Tasmota einfach nur ein doppelter Schaltaktor, wo beide Ein- und Ausgänge unabhängig voneinander agieren. Um das zu ändern muss zunächst der Shutter-Support aktiviert werden:

SetOption80 1

Zur Ansteuerung von Rollläden und Blenden gibt es mehrere Möglichkeiten. Grundsätzlich könnte hier sogar ein PWM-Signal zum Ansteuern eines Servomotors ausgegeben werden, vorausgesetzt das verbautet Relais verpackt das und raucht nicht ab. Tasmota kann es jedenfalls. Unsere, in Deutschland gebräuchlichen, Rollladenmotoren werden jedoch lediglich über ein 4-adriges Kabel gesteuert, wovon eine der Schutzleiter ist. Eine weitere ist der Nulllleiter, bleiben also noch zwei übrig, eine für "hochfahren", eine andere für "runterfahren". Damit diese richtig angesteuert werden, wählen wir den entsprechenden Shutter-Modus aus:

ShutterMode 1

Die vollständige Dokumentation findet ihr hier:

Shutters and Blinds - Tasmota

Damit immer nur ein Relais, für die entsprechende Richtung, geschaltet wird, müssen wir nun einen Interlock der beiden Relais einrichten:

Interlock 1,2

Aktiviert wird der Interlock nun mit:

Interlock ON

Bevor wir nun auch die beiden Leitungen zum Rollladenmotor anschließen, würde ich ein paar "Trockenübungen" empfehlen, um sicher zu stellen das alles bis hier hin richtig konfiguriert ist. Schalten wir im Hauptbildschirm einen der beiden Kanäle ein, sollte ein klicken des Relais zu hören sein. Beim Schalten des zweiten Kanals, während der erste noch aktiv ist, sollte ein doppeltes Klicken zu hören sein und der erste Kanal automatisch abschalten. Ebenso sollte auch der angeschlossene Taster eben diese Aktionen auslösen. Funktioniert hier irgendetwas nicht, haben wir uns vertippt und die Konfiguration ist falsch. Dann bitte nochmal ganz von vorne Template einspielen, "Shuttermode"… usw. Wenn alles klappt, dann kann nun auch der Motor angeschlossen werden. (Natürlich wieder nur bei abgeschaltetem und gegen Wiedereinschalten gesichertem Strom!)

Jetzt müssen wir nur noch definieren welche Relais den Rollladen steuern. Für uns mag das vollkommen logisch sein, das Relais 1 und 2 dafür zuständig sind, immerhin haben wir nur die beide, für ein Tasmota, welches von innen heraus aus dem Microcontroller arbeitet, ist da überhaupt nichts logisch. Dem müssen wir das erst mit folgendem Befehl beibringen:

ShutterRelay1 1

Die Öffnungs- und Schließdauer des Rollladens ist standardmäßig auf 10 Sekunden eingestellt. Das ist in vielen Fällen zu kurz und führt dazu das der Rollladen auf halber Position stehen bleibt und sich nicht weiter schließen lässt. Da wir noch nicht wissen wie lange der Rollladen tatsächlich braucht, sollten wir den Wert erstmal viel zu hoch stellen:

ShutterOpenDuration1 60

ShutterCloseDuration1 60

Zum Initialisieren des Rollladens müssen wir dem Shelly nun einmalig sagen, wo sich der Rollladen befindet und ihn einmal fahren lassen:

backlog shuttersetopen;shutterclose

Dieses, sowie die Einstellung "ShutterRelay" waren die Haupt-Stolpersteine, die einem bei der Konfiguration begegnen. Solange diese Schritte nicht erfolgt sind, erscheint weder Schieberegler für die Position, noch sind die Buttons entsprechend beschriftet. Auch der Befehl "ShutterPosition" gibt nur ERROR zurück. Leider ist diese Info mehr als versteckt in der Dokumentation zu finden, was mich nach mehreren Stunden Ausprobieren, Foren lesen und Fluchen, fast aufgeben lassen hat. Und dann ein Befehl, und alles läuft.

Von jetzt an sollte jedenfalls auch der Schieberegler im Hauptbildschirm auftauchen und die Buttons werden mit Pfeilen beschriftet. Das ganze sieht dann so aus:

Wir schnappen uns jetzt also eine Stoppuhr und messen die Zeit, welche der Rollladen fürs Hoch- und Runterfahren benötigt. Diese sollten wir etwas aufrunden, oder eine Sekunde hinzuzählen, und programmieren sie anschließend in der Konsole ein:

ShutterOpenDuration1 *Zeit_in_Sekunden*

ShutterCloseDuration1 *Zeit_in_Sekunden*

Wer sich übrigens fragt, was immer diese "1" da soll, das ist die Nummer für den Rollladen. Der Shelly 2.5 hat zwar nur die Anschlüsse für einen Motor, es gibt aber durchaus auch andere Aktoren, die mehr als einen Rollladenmotor steuern können. Und da Tasmota ein universelles Betriebssystem für viele Aktoren ist, müssen wir unseren einzigen Rollladen 1 halt immer mit angeben.

 

MQTT

Ich gehe mal davon aus das jeder, der bis hierhin gekommen ist, zumindest weiß was ein MQTT Server ist und wie man ihn unter ioBroker, Homekit, Node-Red, etc. installiert. Bestenfalls läuft vielleicht schon einer. Alles andere würde jedoch den Rahmen dieser Anleitung sprengen.

Unter "Configuration" - "Configure MQTT" kann nun der Server gespeichert werden, zu dem verbunden werden soll. Anschließend taucht der Tasmota-Shelly im MQTT-Server auf. Er erstellt automatisch mehrere Objekte für diverse Stati, sowie einen "cmnd"-Ordner mit einem Objekt "POWER"

Legt man im "cmnd"-Ordner ein Objekt an, und weist ihm einen Wert zu, wird ein Konsolenbefehl mit dem Objektnamen und dem zugewiesenen Wert im Shelly ausgeführt. Weist man also dem bereits vorhandenen POWER-Befehl den Wert "ON" zu, wird im Shelly der Befehl "Power ON" ausgeführt. Für einen einfachen Lichtschalter würde das genügen, bei unserem Shelly 2.5 mit Rollladen reicht es nicht. Der Befehl würde lediglich den ersten Ausgang am Shelly aktivieren und dazu führen das der Rollladen hoch gezogen wird. Zur Rollladensteuerung benötigen wir im Wesentlich die Befehle:

ShutterOpen

ShutterClose

ShutterPosition

Diese legen wir uns nun als Objekt von Typ "Nummer" an. Weisen wir nun dem Objekt ShutterClose den Wert 1 zu, schließt der Rollladen, machen wir das bei ShutterOpen, öffnet er sich. In ShutterPosition können wir den Öffnungsgrad in Prozent angeben, wobei 100 für die obere Position, und 0 für die Untere steht.

In meinem Screenshot kann man gut erkennen wie noch 4 weitere ShutterPosition-Werte hinzu gekommen sind. Diese wurden vom Shelly als Rückmeldung automatisch angelegt, da wir bei ShutterPosition keine Rollladennummer definiert haben. Die Werte signalisieren, das der allgemein gültige Wert von 100 automatisch auf Rollladen 1 bis 4 angewendet wurde. (auch wenn nur ein Rollladen verbaut und möglich ist) Beim Einsatz anderer Aktoren, mit mehreren angeschlossenen Rollläden, ließen diese sich hier auch einzeln steuern.

 

 

Fazit:

Wer des Englischen mächtig ist, darf sich selbstverständlich durch die überaus mächtige, sowie äußerst ermüdende Dokumentation auf der Tasmota Github Seite durcharbeiten. Ich habe hier, in dieser Anleitung, lediglich aufgezeigt wie man Tasmota, auf einem Shelly 2.5, grundsätzlich erstmal als Rollladenaktor zum Laufen bringt. Alleine schon in der Weboberfläche von Tasmota lassen sich noch einige Einstellungen mehr vornehmen, als hier beschrieben sind. Namen können vergeben und geändert werden, die Update-Zeit über MQTT lässt sich ändern, Ein- und Ausgänge können vertauscht oder komplett umkonfiguriert werden, usw. Und über die Konsole, per Befehl, lassen sich sogar kleine Scripte und Regeln erstellen, wie zum Beispiel was passieren soll wenn bestimmte Stromschwellwerte unter- oder überschritten werden. Würde ich das alles beschreiben wollen, könnte ich auch gleich die Tasmota-Seite ins Deutsche übersetzen.

Worauf es mir ankam war, es auf das Nötigste zu beschränken. Ihr sollt möglichst schnell zum Ziel kommen. Ich habe meine eigene Anleitung nun auch selber getestet und nach der äußerst frustrierenden Tagesaufgabe beim ersten Mal, wo ich auch die Erfahrungen hierfür gesammelt habe, war der zweite Durchlauf nun eine wahre Freude. Am längsten hat es gedauert anstelle der Stiftsockelleiste 5 Kabel anzulöten, da mir die Leite dieses Mal kaputt gebrochen ist. Das Flashen selbst hat keine 5 Minuten gedauert und wieder eingebaut, kalibriert und in ioBroker eingebunden war er in 10 weiteren Minuten.

Ich wünsche euch also viel Spaß beim Nachmachen.