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.
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.