Accueil / esp8266 / ESP Easy / ESP Easy: objets connectés et domotique ESP8266 sans programmation

ESP Easy: objets connectés et domotique ESP8266 sans programmation

ESP Easy est un firmware Open Source qui permet de programmer les modules ESP8266 sans aucune ligne de code (page officielle du projet). ESP Easy à beaucoup évolué depuis la version 78 que j’avais utilisé dans mon précédent article qui expliquait comment réaliser un objet connecté à base à l’aide d’ESP Easy et le connecter à Jeedom. ESPEasy peut s’installer directement depuis l’IDE Arduino à partir du code source ou à l’aide d’un petit programme (uniquement disponible sous Windows). 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 !

Pour cet article, j’ai utilisé la version R120 du firmware ainsi qu’une Wemos D1 Mini (article de présentation).

Installation du firmware ESPEasy sur un module ESP8266

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

 espeasy page telechargement firmware

Une fois décompresse, 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

liste fichiers est easy

En fonction du module ESP8266 sur lequel vous allez installer ESP Easy, voici la taille de la mémoire disponible

512Ko esp8266 esp-01 module Wifi ESP-01 (bleu)

ESP-201

ESP-12

1024Ko esp8266 esp-01 black noir 1Mo flash ESP-01 (noir)
4096Ko esp8266 Wemos D1 mini ESP-12E qui équipent les cartes NodeMCU ou Wemos D1 Mini par exemple

Installation du firmware à l’aide du programme flash.exe

Un fois que vous avez récupéré le port COM sur lequel est branché l’ESP8266, la taille de la mémoire, lancez flash.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

espeasy flashtool paramètres

Validez pour lancer l’installation.

espeasy installation firmware terminee

Premier démarrage d’ESP Easy : configuration 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 WiFi. Ouvrez le gestionnaire de connexions WiFi et sélectionnez le réseau ESP_0.

espeasy 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.

espeasy configuration wifi

Appuyez ensuite sur Connect.

espeasy connexion module au reseau

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.

espeasy adresse ip esp8266

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)

espeasy main page

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

espeasy node list

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.

espeasy main settings

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)

espeasy adresse ip fixe module

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)

espeasy hardware settings

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.

espeasy advanced tool page

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.

espeasy i2c scanner

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

espeasy advanced tools send command

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

espeasy log second esp reception message

Pour désactiver le relai, envoyez

sendto 2,gpio,5,1

Dans un prochain article nous verrons comment créer des règles.

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.

easy-config-domoticz-http

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

easy-config-domoticz-mqtt

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.

easy-config-openhab-mqtt

PiDome : MQTT

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

easy-config-pidome-mqttServices 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.

easy-config-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.

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.

esp-easy-change-page-device

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.

espeasy i2c scanner

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. Aattention, 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

Le BMP180 est le remplaçant du BMP085. Son fonctionnement est identique.

esp-easy-configuration-bmp085-bmp180

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.

espeasy liste device bmp180

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

Dans la version R120, ESPEasy prend en charge les matériels suivants.

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

Capteurs, entrées analogiques ou numériques

tcr5000 Compteur de pulsation

  • TCR5000
dallas-ds18b20 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
BMP180 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
bh1750 Luminosité

  • BH1750 : de 0-65535 lux, convertisseur 16 bits.
  • TSL2561 : de 188 μLux jusqu’à 88000 lux
Broches DHT22 Humidité

  • DHT11 (0 à 50°C) ou DHT22 (-40°C à 80°C)
  • SI7021
  • SHT1X
 pn532 RFID

  • Wiegand
  • PN532 : cartes RFID Mifare 1k, 4k, DesFire…
hc-sr04 Distance

bouton-poussoir Interrupteurs
Entrée analogique de l’ESP8266
ads1115 Carte analogique externe

mcp23017 Entrées digitales supplémentaires

ir keyes ky-022 Récepteur Infra rouge
gp2y10 Poussières

  • GP2Y10 : particules de taille supérieure à 0,8µm. 0.5V pour 0.1mg/m3.
ina219 Tension et Intensité (attention à respecter les caractéristiques de votre capteur avant tout branchement)

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

Actionneurs, écrans

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

pca9685 PWM

  • PCA9685 : I2C, 16 canaux 12 bits
oled ssd1306 ecran i2c 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. Nous en reparlerons dans un prochain article avec un exemple concret.

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 !