Lo Furòl

... de l'ouverture (en occitan)

Vous êtes ici : Accueil / Électronique / Domotique / [Sonoff] Flasher le firmware Tasmota sous Arduino IDE

Domotique

[Sonoff] Flasher le firmware Tasmota sous Arduino IDE

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 : https://github.com/arendst/Sonoff-Tasmota/wiki/Arduino-IDE

Remarque : 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.

Arduino IDE modules ESP

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.

Arduino IDE modules ESP 2

 

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 :

Arduino IDE modules ESP 3

 

 

 

 

 

 

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_

 

Sonoff Dual Flash

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

Arduino IDE Tasmota

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.

Vous êtes ici : Accueil / Électronique / Domotique / [Sonoff] Flasher le firmware Tasmota sous Arduino IDE