

# 連接您的 Sidewalk 裝置並檢視上行中繼資料格式
<a name="iot-sidewalk-connect-uplink-metadata"></a>

於本教學課程中，您將會使用 MQTT 測試用戶端來測試連線，並查看在您終端裝置和 AWS 雲端 之間的訊息交換。如要接收訊息，請於 MQTT 測試用戶端中訂閱在建立目的地的 IoT 規則時所指定的主題。您還可使用 `SendDataToWirelessDevice` API 操作，將下行訊息從適用於 Amazon Sidewalk 的 AWS IoT Core 傳送至您的裝置。您可啟用訊息傳遞狀態事件通知，確認訊息已傳遞。

**注意**  
如需連接硬體平台並進行設定的相關資訊，請參閱《Amazon Sidewalk 文件》**中的[佈建和註冊終端裝置](https://docs.sidewalk.amazon/provisioning/)和[設定硬體開發套件 (HDK)](https://docs.sidewalk.amazon/getting-started/sidewalk-onboard-prereq-hdk.html)。

## 將下行訊息傳送至您的終端設備
<a name="iot-sidewalk-downlink-message"></a>

使用 [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_SendDataToWirelessDevice.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_SendDataToWirelessDevice.html) API 操作或 [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/send-data-to-wireless-device.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/send-data-to-wireless-device.html) CLI 指令，將下行訊息從適用於 Amazon Sidewalk 的 AWS IoT Core 傳送至您的 Sidewalk 終端裝置。下列顯示如何執行此命令的範例。承載資料是要傳送的二進位，以 base64 編碼。

```
aws iotwireless send-data-to-wireless-device \
    --id "<Wireless_Device_ID>" \
    --payload-data "SGVsbG8gVG8gRGV2c2lt" \
    --wireless-metadata Sidewalk={Seq=1,AckModeRetryDurationSecs=10}
```

下列顯示執行此命令的範例輸出，這是傳送至裝置的下行訊息 ID。

```
{
    MessageId: "6011dd36-0043d6eb-0072-0008"
}
```

**注意**  
`SendDataToWirelessDevice` API 可以傳回訊息 ID，但該訊息可能無法成功傳遞。如要檢查傳送至裝置的訊息狀態，您可為 Sidewalk 帳戶和裝置啟用訊息傳遞狀態事件。如需如何啟用這些事件的詳細資訊，請參閱 [Sidewalk 資源的事件通知](iot-sidewalk-events.md)。如需此事件類型的詳細資訊，請參閱[訊息傳遞事件](https://docs.aws.amazon.com/iot/latest/developerguide/iot-sidewalk-message-delivery-events.html)。

## 檢視從裝置傳送的上行訊息格式
<a name="iot-sidewalk-uplink-metadata"></a>

在連接至您的裝置後，您可訂閱主題 (例如，*`project/sensor/observed`*)，此主題是您在建立目的地規則，並從裝置觀察上行訊息時所指定的。

若您在建立目的地時指定了主題名稱，則可訂閱從您終端裝置監控上行訊息的主題。請移至 AWS IoT 主控台之**測試**頁面上的 [MQTT 測試用戶端](https://console.aws.amazon.com/iot/home#/test)，輸入主題名稱 (例如，*`project/sensor/observed`*)，接著選擇**訂閱**。

下列範例顯示從 Sidewalk 裝置傳送至 AWS IoT 之上行訊息的格式。`WirelessMetadata` 包含有關訊息請求的中繼資料。

```
{
   "PayloadData":"ZjRlNjY1ZWNlNw==",
   "WirelessDeviceId":"wireless_device_id",   
   "WirelessMetadata":{
      "Sidewalk":{
         "CmdExStatus":"Cmd",
         "SidewalkId":"device_id",
         "Seq":0,
         "MessageType":"messageType"
      }
    }
}
```

下表顯示上行中繼資料中不同參數的定義。此 `device-id` 是無線裝置的 ID，如 `ABCDEF1234`，而 `messageType` 是從裝置所接收之上行訊息的類型。


**Sidewalk 上行中繼資料參數**  

| 參數 | 描述 | 類型 | 必要 | 
| --- | --- | --- | --- | 
| PayloadData |  從無線裝置傳送之訊息承載。  | 字串 | 是 | 
| WirelessDeviceID | 發送資料的無線裝置識別符 | 字串 | 是 | 
| Sidewalk.CmdExStatus |  命令執行時間狀態。回應類型訊息應該包含狀態碼 `COMMAND_EXEC_STATUS_SUCCESS`。不過，通知可能未包含狀態碼。  | 列舉 | 否 | 
| Sidewalk.NackExStatus |  回應未確認狀態，可以是 `RADIO_TX_ERROR` 或 `MEMORY_ERROR`。  | 字串陣列 | 否 | 