Mise en service du réseau Thread : Border Router, OTBR et conception de topologie maillée
Thread est un protocole de réseau maillé IPv6 basse consommation basé sur IEEE 802.15.4 qui fournit une infrastructure maillée auto-cicatrisante connectée au Border Router pour les appareils Matter dans les bâtiments. Contrairement à Zigbee, Thread est natif IP – chaque nœud possède une adresse IPv6 et est directement accessible depuis le backbone IP via le Border Router, éliminant les passerelles de traduction de protocole.
Fondamentaux de la radio et du réseau Thread
Thread fonctionne sur la couche physique et MAC IEEE 802.15.4 à 2,4 GHz en utilisant 16 canaux (canaux 11–26, espacement de 5 MHz, 250 kbit/s). La couche réseau est IPv6 compressé par 6LoWPAN. Thread utilise la sécurité TCAT dérivée de DTLS pour la mise en service et AES-128-CCM pour tout le trafic maillé. Le protocole est maintenu par le Thread Group (threadgroup.org), la spécification étant librement accessible aux membres.
| Paramètre | Valeur | Remarques |
|---|---|---|
| Fréquence | Bande ISM 2,4 GHz | Même bande que Wi-Fi 2,4 GHz et Zigbee – planification des canaux requise |
| PHY / MAC | IEEE 802.15.4-2015 | 250 kbit/s, DSSS, modulation OQPSK |
| Réseau | IPv6 avec 6LoWPAN | La compression d'en-tête réduit IPv6 à ~40 octets dans une trame 802.15.4 de 127 octets |
| Sécurité du maillage | AES-128-CCM | Chiffrement au niveau réseau, authentification par trame |
| Nœuds max. | 250+ par partition Thread | Plusieurs partitions pontables via routeur backbone |
| Portée intérieure typique | 10–15 m par saut (murs en béton) | LoS : ~50 m ; le maillage étend la couverture |
| Sauts max. | Pas de limite stricte (pratique : 10–15) | Chaque saut ajoute ~5–10 ms de latence |
| Courant de veille (SED) | ~5–15 µA typique | Sleepy End Device : se réveille toutes les 10–1000 ms pour interroger le parent |
Coexistence des canaux : Thread à 2,4 GHz chevauche les canaux Wi-Fi 2,4 GHz. Utilisez le canal Thread 15 ou 20 (hors des canaux Wi-Fi 1, 6 et 11) pour minimiser les interférences. Si le bâtiment utilise fortement le Wi-Fi 2,4 GHz, effectuez une analyse spectrale (Wireshark + renifleur 802.15.4, ou diagnostic OTBR) avant de sélectionner le canal Thread.
Rôles des nœuds
Les nœuds Thread s'auto-organisent en rôles en fonction des capacités et de la qualité de la liaison. L'attribution des rôles est automatique et dynamique – un routeur peut être rétrogradé si la connectivité maillée s'améliore, et un dispositif final peut être promu si le maillage a besoin de plus de capacité de routage. Comprendre les rôles est essentiel pour la planification de la topologie car la taille de la table de routage, l'intervalle de sommeil et l'attribution du parent affectent directement le succès de la mise en service et la fiabilité continue.
| Rôle | Abrév. | Caractéristiques | Appareil typique |
|---|---|---|---|
| Leader | L | Un par partition ; gère la table de routage, les attributions de préfixes, les données réseau. Élu automatiquement. | Tout appareil Thread alimenté sur secteur |
| Routeur | R | Transfère le trafic maillé ; maintient la table de voisinage ; max 32 routeurs par partition. Alimentation secteur uniquement. | Prises intelligentes, ampoules, thermostats |
| Dispositif terminal éligible routeur | REED | Peut devenir routeur si nécessaire ; se comporte comme un terminal jusqu'à sa promotion. | Appareils alimentés sur secteur avec ≥48 Ko de RAM |
| Dispositif terminal complet | FED | Reste éveillé ; possède un routeur parent ; ne route pas ; reçoit des messages directs. | Capteurs, écrans alimentés sur secteur |
| Dispositif terminal endormi | SED | Interroge le routeur parent à un intervalle configurable (10 ms–10 s) ; radio éteinte entre les interrogations. | Capteurs de batterie, PIR, contacts de porte |
| Dispositif terminal endormi synchronisé | SSED | Sommeil coordonné avec le parent pour un contrôle plus strict de la latence (Thread 1.3+). | Actionneurs sur batterie nécessitant une réponse rapide |
Planification de l'intervalle d'interrogation SED : Un dispositif terminal endormi avec un intervalle d'interrogation de 10 secondes a une latence de commande maximale de 10 secondes (la commande arrive juste après une interrogation). Pour les interrupteurs d'éclairage et les détecteurs de présence pilotant l'éclairage, utilisez des intervalles d'interrogation de 250 ms ou moins – au prix d'une consommation de batterie plus élevée. Pour les contacts de porte/fenêtre où la durée de vie quotidienne de la batterie prime sur le temps de réponse, des intervalles de 10 secondes sont acceptables.
Routeur frontière : OTBR et alternatives commerciales
Le routeur frontalier Thread (Thread Border Router) est la passerelle entre le maillage Thread (802.15.4) et le backbone IP (Ethernet ou Wi-Fi). Il fournit NAT64 (pour les systèmes IPv4 hérités), DNS64, DHCPv6-PD et le routage hors maillage. Un réseau Thread nécessite au moins un routeur frontalier pour permettre le commissionnement Matter depuis un périphérique connecté en IP et pour que le contrôleur de fabric Matter puisse atteindre les périphériques Thread uniquement.
| Routeur frontalier | Pile Thread | Prise en charge du fabric Matter | Remarques |
|---|---|---|---|
| OTBR (Raspberry Pi / Linux) | OpenThread 1.3 | Quelconque – s'intègre avec HA, chip-tool | Accès diagnostic complet ; recommandé pour les projets commerciaux |
| Apple HomePod mini (2e génération) | Apple Thread 1.3 | Apple Home fabric | Auto-configuré ; pas d'accès utilisateur au jeu de données Thread |
| Apple HomePod (2e génération) | Apple Thread 1.3 | Apple Home fabric | Identique au HomePod mini ; préféré pour les grands espaces |
| Apple TV 4K (3e génération, Ethernet) | Apple Thread 1.3 | Apple Home fabric | Connexion Ethernet privilégiée pour la stabilité du routeur frontière |
| Google Nest Hub (2e gén.) | Google Thread 1.3 | Google Home fabric | Auto-configuré ; accès diagnostic limité |
| Google Nest Hub Max | Google Thread 1.3 | Google Home fabric | Identique au Nest Hub 2e gén. |
| Nanoleaf Thread Border Router | OpenThread 1.3 | Apple + Google via jeu de données partagé | BR dédié ; expose l'interface web OTBR |
| Home Assistant SkyConnect USB | OpenThread 1.3 | Serveur HA Matter | Clé USB ; agit comme BR lorsque le module complémentaire HA OTBR est activé |
Création du jeu de données Thread et configuration OTBR
Le Thread Operational Dataset (OTDS) est l'ensemble des paramètres réseau qui définissent une partition Thread. Tous les périphériques du même réseau Thread doivent avoir le même Active Operational Dataset. Lors de l'utilisation d'OTBR sous Linux (Raspberry Pi ou équivalent), le jeu de données est créé lors de l'initialisation d'OTBR et peut être inspecté et exporté via l'API REST OTBR ou l'outil en ligne de commande ot-ctl.
Installation d'OTBR et création du jeu de données (Ubuntu / Raspberry Pi OS)
# Install OTBR (automated script — pulls Docker image or builds from source) curl -sL https://raw.githubusercontent.com/openthread/ot-br-posix/main/script/bootstrap | sudo bash -s -- --no-mdns sudo INFRA_IF_NAME=eth0 ./script/setup # Or via Docker (recommended for reproducible builds): docker run --sysctl "net.ipv6.conf.all.disable_ipv6=0 net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1" -p 8080:80 --dns=127.0.0.1 -it openthread/otbr:latest --radio-url spinel+hdlc+uart:///dev/ttyUSB0 # Generate a new Thread dataset via ot-ctl: sudo ot-ctl dataset init new sudo ot-ctl dataset channel 15 # Set channel (avoid Wi-Fi overlap) sudo ot-ctl dataset networkname PanelCraft-Thread sudo ot-ctl dataset commit active sudo ot-ctl ifconfig up sudo ot-ctl thread start # Verify dataset: sudo ot-ctl dataset active # Shows full OTDS in TLV format sudo ot-ctl state # Should show: leader # Export dataset as hex (for import into other Border Routers): sudo ot-ctl dataset active -x
Interface web OTBR — champs clés
OTBR web UI accessible at: http://<border-router-ip>:80 Thread Network Configuration page shows: Network Name: PanelCraft-Thread Extended PAN ID: 6c32fcf3fe56e68b (random 8 bytes — unique per network) Network Key: d3aba6ca7f1d8e12... (128-bit AES key — keep confidential) PAN ID: 0x4f2b (16-bit, random) Channel: 15 On-Mesh Prefix: fd11:22::/64 (ULA prefix assigned by Leader) Status page shows: Role: Leader / Router / Detached RLOC16: 0x2000 (16-bit routing locator) Ext Address: ba:c7:3a:01:... (64-bit IEEE extended address) Neighbours: 3 routers, 5 end devices
Conception de topologie : placement des routeurs frontière et couverture des routeurs
Le maillage Thread est auto-cicatrisant mais pas auto-optimisant pour le placement initial. Un mauvais placement des routeurs frontière et des routeurs entraîne des maillages partitionnés, un nombre de sauts excessif et des dispositifs dormants incapables de trouver un parent stable. Les règles suivantes s'appliquent aux déploiements dans les bâtiments commerciaux.
Règles de placement des routeurs frontière
- Placez au moins 2 routeurs frontière par étage pour la redondance – si l'un tombe en panne, le maillage reste connecté au backbone IP
- Connectez les routeurs frontière via Ethernet, pas Wi-Fi – élimine la double latence sans fil et améliore la stabilité
- Placez-les près du centre du cluster de dispositifs Thread qu'ils desservent, pas à la périphérie du réseau IP
- Minimum 1 BR par 500 m² en open-space ; 1 BR par 250 m² avec murs en béton armé
- Les routeurs frontière n'ont pas besoin d'être à portée RF les uns des autres – ils se connectent via le routeur backbone Ethernet
Règles de densité des routeurs
- Thread promeut automatiquement les REED en routeurs lorsqu'il y a moins de 16 routeurs dans la partition
- Objectif : chaque SED doit avoir au moins 2 routeurs à un saut – pas de dépendance à un seul parent
- Dans les déploiements denses de capteurs (50+ SED par pièce) : assurez-vous d'avoir au moins 4 routeurs alimentés sur secteur par 100 m²
- Les prises intelligentes et les contrôleurs d'éclairage secteur sont des candidats idéaux pour les routeurs – toujours allumés, bien répartis
- Maximum 32 routeurs par partition Thread – concevez les grands bâtiments comme plusieurs partitions si nécessaire
Risque de scission de partition :Si les appareils Thread d'un étage perdent le contact avec tous les routeurs connectés au routeur frontalier, ils forment une partition séparée avec leur propre leader mais sans connectivité Internet/IP. Les commandes Matter du contrôleur de tissu expireront. Correctif : ajoutez un appareil capable de faire office de routeur à la limite ou améliorez le chemin du signal. Détectez les partitions via la vue topologique OTBR (affiche les clusters de nœuds isolés).
Diagnostics : outils OTBR et vérifications de l'état du maillage
L'état du maillage Thread doit être vérifié après la mise en service initiale et périodiquement pendant l'occupation du bâtiment. OTBR fournit une API REST et l'interface CLI ot-ctl pour les diagnostics ; l'interface Web OTBR offre un graphe de topologie pour une inspection visuelle.
Commandes de diagnostic ot-ctl clés
# Network state and role sudo ot-ctl state # leader / router / child / detached / disabled sudo ot-ctl channel # Current operating channel sudo ot-ctl panid # 16-bit PAN ID # Router and neighbour table sudo ot-ctl router table # All routers in partition: RLOC16, ext addr, link quality sudo ot-ctl neighbor table # Direct neighbours: role, RLOC16, link margin, RSSI # Link quality (RSSI) to specific neighbour sudo ot-ctl neighbor linkinfo <rloc16> # Look for: link margin >10 dBm is good; <5 dBm is marginal # End device child table (children of this router) sudo ot-ctl child table # Shows: child ID, mode (SED/FED), poll interval, age # Partition info sudo ot-ctl partitionid # Partition ID — should be same on all nodes sudo ot-ctl leaderdata # Leader RLOC, partition weight, data version # Network topology (via OTBR REST API) curl http://localhost:8080/api/v1/node/rloc16 curl http://localhost:8080/api/v1/topology # Full mesh topology JSON # Ping a Thread node by IPv6 address sudo ot-ctl ping fd11:22::1 # Replace with node's mesh-local EID
| Métrique de diagnostic | Valeur saine | Action si hors plage |
|---|---|---|
| Marge de liaison vers le parent (SED) | > 10 dBm | Ajouter un routeur intermédiaire ou rapprocher l'appareil du routeur |
| Nombre de tables de routage | 2–32 | < 2 Routers: add mains-powered device; > 32: split partition |
| Cohérence de l'ID de partition | Identique sur tous les nœuds | ID différents : division de partition — vérifier la lacune de couverture RF |
| Intervalle d'interrogation enfant (SED) | 250 ms – 10 s (spécifique à l'application) | < 100 ms: excessive battery drain; > 30 s: unacceptable latency |
| Ping RTT local au maillage | < 100 ms | > 200 ms: excessive hop count or congestion — review topology |
Besoin d'un maillage Thread conçu et mis en service pour votre bâtiment ?
Nous concevons des topologies de maillage Thread pour les bâtiments commerciaux – placement des routeurs frontaliers, planification des canaux, modélisation de la densité des dispositifs terminaux en sommeil, déploiement OTBR et vérification complète de l'intégrité du maillage avec documentation de mise en service.
Demander un devis →