投稿日

新サービス: SORACOM Inventory を発表

皆さんは、デバイス管理にどのようなツールをお使いでしょうか?
例えばSSHですか?便利ですね

とはいえ、セルラー通信においてSSHを利用するには、様々なハードルがあります
まずはネットワーク。一般的にはグローバルIPアドレスが必要ですが、これにより二つの課題が発生します

  1. IPアドレスを知る仕組みが無い (ifconfig.ioのような外部サービスが必要)
  2. デバイス自身にサーバ並みのセキュリティ対策を施す必要がある

これらの課題は 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クライアント(エージェント)のサーバ/クライアント方式となります

About LwM2M

※OMA LightweightM2M および 移動体通信網とのインターワーク / TTC oneM2M専門委員会 日本電気株式会社 山田 徹(講演者)、内田 訓雄 / P4より

制御は LwM2M で規定されているツリー形式のリソースモデルのIDの単位で読み/書き/実行と、値の観察(Observe/Unobserve)を行います
e.g.) /3/0/9Battery 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 を返す
  • 例) デバイスの再起動を実行する /3/0/4 が実行されたとき
    • Linux OSの場合: shutdown -r now を実行する
    • Arduino UNOの場合: 下記の関数を作成したうえで software_reset() を実行する
/* 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じゃなくてもいいかも?!**と思えますので、是非とも試してみてください!

ソラコム 松下