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

Nous continuons notre série d’articles sur l’échange de données par requêtes HTTP (TCP/IP) entre un ESP8266 et le serveur domotique Jeedom. Jeedom met à disposition une API aussi complète que celle de Domoticz. La documentation est disponible ici. Nous irons un peu plus vite que pour Domoticz, le principe général étant le même.

Lectures recommandées

ESP8266 (Client Web) : envoyer des données à Domoticz en TCP/IP sans fil (API/JSON) – Partie 1

ESP Easy : utiliser des objets connectés DIY avec Jeedom

Documentation API JSON RPC Jeedom

Matériel utilisé

Le circuit reste le même, à savoir une Wemos D1 Mini (ESP8266 ESP-12), un capteur de température et d’humidité (DHT22), un capteur de pression atmosphérique (BMP180) ainsi qu’un shield relai pour piloter l’allumage d’un appareil depuis l’interface de Jeedom.

esp8266 Wemos D1 mini Module ESP8266 ESP-12. Par exemple Wemos D1 Mini
BMP180 Capteur de pression atmosphérique

BMP180

Broches DHT22 Capteur de température et d’humidité

DHT11 ou DHT22

wemos d1 mini dht22 shield Shield DHT22 ou DHT11 pour Wemos D1 Mini

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

wemos d1 mini relai shield Shield relai  (250VAC/10A ou 30VDC/10A) pour Wemos D1 Mini
led 3mm Led (visualiser l’activation / désactivation du GPIO )
resistance 220ohms Résistance 220Ω
jumper dupont Jumper Dupont
breadboard Breadboard

Circuit : une mini station météo connectée

Composant Broches Broche ESP8266 (Wemos D1 mini)
DHT22 (shield Wemos D1 Mini) VCC 3V3
GND G
Data D4
BMP180 VCC 3V3
GND G
SDA D2
SCK D3
Shield relai Wemos D1 Mini D1

ESP8266 DHT22 BMP180 Shield Relay jeedom ESP8266HTTPCLIENT

 

Récupérer votre clé API Jeedom

Pour pouvoir transmettre des données à Jeedom, il est nécessaire de récupérer la clé API depuis l’interface d’administration. Connectez vous à votre serveur et allez dans la configuration (roues crantées). Elle se trouve dans le champ clef API. Vous aurez besoin de cette clé pour le code Arduino.

Remarque. Il est possible de générer une nouvelle clé. Tous les appareils qui utilisent cette clé ne pourront plus utiliser l’API JSON (c’est le but après tout).

 jeedom api key esp8266 http api json

Préparer un instrument virtuel

Nous allons maintenant créer un instrument qui va recevoir les données. Allez dans les plugins et vérifiez que le plugin Instrument Virtuel est installé. Si ce n’est pas le cas, faites-le.

jeedom instrument virtuel

Rendez-vous dans plugins -> Programmation -> Virtuel et cliquer sur + pour créer un nouveau instrument :

  • Donnez lui un nom
  • Un objet
  • Un type (optionnel)
  • Cochez Activer et Visible

 jeedom equipement virtuel esp8266 wemos api jsonAllez ensuite à l’onglet Commandes et ajoutez 3 infos virtuelles : température, humidité, baromètre. Vous pouvez en profiter pour attribuer une étiquette pour l’unité ainsi qu’une valeur mini et maxi pur l’échelle. Sauvegardez. Après la sauvegarde, un identifiant (#) est attribué pour chaque information virtuelle. Ici, température (#78), humidité (#79) et baromètre (#80). Nous en aurons besoin dans le code Arduino.

 jeedom equipement virtuelle commandes temperature humidite api json esp8266 wemos

Code Arduino/ESP8266

C’est exactement le même que celui développé pour Domoticz, il n’y a que la construction de la requête HTTP qui change. Contrairement à Domoticz, on doit envoyer les données séparément, c’est à dire celle qui correspond à l’instrument virtuel.

La requête HTTP prend la forme suivante

http://#IP_JEEDOM#/core/api/jeeApi.php?apikey=#APIKEY#&type=virtual&id=#ID#&value=#value#

Pour faciliter le travail, vous trouverez au début du programme les variables suivantes qu’il vous reste à modifier par vos valeurs :

On va donc devoir envoyer une requête HTTP pour chaque mesure et l’envoyer à l’instrument virtuel correspondant. La fonction SendToJeedom() utilise la librairie ESP8266HTTPClient pour envoyer la requête de type Get (les données étant encodées dans l’URL). En retour Jeedom, renvoi le code 200 si tout s’est bien passé. Si la clé API est mauvaise, la librairie ESP8266HTTPClient renvoi l’erreur -11 (HTTPC_ERROR_READ_TIMEOUT). Jeedom reste muet tout simplement.

La requête reste un simple chaine de caractère que l’on assemble avec les différentes variables, par exemple pour la température

Ce qui donne par exemple la requête suivante

Il suffit ensuite de reprendre la base de l’url (baseurl) qui est toujours identique et l’assembler avec l’identifiant et sa valeur. J’ai ajouté un délai de 1s entre chaque publication. Pour optimiser le code, on pourrait vérifier que l’envoi précédent a été correct avant de poursuivre.

Ouvrez l’IDE Arduino et collez le code suivant. Modifiez les variables et téléversez-le.

De retour sur l’interface Jeedom, vous pouvez visualiser les mesures qui remontent de l’ESP8266 sur l’instrument virtuel.

jeedom api json wemos d1 mini dht22 bmp180 esp8266httpclient

Inscrivez-vous à la newsletter hebdomadaire

Aucun spam et aucun autre usage ne sera fait de votre email. Vous pouvez vous dés inscrire à tout moment.

Comparateur de prix

Bons plans

Les offres suivantes se terminent bientôt. Utilisez le coupon indiqué pour profiter du prix promo

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