皆さんは、デバイス管理にどのようなツールをお使いでしょうか?
例えばSSHですか?便利ですね
とはいえ、セルラー通信においてSSHを利用するには、様々なハードルがあります
まずはネットワーク。一般的にはグローバルIPアドレスが必要ですが、これにより二つの課題が発生します
- IPアドレスを知る仕組みが無い (ifconfig.ioのような外部サービスが必要)
- デバイス自身にサーバ並みのセキュリティ対策を施す必要がある
これらの課題は SORACOM Gate で解決できます
では、SORACOM Gateを利用して例えばAnsible over SSHで構成管理をすれば良いのでしょうか?
IoTにおいてはAnsibleでは管理できない、例えばArduinoといったデバイスもつながる事になるため、これではすべてを管理することは叶いません
もっと包括的に、そしてSSHではない、多くのデバイスを管理するための仕組みとして SORACOM Inventory を紹介します
SORACOM Inventory とは
OMA LightweightM2M (LwM2M) をベースにした、デバイス管理のためのフレームワークを提供するサービスです
関連プレスリリース
IoT 通信プラットフォーム「SORACOM」においてIoTデバイスの設定の管理や状態把握、コマンド実行などを可能にするデバイス管理サービス「SORACOM Inventory」を7月5日より提供開始
OMA LwM2M
デバイス管理を目的として、 CoAP を使用したオープンな仕様&実装です。アーキテクチャはLwM2MサーバとLwM2Mクライアント(エージェント)のサーバ/クライアント方式となります
※OMA LightweightM2M および 移動体通信網とのインターワーク / TTC oneM2M専門委員会 日本電気株式会社 山田 徹(講演者)、内田 訓雄 / P4より
制御は LwM2M で規定されているツリー形式のリソースモデルのIDの単位で読み/書き/実行と、値の観察(Observe/Unobserve)を行います
e.g.) /3/0/9
→ Battery Level を読みだすためのID。SNMPに似ていますね
SORACOM Inventory が提供すること
SORACOM Inventory は下記のようなアーキテクチャでご利用いただけます
SORACOM Inventory を使用する利点
SORACOMコンソールからの操作が容易
SORACOM Inventory は、SORACOMコンソール上でデバイスが一覧できる他に、リソースモデルIDを調べることなく値の読み/書き/観察/実行が行える点にあります
コンソールでの一覧表示
デバイスの詳細表示
LwM2Mサーバがフルマネージド
SORACOM Inventoryでは LwM2Mサーバ(起動時の参照サーバ:Bootstrap, 実際の制御:Device management)をフルマネージドでご利用いただけます。お客様でサーバを立てる必要がありません。ほかにも、LwM2Mクライアント(エージェント)のサンプル実装がご利用いただけます※
現在用意しているサンプル実装は C/Java/Android のクライアント(エージェント)となります。もちろんLwM2Mはオープンであるため、ソラコムが提供がクライアント実装以外でも利用可能です
※Limited Preview期間中においては、ご申請をいただいた方に C/Java/Androidのサンプル実装をご提供いたします。その後は広く公開する予定です
※ソラコムではサンプル実装含め、クライアント(エージェント)のサポートは受けかねますのでご了承ください
LwM2Mのリソースモデルとクライアント(エージェント)の関係
LwM2Mで規定しているのは「リソースIDに対する呼び出しと、そのレスポンス」になります。そのため、どのような値が返るかはクライアント(エージェント)の実装に依存します
- 例) Firmware のバージョンを返すリソースモデルID
/5/0/7
が読みだされた時- Linux OSの場合:
uname -a
の結果を返す - Arduino UNOの場合: 固定文字列
1.0.0
を返す
- Linux OSの場合:
- 例) デバイスの再起動を実行する
/3/0/4
が実行されたとき- Linux OSの場合:
shutdown -r now
を実行する - Arduino UNOの場合: 下記の関数を作成したうえで
software_reset()
を実行する
- Linux OSの場合:
/* Software reset for Arduino UNO */
#include <avr/wdt.h>
void software_reset() {
wdt_disable();
wdt_enable(WDTO_15MS);
while (1) {}
}
実装ができるということは、言い換えると実装が必要ということです。そのため、Limited Previewにおいてご提供するサンプル実装においては、固定の値が返ったり、値自体が取得できないといったリソースIDも存在しますので、ご留意ください
まとめ
SORACOM Inventory は Limited Preview でご提供しております! (2017/7/5現在)
利用には事前申請が必要となりますが、簡単にお申込みいただけますので、まず試してみたい方はお申し込みください
特にLinux OS(Raspberry Piとか)が再起動する様子を目の当たりにすると、**SSHじゃなくてもいいかも?!**と思えますので、是非とも試してみてください!
ソラコム 松下