Fabriquer une passerelle domotique RFLink/RFXCom 433MHz pour 10,50€ (test avec Domoticz) • Domotique et objets connectés à faire soi-même

RFLink est un projet Open Source qui permet de réaliser une passerelle (gateway) entre un logiciel domotique et des modules domotiques qui communiquent par ondes radio. C’est une alternative très économique à la gateway commerciale RFXCom. RFLink est capable de gérer les fréquences 315, 433, 868, 915MHz et 2,4GHz en utilisant des modules nRF24L01+.

Tutoriel actualisé le 15 mai 2020

Le projet RFLink est développé par Stuntteam. Vous pouvez soutenir le projet (qui permet d’acheter les nouveaux équipements domotiques) en faisant un don sur le blog du projet.

Attention. Vérifiez la législation sur l’emploi des fréquences radio dans votre pays.

Pourquoi remplacer le RFXCom par une passerelle RFLink ?

RFXCom est le nom commercial d’une passerelle radio très connue et employée en domotique. La quasi totalité des logiciels domotiques prennent en charge cette passerelle mais son plus gros inconvénient reste son prix. Il est difficile de la trouver à moins de 90€. Si votre budget domotique est serré, la passerelle RFLink est une alternative très économique et facile à réaliser. Si vous n’avez pas l’âme d’un bricoleur ou si vous débutez, la société Nodo qui soutient également le projet commercialise des kits à assembler soi même ou des modules prêt à l’emploi sur sa boutique en ligne à partir de 37€ environ (hors frais de port).

Enfin la passerelle RFXCom ne supporte que la fréquence radio 433MHz (la version 315MHz ne semblant plus commercialisée) ce qui n’est pas le cas du projet RFLink qui supporte d’autres fréquences :  315MHz, 433MHz, 868MHz, 915MHz et 2,4GHz pour une prise en charge expérimentale des objets connectés MySensors.

Attention. Vérifiez la législation de votre pays avant d’utiliser certaines fréquences radio. En France, c’est l’ACERP qui donne l’autorisation d’exploiter les fréquences. Vous trouverez toutes les informations dans le document Utilisation de fréquences sur des « bandes libres » et projet de décision de l’ARCEP relatif aux dispositifs à courte portée d’octobre 2014 consultable en ligne ici

Que peut-on faire avec une Gateway RFLink ?

L’équipe de Nodo travaille depuis plusieurs années maintenant sur ce projet et ajoute constamment de nouveaux matériels pris en charge par la gateway. Si vous possédez des modules compatibles avec le firmware de la RFLink, vous pourrez recevoir les trames de cette dernières (état, données…) et les afficher dans votre logiciel domotique. Vous pourrez également transmettre des trames depuis votre logiciel domotique et ainsi piloter les actionneurs par ondes radios. La version R43 prend en charge une liste impressionnante de matériels dans tous les domaines (la liste complète est disponible ici). En voici un petit aperçu rapide :

Matériel radio compatible : choisissez un récepteur de qualité

Pour fabriquer une passerelle RFLink, Nodo préconise (avoir les avoir tous testés à priori) d’utiliser un module radio de qualité pour s’assurer d’une bonne émission / réception des paquets. Les modules Asiatiques low cost sont déconseillés (même s’ils peuvent convenir pour des essais ou une utilisation à courte distance). Pour ma part, j’ai opté pour un module Super Heterodyne RXB6 qui coûte environ de 5,30€.

Emetteur

Si vous désirez commander des appareils domotique, il faudra également ajouter un émetteur radio. Pour la fréquence 433MHz, Nodo ne préconise rien de particulier. Les modules low cost XD-FST FS1000A semblent convenir parfaitement et ne coûtent presque rien (environ 1,70€). Par contre le récepteur ne sera d’aucune utilité.

Pour augmenter la porté de l’emission, il est préférable de souder une petite antenne torsadée sur la broche ANT disponible dans le coin supérieur droit du PCB.

Kit Superheterodyne récepteur + émetteur (433MHz ou 315MHz)

On trouve maintenant des kits contenant un émetteur et un récepteur superheterodyne 433MHz beaucoup moins cher.

Version 433MHz

Version 315MHz

En ajoutant une antenne externe SMA, il est possible d’augmenter la porté d’émission / réception

Reste du matériel nécessaire

Le firmware RFLink est trop volumineux pour fonctionner sur un Arduino R3 classique. C’est pour cette raison qu’il vous faudra faire l’acquisition d’un Arduino Mega 2560. Un clone d’Arduino Mega peut également convenir. Pour ma part, j’ai opté pour un SainSmart Mega 2560. L’Arduino Mega est un peu plus encombrant qu’un Arduino R3. On trouve également des clones plus compacts (mais je n’ai pas encore testé). L’avantage pour Nodo d’avoir opté pour un Mega 2560 est le grand nombre d’entrée/sortie (x54). Plutôt que de devoir configurer le firmware en fonction du module radio employé, celui-ci envoi les paquets des signaux à envoyer à toutes les antennes reliées à l’Arduino.

Pour améliorer la réception de votre gateway, il est préférable d’ajouter une antenne externe avec connecteur SMA. Pour démarrer, vous pouvez prendre un simple morceau de cuivre de récupération 17cm de long. Un câble de section 1,5mm2 pourra faire l’affaire.

Coût de fabrication

Voici le coût moyen de fabrication à minima, sans boîtier ni antenne externe (un simple câble de cuivre de 17cm).

Pour fabriquer une gateway plus compacte, on peut aussi opter pour un clone d’Arduino Mega 2560 Mini. Si le projet vous intéresse vous pouvez continuer en lisant ce tutoriel

Gateway RFLink avec un Arduino Mega 2560 Pro Mini RobotDyn et boitier imprimé en 3D

Voici les composants nécessaires pour la version compacts

Câblage des modules radio

La câblage est très simple. Les modules radio ne nécessitent qu’un alimentation 5V, la mise à la masse et le câblage de la sortie Data. Si vous optez pour une antenne externe (attention elle n’est pas disponible sur tous les modules), il faudra câbler le +5V, GND et ANT (l’antenne)

Nodo a répertorié le câblage des modules pris en charge par RFLink. Voici un tableau de synthèse tiré du blog de Nodo.

Module Pin 1 Pin 2 Pin 3 Pin 4 Pin 5 Pin 6 Pin 7 Pin 8 Pin 9 Pin 10
Antenne GND Mega/Pin 14 (TX) Mega/Pin 15 Mega/Pin 22 GND Mega/Pin 19 (RX) Mega VCC (100nf au GND)
Antenne Mega/Pin 16 (RX VCC) Mega/Pin 19 (RX) GND
VCC Mega/Pin 19(RX) GND Antenne
Antenne  GND VCC (3 à 5V) Mega/Pin 19 (??) Mega/Pin 19 (??)
 GND  VCC (max 3.6V)  CE : +3V (max. 3,6V)  CS : Mega/Pin A12  SCK : Mega/Pin A15 MOSI : Mega/Pin A13  MISO : Mega/Pin A14  IRQ : –
GND VCC (max 3.6V) CE : Mega/Pin 48 CS : Mega/Pin 49 SCK : Mega/Pin 52 MOSI : Mega/Pin 51 MISO : Mega/Pin 50  IRQ : –
GND VCC : Mega/Pin 15 Data : Mega/Pin 14
  • Câblage pour MiLight et objets MySensors.

Il est possible de câbler deux antennes nRF24L01 (Nodo / MiLight – MySensors) pour pouvoir profiter de deux protocoles en même temps.

Rien de bien compliqué coté câblage, voici ce que ça donne avec un module radio 433MMhz Super Heterodyne.

RFLink à base d’Arduino Mega 2560 et d’un module radio Super Heterodyne.

Téléverser le firmware

Pour installer le firmware RFLink, Nodo a développé un petit utilitaire appelé RFLinkLoader. On ne passera donc pas par l’IDE Arduino. Allez sur la page Sourceforge pour récupérer le fichier compressé du projet.


Le ZIP contient (entre autre) les éléments suivants :

  • Le firmaware RFLink, fichier RFLink.cpp.hex,
  • RFLinkLoader
  • Avrdude (nécessaire pour installer le firmware sur la puce ATMEL)
  • RFLink Protocole Référence : explication du protocole de réception et d’envoi des messages avec des exemples pour des appareils courants
  • Supporter Device List : la liste complète des appareils supportés, également disponible ici.

Que peut-on faire avec RLinkLoader ?

RFLinkLoader permet tout d’abord d’installer le firmware sur l’Arduino Mega 2560 (fichier RFLink.cpp.hex). Depuis que la passerelle supporte les modules 2.4GHz, on doit passer par le loader pour activer le mode NodoNRF pour utiliser des capteurs à base de nRF24L01+. Si vous voulez utiliser des ampoules Mi-Light, vous devrez également activer le mode MiLightNRF depuis le Loader.

Installation du firmware

Branchez l’Arduino Mega 2560 sur le port USB puis lancez le programme RFLinkLoader. Ouvrez le sélecteur de fichier (Select File) puis indiquez le chemin vers le firmware (fichier RFLink.cpp.hex). Vérifiez que l’Arduino Mega est bien reconnu et proposé dans le combo Serial Port. Lancez le téléchargement depuis le bouton Upload/program Firmware to device. L’opération ne dure pas très longtemps. Le logiciel vous informera de la fin de l’opération via une boîte d’information.

Premiers tests de réception

Nous allons maintenant faire quelques tests pour découvrir comment fonctionne la passerelle RFLink. J’ai utilisé une (vieille) prise télécommandée Phoenix qui me permet de commander l’allumage / extinction d’une lampe ainsi qu’un ancien détecteur de mouvement à la norme X10. Nous verrons dans de prochains tutoriels comment communiquer avec des appareils plus récents. Le principe restant toujours le même.

Mettez en marche la console en appuyant sur le bouton Serial Port Logging. En activant le mode Debug, vous aurez plus de détail sur la réception des messages. L’autre solution consiste à utiliser le journal (log) de Domoticz. Nous verrons comment faire un peu plus loin.

Interception des messages envoyés par la télécommande Phoenix

En appuyant sur le bouton ON de la prise A, on obtient le code suivant

20;1;TriState;ID=0000aa;SWITCH=0;CMD=ON;

Puis sur OFF,

20;2;TriState;ID=0000aa;SWITCH=2;CMD=OFF;

Interception de la détection de présence par un détecteur X10 MS13E

Le détecteur Marmitech MS13E à la norme X10 n’est plus commercialisé aujourd’hui mais comme nous allons le voir, on peut encore très facilement l’utiliser avec un logiciel domotique récent sans la moindre difficulté. L’idée de cet article étant de fabriquer une passerelle 433MHz et la découvrir, le MS13E convient parfaitement.

Le MS13E possède deux boutons HOUSE/ON et UNIT/OFF. En appuyant sur HOUSE/ON on simule la détection d’une présence. On récupère le message suivant

20;1;X10;ID=41;SWITCH=1;CMD=ON;

Puis sur OFF,

20;1;X10;ID=41;SWITCH=1;CMD=OFF;

Comment décoder les messages reçus et émis

Voyons maintenant ce que veulent dire ces messages. Chaque message est formaté. Chaque élément est séparé par un point virgule (;).

Message reçu

Position Elément Signification
1 20 Type de commande 20 pour réception

10 pour émission

2 1 non précisée mais semble être un numéro incrémental
3 X10 Protocol Name Nom du protocole. Ici X10.
4 ID=41 Device Address ID de l’appareil. Souvent un numéro hexadécimal
5 SWITCH=1 Button Number Numéro de la commande
6 CMD=OFF Action Action à réaliser par exemple ON/OFF/ALLON/Niveau…

Messages émis

Pour envoyer un message, on passe les paramètres directement dans aucun libellé. Par exemple 10;X10;000041;1;OFF;

Position Elément Libellé
1 10 Emettre
2 X10 Protocol Name Ici protocole X10
3 000041 Device Address ID de l’appareil
4 1 Button Number Bouton n°1
5 OFF Action Eteint l’appareil branché sur la prise commandée

Si vous avez besoin de connaître en détail le fonctionnement de la passerelle RFLink, allez à cette page.

Autres commandes utiles pour exploiter la passerelle RFLink

RFLink dispose également d’un jeu de commandes pour réaliser des opérations de maintenance ou de mise au point. Copiez la commande dans le champ Command to send (sans oublier le point-virgule à la fin) puis appuyez sur Send.

Commande Fonction Retour
10;REBOOT; Reboot la gateway RFLink
10;PING; Permet de vérifier si la gateway est fonctionnelle 20;99;PONG;
10;VERSION; Version et numéro de build 20;99;”RFLink Gateway software version”;
10;RFDEBUG=ON; ON/OFF. Active / désactive l’affichage des paquets RF 20;99;RFDEBUG=”state”;
10;RFUDEBUG=ON; ON/OFF. Active / désactive le décodage des paquets RF 20;99;RFUDEBUG=”state”;
10;QRFDEBUG=ON; ON/OFF. idem que RFUDEBUG mais plus rapide. Pulse times en hexa. Multiplier par 30 pour obtenir la valeur réelle. 20;99;QRFDEBUG=”state”;
10;RTSCLEAN; Efface la table des codes stockés dans l’EEPROM interne
10;RTSRECCLEAN=x x de 0 à 15. Efface le code dans l’EEPROM au numéro indiqué
10;RTSSHOW; Affiche les code stockés dans l’EEPROM

Relier la gateway RFLink à Domoticz (sur Raspberry Pi, NAS ou PC)

Il est grand temps de tester la gateway sur un logiciel domotique et plus particulièrement sur Domoticz. Aucun plugin n’est nécessaire. Domoticz accepte les passerelles RFLink USB ou réseau. Pour cet article, j’ai utilisé Domoticz sur un Raspberry Pi 3. Comme la passerelle est alimentée par le port USB du Raspberry, optez pour une alimentation d’au moins 3A comme celle-ci. Si votre RPI s’arrête de manière inexpliquée, c’est la première cause du problème en générale.

L’article a été rédigé avec la version v3.4838 de Domoticz.

Si vous débutez (Linux, Domoticz, SSH), voici une série d’articles à lire avant de commencer :

Débuter avec Domoticz: installation, configuration sur Raspbian Pixel Raspberry Pi 3

Commandes utiles pour le Raspberry Pi et le Terminal de Raspbian (configurer, installer, mettre à jour)

Connexion SSH pour accéder à un Raspberry Pi à distance

Trouver le port USB sur lequel est branché la passerelle

L’installation de la passerelle ne pose aucun problème particulier. Cependant, si vous avez plusieurs appareils connectés en USB, le risque de s tromper est important. Petit problème, Domoticz est allergique à une erreur de déclaration du port USB.

Connectez vous à votre Pi en SSH ou en direct et exécutez cette commande pour arrêter le service Domoticz

sudo service domoticz.sh stop

Branchez la passerelle RFLink sur un port USB du Raspberry et exécutez la commande

dmesg -s 1024

Trouver le port USB sur lequel est branché la gateway RFLink avec la commande dmesg -s 1024.

Dans mon cas, l’Arduino Mega 2560 de la passerelle est branché sur le port USB ttyACM0.

Il ne reste plus qu’à redémarrer le service Domoticz avec la commande

sudo service domoticz.sh start

Ajout du matériel RFLink

Allez dans les Réglages puis Matériel puis :

  • Donnez un nom,
  • Dans la liste Type, choisissez RFLink Gateway USB (ou Network)
  • N’indiquez aucun temps d’attente
  • Choisissez le port série sur lequel l’Arduino est branché
  • Enregistrez

Ajout d’un dispositif radio

Il existe plusieurs manières d’ajouter un matériel. Dans tous les cas, dès qu’un signal est décodé par RFLink, il est transmis à Domoticz qui l’ajoute à la liste des dispositifs.

Si votre dispositif dispose de boutons (par exemple une télécommande, un mode test pour un détecteur de présence ou de fumées), actionnez le. Le dispositif sera alors directement ajouté dans la liste des dispositifs Domoticz. On l’ajoute comme d’habitude à l’aide de la flèche verte.

Détecteur de mouvement X10 RFLink

On peut également ajouter manuellement le dispositif depuis la page Interrupteurs avec la fonction détection Auto (à droite de l’écran). Domoticz est à l’écoute de commandes envoyées par les appareils.

Si aucun matériel ne s’ajoute dans les dispositifs, allez vérifier dans les réglages que Domoticz accepte les nouveaux matériels.

Problèmes rencontrés

Voici quelques problèmes rencontrés (et les solutions !) durant la mise au point de cet article.

Situation Conséquence
Ne pas débrancher “à chaud” la gateway RFLink du port USB Ne débranchez jamais du port USB la gateway. Domoticz plante à tous les coups. Arrêtez le RPI ou arrêtez le service Domoticz avant de le faire
Suppression d’un matériel RFLink Domoticz peut planter après une suppression d’une gateway dans la liste des matériels. Dans ce cas, il faut redémarrer le RPI. Relancer le service ne semble pas suffire
Indiquer le mauvais port Série dans la configuration du matériel C’est probablement l’erreur la plus grave car à chaque démarrage Domoticz s’arrête dessus. A part supprimer la base de données (et tout perdre), je n’ai pas encore trouvé de solution moins radicale (par manque de temps).

Voilà, vous disposez maintenant d’une passerelle radio pouvant recevoir ou émettre vers des appareils fonctionnant en 315, 433, 868MHz ou 2,4GHz. Même si RFLink reste un projet Open Source, un très grand nombre d’appareils sont pris en charge. Le budget de réalisation (sans boitier ni antenne) est très raisonnable (environ 10€) comparé au boitier RFXcom qui coûte moins de 100€.

Voici d’autres tutoriels pour aller plus loin avec RFLink

[socialpoll id=”2385460″]

Avez-vous aimé cet article ?