Détection de Jams

Afficher la source sur GitHub

Pour fournir un mécanisme configurable de détection du brouillage de signal sur n'importe quel nœud OpenThread, activez la fonctionnalité de détection du brouillage.

Cette fonctionnalité est utile pour les certifications d'appareils qui nécessitent de pouvoir détecter le brouillage du signal sur un canal spécifique. Il peut être configuré pour répondre aux exigences de chaque type de certification.

Fonctionnement

La détection de brouillage surveille le RSSI (indicateur d'intensité du signal reçu) d'un nœud pendant des périodes spécifiées pour déterminer si le canal a été brouillé.

Lorsque la détection de brouillage est activée :

  1. L'état de la détection de blocage est défini sur false.
  2. Le nœud échantillonne le RSSI plusieurs fois sur chaque intervalle d'une seconde.
  3. Si le RSSI sur l'ensemble de cet intervalle d'une seconde reste supérieur au seuil RSSI configuré pour chaque échantillon, cet intervalle d'une seconde est considéré comme saturé.
  4. Si le nombre cumulé d'intervalles d'une seconde en cas de blocage est supérieur ou égal au nombre cumulé de secondes de la période de pointe configurée dans la fenêtre de détection configurée précédente à un moment donné, l'état de détection de blocage à ce moment est défini sur true.
  5. Si le nombre cumulé d'intervalles d'une seconde en cas de blocage est inférieur au nombre cumulé de secondes de la période de pointe configurée dans les secondes de la fenêtre de détection configurée précédente à un moment donné, l'état de détection de blocage à ce moment est défini sur false.

Bitmap d'historique

Dans les propriétés OpenThread API et wpantund, un bitmap des 63 secondes précédentes peut être récupéré. Ce bitmap indique si le RSSI a franchi le seuil RSSI configuré à chacune des 63 secondes précédentes.

Par exemple, vous pouvez récupérer le bitmap suivant:

0xC248068C416E7FF0

La conversion au format binaire produit chaque instance où le RSSI a dépassé le seuil RSSI configuré au cours des 63 secondes précédentes :

11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000

Si la fenêtre de détection est définie sur 16 secondes et que la période d'activité est définie sur 8 secondes, l'état de détection d'un bouchon passe à true au bout de 51 secondes, car il s'agit de la première instance où le seuil RSSI a été dépassé au moins 8 secondes entières au cours des 16 secondes précédentes. Dans cet exemple, l'état de détection d'encombrement reste true pendant les 13 secondes suivantes.

11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000
                                      [00001 01101110 011] = 8 in 16

Ce bitmap peut être représenté par le graphique suivant, si le seuil RSSI configuré était de -45 dBm:

Détection du brouillard OT

Comment l'activer

Cette fonctionnalité est désactivée par défaut.

Par définition

Pour activer la détection des interférences, définissez OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE sur 1 dans le fichier openthread/src/core/config/openthread-core-default-config.h avant de compiler OpenThread :

#ifndef OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE
#define OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE 1
#endif

Par option

Vous pouvez également utiliser l'option de compilation -DOT_JAM_DETECTION=ON lorsque vous compilez OpenThread :

./script/build -DOT_JAM_DETECTION=ON

Paramètres

Les paramètres de détection de bouchon ne peuvent être configurés qu'à l'aide de l'API OpenThread, du protocole Spinel ou de wpanctl, l'outil de ligne de commande wpantund pour la gestion du co-processeur réseau (NCP). Les valeurs par défaut sont appliquées si la fonctionnalité est activée sans configuration ultérieure.

Personnalisez cette fonctionnalité à l'aide des paramètres suivants :

Paramètres
Seuil RSSI
Valeur par défaut
0 dBm
Description
Spécifie le niveau RSSI de seuil en dBm au-dessus duquel le canal est considéré comme saturé.
Fenêtre de détection
Valeur par défaut
63 secondes
Description
Spécifie la fenêtre, en secondes, pendant laquelle vérifier s'il y a un brouillage du signal. Plage : 1 à 63.
Période de disponibilité
Valeur par défaut
63 secondes
Description
Indique le nombre total de secondes au cours de la période de détection pendant lesquelles le RSSI doit être supérieur au seuil de RSSI pour déclencher la détection de brouillage. Doit être inférieur à la période de détection. Plage : 1 à 63.

API

OpenThread

Utilisez l'API de détection des interférences pour gérer la fonctionnalité de détection des interférences directement dans votre application OpenThread. L'API OpenThread offre les fonctionnalités suivantes :

  • Démarrer et arrêter la fonctionnalité
  • Afficher l'état de la détection d'encombrement
  • Gérer tous les paramètres
  • Récupérer le bitmap actuel de l'historique de détection de Jams
  • Enregistrer une fonction de rappel en cas de blocage

Spinelle

Le protocole Spinel permet à un appareil hôte de communiquer directement avec un NCP. Ce protocole expose des propriétés de détection des interférences dans openthread/src/lib/spinel/spinel.h qui fournissent les fonctionnalités suivantes :

  • Démarrer et arrêter la fonctionnalité
  • Afficher l'état de la détection d'encombrement
  • Gérer tous les paramètres
  • Récupérer le bitmap de l'historique de la détection des embouteillages actuel

CLI

OpenThread

Aucune commande de la CLI OpenThread n'est associée à cette fonctionnalité.

wpantund

Utilisez la CLI wpanctl pour gérer la fonctionnalité de détection de Jam pour une configuration NCP OpenThread. wpantund conserve toute la configuration de la détection de brouillage lors du réinitialisation du NCP.

wpanctl permet d'accéder aux propriétés wpantund suivantes :

Propriétés
JamDetection:Status
Format
booléen
Description
Lecture seule. État de la détection de brouillage. Indique si un brouillage du signal est actuellement détecté.
JamDetection:Enable
Format
booléen
Description
Activez ou désactivez la fonctionnalité de détection des interférences.
JamDetection:RssiThreshold
Format
dBm
Description
Spécifie le seuil RSSI en dBm au-dessus duquel le canal doit être considéré comme bloqué.
JamDetection:Window
Format
secondes
Description
Spécifie la fenêtre, en secondes, pendant laquelle vérifier s'il y a un brouillage du signal. Plage : 1 à 63.
JamDetection:BusyPeriod
Format
secondes
Description
Spécifie le nombre de secondes cumulées dans JamDetection:Window pendant lesquelles le RSSI doit être supérieur à JamDetection:RssiThreshold pour déclencher la détection de bourrage. La valeur doit être inférieure à JamDetection:Window. Plage: 1-63.
JamDetection:Debug:HistoryBitmap
Format
Valeur 64 bits
Description
Fournit des informations sur l'historique de l'état de la détection de Jams à des fins de surveillance et de débogage.

Par exemple, pour obtenir l'état de la détection de blocage pour un NCP :

sudo wpanctl getprop JamDetection:Status
JamDetection:Status = false

Pour définir le seuil RSSI de détection de brouillage sur -45 dBm sur un NCP :

sudo wpanctl setprop JamDetection:RssiThreshold -45
sudo wpanctl getprop JamDetection:RssiThreshold
JamDetection:RssiThreshold = -45

Pour en savoir plus sur les propriétés wpantund, consultez le dépôt GitHub wpantund.