Shelly & Tasmota OTA Update anstoßen

Ab einer gewissen Zahl von WLAN Komponenten, wird es zur Herausforderung, die Firmware der Geräte auf dem aktuellen Stand zu halten. Zu diesem Zweck habe ich mir ein Tab in meinem Node-RED Dashboard eingerichtet.

Das grüne Herz zeigt, dass der Shelly online ist.

Die Abkürzung OTA steht für „Over The Air“, auf deutsch „über die Luft“. Es handelt sich dabei um eine drahtlose Methode, Updates auf Geräte zu übertragen.

Tasmota Firmware

Die aktuelle Tasmota Version, lässt sich durch einen automatisierten Abruf des GitHub-Feeds auslesen:

https://github.com/arendst/Tasmota/releases.atom

[{"id":"83b36f5b.0b8b","type":"xml","z":"c083a756.a72f18","name":"","property":"payload","attr":"","chr":"","x":370,"y":660,"wires":[["9fef7d11.d2a7c"]]},{"id":"390fe0f3.da48","type":"http request","z":"c083a756.a72f18","name":"","method":"GET","ret":"txt","paytoqs":false,"url":"https://github.com/arendst/Tasmota/releases.atom","tls":"","persist":false,"proxy":"","authType":"","x":710,"y":620,"wires":[["83b36f5b.0b8b"]]},{"id":"3a9bb870.4e0158","type":"inject","z":"c083a756.a72f18","name":"TASMOTA VERSION","topic":"","payload":"","payloadType":"date","repeat":"21600","crontab":"","once":true,"onceDelay":0.1,"x":400,"y":620,"wires":[["390fe0f3.da48"]]},{"id":"9fef7d11.d2a7c","type":"function","z":"c083a756.a72f18","name":"HIER Feed Version filtern","func":"msg.version = msg.payload[\"feed\"][\"entry\"][0][\"title\"][0];\nnode.status({text:msg.version});\nmsg.version = msg.version.replace(\"Tasmota v\",\"\");\nmsg.version = msg.version.replace(\"Tasmota\",\"\");\nmsg.version = msg.version.substring(0,6)\nreturn msg;","outputs":1,"noerr":0,"x":550,"y":660,"wires":[["e8c6fe5.7a082"]]},{"id":"e8c6fe5.7a082","type":"change","z":"c083a756.a72f18","name":"","rules":[{"t":"set","p":"tasmotaversion","pt":"global","to":"version","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":800,"y":660,"wires":[["18e34f71.edaca1"]]}]

Die Tasmota Version steht immer aktuell in den MQTT Daten im ioBroker. Alternativ lässt sie sich über das Tasmota Command „Status“ auslesen.

Um bei einem Tasmota Geräte den Firmware-Update-Vorgang zu starten, reicht ein simpler HTTP-Aufruf von:

http://192.168.xx.xx/cm?cmnd=upgrade%201&user=BENUTZERNAME&password=PASSWORT

Auch die OtaUrl lässt sich per simplem HTTP-Aufruf anpassen. Leerzeichen oder Sonderzeichen in der OtaURL müssen durch ihre jeweiligen ASCII-Hex-Codes ersetzt werden. Dem Hex-Code muss ein Prozentzeichen % vorangestellt werden (z. B. %3B).

http://192.168.xx.xx/cm?cmnd=OtaUrl%20URL&user=BENUTZERNAME&password=PASSWORT

Mehr Infos zu Tasmota Commands

Shelly.cloud Firmware

Bei der Original Shelly Firmware, ist es ähnlich leicht, aber ein wenig anders. Die aktuell zur Verfügung stehende Firmware Version lese ich aus der JSON-Datei der offiziellen API:

https://api.shelly.cloud/files/firmware

Hier findet man auch die Download-Urls zu den Firmwares für die Shelly Geräte. Die aktuelle Firmware, hier für den Shelly 2.5, liegt zum Beispiel hier:

https://repo.shelly.cloud/firmware/SHSW-25_build.zip

Die Shellys verraten mit folgendem Kommando ihre aktuelle Version:

http://BENUTZERNAME:PASSWORT@192.168.xx.xx/status/

Den Update-Vorgang kann man mit folgendem Kommando starten:

http://BENUTZERNAME:PASSWORT@192.168.xx.xx/ota?update=1

Möchte man eine andere Shelly-Firmware-Version flashen, lässt sich hier auch eine Firmware-URL übergeben. Soweit ich weiß ist das Flashen auf eine alternative Firmware (Tasmota) so jedoch nicht möglich.

http://BENUTZERNAME:PASSWORT@192.168.xx.xx/ota?url=https://repo.shelly.cloud/firmware/SHSW-25_build.zip

Mehr Infos zur Common HTTP API der Shellys

Update: 25.10.2021

Seit Version 10.0.0 von Tasmota braucht man natürlich beim Filtern der Feed Version natürlich ein substring(0,6) – etwas unflexibel, sollte ich mal ändern.

Hallo Welt!

Ich baue mir mein eigenes SmartHome. Da ich dies nicht während eines Neubaus, sondern in einer (unserer) Bestandsimmobilie tue, sind die meisten Lösungen auf Funkbasis.

Ich versuche beim Bau einigen Grundsätzen zu folgen:

  • kein Smartphone Zwang – alle wichtigen Funktionen wie Licht und Rollläden müssen auch über die normalen Schalter bedienbar sein.
  • keine Insellösung – das Festlegen auf einen einzelnen Hersteller schränkt nur unnötig ein und verteuert es.
  • my home is my castle – das SmartHome läuft bei mir zuhause – nicht in der Cloud.
  • Open Source – soweit es geht. Bei der Firmware (gerade von Zigbee-Geräten) stößt man hier natürlich an seine Grenzen.
  • kein „Alexa“, kein „Hey Google“ – Daten fallen in einem SmartHome wahre Unmengen an. Doch die bleiben bei mir.
  • es hat auch Grenzen: zumindest sage ich das jetzt noch.

Ich bin in dem Bereich kein Profi. Vor gut einem Jahr habe ich mit ioBroker und NodeRED angefangen. Trotzdem gibt es vielleicht die ein oder andere Erkenntnis, die ich hier teilen kann.