Hack du Sonoff 4CH Pro avec le firmware MQTT Tasmota, inclusion dans Domoticz • Domotique et objets connectés à faire soi-même

Il est très facile d’installer sur l’ESP8285 le firmware alternatif Tasmota développé par Theo Arends pour hacker le module domotique d’ Itead Sonoff 4CH Pro. Ce boitier de commande que l’on pourra installer dans une armoire sur un rail DIN permet de piloter en WiFi ou avec une télécommande radio 433MHz jusqu’à 4 relais. 

Article actualisé le 24 avril 2020

Le Sonoff 4CH Pro peut être installé dans une armoire électrique sur un Rail DIN. L’application maison EWeLink développée par Itead, le fabricant des produits Sonoff (boutique officielle), permet de piloter depuis un smartphone ou tablette tous les appareils de la gamme et de créer de petits scénarios. Tout passe par les serveurs d’Itead. Cela permet de pouvoir accéder à ses appareils même en dehors de son domicile dès lors qu’on dispose d’une connexion 3G/4G (ce qui est le cas dans 99% du temps, enfin je l’espère !). Cette solution peut déranger certains utilisateurs. En effet, vous n’avez aucun contrôle sur vos données personnelles. C’est un sujet très sensible actuellement. Le firmware alternatif Open Source Tasmota de Theo Arends permet de résoudre ce problème.

Présentation du firmware Tasmota pour les produits Sonoff/Itead

Le firmware Tasmota est développé et maintenu par Theo Arends (sa page GitHub et son site personnel). Il est conçu sur un principe similaire au firmware Homie. Il ajoute une interface de configuration accessible à l’aide d’un navigateur internet depuis n’importe quel ordinateur, tablette ou smartphone sur le même réseau local. Il utilise ensuite la messagerie MQTT pour communiquer avec un serveur domotique, un serveur en ligne, une application mobile iOS, Android…

Le firmware Tasmota va donc s’abonner à un broker MQTT (lisez cet article pour en savoir plus). On pourra lui envoyer des commandes. Essentiellement “active” ou “désactive” le relais X.

En retour le firmware Tasmota va publier (envoyer des messages) au broker MQTT :

  • Le relais à été activé (ou pas)
  • Il pourra envoyer des mesures :
    • Température, humidité si une sonde est branchée (il existe des broches encore disponibles sur les modules, cool)
    • Energie consommée, pour le module POW

L’avantage de ce firmware, c’est qu’il est totalement dédié aux appareils Sonoff. Comme il est spécialisé, il y a très peu de configuration à faire. Vous pourrez installer le même firmware sur tous vos appareils domotiques Sonoff (si vous êtes fan de la marque évidemment !).

Nous reviendrons plus en détail sur les fonctionnalités proposées dans un prochain article. Passons maintenant à un cas pratique et voyons comment installer ce firmware sur l’ESP8285 qui équipe le Sonoff 4CH Pro.

A lire avant de commencer le Hack

Avertissements concernant les dangers électriques et la garantie

Avant de commencer, il me semble important de rappeler quelques règles de sécurité. Tout d’abord, vous allez modifier un appareil électrique. Ces modifications vont annuler toute garantie du fabricant. D’autre part, ce tutoriel peut s’appliquer à tous les modules Sonoff. A l’exception du 4CH Pro, ils sont alimentés avec une tension de 220V.

Avertissements. Vous devez débrancher l’alimentation électrique ainsi que les relais avant d’ouvrir le boitier et installer un nouveau firmware. Les produits Sonoff sont susceptibles d’être modifiés sans préavis du fabricant. Toutes les étapes indiquées dans ce tutoriel ont été vérifiées. Il se peut que des évolutions techniques empêchent l’installation d’un nouveau firmware. Projets DIY ne pourra pas être tenu pour responsable en cas d’accident, blessure ou détérioration de matériel. Toutes les fonctionnalités proposées par les produits Sonoff peuvent ne pas être prises en charge par les firmware alternatifs. Vérifiez que la fonctionnalité désirée est supportée par le firmware avant de procéder à l’installation. Une procédure de sauvegarde et de restauration est indiquée dans le tutoriel sans aucune garantie de fonctionnement. Fermez le boitier avant de remettre sous tension le module.

Peut-on appliquer ce tutoriel à d’autres appareils Sonoff ?

Oui, la méthode présentée dans ce tutoriel peut s’appliquer à presque toute la gamme. La principale différence réside dans la mise du module en flash mode. Vous trouverez sur le WiKi les procédures à suivre pour les autres modèles de la marque :

De quels logiciels avez-vous besoin ? esptool.py, PlatformIO

Il est possible d’installer le firmware Tasmota depuis la plupart des logiciels de développement :

L’installation depuis l’IDE Arduino n’est pas la méthode la plus simple. Il faut modifier l’IDE par ajouter le support du module ESP8285, installer des librairies… Comme ce tutoriel s’adresse en priorité aux débutants, je vous propose d’opter pour PlatformIO qui s’occupe de tout. Suivez cet article pour installer PlatformIO su votre PC ou Mac. Une fois installé, il sera possible de le mettre à jour Over-The-Air à l’aide du script python SonOTA ou en téléchargeant le firmware directement depuis l’interface de configuration à l’aide d’un navigateur internet.

Enfin, vous aurez besoin d’installer les outils esptool.py du SDK ESP8266 d’Espressif. Suivez ce tutoriel pour macOS (fonctionne aussi pour Linux) et celui-ci pour Windows. Le script esptool.py va permettre sauvegarder l’ancien firmware, et d’effacer la mémoire flash avant d’installer le nouveau.

Préparer le Sonoff 4CH Pro

Comme tous les modèles de la gamme Sonoff, nous allons devoir souder un connecteur sur le circuit. Commencez par ouvrir le module (remarque, il n’y a aucun étiquette d’annulation de garantie, Itead laisse chacun libre de modifier le firmware).

Le connecteur doit être soudé juste à coté du module ESP8285 (en dessous des Led). Ici j’ai opté pour un hearder mâle (plus facile à découper), choisissez en fonction de vos Jumpers. Pour mettre le module en flash mode, il va falloir relier la broche GPIO0 au GND à l’allumage. Je vous conseille d’ajouter un petit connecteur femelle sur une broche GND du circuit. Par exemple sur le connecteur non peuplé situé au dessus du switch S6.

Avant chaque téléchargement du firmware, il faudra relier avec un jumper la broche GPIO0 au GND puis mettre le module sous tension (soit en connectant la broche VCC du câble FTDI, soit avec une alimentation 5-24VDC). Il suffit d’attendre 1 ou 2 secondes avant de relâcher le jumper. Si la Led bleue indique une activité WiFi, c’est que le module n’est pas en flash mode. Il faut recommencer.

C’est prêt !

Brancher le câble FTDI

Le câble FTDI va nous permettre de communiquer avec l’ESP8285/ESP8266 via le port série. Rien de particulier, sauf que les broches sont inversées sur certains modèles. En fonction de votre câble FTDI et du module Sonoff, vous risquez de devoir un peu tâtonner. Pour le tutoriel, j’ai utilisé ce câble Adafruit.

7uy7tayle6eoa9l82poj-9593020

Evidemment, j’ai commencé par brancher le connecteur de mon câble au port série fraichement soudé sur le 4CVH pro. Et là, rien du tout ! Pas de panique, il suffit de trouver le repérage des broches RX et TX sur le câble (google est notre amis) et d’utiliser 3 jumpers (GND, RX, TX) pour faire un branchement manuel. Normalement, on doit inverser les jumpers entre RX et TX mais ce n’est pas le cas sur la plupart des produits Sonoff car il y a une erreur de repérage sur un PCB. Essayez d’abord sans inverser. Si cela ne fonctionne pas, inversez RX/TX.

Ici, j’ai utilisé une alimentation 12V. Pour les autres modules, connectez également la broche VCC du câble FTDI pour alimenter le module. Attention. N’alimentez pas en 220V les modules durant cette opération. C’est dangereux !

Mettre le Sonoff 4CH pro en flash mode

Maintenant, placez le jumper sur la broche GPIO0 de l’ESP8285 et la broche GND. La broche GPIO0 est la seconde broche du module. Mettez sous tension le module à l’aide de l’alimentation 5-24VDC. Aucune Led (la bleue en particulier) ne doit s’allumer. Le module est en flash mode ! Tout est prêt pour installer le nouveau firmware.

Comment trouver le port COM du Sonoff 4CH Pro

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

/dev/tty.usbserial-A1048DR2

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

Ouvrez PowerShell ou un Terminal et exécutez la commande suivante en remplaçant le port COM pour sauvegarder le firmware d’origine sur votre ordinateur.

esptool.py --port PORT_COM read_flash 0x00000 0x100000 image1M.bin

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.

esptool.py --port PORT_COM erase_flash

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

esptool.py --port PORT_COM write_flash -fs 1MB -fm dout 0x0 image1M.bin

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.

Récupérer le firmware Tasmota depuis GitHub

Allez sur GitHub pour télécharger le dépôt du projet.

Installer le firmware Tasmota sur le Sonoff 4CH Pro

Lancez PlatformIO et ouvrez le projet depuis le menu File -> Open Folder. Indiquez le chemin du dépôt GitHub du projet. Ouvrez le fichier user_config.h et cherchez la clé STA_SSID1. Remplacez l’identifiant et le mot de passe WiFi. Vous pouvez indiquer un second réseau alternatif.

Ouvrez ensuite le fichier de configuration platformio.ini à la racine du projet et dé-commentez la cible env_default = sonoff. Allez dans le menu PlatformIO et compilez le firmware avec l’option Build. PlatformIO s’occupe de tout !

Une fois terminé, lancez l’installation depuis le menu PlatformIO puis upload. A la fin de l’installation, le module reboot. La led bleue clignote le temps de se connecter au réseau WiFI puis s’allume en continue. Bravo ! Vous avez terminé l’installation. Retournez dans le menu et ouvrez le moniteur série (Serial Monitor).

Choisissez le port COM sur lequel est branché le Sonoff 4CH Pro.

Attendez que PowerShell ou le Terminal soit lancé. Débranchez puis rebranchez le Sonoff pour obtenir le journal de démarrage du firmware Tosmata. Ce qui nous intéresse ici, c’est l’adresse IP qui a été attribuée au Sonoff 4CH pro.

Configurer le module

Ouvrez un navigateur web et saisissez l’adresse IP récupérée depuis le moniteur série. Voici la nouvelle interface de configuration.

La première chose à faire est d’indiquer le module utilisé. Par défaut, c’est le Sonoff Basic qui est sélectionné. Allez à la page Configuration puis Configure Module. Dans la liste, choisissez Sonoff 4CH Pro (n°23) puis Save. Le module reboot.

Vous pouvez dès maintenant piloter les relais depuis l’interface Web mais également depuis les 4 boutons de commande qui sont toujours disponibles. Les différents modes sont également supportés par le firmware (Self-locking, Interlock et Inching présentés dans l’article précédent). Pour piloter indépendamment les relais, configurez les sélecteurs comme ceci :

  • S6: sur 1
  • K5: tous sur 1
  • K6: tous sur 0

Inclusion du Sonoff 4CH Pro dans Domoticz

Le firmware Tasmota prend tout son sens lorsqu’on dispose d’un serveur domotique.

Préparation du broker

Tous les échanges avec Domoticz vont se faire via un broker MQTT. Commencez par suivre ce tutoriel pour l’installer sur votre système.

Ajout d’une gateway MQTT

Maintenant que vous disposez d’un broker MQTT, on va y connecter Domoticz. Il pourra ainsi recevoir des messages du firmware : changement d’état des relais, accusé réception d’une commande, relevé de mesure (température, humidité, niveau…). Il servira également à envoyer des commandes aux modules Sonoff manuellement ou d’après un scénario.

Allez dans les réglages puis Matériel. Dans la liste des types, choisissez MQTT Client Gateway with Lan Interface puis renseignez les différents paramètres

  • Donnez un nom. Par exemple Mosquitto
  • Adresse distante : l’adresse IP du broker MQTT ou localhost s’il est installé sur la même machine
  • Port : par défaut 1883
  • Identifiant et Mot de passe si l’accès au broker est protégé. Laissez vide sinon.
  • Publish Topic : ne changez rien.
  • Terminez en cliquant sur Ajouter

Ajout d’un appareil virtuel

Maintenant que l’on peut recevoir et envoyer des messages, on doit créer un matériel virtuel auquel seront attachés les boutons et éventuellement des instruments de mesures. Dans le liste Type, choisissez Dummy (Does Nothing, use for virtual switches only) et donnez un nom. Enfin Ajouter.

Créer des boutons de commande pour les relais

Vous pouvez maintenant créer autant de boutons virtuels que vous avez de relais sur votre Sonoff. 4 dans le cas du Sonoff 4CH Pro. Pour créer un bouton virtuel, cliquez sur Créer capteurs virtuels qui se trouve dans la colonne type du Dummy Device que l’on vient de créer.

Dans la boîte de dialogue qui s’affiche, choisissez Interrupteur (switch) et donnez le nom désiré.

Allez ensuite dans les Dispositifs (Réglages -> Dispositifs) pour y retrouver les 4 boutons virtuels qui vont permettre de piloter les 4 relais. Ce qui nous intéresse ici, ce sont les Idx attribués par Domoticz. Ici de 14 à 17.

Configurer le broker MQTT et l’IDX Domoticz sur le Sonoff 4CH pro

Connectez-vous à l’interface d’administration du Sonoff et allez à la page Configuration -> Configure Domoticz. Reportez les IDX trouvés précédemment. Terminez par Save. Le module reboot. Comme vous pouvez le voir, tout est déjà prêt sur le firmware Tasmota pour gérer d’autres capteurs (Température, Temp+Humidité, Baromètre, énergie+puissance du Sonoff POW, luminosité du Sonoff SC, compteur).

Après le re-démarrage, allez à la page Configuration puis Configure MQTT. Remplissez les paramètres de connexion au Broker :

  • Host : l’adresse IP du broker
  • Port : 1883 par défaut
  • User et Password si l’accès au broker et contrôlé par un mot de passe
  • Vous pouvez laisser les autres paramètres avec les valeurs par défaut.
  • Save. Le Sonoff reboot.

Piloter le Sonoff 4CH Pro depuis Domoticz

Depuis Domoticz, allez à l’onglet Interrupteurs. Vous allez y retrouver les 4 boutons de commande créés précédemment. Appuyez sur un bouton. Si tout est correct, vous allez l’entendre “claquer” et la Led correspondante va l’allumer pour indiquer qu’il a été activé.

Voilà. Dans les prochains tutoriels nous verrons comment inclure les modules Sonoff sur d’autres serveurs domotiques (Jeedom, Home Assistant) ou un dashboard pour objets connectés (Node-RED…).

Sources utilisées :

Je ne suis pas l’auteur des (toutes) les astuces proposées dans ce tutoriel. Nous pouvons remercier Blair Thompson qui a déjà contribué au Hack de la prise Sonoff S20.

Version sans récepteur 433MHz

Avez-vous aimé cet article ?