Créez des règles pour traiter les messages des appareils LoRaWAN
Les règles AWS IoT envoient des messages de l’appareil à d’autres services. Les règles AWS IoT peuvent également traiter les messages binaires reçus d’un appareil LoRaWAN afin de les convertir dans d’autres formats afin de faciliter leur utilisation par d’autres services.
AWS IoT Core for LoRaWANLes destinations associent un appareil sans fil à la règle qui traite les données des messages de l’appareil pour les envoyer à d’autres services. La règle agit sur les données de l’appareil dès que AWS IoT Core for LoRaWAN les reçoit. AWS IoT Core for LoRaWANLes destinations peuvent être partagées par tous les appareils dont les messages ont le même format de données et qui envoient leurs données au même service.
Comment les règles AWS IoT traitent les messages de l’appareil
La manière dont une règle AWS IoT traite les données des messages d’un appareil dépend du service qui recevra les données, du format des données des messages de l’appareil et du format de données requis par le service. Généralement, la règle appelle une fonction AWS Lambda pour convertir les données des messages de l’appareil au format requis par un service, puis envoie le résultat au service.
L’illustration suivante montre comment les données des messages sont sécurisées et traitées lorsqu’elles sont transférées de l’appareil sans fil vers un service AWS.
-
L’appareil sans fil LoRaWAN chiffre ses messages binaires en utilisant le mode CTR AES128 avant de les transmettre.
-
AWS IoT Core for LoRaWAN déchiffre le message binaire et code la charge utile du message binaire déchiffré sous forme de chaîne base64.
-
Le message codé en base64 qui en résulte est envoyé sous forme de charge utile de message (non formatée en tant que document JSON) à la règle AWS IoT décrite dans la destination attribuée à l’appareil.
-
La règle AWS IoT dirige les données du message vers le service décrit dans la configuration de la règle.
La charge utile binaire cryptée reçue du dispositif sans fil n’est ni modifiée ni interprétée par AWS IoT Core for LoRaWAN. La charge utile du message binaire déchiffré est codée uniquement sous forme de chaîne base64. Pour que les services puissent accéder aux éléments de données de la charge utile du message binaire, les éléments de données doivent être extraits de la charge utile par une fonction appelée par la règle. La charge utile du message codé en base64 est une chaîne ASCII, elle peut donc être stockée en tant que telle pour être analysée ultérieurement.
Création de règles pour les appareils LoRaWAN
AWS IoT Core for LoRaWAN utilise des règles AWS IoT pour envoyer en toute sécurité des messages de l’appareil directement à d’autres services AWS sans qu’il soit nécessaire d’utiliser l’agent de messages. En supprimant l’agent de messages du chemin d’ingestion, il réduit les coûts et optimise le flux de données.
Pour qu’une règle AWS IoT Core for LoRaWAN envoie des messages de terminal à d’autres services AWS, elle nécessite une destination AWS IoT Core for LoRaWAN et une règle AWS IoT assignée à cette destination. La règle AWS IoT doit contenir une instruction de requête SQL et au moins une action de règle.
Généralement, l’instruction de requête de la règle AWS IoT est composée des éléments suivants :
-
Une clause SQL SELECT qui sélectionne et met en forme les données de la charge utile du message
-
Un filtre de rubrique (l’objet FROM dans l’instruction de requête de règle) qui identifie les messages à utiliser
-
Une instruction conditionnelle facultative (une clause SQL WHERE) qui spécifie les conditions dans lesquelles agir
L’instruction de requête de règle est présentée ci-dessous :
SELECT temperature FROM iot/topic' WHERE temperature > 50
Lorsque vous créez des règles AWS IoT pour traiter les charges utiles des appareils LoRaWAN, il n’est pas nécessaire de spécifier la clause FROM dans le cadre de l’objet de requête de règles. L’instruction de requête de règle doit comporter la clause SQL SELECT et peut éventuellement contenir la clause WHERE. Si l’instruction de requête utilise la clause FROM, elle est ignorée.
Voici un exemple d’instruction de requête de règle capable de traiter les charges utiles des appareils LoRaWAN :
SELECT WirelessDeviceId, WirelessMetadata.LoRaWAN.FPort as FPort, WirelessMetadata.LoRaWAN.DevEui as DevEui, PayloadData
Dans cet exemple, PayloadData
est une charge utile binaire codée en base64 envoyée par votre appareil LoRaWAN.
Voici un exemple d’instruction de requête de règle qui permet d’effectuer un décodage binaire de la charge utile entrante et de la transformer dans un format différent tel que 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
Pour plus d’informations sur l’utilisation des clauses SELECT AND WHERE, consultez https://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-reference.html
Pour plus d’informations sur les règles AWS IoT et la façon de les créer et les utiliser, veuillez consulter le https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html et https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules-tutorial.html.
Pour plus d’informations sur la création et l’utilisation des destinations AWS IoT Core for LoRaWAN, veuillez consulter Ajout de destinations à AWS IoT Core for LoRaWAN.
Pour plus d’informations sur l’utilisation de charges utiles de messages binaires dans une règle, veuillez consulter https://docs.aws.amazon.com/iot/latest/developerguide/binary-payloads.html.
Pour plus d’informations sur la sécurité des données et le chiffrement utilisés pour protéger la charge utile des messages pendant leur trajet, veuillez consulter Protection des données dans AWS IoT Wireless.
Pour une architecture de référence présentant un exemple de décodage binaire et de mise en œuvre des règles IoT, veuillez consulter AWS IoT Core for LoRaWANExemples de solutions sur GitHub