IoT基礎知識としてのLwM2M
はじめに
ぐりもお(@gr1m0h)です。
最近、IoTに関わることが増えてきました。
IoT周りの勉強ということで、SORACOMのサービスを見ていたのですが、SORACOM Inventoryというサービスがあります。
SORACOM Inventory(以下、Inventory) は、OMA LightweightM2M (LwM2M) をベースにしたデバイス管理のためのフレームワークを提供します。LwM2M とはOMA (Open Mobile Alliance) が定めた軽量の M2M 用プロトコルです。
記載の通り、デバイスとSORACOM Platformをデバイスの中に常駐させるAgent等を介してLwM2Mで接続し、デバイスのデータや状態を取得したり、RemoteShellみたいなことができるようなサービスのようです。
IoTで使用されるプロトコルとしてMQTTはよく知っていましたが、LwM2Mは初めて知ったのでまとめておこうというのが今回の動機です。
余談ですが、MQTTについては以下記事が分かりやすいのでおすすめです。
(LwM2MにIoT基礎知識は言い過ぎかも?MQTTの方が知名度あるような....)
LwM2Mとは
「えるだぶりゅーえむつーえむ」と読みます。
LwM2Mとは、Open Mobile Alliance Lightweight Machine to Machine の略で、IoTやその他M2Mアプリケーションにおけるリモートデバイス管理やテレメトリ用に設計された通信プロトコルです。
Open Mobile Alliance(OMA)が提供するオープンなプロトコルで、計算能力の低いモバイル端末のニーズに対応するために設計されているものです。機能としては、デバイスの制御や監視、遠隔診断、遠隔アップグレードなどの機能を提供します。これにより、IoTエコシステムにおいて、デバイスの管理や運用を容易にします。
MQTTと同じく、軽量で実装が容易です。低帯域幅のネットワークで動作する、低消費電力でリソースに制約のあるデバイス、センサー、ゲートウェイに適しています。またどちらも双方向通信をサポートしています。
MQTTと違う点はいくつかありますが、MQTTはブローカーが介在するPub/Sub型のメッセージ伝送プロトコルであるのに対し、LwM2MはCoAP Req/Resに基づく構造化されたデバイス管理、サービスイネーブルメントプロトコルです。LwM2Mの方がデータの構造が決められていたり、UDP/TCP/Non-IP Data delivery/SMS/CIoT/LoRaWAN等さまざまなトランスポート層で動作するよう設計されているという優位性があるようです。
差分はこの記事がわかりやすかったです。
オブジェクトとリソース
理解した気になったので書いておきます。
LwM2Mでは、デバイスの情報をResource Modelという形式で管理されています。要は、どんな情報がどこにあるかの定義がなされているということ。定義については以下にまとまっているのでこれを見るのが良いです。
読み方としては、 Object/Object Instance/Resource という読み方になります。
例えば、1つ目のデバイスの再起動(Reboot)だと、Device/1つ目のインスタンス/Reboot になります。DeviceのObjectIDは3、Object Instance1つ目は0、RebootはResourceIDで4なので、 3/0/4 になります。
さいごに
LwM2MはOMA LightweightM2M (LwM2M) Object and Resource Registryの通り、サポートが充実しており、SORACOM Inventoryであまり意識せずに使用できるようなので気になった方は触ってみてはいかがでしょうか。
Discussion