md
Téléversement de Tasmota sur un dispositif Sonoff en mode DIY dans Linux
2019-08-22

Hier un colis est arrivé de Chine contenant six Sonoff Mini. J'ai voulu remplacer le micrologiciel d'origine comme ce fut le cas avec les Sonoff Basic achetés auparavant. Or c'est plus compliqué avec le Mini car il n'y a plus d'emplacement pour souder un connecteur à quatre ou cinq broches. Heureusement, il est possible de remplacer le micrologiciel par téléversement sans fil (OTA) avec le nouveau mode dit DIY (Do it yourself).

Malheureusement, Itead n'a pas réussi à rendre cette opération très simple. En fait, plusieurs se plaignent de la complexité de la démarche et du fait que l'utilitaire Sonoff_Devices_DIY_Tools ne fonctionne que sous Windows. J'explique ci-dessous comment procéder à l'installation de Tasmota (ou tout autre micrologiciel pour ESP8266) avec Linux ou éventuellement tout autre système d'exploitation. Cependant, il faut qu'un serveur Web sur le réseau local rende disponible le micrologiciel à téléverser et il faut pouvoir créer un point d'accès Wi-Fi relié au même réseau, mais ayant les paramètres d'identification spécifiques au mode DIY du micrologiciel de Itead.

Table des matières

  1. Matériel nécessaire
  2. Mettre à jour le dispositif Sonoff
  3. Téléverser Tasmota vers le dispositif Sonoff
  4. Conclusion

Matériel nécessaire toc

Voici en gros, comment j'ai procédé à l'installation de Tasmota sur le Sonoff Mini.

L'image suivante montre le matériel que j'ai utilisé pour réaliser ces opérations. Je m'empresse d'ajouter que c'est probablement plus complexe que nécessaire, car mon objectif initial était de faire fonctionner les scripts Python à la base de Sonoff_Devices_DIY_Tools en suivant l'exemple de ThierryM de Lo Furòl.

Le réseau sans fil local, nommé MonReseau, était déjà en place. Le Raspberry Pi est l'hôte du système de domotique. Le serveur Web Lighttpd y est installé. Le micrologiciel des dispositifs Tasmota en place peut déjà être téléversé depuis ce serveur.

Actuellement, il n'y a que trois modèles d'interrupteur Wi-Fi de Itead qui peuvent fonctionner en mode DIY : Sonoff Basic R3, Sonoff RF R3 et Sonoff Mini. La mise en œuvre de ce mode est plutôt surprenante. Le dispositif veut se brancher à un réseau Wi-Fi dont les paramètres sont déjà définis.

Le réseau local filaire est prolongé avec la technologie MoCA qui utilise le câblage coaxial pour la télévision. Or l'ActionTec WCB3000 contient deux radios Wi-Fi (2,4 GHz et 5 GHz) qu'en temps normal sont désactivés. En activant la radio 2,4 GHz, il a été possible de créer un point d'accès Wi-Fi (nom : sonoffDiy, mot de passe : 20170618sn), comme mot de passe. Ce réseau sans fil est identifié par l'icône Wi-Fi rouge sur la figure ci-dessus.

Puisque tout appareil branché sur ce réseau sans fil à accès au réseau local et à l'Internet, je m'assure que le réseau sonoffDiy n'est actif que le temps de modifier les dispositifs Sonoff.

MoCA ne semble pas être une technologie très répandu. Mais il devrait être possible d'aboutir au même résultat avec un routeur Wi-Fi.

Mettre à jour le dispositif Sonoff toc

J'utilise une tablette Android pour appareiller le Sonoff Mini avec l'application eWeLink. Évidemment, il faut mettre sous tension le module. La tablette est branchée sur le réseau sonoffDiy ce qui a l'avantage de ne pas divulguer les informations d'identification de mon réseau Wi-Fi permanent.

Une fois appareillé, le micrologiciel installé par le fabricant devrait être mis à jour avec l'application eWeLink. La version courante est 3.3.0.

La mise à niveau du micrologiciel du fabricant est nécessaire pour le téléversement sans fil de Tasmota avec l'utilitaire Sonoff_Devices_DIY_Tools. Il se peut très bien qu'elle ne soit pas nécessaire pour le téléversement par l'IPA REST utilisé ci-dessous. Si tel était le cas, la démarche serait bien plus rapide. Malheureusement, je n'ai plus de dispositifs Sonoff avec le micrologiciel original pour vérifier.

Téléverser Tasmota vers le dispositif Sonoff toc

Pour mettre le dispositif en mode DIY il faut le débrancher, l'ouvrir et placer le cavalier fourni sur les deux broches du connecteur destinées à cet usage.

Le plus facile pour ouvrir le Sonoff Mini est d'appuyer fermement avec le pouce sur le côté du couvert entre le devant et le fil d'antenne. Voir l'image à gauche. Les plots sur lesquels le cavalier doit être placé sont visibles sur la figure à droite.

Rebrancher le Sonoff en observant le clignotement de la DEL bleu. Au début elle devrait s'allumer brièvement une fois à la seconde. Après quelques secondes, la DEL clignote deux fois à chaque seconde. C'est l'indication que le module est branché au réseau sonoffDiy. Dès que le Sonoff est connecté, on peut obtenir ses coordonnées à l'aide d'un ordinateur de bureau. J'ai montré ci-dessus que ce dernier était relié au réseau sonoffDiy, mais je suis persuadé que cela n'était pas nécessaire et qu'il aurait été possible de le laisser branché au réseau sans fil permanent.

michel@hp:~$ avahi-browse -d local _ewelink._tcp --resolve + wlp3s0 IPv4 eWeLink_10009abcde _ewelink._tcp local = wlp3s0 IPv4 eWeLink_10009abcde _ewelink._tcp local hostname = [eWeLink_10009abcde.local] address = [192.168.1.127] port = [8081] txt = ["data1={"switch":"off","startup":"off","pulse":"off","pulseWidth":500,"rssi":-47}" "seq=1" "apivers=1" "type=diy_plug" "id=1000983386" "txtvers=1"]

Les paramètres en gras sont les données nécessaires pour utiliser l'IPA REST du mode DIY. Une seule interface réseau était active, l'interface filaire était désactivée. Certains pensent qu'il peut être difficile de repérer le dispositif avec avahi quand plus d'une interface est active. J'ai noté que le module est rarement affiché avec la commande avahi-browse --all.

J'ai installé l'extension RESTer par Jan dans Firefox. Il y a d'autres extensions qui peuvent faire la même chose et l'on trouve l'équivalent pour d'autres navigateurs.

On peut tester que l'IPA fonctionne en allumant le relai du Sonoff.

  1. Démarrer l'extension RESTer en cliquant sur son icône.
  2. Choisir la méthode POST
  3. Entrer l'adresse. Ne pas oublier d'ajuster l'adresse IP en fonction de l'information obtenue avec avahi-browse.
  4. Ajouter dans la section HEADERS la variable Content-Type.
  5. Fixer la valeur de la variable ajoutée à application/json.

  1. Sélectionner l'onglet BODY.
  2. Entrer les données de la requête dans la boîte de saisie  :
    {
      "deviceid": "10009abcde", 
      "data": {
          "switch": "on" 
        } 
     }
  3. Cliquer sur les trois point pour afficher un menu concernant le type de données.
  4. S'assurer que JSON est coché.
  5. Enfin, cliquer sur le bouton SEND.

Si tout fonctionne correctement, la réponse sera 200 OK et le résultat sera un fichier JSON :

{
    "seq": 1,
    "error": 0
}

La DEL rouge devrait s'allumer indiquant que le relai est fermé.

Il faut deux requêtes pour téléverser un micrologiciel. La première débloque le mécanisme de mise à jour sans fil. On change l'URL à http://192.168.1.127:8081/zeroconf/ota_unlock (étape 3) et l'on entre les données suivantes :

{
  "deviceid": "10009abcde", 
  "data": {
      "switch": "on" 
    } 
 }

(étape 7) en ajustant l'identité du Sonoff. Après avoir cliqué sur le SEND (étape 9) on aura sensiblement la même réponse : 200 OK et

{
    "seq": 2,
    "error": 0
}

La seconde requête indique au Sonoff d'où obtenir le micrologiciel. Il faut changer l'URL à http://192.168.1.127:8081/zeroconf/ota_flash (étape 3) et l'on entre les données suivantes :

{
  "deviceid": "10009abcde", 
  "data": {
    	"downloadUrl": "http://192.168.1.22/sonoff/sonoff_tweak.bin", 
    	"sha256sum": "bcdef54eab28bd918321c5ef1837fc8247238a9aa4ad738f9f393bca1234def8"
 }

Évidemment, il faudra ajuster l'URL du fichier à télécharger et aussi calculer la somme de vérification. Je ne sais pas si celle-ci est vérifiée ou non, car la valeur donnée était correcte. À noter que le fichier binaire ne peut faire plus que 508 Ko. Le fichier sonoff_tweak.bin est une version personnalisée de Tasmota qui fonctionne avec les quatre types de dispositifs que j'utilise ici.

On obtient immédiatement la réponse 200 OK et

{
    "seq": 3,
    "error": 0
}

Avant même que le téléversement commence. Voir le document SONOFF DIY MODE API PROTOCOL au sujet d'autres codes d'erreur possibles.

"seq": 3, "error": 0 }

La DEL bleue du Sonoff s'allume et s'éteint de façon plus ou moins aléatoire pendant le transfert du fichier. Puis la DEL rouge s'éteint alors que le relai est ouvert. Après à peine une minute ou deux, les deux DEL s'éteignent et l'on peut retrouver le module Sonoff sur le réseau. La même adresse IP sera affectée au dispositif quand il se rebranche sur le réseau sans fil permanent. Il est donc facile d'atteindre la page Web de Tasmota.

Conclusion toc

Je regrette avoir modifier tous les Sonoff Mini que j'ai achetés. Si j'en avais gardé deux ou trois, j'aurais pu vérifier les trois hypothèses faites ci-dessus. Premièrement qu'il n'est peut-être pas nécessaire d'utiliser eWeLink pour mettre à jour le micrologiciel de Itead. Deuxièmement que l'on peut simplifier la configuration matérielle.

Enfin, je devrais vérifier que l'on peut effectivement utiliser un routeur sans-fil pour créer le réseau Wi-Fi sonoffDiy.

Que fait-on si l'on a pas d'ordinateur Windows et si l'on a pas le matériel pour utiliser créer un réseau local Wi-Fi comme j'ai décrit ci-dessus ? On peut avoir recours au fer à souder. Même si cela exige une certaine dextérité, c'est possible si l'on se fie aux vidéos de Andreas Spiess Tutorial Sonoff Mini (incl. DIY Mode and how to Flash Tasmota), 3D Jig for Flashing the Sonoff Mini (Quickie) et à celui de Dr Zzzs Sonoff Mini Finally! The Smart Switch we've been waiting for! w/Tasmota for Home Assistant esphome.

Autrement on pourrait toujours renommer son réseau local sans fil le temps de modifier les dispositifs Sonoff. Ce n'est pas très pratique si d'autres personnes utilisent le réseau pour accéder à l'Internet.

Avec un peu de patience, on peut espérer que l'auteur de Sonoff_Devices_DIY_Tools modifie les scripts Python pour qu'on puisse les utiliser dans Linux. Voir son commentaire à ce sujet en réponse à ThierryM dans Impossible (but near) to flash firmware using DIY Tools under Ubuntu 18.04 #21.

En conclusion, le nouveau Sonoff Mini est un dispositif bien conçu du point de vue matériel. Il permet d'ajouter facilement une fonctionnalité sans fil à tout interrupteur avec un FAF (facteur d'acceptation féminine) très élevé. Ne m'accusez pas de sexisme, car j'estime qu'on devrait parler du FA, FAG ou FAP (facteur d'acceptation [général | publique]). Les invités me taquinent avec raison quand je leur donne un cours sur l'utilisation des télécommandes ou des assistants vocaux pour simplement allumer un luminaire; « surtout, n'utiliser pas l'interrupteur normal ».

On aimerait un troisième plot avec 3,3V avec les connexions pour sélectionner le mode DIY. Je pense que le port GPIO n'est pas utilisé autrement et l'on pourrait ajouter un capteur avec des connecteur Dupont. Tant qu'à suggérer des améliorations, ce serait pratique d'ajouter Rx et Tx à ce même connecteur. En d'autres mots de revenir à ce qu'on retrouvait dans la première version du Sonoff Basic. Toutefois, s'il faut augmenter la taille du Sonoff Mini pour obtenir ce changement, je préfère m'en passer.

Malheureusement, le côté logiciel est à revoir. Qui utilisera le mode DIY du Sonoff Mini ? Imaginez tous ces réseaux Wi-Fi nommés sonoffDiy avec un mot de passe connu de tous ! Dans sa vidéo, The guy with the Swiss Accent (Andreas Spiess) se moque, à juste titre, de cette implémentation.