2017-10-25 3 views
0

AWS IoT 규칙을 사용하여 작업을 트리거하려고합니다. 그러나 문서는 꽤 가난합니다. 어떤 이유로 문서는 json 페이로드에 중첩 수준 = 1이 있다고 생각합니다. 내 JSON 페이로드의 예 : 쿼리 내가 규칙 내에서 SELECT * FROM '$aws/things/thing-name/shadow/update/accepted' WHERE state.reported.movement="yes"AWS에서 중첩 된 속성으로 검색하는 방법 IoT AWS를 사용하는 IoT IoT 쿼리 언어

문서를 사용하고

"state": { "reported": { "movement": "yes" } } }

, 내가 사용하고 있습니다 : http://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-where.html

이 막 평면 JSON 객체 정보를 가지고, state.reported.movement, reported.movement, 그냥 움직임을 사용하려고했는데 아무 것도 작동하지 않는 것처럼 보입니다.

+0

문서의이 부분을 IoT 쿼리에서 중첩 된 JSON 객체를 참조하는 방법에 대해 다룹니다. http://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-json.html select 문이 올바르게 표시됩니다. 실제 발생한 문제는 무엇입니까? IoT 서비스 로깅을 사용하도록 설정 했습니까? 해당 로그에 오류가 나타나지 않는 것을 확인하고 있습니까? http://docs.aws.amazon.com/iot/latest/developerguide/cloud-watch-logs.html –

+0

2 일 전 왜 작동하지 않았는 지 잘 모르겠지만 분명히 @ MarkB가 옳았습니다. 오늘 나는 그것을 재검사하고 SNS 화제는 메시지를 보내기 시작한다 (규칙의 결과로 나는 sns 화제를 연결했다). –

답변

0

좋아요, 내 질문에 대한 대답은 : AWS IoT WHERE 문에서 중첩 된 속성을 지원합니다. 어떤 이유로 규칙을 만들 때 작동하지 않았습니다. 어쩌면 SNS 주제가 메시지 전달과 관련하여 다소 지연되었을 수도 있습니다.

는 AWS의 IoT에 오는 것은 내 상태가, 주제 인정

그렇게 보이는 :

{ 
    "state": { 
    "reported": { 
     "system": "armed", 
     "movement": "yes" 
    } 
    }, 
    "metadata": { 
    "reported": { 
     "system": { 
     "timestamp": 1509207282 
     }, 
     "movement": { 
     "timestamp": 1509207282 
     } 
    } 
    }, 
    "version": 618, 
    "timestamp": 1509207282, 
    "clientToken": "xxxxxxxx" 
} 

그리고 난 다음 쿼리를 사용하고 그 JSON 쿼리 :

SELECT * FROM '$aws/things/myThing/shadow/update/accepted' WHERE state.reported.movement="yes" and state.reported.system="armed"