Creare regole per elaborare i messaggi del dispositivo LoRaWAN
Le regole AWS IoT inviano messaggi del dispositivo ad altri servizi. Le regole AWS IoT possono anche elaborare i messaggi binari ricevuti da un dispositivo LoRaWAN per convertire i messaggi in altri formati che possono renderli più facili per altri servizi da utilizzare.
Destinazioni AWS IoT Core per LoRaWAN associano un dispositivo wireless alla regola che elabora i dati dei messaggi del dispositivo da inviare ad altri servizi. La regola agisce sui dati del dispositivo non appena AWS IoT Core per LoRaWAN lo riceve. Le destinazioni AWS IoT Core per LoRaWAN possono essere condivise da tutti i dispositivi i cui messaggi hanno lo stesso formato di dati e che inviano i loro dati allo stesso servizio.
Come funziona il processo di regole AWS IoT per i messaggi del dispositivo
Come una regola AWS IoT elabora i dati dei messaggi di un dispositivo dipende dal servizio che riceverà i dati, dal formato dei dati dei messaggi del dispositivo e dal formato dei dati richiesto dal servizio. In genere, la regola chiama una funzione AWS Lambda per convertire i dati dei messaggi del dispositivo nel formato richiesto da un servizio e quindi invia il risultato al servizio.
Nella figura seguente viene illustrato come i dati dei messaggi vengono protetti ed elaborati mentre vengono spostati dal dispositivo wireless a un servizio AWS.
![Immagine che mostra come i dati AWS IoT Core per LoRaWAN vengono passati da un dispositivo wireless ad AWS IoT e altri servizi.](images/iot-lorawan-data-flow.png)
-
Il dispositivo wireless LoRaWAN crittografa i suoi messaggi binari utilizzando la modalità CTR AES128 prima di trasmetterli.
-
AWS IoT Core per LoRaWAN decritta il messaggio binario e codifica il payload del messaggio binario decrittato come stringa base64.
-
Il messaggio codificato su base 64 risultante viene inviato come payload del messaggio, non formattato come documento JSON, alla regola AWS IoT descritta nella destinazione assegnata al dispositivo.
-
La regola AWS IoT indirizza i dati del messaggio al servizio descritto nella configurazione della regola.
Il payload binario crittografato ricevuto dal dispositivo wireless non viene alterato o interpretato da AWS IoT Core per LoRaWAN. Il payload del messaggio binario decrittato è codificato solo come stringa base64. Affinché i servizi possano accedere agli elementi dati nel payload del messaggio binario, gli elementi dati devono essere analizzati fuori dal payload da una funzione chiamata dalla regola. Il payload del messaggio con codifica base64 è una stringa ASCII, quindi potrebbe essere archiviata come tale per essere analizzata in un secondo momento.
Creazione di regole per dispositivi LoRaWAN
AWS IoT Core per LoRaWAN utilizza regole AWS IoT per inviare in modo sicuro i messaggi del dispositivo direttamente ad altri servizi AWS senza la necessità di utilizzare il broker di messaggi. Rimuovere il broker di messaggi dal percorso di importazione dati riduce i costi e ottimizza il flusso di dati.
Una regola AWS IoT Core per LoRaWAN per inviare messaggi del dispositivo ad altri servizi AWS, richiede una destinazione AWS IoT Core per LoRaWAN una regola AWS IoT assegnata a quella destinazione. La regola AWS IoT deve contenere un'istruzione di query SQL e almeno un'operazione della regola.
In genere, l'istruzione query della regola AWS IoT è composta da:
-
Una clausola SQL SELECT che seleziona e formatta i dati dal payload del messaggio
-
Un filtro argomento (l'oggetto FROM nell'istruzione query di regole) che identifichi i messaggi da utilizzare
-
Un'istruzione condizionale facoltativa (una clausola SQL WHERE) che specifica le condizioni su cui agire
Di seguito è illustrato un esempio di dichiarazione di query di regole:
SELECT temperature FROM iot/topic' WHERE temperature > 50
Durante la costruzione delle regole AWS IoT per elaborare payload dai dispositivi LoRaWAN, non è necessario specificare la clausola FROM come parte dell'oggetto query regola. L'istruzione di query delle regole deve avere la clausola SQL SELECT e facoltativamente può avere la clausola WHERE. Se l'istruzione query utilizza la clausola FROM, viene ignorata.
Di seguito è illustrato un esempio di un'istruzione di query di regole in grado di elaborare i payload dai dispositivi LoRaWAN:
SELECT WirelessDeviceId, WirelessMetadata.LoRaWAN.FPort as FPort, WirelessMetadata.LoRaWAN.DevEui as DevEui, PayloadData
In questo esempio, PayloadData
è un payload binario codificato in base64, inviato dal tuo dispositivo LoRaWAN.
Ecco un'istruzione query di regola di esempio che può eseguire una decodifica binaria del payload in entrata e trasformarlo in un formato diverso come 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
Per ulteriori informazioni sull'utilizzo delle clausole SELECT AND WHERE, consulta https://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-reference.html.
Per informazioni sulle regole AWS IoT e su come crearle e utilizzarle, consulta https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html e https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules-tutorial.html.
Per informazioni su come creare e utilizzare destinazioni AWS IoT Core per LoRaWAN, consulta Aggiunta di destinazioni a AWS IoT Core per LoRaWAN.
Per informazioni sull'utilizzo dei payload dei messaggi binari in una regola, consulta https://docs.aws.amazon.com/iot/latest/developerguide/binary-payloads.html.
Per ulteriori informazioni sulla sicurezza dei dati e sulla crittografia utilizzati per proteggere il payload dei messaggi durante il percorso, consulta Protezione dei dati in Wireless AWS IoT.
Per un'architettura di riferimento che mostra un esempio di decodifica e implementazione binaria per le regole IoT, consulta Esempi di soluzioni AWS IoT Core per LoRaWAN su GitHub