SonOff Mini R2 – Installer son propre Firmware via le WiFi

Installation 100% logiciel sans intervention sur le matériel
SonOff mini R2

Le SonOff mini est un module très utile en domotique. Il dispose de nombreuses caractéristiques séduisantes comme:
– une taille réduite 42*42*20mm permettant de se loger à l’intérieur de boites d’interrupteurs muraux
– un relais permettant de commuter du 230v jusqu’à 10A
– une entrée permettant de recevoir une commande comme un interrupteur
– une liaison wifi permettant un contrôle à distance
– un microcontrôleur (ESP 8285 similaire au 8266) programmable pour gérer la logique de l’ensemble
– un prix en dessous de 10€

Dans un précédent article, j’ai décrit l’installation du firmware ESP Easy pour personnaliser son SonOff. Cette installation nécessitant de souder des broches peu en rebuter plus d’un. Ici on utilise l’IDE Arduino pour développer son propre code et le télécharger en mode OTA (On The Air) par le WiFi. Cela offre la possibilité de piloter le relais du SonOff depuis un système domotique (HA, Domoticz..) ou depuis une page web sur son smartphone. Ceci évite de passer par les applications propriétaires sur smartphone qui font transiter vos commandes via un cloud localisé quelque part dans le monde.

Etape 1 : Installation – SonOff DIY

Sortir le SonOff de sa boite et le brancher sur le 230V. On va utiliser le mode dit DIY (Do IT Yourself) du SonOff pour accéder à la reprogrammation du firmware.

Une fois mis sous tension, il faut appuyer sur l’interrupteur du boitier au moins 5s (voire une deuxième fois 5s si le système a déjà été programmé). La led bleu clignote rapidement, le SonOff passe en émission Wifi (Access Point « ITEAD….xxxxx ») se connecter avec un smartphone avec le mot de passe 12345678. Si la connexion ne se fait pas automatiquement, l’adresse IP à rentrer dans votre navigateur est  http://10.10.7.1/. Renseigner alors le nom du wifi local à utiliser (SSID) à l’avenir ainsi que le mot de passe de votre réseau.

Télécharger l’outil « SonOff DIY Mode Tool » . Dézippez le fichier et dans le dossier « tool » lancez l’exécutable « tool_01DIY85(v3.3.0).exe » sur un PC connecté au même réseau que votre Wifi. Entre temps, trouvez via votre box internet ou tout autre outil, l’adresse IP qui a été attribuée à votre SonOff-Mini. Cet outil va scanner votre réseau et trouver le SonOff.

L’outil SonOff DIY Mode Tool pour windows permet de se familiariser avec les commandes à passer (REST API) au SonOff pour contrôler le relais depuis un système de domotique, mais on n’a aucun contrôle sur le firmware. Par contre, il y a en haut à droite un bouton « Firmware Flash » ou « Brush machine » qui permet de télécharger un nouveau firmware.

DIY Mode Tool à télécharger sur le web.

Etape 2 : Installation Nouveau Firmware

Comme l’accès au micro-contrôleur ESP, ne peut se faire que par le Wifi, il faut y implanter un logiciel qui permet des mises à jour par le WiFi dit OTA (On The Air). Pour cela, on utilise l’outil de développement IDE d’Arduino.

Solution 1

La première possibilité est d’utiliser un exemple fourni dans l’IDE. Choisir le programme « ArduinoOTA/BasicOTA » pour ESP8266. C’est le minimum requis à implanter dans tout programme pour être en possibilité de le mettre à jour ultérieurement. Retirer toutes les sorties sur le port série non disponible : Serial….

Dans l’Arduino IDE, il faut choisir la carte Generic ‘ESP8266 Module. Dans le code, rentrer le SSID et le mot de passe du WiFi. Surtout ne pas oublier, car vous ne pourriez plus accéder à l’ESP sauf à le reprogrammer par du hardware.
Ce bout de code ne fait rien à part installer le minimum pour faire des mises à jour via le WiFi.

Pour créer le binaire à ‘uploader’ vers l’ESP, allez dans croquis, sélectionnez ‘Exporter les binaires compilés’. On retrouve le binaire dans le dossier source avec une extension .bin

Avec l’outil DIY Mode Tool, uploadez le fichier binaire. Par la suite, l’IDE Arduino reconnait votre accès à la carte par Wifi, et vous pourrez ‘uploader’ n’importe quelle application, mais toujours y inclure au minimum :

  • #include <ArduinoOTA.h> , la librairie OTA
  • ArduinoOTA.begin(); dans le setup
  • ArduinoOTA.handle(); dans la boucle loop

Solution 2

La seconde possibilité est d’implanter l’exemple téléchargeable ici qui permet de piloter le relais :

  • depuis une page web,
  • à distance depuis une application domotique avec une commande http ,
  • en branchant un interrupteur sur les entrées S1 et S2 de l’ESP Mini R2

Pour créer le binaire à ‘uploader’ vers l’ESP, dezippez le fichier téléchargé qui comprend un dossier avec un fichier .ino et un fichier.h . Ouvrir le fichier source .ino dans l’IDE Arduino. Sélectionnez la carte ‘Generic ESP 8266 module, allez dans croquis, sélectionnez ‘Exporter les binaires compilés’. On retrouve le binaire dans le dossier source avec une extension .bin

Avec l’outil DIY Mode Tool, uploadez le fichier binaire vers l’ESP.

À ce stade, le programme implanté va tourner, mais il ne connait pas le nom du wifi où se connecter. Il va passer en mode Wifi : point d’accès. Prenez votre smartphone ou un PC avec une interface Wifi. Recherchez un réseau qui s’appelle : F1ATB-SonOff-…..
Connectez-vous au réseau, il n’y a pas de mot de passe.
Lancez un navigateur à l’adresse : http://192.168.4.1
L’ESP va vous envoyer une page vous demandant le nom du réseau WIFI sur lequel il devra se connecter à l’avenir, ainsi que le mot de passe. Ces valeurs sont stockées dans la mémoire EEPROM de l’ESP.
Connectez-vous avec votre smartphone ou PC à ce réseau WIFI et vous y retrouverez l’ESP à l’adresse IP qui lui aura été attribué par votre box. Si vous ne connaissez pas l’adresse IP, regardez au niveau de votre box la liste des machines connectées.

Par sécurité, si l’ESP en mode point d’accès, n’a pas de client au bout de 3mn, il se reset. Si par la suite, il n’arrive pas à se connecter, il repasse en mode point d’accès pendant 3mn.

Ordres accès à distance

On accède à l’ESP par l’adresse ip (ex:192.168.1.10) ou par http://hostname.local , un serveur mDNS étant implanté.

http://<ip>   Accès à la page web de contrôle du relais
http://<ip>/Relay?R=1   commande à distance, relais on
http://<ip>/Relay?R=0   commande à distance, relais off
http://<ip>/Debug   Debug et historique des commandes reçues

Par la suite, toutes les mises à jour se font en OTA par l’IDE Arduino. Il faut sélectionner la carte à la bonne adresse IP . Surtout, n’oubliez pas le bout de code pour accéder en OTA :

  • #include <ArduinoOTA.h> , la librairie OTA
  • ArduinoOTA.begin(); dans le setup
  • ArduinoOTA.handle(); dans la boucle loop

Bugs Soft

L’IDE Arduino va vous demander un mot de passe lors de la compilation en mode OTA. Répondez n’importe quoi, 1 lettre minimum.

Parfois avec l’IDE Arduino en fin de transfert, l’icône reste jaune et vous n’avez plus la main. Fermez l’IDE et le relancez.

SonOff Mini Hardware

La broche GPIO4 et la masse sont disponibles sur le bornier. Pour les autres broches, ouvrir le SonOff pour y accéder.

GPIO0SwitchProgrammation ESP
GPIO1TX
GPIO2
GPIO3RX
GPIO4Entrée sur le bornier
GPIO12Relais1= »On »0= »Off »
GPIO13LED bleueO= »Off » 1= »On »

En plus d’une commande par le web, on peut brancher un interrupteur qui à chaque basculement fera changer l’état du relais.

Montage avec un interrupteur en complément des commandes par WIFI

Dans une installation domestique, on peut remplacer un système de va-et-vient avec 2 interrupteurs en implantant un SonOff qui reprendra les 2 interrupteurs existants. La liaison étant en basse tension 3.3v, on peut utiliser du fil de téléphone pour relier les interrupteurs entre eux.

Montage d’un va-et-vient avec SonOff Mini et 2 interrupteurs

F1ATB André

Radio Amateur - Domotique - Photovoltaïque

Vous aimerez aussi...

28 réponses

  1. StefanDu30 dit :

    Bonjour
    Je voulais ajouter la carte Generic ESP 8266 module mais je ne la trouve pas dans la liste d’ajout des carte sous arduino, comment procéder ?
    Merci d’avance,

  2. StefanDu30 dit :

    Dsl c’est bon j’ai ajouté la carte, réussi à flasher puis a y donner les réseau et code wifi, par contre ensuite impossible d’y accéder…si vous avez une idée je suis preneur ?

  3. StefanDu30 dit :

    Pour info complémentaire le sonoff reste allumé bleu fixe sans changement même en appuyant sur le switch

    • F1ATB André dit :

      Regardez si vous voyez le SonOff dans la liste des cartes vue par l’Arduino en Wifi et regardez s’il n’est pas passé en mode point d’accès.
      Cdlt

  4. StefanDu30 dit :

    Bonjour,
    C’est bon, après avoir un peu galeré j’ai accès aux commandes via son serveur web merci ! Du coup si je veux le piloter avec le routeur, je renseigne son iP dans Host, le Port 80, par contre que dois-je mettre dans les commandes On et Off pour le piloter ? Respectivement GPIO=12&out=1 et GPIO=12&out=0 c’est correct ?

  5. StefanDu30 dit :

    Oui c’est bon, ok j’avais pas saisi merci j’essai ça ce soir !
    Merci encore !

  6. StefanDu30 dit :

    Rebonjour,
    Du coup j’ai fait le test en renseignant aussi l’IP mais ça ne fonctionne pas, si vous avez une idée je suis preneur, je comprends pas pourquoi d’autant plus qu’en appelant les pages web ça fonctionne, bouton pour allumer ou éteindre le relais et appel page web relais à 1 ou à 0, seule la gestion par le routeur v3.03 ne fonctionne pas…

    • F1ATB André dit :

      Je viens de faire le test avec le routeur V3.03_UxI. Voici mes paramètres. Ajustez l’adresse IP.
      Pilotage Relais SonOff

  7. StefanDu30 dit :

    Ok merci, je vais refaire un test, sinon je procèderai différemment, je ferai un autre esp deporté avec contacteurs.
    Merci à vous !

  8. JP BARRES dit :

    Bonjour,
    merci pour votre travail.
    En utilisant la solution 2 pour modifier le firmware du relais, le fichier bin fait 294K et dans DIY FLASH Firmware Tool 3.3.0 j’ai un message d’erreur quand j’importe le firmware qui indique « Firmware file cannot be greater than 508k; the firmware must be Dout »
    Donc impossible de modifier le firmware.
    Avez-vous une idée ?

    • F1ATB André dit :

      Je comprends pas. Un changement de bibliothèque depuis que j’ai publié l’article?
      Cdlt

      • JP BARRES dit :

        Cela pourra peut être aider d’autres personnes, il faut paramétrer dans « outils » de l’IDE arduino le mode flash en DOUT avant enxpoter les binaires compilés.
        Maintenant que j’ai flashé « SonOff_MiniR2_RelayControl_V1.0.ino.bin » tout à l’air bloqué la led bleue reste allumée et je n’ai pas le réseau wifi « F1ATB-SonOff-….. » Je continue les recherches 🙂

  9. Francis Cassen dit :

    Bonjour André, j’essaie de configurer un Sonoff Mini R2, j’ai effectué l’étape 1 et je vois bien le module dans « DIY mode Tool ». Ensuite dans Arduino IDE j’ai crée le binaire BasicOTA sur la carte « Generic ESP8266 Module ». Lorsque je veux le charger dans le Sonoff avec « DIY Flash FirmwareTool », je clique sur OK et tous les boutons deviennent gris et il n’y a pas de progression et ça reste figé comme ça. Une chose que j’ai remarqué dans ArduinoIDE, dans la ligne d’état en bas, il y a « Generic ESP8266 Module sur 192.168.1.56 [hors ligne] ». Cette adresse IP est celle du module ESP32 que j’ai configuré avec votre programme précédemment. Je ne trouve pas le moyen de supprimer ce port dans ArduinoIDE. Pensez-vous que le problème peut venir de là svp ? Merci pour votre aide.

    • F1ATB André dit :

      L’Arduino IDE affiche ESP8266 Module sur 192.168.1.56 parce qu’il voit cet ESP32 sur le réseau pour un accès via OTA.

      Pensez à mettre à zéro le GPIO 0 pour passer le sonoff en mode programmation.

      • Francis Cassen dit :

        J’ai actionné le switch avec un fil et réessayé malheureusement le résultat est le même, l’import ne fonctionne pas, même en rapprochant le module de la box au cas où il y aurait un problème de réception Wifi. Par le « DIY Tool » je peux passer le Sonoff en ON et en OFF et j’entends le relais manoeuvré. J’ai aussi désactivé le DHCP et forcé l’IP en 192.168.1.56. C’est pas mieux, l’ArduinoIDE voit toujours cette IP hors ligne. Mon réseau Wifi a un SSID unique avec un réseau en 2,4Ghz et un 5Ghz, le Sonoff est sur le 2,4Ghz et mon PC sur le 5Ghz. Est- ce que ça pourrait venir de cela ? Si c’est cela je suis bloqué car mon PC refuse de se connecter sur 2,4Ghz. Merci

  10. Francis Cassen dit :

    D’accord, merci. Autre chose que j’ai remarquée, dans les infos du Sonoff fournies par DIY Tool, c’est que la valeur du paramètre otaUnlock est False. Est-ce que cela pourrait empêcher de flasher ?

    • Francis Cassen dit :

      J’ai trouvé des outils comme Postman et l’extension RESTer dans un navigateur qui permettent de lancer des requêtes HTTP POST et qui actionnent le relais du Sonoff. Etant novice dans ces systèmes, il y a surement des choses qui m’échappent, mais je me disais serait-il possible de lancer ces requêtes HTTP POST depuis l’ESP32 et ainsi ne pas avoir besoin de flasher le Sonoff ?

  11. Alex dit :

    Bonjour Francis, j’ai le même souci que toi, impossible d’envoyer le firmware (méthode 1 ou 2), l’outil DIY TOOL se grise. J’ai pourtant tout respecté à la lettre.
    Si tu trouves la solution, je suis preneur.

    • Francis Cassen dit :

      Bonjour Alex, je vois ta question juste maintenant, désolé. Je suis passé par la méthode hardware via un module TTL/USB que j’ai acheté sur AliExpress et j’ai suivi les instructions d’André dans https://f1atb.fr/fr/sonoff-mini-esp-easy/. Par contre les pastilles +3,3V, TX et RX sont très fragiles et quand j’y ai soudé les fiches, les pastilles se sont arrachées avec le poids des fiches. J’ai donc soudé une fiche sur le 5V qui est plus solide en veillant bien à mettre le cavalier sur 5V sur le TTL/USB. J’ai branché la fiche GND sur le bornier. J’ai lancé le téléversement du programme et pendant la compilation j’ai pris les fiches TX et RX à la main que j’ai plaquées sur les pastilles RX et TX et que j’ai tenues pendant le téléversement. J’ai fait ça sur 2 Sonoff et le routeur les commande parfaitement bien.

  12. Yvan dit :

    Bonjour,
    Merci pour ce beau travail.
    Malheureusement, je confirme que la carte « Generic ESP 8266 module » n’est pas trouvée dan l’appli Arduino. Comment faire pour la charger ?
    Pour aller « droit au but », ne pourrait-on pas avoir en téléchargement directement le .BIN qui doit en résulter ?
    N’ayant pu charger votre code, je me suis rabattu sur Tasmota et j’ai trouvé une page qui relate parfaitement les lignes de commandes à passer depuis Windows, comme depuis Linux, donc j’ai fait profiter tout le monde: https://lindevs.com/flash-the-tasmota-firmware-on-sonoff-minir2-switch

  13. BOZZINI YANICK dit :

    Bonjour,

    Est ‘il necessaire de flasher le le module SONOFF pour le rajouter a une installation routeur Solaire ? la cas échéant, quel module contact WIFI pouvez vous me proposer ?
    Merci pour tout , et super travail .

  14. Thierry Royer dit :

    Bonjour, sais tu les commande à envoyer pour un Sonoff POWR2 sous tasmota , J’ai essayé cmnd/topic/Power On ou Power%20On sans succès.
    Merci de ton aide

  15. Damien dit :

    Bonjour, pour commander un chauffe eau 10A il vaut mieux passer par mon gradateur 40A qui me sert déjà a router mon surplus ou il vaut mieux passer par un relais ou un Sonoff?

  16. Damien dit :

    je précise que c’est commander les marches forcées