Ayant essayé de flasher le firmware Tasmota avec Esptool sur un module Sonoff Dual R2 mais sans succès, j'ai dû me rabattre sur la compilation avec Arduino IDE. Pour cela, il est nécessaire au préalable d'installer des outils complémentaires pour pouvoir travailler.
Remarque : sous Ubuntu, mon OS, il ne faut pas installer la version Arduino IDE dans les dépôts car elle date de Mathusalem !!! Voir ici : https://doc.ubuntu-fr.org/arduino#depuis_l_archive_du_site_officiel
Source principale (à aller voir régulièrement pour suivre les évolutions au fil du temps) : https://github.com/arendst/Sonoff-Tasmota/wiki/Arduino-IDE
Remarque 1 : Afin d'avoir un Arduino IDE spécialement dédié au flashage des modules Tasmota (avec librairies spécifiques), le mieux est d'installer une version portable (c'est-à-dire "autonome"). Plus d'info ici : https://www.arduino.cc/en/Guide/PortableIDE
Remarque 2 : Esptool peut toutefois être utile pour effacer la mémoire flash du module. En effet, on peut rencontrer des erreurs dans le téléversement du firmware à cause de traces anciennes qui encombrent la mémoire (et qui empêche le flashage par manque de place). Si c'est le cas, cette ligne effacera la mémoire de votre module ESP :
esptool.py --port /dev/ttyUSB0 erase_flash
I- Récupération de la bibliothèque Esp8366 dans Arduino IDE
Il faut aller dans le menu "Fichier" -> "Préférences" et renseigner en bas dans la ligne "URL de gestionnaires de cartes supplémentaires", cette adresse : http://arduino.esp8266.com/stable/package_esp8266com_index.json
.
ATTENTION, vérifiez bien l'adresse ci-dessus car dans des tutoriels un peu anciens, ce n'est pas celle-ci : du coup, la version serait limitée à la 2.3.0_rc2 qui pose problème et fait planter la compilation. Avec cette adresse, j'ai pu récupérer la version 2.4.1.
Maintenant, il faut récupérer les différentes cartes en allant dans le menu "Outils" -> "Type de carte" -> "Gestionnaire de carte" (tout en haut) et là il faut installer le paquet "esp8266 by ESP8266 Community" en y cliquant dessus et en sélectionnant la version voulue :
Remarque : si on installe d'autres versions de ce paquet, alors la compilation ne marchera pas. Il faudra supprimer les répertoires des anciennes versions. Voir ci-contre, l'endroit sous Ubuntu, où sont stockés ces paquets dans le dossier personnel : /home/thierry/.arduino15/packages/esp8266/. Il ne faut garder qu'un dossier : ici le "2.4.1".
II- Récupération des fichiers sources Tasmota
Ensuite, il faut récupérer les fichiers sources de Tasmota à cette adresse https://github.com/arendst/Sonoff-Tasmota/releases dans un fichier compressé "Source code". Il n'y a qu'une seule et même archive pour tous les modules Sonoff, à l'heure de ce tutoriel, il s'agissait de la version 5.12.0l.
On extrait l'archive et à partir de son dossier, il faut copier un certain nombre de fichiers nécessaire pour le programme Arduino. En fonction de la version du paquet des cartes ESP, la manipulation peut différer. Pour la version 2.4.1, il faut remplacer le fichier "/home/utilisateur/.arduino/packages/esp8266/hardware/esp8266/2.4.1/platform.txt" par celui du code source "Sonoff-Tasmota-5.12.0/arduino/version 2.4.0/platform.txt".
Puis il faut rajouter les 11 dossiers de l'archive "Sonoff-Tasmota-5.12.0/lib" dans le dossier des croquis Arduino "/home/utilisateur/Arduino/libraries".
Dernière étape, on copie le dossier "sonoff" contenu dans l'archive du code source vers le répertoire de croquis (sketch) "/home/utilisateur/Arduino/".
III- Personnalisation des paramètres de façon pérenne
Avant de téléverser le firmware, autant personnaliser les paramètres basiques comme la liaison au réseau wifi (afin que l'installation soit facilitée), la langue, la localisation, l'heure... Il faut tout d'abord activer cette fonctionnalité dans le fichier "user_config.h" en décommentant cette ligne (en enlevant les signes // en début de ligne) :
#define USE_CONFIG_OVERRIDE // Uncomment to use user_config_override.h file. See README.md
Ensuite, il faut copier le fichier "user_config_override_sample.h" et le renommer "user_config_override.h". Ainsi en cas de mise à jour du firmware, nos réglages ne seront pas écrasés par ceux d'origine. Ensuite, il faut y ajouter les paramètres que l'on veut adapter.
Ce qui donne (valeurs mises à titre d'exemple, à adapter selon votre réseau) :
//Examples : // -- Master parameter control -------------------- #undef CFG_HOLDER #define CFG_HOLDER 0x20161209 // [Reset 1] Change this value to load SECTION1 configuration parameters to flash // -- Setup your own Wifi settings --------------- #undef STA_SSID1 #define STA_SSID1 "SSID_réseau_wifi" // [Ssid1] Wifi SSID #undef STA_PASS1 #define STA_PASS1 "clé_réseau_wifi" // [Password1] Wifi password // -- Setup your own MQTT settings --------------- #undef MQTT_HOST #define MQTT_HOST "IP_serveur_MQTT" // [MqttHost] #undef MQTT_PORT #define MQTT_PORT 1883 // [MqttPort] MQTT port (10123 on CloudMQTT) #undef MQTT_USER #define MQTT_USER "login_MQTT" // [MqttUser] Optional user #undef MQTT_PASS #define MQTT_PASS "Mot_de_passe_MQTT" // [MqttPassword] Optional password // You might even pass some parameters from the command line ---------------------------- // Ie: export PLATFORMIO_BUILD_FLAGS='-DUSE_CONFIG_OVERRIDE -DMY_IP="192.168.1.99" -DMY_GW="192.168.1.1" -DMY_DNS="192.168.1.1"' #ifdef MY_IP #undef WIFI_IP_ADDRESS #define WIFI_IP_ADDRESS "IP_Module" // Set to 0.0.0.0 for using DHCP or IP address #endif #ifdef MY_GW #undef WIFI_GATEWAY #define WIFI_GATEWAY "192.168.0.254" // if not using DHCP set Gateway IP address #endif #ifdef MY_DNS #undef WIFI_DNS #define WIFI_DNS "192.168.0.254" // If not using DHCP set DNS IP address (might be equal to WIFI_GATEWAY) #endif // -- Location ------------------------------------ #define LATITUDE 43.1441 // [Latitude] Your location to be used with sunrise and sunset #define LONGITUDE 3.1956 // [Longitude] Your location to be used with sunrise and sunset // -- Localization -------------------------------- #define MY_LANGUAGE fr-FR // French in France // -- Application --------------------------------- #define APP_TIMEZONE 99 // [Timezone] +1 hour (Amsterdam) (-13 .. 14 = hours from UTC, 99 = use TIME_DST/TIME_STD) #endif // _USER_CONFIG_OVERRIDE_H_
IV- Branchements pour le flashage
Attention, il ne faut pas brancher au 220V !!!
Il faut un module convertisseur FT232RL 3.3V 5V FTDI USB vers TTL (https://www.ebay.fr/itm/122918760389). Et on n'oublie pas de mettre le cavalier sur 3.3V (au lieu de 5V) car les modules ESP fonctionnent en 3,3V !!!
On branche les VCC et GND entre-eux et les Rx avec les Tx (pour faciliter les branchements, j'ai soudé 4 broches mâles sur le Sonoff).
Pour flasher le firmware, il faut ponter les broches GND et Button 0 avant le démarrage (avant de se connecter à l'USB de l'ordinateur).
V- Compilation et téléversement dans Arduino IDE
On peut alors brancher le Sonoff Dual R2 à son ordinateur via le module convertisseur FT232RL 3.3V 5V FTDI USB vers TTL et on ouvre l'Arduino IDE.
On va dans le menu "Fichier" -> "Carnet de croquis" -> "sonoff" pour récupérer le firmware Tasmota à compiler.
Ensuite, il faut régler les options de téléversement dans "Outils" :
Type de carte: "Generic ESP8266 Module"
Flash Mode: "DOUT"
Flash Size: "1M (no SPIFFS)"
Debug port: "Disabled"
Debug Level: "Rien"
lwIP Variant: "v2 Lower Memory"
Reset Method: "nodemcu"
Crystal Frequency: "26 Mhz"
Flash Frequency: "40Mhz"
CPU Frequency: "80 Mhz"
Builtin Led: "2"
Upload Speed: "115200"
Erase Flash: "Only Sketch"
Port: "/dev/ttyUSB0" (peut varier en /dev/ttyUSB1)
Il ne reste plus qu'à compiler et téléverser dans le Sonoff.
À l'issue du processus, on peut déconnecter le Sonoff et le brancher sur le secteur en 220V via les entrées "L-IN" (la phase) et "N" (le neutre). On se connecte via son navigateur, sur l'adresse IP fixée dans le fichier "user_config.h" évoqué ci-dessus (WIFI_IP_ADDRESS "192.168.0.27") et on arrive sur la page de configuration Sonoff.
C'est terminé... Enfin, il reste maintenant à le configurer... et à l'intégrer (ou pas) dans un serveur domotique comme Jeedom. Mais ça c'est une autre histoire.