LoRaWAN 디바이스 메시지를 처리하는 규칙 만들기 - AWS IoT Wireless

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 서비스로 이동할 때 보호 및 처리되는 방식을 보여줍니다.

AWS IoT Core for LoRaWAN 데이터가 무선 디바이스에서 AWS IoT 및 기타 서비스로 어떻게 전달되는지 보여주는 이미지입니다.
  1. LoRaWAN 무선 디바이스는 전송하기 전에 AES128 CTR 모드를 사용하여 이진 메시지를 암호화합니다.

  2. AWS IoT Core for LoRaWAN은 이진 메시지를 복호화하고 복호화된 이진 메시지 페이로드를 base64 문자열로 인코딩합니다.

  3. 이에 따라 base64로 인코딩된 메시지는 디바이스에 할당된 대상에 설명되어 있는 AWS IoT 규칙에 JSON 문서로 형식이 지정되지 않은 메시지 페이로드로 전송됩니다.

  4. 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

LoRaWAN 디바이스의 페이로드를 처리하는 AWS IoT 규칙을 빌드할 때 규칙 쿼리 객체의 일부로 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 및 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.htmlhttps://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 솔루션 샘플을 참조하세요.