aws iot rule engine sql

0

AWS IoT Rule Engine 에서 sql 문 통해서 MQTT Payload 의 값을 핸들링 할 수 있는데요. MQTT Client 에서 Payload 에 byte array 값을 넣어서 메세지를 발행한다고 했을 때 SQL 문을 통해서 byte array 값을 디코딩하여 select 할 수 있나요? 예를들면,
Publish

  • topic : test/payload
  • payload : [72,101,108,108,111,119,111,114,108,100] (( Hello World )) SQL SELECT * FROM 'test/payload' 에서 위 payload 를 컨버터하여 Hello World 를 SELECT 가 가능한지 궁금합니다.
gefragt vor einem Jahr316 Aufrufe
1 Antwort
0

안녕하세요, AWS re:Post에 문의주셔서 감사합니다.

문의주신 내용은 AWS IoT Rule Engine에서 SQL문을 통해 숫자배열을 ASCII 코드 값으로 변경하는 방법이 궁금하신 것으로 이해하였습니다.

제가 조사한 바에 의하면 AWS IoT SQL은 chr(String) 함수[1]를 제공하여 숫자를 ASCII 코드로 변경하는 기능을 제공합니다. 하지만 안타깝게도 숫자 '배열'의 경우에는 ASCII 코드 값으로 변경하는 것을 지원하지 않습니다. 문서[1]을 보면 Argument Type으로 Array 는 Undefined 입니다.

그러므로 위의 예시에서 가능한 방법이라면 IoT Core의 Destination을 Lambda로 설정하여 Lambda 함수 내에서 변환 코드를 작성하는 방법을 제안드립니다.

예를들어, 발행하는 토픽이 'test/payload'이고 payload 값은 { “HelloWorld”: [72,101,108,108,111,119,111,114,108,100] } 일때,

다음과 같은 SQL statement를 적용하면,

SELECT VALUE HelloWorld FROM ‘test/payload’

아래와 같은 payload가 발송됩니다.

[72,101,108,108,111,119,111,114,108,100]

Lambda 함수에서, 전달받은 payload를 반복문을 통해 ASCII코드 값으로 변경하여 사용할 수 있습니다.

만약 배열이 아닌 값을 변경한다면 아래와 같은 방법을 사용할 수 있습니다.

발행하는 토픽이 'test/payload'이고 payload 값은 { “HelloWorld”: 72 } 일때,

SQL statement을 아래와 같이 적용하면,

SELECT chr(HelloWorld) AS HelloWorld FROM 'test/payload'

아래와 같은 payload가 발송됩니다.

{'HelloWorld': 'H'}

위의 가이드는 문서 [2]를 참고하여 작성하였습니다.

위의 내용이 문제 해결에 도움이 되었기를 바라며, 추가 궁금하신 점이나 질문이 있다면 문의주시기 바랍니다.

감사합니다.

  • References ==========

[1] AWS IoT SQL Functions chr(String) https://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-functions.html#iot-func-chr

[2] SELECT clause: https://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-select.html

beantwortet vor einem Jahr

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen