Soracom

Users

ドキュメント

デバイスを管理し情報を収集する

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

  • SORACOM のアカウントを作成済みであること
  • SORACOM IoT SIM とデバイス (OS:Linux) が準備されており、通信可能であること
  • デバイスにアプリケーションをインストールできる権限があること

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

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

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

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

なお、当ガイドでは、IoT SIM を利用してデバイスの登録を行います。デバイス自身が IoT SIM を使用して通信していることを前提とします。デバイスの登録が完了するとデバイスに接続用の鍵が生成されます。以降はこのファイルを使って Inventory と通信できるため、Wifi や有線など IoT SIM 以外の通信を使用してデバイスを管理できます。

IoT SIM を使用せず Inventory を利用する場合は、デバイス登録時に払い出された Key でデバイスを管理する を参照してください。

Linux 向けサンプルエージェント (C クライアント) 

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

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

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

IoT 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 が実行され、SORACOM Inventory にデバイスが登録され、d-xxxxxxxxxxxxxxxxxxxxx という形式の SORACOM Inventory のデバイス ID が払い出されます。

なお、このとき利用した endpoint 名 (-n で指定したもの) もデバイスをユニークに識別する ID であり、同一の endpoint 名を使って別デバイスの bootstrap を実行すると、先に払い出された SORACOM Inventory のデバイスと同一デバイスとみなされてしまいますのでご注意ください。

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

ソラコムのユーザーコンソールから SORACOM Inventory にデバイスを登録し、その際に払い出されたデバイス ID とシークレットキーを使用してデバイスを管理することも可能です。この場合、IoT SIM を使用してなくても接続が可能です。 詳細は、デバイス登録時に払い出された Key でデバイスを管理する をご確認ください。

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

サンプルエージェント (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 を IoT 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-jce というファイルが作成されます。bootstrap 以降はこのファイルを使って bootstrap なしで SORACOM Inventory と通信できるため、wifi など SIM 以外経由でも通信を行うことができます。再度ブートストラップしたい場合は、このファイルを消して再度実行するか、実行時に -b オプションを付けてください。

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

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

デバイス情報の参照 

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

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

device detail

デバイス上のデータの Observe 

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

  • デバイス上でエージェントが起動していることを確認します。
  • ユーザーコンソールの Inventory の画面から、先ほど登録したデバイスの詳細ページを開きます。
  • ページ中ほどの Current Time (/3/0/13) の項目右側にあるアイコンObserve iconをクリックすると、Observe が開始されます。
  • 画面上にデバイス上の時刻が表示されます。表示内容が更新されることを確認してください。
  • Observe でデータ読み取りできることを確認したら、もう一度アイコンObserve iconをクリックして 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 の値をインクリメントしています。

デバイスのグループ設定 

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

device detail

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

device detail

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

device detail

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

device detail

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

device detail

デバイス情報の Observe 

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

LatitudeLongitude を Observe します。

device detail

データの確認 

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

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

device detail

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

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

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