SonOff Mini R2 – Installer son propre Firmware via le WiFi
Installation 100% logiciel sans intervention sur le matériel
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.
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.
GPIO0 | Switch | Programmation ESP |
GPIO1 | TX | |
GPIO2 | ||
GPIO3 | RX | |
GPIO4 | Entrée sur le bornier | |
GPIO12 | Relais | 1= »On »0= »Off » |
GPIO13 | LED bleue | O= »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.
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.
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,
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 ?
Pour info complémentaire le sonoff reste allumé bleu fixe sans changement même en appuyant sur le switch
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
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 ?
Si vous avez implanté le programme SonOff_MiniR2_RelayControl_V1.0. Comme expliqué ci dessus les commandes sont :
http://adresse_ip/Relay?R=1 commande à distance, relais on
http://adresse_ip/Relay?R=0 commande à distance, relais off
Oui c’est bon, ok j’avais pas saisi merci j’essai ça ce soir !
Merci encore !
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…
Je viens de faire le test avec le routeur V3.03_UxI. Voici mes paramètres. Ajustez l’adresse IP.
Ok merci, je vais refaire un test, sinon je procèderai différemment, je ferai un autre esp deporté avec contacteurs.
Merci à vous !
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 ?
Je comprends pas. Un changement de bibliothèque depuis que j’ai publié l’article?
Cdlt
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 🙂
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.
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.
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
J’ai démonté le Sonoff et j’ai vu que le chipset était un 8285. Est-ce que ça pourrait être le problème ?
8285 est proche du 8266 pour le compilation.
Cdlt
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 ?
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 ?
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.
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.
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
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 .
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
j’ai fini par trouver ! :/cm?cmnd=Power%20On et /cm?cmnd=Power%20Off
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?
je précise que c’est commander les marches forcées