

# LoRaWAN 参加イベント
<a name="iot-lorawan-join-events"></a>

AWS IoT Core for LoRaWAN では、AWS IoT にオンボードした LoRaWAN デバイスの参加イベントを通知するメッセージを発行できます。参加イベントは、タイプ 0 またはタイプ 2 の参加または再参加リクエストが受信され、デバイスが AWS IoT Core for LoRaWAN に参加したときに通知します。

## 参加イベントの仕組み
<a name="iot-lorawan-join-events-work"></a>

LoRaWAN デバイスを AWS IoT Core for LoRaWAN にオンボードする場合、AWS IoT Core for LoRaWAN は AWS IoT Core for LoRaWAN を使用してデバイスの*参加*手順を実行します。その後、デバイスが使用可能になり、アップリンクメッセージを送信して、それが利用可能であることを示すことができます。デバイスが参加した後、アップリンクメッセージおよびダウンリンクメッセージをデバイスと AWS IoT Core for LoRaWAN の間で交換できます。デバイスのオンボーディングの詳細については、「[デバイスを AWS IoT Core for LoRaWAN にオンボードする](lorawan-onboard-end-devices.md)」を参照してください。

デバイスが AWS IoT Core for LoRaWAN に参加したときに通知するイベントを有効にできます。また、参加イベントが失敗した場合、タイプ 0 またはタイプ 2 の再参加リクエストを受信した場合、およびそれが受け入れられた場合にも通知されます。

## LoRaWAN 参加イベントを有効にする
<a name="iot-lorawan-join-events-enable"></a>

LoRaWAN 参加の予約済みトピックのサブスクライバーがメッセージを受信できるようにするには、AWS マネジメントコンソール から、あるいは API または CLI を使用して、イベント通知を有効にする必要があります。これらのイベントは、AWS アカウント 内のすべての LoRaWAN リソース、または選択したリソースに対して有効にできます。これらのイベントを有効にする方法の詳細については、「[ワイヤレスリソースのイベントを有効にする](iot-wireless-control-events.md)」を参照してください。

## LoRaWAN イベントの MQTT トピックの形式
<a name="iot-lorawan-join-message-format"></a>

LoRaWAN デバイス用に予約された MQTT トピックでは、次の形式を使用します。これらのトピックをサブスクライブしている場合は、AWS アカウント に登録されているすべての LoRaWAN デバイスで通知を受信できます。
+ 

**リソースレベルのトピック**  
`$aws/iotwireless/events/{eventName}/{eventType}/lorawan/wireless_devices`
+ 

**識別子のトピック**  
`$aws/iotwireless/events/{eventName}/{eventType}/lorawan/wireless_devices/{resourceID}/{id}`

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

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

**{eventType}**  
{eventType} は次のいずれかになります。  
+ `join_req_received`
+ `rejoin_req_0_received`
+ `rejoin_req_2_received`
+ `join_accepted`

**{resourceID}**  
{resourceID} は `dev_eui` または `wireless_device_id` のいずれかになります。

例えば、以下のトピックをサブスクライブして、AWS IoT Core for LoRaWAN がデバイスからの参加リクエストを受け入れたときにイベント通知を受信できます。

`$aws/iotwireless/events/join/join_accepted/lorawan/wireless_devices/wireless_device_id/{id}`

また、ワイルドカード文字 `+` を使用して、複数のトピックを同時にサブスクライブできます。ワイルドカード文字 `+` は、次のトピックなど、その文字を含むレベル内の任意の文字列に一致します。

`$aws/iotwireless/events/join/join_req_received/lorawan/wireless_devices/wireless_device_id/+`

**注記**  
予約済みトピックをサブスクライブするには、ワイルドカード文字 `#` を使用できません。

トピックをサブスクライブするときに `+` ワイルドカードを使用する方法の詳細については、*AWS IoT デベロッパーガイド*の「[MQTT トピックフィルター](https://docs.aws.amazon.com/iot/latest/developerguide/topicfilters.html)」を参照してください。

## LoRaWAN 参加イベントのメッセージペイロード
<a name="lorawan-join-payload"></a>

以下は、LoRaWAN 参加イベントのメッセージペイロードを示しています。

```
{
 // General fields
    "eventId": "string", 
    "eventType": "join_req_received|rejoin_req_0_received|rejoin_req_2_received|join_accepted",
    "WirelessDeviceId": "string",
    "timestamp": "timestamp",
 
 // Event-specific fields
    "LoRaWAN": {
        "DevEui": "string",
        
        // The fields below are optional indicating that it can be a null value.
        "DevAddr": "string", 
        "JoinEui": "string", 
        "AppEui": "string", 
    }
}
```

ペイロードには以下の属性が含まれます。

**eventId**  
AWS IoT Core for LoRaWAN によって生成される一意のイベント ID (文字列)。

**eventType**  
発生したイベントのタイプ。次のいずれかの値を指定できます。  
+ `join_req_received`: このフィールドには、EUI パラメータ `JoinEui` または `AppEui` が表示されます。
+ `rejoin_req_0_received`
+ `rejoin_req_2_received`
+ `join_accepted`: このフィールドには、`NetId` または `DevAddr` が表示されます。

**wirelessDeviceId**  
LoRaWAN デバイスの ID。

**timestamp**  
イベントが発生したときの Unix タイムスタンプ。

**DevEui**  
デバイスラベルまたはデバイスのドキュメントにあるデバイスの一意の識別子。

**DevAddr および EUIs (オプション)**  
これらのフィールドは、オプションのデバイスアドレスと EUI パラメータ `JoinEUI` または `AppEUI` です。