使用 AWS IoT Core for LoRaWAN 執行調適型資料速率 (ADR)
為了最佳化裝置傳輸耗電量,同時確保閘道接收來自終端裝置的訊息,AWS IoT Core for LoRaWAN 會使用調適型資料速率。調適型資料速率會指示終端裝置最佳化資料速率、傳輸功率及重新傳輸次數,並同時嘗試降低閘道收到的封包錯誤率。例如,如果您的終端裝置位於閘道附近,則調適型資料速率就會降低傳輸功率並提高資料速率。
調適型資料速率 (ADR) 的運作方式
若要啟用 ADR,您的裝置必須在訊框標頭中設定 ADR 位元。設定 ADR 位元後,AWS IoT Core for LoRaWAN 會傳送 LinkADRReq
MAC 命令,而您的裝置會使用包含 ADR 命令的 ACK 狀態的 LinkADRAns
命令進行回應。一旦裝置收到 ADR 命令的 ACK 狀態,就會按照來自 AWS IoT Core for LoRaWAN 的 ADR 指示進行,並調整傳輸參數值以達到最佳資料速率。
AWS IoT Core for LoRaWAN ADR 演算法會使用上行中繼資料歷程記錄中的 SINR 資訊,來判斷裝置要使用的最佳傳輸功率和資料速率。此演算法會使用框架標頭中設定了 ADR 位元後開始傳送的最近 20 個上行訊息。為了判斷重新傳輸次數,它會使用封包錯誤率 (PER),也就是遺失的封包總數百分比。使用此演算法時,您只能控制資料速率的範圍,也就是資料速率的下限和上限。
設定資料速率限制 (CLI)
根據預設,當您在 LoRaWAN 裝置的訊框標頭中設定 ADR 位元時,AWS IoT Core for LoRaWAN 將會執行 ADR。您可以在使用 AWS IoT Wireless API 操作 CreateServiceProfile
或 AWS CLI 命令 create-service-profile
為 LoRaWAN 裝置建立服務設定檔時,控制資料速率的下限和上限。
注意
從 AWS Management Console 建立服務設定檔時,則無法指定資料速率的上限和下限。只能使用 AWS IoT Wireless API 或 AWS CLI 進行指定。
若要指定資料速率的下限和上限,請使用 DrMin
和 DrMax
參數搭配 CreateServiceProfile
API 操作。預設的資料速率下限和上限分別為 0 和 15。例如,下列 CLI 命令會設定資料速率下限 3 和上限 12。
aws iotwireless create-service-profile \ --lorawan DrMin=
3
,DrMax=12
執行此命令會產生服務設定檔的 ID 和 Amazon Resource Name (ARN)。
{ "Arn": "arn:aws:iotwireless:us-east-1:123456789012:ServiceProfile/12345678-a1b2-3c45-67d8-e90fa1b2c34d", "Id": "12345678-a1b2-3c45-67d8-e90fa1b2c34d" }
您可以使用 AWS IoT Wireless API 操作 GetServiceProfile
或 AWS CLI 命令 get-service-profile
取得所指定參數的值。
aws iotwireless get-service-profile --id
"12345678-a1b2-3c45-67d8-e90fa1b2c34d"
執行此命令會產生服務設定檔參數的值。
{ "Arn": "arn:aws:iotwireless:us-east-1:651419225604:ServiceProfile/12345678-a1b2-3c45-67d8-e90fa1b2c34d", "Id": "12345678-a1b2-3c45-67d8-e90fa1b2c34d", "LoRaWAN": { "UlRate": 60, "UlBucketSize": 4096, "DlRate": 60, "DlBucketSize": 4096, "AddGwMetadata": false, "DevStatusReqFreq": 24, "ReportDevStatusBattery": false, "ReportDevStatusMargin": false, "DrMin": 3, "DrMax": 12, "PrAllowed": false, "HrAllowed": false, "RaAllowed": false, "NwkGeoLoc": false, "TargetPer": 5, "MinGwDiversity": 1 } }
如果您已建立多個設定檔,則可以使用 API 操作 ListServiceProfiles
或 AWS CLI 命令 list-service-profiles
列出您 AWS 帳戶 中的服務設定檔,然後使用 GetServiceProfile
API 或 get-service-profile
CLI 命令擷取您自訂資料速率限制的服務設定檔。