AWS IoTおよびThing Shadowsに関する雑感¶
注意: この文章には思い込みが含まれています。
AWS IoT が発表されました。AWS IoTはManagedなMQTT Serverを用意し、運用が大変となるMQTT Serverを面倒見てくれる、というMQTTに対する評価がちらほら聞こえます。
しかし、違います。AWS IoTの本質は、Thing Shadowsの仕組みです。
とはいえ、まだちゃんと使ったわけではないですし、間違いがあったらご指摘をお願いします。
Thing Shadows¶
AWS IoTでは、 Things というものが定義されています。このThingsには二種類が存在します。
- Things
実際の物理的なモノ。デバイス
- Thing Shadow
Thingsの状態をネットワーク(AWS)上に持たせたもの
Thingsはそのままですね。新しいのはThing Shadowです。これは、「物理的なデバイスを、仮想的にネットワーク上に写した(写像)もの」です。
ThingsとThing Shadowは1対1で結びついています。Thingsになにか変更があれば、Thing Shadowsにも変更が起こります。逆もまたしかり。Thing Shadowsに変更を起こした場合、それはThingsにも変更を起こすのです。
これはすなわち、
物理空間
仮想空間
とが一体化したことにほかなりません。
Thing Shadowの情報¶
Thing Shadowの実装は、単なるJSONです。:
{
"state" : {
"desired" : {
"color" : "RED",
"sequence" : [ "RED", "GREEN", "BLUE" ]
},
"reported" : {
"color" : "GREEN"
}
},
"metadata" : {
"desired" : {
"color" : {
"timestamp" : 12345
},
"sequence" : {
"timestamp" : 12345
}
},
"reported" : {
"color" : {
"timestamp" : 12345
}
}
},
"version" : 10,
"clientToken" : "UniqueClientToken",
"timestamp": 123456789
}
ここ重要なのは stateとmetadataそれぞれが持つ、 desired と reported です。
1. Thingが更新された場合¶
物理的なものである、Thingが更新された場合、その情報はMQTTやHTTPSでThing Shadowに通知されます。
これに伴い、 reported の状態が更新されます。
2. Thing Shadowが更新された場合¶
Thing Shadowは、MQTTやHTTPによって、仮想空間上で更新できます。 その場合、 desired の情報が更新されます。
この時、 desired と reported に差があった場合、 このThing ShadowをsubscribeしているThing(一つとは限らない)に対してメッセージが送られます。 Thingはこれを受け取り、自分自身の情報を更新することができるのです。そして、更新出来たら、 reported としてThing Shadowを更新します。
これらの動作により、ThingとThing Shadowsは同期が取れます。もしも、 repoted と desired が異なっている場合は同期がとれていない、ということになります。
さらに言うと、APIとして、 update/get/deleteが用意されており、それぞれに対して accepted と rejected が用意されています。このため、Things Shadowsを更新しようとしたが、できなかった、ということも分かるようになっています。
MQTTとの違い¶
ここまで、ThingsとThing Shadowsについて説明してきました。ところで、AWS IoTでは、MQTTの以下の機能がありません。
Retain
Will
QoS2
なぜでしょうか。それはThing Shadowがあるからです。
RetainはShadowそのものです
Wllはそもそもオフラインという状態が存在しないので必要ありません
QoS2による、同期はShadowのdesired/reportedを使えば実現できます
AWS IoTはMQTTというメッセージプロトコルではなく 「状態」を扱うためのものである、という点を重要視するといいのではないでしょうか。
まとめ¶
AWS IoTを単なるManagedなMQTT Serverとだけ捕らえてしまうと、本質を見誤る気が致します。仮想空間と物理空間の融合、Internet of Things、とはなにか、というのをもう一度見つめなおしてみると面白いかもしれません。
また、今回はまだ Rule に関して踏み込んでいません。Thing Shadows/Ruleを組み合わせることにより、人間が介在しない、Machine to Machine、 Things to Things の世界を作ることが出来るはずです。
という、あまりこのblogには書いていない、ちょっとエモーショナルな話でした。(実はこういう研究を10年以上前にやっていたのです。それがここまで広がったのか、とつい嬉しくなり、勢いに任せて書いた次第です)
Comments
comments powered by Disqus