2017-10-25 4 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クエリ言語を使用する

ドキュメントを使用してい

"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" 
関連する問題