Hack . Prise connectée SONOFF S20 pour en faire un super smart plug avec ESP Easy R120 • Domotique et objets connectés à faire soi-même

ip3x9ne75gujz02jfe5a-2723225

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.

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.

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.

dckcwfwwntwyuvrqleo6-1622176

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 :

Double cliquer pour lancer flash.cmd

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 :

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.

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

Configuration des Devices :

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

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.

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.

Et vous, vous utilisez ESP Easy pour faire quoi ?

  • Environnement : température, humidité, baromètre, poussière, lumière, gaz 31%, 190 votes

    190 votes 31%

    190 votes – 31% de tous les votes

  • Piloter : relai, servo-moteur, pompe, électro-vanne… 27%, 167 votes

    167 votes 27%

    167 votes – 27% de tous les votes

  • Mesure : courant, compteur, distance… 9%, 56 votes

    56 votes 9%

    56 votes – 9% de tous les votes

  • Affichage : OLED, LCD, LED 9%, 54 votes

    54 votes 9%

    54 votes – 9% de tous les votes

  • Alarme : mouvement, RFID, contacteur 8%, 46 votes

    46 votes 8%

    46 votes – 8% de tous les votes

  • Plusieurs choses à la fois : température, comptage, commande relais, relevé d’état* 7%, 41 vote

    41 vote 7%

    41 vote – 7% de tous les votes

  • Thermostat 4%, 26 votes

    26 votes 4%

    26 votes – 4% de tous les votes

  • Comment connecter un petit récepteur 433mhz pour sonde XH300 imagintronix, réalisé à l’aide d’un pic12F1822 qui communique via le bus i2c* 1%, 8 votes

    8 votes 1%

    8 votes – 1% de tous les votes

  • RFLiNK* 1%, 7 votes

    7 votes 1%

    7 votes – 1% de tous les votes

  • Notifier : MP3, vibreur 1%, 6 votes

    6 votes 1%

    6 votes – 1% de tous les votes

  • Anémomètre* 1%, 5 votes

    5 votes 1%

    5 votes – 1% de tous les votes

  • Puissance thermique* 0%, 3 votes

    3 votes

    3 votes – 0% de tous les votes

Avez-vous aimé cet article ?