
AWSコンソールのテストページからデバイスシャドウの更新・取得の動作確認をしてみる
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、CX事業本部の若槻です。
AWSでIoTデバイスのステート管理を行う場合は、IoT Coreのデバイスシャドウがよく利用されます。そしてこのデバイスシャドウを利用したシステムを実装する際に、
- デバイスシャドウのステータスをMQTTトピックを使って更新・取得する簡単な動作確認をしたい。
- ただし、端末のローカルにMQTTクライアントやデバイスの証明書及び秘密鍵を用意してテストするほどではない。
ということがあります。そんな時にはAWS IoTのコンソールのテストページを利用すると便利です。
テストページからデバイスシャドウを更新してみる
実際にテストページからデバイスシャドウのステータスを更新してみます。
AWS IoTで作成済みのシングdemoThingがあります。[モノ] - [demothing] - [シャドウ]ページを開くと、下記の通り現在のシャドウステータスはまだ一度も更新されていないため{}であることが確認できます。

ここでAWS IoTのテストページを開きます。MQTTクライアントへのPublishはページ下部の[発行]から行うことができます。

デバイスシャドウの更新はトピック$aws/things/<シング名>/shadow/updateにステータスデータをpublishすれば行うことができます。シングdemoThingのデバイスシャドウであれば、対象トピックは$aws/things/demoThing/shadow/updateとなります。
このトピックにテストページから以下のデータをPublishしてみます。「demoThingデバイスの現在のcolorステータスはredである」という更新です。
{
"state": {
"reported": {
"color": "red"
}
}
}
テスト画面の[発行]部分でトピック名とデータを指定して、[トピックに発行]をクリックします。

シングdemoThingのシャドウページを見ると、先ほどPublishしたデータの内容でシャドウステータスが{"color": "red"}に更新されました。

続けてテストページより「demoThingデバイスのcolorステータスがblueに更新された」というデータをPublishしてみます。

デバイスシャドウ側のステータスが{"color": "blue"}に更新されました。

テストページからデバイスシャドウを取得してみる
また、$aws/things/<デバイス名>/shadow/get/acceptedをSubscribeした状態で、$aws/things/<デバイス名>/shadow/getへ空データをPublishすれば、デバイスシャドウのステータスを取得することができます。
これをテストページから行ってみます。テスト画面の[サブスクリプション]部分で[トピックのサブスクリプション]に$aws/things/demoThing/shadow/get/acceptedを指定して[トピックのサブスクライブ]をクリックします。

するとサブスクリプション一覧に$aws/things/demoThing/shadow/get/accepted に対するサブスクリプションが作成されます。

この状態で[サブスクリプション]より[発行]部分で$aws/things/demoThing/shadow/getを指定して[トピックに発行]をクリックします。

すると先ほど作成したサブスクリプションに緑色のマークが点くので選択すると、

シングdemoThingの現在のデバイスシャドウのステータスを取得することができました。

おわりに
テストページを利用してデバイスシャドウのMQTTトピックを利用した動作確認を簡単に行うことができました。
実を言いますとシャドウステータスの画面からデバイスシャドウのデータは直接編集することもできますが、今回のように実際にMQTTトピックへのPublish・Subscribeを介してデバイスシャドウの操作を行うことにより、実際の動作がよりイメージしやすくなると思います。
以上







