將要傳送至 LoRaWAN 裝置的下行訊息排入佇列 - AWS IoT Wireless

將要傳送至 LoRaWAN 裝置的下行訊息排入佇列

雲端託管應用程式和其他 AWS 服務 可以向您的無線裝置傳送下行訊息。下行訊息是從 AWS IoT Core for LoRaWAN 傳送至您的無線裝置的訊息。您可以為已加入 AWS IoT Core for LoRaWAN 的每台裝置安排和傳送下行訊息。

如果您有多個裝置要為其傳送下行訊息,則可以使用多點傳送群組。多點傳送組中的裝置會共用相同的多點傳送地址,然後將資料分配至整個收件人裝置群組。如需詳細資訊,請參閱建立多點傳送群組,以將下行承載傳送至多個裝置

LoRaWAN 裝置的裝置類別決定了佇列中的訊息傳送至裝置的方式。A 類裝置會將上行訊息傳送至 AWS IoT Core for LoRaWAN 以指示裝置可用於接收下行訊息。B 類裝置可以在常規的下行位置接收訊息。C 類裝置可以隨時接收下行訊息。如需裝置分級的詳細資訊,請參閱 裝置類別

下面顯示如何將訊息排入佇列並將其傳送至 A 類裝置。

  1. AWS IoT Core for LoRaWAN 會透過訊框連接埠、承載資料,以及使用 AWS IoT 主控台或 AWS IoT Wireless API 所指定的確認模式參數,來緩衝您新增至佇列的下行訊息。

  2. 您的 LoRaWAN 裝置傳送一則上行訊息,指示其處於線上狀態,並且可以開始接收下行訊息。

  3. 如已將多個下行訊息新增至佇列,則 AWS IoT Core for LoRaWAN 將佇列中的第一則下行訊息傳送至已設定確認 (ACK) 旗標的裝置。

  4. 您的裝置會立即將上行訊息傳送至 AWS IoT Core for LoRaWAN,或是進入睡眠狀態,直到下一個上行訊息產生且在訊息中包含 ACK 旗標。

  5. AWS IoT Core for LoRaWAN 接收含有 ACK 旗標的上行訊息時,會清除佇列中的下行訊息,指示您的裝置已成功收到下行訊息。如果檢查三次後上行訊息中仍缺少 ACK 旗標,則會丟棄該訊息。

您可以使用 AWS Management Console 將下行訊息排入佇列,並根據需要清除個別訊息或整個佇列。若為 A 類裝置,在從裝置接收上行訊息以指示裝置處於線上狀態後,已排入佇列的訊息將會傳送至裝置。訊息傳送後,即會自動從佇列中清除。

將下行訊息排入佇列

建立下行訊息佇列

  1. 前往 AWS IoT 主控台的裝置集線器,然後選擇要將下行訊息排入佇列的裝置。

  2. 在裝置詳細資訊頁面的 Downlink messages (下行訊息) 部分中,選擇 Queue downlink messages (將下行訊息排入佇列)。

  3. 請指定以下參數以設定下行訊息:

    • FPort:選擇裝置與 AWS IoT Core for LoRaWAN 通訊的訊框連接埠。

    • Payload (承載):指定您要傳送至裝置的承載訊息。承載大小上限為 242 個位元組。如果啟用了調適型資料速率 (ADR),AWS IoT Core for LoRaWAN 會使用其為您的承載大小選擇最佳的資料速率。您可以根據需要進一步最佳化資料速率。

    • Acknowledge mode (確認模式):確認您的裝置是否已收到下行訊息。如果訊息需要此模式,您將會在資料串流中看到含有 ACK 旗標的上行訊息,且訊息將從佇列中清除。

  4. 若要將下行訊息新增至佇列,請選擇 Submit (提交)。

您的下行訊息現已新增至佇列。如果您未看到訊息或接收到錯誤,則可以疑難排解錯誤,如 下行訊息佇列錯誤疑難排解 中所述。

注意

將下行訊息新增至佇列後,您便無法再編輯參數 FPortPayload (承載) 和 Acknowledge mode (確認模式)。若要使用不同的參數值來傳送下行訊息,您可以刪除此訊息,並使用更新的參數值將新的下行訊息排入佇列。

佇列會列出您新增的下行訊息。若要查看裝置和 AWS IoT Core for LoRaWAN 之間交換的上行和下行訊息的承載,您可以使用網路分析器。如需詳細資訊,請參閱使用網路分析器即時監控無線資源機群

列出下行訊息佇列

您建立的下行訊息即會新增至佇列。每個後續下行訊息均會在此訊息之後新增至佇列中。您可以在裝置詳細資訊頁面的 Downlink messages (下行訊息) 部分查看下行訊息清單。接收上行後,訊息將傳送至裝置。在您的裝置收到下行訊息後,訊息將從佇列中移除。然後,下一則訊息將在佇列中向上移動,以便傳送至您的裝置。

刪除個別下行訊息或清除整個佇列

每則下行訊息在傳送至您的裝置後,均會自動從佇列中清除。您亦可刪除個別訊息或清除整個下行佇列。這些動作無法復原。

  • 如果您在佇列中找到不想傳送的訊息,請選擇訊息,然後選擇 Delete (刪除)。

  • 如果您不希望將佇列中的任何訊息傳送至您的裝置,則可以選擇 Clear downlink queue (清除下行佇列)。

您可以使用 AWS IoT Wireless API 將下行訊息排入佇列,並根據需要清除個別訊息或整個佇列。

將下行訊息排入佇列

若要建立下行訊息佇列,請使用 SendDataToWirelessDevice API 操作或 send-data-to-wireless-device CLI 命令。

aws iotwireless send-data-to-wireless-device \ --id "11aa5eae-2f56-4b8e-a023-b28d98494e49" \ --transmit-mode "1" \ --payload-data "SGVsbG8gVG8gRGV2c2lt" \ --wireless-metadata LoRaWAN={FPort=1}

執行此命令的輸出會為下行訊息產生 MessageId。在某些情況下,即使您收到 MessageId,資料封包繩也可能會被丟棄。如需如何解決錯誤的詳細資訊,請參閱 下行訊息佇列錯誤疑難排解

{ MessageId: "6011dd36-0043d6eb-0072-0008" }
列出佇列中的下行訊息

若要列出佇列中的所有下行訊息,請使用 ListQueuedMessages API 操作或 list-queued-messages CLI 命令。

aws iotwireless list-queued-messages

預設情況下,執行此命令時最多可顯示 10 則下行訊息。

移除個別下行訊息或清除整個佇列

若要從佇列中移除個別訊息或清除整個佇列,請使用 DeleteQueuedMessages API 操作或 delete-queued-messages CLI 命令。

  • 若要移除個別訊息,請提供您想要為無線裝置移除的訊息的 messageID (由 wirelessDeviceId 指定)。

  • 若要清除整個下行佇列,請針對您的無線裝置將 messageID 指定為 * (由 wirelessDeviceId 指定)。

若您並未看到預期的結果,請檢查以下事項:

  • 下行訊息不會顯示在 AWS IoT 主控台中

    如果在新增 (如 使用主控台執行下行佇列操作 中所述) 後在佇列中看不到下行訊息,這可能是因為您的裝置尚未完成名為啟用聯結程序的程序。當您的裝置加入 AWS IoT Core for LoRaWAN 時,此程序即完成。如需詳細資訊,請參閱使用主控台將您的無線裝置規格新增至 AWS IoT Core for LoRaWAN

    在將您的裝置加入 AWS IoT Core for LoRaWAN 後,您可以使用網路分析器或 Amazon CloudWatch 來監控您的裝置,以檢查聯結和重新聯結是否成功。如需詳細資訊,請參閱監控工具

  • 使用 API 時遺失下行訊息資料封包

    當您使用 SendDataToWirelessDevice API 操作時,API 會傳回唯一的 MessageId。但是,這無法確認您的 LoRaWAN 裝置是否已收到下行訊息。如果您的裝置尚未完成聯結程序,則下行資料封包可能會被丟棄。如需如何解決此錯誤的詳細資訊,請參閱上一節。

  • 傳送下行訊息時發生缺少 ARN 錯誤

    從佇列將下行訊息傳送至您的裝置時,您可能會接收到遺失 Amazon 資源名稱 (ARN) 錯誤。由於未為接收下行訊息的裝置正確指定目的地,即可能會出現此錯誤。若要解決此錯誤,請檢查裝置的目的地詳細資訊。