le
232 mots - 2 minutes de lecture
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).
👍