Domotique et objets connectés à faire soi-même

Débuter avec les Rules d’ESP Easy. Créer un mini serveur domotique à base d’ESP8266

Rules, mini scénarios ESP-Easy pour ESP8266

Rules, mini scénarios ESP-Easy pour ESP8266

Depuis la version R108 du firmware ESP Easy, il est possible de créer de petits scénarios (Rules) permettant de transformer n’importe quel module ESP8266 en mini serveur domotique. Les Rules comblent très efficacement l’absence d’éditeur de code.

 

Ce tutoriel est une synthèse de la documentation officielle disponible sur http://www.esp8266.nu/index.php/Tutorial_Rules

Découvertes du système de Rules d’ESP Easy

ESP Easy dispose d’un moteur de règle (rules) qui permet de créer de petits scénarios domotiques. C’est très pratique car il est possible d’embarquer de la logique directement dans l’objet connecté sans dépendre d’un serveur domotique. C’est largement suffisent pour des usages courants. Allumer un éclairage via un relais lorsqu’on détecte une présence à l’aide d’un détecteur de mouvement ou un radar. Allumer / éteindre un climatiseur lorsqu’on atteint un seuil de température… Bref tout ce qu’on pourrait faire avec une box domotique classique.

Le système de Rules est disponible sur les 2 versions de ESP Easy. R120 et Mega. 4 fichiers de rules maximum peuvent être créés.

L’écriture des rules se fait à l’aide de mots clé. Ce n’est pas un langage de programmation mais cela s’en rapproche très fortement.

Activer la page Rules

La page de configuration n’est pas active par défaut. Pour l’activer, il faut aller à la page Tools puis Advanced. Cochez la case Rules (règles) qui se trouve tout en bas de la page de paramètres.

Après l’enregistrement de la configuration, une nouvelle page Rules est disponible.

Ne vous attendez pas à un éditeur de scénario, on est sur un ESP8266 ! Vous avez juste un champ texte capable de contenir 2048 caractères. Cela semble peu mais c’est déjà suffisant pour créer de petits scénarios comme nous allons le voir. Il faudra être sobre dans les commentaires du code, ou encore mieux avoir un version non commentée pour gagner de précieux caractères.

Syntaxe

Vocabulaire

Commandes

Variables système

Ecriture

On peut écrire les règles en ligne

<event>[=,<,>][value] do <action>

ou en bloc

on <event>[=,<,>][value] do
 <action>
 <action>
endon

Timers

Actions récurrentes (Time)

Très pratique pour lancer des actions récurrentes, on clock#Time=JOURS,HEURE. Par exemple allumer l’arrosage des plantes tous les matins à 7h30 :

on clock#Time=All,7:00 do

Jours : All (tous les jours) ou un jour en particulier (3 premières lettres du jour en anglais), Sun, Mon, Tue, Wed, Thu, Fri, Sat

Heure au format HH:MM

Remarque : pour le moment il n’est pas encore possible d’exécuter une action à intervalle régulier

Déclenche une action depuis un appel HTTP

Il est possible de déclencher une action à l’aide d’une requête HTTP reçue d’un logiciel domotique ou d’un navigateur internet. La requête HTTP sera de la forme

http://<ESP-ip>/control?cmd=event,ouvrevannearrosage

Sur l’ESP il suffira de créer une Rule qui déclenche l’action appelée comme ceci

on ouvrevannearrosage do
  gpio,2,1       // ouvre la vanne d'arrosage
  timerSet 1,600 // durant 10 minutes
endon

on Rules#Timer=1 do
  gpio,2,0       // ferme la vanne d'arrosage
endon

Déclencher une action sur un autre noeud ESP Easy (SendTo)

Les modules ESP Easy peuvent communiquer entre eux. On peut déclencher des actions sur un autre ESP à l’aide de la commande dont le formalisme est SendTo <UnitNrESP>,<command>

Sur le premier ESP#1, on envoi la commande d’ouverture de la vanne d’arrosage

on demoEvent do
  sendTo 2,event,ouvrevannearrosage 
endon

Sur l’ESP#2, la règle précédente permet de déclencher l’ouverture de la vanne d’arrosage durant 10 minutes.

LevelControl : déclenchement sur seuil

Le Device Level Control (page du Device en Anglais) permet également de créer un déclencheur lorsqu’un seuil est atteint. L’utilisation la plus courante et la commande d’allumage d’un chauffage lorsqu’une température seuil est atteinte.

Dans la liste Device, choisissez Level Control puis

Comment fonctionne l’algorithme

D’après le code source disponible ici du plugin _P021_Level :

On est loin d’une boucle de régulation, mais ça peut suffire pour réguler simplement un petit chauffage.

Dummy Device : recopie ou calcul de valeur

On peut enfin réaliser de petits calculs ou ‘recopier’ la valeur d’une variable lorsqu’un événement se déclenche (ou à la fin d’un Timer) et les stocker dans un Dummy Device. Le Dummy Device permet de simuler différents type d’appareil dont on pourra simplement récupérer la valeur dans un logiciel domotique :

Déclencheur

Commande

On peut affecter une valeur ou faire un petit calcul (+ , – , / , * ) à l’aide de la commande suivante

TaskValueSet <task nr>,<taskvalue nr>,<value|formula>

Par exemple, on affecte la température mesurée par le DHT22 à la 1ère variable du Dummy Device n°5

TaskValueSet;5,1,[DHT22#TempDHT22]

On est encore bien loin de la puissance et des possibilités offertes par un serveur domotique mais les Rules (Règles) d’ESP Easy permettent de déporter des règles de fonctionnement simple. Les Rules peuvent être très intéressante pour certaines applications ou une coupure du réseau WiFi peut s’avérer problématique. Il est plus simple et plus fiable d’automatiser la fermeture d’un portail, d’un système d’arrosage… directement sur l’ESP8266 que sur le serveur domotique. Une défaillance du logiciel, du matériel ou de la connexion WiFi sera sans conséquence sur le fonctionnement du matériel domotisé.

Et maintenant

Convaincu par le système de Rules, voici un petit projet de réalisation d’un thermostat connecté à Jeedom

Avez-vous aimé cet article ?
[Total: 0 Moyenne: 0]
Quitter la version mobile