Để cung cấp cơ chế có thể định cấu hình cho việc phát hiện tín hiệu gây nhiễu trên bất kỳ nút OpenThread nào, hãy bật tính năng Phát hiện nhiễu.
Tính năng này rất hữu ích cho các chứng nhận thiết bị yêu cầu khả năng phát hiện tình trạng nhiễu tín hiệu trên một kênh cụ thể. Bạn có thể định cấu hình chứng chỉ để đáp ứng yêu cầu của từng loại chứng nhận.
Cách hoạt động
Tính năng Phát hiện Jam theo dõi RSSI (chỉ báo cường độ tín hiệu đã nhận) của một nút trong khoảng thời gian chỉ định để xác định xem kênh có bị kẹt hay không.
Khi tính năng Phát hiện nút chặn được bật:
- Trạng thái phát hiện nút nhấp được đặt thành
false
. - Nút lấy mẫu RSSI nhiều lần trong mỗi khoảng thời gian một giây.
- Nếu RSSI trong toàn bộ khoảng thời gian một giây đó vẫn cao hơn Ngưỡng RSSI đã định cấu hình cho mỗi mẫu, thì khoảng thời gian một giây đó được coi là bị nhiễu.
- Nếu tổng số khoảng thời gian bị tắc nghẽn là 1 giây lớn hơn hoặc bằng tổng số giây Khoảng thời gian bận đã định cấu hình trong Khoảng thời gian phát hiện đã định cấu hình trước đó tại bất kỳ thời điểm nào, thì Trạng thái phát hiện nút chặn tại thời điểm đó sẽ được đặt thành
true
. - Nếu tổng số khoảng thời gian bị tắc nghẽn một giây dưới tổng số giây Thời gian bận đã định cấu hình trong Khoảng thời gian phát hiện đã định cấu hình trước đó tại bất kỳ thời điểm nào, thì Trạng thái phát hiện nút chặn tại thời điểm đó được đặt thành
false
.
Ánh xạ bit lịch sử
Trong API OpenThread và thuộc tính wpantund
, bạn có thể truy xuất một bitmap của 63 giây trước đó. Bitmap này cho biết liệu RSSI có vượt qua Ngưỡng RSSI đã định cấu hình trong mỗi 63 giây trước đó hay không.
Ví dụ: bạn có thể truy xuất bitmap sau:
0xC248068C416E7FF0
Việc chuyển đổi sang tệp nhị phân sẽ tạo ra mọi thực thể mà RSSI vượt quá ngưỡng RSSI đã định cấu hình trong 63 giây trước đó:
11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000
Nếu bạn đặt Cửa sổ phát hiện thành 16 giây và đặt Khoảng thời gian bận thành 8 giây, thì Trạng thái phát hiện nhiễu sẽ trở thành true
tại 51 giây, vì đó là trường hợp đầu tiên vượt quá ngưỡng RSSI ít nhất 8 giây trong 16 giây trước đó. Trong ví dụ này, Trạng thái phát hiện nút tắc vẫn là true
trong 13 giây tiếp theo.
11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000 [00001 01101110 011] = 8 in 16
Bitmap này có thể được biểu thị bằng biểu đồ sau, nếu -45 dBm là Ngưỡng RSSI đã định cấu hình:
Cách bật
Tính năng này bị tắt theo mặc định.
Theo định nghĩa
Để bật tính năng Phát hiện Jam, hãy xác định OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE
thành 1
trong tệp openthread/src/core/config/openthread-core-default-config.h
trước khi tạo OpenThread:
#ifndef OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE
#define OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE 1
#endif
Theo tùy chọn
Ngoài ra, hãy sử dụng tuỳ chọn bản dựng -DOT_JAM_DETECTION=ON
khi tạo OpenThread:
./script/build -DOT_JAM_DETECTION=ON
Thông số
Bạn chỉ có thể định cấu hình các tham số Phát hiện nhiễu thông qua API OpenThread, giao thức Spinel hoặc wpanctl
, công cụ dòng lệnh wpantund
để quản lý Bộ xử lý đồng bộ mạng (NCP). Giá trị mặc định sẽ được áp dụng nếu bạn bật tính năng này mà không có cấu hình tiếp theo.
Tuỳ chỉnh tính năng này bằng cách sử dụng các tham số sau:
Thông số | |||||
---|---|---|---|---|---|
Ngưỡng RSSI |
|
||||
Khoảng thời gian phát hiện |
|
||||
Thời gian bận rộn |
|
API
OpenThread
Sử dụng API phát hiện nút thắt để quản lý tính năng Phát hiện nút thắt ngay trong ứng dụng OpenThread. API OpenThread cung cấp chức năng sau:
- Bắt đầu và dừng tính năng
- Xem trạng thái phát hiện nút thắt
- Quản lý tất cả thông số
- Truy xuất bitmap nhật ký phát hiện âm thanh bị tắc nghẽn hiện tại
- Đăng ký hàm callback cho trường hợp phát hiện nút thắt
Spinel
Giao thức Spinel cho phép thiết bị lưu trữ giao tiếp trực tiếp với NCP.
Giao thức này hiển thị các thuộc tính Phát hiện nút chặn trong
openthread/src/lib/spinel/spinel.h
cung cấp chức năng sau:
- Bắt đầu và dừng tính năng
- Xem trạng thái phát hiện nút thắt
- Quản lý tất cả thông số
- Truy xuất bitmap nhật ký phát hiện âm thanh bị tắc nghẽn hiện tại
CLI
OpenThread
Không có lệnh OpenThread CLI nào liên quan đến tính năng này.
wpantund
Sử dụng CLI wpanctl
để quản lý tính năng Phát hiện nút thắt cổ chai cho cấu hình NCP OpenThread. wpantund
giữ lại tất cả cấu hình Phát hiện Jam khi đặt lại NCP.
wpanctl
cung cấp quyền truy cập vào các thuộc tính wpantund
sau:
Thuộc tính | |||||
---|---|---|---|---|---|
JamDetection:Status |
|
||||
JamDetection:Enable |
|
||||
JamDetection:RssiThreshold |
|
||||
JamDetection:Window |
|
||||
JamDetection:BusyPeriod |
|
||||
JamDetection:Debug:HistoryBitmap |
|
Ví dụ: để lấy Trạng thái phát hiện nút chặn cho một NCP:
sudo wpanctl getprop JamDetection:Status
JamDetection:Status = false
Cách đặt Ngưỡng RSSI phát hiện tín hiệu gây nhiễu thành -45 dBm trên NCP:
sudo wpanctl setprop JamDetection:RssiThreshold -45
sudo wpanctl getprop JamDetection:RssiThreshold
JamDetection:RssiThreshold = -45
Để biết thêm thông tin về các thuộc tính wpantund
, hãy xem kho lưu trữ GitHub wpantund
.