Accueil / Domotique / Domoticz / RFLink pour Domoticz : fabrication d’une passerelle domotique 433MHz

RFLink pour Domoticz : fabrication d’une passerelle domotique 433MHz

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

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 très connue. RFLink est capable de gérer les fréquences 315, 433, 868, 915MHz et depuis peu le 2,4Ghz en utilisant des modules nRF24L01+. RFLink est développé par la société Hollandaise Nodo.

Pourquoi remplacer une RFXCom par une 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 plus gros inconvénient reste son prix. Il est difficile de la trouver pour moins de 110€. 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, Nodo commercialise des kits à assembler soi même ou des modules prêt à l’emploi sur sa boutique en ligne à partir de 37€ environ.

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 radio. La version R43 prend en charge une liste impressionnante de matériels dans tous les domaines (la liste complète est disponible ici) :

  • Alarmes,
  • Ampoules MiLight (2,4GHz),
  • Carillon,
  • Chauffage,
  • Commande d’ouverture de volet,
  • Détecteur de fumées ou d’incendie,
  • Détecteur de mouvement,
  • Interrupteurs et variateurs de lumière,
  • Ouverture de porte,
  • Relai,
  • Sirène,
  • Stations et capteurs météo,
  • Suivi de consommation énergétique,
  • Thermostat,
  • Télécommandes avec apprentissage des codes.

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

Pour fabriquer une passerelle RFLink, Nodo préconise (avoir les avoir tous testés) 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€.

Module Radio Caractéristiques
rflink domoticz jeedom aurel tranceiver rtx-mid-5v Aurel RTX-MID-5v Fréquence : 433,92 MHz

Sensibilité : +10/-106dBm

Consommation : 13mA

rflink rfxcom domoticz jeedom superheterodyne rbx6 ksa6 SuperHeterodyne RXB6 ou KSA6 Fréquence : 433,92 MHz

Sensibilité : -116dBm

Consommation : 6mA

Certifications  CE / FCC

rflink-domoticz-jeedom-syn480r SYN480R (récepteur)

SYN115 (transmetteur)

Fréquence : 433MHz

Sensibilité : -107dBm

rflink nrf24l01 nRF24L01+ PA LNA (avec antenne)

Adaptateur avec alimentation régulée (recommandé)

Fréquence : 2,4GHz

Emetteur

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

Reste du matériel nécessaire

Le firmware RFLink est trop volumineux pour fonctionner sur un Arduino R3 classique. Il vous faudra faire l’acquisition d’un Arduino Mega. Un clone d’Arduino Mega peut également convenir. Pour ma part, j’ai opté pour un SainSmart Mega 2560 disponible sur Amazon pour environ . L’Arduino Mega est un peu plus encombrant qu’un Arduino R3. On trouve sur Aliexpress 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. Plutôt que de devoir configurer le module employé, le firmware envoi les paquets sur les broches de l’Arduino. Le module sera directement opérationnel en le branchant sur les E/S qui lui correspondent.

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).

Matériel Matériel choisi pour l’article Prix
Arduino Mega 2560 SainSmart Mega2560 16,71€
Module radio 433MHz (récepteur) Superheterodyne RXB6 1,42€
Module radio 433MHz (émetteur) XD-FST FS1000A 1,69€
Breadboard 400 points 1€
Antenne Câble de cuivre
Total 20,82€

Pour fabriquer une gateway plus compacte, on peut partir sur une base d’Arduino Mega 2560 Mini (mais pas encore testé avec RFLink).

arduino mega 2560 mini usb rflink domoticz Arduino Mega 2560 Mini avec câble USB 11,58€
rflink rfxcom domoticz jeedom superheterodyne rbx6 ksa6 Récepteur radio 433MHz Superheterodyne RXB6
1,42€
315mhz xd-fst Emetteur radio 433 MHz XD-FST FS1000A 1,69€
rflink-arduino-mega-mini-25600-plaque-prototype Breadboard Compatible Mega Mini
3,71€
 Total 18,40€ 

Câblage des modules radio

La cablage 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

Aurel RTX MID 5V

Antenne GND Mega/Pin 14 (TX) Mega/Pin 15 Mega/Pin 22 GND Mega/Pin 19 (RX) Mega VCC (100nf au GND)

Super Heterodyne RXB6 ou KSA6

Antenne Mega/Pin 16 (RX VCC) Mega/Pin 19 (RX) GND

SYN480R

VCC Mega/Pin 19(RX) GND Antenne

Qiachip WL101 + WL102

Antenne  GND VCC (3 à 5V) Mega/Pin 19 (??) Mega/Pin 19 (??)

NRF24L01 (Nodo) pour capteurs

 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 : –

NRF24L01*

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 : –

XD-FST FS1000A

GND VCC : Mega/Pin 15 Data : Mega/Pin 14

* Câblage pour MiLight et objets MySensors.

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

Remarque. Pour le moment, RFLink ne peut pas être utilisé comme une gateway MySensors. La passerelle est capable de recevoir des messages mais elle est incapable d’envoyer des messages vers un noeud. Cette fonction est plutôt réservée pour l’apprentissage et le développement. On pourra s’en servir comme sniffer par exemple.

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

montage rflink rfxcom arduino mega 2560 superheterodyne domoticz
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.


rflink-sourceforge

 

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.

rflink contenu zip firmware

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.

rflink console port serie log

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;

flink reception messages commandes on/off telecommande phenix

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 suivants

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 un Raspberry Pi)

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 passerelle 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.

Attention. Faites une sauvegarde de votre carte SD et/ou de la base de données de Domoticz avant d’installer une Gateway RFLink.

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

Domoticz: installation et configuration sur Raspberry Pi 3 (ou 2)

Commandes utiles pour configurer et utiliser son Raspberry Pi

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
rflink dmesg -s 1024 port usb gateway rapsberry pi3
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 dispositif Domoticz. On l’ajoute comme d’habitude à l’aide de la flèche verte.

rflink x10 détecteur mouvement motion sensor ms13e
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.

domoticz-activer-decouverte-materiels-auto

Problèmes rencontrés

Pour rédigé cet article, j’ai fait pas mal d’essais (et d’erreurs). J’ai rencontré quelques problèmes que je préfère partager.

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ériel. 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 environ 110€. Dans les prochains articles, nous verrons comment rendre la RFLink un peu plus sexy et plus pro en la mettant dans une belle boîte avec une antenne.