L’objectif du projet va être de hacker un équipement piloté par une télécommande 433 MHz basique pour le connecter à un serveur et permettre un contrôle à distance.
Capture et analyse des signaux de la télécommande originale
Afin de pouvoir réaliser une copie, il convient de connaître la nature des trames envoyées par la télécommande d’origine.
J’utilise pour cela une clé SDR et le logiciel Universal Radio Hacker disponible sur toutes les plateformes : https://github.com/jopohl/urh.
Ce logiciel permet la capture de signaux et leur décodage / encodage. Nous allons ici nous contenter de son outil de capture et de visualisation.
Après avoir créé un projet, nous réalisons une capture (File -> Record signal). Dans cette capture, on va chercher à enregistrer les trames en appuyant sur tous les boutons de la télécommande plusieurs fois. Le plusieurs fois a son importance puisqu’il permettra de détecter la présence d’un code roulant (un compteur s’incrémente à chaque appui sur le bouton) et éventuellement d’un chiffrement (total de la trame ou partiel). Je ne rentrerai pas plus dans le détail pour ces deux situations.

Notre télécommande est ici une télécommande fonctionnant en 433,92 Mhz. Nous réalisons donc la capture à une fréquence proche de celle-ci mais suffisamment décalée. Si nous choisissons une fréquence trop proche, le signal obtenu sera d’une fréquence trop faible pour bien percevoir les symboles encodés.


Une fois l’enregistrement réalisé, nous allons pouvoir enregistrer puis analyser les trames obtenues.
Voici ce que j’obtiens :

Nous pouvons voir distinctement les différents appuis sur les boutons qui correspondent à chaque bloc sur la capture.

En zoomant sur l’enregistrement, nous distinguons que la trame est répétée 16 fois et que les trames de début et fin sont tronquées. Ceci permet à l’appareil récepteur de réussir à décoder la commande même en ayant eu des difficultés à recevoir certaines trames.

Enfin, en zoomant encore, nous pouvons voir le contenu de notre trame.
Les trames de ma télécommande sont composées ainsi :
- 4 symboles de données fixes
- 4 symboles de données qui changent suivant la commande
- 9 symboles fixes
Il est possible que les trames correspondent à un encodage particulier : Manchester I ou II, NRZ… Dans ce cas, nous pouvons utiliser URH pour décoder les données des trames dans l’onglet « Analysis ».
Dans mon cas, je définis arbitrairement que :
- 1110 correspond à un 1
- 1000 correspond à un 0
- 1100 ne correspond à rien, mais cela n’a pas d’importance vu qu’il est fixe

Les trames sont donc composées d’un octet de données suivi de 9 symboles fixes. Je peux faire une table de correspondance entre l’octet de données et l’action que ça a sur le système lors de l’appui sur la touche correspondant.
Fabrication de la télécommande connectée
Afin de réaliser la télécommande connectée, nous aurons besoin de deux éléments :

(ou autre carte basée sur un ESP8266)

L’émetteur est alimenté en 3.3 ou 5V et son pin data est connecté au GPIO2. Une antenne quart d’onde peut-être soudée sur l’émetteur pour améliorer les performances.

La programmation de l’ESP8266 s’effectue grâce à PlatformIO mais peut très bien se faire depuis l’IDE Arduino. Dans ce second cas, je vous renvoi à un précédent article : Gyrophare piloté par Discord.
Les sources sont disponibles sur GitLab : https://gitlab.com/Electroalex26/remote-control-433mhz-connected/
Il convient que vous modifiez suivant vos paramètres le fichier config.h et la fonction txCmd en fonction des trames que vous avez reçues et analysées.
Interface avec le broker MQTT
Ensuite, suivant ce que vous désirez en faire, vous pouvez interfacer cette télécommande connectée avec n’importe quel outil. Vous pouvez par exemple l’interface à votre contrôleur domotique.
Il est également possible grâce à NodeRed par exemple de réaliser une simple interface graphique permettant d’interagir avec.


Ressources complémentaires
- Universal Radio Hacker : https://github.com/jopohl/urh
- SDR++ pour l’observation des signaux : https://www.sdrpp.org/
- Sources associées au projet : https://gitlab.com/Electroalex26/remote-control-433mhz-connected
- NodeRed dashboard : https://flows.nodered.org/node/node-red-dashboard
