

# LoRaWAN 加入事件
<a name="iot-lorawan-join-events"></a>

适用于 LoRaWAN 的 AWS IoT Core 可以发布消息，向您通知登记到 AWS IoT 的 LoRaWAN 设备的加入事件。当收到类型为 0 或 2 的加入或重新加入请求并且设备已加入 适用于 LoRaWAN 的 AWS IoT Core 时，加入事件会通知您。

## 加入事件的工作原理
<a name="iot-lorawan-join-events-work"></a>

当您将 LoRaWAN 设备登记到 适用于 LoRaWAN 的 AWS IoT Core 时，适用于 LoRaWAN 的 AWS IoT Core 会执行将您的设备*加入* 到 适用于 LoRaWAN 的 AWS IoT Core 的过程。然后，您的设备将被激活以供使用，并可以发送上行消息以指示其可用。设备加入后，可以在设备与 适用于 LoRaWAN 的 AWS IoT Core 之间交换上行链路和下行链路消息。有关登记您的设备的更多消息，请参阅 [将您的设备登记到 适用于 LoRaWAN 的 AWS IoT Core](lorawan-onboard-end-devices.md)。

您可以启用事件以在设备加入 适用于 LoRaWAN 的 AWS IoT Core 时通知您。如果加入事件失败，收到类型为 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`。

例如，您可以订阅以下主题，以便在 适用于 LoRaWAN 的 AWS IoT Core 已接受来自设备的加入请求时接收事件通知。

`$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 Developer Guide》**中的 [MQTT topic filters](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**  
适用于 LoRaWAN 的 AWS IoT Core 生成的唯一事件 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 和 EUI（可选）**  
这些字段是可选的设备地址和 EUI 参数 `JoinEUI` 或 `AppEUI`。