Mettre à jour automatiquement tous les modules IOT shelly

Le problème

Aimant la domotique, j’ai chez moi beaucoup de modules IOT Shelly. Ces modules sont connectés en wifi et ont une interface web qui permet de les gérer localement, sans avoir besoin du cloud du constructeur. C’est parfait pour moi 😄 Le “soucis” est qu’il faut régulièrement les mettre à jour, et cela se passe via leur interface web. Du coup quand on commence à envoir un peu beaucoup, ca devient pénible. Heureusement leur API locale est bien documentée et a été prévue pour cela.

La solution

Il existe donc un méthode pour connaitre le statut de la mise à jour en attente (pending) et une methode pour lancer l’update avec la dernière version en attente. Voici un bête script shell pour faire cela sur l’ensemble de vos modules en une seule fois.

#!/bin/bash
# API doc : https://shelly-api-docs.shelly.cloud/gen1/#ota

for s in shelly{01..50}; do
	if [ 'true' == `curl -s http://${s}/ota\?update | jq .has_update`  ]; then
		echo " ================ ${s} update =================";
		curl http://${s}/ota\?update\=true | jq ;
		sleep 5;
		curl http://${s}/ota\?update | jq ;
	else
		echo " ================ NO update for ${s} update =================";
	fi;
done

Le script fait une bouclke, test si il y a un update en attente et le lance. J’ai juste mis des sleep pour laisser le temps de voir. A supprimer si vous mettez ce une adaptation de ce script en crontab (une fois par mois suffit).

👍