Mes passions, le boulots, mes coups de gueule...




Utiliser SEQUEmatic pour connaitre l’état d’un élément domotique WiFi piloté par Tuya / Smart Life

Catégories : Domotique, Geek, Informatique, Raspberry Pi · par 17 Jan 2021

Introduction

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.

Réalisation

Prérequis

Nous partons du principe que vous avez déjà connecté un périphérique domotique à votre compte et application SmartLife.

Côté SEQUEmatic

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.

Exécution d’une séquence

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 :

  • SI l’état est « ON », on crée une variable « etat_lampe_bureau » et on la mets à la valeur « 1 ».
  • SINON, on mets la variable « etat_lampe_bureau » à la valeur « 0 ».

Ce qui, au final, nous donne ceci :

Et pour finir, nous allons activer notre séquence :

Lecture de la variable

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 :

Script

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

Conclusion

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 ! 😉

(1) Comment

Meoskay
2 ans ago · Répondre

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 ? 🙂

Répondre à MeoskayAnnuler la réponse.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.