#Hack : module Sonoff 4CH pro, compiler le firmware Espurna (Partie 2)

Dans le tutoriel précédent, nous avons vu comment hacker le Sonoff 4CH Pro en installant une image pré-compilée du firmware Open Source Espurna. C’est la méthode la plus simple et la plus rapide. Xose Pérez, l’auteur du firmware prépare les images à chaque mise à jour pour les cartes supportés en créant des combinaisons (DHT, OTA, DS12B20…). Le firmware Espurna permet de hacker de nombreux produits construits autour des modules ESP8285 ou ESP8266 d’Espressif. La plupart des produits commercialisés sont des modules de commande pour relais. Il reste encore plusieurs GPIO disponibles sur le module ce qui permet d’ajouter des capteurs. Dans ce tutoriel, nous allons voir comment personnaliser le firmware pour le Sonoff 4CH Pro . Nous allons lui ajouter une sonde DHT11 sur le GPIO2 puis compiler le code source à l’aide de PlatformIO fonctionnant sur l’éditeur Visual Studio Code de Microsoft. 

Préparer l’environnement de développement : Visual Studio Code, Plugin PlatformIO, esptool.py

Pour hacker le Sonoff 4CH pro, nous aurons besoin d’installer quelques outils

  • esptool.py, le script livré avec le SDK d’Espressif va nous permettre de sauvegarder le firmware d’origine (pour éventuellement le ré-installer), effacer la mémoire et installer le nouveau firmware. Suivez ce tutoriel pour l’installation sur Windows et celui-ci pour macOS.
  • Visual Studio Code (que je trouve plus légers et plus stable* qu’Atom avec PlatformIO) et le plugin PlatformIO (suivez ce tutoriel pour l’installation)

(*) chacun est libre de choisir.

Préparation du Sonoff 4CH Pro

Suivez les étapes de ce tutoriel pour ajouter un connecteur permettant de flasher l’ESP8285 à l’aide d’un câble FTDI.

Respectez les consignes de sécurité indiquées dans le présent tutoriel et celui-ci. Ne faites aucune modification des modules lorsqu’ils sont sous tension ! Toutes les modifications techniques ou logicielles apportées sont réalisées sous votre entière responsabilité. Projets DIY ne pourra pas être tenu pour responsable en cas d’accident, blessure ou détérioration de matériel.

Trouver le port COM du Sonoff 4CH Pro

Mettez le module en flash mode (en reliant le GPIO0 à une broche GND à la mise sous tension).

Sur Windows, branchez le câble FTDI. Attendez que le drivers s’installe si c’est la première fois. Ouvrez PowerShell et exécutez la commande mode. Le port COM sur lequel est branché le Sonoff est listé. Si ce n’est pas le cas, allez dans le panneau de configuration pour vérifier que le drivers de votre câble FTDI est correctement installé

Sur macOS ou Linux, ouvrez le Terminal et exécutez la commande ls /dev/tty.usb* . En retour vous devriez avoir le port COM sous la forme

Ajouter un capteur DHT11/DHT22 au Sonoff 4CH Pro

Sur le Sonoff 4CH Pro, il reste 3 GPIO disponibles (SDA du GPIO2, RX et TX). Par chance, toutes les broches sont disponibles sur le connecteur du port série ! Pour alimenter vos capteurs, vous disposez également d’un connecteur en soudant 2 hearders (GND, 3V3) à coté du connecteur situé à coté de la bobine. Il ne reste plus qu’à brancher un DHT11 ou un DHT22 (3V3, GND). Ici, j’ai branché la broche sur le connecteur SDA (GPIO2).

Pour les autres modules Sonoff (ou les autres), voici le repérage des broches de l’ESP8285 et ESP8266.

esp8285 pinout itead sonoff

Source : https://github.com/arendst/Sonoff-Tasmota/issues/495

esp8266 pinout

Source : https://nettigo.eu/products/esp-8266-12-wifi-module-with-9-gpio–2

Sauvegarder  le firmware d’origine et effacer la mémoire

Depuis PowerShell ou le Terminal, exécutez la commande suivante en remplaçant le port COM de votre carte pour sauvegarder le firmware d’origine sur votre ordinateur

Le dump (la copie) de la mémoire flash est enregistré dans le fichier image1M.bin dans le répertoire d’exécution du script esptool.py.

Maintenant, exécutez cette commande pour effacer totalement l’ancien firmware de la mémoire flash de l’ESP8285. Modifiez le port COM avant d’exécuter la commande.

Pour restaurer l’ancien firmware, exécutez cette commande en modifiant le port COM.

Attention. L’ESP8285 doit être en flash mode pour pouvoir effectuer les opérations décrites ici. Il faut remettre le module en flash mode après chaque exécution d’une commande esptool.

Tout est prêt.

Récupérer le code source du projet Espurna

Allez sur le site du projet puis sur la page Download (téléchargement) puis sur l’onglet Branches. Cliquez sur Zip (par exemple) en face de la branche Master (ou dev si vous aimez essuyer les plâtres :-)). Décompressez le fichier ZIP.

Lancez Visual Studio Code. La fenêtre de PlatformIO (PIO Home) s’affiche à l’ouverture de l’éditeur. Ouvrez le projet Espurna en cliquant sur Open Project. Il faut pointer vers la racine du projet. Actuellement, c’est le dossier code. C’est le dossier qui contient le fichier de configuration platformio.ini.

Ouvrez le fichier platformio.ini. Il contient différentes configurations déjà prêtent à l’emploi. On dispose de “clés” pour indiquer au compilateur comment construire le firmware :

  • -DDHT_SUPPORT : ajoute le support les capteurs DHT11 et DHT22
  • -DRF_SUPPORT : support pour le récepteur RF
  • -DALEXA_SUPPORT qui permet de mimer un appareil domotique Belkin WeMo facile à piloter avec l’Amazon Echo Dot
  • -DHLW8012_SUPPORT permet de prendre en charge le circuit de mesure de courant HLW8012 utilisé par le Sonoff POW par exemple
  • -DEMON_SUPPORT permet d’intégrer un capteur de mesure de courant tel que le SCT-013-010.
  • -DAI_THINKER pour piloter les ampoules connectées RGB AI-Thinker que l’on trouve sur AliExpress par exemple.
  • -DNOFUSS_SUPPORT qui permet de faire des mises à jour automatiques depuis un serveur NoFUSS.

Recherchez la chaine 4ch-pro et ajoutez ce bloc qui permet d’indiquer au compilateur d’ajouter la librairie DHT.

On va maintenant devoir indiquer la broche sur laquelle est connecté le capteur ainsi que le type utilisé (par exemple DHT11). Allez dans le dossier config et ouvrez le fichier sensors.h. Dans le bloc DHTXX, la clé DHT_PIN permet d’indiquer la broche sur laquelle le capteur est connecté. Ici, il est sur la broche 2 (GPIO2, repérée SDA sur le connecteur série) de l’ESP8285. On dispose d’autres paramètres, dont voici  :

  • DHT_UPDATE_INTERVAL : l’intervalle de mesure. Par défaut 60000ms
  • DHT_TYPE : le type de DHT utilisé (DHT11, DHT21, DHT22)
  • On peut spécifier les Topics (n’utilisez pas de caractères accentués)

Enregistrez les modifications des 2 fichiers. Tout est prêt pour la compilation.

espurna firmware platformio sensor dht11 dht22 settings

Compiler le firmware Espurna modifié

On va commencer par démarrer l’outil en ligne de commande (CLI) de PlatformIO. Cliquez sur la petite icône dans la barre d’outil située dans le coin inférieur gauche de Visual Studio Code.

 

visual studio code platformio power shell terminal

Xose préconise de commencer par mettre à jour les librairies avant de compiler

Les librairies étant maintenant à jour, on peut compiler le firmware. C’est là qu’intervient la magie de PlatformIO. On indique la cible à compiler à l’aide de la commande pio run -e  suivi du nom de la configuration. Ici itead-sonoff-4ch-pro-dht22. Après quelques dizaines de secondes de travail, le binaire est prêt.

Juste pour info, le fichier a été enregistré dans le dossier masqué .pioenvs.

Comme tout s’est bien déroulé et qu’aucune erreur n’a été renvoyée, il est temps de flasher l’ESP8285. Mettez le module en flash mode puis exécutez la commande suivante pour lancer le téléchargement (le firmware est de nouveau compilé).

C’est terminé. Suivez les étapes de configuration indiquées dans le tutoriel précédent.

Remarque. La configuration (WiFi, MQTT, Domoticz…) n’est pas effacée par le téléchargement d’un nouveau firmware. Pour effacer totalement la mémoire, il faut utiliser la commande esptool.py --port PORT_COM erase_flash 

Intégration de la sonde DHT11/DHT22 branchée au Sonoff 4CH pro à Domoticz

Allez sur Domoticz et créez deux nouveaux instruments virtuels. Le premier pour la température, le second pour l’humidité.

domoticz dht11 device sonoff ch pro

Allez à l’onglet Domoticz depuis l’interface d’administration du firmware Espurna. Vous avez maintenant deux nouveaux IDX à indiquer pour la température et l’humidité. Petit regret par rapport à Tasmota qui est capable de regrouper les mesures dans un seul capteur virtuel (peut être dans la v2…). Enregistrez la modification avec Update. Attendez une minute (ou la durée configurée dans le fichier sensors.h pour que les premières mesures s’affichent sur Domoticz.

 

domoticz sonoff 4ch dht11 espurna

Voilà, vous pouvez maintenant ajouter des capteurs à vos modules Sonoff. L’intégration est vraiment très rapide et efficace avec le firmware Espurna. On perd le système de Rules d’ESP Easy mais on gagne en simplicité de mise en oeuvre.

Le tableau suivant récapitule les principales spécifications des commutateurs WiFi Itead Swich Smart Home Sonoff

Caractéristiques techniques indicatives susceptibles d’être modifiées par les fabricants à tout moment sans préavis. Les modules non certifiés CE/FC sont réservés au marché chinois.
  • Modèle
  • Alimentation
  • Relais
  • WiFi
  • 433MHz ou GPRS
  • Mesure (l'achat d'une sonde séparée peut être nécessaire)
  • Puissance max.
  • Certifié CE/FC
  • Compatible (avec firmware d'origine)
  • Meilleur prix

Inscrivez-vous à la newsletter hebdomadaire

Aucun spam et aucun autre usage ne sera fait de votre email. Vous pouvez vous désinscrire à tout moment.