使用 适用于 LoRaWAN 的 AWS IoT Core 执行自适应数据速率 (ADR) - AWS IoT Wireless

使用 适用于 LoRaWAN 的 AWS IoT Core 执行自适应数据速率 (ADR)

适用于 LoRaWAN 的 AWS IoT Core 使用自适应数据速率来降低设备传输功耗,同时确保由网关接收来自终端设备的消息。自适应数据速率指示终端设备优化数据速率、传输功率和重传次数,同时尝试降低网关收到的数据包的错误率。例如,如果您的终端设备靠近网关,则自适应数据速率会降低传输功率并提高数据传输速率。

自适应数据速率(ADR)的工作原理

要启用 ADR,您的设备必须在帧头中设置 ADR 位。设置 ADR 位后,适用于 LoRaWAN 的 AWS IoT Core 会发送 LinkADRReq MAC 命令,您的设备将使用包含 ADR 命令的 ACK 状态的 LinkADRAns 命令进行响应。设备确认 ADR 命令后,它将按照来自 适用于 LoRaWAN 的 AWS IoT Core 的 ADR 说明调整传输参数值以获得最佳数据速率。

适用于 LoRaWAN 的 AWS IoT Core ADR 算法使用上行链路元数据历史记录中的 SINR 信息来确定设备使用的最佳传输功率和数据速率。该算法使用在帧头中设置 ADR 位后开始的 20 个最近的上行链路消息。为了确定重传次数,它使用数据包错误率(PER),即丢失的数据包总数的百分比。使用此算法时,您只能控制数据速率的范围,即数据速率的最小和最大限制。

配置数据速率限制(CLI)

默认情况下,当您在 LoRaWAN 设备的帧头中设置 ADR 位时,适用于 LoRaWAN 的 AWS IoT Core 将执行 ADR。使用 AWS IoT Wireless API 操作 CreateServiceProfile 或 AWS CLI 命令 create-service-profile 为 LoRaWAN 设备创建服务配置文件时,您可以控制数据速率的最小和最大限制。

注意

从 AWS Management Console 创建服务配置文件时,无法指定最大和最小数据速率限制。只能使用 AWS IoT Wireless API 或 AWS CLI 指定该值。

要指定数据速率的最小和最大限制,请在 CreateServiceProfile API 操作中使用 DrMinDrMax 参数。默认的最小和最大数据速率限制为 0 和 15。例如,以下 CLI 命令将最低数据速率限制设置为 3,将最大限制设置为 12。

aws iotwireless create-service-profile \ --lorawan DrMin=3,DrMax=12

运行此命令会生成服务配置文件的 ID 和 Amazon 资源名称(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 命令检索您为其自定义数据速率限制的服务配置文件。