#Hack Sonoff RF Bridge 433 (R1/R2), test du firmware OpenMQTTGateway

Je vous propose de débuter une petite série d’articles sur le hack du pont Sonoff RF Bridge 433 testé récemment. Comme tous les modules domotiques Sonoff, il est très facile d’installer un firmware Open Source alternatif pour connecter directement vos appareils à un serveur domotique DIY tel que Jeedom, Domoticz ou Home Assistant. Bien évidemment, cette opération va vous faire perdre la compatibilité avec l’application eWeLink pour iOS et Android ainsi que le support des assistants vocaux Amazon Alexa et Google Home.

 

Si vous utilisez un assistant vocal, il faudra gérer le depuis le serveur domotique. Je vous propose de commencer par le firmware OpenMQTTGateway (merci Migui pour l’info) initié par 1technophile. J’ai réalisé l’installation sur la version R2 de 2018 mais c’est exactement la même chose pour la première génération du boitier. Vous pouvez acheter le RF Bridge 433 sur Amazon pour environ 17€ ou directement en chine chez la plupart des marchands

Présentation (rapide) du firmware OpenMQTTGateway

OpenMQTTGateway a été développé pour fonctionner sur les MCU Arduino avec une carte Ethernet W5000, les cartes de développement ESP8266 et ESP32. Il supporte également les ESP8285 qui équipent la majorité des modules domotiques Itead Sonoff.

Il permet de décoder (et même de mimer) les commandes en provenance d’une grande variété de protocoles et de fréquences radio :

  • 433MHz du Sonoff RF Bridge 433
  • RFM69, fréquences 433/868/915Mhz à choisir en fonction de vos appareils domotiques (en de la législation en vigueur dans votre pays)
  • IR, récepteur Infra Rouge
  • BLE, permet la détection d’appareils Bluetooth (c’est ce qu’on appel le beacon ou ibeacon). Pratique pour déclencher un scénario lorsque vous arrivez ou partez de la maison
  • Xiaomi Mi Flora, présentée ici. Fonctionne en Bluetooth
  • 2G (GSM/GPRS)

C’est vraiment ce qui fait la force de ce firmware. Le RF Bridge devient un pont totalement transparent qui se “contente” de renvoyer les codes interceptés (ici en IR ou radio 433MHz). Sur un Arduino équipé d’une interface Ethernet W5000 ou un ESP8266/ESP32, on pourra ajouter le bluetooth et d’autres fréquences radio. Le nombre limite de 16 appareils disparait par la même occasion. Cette limite de 16 appareils est imposée par Sonoff, probablement pour limiter les ressources en serveurs.

On perd également la notion de jumelage (pairing). Inutile donc de chercher comment faire. A chaque fois qu’un code radio est décodé, il est transmis sous la forme de messages MQTT. Voici un exemple :

rfbridge433/OpenMQTTGateway/SRFBtoMQTT/Raw 1F4A00FA030C5BBEA2
rfbridge433/OpenMQTTGateway/SRFBtoMQTT 6012578
rfbridge433/OpenMQTTGateway/SRFBtoMQTT/Tsyn 8010
rfbridge433/OpenMQTTGateway/SRFBtoMQTT/Thigh 250
rfbridge433/OpenMQTTGateway/SRFBtoMQTT/Tlow 780

On dispose également d’une prise en charge des capteurs les plus courants (température, humidité, consommation d’énergie basse tension, pression atmosphérique, détection de mouvement, luminosité…). Un grand bravo à tous les développeurs du projet !

 

OpenMQTTGateway shema

Source : https://github.com/1technophile/OpenMQTTGateway/wiki

Revert de la médaille, il n’y a aucun support natif des Topics permettant de s’interfacer avec un serveur domotique (Domoticz, Jeedom). Il faudra développer sa propre interface avec Node-RED par exemple. En contrepartie, on pourra piloter un nombre illimité d’appareils et créer des scénarios complexes.

Coté décodage radio, le circuit EFM8BB10F8G n’a pas été bi-passé. Certaines trames radio ne sont pas décodés. Impossible par exemple d’intercepteur une alarme depuis mon détecteur de fumée Chacon 34126 (LM-101LG) très bien pris en charge par RFLink. Il est possible d’installer un firmware alternatif sur le circuit EFM8BB10F8G de Silicon Labs pour ajouter le support des commandes 0xA0 to 0xA5. Un connecteur série est d’ailleurs disponible sur la carte à cet effet. Attention toutefois, il y a de grande chance que vous perdiez la compatibilité avec le firmware OpenMQTTGateway, voir ESPurna et Tasmota. Affaire à suivre…

Démonter le boitier Sonoff RF Bridge 433 R2

Le fond du boitier est fixé à l’aide de 4 vis cachées sous les patins en mousse. Après avoir dévissé les 4 vis, la carte électronique du RFBridge est directement accessible.

rf bridge 433 unboxing

Je n’ai pas de boitier de première génération mais il ne semble pas y avoir de vis de fixation d’après les photos sur internet.

 

Souder le connecteur Série sur le RF Bridge 433 (R1 et R2)

Le connecteur série se situe en dessous du rétro-éclairage à LED vert qui illumine le logo Sonoff. L’éclairage à LED n’est pas collé, il faut juste déformer les pattes pour le soulever.

sonoff rf bridge 433 circuit

Retirez ensuite le petit intercalaire en mousse pour accéder aux pistes du connecteur UART.

sonoff rf bridge 433 circuit

Soudez ensuite un connecteur à 4 broches (ou 5 si vous voulez exposer la broche I2C SDA de l’ESP8266). Prenez le temps de préchauffer quelques secondes en plaçant la panne du fer à souder à la jonction entre la broche du connecteur et la piste du circuit. Le circuit “mouille” très peu. N’apportez pas trop d’étain au risque de venir souder deux broches ensemble 🙁

Si ça vous arrive, pas de panique, utilisez une pompe à dessouder et une tresse de cuivre pour nettoyer le circuit.

Commencez par retirer l’excédent d’étain avec la pompe à vide puis frottez le circuit avec la tresse de cuivre en vous aidant de la panne du fer à souder chauffée.

On arrive assez bien à récupérer les catastrophes 😉

sonoff rf bridge probleme soudure connecteur serie

Branchez le câble du convertisseur USB / Série (R1 et R2)

Vous pouvez utiliser n’importe quel convertisseur FTDI USB / Série. Ici j’ai utilisé un câble USBTTL232-3V Adafruit dont voici le repérage des broches. 

.

 

 

 

Comme d’habitude, il faut croiser les broches RX/TX. Si vous n’arrivez pas à téléverser le firmware, c’est la première chose à vérifier. Branchement coté convertisseur USB/UART.

sonoff rf bridge 433 uart converter

 

Et sur le RF Bridge 433 (modèles R1 ou R2). De gauche à droite : 3V3, RX, TX, GND

sonoff rf bridge 433 uart connector

Mettre le RFBridge 433 en mode programmation (R1 et R2)

La procédure pour passer l’ESP8285 en mode programmation circule un peu partout sur GitHub. J’ai appliqué la procédure proposée par PeterEmbedded

  • Débrancher l’alimentation 5V
  • Mettre le commutateur S2 sur OFF
  • Maintenir le micro switch (pairing) durant 5s en mettant sous tension
  • Relâcher le bouton pairing

Je n’ai pas à disposition le boitier de première génération mais la procédure semble parfaitement identique d’après ce tutoriel d’installation du firmware Tasmota publié sur GitHub.

Pour les 2 versions du boitier, la LED verte reste allumée. Elle n’a pas de fonction, c’est juste un indicateur de mise sous tension.

Récupérer le firmware OpenMQTTGateway

Allez sur GitHub sur cette page pour télécharge le code source du projet.

github openmqttgateway rf bridge 433 sonoff

Renommer le fichier ZIP en supprimant la partie (-master) puis décompressez ce dernier.

Ouvrez le fichier OpenMQTTGateway.ino qui se trouve à la racine du répertoire avec l’IDE Arduino.

Installer un broker MQTT (Mosquitto)

Open MQTT Gateway publie et souscrit les messages vers un serveur MQTT (aussi appelé Broker). Vous aurez besoin d’indiquer les paramètres de connexion dans le fichier de configuration :

  • Adresse IP du broker MQTT
  • Port du broker MQTT
  • Optionnel mais fortement conseillé, l’utilisateur et le mot de passe de connexion

Vous pouvez installer un broker sur un PC Windows ou Linux, un Mac et évidemment un Raspberry Pi. Lisez ce tutoriel qui explique en détail comment installer et sécurisé le broker Open Source Mosquitto.

Configurer le firmware OpenMQTTGateway pour le RF Bridge 433

Open MQTT Gateway est un projet générique qui s’adapte à différentes plateformes. Il faut donc modifier la configuration en fonction de la cible (le type de micro-contrôleur) et des éventuels capteurs ou actionneurs branchés sur ce dernier. Tout est modifiable depuis le fichier User_config.h

Broker MQTT

Dans la section MQTT Parameter definition, indiquez les paramètres du broker MQTT (utilisateur, mot de passe, IP, port). Laissez vide si aucune authentification n’est nécessaire (déconseillé).

//MQTT Parameters definition
//#define mqtt_server_name "www.mqtt_broker.com" // instead of defining the server by its IP you can define it by its name, uncomment this line and set the correct MQTT server host name
char mqtt_user[20] = "broker user name"; // not compulsory only if your broker needs authentication
char mqtt_pass[20] = "broker user password"; // not compulsory only if your broker needs authentication
char mqtt_server[40] = "ip broker";
char mqtt_port[6] = "1883";

Mode de connexion WiFi

Il est possible de configurer le connexion WiFi à l’aide d’un gestionnaire de connexion (nous verrons plus bas comment faire) ou fixer dans le code (en dur) les paramètres de connexion. Si vous débutez, je vous conseille la seconde option. Dé-commentez #define ESPWifiManualSetup et mettrez en commentaire #define WifiManager_password.

#define ESPWifiManualSetup true //uncomment you don't want to use wifimanager for your credential settings on ESP
//#define WifiManager_password "your_password"

Paramètres WiFi

Si vous optez pour l’option de configuration dans le code, indiquez le nom (ssid) et le mot de passe de réseau WiFi

#define wifi_ssid "xxxx"
#define wifi_password "xxxx"

Paramètre pour la mise à jour OTA (Over The Air)

Une fois que le firmware aura été installé, vous pourrez le mettre à jour en WiFi depuis l’IDE Arduino, c’est la mise à jour OTA, ou Over The Air en anglais. Pratique, vous pouvez installer la Gateway au plus près de vos équipements. Un fois redémarré, vous trouverez le pont dans la liste des ports.

openmqttgateway ide arduino ota update sonoff rf bridge 433

Il est possible de spécifier dans la configuration le nom et le mot de passe qui sera demandé avant la mise à jour.

/*-------------DEFINE YOUR OTA PARAMETERS BELOW----------------*/
#define ota_hostname Gateway_Name
#define ota_password "OTAPASSWORD"
#define ota_port 8266

Pour en savoir plus et utiliser la librairie Arduino OTA dans vos projets, vous pouvez lire ce tutoriel qui explique en détail comment faire.

Type d’appareil

Dernier paramètre, le plus important en fait, on indique au firmware sur quel type d’appareil il va fonctionner. Dé-commentez la configuration ZgatewaySRFB et mettez en commentaire toutes les autres.

//#define ZgatewayRF          //ESP8266, Arduino, ESP32
//#define ZgatewayIR          //ESP8266, Arduino,         Sonoff RF Bridge
//#define ZgatewayBT          //ESP8266, Arduino, ESP32
//#define ZgatewayRF2       //ESP8266, Arduino, ESP32
#define ZgatewaySRFB      //                          Sonoff RF Bridge
//#define ZactuatorONOFF    //ESP8266, Arduino, ESP32,  Sonoff RF Bridge
//#define ZsensorINA226     //ESP8266, Arduino, ESP32
//#define ZsensorHCSR501    //ESP8266, Arduino, ESP32,  Sonoff RF Bridge
//#define ZsensorADC        //ESP8266, Arduino, ESP32
//#define ZsensorBH1750     //ESP8266, Arduino, ESP32
//#define ZsensorTSL2561    //ESP8266, Arduino, ESP32
//#define ZsensorBME280     //ESP8266, Arduino, ESP32
//#define ZsensorDHT        //ESP8266, Arduino, ESP32,  Sonoff RF Bridge
//#define ZgatewayRFM69     //ESP8266, Arduino, ESP32

Comme vous pouvez le voir, il est possible d’ajouter des accessoires au RF Bridge 433 :

  • Une sonde de température DHT. Le firmware supporte les DHT11, DHT21 et DHT22. Il faut indiquer manuellement le type de capteur dans le fichier config_DHT.h
  • Un bouton ON/OFF
  • Un récepteur infra-rouge, génial pour prendre en détourner un bouton de la télécommande de la télé et piloter un éclairage à LED depuis son canapé
  • Un détecteur de mouvement PIR HCSR501 qui transformera la gateway en point de surveillance pour un système d’alarme d’appoint pas cher !

Ca fera l’objet d’un prochain tutoriel si vous êtes intéressés.

 

Installer le support des cartes ESP8266 sur l’IE Arduino

Si vous n’avez jamais programmé les cartes ESP8266, vous devez commencer par installer les librairies nécessaires sur l’IDE Arduino. Sur macOS, allez dans le menu Arduino puis Préférences… Cliquez sur l’icône indiquée par la flèche rouge sur la photo ci-dessous.

ide arduino esp8266 preference

Dans le champ de saisie, collez l’adresse internet suivante puis validez

https://arduino.esp8266.com/stable/package_esp8266com_index.json
http://arduino.esp8266.com/staging/package_esp8266com_index.json

ide arduino libraire url esp8266

Cela permet d’indiquer à l’IDE Arduino qu’il doit aller sur le site arduino.esp8266.com afin d’aller y récupérer d’autres cartes compatibles. Maintenant, allez dans le menu Outils puis Type de Cartes et enfin Gestionnaire de carte

 ide arduino gestionnaire carte

Dans le champ de recherche, saisissez esp8266 pour trouver les nouvelles cartes à installer. Si les cartes n’apparaissent pas, vérifiez dans les préférences que l’URL est correcte. vérifiez également la connexion Internet. Cliquer sur Installer.

ide arduino install esp8266 board

L’installation ne dure que quelques minutes. L’installation terminée, fermez le gestionnaire de carte et ouvrez de nouveau le menu Outils. Dans le sous-menu Type de Carte, vous avez maintenant une nouvelle section appelée ESP8266 Modules.

ide arduino esp8266 board list

Sélectionner la carte ESP8285 de destination

Branchez maintenant le convertisseur USB/UART à votre ordinateur. Sur Windows, attendez quelques instants que le pilote soit installé. Depuis l’IDE Arduino, sélectionnez la carte Generic ESP8285 et ajustez le paramètres comme ceci :

  • CPU Frequency : 80 MHz
  • Flash Size : 1M
  • Upload Speed : 115200
  • Port : sélectionnez le port COM sur lequel ce trouve la carte. Ici, c’est sur un Mac. Sur Windows, ce sera COM1…

hack sonoff rf bridge 433 R2 openmqttgateway esp8285

Si la carte n’apparaît pas dans la liste, lisez ce tutoriel qui explique comment résoudre les problèmes d’installation des convertisseurs CH34x sur Windows, macOS ou Linux.

Installez les librairies manquantes sur l’IDE Arduino

Le firmware Open MQTT Gateway utilise plusieurs librairies Arduino. S’il manque une librairie, vous allez obtenir un message d’erreur à la compilation. La librairie manquante est indiquée dans le message d’erreur (en rouge) sur la console en bas de l’écran.

Vous devrez au minimum installer les librairies IR Remote et RC-Switch. Depuis le menu Croquis, allez dans Inclure une blibliothèque puis Ajouter la bibliothèque ZIP.

Indiquez le nom de la librairie dans le champ de recherche puis Installer

Téléverser le firmware

Tout est prêt, vous pouvez téléverser le firmware ! Si tout est correct (soudure, câblage, compilation), l’opération se déroule en 2 ou 3 minutes.

OPENMQTTGATEWAY download ide arduino sonoff rf bridge

Contrairement aux cartes de développement habituelles (Arduino, ESP8266, ESP32), la carte ne dispose d’aucune LED permettant de suivre l’activité du port série. Il faudra se fier uniquement à la barre de progression affichée sur l’IDE Arduino (ou PlatformIO).

Débranchez le câble micro USB d’alimentation puis passez l’interrupteur sur ON. Mettez sous tension et ouvrez le moniteur série de l’IDE Arduino pour vérifier que tout fonctionne bien. Sélectionnez la vitesse de 19200 bauds.

ide arduino serial monitor openmqttgateway

OMG renvoi sur le port série tous les messages. L’adresse IP du pont, l’état de la connexion au broker MQTT…

Configuration de la connexion WiFi via le WiFiManager

Par défaut, OMG utilise la librairie WiFiManager pour configurer la connexion WiFi. C’est pratique si changez le mot de passe du réseau WiFi ou si vous voulez faire une démo domotique chez un ami. Au démarrage, si le pont n’arrive pas à se connecter au réseau WiFi configuré, il démarre en mode AP (Access Point, point d’accès).

Utilisez le gestionnaire de connexion WiFi de votre ordinateur pour vous connecter au RF Bridge 433. Le mot de passe par défaut est your_password (!). N’oubliez pas de le personnaliser dans le fichier User_config.h en cherchant la ligne #define WifiManager_password.

wifimanager openmqttgateway

Pour en savoir plus sur la librairie WiFiManager et l’utiliser dans vos projets, lisez ce tutoriel.

Test de réception de codes radio depuis MQTT

Maintenant, ouvrez un Terminal ou utilisez un pour vous connecter au broker MQTT. Adaptez la commande suivante en spécifiant votre nom d’utilisateur / mot de passe

mosquitto_sub -h localhost -t "#" -v -u nomutilisateur -P motdepasse

Ou sans authentification

mosquitto_sub -h localhost -t "#" -v

Appuyez sur le bouton d’une télécommande radio 433MHz, vous devriez recevoir immédiatement les codes interceptés !

mqtt broker sonoff rf bridge 433 hack openmqttgateway

 

Voilà, le projet OpenMQTTGateway s’installe sans vraiment de difficulté. Le plus dure reste encore la soudure du connecteur Série à cause de la faible mouillabilité du circuit (mais rien d’insurmontable). Dans les prochains tutoriels, nous ferrons la même chose avec ESPurna et Tasmota comme avec le Sonoff 4CH Pro. Petite regret, il n’y a encore rien de prévu pour s’interconnecter avec Domoticz ou Jeedom. On devrait pouvoir s’en sortir en développant une passerelle en python, y plus qu’à…

Tous les autres Hacks

Si le sujet vous intéresse, voici d’autres tutoriels sur le hack de produits domotiques.

 

Mises à jour

[30/05/2019] Mise à jour du lien vers les cartes ESP8266

 

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

16
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

Re, (Désolé mais le bouton répondre ne fonctionne pas chez moi) Effectivement dans la découverte on fait des échecs en loupant certaines infos. Sinon j’ai réussi à faire autrement. Alors RFlink ne capte rien comme commande, je confirme. Ce que j’ai fait c’est que j’ai affecté à un bouton du sonoff une touche d’une telecommande 433mhz. Et là via RFlink ca fonctionne et de mon Domoticz je peux faire monter mon volet via l’inter (mais je suis obligé d’appuyer 2 fois ??) soit via une scène (là un seul appui). Ce qui me gène c’est que j’ai le voyant WIFI… Lire la suite »

Bonjour, En relisant mon post, je me dis que je n’ai pas été clair. Je n’ai pas le RFBridge mais le RFLink (merci pour le tuto). Suite à cela j’ai acheté des Sonoff T1 R2 pour piloter mes volets et suivi le tuto pour les flasher, sauf que depuis je n’ai plus accès aux 433Mhx (un autre commentaire allant dans ce sens sur le tuto). D’où ma question, quel est l’intérêt de ce Bridge qui donc garde le 433Mhz mais avec lequel on ne pourra pas piloter les inter SONOFF qui eux n’ont plus cette fréquence après le flash ?!?… Lire la suite »

Bonjour,
En lisant le titre de ce nouveau billet je me dis cool il va peut être y avoir une solution pour moi….
J’ai acheté des Sonoff T1 R2 EU pour piloter mes volets.
J’ai suivi les tutos et là mauvaise surprise, plus de gestion du 433Mhz… J’avais pris ces inter justement pour cette fréquence.
Je vois que la passerelle est hackée, donc je suppose que l’on garde la fréquence 433Mhz?!?

Alors il y a un nouveau hack qui permet de piloter ces sonoff ?

[…] la procédure de flashage, reportez-vous à cet excellent billet sur Projets DIY : tout y est décrit en détail, mais retenez simplement qu’il vous faudra copier le contenu […]

Migui Pda

Aïe, un coup pour nous faire regretter notre mini RFLink 😉 Qu’en est-il de ladite limitation à 4 senseurs d’ouverture connue avec le firmware initial pour ce bridge ? Est-ce que ce OpenMQTTGateway passe au-delà de cette quantité restrictive ? Auquel cas cette limitation était bien due au firmware et non au hardware. Peut-être ne pourrez-vous pas répondre par manque de senseurs, mais sait-on jamais. A défaut d’un Domoticz ou Jeedom, essayez Crouton (Dashboard MQTT) : http://crouton.mybluemix.net/crouton/gettingStarted Puisqu’il ne nécessite aucun service (venant de sa documentation http://crouton.mybluemix.net/documentation#crouton-getting-started-mqtt-broker) : “The beauty of Crouton is that, like the device, Crouton is also… Lire la suite »

Bonjour Migui. Non il ne faut pas regretter. RFLink a beaucoup d’autres avantages. Multi-fréquences, décode plus de messages radio, parfaitement intégré dans la plupart des serveurs domotiques. Oui, la notion de nombre d’appareil max. disparait puisqu’ils sont gérés par un serveur domotique, un projet python/nodejs/nodered… Oui, j’attendais un peu que le projet évolue avant de mettre quelques croutons sur le site 😉
PS : merci pour les relectures 🙂 Heureusement que vous me donnez un coup de main !

Salut, Merci pour ce tutoriel détaillé en français. Si vous avez des questions sur OpenMQTTGateway n’hésitez pas!
1technophile

Avec plaisir et encore merci pour tout votre super travail !

schmurtz

Hello, merci pour ce tuto! J’ai vu que 1technophile détaillait la procédure pour ajouter un émetteur/récepteur infra rouge. Pensez vous que l’on puisse faire la même chose en ajoutant un émetteur/récepteur 868Mhz ? J’ai vu que l’ajout de 2 modules (RX/TX) RF 433 mhz pouvait ne nécessiter que 2 GPIO du coup n’est-il pas possible de faire la même chose avec 2 modules 868Mhz (1 module RX et 1 module TX) ? J’ai vu que le module RFM69 pouvait être 868Mhz et qu’il était supporté par OpenMQTTGateway mais hélas il nécessite 5 GPIO dispo de ce que j’ai pu voir…… Lire la suite »

Bonjour et merci beaucoup. C’est une excellente idée mais il faut que le firmware prenne en charge le module radio. Sur le papier effectivement cela semble possible. Le mieux est d’en faire la demande directement à l’équipe de dév. de 1technophile. Bon week end

schmurtz

Hello, quelqu’un aurait-il un backup du firmware original de la gateway sonoff ?

Merci !

lulutins

le voila http://dl.free.fr/kccHHworb par contre pas sur que ca fonctionne si tu le réinjecte. J’ai fait des essais sur d’autre esp et j’ai pas été convaincu

Schmurtz

Un grand merci ! En effet j’ai appris récemment que la mac adress était stockée directement au sein du firmware mais bizarrement ça a l’air de fonctionner… Je vais en profiter pour essayer de comprendre ou est stocker l’adresse mac au sein du firmware.

Bonjour et merci beaucoup. Je pense que c’est dans le fichier webserver.ino dans cette section de configuration
// Ethernet configuration
uint8_t mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // MAC Address
uint8_t ip[] = { 192,168,0, 2 }; // IP Address
EthernetServer server(80); // Server Port 80

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