SORACOM Developers

SORACOM Inventoryを使用してデバイスを管理し情報を収集する

はじめに

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

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

ステップ 1:デバイスにエージェントをインストールする

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

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

注意
  • 当ガイドで紹介するエージェントは、参照実装となります。
  • エージェント、および Eclipse Wakaama, Leshan 等のライブラリの利用方法や実装については当社技術サポートの対象外となります。実装に関するご質問は受け付けできかねますので予めご了承ください。技術情報は各ライブラリの公式ドキュメントを参照ください。

なお、当ガイドでは、AirSIM を利用してデバイスの登録を行います。デバイス自身が Air SIM を使用して通信していることを前提とします。デバイスの登録が完了するとデバイスに接続用の鍵が生成されます。以降はこのファイルを使って Inventory と通信できるため、Wifiや有線など Air SIM 以外の通信を使用してデバイスを管理できます。 (Air SIMを使用せず Inventory を利用する場合は、デバイス登録時に払い出されたKeyでデバイスを管理するを参照してください。)

ステップ1-1: Linux向けサンプルエージェント(C クライアント)

ここではRaspberry Pi向けのLinuxディストリビューションRaspbian Jessie Lite (June 2017)を例に Linux向けサンプルエージェント(C クライアント)のインストールの手順を解説します。他のディストリビューションではコマンドが異なる場合があります。

インストールとデバイスの登録

ビルド用のスクリプト build_wakaama.sh を用意しています。 当シェルをダウンロードし、ビルドを実行します。以下のコマンドを実行してください。

Air SIM で接続していることを確認してください。

 $ curl soracom-files.s3.amazonaws.com/build_wakaama.sh | bash
 $ sudo cp inventory/build/lwm2mclient /usr/local/bin

 $ lwm2mclient -n $(hostname) -b -h bootstrap.soracom.io -p 5683 -4 -c

ユーザーコンソールにもデバイスが登録されていますので、「デバイス一覧」画面をリロードして確認してください。うまく登録できていない場合には、コマンドオプションやネットワークの接続状況を確認してください。

なお、当コマンドを実行すると bootstrap が実行され交換された鍵が表示されます。以降は deviceId と secretKey を使用して、以下のコマンドにより、AirSIM を使用してなくても接続が可能です。

$ lwm2mclient -n $(hostname) -i <deviceId> -s <secretKey> -h jp.inventory.soracom.io -p 5684 -4 -c

コマンドオプションの詳細はwakaama READMEを参照してください。

ステップ1-2: サンプルエージェント(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 では、soracom-inventory-agent-example-xxx.zip(xxxはバージョン番号)が、エージェント用のビルド済みファイルとなります。エージェントを動作させるために、まずはデバイスにJava(JRE7以上) をインストールします。既にJavaがインストール済みであれば、version 7 以上であることを確認してください。

$ sudo apt-get install oracle-java8-jdk
$ java -version

SORACOM Inventory agent for Javaからsoracom-inventory-agent-example-xxx.zip(xxxはバージョン番号)をダウンロードしてください。

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

デバイスの登録(bootstrap)

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

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

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

デバイス登録時のエンドポイント名は、自動設定されます。

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 オプションを付けてください。

サンプル実装の拡張については、カスタムオブジェクトを定義して、エージェントをカスタマイズする、およびSORACOM Inventory Agent for Javaを参照してください。

ステップ2:デバイスを管理する

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

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

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

device detail

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

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

注意
Inventoryでは、月に1回でもオンラインになったデバイスの数(メッセージが送られたデバイス)、またはデバイス登録/Read/Write/Observe/Executeのメッセージ数に応じて料金が発生します。Observeを継続したままだとメッセージ数が多くなりますのでご注意ください。

ステップ3: デバイスの情報を SORACOM Harvest に収集する

Inventory では、デバイス側で値に変化があった場合の通知(Observe)を SORACOM アプリケーションサービスと連携できます。例えば、電波強度を Observe しておき、SORACOM Harvest に送ることで電波強度の推移を確認できます。 また、SORACOM Beam、SORACOM Funnelを使用することで、お客様のサーバーやクラウドサービスにデータを送信することが可能です。

ここでは、 LatitudeLongitude を Observe して Harvest にデータを収集します。 SORACOM Inventory Agent for Java のサンプルでは、定期的に LatitudeLongitude の値をインクリメントしています。

ステップ3-1: デバイスのグループ設定

コンソールからデバイスグループを選択します。 device detail

デバイスグループを追加します。 device detail

グループ名を指定してください。 device detail

続いてグループ一覧からグループ名をクリックして詳細を開きます。 HarvestをONにします。 device detail

次にデバイスを選択して、グループを変更してください。 device detail

ステップ3-2: デバイス情報のObserve

デバイスをObserveします。 対象のデバイスを選択して、[詳細]ボタンをクリックします。

LatitudeLongitude を Observe します。

device detail

ステップ3-3: データを確認する

Harvestでデータを確認します。

デバイス一覧から対象のデバイスを選択して、[操作]->[データを確認]をクリックします。 以下のようにデータを確認できます。

device detail

「SORACOM Inventoryを使用してデバイスを管理し情報を収集する」は以上です。

Inventoryを使用することで、デバイスの情報を読み書き、実行することが可能です。また Observe した属性は、SORACOMアプリケーションサービスを使用して、クラウド連携や Harvest にデータを蓄積できます。これにより、デバイスの状態の履歴を確認できます。

なお、デバイス側にはクライアントエージェントが必要です。クライアントエージェントはサンプルとして提供しています。これらを実装することで利用にあったデバイス管理が可能になります。

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

SORACOM Krypton

SORACOM Lagoon

Gadgets

サービス機能詳細

Developer Tools

pagetop