AWSコンソールのテストページからデバイスシャドウの更新・取得の動作確認をしてみる
こんにちは、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を介してデバイスシャドウの操作を行うことにより、実際の動作がよりイメージしやすくなると思います。
以上