

# 设备注册状态事件
<a name="iot-sidewalk-device-events"></a>

设备注册状态事件在设备注册状态发生更改时发布事件通知，例如在 Sidewalk 设备已设置或注册时。这些事件为您提供有关设备从预调配到注册的不同状态的信息。

## 设备注册状态事件的工作原理
<a name="iot-sidewalk-device-events-work"></a>

当您使用 Amazon Sidewalk 和 AWS IoT Wireless 登记 Sidewalk 设备时，AWS IoT Wireless 将执行一项 `create` 操作并将 Sidewalk 设备添加到您的 AWS 账户中。然后，您的设备进入预调配状态，然后 `eventType`变成 `provisioned`。有关登记您的设备的更多消息，请参阅 [开始使用适用于 Amazon Sidewalk 的 AWS IoT Core](sidewalk-getting-started.md)。

对设备进行 `provisioned` 后，Amazon Sidewalk 将执行 `register` 操作，向 AWS IoT Wireless 注册您的 Sidewalk 设备。注册过程开始，使用 AWS IoT 设置加密和会话密钥。注册设备后，`eventType` 变成 `registered`，并且您的设备已能够使用。

对设备进行 `registered` 后，Sidewalk 可以发送请求以 `deregister` 您的设备。然后，AWS IoT Wireless 执行请求并将设备状态更改回到 `provisioned`。有关设备状态的更多信息，请参阅[ Device Tester](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_SidewalkDeviceMetadata.html#iotwireless-Type-SidewalkDeviceMetadata-DeviceState)。

## 启用设备注册状态事件的通知
<a name="iot-sidewalk-device-events-enable"></a>

在设备注册状态保留主题的订阅方可以接收消息之前，必须从 AWS 管理控制台 或使用 API 或 CLI 为其启用事件通知。您可以为 AWS 账户 中的所有 Sidewalk 资源或所选资源启用这些事件。有关如何启用这些事件的更多信息，请参阅 [启用无线资源的事件](iot-wireless-control-events.md)。

## 设备注册状态事件的 MQTT 主题格式
<a name="iot-sidewalk-device-events-mqtt"></a>

要通知设备注册状态事件，您可以订阅以美元 (\$1) 符号开头的 MQTT 保留主题。有关更多信息，请参阅《AWS IoT Developer Guide》**中的 [MMQTT topics](https://docs.aws.amazon.com/iot/latest/developerguide/topics.html)。

Sidewalk 设备注册状态事件的保留 MQTT 主题使用以下格式：
+ 对于资源级主题：

  `$aws/iotwireless/events/{eventName}/{eventType}/sidewalk/wireless_devices`
+ 对于标识符主题：

  `$aws/iotwireless/events/{eventName}/{eventType}/sidewalk/{resourceType}/{resourceID}/{id}`

其中：

**\$1eventName\$1**  
\$1eventName\$1 必须是 `device_registation_state`。

**\$1eventType\$1**  
\$1eventType\$1 可以是 `provisioned` 或 `registered`。

**\$1resourceType\$1**  
\$1resourceType\$1 可以是 `sidewalk_accounts` 或 `wireless_devices`。

**\$1resourceID\$1**  
\$1resourceID\$1 对于 \$1resourceType\$1 `sidewalk_accounts` 为 `amazon_id`，对于 \$1resourceType\$1 `wireless_devices` 为 `wireless_device_id`。

您还可以使用 `+` 通配符同时订阅多个主题。`+` 通配符匹配级别中包含字符的任何字符串。例如，如果您希望收到所有可能的事件类型（`provisioned` 和 `registered`）的通知以及注册到特定 Amazon ID 的所有设备通知，可以使用以下主题筛选条件：

`$aws/iotwireless/events/device_registration_state/+/sidewalk/sidewalk_accounts/amazon_id/+`

**注意**  
您不能使用通配符 `#` 订阅保留主题。有关主题筛选器的更多信息，请参阅《AWS IoT Developer Guide》**中的 [MQTT topic filters](https://docs.aws.amazon.com/iot/latest/developerguide/topicfilters.html)。

## 设备注册状态事件的消息负载
<a name="iot-sidewalk-device-events-json"></a>

启用设备注册状态事件的通知后，事件通知将通过 MQTT 随 JSON 负载一起发布。事件包含以下负载示例：

```
{    
    "eventId": "string", 
    "eventType": "provisioned|registered", 
    "WirelessDeviceId": "string",
    "timestamp": "timestamp",

    // Event-specific fields
    "operation": "create|deregister|register", 
    "Sidewalk": {
        "AmazonId": "string",
        "SidewalkManufacturingSn": "string"
    }
}
```

负载包含以下属性：

**eventId**  
唯一事件 ID (字符串)。

**eventType**  
发生的事件类型。可以是 `provisioned` 或 `registered`。

**wirelessDeviceId**  
无线设备的标识符。

**timestamp**  
事件发生时的 Unix 时间戳。

**操作**  
触发事件的操作。有效值包括 `create`、`register` 和 `deregister`。

**sidewalk**  
您要接收其事件通知的 Sidewalk Amazon ID 或 `SidewalkManufacturingSn`。