433.92 MHz

Vous ne comprenez rien à toutes ces fréquences, porteuses, sous-porteuses, FHSS, codage de signaux orthogonaux OFDM, et quand vous croyez avoir compris, on vous explique que l'ultra-large bande (UWB) c'est encore bien mieux (il n'y a même plus de fréquence bien précise !) : le 433.92 MHz est fait pour vous.


Le 433 MHz est utilisé dans de nombreux produits souvent domotiques, avec divers protocoles, souvent incompatibles entre eux. Pour arranger les choses, le 433 MHz est plutôt européen, évidemment que dans les autres pays, ce n'est pas la même fréquence, cela aurait été trop beau...

Introduction

S'agissant d'allumer ou d'éteindre une lumière avec une commande à distance, une solution simple est d'utiliser une fréquence précise, et d'émettre un signal quand on veut changer: du tout ou rien. C'est évidemment un peu trop simple, car il faut bien reconnaître les siens: il ne s'agit pas d'allumer la chambre alors qu'on veut éteindre la télé. Donc un codage plutôt simpliste a été défini pour pouvoir piloter plusieurs appareils en même temps sur la fréquence de 433.92 MHz.

Un énorme avantage est que la partie radio va être très simple:

On peut alors se demander pourquoi on essaye de produire des spécifications nettement plus compliquées pour la domotique en général (Bluetooth par exemple). Et bien parce que ce système simpliste souffre de problèmes de fond assez violents:


433MHz_am-hrr3
le matériel radio est bas coût : récepteur AM-HRR3
433MHz_am-rt4
transmetteur AM-RT4

Et comme le système est simple et qu'il n'y a pas vraiment de spécifications, chacun pouvait faire ce qui lui plait, et même tenter d'améliorer le système dans son coin en compliquant un peu le code. C'est évidemment arrivé, et on se retrouve avec des systèmes marchant sur la même fréquence, en général incompatibles entre-eux, souvent sans grande conséquence, mais il arrive qu'un système perturbe l'autre de manière imprévisible.

Pour arranger les choses, il existe depuis 1975 un protocole appelé X10 qui marchait à l'origine sur les courants porteurs (CPL) destiné aux applications domotiques. Dans ce protocole, des trames composées de bits sont envoyées, avec un certain codage, codage qui a été repris dans certains des appareils RF 433 MHz.

Comme ce n'est pas cher, de nombreux appareils, la plupart du temps domotiques, sont vendus dans le monde malgré tous ces défauts affichés, et par conséquent, il faudra composer avec, ils sont devenus inévitables, on ne voit pas comment un protocole pourrait arriver à les détrôner tous...

Quelques bons samaritains (comme RFXCOM et Zibase) ont fait des boitiers de commande universels: ce sont certainement des produits incontournables pour réaliser un système utilisant le 433 MHz et/ou le 868 MHz, qui est une autre histoire mais pas si éloignée...

Tentons d'y voir un peu plus clair.

Protocole: généralités

Le point commun est la simplicité de l'utilisation de la fréquence: c'est du tout ou rien. Soit un signal est présent, soit il n'est pas présent, il n'y a aucune modulation. Ensuite, on va jouer avec les séquences temporelles de présence du signal RF.

C'est tellement qu'on lui donne un nom compliqué: l'OOK modulation (on-off keying).

La fréquence de travail est variable suivant les pays:

La plupart des appareils émetteurs envoient plusieurs fois le même code à la suite. Un appui bref provoque l'envoi du même message plusieurs fois de suite, séparé par un temps mort. Si on reste appuyé, le même message est envoyé indéfiniment. Comme le récepteur a un gain automatique réglé au maximum (puisqu'il attend un message = il reçoit du bruit), il se sert du premier message pour régler son gain, puis du suivant pour écouter l'ordre, les suivants servant de confirmation si besoin est, ou simplement par sécurité si le récepteur se loupe ou est lent au réglage du gain.

Comme aucune émission n'est prévue du coté réception, il n'y a pas de notion d'appairage automatique entre un émetteur et un récepteur. Pour palier cela, les récepteurs (prise de courant télécommandée par exemple) possède une roue codeuse pour lui donner une adresse qui devra être codée dans l'émetteur (manuellement...).

Coté encodage, en général il n'existe pas de document de référence. Pis, on trouve parfois sur le web diverses explications non concordantes, probablement de bonne foi, basées sur des appareils particuliers avec des implementations particulières...

L'origine probable est le protocole pour courants porteurs, le X10, dont on a récupéré l'encodage pour les mettre sur une porteuse RF.

Les divers protocoles

La plupart des protocoles sont propriétaires, sont souvent dévolus à la domotique (et donc on retrouve souvent des marques), et il est difficile d'en connaitre les détails. Ceci dit, l'important est de savoir s'il existe une compatibilité: c'est rarement le cas, ce qui simplifie les explications. C'est même pire: il est relativement facile d'avoir des interférences involontaires si on met plusieurs systèmes différents dans le même lieu...

Voici une liste, certainement incomplète. On trouvera plus loin le détail du protocole, quand il est (plus ou moins) connu.

D'autres compagnies, avec leur propre ligne de produits et protocoles inconnus, incompatibles. On notera que les centrales d'alarme utilise souvent du chiffrement (c'est heureux!), et il est donc normal de ne pas pouvoir accéder aux détails du protocole vu que ce chiffrement est souvent basé sur un secret (et n'utilise pas de mécanisme de type clé publique).

Si jamais vous deviez utiliser le 433 MHz, alors il est hautement recommandé d'utiliser un émetteur/récepteur universel (enfin, capable de comprendre de nombreux protocoles) comme celui de RFXCOM, Zibase ou le Tellstick USB... Cela simplifiera l'installation, mais il faudra alors peut-être mettre un PC derrière pour interpréter les commandes, ou pour faire des opérations plus complexes avec un middleware.

X10 RF

Le X10 RF utiliserait la même séquence que pour les télécommandes infrarouges de NEC IR, exception faite de la porteuse et du timing. Une trame comporte:

Chaque octet est immédiatement suivi de son complément pour vérification, poids fort en tête. Un bit est codé de la manière suivante, systématiquement après un pulse de 0.4 ms:

Comme on envoi un octet et son complément, la longueur totale est toujours la même.

Domia Lite

Au moins, il a existé un document de spécifications du protocole Domia Lite, mais il est quasiment introuvable. Cette version est un peu différente du X10 RF du point de vue timing, et n'est pas compatible avec les autres protocoles.

Une trame comporte:

Les 12 bits utiles suivent la spécification X10 CPL:

Encodage des bits:

Avec groupe:

L'encodage simple ne permet pas de faire des commandes groupées, par exemple éteindre toutes les lampes et la télé à la fois, sauf à donner la même adresse à tous, ce qui ne sera pas très pratique pour éteindre la télé seulement.

Un nouveau signal a été ajouté à l'encodage:

Si des zéros courts sont utilisés dans la partie adresse numérique (et dans ce cas le premier bit vaut toujours 0), alors on a affaire un groupe: tous les appareils ayant le sélecteur groupe armé à 1 (sur le coté de l'appareil), et ayant la bonne adresse, vont exécuter l'ordre. C'est un moyen de faire un tir groupé sur une seule commande.

Normalement, un appareil simple ne réagira pas lorsqu'il verra un 0-bit court puisqu'il n'est pas programmé pour cela: il ignorera le message, ne sachant pas l'interpréter.

Home Easy

D'après Domadoo une trame (simple) du protocole Home Easy est composée:

Encodage des bits:

Les bits de données sont encodés sous la forme 0 = bas+haut et 1 = haut+bas (code Manchester).

Les données correspondent aux informations suivantes :

On remarque qu'il y a la notion d'identifiant émetteur: il y a une séquence d'appairage ou d'apprentissage du code entre l'émetteur et le récepteur.

Attention: il existe aussi un advanced protocol, suffisamment différent pour être incompatible, et donc il existe au sein de la gamme de produits Home Easy, deux catégories d'appareils, d'où les mentions "non compatible" que l'on rencontre (la télécommande HE200 n'est pas compatible avec la commande de lampe HE107 par exemple).

Blyss

Attention: Blyss n'utilise pas que le 433 MHz, mais aussi le 868 MHz pour les caméras avec un protocole sécurisé et consort (certainement aussi pour des problèmes de débit et d'occupation de fréquence, ça ne risquait pas de marcher ou alors tout le reste est bloqué...).

On observe (pas de spécification disponible!) les trames suivantes:

Encodage des bits:

Donc du 1/3 2/3: la longueur est toujours la même.

Format de la trame:

total: 52 bits.

Source: reverse engineering

Nexa

Le protocole Nexa serait basé sur une puce du genre M3E de MosDesign semiconductor. 4 encodages existeraient, avec une période T de base de 350 μs:

Un message comportant les 12 bits du type X10 (lettre [A-P] + chiffre [1-16]) compose une trame. Il existe un niveau fixe, ainsi qu'un niveau plus avancé avec de l'auto-apprentissage de code.

Source: Tord Andersson 2006

Nexa RF switch protocol reverse-engineered

Oregon Scientific

Il existe (au moins) 3 versions de protocoles chez Oregon: 1.0, 2.1 et 3.0.

Classiquement, Oregon utilise un encodage Manchester en 433.92 MHz. La version 1.0 transmet à 342 Hz, tandis que les versions suivantes transmettent à 1024Hz. La version 2.0 répète les messages et double les bits, alors que la version 3.0 ne le fait pas. Tout ceci offre déjà des problèmes de compatibilité interne, et n'est évidemment pas compatible avec les autres protocoles.

Pour les détails voir Oregon Scientific RF protocol description (qui n'est pas un document d'Oregon Scientific).

Delta Dore

Delta Dore a développé son propre procotole dans les années 1990, le X2D (parfois nommé aussi XDD). C'est un protocole propriétaire, fermé et dont on a peu d'informations publiques.

Le protocole X2D utiliserait du bi-bande, le 433 MHz et le 868 MHz simultanément. La modulation est du type ASK, modulation d'amplitude. Les messages seraient composés:

Chaque élément est codé en usine sur 1 600 000 combinaisons aléatoires.

Lors de l'installation, une séquence d'apprentissage est mise en oeuvre: on place la centrale en mode maintenance, puis on appuie sur le bouton test de chacun des éléments.

Le code tournant sert d'anti-piratage: il évite le replay.

Le X3D prendrait en compte du retour d’état, et aurait une performance accrue en fiabilité.

Le site de Delta Dore. Pas vraiment instructif sur le protocole excepté le document sur l'enseignement-formation.


On voit bien que ces divers codes n'ont pas de cohérence entre eux, et que de plus, il est très probable qu'un récepteur utilisant le protocole A arrive à interpréter (par erreur) un message provenant d'un émetteur utilisant un protocole B, puisque les encodages sont (trop) simples. De plus, la bande de fréquence des 433 MHz peut vite devenir très polluée si on installe divers systèmes (pensez aux voisins), surtout si des interrogations périodiques d'appareils sont réalisées (alarme qui interroge l'état des capteurs). Sans parler des commandes trop longues bloquant la fréquence...