Erstellen von Regeln für die Verarbeitung von LoRaWAN-Gerätenachrichten
AWS IoT-Regeln senden Gerätenachrichten an andere Dienste. AWS IoT-Regeln können auch die von einem LoRaWAN-Gerät empfangenen Binärnachrichten verarbeiten, um die Nachrichten in andere Formate zu konvertieren, wodurch sie für andere Dienste einfacher zu verwenden sind.
AWS IoT Core for LoRaWANZiele verknüpfen ein WLAN-Gerät mit der Regel, die die Nachrichtendaten des Geräts verarbeitet, um sie an andere Dienste zu senden. Die Regel wird auf die Daten des Geräts angewendet, sobald sie von AWS IoT Core for LoRaWAN empfangen werden. AWS IoT Core for LoRaWANZiele können von allen Geräten gemeinsam genutzt werden, deren Nachrichten dasselbe Datenformat haben und die ihre Daten an denselben Dienst senden.
Wie AWS IoT Regeln Gerätenachrichten verarbeiten
Wie eine AWS IoT Regel die Nachrichtendaten eines Geräts verarbeitet, hängt vom Dienst ab, der die Daten empfängt, vom Format der Nachrichtendaten des Geräts und vom Datenformat, das der Dienst benötigt. In der Regel ruft die Regel eine AWS Lambda Funktion auf, um die Nachrichtendaten des Geräts in das Format zu konvertieren, das ein Dienst benötigt, und sendet dann das Ergebnis an den Dienst.
Die folgende Abbildung zeigt, wie Nachrichtendaten gesichert und verarbeitet werden, wenn sie vom WLAN-Gerät zu einem AWS Dienst übertragen werden.
-
Das LoRaWAN-Funkgerät verschlüsselt seine Binärnachrichten im AES128-CTR-Modus, bevor es sie überträgt.
-
AWS IoT Core for LoRaWAN entschlüsselt die binäre Nachricht und codiert die entschlüsselte Nutzlast der binären Nachricht als Base64-Zeichenfolge.
-
Die resultierende Base64-kodierte Nachricht wird als Nachrichtennutzlast, die nicht als JSON-Dokument formatiert ist, an die AWS IoT-Regel gesendet, die in dem Ziel, das dem Gerät zugewiesenen ist, beschrieben ist.
-
Die AWS IoT-Regel leitet die Nachrichtendaten an den Dienst weiter, der in der Konfiguration der Regel beschrieben ist.
Die vom WLAN-Gerät empfangene verschlüsselte binäre Nutzlast wird von AWS IoT Core for LoRaWAN nicht verändert oder interpretiert. Die entschlüsselte Nutzlast der binären Nachricht ist nur als Base64-Zeichenfolge codiert. Damit Dienste auf die Datenelemente in der Nutzlast der binären Nachricht zugreifen können, müssen die Datenelemente durch eine von der Regel aufgerufene Funktion aus der Nutzlast herausgelesen werden. Die Base64-kodierte Nachrichtennutzlast ist eine ASCII-Zeichenfolge, sodass sie als solche gespeichert und später analysiert werden kann.
Erstellen von Regeln für LoRaWAN-Geräte
AWS IoT Core for LoRaWAN verwendet AWS IoT Regeln, um Gerätenachrichten sicher direkt an andere AWS Dienste zu senden, ohne dass der Message Broker verwendet werden muss. Durch die Entfernung des Message Brokers aus dem Eingangspfad werden die Kosten gesenkt und der Datenfluss optimiert.
Damit eine AWS IoT Core for LoRaWAN Regel Gerätenachrichten an andere AWS Dienste senden kann, benötigt sie ein AWS IoT Core for LoRaWAN Ziel und eine diesem Ziel zugewiesene AWS IoT Regel. Die AWS IoT Regel muss eine SQL-Abfrageanweisung und mindestens eine Regelaktion enthalten.
In der Regel besteht die AWS IoT Regelabfrageanweisung aus:
-
Eine SQL SELECT-Klausel, die die Daten aus der Nachrichtennutzlast auswählt und formatiert
-
Ein Themenfilter (das FROM-Objekt in der Regelabfrageanweisung), der die zu verwendenden Nachrichten identifiziert
-
Eine optionale bedingte Anweisung (eine SQL WHERE-Klausel), die Bedingungen festlegt, auf die reagiert werden soll
Hier finden Sie ein Beispiel für eine Regelabfrage:
SELECT temperature FROM iot/topic' WHERE temperature > 50
Wenn Sie AWS IoT Regeln für die Verarbeitung von Nutzlasten von LoRaWAN-Geräten erstellen, müssen Sie die FROM-Klausel nicht als Teil des Regelabfrageobjekts angeben. Die Regelabfrageanweisung muss die SQL SELECT-Klausel enthalten und kann optional die WHERE-Klausel enthalten. Wenn die Abfrageanweisung die FROM-Klausel verwendet, wird sie ignoriert.
Hier ist ein Beispiel für eine Regelabfrageanweisung, die Nutzlasten von LoRaWAN-Geräten verarbeiten kann:
SELECT WirelessDeviceId, WirelessMetadata.LoRaWAN.FPort as FPort, WirelessMetadata.LoRaWAN.DevEui as DevEui, PayloadData
In diesem Beispiel PayloadData
handelt es sich um eine Base64-codierte binäre Nutzlast, die von Ihrem LoRaWAN-Gerät gesendet wird.
Hier ist ein Beispiel für eine Regelabfrageanweisung, die eine binäre Dekodierung der eingehenden Nutzdaten durchführen und sie in ein anderes Format wie JSON umwandeln kann:
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
Weitere Hinweise zur Verwendung der SELECT AND WHERE-Klauseln finden Sie unter https://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-reference.html.
Weitere Informationen über die Verwendung der AWS IoT-API zum Erstellen von Regeln finden Sie unter https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html und https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules-tutorial.html.
Weitere Informationen zum Erstellen und Verwenden von AWS IoT Core for LoRaWAN Zielen finden Sie unter Hinzufügen von Zielen zu AWS IoT Core for LoRaWAN.
Hinweise zur Verwendung binärer Nachrichtennutzlasten in einer Regel finden Sie unter https://docs.aws.amazon.com/iot/latest/developerguide/binary-payloads.html.
Weitere Hinweise zur Datensicherheit und Verschlüsselung, die verwendet werden, um die Nachrichtennutzdaten während der Übertragung zu schützen, finden Sie unter Datenschutz in AWS IoT Wireless.
Eine Referenzarchitektur, die ein Beispiel für die binäre Dekodierung und Implementierung von IoT-Regeln zeigt, finden Sie unter AWS IoT Core for LoRaWANLösungsbeispiele auf GitHub