SORACOM Developers

SORACOM Inventory Getting Started

SORACOM Inventory でデバイスを管理する

はじめに

SORACOM Inventoryはオープンな規格である LwM2M を利用したデバイス管理のためのサービスです。LwM2M とはOMA (Open Mobile Alliance) が定めた軽量の M2M 用プロトコルで、SORACOM Inventory(以下、Inventoryと記します) では、このプロトコルを利用してデバイスとSORACOMプラットフォームで通信を行い、APIやユーザーコンソールから、デバイスのデータの読み書き(Read, Write)、コマンドの実行(Execute)をリモートで行ったり、デバイス情報の更新通知を受け取る(Observe, Unobserve)ことができます。

注意
  • SORACOM InventoryはLimited Previewとして提供しているサービスです。ご利用にあたっては、当社Webサイトから事前申請をお願いいたします。

当ガイドでは、Inventory を使ってデバイスをアカウントに登録し、リモートでデバイス管理する手順を以下のステップに沿って解説します。リモートでデバイス管理する手順の例としては、デバイス上のデータの読み取り(Read)とデバイスに対するコマンド実行(Execute)を行います。

当ガイドの前提は以下のとおりです。

ステップ 1: SORACOM Inventoryの全体像を理解する

Inventoryでは新しい用語や概念が使われていて、全体の構成は下図のようになっています。実際にサービスを利用する前に、全体像を整理しておきましょう。

Inventoryの全体像

Inventoryの仕組みと構成

Inventoryでは、デバイス側にLwM2Mに対応したエージェントをインストールし、動作させておくことでリモートでのデバイス管理を実現します。

Inventoryを利用するにあたって、最初に行われる処理はSORACOMプラットフォームへのデバイス登録と鍵交換(bootstrap)です。認証を行うためにAir SIMで通信を行い、デバイス上のエージェントでbootstrapを実行します。このとき、エージェントはBootstrap Server(※)と通信を行い、デバイスの情報をSORACOMのプラットフォームに登録すると共に今後の通信のために鍵交換を行います。bootstrapが完了すると、デバイスが Inventoryに登録され、ユーザーコンソールのデバイス一覧に表示されるようになります。
※Bootstrap ServerとはInventoryのコンポーネントの1つで、デバイスの登録と鍵交換の役割を担います。

Inventoryに登録済みのデバイスは、ユーザーコンソールやAPIを使ってデバイス上のデータの読み書き(Read, Write)、デバイス側で値に変化があったら通知を受けたり(Observe)、コマンドを実行(Execute)するために、エージェントを通じてDevice Management Serverというコンポーネントと通信を行います。最初に行ったbootstrapの段階でデバイスの認証や鍵交換が終わっていますので、登録済みデバイスはAir SIM以外の通信手段を使っていても構いません。Wi-Fiなどで通信していてもInventoryを使ってデバイスをリモート管理できます。

※Observeとは、デバイス側で値に変化があったら通知が受けられる機能です。デバイスからの非同期通知が基本であり、定期的な読み込みではない点に注意してください。

リソースモデル

Inventoryではデバイス上の情報を「リソースモデル(Rosource Model)」という形式で管理しています。リソースモデルはLwM2Mで規定されており、オブジェクト(Object)、オブジェクトインスタンス(Object Instance)、リソース(Resource)のツリー構造になっています。各要素には番号が割り当てられ、/3/0/0 のように表現できます。

例えば/3/0/0はデバイスの製造元(Manufacturer)を表すリソースであり、エージェントはサーバーからの Readリクエストに対して、自分の製造元情報を返します。また、/3/0/4は (Reboot) を表します。このExecute リクエストがDevice Management Serverから送信されると、デバイス自身の再起動が行われます。

なお、LwM2Mのプロトコルとしては、リソースへのオペレーション呼び出しとレスポンスの定義がされているだけです。実際のオペレーション部分はエージェント側に任されていることに留意してください。例えば先に挙げた例の/3/0/0(製造元情報)へのReadに対して、どのように製造元情報を取得するかについてはエージェントの実装に任されています。

ステップ 2: SIMグループにVPGを設定する

Limited Previewの間は、Inventoryを利用するグループに専用のVPGを設定し、通信を行う必要があります。VPGの設定情報はLimited Previewのご連絡を差し上げる際にお伝えします。

ステップ 3: デバイスにエージェントをインストールし動作確認する

InventoryはLwM2Mの規格に沿ってデバイス管理機能を提供しています。LwM2Mに対応したエージェントの実装用ライブラリとして代表的なものには、Eclipse WakaamaEclipse Leshanがあり、これらを利用してエージェントを作成するとInventoryからデバイスを管理できるようになります。

当ガイドでは、ソラコムがサンプルとして提供しているEclipse Wakaamaを利用してC言語で実装したLinux向けエージェント(Wakaama C client)、Eclipse Leshanを利用してJavaで実装したLinuxとAndroid向けエージェント(SORACOM Inventory Agent for Java, Leshan Android client)のインストールと動作確認を行います。

注意
  • 当ガイドで紹介するエージェントは、あくまで動作確認用のサンプルです。本格的な運用にあたってはお客様ご自身でエージェントを実装ください。
  • Limited Previewに申し込んでいないお客様は、デバイスにエージェントをインストールしてもデバイス登録(bootstrap)を実行することはできません。
  • Eclipse Wakaama, Leshan等のライブラリの利用方法や実装については当社技術サポートの対象外となります。実装に関するご質問は受け付けできかねますので予めご了承ください。技術情報は各ライブラリの公式ドキュメントを参照ください。

ステップ3-1: Linux向けサンプルエージェント(Wakaama C client)

ここではRaspberry Pi向けのLinuxディストリビューションRaspbian Jessie Lite (June 2017)を例にWakaama C clientのインストールから動作確認までの手順を解説します。他のディストリビューションではコマンドが異なる場合があります。

インストール

Wakaama C clientはLimited Previewを申し込んだお客様に限り配布いたします(公開は今後を予定しています)。バイナリファイルをRaspberry Piの適当なディレクトリに配置するとエージェントのインストールは完了です。

デバイスの登録(bootstrap)

インストールが完了したら、続いてデバイスの登録(bootstrap)を行います。まず、Raspberry PiをAir SIMでネットワーク接続します。

次に下記のコマンドを実行し、「State: STATE_READY」の文字列が表示されたら登録成功です。ユーザーコンソールにもデバイスが登録されているはずですので、「デバイス一覧」画面をリロードしてみてください。もしうまく登録できない場合には、コマンドオプションやネットワークの接続状況を確認してください。

$ cd ~/wakaama/build
$ ./lwm2mclient -b -n{endpoint}-h bootstrap.soracom.io

ステップ3-2: Linux向けサンプルエージェント(SORACOM Inventory Agent for Java)

ここではRaspberry Pi向けのLinuxディストリビューションRaspbian Jessie Lite (June 2017)を例にSORACOM Inventory Agent for Javaのインストールから動作確認までの手順を解説します。他のディストリビューションではコマンドが異なる場合があります。

ビルド済みのサンプルエージェントは、「デバイスの登録」「日付などのデータのRead」「コマンド(ping/shutdown)の実行のみが実装されたものになります。また配布するソースコードのサンプルエージェントをベースに各デバイス向けに実装を増やすことで、デバイスに合わせた拡張が可能です。

ビルド済みエージェントのインストール

SORACOM Inventory Agent for Javaも、Limited Previewを申し込んだお客様に限り配布いたします(公開は今後を予定しています)。配布するファイルのうち、soracom-inventory-agent-example-xxx.zip(xxxはバージョン番号)が、エージェント用のビルド済みファイルとなります。エージェントを動作させるために、まずはデバイスにJava(JRE7以上) をインストールします。既にJavaがインストール済みであれば、version 7 以上であることを確認してください。

$ sudo apt-get install default-jre
$ java -version

続いて、ビルド済みエージェントのzipファイルを適当なディレクトリで展開すればインストール完了です。

デバイスの登録(bootstrap)

インストールが完了したら、続いてデバイスの登録(bootstrap)を行います。まず、Raspberry PiをAir SIMでネットワーク接続します。

次に下記のコマンドを実行し、bootstrapを実行します。

$ cd ~/soracom-inventory-agent-example-0.0.1/bin/
$ ./soracom-inventory-agent-example-start

デバイス登録時のエンドポイント名は、自動設定されますが -e オプションを利用すると、任意のエンドポイント名を設定できます。

bootstrapが完了すると、ログ中の “2017-06-28 11:15:31,270 INFO SORACOMInventoryAgentExample - using endpoint [My-Device.local-ACDE99999999]”のように出力されているエンドポイント名でデバイスがコンソールに表示されます。

また、エージェントと同じ場所に .soracom-inventory-credentials.dat というファイルが作成されます。bootstrap以降はこのファイルを使ってbootstrapなしでSORACOM Inventoryと通信できるため、wifiなどSIM以外経由でも通信を行うことができます。再度ブートストラップしたい場合は、このファイルを消して再度実行するか、実行時に -b オプションを付けてください。

サンプル実装の拡張

Limited Previewを申し込んだお客様には、SORACOM Inventory Agent for Javaのソースコードも配布いたします。soracom-inventory-agent-for-java-release-xxx.zip(xxxはバージョン番号)がソースコードを含むプロジェクトセット一式です。このコードを元に実装をしていただくことで、デバイスに対応したエージェントの実装が可能となります。

ソースコードのzipファイルには、「soracom-inventory-agent-for-java-core」と「soracom-inventory-agent-for-java-example」の2つのフォルダを含んだソースが入っており、それぞれがコアライブラリとサンプル用ライブラリとなっています。

エージェントの拡張は、基本的には「soracom-inventory-agent-for-java-example」の中のファイルを変更する、もしくは参考にしてエージェントを実装する形となります。より詳しい拡張方法については、ソースコード添付のREADMEを御覧ください。

プロジェクトのビルドは、以下のコマンドで行えます。

./gradlew build

実行後、soracom-inventory-agent-for-java-example/build/distributionsフォルダに、ビルド済エージェントのzip/tarファイルが生成されますので、上記手順にてデバイスにインストールが可能となります。

ステップ2-3: Android向けサンプルエージェント(Leshan Android client)

Androidデバイス向けのエージェントのインストールは、APKをインストールする方法とソースコードをビルドする方法があります。ここでは手順の簡単なAPKを利用する方法を紹介します。(対応バージョン:Android 4.4、APIレベル19)

エージェントのインストール

Androidデバイス向けのエージェントも、Limited Previewを申し込んだお客様に限り配布いたします(公開は今後を予定しています)。デバイス上でAPKをダウンロード/インストールすればエージェントのセットアップは完了です。(対応バージョン:Android 4.4、APIレベル19以上)

デバイスの登録(bootstrap)

デバイスの登録にあたっては、Air SIMで通信している必要があります。まずはデバイスのWi-FiをOFFにセットし、Air SIMでネットワーク接続しましょう。

次に先ほどインストールしたエージェント(アプリ)を起動すると、位置情報取得の権限を付与するためのダイアログが出ます。内容を確認し、アプリ設定画面で権限を付与してください。アプリはバックグラウンドで SORACOM Inventoryとの通信をすぐに開始し、ユーザーコンソールのInventoryの画面にAndroidデバイスが表示されます。エンドポイント名は自動的に設定されます。

位置情報がうまく取得できていない場合(Latitude (緯度:/6/0/0)・Longnitude (経度:/6/0/1) ともに 0.0 となってしまう場合)は、アプリを一旦強制終了して再起動するか、デバイスごと再起動をお試しください。

Androidアプリケーションの性質上、デバイスがスリープに入ったときなど自動的にオフラインとなる場合があります。その場合にはアプリケーションを再度起動してください。

ステップ4:エージェントの動作確認

ステップ4-1:デバイス情報の参照

エージェントのbootstrapが完了したら、ユーザーコンソール左上のメニューボタンから「SORACOM Inventory」をクリックし、デバイス一覧画面に移動します。

登録済みデバイス一覧の中にステップ2で登録したデバイスが表示されていることを確認してください。一覧からデバイスをクリックするとデバイス詳細画面が表示されます。Inventoryでは、このページを使ってリモート管理を行います。

device detail

ステップ4-2:デバイス上のデータのObserve

bootstrapが完了し、ユーザーコンソールでデバイスの登録完了が確認できたら、リモートでデバイスのデータを取得してみましょう。例として、ここではデバイス上の現在時刻をObserveしてデバイス上のデバイス側で値に変化があったら通知を受けてみます。以下の手順に沿ってObserveの動作確認をしてみましょう。

※Limited Previewで配布するクライアントでは、実装されていない項目については状態を表示できない場合があります。例えば、Wakaama C clientでは、Current Timeが正しく表示されませんが、これはクライアントが実装されていないためです。

注意
Inventoryでは、月に1回でもオンラインになったデバイスの数、または、デバイス登録/Read/Write/Observe/Executeのリクエスト数に応じて料金が発生します。Observeを継続したままだと料金が高額になる可能性もあるためご留意ください。

ステップ4-3: デバイスに対するExecute

デバイスに対してコマンド実行する例(Execute)として、wakaama C clientを使ってリモートでデバイス再起動する手順を紹介します。デバイスが遠隔地にある場合、この操作は危険を伴いますので下記注意事項を必ずお読みください。

※ Leshan Java client, Android clientは現状ではExecuteに対応していません。

注意事項
  • このセクションで紹介する操作を行うと実際にデバイスが再起動します。デバイス起動時にエージェントが自動起動する設定や、ネットワーク再接続を自動的に行う機能があることを事前に必ずご確認ください。これらの機能がなく、遠隔地にデバイスがある場合、デバイス設置場所の現地で復旧作業が必要となる可能性があります。
  • このセクションではLinux用のエージェントでExecuteする手順のみ説明します。

以上、Inventoryの基本機能をご紹介しました。

Getting Started

SORACOM Air for セルラー

SORACOM Air for LoRaWAN

SORACOM Air for Sigfox

SORACOM Beam

SORACOM Canal/Direct/Door

SORACOM Endorse

SORACOM Funnel

SORACOM Gate

SORACOM Harvest

SORACOM Inventory

SORACOM Junction

サービス機能詳細

Developer Tools

pagetop