將要傳送至 LoRaWAN 裝置的下行訊息排入佇列
雲端託管應用程式和其他 AWS 服務 可以向您的無線裝置傳送下行訊息。下行訊息是從 AWS IoT Core for LoRaWAN 傳送至您的無線裝置的訊息。您可以為已加入 AWS IoT Core for LoRaWAN 的每台裝置安排和傳送下行訊息。
如果您有多個裝置要為其傳送下行訊息,則可以使用多點傳送群組。多點傳送組中的裝置會共用相同的多點傳送地址,然後將資料分配至整個收件人裝置群組。如需詳細資訊,請參閱建立多點傳送群組,以將下行承載傳送至多個裝置。
下行訊息佇列的運作方式
LoRaWAN 裝置的裝置類別決定了佇列中的訊息傳送至裝置的方式。A 類裝置會將上行訊息傳送至 AWS IoT Core for LoRaWAN 以指示裝置可用於接收下行訊息。B 類裝置可以在常規的下行位置接收訊息。C 類裝置可以隨時接收下行訊息。如需裝置分級的詳細資訊,請參閱 裝置類別。
下面顯示如何將訊息排入佇列並將其傳送至 A 類裝置。
-
AWS IoT Core for LoRaWAN 會透過訊框連接埠、承載資料,以及使用 AWS IoT 主控台或 AWS IoT Wireless API 所指定的確認模式參數,來緩衝您新增至佇列的下行訊息。
-
您的 LoRaWAN 裝置傳送一則上行訊息,指示其處於線上狀態,並且可以開始接收下行訊息。
-
如已將多個下行訊息新增至佇列,則 AWS IoT Core for LoRaWAN 將佇列中的第一則下行訊息傳送至已設定確認 (ACK) 旗標的裝置。
-
您的裝置會立即將上行訊息傳送至 AWS IoT Core for LoRaWAN,或是進入睡眠狀態,直到下一個上行訊息產生且在訊息中包含 ACK 旗標。
-
AWS IoT Core for LoRaWAN 接收含有 ACK 旗標的上行訊息時,會清除佇列中的下行訊息,指示您的裝置已成功收到下行訊息。如果檢查三次後上行訊息中仍缺少 ACK 旗標,則會丟棄該訊息。
使用主控台執行下行佇列操作
您可以使用 AWS Management Console 將下行訊息排入佇列,並根據需要清除個別訊息或整個佇列。若為 A 類裝置,在從裝置接收上行訊息以指示裝置處於線上狀態後,已排入佇列的訊息將會傳送至裝置。訊息傳送後,即會自動從佇列中清除。
將下行訊息排入佇列
建立下行訊息佇列
-
前往 AWS IoT 主控台的裝置集線器
,然後選擇要將下行訊息排入佇列的裝置。 -
在裝置詳細資訊頁面的 Downlink messages (下行訊息) 部分中,選擇 Queue downlink messages (將下行訊息排入佇列)。
-
請指定以下參數以設定下行訊息:
-
FPort:選擇裝置與 AWS IoT Core for LoRaWAN 通訊的訊框連接埠。
-
Payload (承載):指定您要傳送至裝置的承載訊息。承載大小上限為 242 個位元組。如果啟用了調適型資料速率 (ADR),AWS IoT Core for LoRaWAN 會使用其為您的承載大小選擇最佳的資料速率。您可以根據需要進一步最佳化資料速率。
-
Acknowledge mode (確認模式):確認您的裝置是否已收到下行訊息。如果訊息需要此模式,您將會在資料串流中看到含有 ACK 旗標的上行訊息,且訊息將從佇列中清除。
-
-
若要將下行訊息新增至佇列,請選擇 Submit (提交)。
您的下行訊息現已新增至佇列。如果您未看到訊息或接收到錯誤,則可以疑難排解錯誤,如 下行訊息佇列錯誤疑難排解 中所述。
注意
將下行訊息新增至佇列後,您便無法再編輯參數 FPort、Payload (承載) 和 Acknowledge mode (確認模式)。若要使用不同的參數值來傳送下行訊息,您可以刪除此訊息,並使用更新的參數值將新的下行訊息排入佇列。
佇列會列出您新增的下行訊息。若要查看裝置和 AWS IoT Core for LoRaWAN 之間交換的上行和下行訊息的承載,您可以使用網路分析器。如需詳細資訊,請參閱使用網路分析器即時監控無線資源機群。
列出下行訊息佇列
您建立的下行訊息即會新增至佇列。每個後續下行訊息均會在此訊息之後新增至佇列中。您可以在裝置詳細資訊頁面的 Downlink messages (下行訊息) 部分查看下行訊息清單。接收上行後,訊息將傳送至裝置。在您的裝置收到下行訊息後,訊息將從佇列中移除。然後,下一則訊息將在佇列中向上移動,以便傳送至您的裝置。
刪除個別下行訊息或清除整個佇列
每則下行訊息在傳送至您的裝置後,均會自動從佇列中清除。您亦可刪除個別訊息或清除整個下行佇列。這些動作無法復原。
-
如果您在佇列中找到不想傳送的訊息,請選擇訊息,然後選擇 Delete (刪除)。
-
如果您不希望將佇列中的任何訊息傳送至您的裝置,則可以選擇 Clear downlink queue (清除下行佇列)。
使用 API 執行下行佇列操作
您可以使用 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) 錯誤。由於未為接收下行訊息的裝置正確指定目的地,即可能會出現此錯誤。若要解決此錯誤,請檢查裝置的目的地詳細資訊。