

# デバイス登録状態イベント
<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` になります。デバイスのオンボーディングの詳細については、「[AWS IoT Core for Amazon Sidewalk の開始方法](sidewalk-getting-started.md)」を参照してください。

デバイスが `provisioned` になった後、Amazon Sidewalk は `register` オペレーションを実行して Sidewalk デバイスを AWS IoT Wireless に登録します。登録プロセスが開始され、暗号化キーとセッションキーが AWS IoT で設定されます。デバイスが登録されると、`eventType` は `registered` になり、デバイスを使用できるようになります。

デバイスが `registered` になった後、Sidewalk は `deregister` デバイスにリクエストを送ることができます。次に、AWS IoT Wireless はリクエストを実行し、デバイスの状態を `provisioned` に戻します。デバイス状態の詳細については、「[DeviceState](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>

デバイス登録状態イベントの通知を受けるには、ドル ($) 記号で始まる MQTT 予約トピックをサブスクライブします。詳細については、*AWS IoT デベロッパーガイド*の「[MQTT トピック](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}`

コードの説明は以下のとおりです。

**{eventName}**  
{eventName} は `device_registation_state` である必要があります。

**{eventType}**  
{eventType} は、`provisioned` または `registered` のいずれかになります。

**{resourceType}**  
{resourceType} は、`sidewalk_accounts` または `wireless_devices` のいずれかになります。

**{resourceID}**  
{resourceID} は `sidewalk_accounts` の {resourceType} の `amazon_id` で、`wireless_devices` の {resourceType} の `wireless_device_id` です。

また、ワイルドカード文字 `+` を使用して、複数のトピックを同時にサブスクライブできます。ワイルドカード文字 `+` は、その文字を含むレベル内の任意の文字列に一致します。例えば、可能なすべてのイベントタイプ (`provisioned` および `registered`) について、特定の Amazon ID に登録されているすべてのデバイス関する通知を受ける場合、次のトピックフィルターを使用できます。

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

**注記**  
予約済みトピックをサブスクライブするには、ワイルドカード文字 `#` を使用できません。トピックの詳細については、*AWS IoT デベロッパーガイド*の「[MQTT トピックフィルター](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`。