Accueil | Domotique | Piloter le GPIO de l’ESP8266 (Serveur Web) depuis Jeedom en TCP/IP sans fil – Partie 2

Piloter le GPIO de l’ESP8266 (Serveur Web) depuis Jeedom en TCP/IP sans fil – Partie 2

Voici la seconde partie de l’article pour faire communiquer un ESP8266 en TCP/IP avec Jeedom. Dans ce tutoriel, nous allons voir comment piloter le GPIO d’un ESP8266 depuis Jeedom à l’aide de requêtes HTTP (TCP/IP). Le principe est le même que pour Domoticz (article), on démarre un petit serveur Web sur l’ESP8266 qui lancera un fonction à chaque fois qu’une requête est reçue sur un point d’entrée (ici /gpio). La mise en oeuvre coté Jeedom est un peu plus compliquée que pour Domoticz. Il va falloir créer un script capable d’exécuter des requêtes HTTP puis appeler ce script dans un instrument virtuel (ce que nous allons faire) ou un scénario.

Article précédent : ESP8266 (Client Web) : envoyer des données à Jeedom en TCP/IP sans fil (API JSON) – Partie 1

Matériel utilisé

Le matériel et le montage reste identique aux tutoriels précédents.

esp8266 Wemos D1 miniModule ESP8266 ESP-12. Par exemple Wemos D1 Mini
BMP180Capteur de pression atmosphérique

BMP180

Broches DHT22Capteur de température et d’humidité

DHT11 ou DHT22

wemos d1 mini dht22 shieldShield DHT22 ou DHT11 pour Wemos D1 Mini

Le capteur est connecté à la broche D4 (GPIO2)

wemos d1 mini relai shieldShield relai  (250VAC/10A ou 30VDC/10A) pour Wemos D1 Mini
jumper dupontJumper Dupont
breadboardBreadboard

Circuit

ComposantBrochesBroche ESP8266 (Wemos D1 mini)
DHT22 (shield Wemos D1 Mini)VCC3V3
GNDG
DataD4
BMP180VCC3V3
GNDG
SDAD2
SCKD3
Shield relai Wemos D1 MiniD1

ESP8266 DHT22 BMP180 Shield Relay jeedom ESP8266HTTPCLIENT

 

Changer les broches du bus I2C de l’ESP8266

Si vous utilisez un capteur fonctionnant sur le bus I2C, vous allez devoir modifier une ou deux broches du bus I2C. Pour cela, on utilise la librairie Wire.h

Déclarez la librairie en début de programme

Dans le setup() ; mais avant le d’initialiser l’objet BMP180 avec la commande bmp.begin() par exemple; on déclare la initialise le bus I2C en indiquant les nouvelles broches. Ici, j’ai déplacé par broche D1 (SCK) sur la broche D3, ce qui donne

Vous pouvez maintenant déplacer le bus I2C sur les broches que vous voulez.

Piloter le GPIO de l’ESP8266 depuis Jeedom

Pour ce tutoriel, j’ai donc utilisé le shield relai pour Wemos D1 mini qui vient s’empiler au dessus la l’ESP8266 pour former un ensemble compact (et économique, moins de 8€).

Créer un script pour piloter le GPIO par requête HTTP

Allez dans plugins -> Programmation -> Script (installez le plugin script si le menu n’existe pas) puis ajoutez un nouveau script :

  • Donnez lui un nom en commençant par script_xxxx. Cela vous permettra de distinguer les scripts des autres équipement et de les retrouver plus facilement dans les listes de choix.
  • Attribuez lu un objet parent (optionnel),
  • Activez le
  • Ne cochez pas visible

Allez dans l’onglet Commandes puis cliquez sur Ajouter une commande script :

  • Donnez lui le nom ON
  • Type de script : HTTP
  • Type : action
  • Requête : remplacez l’adresse IP, l’id du GPIO et le token
    • http://#IP_ESP8266#/gpio?id=#ID#&etat=1&token=#token#
  • La requête doit contenir :
    • saisissez success:1 (ou un autre retour qu’il faudra modifier dans le code Arduino)
  • Un délai maximum de réponse de l’ESP8266 (timeout). Par exemple 2 secondes
  • Nombre de tentatives maximum : 5 (au choix)
  • Décocher Afficher

Dupliquez la commande en appuyant sur l’icône (documents superposés) à coté du bouton tester. Modifiez état=1 par état=0. Sauvegardez.

jeedom script commande http pilotage gpio esp8266

Créer un bouton (équipement) virtuel

Allez dans plugins -> Programmation -> Virtuel (installez le plugin Virtuel si le menu n’existe pas) puis ajoutez un nouveau équipement. Donnez luis un nom, un objet parent et cochez activer et visible. Allez ensuite à l’onglet Commandes et ajoutez 2 commandes virtuelles

Pour la première commande :

  • Donnez lui le nom On
  • Cliquez sur Rechercher équipement. Recherchez le script puis la commande ON de ce dernier

jeedom selection script on

Faites la même chose pour la commande Off. Sauvegardez.

jeedom equipement virtuel bouton commande gpio esp8266

La configuration de Jeedom est terminée.

Code Arduino / ESP8266

Le code Arduino est parfaitement identique à la version Domoticz. Pour en savoir plus sur le fonctionnement, je vous invite à lire le tutoriel précédent. La seule différence réside dans le retour de la fonction updateGpio(). Alors que Domoticz n’attend rien de l’ESP8266, il est nécessaire de répondre à Jeedom. Cela ne gêne en rien le fonctionnement du serveur domotique mais Jeedom va afficher une notification et ajouter une erreur dans le journal d’événement. Autant bien faire les choses. On va juste renvoyer une chaine de caractère (success:1) qui sera testée par le script. C’est tout.

Créez un nouveau sketch depuis l’IDE Arduino. Modifiez les variables avant de téléverser le programme.

Vous pouvez maintenant piloter le GPIO de n’importe quel ESP8266.

https://i0.wp.com/www.projetsdiy.fr/wp-content/uploads/2017/04/jeedom-wemos-d1-mini-shiedl-relay-http-request.png?resize=172%2C86