Afin de se faire une installation domotique aux petits oignons, il est possible d'utiliser des solutions à base d'ESP8266 ou ESP32 permettant de communiquer via Wifi (et même en Bluetooth Low Energy ou BLE pour les ESP32). On pourra ainsi les intégrer "facilement" dans une solution domotique comme Jeedom.
Vous trouverez ici : https://projetsdiy.fr/quelle-technologie-sans-fil-objets-connectes-diy/ un récapitulatif des différentes technologies avec leurs avantages et inconvénients.

Wemos Lolin32 lite cloneL'avantage de cette solution est de pouvoir les programmer assez facilement via ESP Easy : https://projetsdiy.fr/esp-easy-objet-connecte-domotique-esp8266/.

Édit du 22/06/2022 : Il est aussi possible d'y flasher facilement le firmware Tasmota sous Ubuntu à l'aide du navigateur Google Chrome ! Voir cette page : [Tasmota] Flasher un module ESP 32 Lolin32 Lite

https://www.letscontrolit.com/wiki/index.php/ESPEasy

Pour l'instant seul le module Wemos Lolin32 Lite à base d'ESP32 est utilisable avec ESP Easy : https://www.letscontrolit.com/wiki/index.php/ESPEasy32

I- Clone du Wemos Lolin32 Lite

J'ai commandé 2 modules (https://fr.aliexpress.com/item/WEMOS-LOLIN32-Lite-V1-0-0-Wifi-Bluetooth-Conseil-de-D-veloppement-Antenne-ESP-32-ESP32/32843053744.html) qui ne sont pas des Wemos originaux (pas de sérigraphie officielle). La commande "lsusb" retourne :

Bus 002 Device 020: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter

Arduino IDE retourne comme informations sur ce module, BN: Carte inconnue, VID: 1A86, PID: 7523

Ce sont donc ce qu'on appelle des clones. Le problème c'est que parfois les clones ne répondent pas de la même façon que les originaux. On verra bien...

II- Installation du driver Wemos Lolin32 Lite sous Ubuntu 16.04 (probablement inutile)

Lorsque j'ai voulu en brancher 1 sous USB, il n'a pas été reconnu. Il a donc fallu trouver les pilotes mais ça n'a pas été évident car le pilote initial bugguait (CH341_SER_Linux). Heureusement, une variante pour contourner ce problème a été proposée ici : https://github.com/juliagoda/CH341SER. Faute à un mauvais câble USB !!!

Panneau Danger1 ATTENTION, le type de câble USB que vous utilisez est essentiel : il doit être entièrement câblé ! En effet, nous avons autour de nous de nombreux câbles USB qui ne servent qu'à recharger ou à alimenter un appareil électronique (cas des smartphones). Or ces câbles sont incomplets car ils ne peuvent véhiculer qu'un courant électrique mais pas les signaux permettant d'échanger des données. Ces câbles sont donc inutilisables pour programmer un module ESP. De façon pragmatique, on reconnaît, en général, les câbles USB complets à leur plus gros diamètre. On peut aussi s'en servir pour échanger des données entre son smartphone et son PC : si on ne peut pas, c'est que le câble n'est pas bon.

Donc, l'installation de pilotes sous Ubuntu 16.04 est inutile. En testant sur un autre ordinateur, le module a été reconnu directement avec le bon câble USB.

III- Installation des modules ESP pour Arduino IDE

Tout d'abord, il ne faut pas utiliser le programme "Arduino IDE" que l'on trouve dans les dépôts officiels Ubuntu car il s'agit d'une très vieille version. Il faut l'installer en récupérant l'archive directement chez Arduino. Voir ici (en anglais) comment faire : https://www.arduino.cc/en/Guide/Linux

Une fois Arduino IDE installé, il faut récupérer les types de cartes ESP32 en suivant ces tutoriels :

Remarque : Attention dans l'IDE Arduino, il faut récupérer des cartes ESP32 à cette adresse pour avoir les dernières moutures (sinon on est bloqué à la version 2.3.0_rc2 qui pose problème) : http://arduino.esp8266.com/stable/package_esp8266com_index.json

IV- Téléverser un programme via Arduino IDE

Après avoir installé les modules ESP sous Arduino, j'ai choisi comme modèle dans la catégorie ESP32 Arduino, la carte "WEMOS LOLIN32" et une vitesse de transfert (upload speed) de 115200 (au lieu des 921600) pour ne pas avoir des erreurs.

ESP32 Arduino réglage carte
Source : https://diyprojects.io/programming-esp32-board-arduino-ide-macos-windows-linux-arm-raspberrypi-orangepi/

V- ÉCHEC : Installer ESP Easy sur son ESP32 via Arduino IDE

Tutoriel très complet (en anglais) : https://www.letscontrolit.com/wiki/index.php/Tutorial_Arduino_Firmware_Upload

PROBLÈME : ça ne fonctionne pas à cause de la version des fichiers (pour faire court). Du coup, j'ai essayé la méthode recommandée qui est d'utiliser PlatformIO

VI- ÉCHEC : Installer ESP Easy sur son ESP32 via PlatformIO

Tutoriel très complet (en anglais) : https://www.letscontrolit.com/wiki/index.php/Tutorial_Install_Platformio

Télécharger le paquet .deb du programme ici : https://atom.io/

PROBLÈME : ça ne fonctionne pas non plus !

VII- Installer MicroPython avec Esptool

Suite à mes tentatives de flashages avortés d'ESPEasy, j'ai téléversé MicroPython via Arduino IDE (source : https://projetsdiy.fr/deballage-wemos-esp32-lolin32-lite-test-firmware-micropython-raspberry-pi3/).

Mais avant ça, il faut installer l'outil Esptool avec la commande "pip" (source : https://github.com/espressif/esptool) :

sudo pip install esptool

 Ensuite, pour installer micropython, il faut aller sur ce site http://micropython.org/download#esp32 et récupérer le dernier firmware. Puis taper (en adaptant le port /dev/ttyUSB1 et le nom du firmware.bin) :

esptool.py --chip esp32 --port /dev/ttyUSB1 write_flash -z 0x1000 firmware.bin

VIII- Installer ESPEasy avec Esptool

Après avoir réussi à installer MicroPython, j'ai suivi la même procédure pour installer ESPEasy avec Esptool en me servant de ce site : https://projetsdiy.fr/firmware-esp-easy-mega-esp32-test-wemos-lolin32-lite-nouveautes/.

Pour cela, il faut récupérer le firmware ici : http://www.letscontrolit.com/downloads/ESPEasy32_R20000.zip et le décompresser. Dans ce dossier, on ouvre un terminal (via menu contextuel avec clic droit) et on tape cette commande :

sudo esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 115200 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size detect 0xe000 boot_app0.bin 0x1000 bootloader.bin 0x10000 ESPEasy32_R20000.bin 0x8000 ESPEasy.ino.partitions.bin

Si tout se passe bien, vous devriez voir apparaître un nouvel appareil wifi intitulé "ESP_EASY_0". C'est réussi, il ne vous reste plus qu'à configurer votre module ESP !!!

Remarque : avec le firmware ESPEasy_R20000, il y avait des problèmes d'instabilité notamment pour la configuration du module. Du coup, j'ai installé la dernière version http://www.letscontrolit.com/downloads/ESPEasy32_R20100.zip qui semble plus stable. Donc en me plaçant dans le dossier contenant cette archive décompressée, j'ai lancé la commande :

sudo esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 115200 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size detect 0xe000 boot_app0.bin 0x1000 bootloader.bin 0x10000 ESPEasy32_R20100.bin 0x8000 ESPEasy.ino.partitions.bin

 

Remarque : Il peut être nécessaire d'effacer complètement le firmware (vider la mémoire flash) afin de ne pas garder des restes de configuration. Pour cela, il faut taper cette commande :

esptool.py --port /dev/ttyUSB0 erase_flash

 

IX- Configuration du module sous ESPEasy

Après l'installation du firmware, il faut configurer le module ESP qui se trouve en mode point d'accès. Pour cela, il faut se connecter en wifi sur le réseau intitulé ESP_EASY_0 et, si ça ne se fait pas automatiquement, dans son navigateur se connecter à l'adresse 192.168.4.1 afin de lui indiquer le réseau wifi que nous utilisons habituellement.
Pour avoir le dernier firmware ESPEasy, aller ici : https://github.com/letscontrolit/ESPEasy/releases