

# 將閘道和裝置連接至 AWS IoT Core for LoRaWAN
<a name="lorawan-getting-started"></a>

AWS IoT Core for LoRaWAN 可協助您連線和管理無線 LoRaWAN (低功耗長距離廣域網路) 裝置，讓您不需開發和操作 LNS。長距離 WAN (LoRaWAN) 裝置和閘道可以使用 AWS IoT Core for LoRaWAN 連接到 AWS IoT Core。

## 裝置、閘道、設定檔和目的地的命名慣例
<a name="lorawan-naming-convention"></a>

開始使用 AWS IoT Core for LoRaWAN 並建立資源之前，請考慮裝置、閘道和目的地的命名慣例。

AWS IoT Core for LoRaWAN 會將唯一 ID 指派給您為無線裝置、閘道和設定檔建立的資源；不過，您也可以為資源提供更具描述性的名稱，讓您更容易識別這些資源。在將裝置、閘道、設定檔和目的地新增至 AWS IoT Core for LoRaWAN 之前，請考慮您將如何命名它們，以便更容易管理它們。

您也可以將標籤新增至您建立的資源。在新增 LoRaWAN 裝置之前，請考慮您可能如何使用標籤來識別和管理 AWS IoT Core for LoRaWAN 資源。在您新增標籤之後，可以對其進行修改。

如需有關命名和標記的詳細資訊，請參閱 [描述您的 AWS IoT Wireless 資源](iotwireless-describe-resources.md)。

## 將裝置資料映射至服務資料
<a name="lorawan-service-device-data"></a>

來自 LoRaWAN 無線裝置的資料通常會進行編碼以最佳化頻寬。這些編碼的訊息到達 AWS IoT Core for LoRaWAN，該訊息所採用的格式可能不容易被其他 AWS 服務使用。AWS IoT Core for LoRaWAN 會使用 AWS IoT 規則，其可以使用 AWS Lambda 函式來處理裝置訊息，並將其解碼為其他 AWS 服務可以使用的格式。

若要轉換裝置資料並將其傳送至其他 AWS 服務，您需要知道：
+ 無線裝置傳送的資料格式和內容。
+ 您要將資料傳送至哪一個服務。
+ 服務需要的格式。

使用該資訊，您可以建立 AWS IoT 規則，執行轉換並將轉換後的資料傳送至將使用它的 AWS 服務。

## 使用主控台將您的裝置和閘道加入至 AWS IoT Core for LoRaWAN
<a name="lorawan-console"></a>

您可以使用主控台界面或 API 來新增 LoRaWAN 閘道和裝置。如果您使用的是 AWS IoT Core for LoRaWAN，我們建議您使用主控台。當一次管理幾個 AWS IoT Core for LoRaWAN 資源時，主控台界面最實用。當管理大量 AWS IoT Core for LoRaWAN 資源時，請考慮使用 AWS IoT Wireless API 建立更多的自動化解決方案。

您在設定 AWS IoT Core for LoRaWAN 資源時輸入的大部分資料都是由裝置廠商提供，且特定於其支援的 LoRaWAN 規格。下列主題描述如何描述您的 AWS IoT Core for LoRaWAN 資源，以及使用主控台或 API 來新增閘道和裝置。

**注意**  
如果您使用公有網路將 LoRaWAN 裝置連線至雲端，則可以略過加入您的閘道。如需詳細資訊，請參閱[管理來自公有 LoRaWAN 裝置網路的 LoRaWAN 流量 (Everynet)](iot-lorawan-roaming.md)。

**Topics**
+ [裝置、閘道、設定檔和目的地的命名慣例](#lorawan-naming-convention)
+ [將裝置資料映射至服務資料](#lorawan-service-device-data)
+ [使用主控台將您的裝置和閘道加入至 AWS IoT Core for LoRaWAN](#lorawan-console)
+ [將閘道加入 AWS IoT Core for LoRaWAN](lorawan-onboard-gateways.md)
+ [將裝置加入 AWS IoT Core for LoRaWAN](lorawan-onboard-end-devices.md)

# 將閘道加入 AWS IoT Core for LoRaWAN
<a name="lorawan-onboard-gateways"></a>

如果您是第一次使用 AWS IoT Core for LoRaWAN，則可以使用主控台來新增您的第一個 LoRaWAN 閘道和裝置。

**注意**  
如果您使用公有網路將 LoRaWAN 裝置連線至雲端，則可以略過加入您的閘道。如需詳細資訊，請參閱[管理來自公有 LoRaWAN 裝置網路的 LoRaWAN 流量 (Everynet)](iot-lorawan-roaming.md)。

**在加入您的閘道之前**  
在將閘道加入至 AWS IoT Core for LoRaWAN 之前，建議您：
+ 使用符合與 AWS IoT Core for LoRaWAN 搭配使用資格的閘道。這些閘道無需任何其他組態設定即可連線至 AWS IoT Core，並且執行 2.0.4 版或更新版本的 [LoRa Basics Station](https://doc.sm.tc/station) 軟體。如需詳細資訊，請參閱[使用 AWS IoT Wireless 管理閘道](lorawan-manage-gateways.md)。
+ 請考慮所建立資源的命名慣例，以便您可以更輕鬆地管理它們。如需詳細資訊，請參閱[描述您的 AWS IoT Wireless 資源](iotwireless-describe-resources.md)。
+ 請事先準備好每個閘道專屬的組態參數，讓資料輸入至主控台更順暢。AWS IoT 與閘道進行通訊和管理閘道所需的無線閘道組態參數，包括閘道的 EUI 及其 LoRa 頻帶。

**Topics**
+ [考慮頻帶選擇並新增必要的 IAM 角色](lorawan-rfregion-permissions.md)
+ [將閘道新增至 AWS IoT Core for LoRaWAN](lorawan-onboard-gateway-add.md)
+ [連接您的 LoRaWAN 閘道並驗證其連線狀態](lorawan-gateway-connection-status.md)

# 考慮頻帶選擇並新增必要的 IAM 角色
<a name="lorawan-rfregion-permissions"></a>

將閘道新增至 AWS IoT Core for LoRaWAN 之前，我們建議您考慮閘道將在其中運作的頻帶，並新增必要的 IAM 角色，以將閘道連接至 AWS IoT Core for LoRaWAN。

**注意**  
如果您要使用主控台新增閘道，請按一下主控台中的 **Create role** (建立角色) 以建立必要的 IAM 角色，讓您可以略過這些步驟。只有在使用 CLI 建立閘道時，才需要執行這些步驟。

## 考慮為閘道和裝置連線選取 LoRa 頻帶
<a name="lorawan-frequency-bands"></a>

AWS IoT Core for LoRaWAN 支援 EU863-870、US902-928、AU915 和 AS923-1 頻帶，您可以使用這些頻帶來連接實際存在於國家/地區的閘道和裝置，而這些國家/地區支援這些頻帶的頻率範圍和特性。EU863-870 和 US902-928 分別是歐洲和北美洲常用的頻帶。AS923-1 是澳洲、紐西蘭、日本和新加坡等國家常用的頻帶。AU915 是澳大利亞和阿根廷等國家常用的頻帶。如需有關您的地區或國家使用哪個頻帶的詳細資訊，請參閱 [ LoRaWAN® 區域參數](https://lora-alliance.org/resource_hub/rp2-101-lorawan-regional-parameters-2/)。

LoRa Alliance 發佈了可從 LoRa Alliance 網站下載的 LoRaWAN 規格和區域參數文件。LoRa Alliance 區域參數可協助公司決定在其地區或國家使用哪個頻段。AWS IoT Core for LoRaWAN 的頻帶實作遵循區域參數規格文件中的建議。這些區域參數會分組成一組無線電參數，以及適用於工業、科學和醫療 (ISM) 頻帶的頻率配置。我們建議您與合規團隊合作，以確保您符合任何適用的法規需求。

## 新增 IAM 角色以允許組態與更新伺服器 (CUPS) 管理閘道憑證
<a name="lorawan-onboard-permissions"></a>

此程序描述如何新增將允許組態與更新伺服器 (CUPS) 管理閘道憑證的 IAM 角色。請確定您在 LoRaWAN 閘道嘗試與 AWS IoT Core for LoRaWAN 連接之前執行此程序；不過，您只需執行此程序一次。

**新增 IAM 角色以允許組態與更新伺服器 (CUPS) 管理閘道憑證**

1. 開啟 [IAM 主控台的角色中樞](https://console.aws.amazon.com/iam/home#/roles)，然後選擇 **Create role** (建立角色)。

1. 如果您認為可能已新增 **IoTWirelessGatewayCertManagerRole** 角色，請在搜尋列中，輸入 **IoTWirelessGatewayCertManagerRole**。

   如果在搜尋結果中看到 **IoTWirelessGatewayCertManagerRole** 角色，則您擁有必要的 IAM 角色。您現在可以離開此程序了。

   如果搜尋結果是空的，表示您沒有必要的 IAM 角色。繼續此程序以新增角色。

1. 在 **Select type of trusted entity** (選取信任的實體類型) 中，選擇 **Another AWS 帳戶** (另一個 AWS 帳戶 帳戶)。

1. 在 **Account ID** (帳戶 ID) 中，請輸入您的 AWS 帳戶 ID，然後選擇 **Next: Permissions** (下一步：許可)。

1. 在搜尋方塊中，輸入 **AWSIoTWirelessGatewayCertManager**。

1. 在搜尋結果清單中，選取名為 **AWSIoTWirelessGatewayCertManager** 的政策。

1. 選擇 **Next: Tags** (下一步：標籤)，然後選擇 **Next: Review** (下一步：檢閱)。

1. 在 **Role name** (角色名稱) 中，輸入 **IoTWirelessGatewayCertManagerRole**，然後選擇 **Create role** (建立角色)。

1. 若要編輯新角色，請在確認訊息中選擇 **IoTWirelessGatewayCertManagerRole**。

1. 在 **Summary** (摘要) 上，選擇 **Trust relationships** (信任關係) 標籤，然後選擇 **Edit trust relationship** (編輯信任關係)。

1. 在 **Policy Document** (政策文件) 中，變更 `Principal` 屬性以看起來像此範例。

   ```
   "Principal": { 
       "Service": "iotwireless.amazonaws.com" 
   },
   ```

   在您變更 `Principal` 屬性之後，完整政策文件應該看起來像此範例。

   ```
   {
     "Version": "2012-10-17",
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "iotwireless.amazonaws.com"
         },
         "Action": "sts:AssumeRole",
         "Condition": {}
       }
     ]
   }
   ```

1. 若要儲存您的變更，請選擇 **Update Trust Policy** (更新信任政策)。

您現在已建立 **IoTWirelessGatewayCertManagerRole**。您不需要再次執行此動作。

如果您在新增閘道時執行了此程序，則可以關閉此視窗和 IAM 主控台，並返回 AWS IoT 主控台以完成新增閘道。

# 將閘道新增至 AWS IoT Core for LoRaWAN
<a name="lorawan-onboard-gateway-add"></a>

您可以使用主控台或 CLI，將閘道新增至 AWS IoT Core for LoRaWAN。

新增閘道之前，我們建議您考慮 [將閘道加入 AWS IoT Core for LoRaWAN](lorawan-onboard-gateways.md) 的**在加入您的閘道之前**一節中提到的因素。

如果您是第一次新增閘道，我們建議您使用主控台。如果您想要改用 CLI 新增閘道，則必須已建立必要的 IAM 角色，以便閘道可以與 AWS IoT Core for LoRaWAN 連接。如需如何建立角色的相關資訊，請參閱 [新增 IAM 角色以允許組態與更新伺服器 (CUPS) 管理閘道憑證](lorawan-rfregion-permissions.md#lorawan-onboard-permissions)。

## 使用主控台新增閘道
<a name="lorawan-onboard-gateway-console"></a>

導覽至 AWS IoT 主控台的 [AWS IoT Core for LoRaWAN](https://console.aws.amazon.com/iot/home#/wireless/landing) **Intro** (簡介) 頁面，並選擇 **Get started** (開始使用)，然後選擇 **Add gateway** (新增閘道)。如果已新增閘道，請選擇 **View gateway** (檢視閘道)，以檢視您已新增的閘道。如果您想要新增更多閘道，請選擇 **Add gateway** (新增閘道)。

1. 

**提供閘道詳細資訊和頻帶資訊**  
使用 **Gateway details** (閘道詳細資訊) 區段，以提供裝置組態資料的相關資訊，例如閘道的 EUI 和頻帶組態。
   + 

**閘道的 EUI**  
個別閘道裝置的 EUI (延伸唯一識別碼)。EUI 是 16 位數的英數代碼，例如 `c0ee40ffff29df10`，可唯一識別 LoRaWAN 網路中的閘道。此資訊專屬於您的閘道型號，而且您可以在閘道裝置或其使用者手冊中找到該資訊。
**注意**  
閘道的 EUI 與您可能看到列印在閘道裝置上的 Wi-Fi MAC 位址不同。EUI 遵循 EUI-64 標準，可唯一識別您的閘道，因此無法在其他 AWS 帳戶 和 Region 中重複使用。
   + 

**頻帶 (RFRegion)**  
閘道的頻帶。您可以選擇 `US915`、`EU868`、`AU915` 或 `AS923-1`，取決於閘道支援的項目，以及閘道實際連線的國家或地區。如需頻帶的相關資訊，請參閱 [考慮為閘道和裝置連線選取 LoRa 頻帶](lorawan-rfregion-permissions.md#lorawan-frequency-bands)。

1. 

**指定您的無線閘道組態資料 (選用)**  
這些是選用欄位，您可以使用它們來提供關於閘道及其組態的其他資訊。
   + 

**閘道的名稱、描述和標籤**  
這些選用欄位中的資訊來自於您如何組織和描述無線系統中的元素。您可以將 **Name** (名稱) 指派給閘道、使用**Description** (描述) 欄位來提供閘道的相關資訊，以及使用 **Tags** (標籤) 來新增關於閘道的中繼資料的鍵值對。如需有關命名和描述資源的詳細資訊，請參閱 [描述您的 AWS IoT Wireless 資源](iotwireless-describe-resources.md)。
   + 

**使用子頻帶和篩選條件的 LoRaWAN 組態**  
您也可以選擇性地指定 LoRaWAN 組態資料，例如您想要使用的子頻帶，以及可以控制流量的篩選條件。針對本教學課程，您可以略過這些欄位。如需詳細資訊，請參閱[設定閘道的子頻帶和篩選功能](lorawan-subband-filter-configuration.md)。

1. 

**將 AWS IoT 物件與閘道建立關聯**  
指定是否要建立 AWS IoT 物件，並將其與閘道建立關聯。AWS IoT 中的物件可讓您更輕鬆地搜尋和管理您的裝置。將物件與閘道建立關聯，可讓閘道存取其他 AWS IoT Core 功能。

1. 

**建立並下載閘道憑證**  
若要驗證您的閘道，使其能夠安全地與 AWS IoT 通訊，您的 LoRaWAN 閘道必須提供私有金鑰和憑證給 AWS IoT Core for LoRaWAN。建立 **Gateway certificate** (閘道憑證)，以便 AWS IoT 可以使用 X.509 標準來驗證閘道的身分。

   按一下 **Create certificate** (建立憑證) 按鈕並下載憑證檔案。稍後您將使用它們來設定閘道。

1. 

**複製 CUPS 和 LNS 端點並下載憑證**  
建立與 AWS IoT Core for LoRaWAN 的連線時，您的 LoRaWAN 閘道必須連接到 CUPS 或 LNS 端點。建議您使用 CUPS 端點，因為它也可以提供組態管理。若要驗證 AWS IoT Core for LoRaWAN 端點，您的閘道會針對每個 CUPS 和 LNS 端點使用信任憑證，

   按一下 **Copy** (複製) 按鈕來複製 CUPS 和 LNS 端點。您稍後需要此資訊來設定您的閘道。然後按一下 **Download server trust certificates** (下載伺服器信任憑證) 按鈕，來下載 CUPS 和 LNS 端點的信任憑證。

1. 

**建立 IAM 角色以取得閘道許可**  
您需要新增一個允許組態與更新伺服器 (CUPS) 管理閘道憑證的 IAM 角色。
**注意**  
在此步驟中，您會建立 **IoTWirelessGatewayCertManager** 角色。如果您已建立此角色，則可略過此步驟。您必須先執行此動作，然後 LoRaWAN 閘道才會嘗試與 AWS IoT Core for LoRaWAN 連接；不過，您只需執行此動作一次。

   若要為您的帳戶建立 **IoTWirelessGatewayCertManager** IAM 角色，請按一下 **Create role** (建立角色) 按鈕。如果角色已存在，請從下拉式清單中選取該角色。

   按一下 **Submit** (提交) 以完成閘道建立。

## 使用 API 新增閘道
<a name="lorawan-onboard-gateway-api"></a>

如果您是第一次使用 API 或 CLI 新增閘道，則必須新增 **IoTWirelessGatewayCertManager** IAM 角色，以便閘道可以與 AWS IoT Core for LoRaWAN 連接。如需如何建立角色的相關資訊，請參閱下列 [新增 IAM 角色以允許組態與更新伺服器 (CUPS) 管理閘道憑證](lorawan-rfregion-permissions.md#lorawan-onboard-permissions) 一節。

下方清單描述 API 動作，其會執行與新增、更新或刪除 LoRaWAN 閘道相關聯的任務。

**AWS IoT Core for LoRaWAN 閘道的 AWS IoT Wireless API 動作**
+ [CreateWirelessGateway](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateWirelessGateway.html)
+ [GetWirelessGateway](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetWirelessGateway.html)
+ [ListWirelessGateways](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ListWirelessGateways.html)
+ [UpdateWirelessGateway](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_UpdateWirelessGateway.html)
+ [DeleteWirelessGateway](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_DeleteWirelessGateway.html)

如需可用來建立和管理 AWS IoT Core for LoRaWAN 資源的動作和資料類型完整清單，請參閱 [AWS IoT Wireless API 參考](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/welcome.html)。

**如何使用 AWS CLI 來新增閘道**  
您可以使用 AWS CLI 來建立無線閘道，方法為使用 [create-wireless-gateway](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/create-wireless-gateway.html) 命令。以下範例會建立無線 LoRaWAN 裝置閘道。您也可以提供 `input.json` 檔案，其中包含其他詳細資訊，例如閘道憑證和佈建憑證。

**注意**  
您也可以使用 API 中對應於此處顯示的 CLI 命令的方法，在 AWS API 中執行此程序。

```
aws iotwireless create-wireless-gateway \
    --lorawan GatewayEui="a1b2c3d4567890ab",RfRegion="US915" \
    --name "myFirstLoRaWANGateway" \
    --description "Using my first LoRaWAN gateway"
    --cli-input-json input.json
```

如需您可以使用哪些 CLI 的相關資訊，請參閱 [AWS CLI 參考](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/index.html) 

# 連接您的 LoRaWAN 閘道並驗證其連線狀態
<a name="lorawan-gateway-connection-status"></a>

在檢查閘道連線狀態之前，您必須已新增閘道，並將其連接至 AWS IoT Core for LoRaWAN。如需如何新增閘道的相關資訊，請參閱 [將閘道新增至 AWS IoT Core for LoRaWAN](lorawan-onboard-gateway-add.md)。

## 將您的閘道連接到 AWS IoT Core for LoRaWAN
<a name="lorawan-connect-gateway"></a>

在新增了閘道之後，請連接至閘道的組態界面，以輸入組態資訊和信任憑證。

在將閘道資訊新增至 AWS IoT Core for LoRaWAN 之後，請將一些 AWS IoT Core for LoRaWAN 資訊新增至閘道裝置。閘道廠商提供的文件應該描述將憑證檔案上傳至閘道，以及設定閘道裝置與 AWS IoT Core for LoRaWAN 通訊的程序。

**有資格與 AWS IoT Core for LoRaWAN 搭配使用的閘道**  
如需如何設定 LoRaWAN 閘道的指示，請參閱 AWS IoT Core for LoRaWAN 研討會的[設定閘道裝置](https://iotwireless.workshop.aws/en/200_gateway/400_configuregateway.html)一節。在這裡，您可以找到閘道連接指示的相關資訊，這些閘道有資格與 AWS IoT Core for LoRaWAN 搭配使用。

**支援 CUPS 通訊協定的閘道**  
以下指示展示如何連接支援 CUPS 通訊協定的閘道。

1. 上傳您在新增閘道時取得的下列檔案。
   + 閘道裝置憑證和私有金鑰檔案。
   + CUPS 端點的信任憑證檔案，即 `cups.trust`。

1. 指定您先前取得的 CUPS 端點 URL。端點的格式為 `prefix.cups.lorawan.region.amazonaws.com:443`。

如需有關如何取得此資訊的詳細資訊，請參閱 [將閘道新增至 AWS IoT Core for LoRaWAN](lorawan-onboard-gateway-add.md)。

**支援 LNS 通訊協定的閘道**  
以下指示展示如何連接支援 LNS 通訊協定的閘道。

1. 上傳您在新增閘道時取得的下列檔案。
   + 閘道裝置憑證和私有金鑰檔案。
   + LNS 端點的信任憑證檔案，即 `lns.trust`。

1. 指定您先前取得的 LNS 端點 URL。端點的格式為 https://`prefix.lns.lorawan.region.amazonaws.com:443`。

如需有關如何取得此資訊的詳細資訊，請參閱 [將閘道新增至 AWS IoT Core for LoRaWAN](lorawan-onboard-gateway-add.md)。

在將閘道連接至 AWS IoT Core for LoRaWAN 之後，您可以使用主控台或 API 來檢查連線狀態，以及取得何時收到上次上行的相關資訊。

## 使用主控台檢查閘道連線狀態
<a name="lorawan-connection-status-console"></a>

若要使用主控台檢查連線狀態，請導覽至 AWS IoT 主控台的 [https://console.aws.amazon.com/iot/home#/wireless/gateways](https://console.aws.amazon.com/iot/home#/wireless/gateways) (閘道) 頁面，然後選擇您已新增的閘道。在閘道詳細資訊頁面的 **LoRaWAN specific details** (LoRaWAN 特定詳細資訊) 區段中，您會看到連線狀態，以及上次收到上行的日期和時間。

## 使用 API 檢查閘道連線狀態
<a name="lorawan-connection-status-api"></a>

若要使用 API 檢查連線狀態，請使用 `GetWirelessGatewayStatistics` API。此 API 沒有要求主體，而且只包含回應主體，其中顯示閘道是否已連線，以及上次收到上行的時間。

```
HTTP/1.1 200
Content-type: application/json

{
  “ConnectionStatus”: “Connected”,
  “LastUplinkReceivedAt”: “2021-03-24T23:13:08.476015749Z”,
  “WirelessGatewayId”: “30cbdcf3-86de-4291-bfab-5bfa2b12bad5"
}
```

# 將裝置加入 AWS IoT Core for LoRaWAN
<a name="lorawan-onboard-end-devices"></a>

在將閘道加入至 AWS IoT Core for LoRaWAN，並驗證其連線狀態之後，您就可以加入自己的無線裝置。如需如何加入閘道的相關資訊，請參閱 [將閘道加入 AWS IoT Core for LoRaWAN](lorawan-onboard-gateways.md)。

LoRaWAN 裝置使用 LoRaWAN 通訊協定，與雲端託管的應用程式交換資料。AWS IoT Core for LoRaWAN 支援符合 LoRa Alliance 所標準化之 1.0.x 或 1.1 LoRaWAN 規格的裝置。

LoRaWAN 裝置通常包含一或多個感應器 和 動作者。這些裝置會透過 LoRaWAN 閘道將上行遙測資料傳送至 AWS IoT Core for LoRaWAN。雲端託管的應用程式可以控制感應器，方法為透過 LoRaWAN 閘道將下行命令傳送至 LoRaWAN 裝置。

**在加入您的無線裝置之前**  
在將無線裝置加入至 AWS IoT Core for LoRaWAN 之前，您需要事先備妥以下資訊：
+ 

**LoRaWAN 規格與無線裝置組態**  
事先準備好要輸入的每個閘道專屬組態參數，可讓資料輸入至主控台更順暢。您需要輸入的特定參數取決於裝置使用的 LoRaWAN 規格。如需其規格和組態參數的完整清單，請參閱每個裝置的文件。
+ 

**裝置名稱和描述 (選用)**  
這些選用欄位中的資訊來自於您如何組織和描述無線系統中的元素。如需有關命名和描述資源的詳細資訊，請參閱 [描述您的 AWS IoT Wireless 資源](iotwireless-describe-resources.md)。
+ 

**裝置和服務設定檔**  
準備好一些無線裝置組態參數，供許多裝置共用，並可儲存在 AWS IoT Core for LoRaWAN 中，作為裝置和服務設定檔。組態參數可以在裝置的文件中或裝置本身上找到。您會想要識別符合裝置組態參數的裝置設定檔，或在必要時建立一個設定檔，然後再新增裝置。如需詳細資訊，請參閱[將設定檔新增至 AWS IoT Core for LoRaWAN](lorawan-define-profiles.md)。
+ 

**AWS IoT Core for LoRaWAN destination**  
每個裝置都必須指派給目的地，該目的地將處理其要傳送至 AWS IoT 和其他服務的訊息。處理和傳送裝置訊息的 AWS IoT 規則是特定於裝置的訊息格式。若要處理來自裝置的訊息並將它們傳送至正確的服務，請識別您將建立以與裝置訊息搭配使用的目的地，並將它指派給裝置。

**Topics**
+ [將您的無線裝置新增至 AWS IoT Core for LoRaWAN](lorawan-end-devices-add.md)
+ [將設定檔新增至 AWS IoT Core for LoRaWAN](lorawan-define-profiles.md)
+ [新增目的地至 AWS IoT Core for LoRaWAN](lorawan-create-destinations.md)
+ [建立規則來處理 LoRaWAN 裝置訊息](lorawan-destination-rules.md)
+ [連接您的 LoRaWAN 裝置並驗證其連線狀態](lorawan-device-connection-status.md)

# 將您的無線裝置新增至 AWS IoT Core for LoRaWAN
<a name="lorawan-end-devices-add"></a>

如果您是第一次新增無線裝置，我們建議您使用主控台。導覽至 AWS IoT 主控台的 [AWS IoT Core for LoRaWAN](https://console.aws.amazon.com/iot/home#/wireless/landing) **Intro** (簡介) 頁面、選擇 **Get started** (開始使用)，然後選擇 **Add device** (新增裝置)。如果已新增裝置，請選擇 **View device** (檢視裝置)，以檢視您已新增的閘道。如果您想要新增更多裝置，請選擇 **Add device** (新增裝置)。

或者，您也可以從 AWS IoT 主控台的 [Devices](https://console.aws.amazon.com/iot/home#/wireless/devices) (裝置)頁面新增無線裝置。

## 使用主控台將您的無線裝置規格新增至 AWS IoT Core for LoRaWAN
<a name="lorawan-end-device-spec-console"></a>

根據您的啟用方法和 LoRaWAN 版本，選擇 **Wireless device specification** (無線裝置規格)。一旦選取，就會使用 AWS 擁有並為您管理的金鑰來加密您的資料。

**OTAA 和 ABP 啟用模式**  
在您的 LoRaWAN 裝置可以傳送上行資料之前，您必須先完成稱為「啟用」**或「聯結」**的程序。若要啟用您的裝置，您可以使用 OTAA (無線啟用) 或 ABP (個人化啟用)。

ABP 不需要聯結程序且會使用靜態金鑰。當您使用 OTAA 時，LoRaWAN 裝置會傳送聯結要求，且網路伺服器可以允許該要求。我們建議您使用 OTAA 來啟用裝置，因為每次啟用都會產生新的工作階段金鑰，這樣會使其更安全。

**LoRaWAN 版本**  
當您使用 OTAA 時，您的 LoRaWAN 裝置和雲端託管的應用程式會共用根金鑰。這些根金鑰取決於您使用的是 v1.0.x 版還是 v1.1 版。v1.0.x 只有一個根金鑰，即 **AppKey** (應用程式金鑰)，而 v1.1 有兩個根金鑰，即 **AppKey** (應用程式金鑰) 和 **NwkKey** (網路金鑰)。工作階段金鑰是在每次啟用時根據根金鑰衍生的。**NwkKey** 和 **AppKey** 兩者都是無線廠商所提供的十六進位值 (32 位數)。

**無線裝置 EUI**  
在您選取 **Wireless device specification** (無線裝置規格) 之後，您會看到主機上顯示無線裝置的 EUI (延伸唯一識別碼) 參數。您可以從裝置或無線廠商的文件中找到此資訊。
+ **DevEUI**：16 位數的十六進位值，這是您裝置獨有的，可在裝置標籤或其文件上找到。
+ **AppEUI**：16 位數的十六進位值，這是聯結伺服器獨有的，可在裝置文件中找到。在 LoRaWAN v1.1 版中，**AppEUI** 被稱為 **JoinEUI**。

如需唯一識別碼、工作階段金鑰和根金鑰的詳細資訊，請參閱 [LoRa Alliance](https://lora-alliance.org/about-lorawan) 文件。

## 使用 API 將無線裝置規格新增至 AWS IoT Core for LoRaWAN
<a name="lorawan-end-device-spec-api"></a>

如果您是使用 API 新增無線裝置，則必須先建立裝置設定檔和服務設定檔，然後才能建立無線裝置。在建立無線裝置時，您將使用裝置設定檔和服務設定檔 ID。如需如何使用 API 建立這些設定檔的相關資訊，請參閱 [使用 API 新增裝置設定檔](lorawan-define-profiles.md#lorawan-device-profile-api)。

下方清單描述 API 動作，其會執行與新增、更新或刪除服務設定檔相關聯的任務。

**服務設定檔的 AWS IoT Wireless API 動作**
+ [CreateWirelessDevice](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateWirelessDevice.html)
+ [GetWirelessDevice](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetWirelessDevice.html)
+ [ListWirelessDevices](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ListWirelessDevices.html)
+ [UpdateWirelessDevice](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_UpdateWirelessDevice.html)
+ [DeleteWirelessDevice](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_DeleteWirelessDevice.html)

如需可用來建立和管理 AWS IoT Core for LoRaWAN 資源的動作和資料類型完整清單，請參閱 [AWS IoT Wireless API 參考](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/welcome.html)。

**如何使用 AWS CLI 建立無線裝置**  
您可以使用 AWS CLI 來建立無線裝置，方法為使用 [create-wireless-device](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/create-device-profile.html) 命令。下列範例會建立無線裝置，方法為使用 input.json 檔案來輸入參數。

**注意**  
您也可以使用 API 中對應於此處顯示的 CLI 命令的方法，在 AWS API 中執行此程序。

**input.json 的內容**

```
{
    "Description": "My LoRaWAN wireless device"
    "DestinationName": "IoTWirelessDestination"
    "LoRaWAN": {
        "DeviceProfileId": "ab0c23d3-b001-45ef-6a01-2bc3de4f5333",
        "ServiceProfileId": "fe98dc76-cd12-001e-2d34-5550432da100",
        "OtaaV1_1": {
            "AppKey": "3f4ca100e2fc675ea123f4eb12c4a012",
            "JoinEui": "b4c231a359bc2e3d",
            "NwkKey": "01c3f004a2d6efffe32c4eda14bcd2b4"
        },
        "DevEui": "ac12efc654d23fc2"
    },
    "Name": "SampleIoTWirelessThing"
    "Type": LoRaWAN
}
```

您可以提供此檔案作為 `create-wireless-device` 命令的輸入。

```
aws iotwireless create-wireless-device \
    --cli-input-json file://input.json
```

如需您可以使用哪些 CLI 的相關資訊，請參閱 [AWS CLI 參考](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/index.html) 

# 將設定檔新增至 AWS IoT Core for LoRaWAN
<a name="lorawan-define-profiles"></a>

裝置和服務設定檔可以定義為描述常用的裝置組態。這些設定檔描述裝置共用的設定參數，讓您更輕鬆地新增這些裝置。AWS IoT Core for LoRaWAN 支援裝置設定檔和服務設定檔。

 要輸入至這些設定檔的組態參數和值是由裝置製造商提供。

## 新增裝置設定檔
<a name="lorawan-device-profiles"></a>

裝置設定檔定義網路伺服器用來設定 LoRaWAN 無線電存取服務的裝置功能和開機參數。它包括參數的選擇，例如 LoRa 頻帶、LoRa 區域參數版本，以及裝置的 MAC 版本。若要進一步了解不同頻帶，請參閱 [考慮為閘道和裝置連線選取 LoRa 頻帶](lorawan-rfregion-permissions.md#lorawan-frequency-bands)。

### 使用主控台新增裝置設定檔
<a name="lorawan-device-profile-console"></a>

如果您是使用主控台新增無線裝置，如 [使用主控台將您的無線裝置規格新增至 AWS IoT Core for LoRaWAN](lorawan-end-devices-add.md#lorawan-end-device-spec-console) 所述，則在新增了無線裝置規格之後，您就可以新增裝置設定檔。或者，您也可以在 **LoRaWAN** 標籤上從 AWS IoT 主控台的 [Profiles](https://console.aws.amazon.com/iot/home#/wireless/profiles) (設定檔) 頁面新增無線裝置。

您可以選擇預設裝置設定檔或建立新的裝置設定檔。建議您使用預設裝置設定檔。如果您的應用程式需要您建立裝置設定檔，請提供 **Device profile name** (裝置設定檔名稱)、選取您正在對裝置和閘道使用的 **Frequency band (RfRegion)** (頻帶 (RfRegion))，並將其他設定保留為預設值，除非裝置文件中另有指定。

### 使用 API 新增裝置設定檔
<a name="lorawan-device-profile-api"></a>

如果您是使用 API 新增無線裝置，則必須先建立裝置設定檔，然後才能建立無線裝置。

下方清單描述 API 動作，其會執行與新增、更新或刪除服務設定檔相關聯的任務。

**服務設定檔的 AWS IoT Wireless API 動作**
+ [CreateDeviceProfile](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateDeviceProfile.html)
+ [GetDeviceProfile](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetDeviceProfile.html)
+ [ListDeviceProfiles](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ListDeviceProfiles.html)
+ [UpdateDeviceProfile](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_UpdateDeviceProfile.html)
+ [DeleteDeviceProfile](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_DeleteDeviceProfile.html)

如需可用來建立和管理 AWS IoT Core for LoRaWAN 資源的動作和資料類型完整清單，請參閱 [AWS IoT Wireless API 參考](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/welcome.html)。

**如何使用 AWS CLI 建立裝置設定檔**  
您可以使用 AWS CLI 來建立裝置設定檔，方法為使用 [create-device-profile](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/create-device-profile.html) 命令。以下範例會建立裝置設定檔。

```
aws iotwireless create-device-profile
```

執行此命令會自動建立具有 ID 的裝置設定檔，您可以在建立無線裝置時使用此 ID。您現在可以使用下列 API 建立服務設定檔，然後使用裝置和服務設定檔建立無線裝置。

```
{
    "Arn": "arn:aws:iotwireless:us-east-1:123456789012:DeviceProfile/12345678-a1b2-3c45-67d8-e90fa1b2c34d",
    "Id": "12345678-a1b2-3c45-67d8-e90fa1b2c34d"
}
```

如需您可以使用哪些 CLI 的相關資訊，請參閱 [AWS CLI 參考](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/index.html) 

## 新增裝置設定檔
<a name="lorawan-service-profiles"></a>

服務設定檔描述裝置與應用程式伺服器通訊所需的通訊參數。

### 使用主控台新增服務設定檔
<a name="lorawan-service-profile-console"></a>

如果您是使用主控台新增無線裝置，如 [使用主控台將您的無線裝置規格新增至 AWS IoT Core for LoRaWAN](lorawan-end-devices-add.md#lorawan-end-device-spec-console) 所述，則在新增了裝置設定檔之後，您就可以新增服務設定檔。或者，您也可以在 **LoRaWAN** 標籤上從 AWS IoT 主控台的 [Profiles](https://console.aws.amazon.com/iot/home#/wireless/profiles) (設定檔) 頁面新增無線裝置。

建議您將設定 **AddGWMetaData** 保留為啟用狀態，以便您可以收到每個承載的額外閘道中繼資料，例如用於資料傳輸的 RSSI 和 SNR。

### 使用 API 新增服務設定檔
<a name="lorawan-service-profile-api"></a>

如果您是使用 API 新增無線裝置，則必須先建立服務設定檔，然後才能建立無線裝置。

下方清單描述 API 動作，其會執行與新增、更新或刪除服務設定檔相關聯的任務。

**服務設定檔的 AWS IoT Wireless API 動作**
+ [CreateServiceProfile](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateServiceProfile.html)
+ [GetServiceProfile](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetServiceProfile.html)
+ [ListServiceProfiles](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ListServiceProfiles.html)
+ [ UpdateServiceProfile](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_UpdateServiceProfile.html)
+ [DeleteServiceProfile](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_DeleteServiceProfile.html)

如需可用來建立和管理 AWS IoT Core for LoRaWAN 資源的動作和資料類型完整清單，請參閱 [AWS IoT Wireless API 參考](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/welcome.html)。

**如何使用 AWS CLI 建立服務設定檔**  
您可以使用 AWS CLI 來建立服務，方法為使用 [create-service-profile](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/create-service-profile.html) 命令。以下範例會建立服務設定檔。

```
aws iotwireless create-service-profile
```

執行此命令會自動建立具有 ID 的服務設定檔，您可以在建立無線裝置時使用此 ID。您現在可以使用裝置和服務設定檔來建立無線裝置。

```
{
    "Arn": "arn:aws:iotwireless:us-east-1:123456789012:ServiceProfile/12345678-a1b2-3c45-67d8-e90fa1b2c34d",
    "Id": "12345678-a1b2-3c45-67d8-e90fa1b2c34d"
}
```

# 新增目的地至 AWS IoT Core for LoRaWAN
<a name="lorawan-create-destinations"></a>

AWS IoT Core for LoRaWAN 描述處理裝置資料以供 AWS 服務使用的 AWS IoT 規則。

因為大部分 LoRaWAN 裝置不會以 AWS 服務可以使用的格式，將資料傳送至 AWS IoT Core for LoRaWAN，所以 AWS IoT 規則必須先處理它。AWS IoT 規則包含解譯裝置資料的 SQL 陳述式，以及將 SQL 陳述式結果傳送至將使用它的服務的主題規則動作。

如果是第一次新增目的地，我們建議您使用主控台。

## 使用主控台新增目的地
<a name="lorawan-create-destination-console"></a>

如果是使用主控台新增無線裝置 (如 [使用主控台將您的無線裝置規格新增至 AWS IoT Core for LoRaWAN](lorawan-end-devices-add.md#lorawan-end-device-spec-console) 所述)，則在已將無線裝置規格和設定檔新增至 AWS IoT Core for LoRaWAN 之後，您可以繼續並新增目的地。

您也可以從 AWS IoT 主控台的 [Destinations](https://console.aws.amazon.com/iot/home#/wireless/destinations) (目的地) 頁面新增 AWS IoT Core for LoRaWAN 目的地。

若要處理裝置的資料，請在建立 AWS IoT Core for LoRaWAN 目的地時指定下列欄位，然後選擇 **Add destination** (新增目的地)。
+ 

**目的地詳細資訊**  
為您的目的地輸入 **Destination name** (目的地名稱) 和選用描述。
+ 

**規則名稱**  
AWS IoT 規則被設定為評估裝置傳送的訊息並處理裝置的資料。規則名稱會映射至目的地。目的地需要規則來處理接收到的訊息。您可以選擇透過叫用 AWS IoT 規則或發佈至 AWS IoT 訊息代理程式的方式來處理訊息。
  + 如果選擇 **Enter a rule name** (輸入規則名稱)，請輸入名稱然後選擇 **Copy** (複製)，來複製您在建立 AWS IoT 規則時將輸入的規則名稱。您可以選擇 **Create rule** (建立規則) 來立即建立規則，或導覽至 AWS IoT 主控台的[規則](https://console.aws.amazon.com/iot/home#/create/rule)中樞，並使用該名稱建立規則。

    您也可以輸入規則，再使用 **Advanced** (進階) 設定來指定主題名稱。主題名稱會在規則叫用期間提供，而且可以使用規則中的 `topic` 運算式存取。如需AWS IoT規則的詳細資訊，請參閱 [https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html)。
  + 若您選擇**發佈至 AWS IoT 訊息代理程式**，請輸入主題名稱。然後您可以複製 MQTT 主題名稱，多位訂閱者可以訂閱此主題，以接收發佈至該主題的訊息。如需詳細資訊，請參閱[https://docs.aws.amazon.com/iot/latest/developerguide/topics.html](https://docs.aws.amazon.com/iot/latest/developerguide/topics.html)。

  如需有關目的地之 AWS IoT 規則的詳細資訊，請參閱 [建立規則來處理 LoRaWAN 裝置訊息](lorawan-destination-rules.md)。
+ 

**角色名稱**  
授予裝置資料許可，以存取在 **Rule name** (規則名稱) 中命名之規則的 IAM 角色。您可以在主控台中建立新的服務角色，或選取現有的服務角色。如果正在建立新的服務角色，您可以輸入角色名稱 (例如 **IoTWirelessDestinationRole**)，或為 AWS IoT Core for LoRaWAN 保留為空白以產生新的角色名稱。AWS IoT Core for LoRaWAN 會代表您自動建立具有適當許可的 IAM 角色。

  如需有關 IAM 角色的詳細資訊，請參閱[使用 IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html)。

## 使用 API 新增目的地
<a name="lorawan-create-destination-api"></a>

如果想要改用 CLI 來新增目的地，您必須已為目的地建立規則和 IAM 角色。如需目的地在角色中需要的詳細資訊，請參閱 [為您的目的地建立 IAM 角色](#lorawan-create-destinations-roles)。

下方清單包含執行與新增、更新或刪除目的地相關聯之任務的 API 動作。

**目的地的 AWS IoT Wireless API 動作**
+ [CreateDestination](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_CreateDestination.html)
+ [GetDestination](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_GetDestination.html)
+ [ListDestinations](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ListDestinations.html)
+ [ UpdateDestination](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_UpdateDestination.html)
+ [DeleteDestination](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_DeleteDestination.html)

如需可用來建立和管理 AWS IoT Core for LoRaWAN 資源的動作和資料類型完整清單，請參閱 [AWS IoT Wireless API 參考](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/welcome.html)。

**如何使用 AWS CLI 來新增目的地**  
您可以使用 AWS CLI 來新增目的地，方法為使用 [create-destination](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/create-destination.html) 命令。以下範例顯示如何透過使用 `RuleName` 作為 `expression-type` 參數值而輸入值名稱，以建立目的地。如果要指定要發佈或訂閱訊息代理程式的主題名稱，請將 `expression-type` 參數值變更為 `MqttTopic`。

```
aws iotwireless create-destination \
    --name IoTWirelessDestination \
    --expression-type RuleName \
    --expression IoTWirelessRule \
    --role-arn arn:aws:iam::123456789012:role/IoTWirelessDestinationRole
```

執行此命令會使用指定的目的地名稱、規則名稱和角色名稱建立目的地。如需目的地之規則和角色名稱的相關資訊，請參閱 [建立規則來處理 LoRaWAN 裝置訊息](lorawan-destination-rules.md) 和 [為您的目的地建立 IAM 角色](#lorawan-create-destinations-roles)。

如需您可以使用哪些 CLI 的相關資訊，請參閱 [AWS CLI 參考](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/index.html)。

## 為您的目的地建立 IAM 角色
<a name="lorawan-create-destinations-roles"></a>

AWS IoT Core for LoRaWAN 目的地需要 IAM 角色，這些角色會將資料傳送至 AWS IoT 規則所需的許可給與 AWS IoT Core for LoRaWAN。如果尚未定義此類角色，則必須定義它，以便它顯示在角色清單中。

在使用主控台新增目的地時，AWS IoT Core for LoRaWAN 會自動為您建立 IAM 角色，如本主題先前所述。使用 API 或 CLI 新增目的地時，您必須為目的地建立 IAM 角色。

**為 AWS IoT Core for LoRaWAN 目的地角色建立 IAM 政策**

1. 開啟 [IAM 主控台的政策中樞](https://console.aws.amazon.com/iam/home#/policies)。

1. 選擇 **Create policy** (建立政策)，然後選擇 **JSON** 標籤。

1. 在編輯器中，刪除編輯器中的任何內容，然後貼上此政策文件。

   ```
   {
       "Version": "2012-10-17",
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "iot:DescribeEndpoint",
                   "iot:Publish"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

1. 選擇 **Review Policy** (檢閱政策)，然後在 **Name** (名稱) 中，輸入此政策的名稱。您將需要此名稱用於下一個程序中。

   您也可以在 **Description** (描述) 中描述此政策 (如果您想要的話)。

1. 選擇 **Create policy (建立政策)**。

**為 AWS IoT Core for LoRaWAN 目的地建立 IAM 角色**

1. 開啟 [IAM 主控台的角色中樞](https://console.aws.amazon.com/iam/home#/roles)，然後選擇 **Create role** (建立角色)。

1. 在 **Select type of trusted entity** (選取信任的實體類型) 中，選擇 **Another AWS 帳戶** (另一個 AWS 帳戶 帳戶)。

1. 在 **Account ID** (帳戶 ID) 中，請輸入您的 AWS 帳戶 ID，然後選擇 **Next: Permissions** (下一步：許可)。

1. 在搜尋方塊中，輸入您在上一個程序中建立的 IAM 政策名稱。

1. 在搜尋結果中，檢查您在上一個程序中建立的 IAM 政策。

1. 選擇 **Next: Tags** (下一步：標籤)，然後選擇 **Next: Review** (下一步：檢閱)。

1. 在 **Role name** (角色名稱) 中，輸入此角色的名稱，然後選擇 **Create role** (建立角色)。

1. 在確認訊息中，選擇您已建立的角色名稱來編輯新角色。

1. 在 **Summary** (摘要) 上，選擇 **Trust relationships** (信任關係) 標籤，然後選擇 **Edit trust relationship** (編輯信任關係)。

1. 在 **Policy Document** (政策文件) 中，變更 `Principal` 屬性以看起來像此範例。

   ```
   "Principal": { 
       "Service": "iotwireless.amazonaws.com" 
   },
   ```

   在您變更 `Principal` 屬性之後，完整政策文件應該看起來像此範例。

   ```
   {
     "Version": "2012-10-17",
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "iotwireless.amazonaws.com"
         },
         "Action": "sts:AssumeRole",
         "Condition": {}
       }
     ]
   }
   ```

1. 若要儲存您的變更，請選擇 **Update Trust Policy** (更新信任政策)。

定義此角色後，在設定 AWS IoT Core for LoRaWAN 目的地時，您可以在角色清單中找到它。

# 建立規則來處理 LoRaWAN 裝置訊息
<a name="lorawan-destination-rules"></a>

AWS IoT 規則會將裝置訊息傳送至其他服務。AWS IoT 規則也可以處理從 LoRaWAN 裝置接收的二進位訊息，將訊息轉換成其他格式，讓其他服務更容易使用。

[AWS IoT Core for LoRaWAN 目的地](lorawan-create-destinations.md)會將無線裝置與規則建立關聯，而此規則會處理裝置訊息資料以傳送至其他服務。AWS IoT Core for LoRaWAN 一收到裝置的資料，此規則就會對其採取動作。[AWS IoT Core for LoRaWAN 目的地](lorawan-create-destinations.md)可以由其訊息具有相同資料格式和將資料傳送至相同服務的所有裝置共用。

## AWS IoT 規則如何處理裝置訊息
<a name="how-rules-process-message"></a>

AWS IoT 規則如何處理裝置的訊息資料，取決於將接收資料的服務、裝置訊息資料的格式，以及服務所需的資料格式。通常，規則會呼叫 AWS Lambda 函式，將裝置的訊息資料轉換為服務所需的格式，然後將結果傳送至服務。

下圖顯示當訊息資料從無線裝置移至 AWS 服務時，如何保護和處理該訊息資料。

![\[顯示 AWS IoT Core for LoRaWAN 資料如何從無線裝置傳遞至 AWS IoT 和其他服務的影像。\]](http://docs.aws.amazon.com/zh_tw/iot-wireless/latest/developerguide/images/iot-lorawan-data-flow.png)


1. LoRaWAN 無線裝置會在傳輸二進位訊息之前，先使用 AES128 CTR 模式加密該訊息。

1. AWS IoT Core for LoRaWAN 會解密二進位訊息，並將解密的二進位訊息承載編碼為 base64 字串。

1. 產生的 base64 編碼訊息會作為訊息承載 (未格式化為 JSON 文件) 傳送至 AWS IoT 規則，此規則已在指派給裝置的目的地中加以描述。

1. AWS IoT 規則會將訊息資料導向至規則組態中所述的服務。

從無線裝置收到的加密二進位承載不會被 AWS IoT Core for LoRaWAN 變更或解譯。解密的二進位訊息承載只會編碼為 base64 字串。若要讓服務存取二進位訊息承載中的資料元素，規則呼叫的函式必須從承載剖析出資料元素。base64 編碼的訊息承載是一種 ASCII 字串，因此它可以儲存成這類形式，以供稍後解析。

## 建立 LoRaWAN 裝置的規則
<a name="create-lorawan-rules"></a>

AWS IoT Core for LoRaWAN 會使用 AWS IoT 規則，安全地將裝置訊息直接安全地傳送至其他 AWS 服務，而無需使用訊息代理程式。從擷取路徑移除訊息代理程式，可降低成本並最佳化資料流程。

若要讓 AWS IoT Core for LoRaWAN 將裝置訊息傳送至其他 AWS 服務，則需要 AWS IoT Core for LoRaWAN 目的地和指派給該目的地的 AWS IoT 規則。AWS IoT 規則必須包含 SQL 查詢陳述式和至少一個規則動作。

通常，AWS IoT 規則查詢陳述式包含：
+ SQL SELECT 子句，用於選取並格式化訊息承載中的資料
+ 主題篩選條件 (規則查詢陳述式中的 FROM 物件)，用來識別要使用的訊息
+ 選用條件陳述式 (SQL WHERE 子句)，用來指定要對其採取行動的特定條件

以下是規則查詢陳述式的範例：

```
SELECT temperature FROM iot/topic' WHERE temperature > 50
```

當建置 AWS IoT 規則來處理來自 LoRaWAN 裝置的承載，您不必指定 FROM 子句，作為規則查詢物件的一部分。規則查詢語句必須具有 SQL SELECT 子句，並可選擇性地具有 WHERE 子句。如果查詢陳述式使用 FROM 子句，則會將其忽略。

以下範例為可以處理來自 LoRaWAN 裝置之承載的規則查詢陳述式：

```
SELECT WirelessDeviceId, WirelessMetadata.LoRaWAN.FPort as FPort,
       WirelessMetadata.LoRaWAN.DevEui as DevEui, 
       PayloadData
```

在此範例中，`PayloadData` 是您的 LoRaWAN 裝置所傳送並以 base64 編碼的二進位承載。

以下範例是規則查詢陳述式，它可以對傳入承載執行二進位解碼，並將其轉換為不同的格式，例如 JSON：

```
SELECT WirelessDeviceId, WirelessMetadata.LoRaWAN.FPort as FPort,
       WirelessMetadata.LoRaWAN.DevEui as DevEui, 
       aws_lambda("arn:aws:lambda:<region>:<account>:function:<name>",                                       
                  {                                      
                   "PayloadData":PayloadData,                                       
                   "Fport": WirelessMetadata.LoRaWAN.FPort   
                  }) as decodingoutput
```

如需使用 SELECT AND WHERE 子句的詳細資訊，請參閱 [https://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-reference.html](https://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-reference.html)。

如需有關 AWS IoT 規則以及如何建立和使用它們的詳細資訊，請參閱 [https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html) 和 [https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules-tutorial.html](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules-tutorial.html)。

如需建立和使用 AWS IoT Core for LoRaWAN 目的地的相關資訊，請參閱 [新增目的地至 AWS IoT Core for LoRaWAN](lorawan-create-destinations.md)。

如需在規則中使用二進位訊息承載的相關資訊，請參閱 [https://docs.aws.amazon.com/iot/latest/developerguide/binary-payloads.html](https://docs.aws.amazon.com/iot/latest/developerguide/binary-payloads.html)。

如需有關資料安全性，以及在其旅程期間用來保護訊息承載之加密的詳細資訊，請參閱 [AWS IoT Wireless 的資料保護](data-protection.md)。

如需顯示 IoT 規則的二進位解碼和實作範例的參考架構，請參閱 [GitHub 上的 AWS IoT Core for LoRaWAN 解決方案範例](https://github.com/aws-samples/aws-iot-core-lorawan/tree/main/transform_binary_payload)。

# 連接您的 LoRaWAN 裝置並驗證其連線狀態
<a name="lorawan-device-connection-status"></a>

在檢查裝置連線狀態之前，您必須已新增裝置，並將其連接至 AWS IoT Core for LoRaWAN。如需如何新增裝置的相關資訊，請參閱 [將您的無線裝置新增至 AWS IoT Core for LoRaWAN](lorawan-end-devices-add.md)。

在新增了裝置之後，請參閱裝置的使用者手冊，了解如何起始從 LoRaWAN 裝置傳送上行訊息。

## 使用主控台檢查裝置連線狀態
<a name="lorawan-device-connection-status-console"></a>

若要使用主控台檢查連線狀態，請導覽至 AWS IoT 主控台的 [https://console.aws.amazon.com/iot/home#/wireless/devices](https://console.aws.amazon.com/iot/home#/wireless/devices) (裝置) 頁面，然後選擇您已新增的裝置。在無線裝置詳細資訊頁面的 **Details** (詳細資訊) 區段中，您會看到上次接收上行的日期和時間。

## 使用 API 檢查裝置連線狀態
<a name="lorawan-device-connection-status-api"></a>

若要使用 API 檢查連線狀態，請使用 `GetWirelessDeviceStatistics` API。此 API 沒有要求主體，而且只包含上次收到上行時顯示的回應主體。

```
HTTP/1.1 200
Content-type: application/json

{  
  “LastUplinkReceivedAt”: “2021-03-24T23:13:08.476015749Z”,
  "LoRaWAN": {
        "DataRate": 5,
        "DevEui": "647fda0000006420",
        "Frequency": 868100000
        "Gateways": [ 
         { 
            "GatewayEui": "c0ee40ffff29df10",
            "Rssi": -67,
            "Snr": 9.75
         }
      ],
  “WirelessDeviceId”: “30cbdcf3-86de-4291-bfab-5bfa2b12bad5"
}
```

## 後續步驟
<a name="lorawan-device-connection-next-steps"></a>

既然您已連接裝置並驗證連線狀態，您就可以在 AWS IoT 主控台的 **Test** (測試) 頁面上使用 [MQTT 測試用戶端](https://console.aws.amazon.com/iot/home#/test)，來觀察從裝置收到之上行中繼資料的格式。如需詳細資訊，請參閱[檢視從 LoRaWAN 裝置傳送的上行訊息格式](lorawan-uplink-metadata-format.md)。