Dans un précédent article, j’avais indiqué une méthode pour connaitre l’état d’un élément domotique WiFi piloté par Tuya / Smart Life à l’aide d’un petit script qui allait interroger les serveurs de Tuya. Malheureusement, le service à imposé un délais de 10 minutes entre chaque demande, sous peine de se voir retourner un message d’erreur.
C’est une chose que sait maintenant faire SEQUEmatic, nous allons voir comment.
Nous partons du principe que vous avez déjà connecté un périphérique domotique à votre compte et application SmartLife.
Si ce n’est déjà fait, créez-vous un compte utilisateur sur SEQUEmatic. C’est un service gratuit, géré par un passionné, qui se développe et acquiert régulièrement de nouvelles fonctions.
Sur le Dashboard, nous allons créer une nouvelle séquence :
Nous allons lui donner un nom et une description facultative :
Ensuite, nous allons créer un « webhook ». C’est une URL qui va déclencher une action sur SEQUEmatic. En l’occurence, la lecture de l’état de notre lampe LED et son stockage dans une variable.
On clique sur l’icône de la petite prise, on sélectionne « Custom webhook », on laisse les paramètres par défaut sur le Schema 1 et on enregistre.
L’URL est maintenant créée. Il faut encore ajouter les différents pas de la séquence :
On sélectionne « Add step », puis la petite lampe des « Devices », ensuite « Tuya Smart Life device status » et enfin, le status « On » (l’état de la variable qu’on va traiter) :
La validation de l’étape précédente va nous créer un cas : si/sinon ou if/else.
On va alors dire que :
Ce qui, au final, nous donne ceci :
Et pour finir, nous allons activer notre séquence :
Une fois que l’on appelle le webhook par son URL, la séquence se déclenche, mais ne fournit pas de résultat. Il va alors falloir lire le contenu de la variable sur laquelle nous venons de travailler.
On retourne sur le Dashboard et on sélectionne « Variables » :
Dans la liste des variables, on clique sur la petite prise en regard du nom de la variable qui a été créée précédemment :
La première URL (Get value) va nous retourner l’état de notre variable après que notre séquence ait été lire son état :
Voici un petit script qui nous permet de lire l’état de notre lampe :
#!/bin/bash
# Adresse IP de la lampe sur le réseau local
IP="XX.XX.XX.XX"
# -q paramètre du mode silencieux
# -c nombre de pings à effectuer
ping -q -c1 -W1 $IP > /dev/null
if [ $? -eq 0 ]; # Si le résultat du ping est vrai => Donc si le device est trouvé
then
# On va lire l'état de la lampe et le stoker dans une variable sur Sequematic
curl --silent "https://sequematic.com/trigger-custom-webhook/XXXXXXXXXX/XXXXX" > /dev/null
# On va lire la variable sur Sequematic
CurlResult=$(curl --silent "https://sequematic.com/variable-get/XXX/XXXXXXXXXX/etat_lampe_bureau")
if [ $CurlResult -eq 0 ] || [ $CurlResult -eq 1 ];
then
LightState=$CurlResult
fi
else
LightState=2
fi
case $LightState in
0)
echo "Lampe éteinte"
;;
1)
echo "Lampe allumée"
;;
*)
echo "Erreur !"
;;
esac
Par cette méthode, il est possible de lire tous les paramètres d’un élément domotique via SEQUEmatic. Sa température de couleur, sa couleur, son intensité, … Il suffit juste de charger quelques variables et de les lire par la suite.
Bon amusement ! 😉
3 ans ago ·
Merci, mais je ne vois pas comment lire une variable non binaire (pour moi un chiffre allant de 0 à 999). Il faudrait vérifier chiffre par chiffre (si hygrométrie 549, alors temp_trouvee = 549, puis si hygrométrie = 548, alors temp_trouvée = 549, etc) ? Ca parait un peu laborieux, non ? 🙂