#Hack : prise connectée SONOFF S20 pour en faire un super smart plug avec ESP Easy

sonoff s20 prise connectee wifi esp8266 diy hack

Aujourd’hui je vous présente un tutoriel qui m’a été proposé par Bernard, un lecteur de Projets DIY. Dans ce tutoriel, Bernard nous explique comment il a hacké l’ESP8266 d’une prise connectée SONOFF S20 de la société Itead. Itead, la société Chinoise qui fabrique les produits SONOFF, propose une gamme complète de produits pour la domotique et les objets connectés : prise commandée, bloc d’alimentation intelligent, carte relais, accessoires pour Raspberry Pi et Arduino…. Ces appareils sont construits autour d’un module Wi-Fi ESP8266. Itead commercialise également plusieurs produits sont la forme de carte nue à intégrer dans des projets domotique DIY. Itead a pensé aux hackeurs en intégrant sur le PCD les pistes permettant de souder un connecteur pour communiquer via le port série avec le module ESP8285. Pour piloter sa prise connectée depuis Jeedom, Bernard a installé le firmware ESP Easy. Il a également utilisé le système de Rule (règles) présenté ici pour programmer le bouton de commande disponible en façade. Un très grand merci à Bernard pour le partage de son expérience et la qualité de son tutoriel.

La prise Sonoff S20 est obsolète et n’est pas certifiée CE. Il est préférable d’acheter le modèle S26 (2018) plus compact et certifiée CE / FCC. Suivez ce tutoriel pour hacker le firmware d’origine par le firmware Open Source Tasmota.

Avertissements. Le remplacement du firmware d’origine annule la garantie. Il n’est pas possible de réinstaller le firmware d’origine. Les appareils ne sont pas CE ou FCC. Vous êtes responsable de l’utilisation des produits Itead. Projets DIY ne pourra pas être tenu pour responsable en cas d’accident, blessure ou détérioration de matériel.

Présentation du projet

La domotique se démocratise progressivement avec l’apparition continue de nouveaux objets connectés.

Côté protocole de communication deux technologies se détachent, le wifi et le bluetooth, permettant ainsi une communication directe avec les smartphones sans devoir passer par une passerelle (ex RF433 , Zwave, …).

Le wifi a l’avantage d’une plus grande portée permettant souvent de couvrir la totalité d’une maison, mais il permet surtout de communiquer par internet grâce à la box domestique et son routeur intégré.

Ainsi partout, hors de chez soi, on peut interagir avec les objets connectés par wifi.

Mais le côté contraignant des objets connectés c’est que chaque fabricant a son appli dédiée sur le smartphone.

L’idée est donc  de s’orienter vers des liaisons wifi aisément reconnues par des solutions domotiques.

Par exemple Jeedom, solution domotique open source gratuite, développe continuellement de nouvelles interfaces grâce à son concept de « plugins ».

Et pour le wifi il existe le plugin Espeasy qui permet d’interagir avec les équipements dotés d’un module wifi  Esp8266 « flashé » avec le firmware Espeasy. 

Eh oui en général les modules wifi opèrent avec des firmware propriétaires donc fermés, et l’Esp8266, module wifi très populaire chez les « makers », peut être flashé avec de nombreux firmware et en particulier Espeasy qui présente une interface web conviviale.

L’un des composants de base de la maison connectée est la prise de courant pilotée pour: simuler de la présence (lumière, musique,…), déclencher du chauffage d’appoint, allumer la radio pour son réveil,…

L’objet de cet article (on y arrive enfin) est de transformer une prise wifi classique en prise super communicante et capable de gérer de surcroit des capteurs divers : température, pression, humidité, luminosité,…

Sur le marché il semble que la SONOFF S20 soit actuellement la seule prise wifi équipée d’un module Esp8266.

Flasher ESP Easy sur la prise SONOFF S20

Si vous découvrez ESP Easy, je vous renvoie vers cet article de présentation générale avant d’aller plus loin. 

Matériel nécessaire :

La prise SONOFF S20 est fournie et configurée d’origine pour l’appli E-Welink. Le fait de flasher ESP Easy va évidemment écraser sa configuration initiale.

Il faut commencer par démonter la prise : retirer la vis au dos (cachée par l’étiquette rouge), puis déclipser.

sonoff s20 prise connectee wifi esp8266 diy hack sonoff s20 prise connectee dos wifi esp8266 diy hack

Sur la carte électronique on repère une zone de connexion avec 4 bornes (VCC, RX, TX, GND); le marquage n’est pas systématique.

Ensuite il faut souder un « header »  à 4 broches sur la carte électronique pour constituer le connecteur de flashage (soudures côté envers), et pour les applications décrites plus loin.

sonoff s20 connector serial rx tx sonoff s20 connector serial port rx tx hearder

L’opération la plus délicate si on peut dire est de relier convenablement la prise à votre PC via le convertisseur série FTDI avec le schéma suivant :

Côté SONOFF S20 Côté FTDI
VCC VCC  (attention mettre le jumper du FTDI en position 3,3 V)
RX TX
TX RX
GND GND

Installer le firmware Espeasy sur votre PC (télécharger la version R120 depuis https://sourceforge.net/projects/espeasy/)

En dézipant on obtient :

esp easy esp8266 firmware zip

Double cliquer pour lancer flash.cmd

espeasy sonoff s20 flash

Il faut renseigner 3 champs :

  • Comport : n° port USB de votre PC auquel est relié le FTDI  (sur Windows : Paramètres -> Appareils connectés -> Gestionnaire de périphériques -> Ports )

Astuce : si vous avez l’IDE Arduino , ouvrez l’IDE et aller sur Outils ->  Port

  • Flash size : 1024 (taille mémoire de l’Esp8266)
  • Build : 120 (version Espeasy)
  • Puis Entrée

Avant de téléverser Espeasy il faut configurer l’Esp8266 en mode flashage : avant de connecter sur VCC appuyer sur le bouton de la prise (le GPIO 0 sera mis sur GND) et maintenir l’appui pendant la mise sous tension.

Le téléversement est rapide :

espeasy sonoff s20 flashing firmware

Si le flashage échoue il se peut que le FTDI ne délivre pas suffisamment de courant. Dans ce cas alimenter le VCC de l’Esp8266 avec une alimentation 3V séparée (par ex 2 piles de 1,5V) avec mise en commun du GND.

La video youtube illustre comment modifier et flasher la prise SONOFF S20.

Une fois le flashage terminé, il faut démarrer Espeasy et connaitre ses principales fonctionnalités. Tout est expliqué dans ce tutoriel.

J’attire néanmoins l’attention à l’étape ou apparait l’écran avec «Proceed to main config », ne pas oublier de se reconnecter sur son réseau Wifi avant de lancer Proceed to main config.

Maintenant que Espeasy est installé comment piloter le fonctionnement de la prise, d’abord avec l’interface web Espeasy  puis avec Jeedom.

La prise comporte un relais et un bouton poussoir pour un fonctionnement manuel.

Le relais est activé par le GPIO  12 (1=ON , O=OFF) et le bouton poussoir agit sur le GPIO 0 (Appuyé=0 , relâché=1).

Pour tester le relais on utilise la fonction « Command » dans  «Tools »: entrer  «gpio,12,1» puis Submit ; le relais claque. Avec gpio,12,0 le relais revient au repos.

sonoff s20 esp easy test command

Testons le bouton poussoir: rien ne se passe. C’est normal, il faut créer un programme avec le GPIO 0. Pour cela nous allons utiliser l’éditeur de programmation Rules et créer des Devices.

Création de 3 Devices :

  • SWITCH, lié au bouton poussoir
  • GPIO12, lié au relais
  • GPIO2, device virtuel pour le besoin de la programmation

sonoff s20 hack esp easy devices

Configuration des Devices :

sonoff s20 hack esp easy switch command sonoff s20 hack esp easy gpio-2 sonoff s20 hack esp easy gpio-12

Les Devices GPIO2 et GPIO12 ont été créés pour avoir les retours d’état des GPIO associés.

En activant le relais par la commande gpio,12,1 on constate que le Device GPIO12 passe à l’état 1.

Passons à la logique de programmation : un appui sur le bouton poussoir doit changer l’état du GPIO12 quel que soit l’évènement ayant créé son état initial.

Pour vous familiariser avec Rules je recommande de lire https://projetsdiy.fr/rules-espeasy-mini-serveur-domotique-esp8266 et  https://www.letscontrolit.com/wiki/index.php/ESPEasy#Rules_page

Voici le script qu’il vous suffit de coller dans le champ Rules :

on GPIO#Sw12=1 do
  gpio,2,1
  endon
on GPIO12#Sw12=0 do
  gpio,2,0
  endon
on SWITCH#Switch=1 do
  if [GPIO2#Sw2]=0
    gpio,12,1
  else
    gpio,12,0
  endif
endon

sonoff s20 hack esp easy rule

On teste : ça marche, et la led bleue s’allume quand le relais est activé.

Mais notre prise a d’autres ressources que lui procure l’Esp8266. Rappelez- vous les 4 bornes du connecteur de flashage : VCC, GND, TX, RX.

Ces bornes sont disponibles pour alimenter des capteurs, en effet TX et RX sont respectivement reliés aux GPIO1 et GPIO3.

La liste des capteurs  et équipements gérés par Espeasy est déjà assez conséquente : https://www.letscontrolit.com/wiki/index.php/ESPEasy#Supported_Sensors.2FActuators

Ces capteurs et équipements variés sont performants et bon marché (quelques euros sur Amazon, Ebay, Aliexpress,…)

A noter que si on configure les GPIO1 et GPIO3 en SDA et SCL (communication I2C) on peut brancher plusieurs capteurs ou équipements utilisant ce mode de communication : par exemple un capteur météo BME280 (pression, température, humidité) et un afficheur LCD 4×20 ou Oled SSD.

En effet Espeasy différencie les adresses I2C de chaque équipement (fonction I2C Scan dans le menu Tools).

Au plan pratique on peut utiliser un jack 3,5 mm à 4 connecteurs pour brancher proprement les capteurs.

On voit donc tout l’intérêt d’un SONOFF S20 ainsi modifié, par exemple pour réguler de façon autonome la température et/ou l’humidité d’une pièce avec un équipement de chauffage, un déshumidificateur ; l’éclairage en fonction de la luminosité.

Un exemple de capteur météo testé sur un module SONOFF, et la prise S20 modifiée avec un jack.

sonoff smart power sonoff s20 hack

Mais le fin du fin c’est quand même d’intégrer notre prise instrumentée dans une solution domotique.

Là encore Espeasy se montre très convivial car il peut communiquer au travers de nombreux protocoles: HTTP, MQTT, ThingSpeak, …

Et avec Jeedom c’est un jeu d’enfant, voir : https://projetsdiy.fr/plugin-espeasy-iot-jeedom/ et https://projetsdiy.fr/jeedom-affichage-oled-ssd1306-espeasy-requete-http/.

Le même processus s’applique évidemment à tous les produits SONOFF intégrant un module wifi ESP8266 (ou ESP8265).

Conclusion

En domotique le wifi offre un mode de communication très performant tant en débit qu’en portée. 

Grâce à l’apparition de composants ouverts tels que l’Esp8266 il devient relativement facile de booster les capacités de produits basiques bon marché tels qu’une prise connectée, et les intégrer dans des solutions domotiques ouvertes comme Jeedom, Domoticz ou Home Assistant.

Vous utilisez ESP Easy pour faire quoi ?
  • Proposer une autre réponse

Inscrivez-vous à la newsletter hebdomadaire

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

Promos à ne pas louper

Tags :

17
Poster un Commentaire

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

  S’abonner  
Notifier de
Damien Cavillier

Bonjour et merci pour tous les tutos qui sont vraiment très bien expliqué.

Bonjour Damien et merci beaucoup. Avec plaisir 😀

François

Bonjour, Merci pour toutes ces applications intéressantes. je voudrais faire juste le contraire, c’est à dire : Intégrer le logiciel d’origine Itead Sonoff S20 sur un développement perso basé sur un ESP8266-01. pourquoi me demanderez vous ? Parce que je trouve l’interface Ewelink agréable, j’ai déjà des appareils basés sur cet environnement et je voudrais pouvoir utiliser Ewelink pour mes dev perso complémentaires. Le Problème est de trouver le firmware original à mettre dans le 8266 pour qu’il soit compatible avec Ewelink, ou au pire une partie seulement de ce firmware qui concerne l’exécution ON OFF proprement dite. Je peux… Lire la suite »

Bonjour François. J’ai peur qu’il n’y ai pas de solution car Sonoff n’a pas publié le code source de son firmware. La seule solution serait d’acheter une carte de développement ESP8285 (on en trouve pas mal finalement http://s.click.aliexpress.com/e/ne6Aqbu) et d’installer le firmware de Sonoff après avoir fait un dump d’un appareil existant. Tenez moi au courant

François

Merci pour cette idée. j’ai trouvé le moyen de downloader le firmware d’un ESP-01 à partir des outils esptool (sous Python27) https://github.com/arendst/Sonoff-Tasmota/wiki/Esptool avec les commandes esptool.py read_flash et esptool write_flash j’ai essayé à partir d’un programme maison que j’avais mis dans un ESP-01, ça marche, je peux cloner… par contre le firmware sonoff.bin donné sur le site ne marche pas sur un ESP-01 alors j’ai essayé de faire un dump de la prise Sonoff impossible de connecter, le message est : …..____…..____… ensuite j’ai du faire une mauvaise manip car la prise ne marche plus (conditions initiales sur secteur), je… Lire la suite »

Merci pour le retour. Je rencontre souvent ce problème y compris avec les nouveaux ESP32 (…..____…..____…) Dans ce cas, on peut commencer par diminuer le débit (115200 voir moins). Lancer le téléversement et faire un reset. Le code python a un timeout assez long durant lequel il tente de se connecter au processeur de l’ESP. Voilà, j’espère que ça va fonctionner.

Damien Cavillier

Bonjour,

J’ai une petite question qui n’est pas trop en rapport avec la prise en elle même mais plus tôt avec l’utilisation des bornes TX/RX.
Elles seraient reliés aux GPIO mais je mesure 3.3V a ces bornes et dans ESPeasy, elles ne sont pas accessible dans la partie “hardware”

ChristianM

Finalement j’ai trouvé la solution sur un autre site en regardant pour un autre produit Sonoff car je me suis dit que fonctionnant sous ESP8266 ils devaient tous être quelque peu semblables.
J’ai donc trouvé la solution ici : http://www.compu-tek.fr/blog/1325-2/
Si la référence à un site externe gène, je peux supprimer ce post.

Il semblerait que Sonoff ait fait quelques modifications récemment. Il faut utiliser une autre procédure.
Cette procédure utilise la méthode « DOUT ».

Par contre, je ne sais pas à quoi cela correspond ?
Ça a marché pour moi, alors si ça peut aider.

Guitou

Salut Christian, tu as suivi la procédure pas à pas du site que tu donnes en référence ? ou bien tu as modifié le fichier BIN pour pointer vers celui de l’autre solution ? ESPEasy_R120_1024.bin En te remerciant pour ta réponse

ChristianM

Bonsoir, J’ai utilisé le tuto tel quel avec la version ESPEasy_v2.0.0-dev12. Dans
Flash Download Tools je pointe vers ESPEasy_v2.0.0-dev12 cité ci-dessus

Je vais faite un tuto pour expliquer comment faire avec PlatformIO. Je trouve que la compilation et l’installation pose moins de problème. Ca devrait sortir la semaine prochaine

Moeb

Mille mercis pour le tuto (et pour les contenus du site en général!) ainsi pour la trouvaille de ChristianM qui m’a permis d’avancer. J’avais exactement le même problème.

Avec plaisir Moeb :D. Bonnes fêtes de fin d’année

ChristianM

Bonjour,
Le flashage marche mais après plusieurs essais, je n’arrive toujours pas à voir le réseau ESP_0.
Une idée ?

Bonsoir Christian. Avez vous essayer de redémarrer le S20. Idem coté PC, désactiver le WiFi pour forcer l’actualisation des réseaux. Sinon, même punition que pour la Wemos, on se connecte via le moniteur série de l’IDE Arduino pour récupérer le message d’erreur. Bon week end.

ChristianM

oui j’ai essayé de redémarrer la S20 et le PC. A chaque redémarrage de la S20 je maintiens le bouton appuyé pendant le mise en place de l’alimentation et même un peu plus pour être sûr. Aucun message sur l’IDE. Est-ce qu’une des deux diodes doit clignoter pendant le versement du code ? J’ai vérifié en sortie du FTDI232, j’ai 3,66V et 0,43 A, ce devrait être suffisant. Ma carte n’ayant pas d’inscription, je me suis fié à la photo pour les pins : Vcc RX TX GND. J’ai aussi essayé en effaçant la carte avec Nodemcu Flasher avant de… Lire la suite »

SOHIER

Une coquille s’est glissée dans le tableau de la connexion avec le FTDI pour le flashage: il faut bien sûr croiser les RX et TX ( RX du ESP8266 avec TX du FTDI et vice versa)

Domotique et objets connectés à faire soi-même