Criar regras para processar mensagens de dispositivo LoRaWAN
As regras de AWS IoT enviam mensagens de dispositivos a outros serviços. As regras de AWS IoT também podem processar as mensagens binárias recebidas de um dispositivo LoRaWAN para converter as mensagens em outros formatos que podem fazer com que elas sejam mais fáceis de serem usadas por outros serviços.
Os destinos do AWS IoT Core for LoRaWAN associam um dispositivo sem fio à regra que processa os dados de mensagens do dispositivo para enviar a outros serviços. A regra atua sobre os dados do dispositivo assim que AWS IoT Core for LoRaWAN a recebe. Os destinos de AWS IoT Core for LoRaWAN podem ser compartilhados por todos os dispositivos cujas mensagens têm o mesmo formato de dados e que enviam esses dados para o mesmo serviço.
Como as regras de AWS IoT processam as mensagens do dispositivo
A forma como uma regra de AWS IoT processa os dados da mensagem de um dispositivo depende do serviço que receberá os dados, do formato dos dados de mensagens do dispositivo e do formato de dados exigido pelo serviço. Normalmente, a regra chama uma função AWS Lambda para converter os dados de mensagens do dispositivo no formato exigido pelo serviço e, em seguida, envia o resultado para o serviço.
A ilustração a seguir mostra como os dados de mensagens são protegidos e processados à medida que são movidos do dispositivo sem fio para um serviço da AWS.
![Imagem mostrando como os dados do AWS IoT Core for LoRaWAN são transmitidos de um dispositivo sem fio para o AWS IoT e outros serviços.](images/iot-lorawan-data-flow.png)
-
O dispositivo sem fio LoRaWAN criptografa as mensagens binárias usando o modo AES128 CTR antes de transmiti-las.
-
O AWS IoT Core for LoRaWAN descriptografa a mensagem binária e codifica a carga útil da mensagem binária descriptografada como uma string base64.
-
A mensagem resultante codificada em base64 é enviada como uma carga útil de mensagem (não é formatada como um documento JSON) à regra do AWS IoT descrita no destino atribuído ao dispositivo.
-
A regra de AWS IoT direciona os dados da mensagem para o serviço descrito na configuração da regra.
A carga útil binária criptografada recebida do dispositivo sem fio não é alterada nem interpretada por AWS IoT Core for LoRaWAN. A carga útil da mensagem binária descriptografada é codificada somente como uma string base64. Para que os serviços acessem os elementos de dados na carga útil da mensagem binária, os elementos de dados devem ser analisados quanto à carga útil por uma função chamada pela regra. A carga útil da mensagem codificada em base64 é uma string ASCII, portanto, ela pode ser armazenada como tal para ser analisada mais tarde.
Criar regras para dispositivos LoRaWAN
O AWS IoT Core for LoRaWAN usa regras de AWS IoT para enviar com segurança mensagens do dispositivo diretamente para outros serviços da AWS sem a necessidade de usar o agente de mensagens. Ao remover o agente de mensagens do caminho de ingestão, ele reduz os custos e otimiza o fluxo de dados.
Para que uma regra do AWS IoT Core for LoRaWAN envie mensagens do dispositivo para outros serviços da AWS, ela requer um destino do AWS IoT Core for LoRaWAN e uma regra de AWS IoT atribuída a esse destino. A regra de AWS IoT deve conter uma instrução de consulta SQL e pelo menos uma ação de regra.
Normalmente, a instrução de consulta de regra de AWS IoT consiste em:
-
Uma cláusula SQL SELECT que seleciona e formata os dados da carga útil da mensagem
-
Um filtro de tópico (o objeto FROM na instrução de consulta de regra) que identifica as mensagens a serem usadas
-
Uma declaração condicional opcional (uma cláusula SQL WHERE) que especifica condições sobre as quais agir
Confira a seguir um exemplo de declaração de consulta de regra:
SELECT temperature FROM iot/topic' WHERE temperature > 50
Ao criar regras de AWS IoT para processar cargas úteis de dispositivos LoRaWAN, você não precisa especificar a cláusula FROM como parte do objeto de consulta da regra. A instrução de consulta de regra deve ter a cláusula SQL SELECT e, como opção, pode ter a cláusula WHERE. Se a instrução de consulta usar a cláusula FROM, ela será ignorada.
Confira aqui um exemplo de uma instrução de consulta de regra que pode processar cargas úteis de dispositivos LoRaWAN:
SELECT WirelessDeviceId, WirelessMetadata.LoRaWAN.FPort as FPort, WirelessMetadata.LoRaWAN.DevEui as DevEui, PayloadData
Neste exemplo, PayloadData
é uma carga útil binária codificada em base64 enviada pelo dispositivo LoRaWAN.
Confira aqui um exemplo de instrução de consulta de regra que pode realizar uma decodificação binária da carga útil recebida e transformá-la em um formato diferente, como 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
Para obter mais informações sobre como utilizar as cláusulas SELECT e WHERE, consulte https://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-reference.html.
Para obter informações sobre as regras de AWS IoT e como criá-las e usá-las, consulte https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html e https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules-tutorial.html.
Para obter informações sobre como criar e usar destinos do AWS IoT Core for LoRaWAN, consulte Adicionar destinos ao AWS IoT Core for LoRaWAN.
Para obter informações sobre o uso de cargas úteis de mensagens binárias em uma regra, consulte https://docs.aws.amazon.com/iot/latest/developerguide/binary-payloads.html.
Para obter mais informações sobre a segurança e a criptografia de dados usadas para proteger a carga útil da mensagem na jornada, consulte Proteção de dados no AWS IoT Wireless.
Para ver uma arquitetura de referência que mostra um exemplo de decodificação e implementação binária para regras de IoT, consulte Exemplos de soluções do AWS IoT Core for LoRaWAN no GitHub