建立規則來處理 LoRaWAN 裝置訊息
AWS IoT 規則會將裝置訊息傳送至其他服務。AWS IoT 規則也可以處理從 LoRaWAN 裝置接收的二進位訊息,將訊息轉換成其他格式,讓其他服務更容易使用。
AWS IoT Core for LoRaWAN 目的地會將無線裝置與規則建立關聯,而此規則會處理裝置訊息資料以傳送至其他服務。AWS IoT Core for LoRaWAN 一收到裝置的資料,此規則就會對其採取動作。AWS IoT Core for LoRaWAN 目的地可以由其訊息具有相同資料格式和將資料傳送至相同服務的所有裝置共用。
AWS IoT 規則如何處理裝置訊息
AWS IoT 規則如何處理裝置的訊息資料,取決於將接收資料的服務、裝置訊息資料的格式,以及服務所需的資料格式。通常,規則會呼叫 AWS Lambda 函式,將裝置的訊息資料轉換為服務所需的格式,然後將結果傳送至服務。
下圖顯示當訊息資料從無線裝置移至 AWS 服務時,如何保護和處理該訊息資料。
-
LoRaWAN 無線裝置會在傳輸二進位訊息之前,先使用 AES128 CTR 模式加密該訊息。
-
AWS IoT Core for LoRaWAN 會解密二進位訊息,並將解密的二進位訊息承載編碼為 base64 字串。
-
產生的 base64 編碼訊息會作為訊息承載 (未格式化為 JSON 文件) 傳送至 AWS IoT 規則,此規則已在指派給裝置的目的地中加以描述。
-
AWS IoT 規則會將訊息資料導向至規則組態中所述的服務。
從無線裝置收到的加密二進位承載不會被 AWS IoT Core for LoRaWAN 變更或解譯。解密的二進位訊息承載只會編碼為 base64 字串。若要讓服務存取二進位訊息承載中的資料元素,規則呼叫的函式必須從承載剖析出資料元素。base64 編碼的訊息承載是一種 ASCII 字串,因此它可以儲存成這類形式,以供稍後解析。
建立 LoRaWAN 裝置的規則
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。
如需有關 AWS IoT 規則以及如何建立和使用它們的詳細資訊,請參閱 https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html 和 https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules-tutorial.html。
如需建立和使用 AWS IoT Core for LoRaWAN 目的地的相關資訊,請參閱 新增目的地至 AWS IoT Core for LoRaWAN。
如需在規則中使用二進位訊息承載的相關資訊,請參閱 https://docs.aws.amazon.com/iot/latest/developerguide/binary-payloads.html。
如需有關資料安全性,以及在其旅程期間用來保護訊息承載之加密的詳細資訊,請參閱 AWS IoT Wireless 的資料保護。
如需顯示 IoT 規則的二進位解碼和實作範例的參考架構,請參閱 GitHub 上的 AWS IoT Core for LoRaWAN 解決方案範例