Débuter avec ESP Easy R120, firmware ESP8266 pour créer des objets connectés sans programmation • Domotique et objets connectés à faire soi-même

ESP Easy R120 (version stable) est un firmware Open Source qui permet de créer des objets connectés (IoT) ou des accessoires domotiques à l’aide d’un module ESP8266 sans aucune ligne de code (page officielle du projet). ESPEasy peut s’installer directement depuis l’IDE Arduino à partir du code source ou à l’aide d’un petit programme (uniquement disponible sous Windows).

Tutoriel actualisé le 26 mai 2020

ESP Easy embarque un mini serveur web qui permet de configurer le module à distance. De très nombreux capteurs sont pris en charge : DS18B20/DHT11/DHT22 (température et humidité) TCR5000 (compteur de pulsation), BMP085/BMP280/BME280 (baromètre numérique) BH1750 (luminosité), Wiegand/PN532 (RFID), HC-SR05 (distance), IR, ADS1115 (4 entrées analogiques 16 bits I2C), INA219 (mesure de courant)… ainsi que des actionneurs (relais, led, servo, PWM…). ESP Easy intégré également (depuis la version R120) un éditeur de script qui permet de créer de petits scénarios, transformant l’ESP8266 en mini serveur domotique indépendant !

Cet article a été rédigé avec la version R120 du firmware sur un ESP8266 LoLin D1 Mini

ESP Easy (R120) ou ESP Easy Mega, attention à la confusion !

Il existe 2 branches (versions) d’ESP Easy ce qui peut entraîner une certaine confusion lorsqu’on débute.

ESP Easy est la version stable (R120) que l’on peut récupérer sur cette page. L’installation à partir de la compilation du code source est difficile (impossible) avec les versions récente de l’IDE Arduino. En cas de problème, utilisez l’utilitaire ESP Tools d’Espressif. Tout est expliqué étape par étape dans ce tutoriel.

ESP Easy Mega est la version en cours de développement disponible ici. Elle embarque plus de plugins, une nouvelle interface et supporte (quelques) cartes de développement ESP32. Pour en savoir plus, vous pouvez lire cet article de présentation. Attention, pour fonctionner votre carte ESP8266 doit au moins disposer d’1MB de mémoire flash (attention à bien choisir votre module ESP-01).

Quel module ESP8266 choisir ?

On peut installer le firmware sur la quasi totalité des modules ESP8266. La seule limitation est la quantité de mémoire flash. Le problème ne se pose plus vraiment aujourd’hui, mais il peut encore y avoir des fabricants qui utilisent d’anciens stocks de SoC ESP8266.

Module ESP8266 ESP-01 avec 2 GPIO

Idéal pour fabriquer des relais connectés ou des minis objets connectés (sonde de température, suivi de la qualité de l’air). Attention, certains modèles obsolètes (512MB de mémoire flash) sont encore commercialisés !

Voici une sélection de modules ESP01 équipés d’au moins 1MB de mémoire flash

Plus économique dans un pack

Il est possible de programmer l’ESP01 à l’aide de l’interface UART (port série) du module. Il est toutefois beaucoup plus facile et plus rapide d’utiliser un adaptateur FTDI (convertisseur série vers USB) ou un programmateur USB. Il existe également des supports dédiés au module ESP01.

Attention, il est nécessaire de réaliser un câblage spécifique pour mettre le module ESP-01 est en mode bootload à chaque fois qu’on désire téléverser un programme.

Pour les cartes ESP8266 qui ne disposent par de convertisseur USB vers port série (assez rare)

En plus d’être très accessibles (environ 2,5€), Wemos a développé de nombreux shields (cartes d’extensions) qui viennent s’empiler ou s’assembler sur une base double ou triple. La liste de tous les shields disponibles est actualisée ici.

Voir plus de shields

Installer le firmware ESPEasy R120 sur un ESP8266

Vous pouvez récupérer la dernière version stable (R120) du firmware sur cette page. La section Download se trouve en bas de page.

Une fois décompressé, le répertoire contient les éléments suivants :

  • 3 fichiers binaires en fonction de la taille de la mémoire flash du module de destination (512,1024 ou 4096 Ko)
  • flash.exe, le programme d’installation du firmware
  • Les sources du projet permettant l’installation depuis l’IDE Arduino et découvrir comment fonctionne ESP Easy

Flash du firmware à l’aide du programme esptool.exe (sur Windows uniquement)

C’est la méthode la plus simple pour débuter. On utilise le petit programme esptool.exe qui se trouve à la racine du répertoire. Il permet de flasher (téléverser) le binaire (image pré-compilée) du firmware qui correspondant à la taille de la mémoire du module ESP8266.

La première chose à faire est de récupérer le port COM sur lequel est branché l’ESP8266. Pour cela, vous pouvez vous aider de l’IDE Arduino. Vous aurez également besoin de connaître la quantité de mémoire flash dont dispose le module. Voici quelques indications si vous ne connaissez pas la quantité de mémoire flash dont dispose votre module :

  • ESP-01 récent : 1MB
  • ESP8266 : 4MB
  • ESP8266EX : 2MB

Une fois que vous avez toutes les infos, lancez esptool.exe

Répondez aux trois questions :

  • Comport : le port com
  • Flash size : la taille de la mémoire flash de l’ESP utilisé
  • Build : indiquez le numéro de la version du firmware. Ici 120

Validez pour lancer l’installation.

Personnaliser et compiler les sources avec l’IDE Arduino

Cette méthode pose malheureusement des problèmes avec le code source de la version R120. Si vous devez compiler le code source (pour ajouter un plugin), utilisez PlatformIO

Personnaliser et compiler les sources avec PlatformIO

Vous rencontrez des erreurs de compilation avec l’IDE Arduino, essayez l’IDE PlatformIO. Suivez ce tutoriel.

Installation à l’aide du script esptools.py (tout système d’exploitation)

Espressif a développé un script python nommé esptools.py (code source sur GitHub) qui permet de téléverser (entre autre) un firmware vers les modules ESP8266 (et ESP32). Cette solution alternative fonctionne sur tous les systèmes d’exploitation et notamment macOS, et Linux (y compris Raspbian).

Si vous rencontrez des problèmes de compilation avec l’IDE Arduino ou PlatformIO, n’hésitez pas à suivre les étapes de ce tutoriel.

Premier démarrage d’ESP Easy : connexion au réseau WiFi

Après l’installation, le module ESP8266 reboot. ESP Easy embarque un serveur web qui permet d’accéder à l’interface de configuration du module. Au premier démarrage, vous trouverez l’ESP sur votre réseau Wi-Fi. Ouvrez le gestionnaire de connexion Wi-Fi et sélectionnez le réseau ESP_0.

Dans un navigateur internet, ouvrez l’adresse http://192.168.4.1/setup. Sur macOS, la fenêtre de connexion s’ouvre automatiquement après quelques secondes. Choisissez le réseau WiFi auquel l’ESP doit se connecter et indiquez le mot de passe.

Appuyez ensuite sur Connect.

Une fois connecté, l’adresse ip du module est affichée (quelques secondes !). Si vous avez loupé l’adresse, allez sur votre box internet ou routeur pour la retrouver.

Découverte de l’interface ESP Easy

L’ESP8266 est prêt à être utilisé. Découvrons maintenant comment ça fonctionne. Dans un navigateur internet, saisissez l’adresse ip de l’ES. L’interface Web d’ESP Easy est constituée de 4 onglets (+ 1 que nous verrons plus tard). Tout n’est pas documenté sur le Wiki du projet mais voici l’essentiel. Un grand nombre de réglages sont réservés à des applications avancées et peut être prévus pour des fonctions à venir (noeuds par exemple).

Page Main : résumé système

  • Load : la charge CPU
  • Uptime : temps en minutes de fonctionnement depuis la mise sous tension
  • WiFI RSSI : qualité de réception du réseau WiFi en dB
  • IP : adresse ip du module
  • GW : adresse ip de la box internet ou du routeur
  • Build : version du firmware
  • Unit : numéro du noeud (de 1 à 31). Attribué dans la page config.
  • STA/AP MAC : Adresses MAC
  • ID : identifiants du chip ESP et de la mémoire flash
  • Flash Size : taille de la mémoire flash
  • Boot cause : Cold boot (démarrage à froid) ou Manual reboot (après un appui sur le bouton reset)

Noeuds ESP Easy

Pour voir les autres modules ESP sur votre réseau il faut faire plusieurs réglages :

  • Attribuer un Unit nr (entre 1 et 31) pour chaque module
  • Attribuer un port UDP dans la page Tools / Advances / UDP Port


Page Config : configuration du module

Cette page permet de configurer les paramètres généraux du module :

  • Name : permet de nommer l’ESP. Le nom sera affiché dans la fenêtre du navigateur. Pratique lorsqu’on possède plusieurs objets à base d’ESP Easy
  • Admin Password : permet de protéger l’accès à l’ESP. Il est pris en compte après un reboot (reset) de l’ESP8266.
  • SSID/WPA Key : Identifiant et mot de passe d’accès au réseau WiFi.
  • WPA AP Mode Key : mot de passe pour se connecter depuis un smarphone ou tablette (configesp par défaut)
  • Unit nr : numéro du module ESP entre 1 et 31. Important si vous avez plusieurs modules et que vous utilisez le protocole MQTT.
  • Protocol et champs Controller : choix du protocole de communication (voir plus bas) et paramètres de ce protocole. Si vous ne souhaitez pas communiquer avec un serveur domotique ou distant, choisissez Standalone.
  • Sensor Delay : par défaut 60 secondes. Délai entre 2 mesures (et donc d’envoi au serveur).
  • Sleep Mode : active la mise en sommeil du module ESP8266. Conseillé si votre objet est alimenté sur batterie. On dispose de 30 secondes au démarrage pour accéder à l’interface Web et le désactiver si nécessaire. Pour certains modules il faut souder la broche 16 au Reset.

On peut attribuer une adresse ip fixe à l’ESP8266

  • IP : l’adresse ip désirée
  • GW : l’adresse ip du routeur ou de la box internet
  • Subnet  masque de sous réseau
  • DNS : adresse ip du serveur DNS (l’ip de votre routeur en général)

Page Hardware Settings

Cette page permet de configurer les GPIO du module et d’attribuer un comportement par défaut pour chaque entrées/sorties :

  • WiFi Status Led : fait clignoter une Led pour suivre l’activité WiFi
  • SDA et SDL : GPIO réservés pour les modules I2C
  • GPIO boot states : permet d’attribuer un état par défaut à chaque GPIO (default, input, Output HIGH, Output LOW)

Page Tools : réglages avancés et outils

Avant de tester ESP Esay sur un cas concret, passons à la page Tools pour découvrir ce qu’elle nous réserve :

System

  • Reboot : permet de redémarrer le module ESP8266. Pratique pour la maintenance, cela évite de se déplacer pour appuyer sur le bouton reset du module.
  • Log : un journal des événements. On va voir comment modifier le niveau de détail du journal un peu plus loin.
Page Advanced

Cette page contient des réglages avancés mais certains sont très utiles comme vous avez voir :

  • Subscribe/Publish Template : masque pour souscrire/publier sur un broker MQTT. Ce champ est rempli automatiquement lorsque le protocole MQTT est sélectionné
  • Message Delay : fréquence de publication des messages. Par défaut 1000ms (1 seconde). Si vous publiez sur ThingSpeak, augmentez le délai à 15000.
  • Use NTP : permet de récupérer l’heure sur internet
  • NTP Hostname : pour indiquer un serveur de temps. Par défaut c’est pool.ntp.org
  • Timezone Offset : décalage de temps. Pour la France, indiquez 120 (on ajoute 2h)
  • Daylight Saving Time : Mode heure d’été. Pris en compte si NTP est activé
  • Syslog IP : indiquez l’adresse ip d’un serveur syslog
  • Syslog level : niveau de détail des messages syslog
  • UDP port : port de communication entre les ESP. 514 est réservé pour syslog
  • Enable Serial port : active ou désactive la sortie des messages sur le port série
  • Serial log Level : niveau de détail des messages sur le port série
  • Web log Level : idem pour ole journal de l’interface web (bouton Log dans Tools)
    • 0 : aucun log
    • 1 : uniquement les erreurs
    • 2 : erreur + info
    • 3 : erreur + info + debug
    • 4 : erreur + info + debug détaillé
  • Baud Rate : baud rate du port série
  • WD I2C Address : adresse I2C du watchdog
  • Custom CSS : permet de personnaliser la présentation de l’interface Web. Le fichier doit s’appeler esp.css et ne pas dépasser 4 ko. Pour le télécharger, il faut aller dans Tools / Settings / Load
  • Connection Failure Threshold : non documentée mais doit être le nombre d’échec de connexion au réseau WiFi afin d’éviter de vider la batterie. A confirmer.
  • Rules : active l’affichage et l’execution des règles.

Wifi

  • Connect : permet de se connecter au réseau WiFi configuré
  • Disconnect : déconnecte le module de réseau jusqu’au prochain reset/démarrage
  • Scan : scan le réseau Wifi

Interfaces

Très pratique, un scanner d’interface I2C qui liste tous les modules reliés à l’ESP. Par exemple ici, un baromètre numérique BMP180.

Settings

Permet de sauvegarder la configuration. Le fichier config.txt est télécharger sur votre ordinateur.

Permet de charger une configuration. Deux fichiers sont reconnus :

  • config.txt qui contient tous les paramètres du modules à l’exception des données de sécurité (Clé WPA, mot de passe). Vous pouvez échanger ce fichier sans risque. C’est utile pour faire une sauvegarde ou cloner votre projet.
  • esp.css : permet de personnaliser l’affichage de l’interface Le fichier ne doit pas dépasser 4ko.

Firmware

Permet d’installer sans fil un nouveau firmware. C’est le fichier bin qui se trouve dans le répertoire du firmware. On peut également fabriquer son propre firmware à partir du code source depuis l’IDE Arduino (instructions en anglais ici).

Command

ESP Easy met à notre disposition 35 commandes qui permettent de faire des tests, des opérations de maintenance, etc, directement depuis l’interface WEB. La liste complète des commandes est disponible ici en anglais. On peut même envoyer une commande depuis un ESP vers un autre ESP. Par exemple commander un relai branché sur le GPIO 5. Dans le champ command, saisissez

sendto 2,gpio,5,1

Sur le second ESP, le relai s’active et le log retrace l’historique des ordres.

Pour désactiver le relai, envoyez

sendto 2,gpio,5,1

Pour en savoir plus sur le système de règles, lisez ce tutoriel.

Protocoles domotiques supportés

ESP Easy prend en charge plusieurs protocoles domotiques, ce qui vous permettre d’intégrer très facilement de petits objets connectés DIY à votre logiciel préféré ou service en ligne.

Logiciels domotiques supportés nativement

Si vous optez pour MQTT, il est important d’attribuer un numéro (Unit nr) à chaque ESP. De cette façon les messages (commandes) seront correctement envoyés au noeud destinataire.

Domoticz : HTTP ou MQTT

Les protocoles HTTP et MQTT sont supportés. Pour le protocole HTTP, il suffit d’indiquer l’adresse ip du serveur Domoticz et le port (par défaut 8080). Il est possible d’envoyer et recevoir des commandes avec le protocole HTTP.

MQTT ne peut qu’envoyer des données vers Domoticz pour le moment.

OpenHAB : MQTT

OpenHAB n’a pas de broker MQTT installé par défaut. Vous pouvez suivre cet article qui explique comment faire en détail. C’est le protocole le mieux adapté si vous voulez communiquer avec Node-RED par exemple (un exemple d’application).

PiDome : MQTT

PiDome est encore un projet très jeune. Il peut encore y avoir des dysfonctionnements.

Services en ligne : EmonCMS, ThingSpeak

Les services en ligne EmonCMS (suivi de consommation énergétique) et ThingSpeaks (acquisition de données pour objets connectés) sont nativement supportés par ES Easy. Vous devez posséder une clé (API-KEY) après inscription gratuite au service. Attention à limiter le délai d’envoi des messages à 15000 (Tools / Advanced) pour ThingSpeak.

HTTP Générique et UDP Générique

Si votre logiciel ou service en ligne préféré n’est pas dans la liste, ces deux protocoles permettent de communiquer de façon générique en HTTP ou UDP. Le protocole HTTP Generic est toutefois limité à l’envoi de données (le protocole ne fonctionne pas en réception) pour les types suivants uniquement SENSOR_TYPE_DIMMER, SENSOR_TYPE_LONG, SENSOR_TYPE_DUAL, SENSOR_TYPE_TRIPLE. L’emploi de ce protocole est par conséquent encore très limité. Je vous conseille plutôt de vous rabattre sur MQTT.

C’est le protocole que vous pourrez utiliser pour communiquer avec Jeedom. Lisez cet article qui explique comment créer un affichage déporté à l’aide d’un écran OLED pour afficher la prévision météo par exemple.

Les autres logiciels domotiques

Ce n’est pas parce qu’il ne sont pas dans la liste (Jeedom, Home Assistant…) que l’on ne peut pas communiquer avec ESP Easy. Vous pouvez par exemple partir sur une base Domoticz MQTT et personnaliser les topics MQTT dans la page Tools / Advanced.

Par exemple pour Home Assistant, j’ai trouvé cet configuration sur le forum du projet.

- platform: mqtt
  name: "Switch"
  state_topic: "WemosD1/gpio/5/state"
  command_topic: "WemosD1/gpio/5/set"
  payload_on: "1.0"
  payload_off: "0.0"
  optimistic: true
  qos: 0
  retain: true
  value_template: '{{ value.x }}'

Configurer un Device

Maintenant que vous connaissez une grande partie des fonctionnalités d’ESP Easy, nous allons pouvoir configurer un device. Allez sur la page Device. Il est possible de configurer jusqu’à 12 devices. Ils sont regroupés par 4. On passe d’une page à l’autre à l’aide des flèches bleues.

Si vous trouvez que 12 devices ce n’est pas assez, vous pouvez optez pour des capteurs ou actionneurs au standard I2C.

Pour ce tutoriel, nous allons récupérer la mesure de température et de pression atmosphérique renvoyée par un BMP180. Le BMP180 communique avec l’ESP8266 via le protocole I2C. Par défaut, la broche SDA doit être reliée au GPIO-4 (D6 sur la Wemos D1 Mini) et la broche SCL au GPIO-5 (D7 sur la Wemos). Allez dans Tools puis scanner le bus I2C pour trouver l’adresse du capteur. Dans mon cas il se trouve à l’adresse 0x77.

Cliquez sur Edit dans la première case.

Dans la liste des Device, choisissez Temperature & Pressure – BMP085. Il y a (presque) toujours une aide en ligne pour le matériel sélectionné. Ensuite :

  • Donnez un nom. Un nom sans espace de préférence (sera nécessaire dans les Rules)
  • Un délai de relevé de mesure. Attention, plus il sera faible plus la consommation sera importante. Pensez à votre batterie.
  • IDX / Var : c’est l’identifiant du dispositif Domoticz. Même si vous n’utilisez pas Domoticz, attribuez un numéro sinon rien ne fonctionnera.
  • Send Data : active ou désactive l’envoi des données
  • Donnez un nom aux values. Un nom court sans espace (sera nécessaire dans les Rules).
  • Cliquez sur Submit pour enregistrer la configuration

Il est possible de réaliser des calculs (Formula) sommaires (par exemple une conversion d’unité) pour chaque valeur retournée par le capteur. La variable contenant la valeur à manipuler doit être encadrée par %. Attention toutefois, on est limité aux opérateurs simples (+ ; – ; / ; – ) et il n’est pas possible de récupérer la valeur d’un champ pour l’utiliser dans un autre.

Retournez sur la page des Devices (Close). Vous devriez avoir vos premières mesures. Actualisez la page si ce n’est pas le cas. Si rien ne s’affiche, vérifiez que l’IDX est différent de 0.

Voilà, créer un baromètre numérique et envoyer les mesures en ligne ou sur un serveur domotique, c’est aussi simple que ça !

Matériels pris en charge par ESPEasy

Voici un aperçu des actionneurs et capteurs supporté par la version R120 (sans plugin additionnel).

Tous les shields compatibles avec la LoLin d1 Mini

Attention. Caractéristiques techniques indicatives. Vérifier les caractéristiques de votre matériel avant utilisation.

Capteurs, entrées analogiques ou numériques

Compteur de pulsation
Capteur de température

  • Dallas DS18B20 : existe en version étanche de -55°C à +125°C
  • MLX90614 : mesure de température par infrarouge sans contact de -40 à +125°C
Baromètre numérique

  • BMP085/BMP180  : température de -40 à + 85°C, pression atmosphérique de 300 à 1100hPa
  • BME280 : température de -40 à + 85°C, humidité de 0 à 100%, pression atmosphérique de 300 à 1100 hPa
  • BMP280 : température de -40 à + 85°C, pression atmosphérique de 300 à 1100 hPa
  • MS5611
Capteur de luminosité

  • BH1750 : de 0-65535 lux, convertisseur 16 bits.
  • TSL2561 : de 188 μLux jusqu’à 88000 lux
Capteur d’humidité

  RFID

Mesure de distance
Interrupteurs
Entrée analogique de l’ESP8266
Carte analogique externe

Entrées digitales supplémentaires

Récepteur Infra rouge
Poussières

  • GP2Y10 : particules de taille supérieure à 0,8µm. 0.5V pour 0.1mg/m3.
Tension et Intensité

Respectez les caractéristiques de votre capteur avant tout branchement. Vous êtes responsable de toute détérioration de votre matériel. Attention, manipuler du courant électrique est dangereux pour votre santé. Ne faites aucun branchement si vous n’avez pas les compétences

  • INA219 : I2C, 0 à 26V, 3.2A max.

Actionneurs, écrans

Sorties numériques ESP8266 : Led, servo, relais
Sorties numériques supplémentaires

PWM

  • PCA9685 : I2C, 16 canaux 12 bits
Ecrans

Conclusions

ESP Easy est un firmware très puissant et très simple d’utilisation. Si vous débutez (et même si vous ne débutez pas d’ailleurs), on peut se demander pourquoi utiliser son éditeur de code Arduino. Pour de petits objets connectés (sondes, actionneurs…) destinés à de la domotique, ESP Easy fera des merveilles sans effort. L’autre grande force et son interface Web qui permet de tout faire sans devoir disposer d’un accès physique à l’ESP8266 pour le reprogrammer (la mise à jour dans les airs n’est encore si simple). L’autre grande nouveauté de la R120 et la possibilité de créer des règles (Rules) qui vont permettre de créer de petits automates totalement indépendant, quasiment un mini serveur domotique.

ESP Easy est toutefois limité à la liste des capteurs et actionneurs proposés par le firmware. Si votre matériel n’est pas dans la liste, il faudra un peu bricoler…ou modifier le firmware depuis le code source, mais là on s’éloigne du projet facile à mettre en oeuvre !

Tutoriels ESPEasy

Prêt à vous lancer dans le développement de vos propres accessoires domotiques, voici une série de tutoriels et de projets à découvrir sur le blog

Et vous, vous utilisez ESP Easy pour faire quoi ?Poll Options are limited because JavaScript is disabled in your browser.

  • Environnement : température, humidité, baromètre, poussière, lumière, gaz 31%, 190 votes

    190 votes 31%

    190 votes – 31% de tous les votes

  • Piloter : relai, servo-moteur, pompe, électro-vanne… 27%, 167 votes

    167 votes 27%

    167 votes – 27% de tous les votes

  • Mesure : courant, compteur, distance… 9%, 56 votes

    56 votes 9%

    56 votes – 9% de tous les votes

  • Affichage : OLED, LCD, LED 9%, 54 votes

    54 votes 9%

    54 votes – 9% de tous les votes

  • Alarme : mouvement, RFID, contacteur 8%, 46 votes

    46 votes 8%

    46 votes – 8% de tous les votes

  • Plusieurs choses à la fois : température, comptage, commande relais, relevé d’état* 7%, 41 vote

    41 vote 7%

    41 vote – 7% de tous les votes

  • Thermostat 4%, 26 votes

    26 votes 4%

    26 votes – 4% de tous les votes

  • Comment connecter un petit récepteur 433mhz pour sonde XH300 imagintronix, réalisé à l’aide d’un pic12F1822 qui communique via le bus i2c* 1%, 8 votes

    8 votes 1%

    8 votes – 1% de tous les votes

  • RFLiNK* 1%, 7 votes

    7 votes 1%

    7 votes – 1% de tous les votes

  • Notifier : MP3, vibreur 1%, 6 votes

    6 votes 1%

    6 votes – 1% de tous les votes

  • Anémomètre* 1%, 5 votes

    5 votes 1%

    5 votes – 1% de tous les votes

  • Puissance thermique* 0%, 3 votes

    3 votes

    3 votes – 0% de tous les votes

Avez-vous aimé cet article ?