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:
- Une seule fréquence à gérer, le matériel impliqué est simpliste et peu cher.
- En émission, c'est soit éteint, soit en marche. Un simple interrupteur permet de commander, et en plus, quand c'est éteint, ça ne consomme pas, bien sûr.
- En réception, on écoute en permanence sur une seule fréquence: il suffit de s'accorder dessus une fois pour toutes, comme pour les postes de radio ondes courtes de dans le temps. Comme on veut piloter une lampe, par exemple, l'énergie n'est pas loin, ça ne posera pas de problème.
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:
- En émission, c'est tout ou rien = si deux émetteurs marchent en même temps, ça va moins bien marcher. De fait, il existe certains appareils (mal conçus?) qui peuvent émettre pendant 5 secondes, et pendant ce temps-là, rien ne marche. Il n'y a aucun mécanisme où l'émetteur commence par écouter la fréquence pour voir si elle est libre...
- En réception, le nombre d'appareils différents que l'on peut piloter est relativement faible, du fait de l'encodage simpliste.
- C'est en général très sensible aux interférences. En effet, en écoute, le gain (automatique) est réglé au maximum, puisqu'il n'y a pas signal, et n'importe quelle interférence peut brouiller la réception, car le gain ne sera pas bien ajusté sur la (vraie) source.
- Par construction, le récepteur n'émet pas (bien sûr, c'est un récepteur), et donc il n'existe pas de notion d'acquittement: l'émetteur ne sait pas si sa commande a été bien reçue.
- Ne parlons pas de sécurité, inexistante. C'est même pire, il ne faudrait pas que votre voisin utilise la même chose...
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:
- 433.92 MHz, bande de fréquence libre la plus répandue
- 310 MHz en Amérique du nord
- 418 MHz au Royaume-Uni
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.
- X10 RF : La plus ancienne. [De nombreux appareils X10 existent, surtout aux USA. On en trouvera des exemples sur le site x10.com]
- Domia Lite: une variante incompatible du X10 RF. [site Domia]
- Home Easy : ce protocole a été réutilisé par d'autres compagnies. On notera qu'il existe
2 protocoles (simple et avancé), avec certaines incompatibilités.
[Home Easy web site, géré par
Byron]
- Bye Bye Standby: plus ou moins compatible avec Home Easy [site Bye Bye Standby]
- DI-O by Chacon : la gamme récente domotique de Chacon, qui a remplacé l'ancienne gamme. Même protocole que Home Easy, et donc même problème de compatibilité de gamme: anciens émetteurs compatibles avec nouveaux récepteurs mais anciens récepteurs parfois compatibles avec nouveaux émetteurs.
- centrale MyFox : compatible Chacon
- Blyss : utilise leur propre protocole, et sévissent en même temps sur le 868 MHz.
- NEXA: Séquence apparemment spécifique et incompatible avec le reste. [site Nexa Les produits Nexa et Proove seraient fabriqué par Arc Technology (taiwan), (comme pour les produits Chacon, Elro AB600 ?)]
- Oregon Scientific: il existe 3 versions de protocoles, incompatibles avec le reste du monde.
- Delta Dore: et leurs protocoles X2D et X3D, fonctionnant aussi sur le 868 MHz, apparemment en même temps (bi-bande), développés depuis les années 1990, ils ont de l'antériorité et ne vont probablement pas changer si facilement...
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).
- RTS de Somfy. Protocole propriétaire fermé.
- Klik on Klik off [Klik On Klik Off Australie Klik Aan Klik Uit Hollande (original)]
- ELRO: certains produits seraient compatibles avec Domia, à prendre avec des pincettes car peu d'information disponible (normal, ils vendent des alarmes...). Gère plusieurs protocoles si on en croit la documentation. Sévit aussi en 868 MHz. [site Elro]
- Koppla par Ikea: abandonné. C'était peut-être du X10.
- Harrison : des rideaux électriques télécommandables. Protocole apparemment particulier. [ site Harrison]
- OWL : mesure de consommation électrique. Protocole particulier.
- Visonic a défini 2 protocoles: PowerCode et CodeSecure. Travaille aussi en 868 MHz. Protocoles propriétaires très particuliers avec encryption.
- Atlantic's: des alarmes pour l'essentiel, pas de documentation. Semble être compatible Visonic. Utilise le protocole Technologies Broadcasting™ et DMT à impulsion numérique (sans explication). Cependant lisibles par RFXCOM et Zibase. [site web Atlantic's']
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:
- Une entête: 8.8 ms de porteuse, suivi de 4.4 ms de silence (sert pour le contrôle automatique du gain).
- Deux octets de données, soit 16 bits, qui correspondent à une trame X10:
- Un code maison (letter code): 4 bits
- Un code numéro (number code): 4 bits
- Un code maison (letter code): 4 bits
- Un code commande (command code): 4 bits
- 40 ms de silence avant de renvoyer le code, en général 5 fois.
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:
- 0 binaire: 0.4 + 0.725 ms = 1.125 ms
- 1 binaire: 0.4 + 1.850 ms = 2.250 ms (le double)
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:
- 1 bit à zéro
- 12 bits utiles contenant des données: chaque bit étant systématiquement suivi d'un bit à zéro (soit 24 bits).
- 10 ms de silence avant de renvoyer la trame, qui est transmise au moins 3 fois, voire 6 fois.
Les 12 bits utiles suivent la spécification X10 CPL:
- Un code maison (letter code): 4 bits
- Un code numéro (number code): 4 bits
- Un code commande (command code): 4 bits
Encodage des bits:
- 0 binaire: état haut pendant 375 μs puis pas de signal pendant 1125 μs (total 1.5 ms)
- 1 binaire: état haut pendant 1125 μs puis pas de signal pendant 375 μs (total 1.5 ms)
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:
- 0 binaire court: état haut pendant 375 μs puis pas de signal pendant 375 μs (total 750 μs).
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:
- D'une entête: front haut de 275 μs puis un front bas de 2675 μs.
- De 32 bits (ON/OFF) ou 36 bits (DIM).
Encodage des bits:
- bas: front haut de 275 μs puis un front bas de 240 μs
- haut: front haut de 275 μs puis un front bas de 1300 μs
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 :
- Bits 0 à 25 : Numéro identifiant l’émetteur (numéro unique qui peut être généré aléatoirement)
- Bit 26 : Flag Group
- Bit 27 : ON/OFF
- Bits 28 à 31 : Code device (un même id peut avoir 16 code device)
- Bits 32 à 36 : Dim level (facultatif)
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:
- En entête composée d'un front haut de 2.4 ms
- Suivie de 52 bits de données, pour un temps total de 65 ms.
- Un silence de 24 ms sépare 2 trames.
Encodage des bits:
- 1 binaire: front bas de 400 μs puis front haut de 800 μs
- 0 binaire: front bas de 800 μs puis front haut de 400 μs
Donc du 1/3 2/3: la longueur est toujours la même.
Format de la trame:
- 8 bits: empreinte 0xFE
- 4 bits: canal global (0:A, 1:B, 2:C, 3:D)
- 16 bits: adresse (ce qui permet 64000 adresses)
- 4 bits: sous canal (canal1: 8, canal2: 4, canal3: 2, canal4: 1, canal5: 3, tous: 0)
- 4 bits: état lumière (état logique)
- 8 bits: rolling code, MSBFIRST
- 8 bits: timestamp incrémentiel (0 ~ 255), MSBFIRST
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:
- 0 binaire: T signal + 3T silence + T signal + 3T silence
- 1 binaire: 3T signal + T silence + 3T signal + T silence
- X (open) bit: T signal + 3T silence + 3T signal + T silence
- stop/sync: T signal + 32T silence
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:
- d'un début de message: 5 bit 01011
- du corps du message (2 octets)
- d'un code tournant sur 4 bit
- d'une fin de message: 5 bit 10011
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...