Soracom

Users

ドキュメント
Home ドキュメント SORACOM Inventory Getting Started

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

Inventory は LwM2M を利用したデバイス管理機能を提供します。Inventory と LwM2M に対応したエージェントを作成することで、デバイスの情報を読み書き (Read/Write/Observe) したり、コマンドを実行 (Execute) したりできます。

ここでは、ソラコムが参照実装として提供しているエージェントをインストールし、IoT SIM を利用してデバイスの登録、データの読み取り (Read)、コマンド実行 (Execute) を行います。

ソラコムが提供するエージェントは参照実装です

ソラコムでは、以下のエージェントを参照実装として提供しています。参照実装を参考に、用途にあわせたエージェントを作成してください。

  • Eclipse Wakaama を利用して C 言語で実装した Linux 向けサンプルエージェント (C クライアント)
  • Eclipse Leshan を利用して Java で実装したサンプルエージェント (SORACOM Inventory Agent for Java)

なお、ソラコムが参照実装として提供しているエージェント、および Eclipse Wakaama、Eclipse Leshan 等のライブラリの利用方法や実装については SORACOM サポートの対象外です。実装に関する質問は受け付けできません。技術情報は各ライブラリの公式ドキュメントを参照してください。

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

VPG に所属する IoT SIM を利用して Bootstrap (デバイス登録) するには

Bootstrap する際は、IoT SIM を利用してインターネットに接続できる必要があります。そのため、たとえばインターネットゲートウェイを OFF (インターネットアクセスを無効化) にした VPG に所属する IoT SIM では、IoT SIM を利用した Bootstrap (デバイス登録) はできません。

操作を始める前に準備が必要です (クリックして確認してください)

(1) SORACOM Air for セルラーの IoT SIM と、IoT SIM が利用できるデバイス (OS:Linux) を準備すること

(2) デバイスが通信可能であること

(3) デバイスにアプリケーションをインストールできる権限があること

準備完了

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

ここでは、ソラコムが参照実装として提供しているエージェントのうち、Eclipse Leshan を利用して Java で実装したサンプルエージェント (SORACOM Inventory agent for Java) をインストールし、IoT SIM を利用して Inventory にデバイスを登録する手順を説明します。

ビルド済みのサンプルエージェントでは、以下の機能が実装されています。

  • デバイスの登録
  • 日付などのデータの Read
  • コマンド (ping/shutdown) の実行

ここでは Raspberry Pi 向けの Linux ディストリビューション Raspberry Pi OS を例に SORACOM Inventory Agent for Java のインストールと、デバイス登録の手順を説明します。他のディストリビューションではコマンドが異なる場合があります。

サンプルエージェントのソースコードを変更するとデバイスにあわせて機能を拡張できます

サンプルエージェントのソースコードは、SORACOM Inventory agent for Java で公開されています。ソースコードを変更すると、デバイスに合わせて機能を拡張できます。詳しくは、カスタムオブジェクトを定義して、エージェントをカスタマイズする を参照してください

Eclipse Wakaama を利用して C 言語で実装した Linux 向けサンプルエージェント (C クライアント) も提供しています。

ビルド済みエージェントを Raspberry Pi にインストールする

Java (JRE7 以上) が必要です

エージェントを動作させるために、まずはデバイスに Java (JRE7 以上) をインストールします。すでに Java がインストール済みであれば、version 7 以上であることを確認してください。

$ sudo apt install openjdk-17-jdk
$ java -version
openjdk version "17.0.9" 2023-10-17
OpenJDK Runtime Environment (build 17.0.9+9-Raspbian-1deb11u1rpt1)
OpenJDK Client VM (build 17.0.9+9-Raspbian-1deb11u1rpt1, mixed mode, emulated-client)
  1. SORACOM Inventory agent for Java で soracom-inventory-agent-example-x.x.x.zip (x.x.x はバージョン番号) をダウンロードします。

    soracom-inventory-agent-example-xxx.zip (xxx はバージョン番号) が、エージェント用のビルド済みファイルです。

  2. ビルド済みエージェントの zip ファイルを適当なディレクトリで展開します。

    これ以降は、ホームディレクトリに (~/) に展開した場合の手順を説明します。

デバイスを Inventory に登録する (bootstrap)

続いてデバイスを Inventory に登録し、鍵交換を行います (bootstrap)。

デバイスを Inventory に登録すると料金が発生します

Inventory ではデバイスの登録費用に加え、月に 1 回でも オンライン になった Inventory デバイスは月額費用が発生します。また、デバイス登録/Read/Write/Observe/Execute のメッセージ数に応じて料金が発生します。詳しくは、SORACOM Inventory のご利用料金 を参照してください。

  1. Raspberry Pi が SORACOM に接続できていることを PING 応答サービス で確認します。

    Raspberry Pi で SORACOM に接続するには、Air for セルラー の IoT SIM と Soracom Onyx - LTE™ USB ドングル を組み合わせて利用したり、Arc を利用したりします。

  2. bootstrap を実行して Inventory にデバイスを登録します。

    $ cd ~/soracom-inventory-agent-example-x.x.x/bin/
    $ sudo ./soracom-inventory-agent-example-start
    
    2023-11-21 19:01:51,228 INFO InventoryAgentHelper - detect hardware address:DCA632A0D264 from wlan0
    2023-11-21 19:01:51,234 INFO CommandLineParser - using endpoint [raspberrypi-1234567890AB]
    ...
    

    デバイス ID (d-xxxxxxxxxxxxxxxxxxxxx) が払い出され、Inventory にデバイスが登録されます。登録されたデバイスのことを「Inventory デバイス」と呼びます。

    コマンドの実行結果に表示される raspberrypi-1234567890AB が endpoint 名です。

    • soracom-inventory-agent-example-start が実行されている間は、ユーザーコンソールで オンライン と表示されます。
    • soracom-inventory-agent-example-start を終了すると オフライン と表示されます。
    デバイス登録時の endpoint 名は自動設定されます

    デフォルトでは、ホスト名とネットワークインターフェースの情報の組み合わせがデバイスを識別する ID (endpoint 名) です。別デバイスの bootstrap を実行する際、同一の endpoint 名を指定すると、Inventory に登録済みのデバイスとみなされます。

    デバイスが異なる場合は、-e の後に既存のデバイスと異なる文字列 (endpoint 名) を指定してください。

    払い出されたデバイス ID は SORACOM ユーザーコンソールで確認します

    払い出されたデバイス ID は、コマンドの実行結果としては表示されません。SORACOM ユーザーコンソールで確認してください。

    • 再起動 (Reboot) を実行する場合は、sudo が必要です。そのほかのデバイス登録/Read/Write/Observe/Execute を実行する範囲では、sudo は省略できます。

    • soracom-inventory-agent-example-start のオプションの詳細は、以下のコマンドを実行して表示されるヘルプを参照してください。

      $ ./soracom-inventory-agent-example-start --help
      
    2 回目以降の起動時は IoT SIM は必要ありません

    bootstrap が終了すると、ホームディレクトリに .soracom-inventory-jce というファイルが作成されます。2 回目以降はこのファイルを使って Inventory と通信できるため、Wi-Fi など IoT SIM 以外を経由しても通信できます。再度 bootstrap する場合は、IoT SIM などを利用して Raspberry Pi が SORACOM に接続できていることを確認してから、.soracom-inventory-jce を削除して ./soracom-inventory-agent-example-start を実行するか、以下のように --bootstrap オプションを付けて実行します。

    $ ./soracom-inventory-agent-example-start --bootstrap
    
  3. ユーザーコンソール にログインし、Raspberry Pi で利用した IoT SIM のカバレッジタイプを選択します。

    たとえば、Raspberry Pi で plan01s の IoT SIM を利用して Inventory にデバイスを登録した場合は、グローバルカバレッジの表示に変更します。詳しくは、SORACOM ユーザーコンソールで表示するカバレッジタイプを変更する を参照してください。

  4. [メニュー][SORACOM INVENTORY][デバイス管理] の順にクリックします。

    Inventory のデバイス管理画面が表示され、デバイス ID (d-xxxxxxxxxxxxxxxxxxxxx) が表示されます。

うまく登録できていない場合には、soracom-inventory-agent-example-start のコマンドオプションや、SORACOM への接続状況を確認してください。

ステップ 2: Inventory デバイスの情報を参照する

Inventory デバイス (bootstrap を実行して Inventory に登録されたデバイスのこと) の情報を、SORACOM ユーザーコンソールで確認できます。

  1. Inventory のデバイス管理画面で Inventory デバイスにチェックを入れて、[詳細] をクリックします。

    Inventory デバイスのデバイス詳細画面が表示されます。この画面で、Inventory デバイスをリモート管理できます。

ステップ 3: デバイスの情報を Harvest Data に保存する

Inventory で Observe した値がデバイスで変化したときに、Harvest Data に保存することもできます。たとえば、位置情報を Observe して Harvest Data に保存しておけば、任意のタイミングで位置情報の変化を確認できます。

また、Beam、Funk、Funnel を使用することで、お客様のサーバーやクラウドサービスにデータを送信できます。

ここでは、LatitudeLongitude を Observe して Harvest Data にデータを保存するように設定し、データの変化を確認します。

soracom-inventory-agent-example-start では、疑似的な位置情報として、定期的に LatitudeLongitude の値をインクリメントしています。

デバイス ID とシークレットキーを利用して Harvest Data にデータを送信することもできます

デバイスで値が変化したときに限らず、任意のタイミングで Harvest Data にデータを送信することもできます。詳しくは、Inventory デバイスから SORACOM Harvest Data にデータを送信する を参照してください。

Inventory デバイスで Harvest Data を有効化する

Inventory デバイスで Harvest Data を利用するには、グループ を作成し、グループの Harvest Data 設定を有効化して、そのグループに Inventory デバイスを所属させます。

SORACOM Harvest Data の設定はグループに対して行います

ここでは、グループの設定を変更する操作のみを説明します。グループの仕組みやグループを作成する操作について詳しくは、グループ設定 を参照してください。

  1. デバイスグループ画面の [SORACOM Harvest Data 設定] のスイッチをクリックして「ON」にします。

    デバイスグループ画面を表示する操作について詳しくは、グループの設定を変更する を参照してください。

  2. [保存] をクリックします。

    確認画面が表示されます。

  3. [OK] をクリックします。

  4. Inventory デバイスが所属するグループを切り替えます。

    Observe したデータが Harvest Data に保存されるようになります。

デバイスのデータを Observe する

デバイスが通知できるデータの中から、デバイスの疑似的な位置情報 (LatitudeLongitude) を Observe します。Observe した値に変化があると、Harvest Data に保存されます。

Observe を継続していると料金が発生します

Inventory ではデバイスの登録費用に加え、月に 1 回でも オンライン になった Inventory デバイスは月額費用が発生します。また、デバイス登録/Read/Write/Observe/Execute のメッセージ数に応じて料金が発生します。詳しくは、SORACOM Inventory のご利用料金 を参照してください。

  1. デバイスでエージェント (soracom-inventory-agent-example-start) が実行中であることを確認します。

  2. ユーザーコンソールで、Inventory デバイスのデバイス詳細画面を表示します。

  3. [Latitude] (/6/0/0) の右側に表示されている [Observe icon] と、[Longitude] (/6/0/1) の右側に表示されている [Observe icon] をクリックします。

    Observe が開始され、デバイスの疑似的な維持情報が更新されます。

    [Unobserve icon] をクリックすると、Observe が停止します。

Harvest Data でデータを確認する

  1. Inventory のデバイス管理画面で Inventory デバイスにチェックを入れて、[操作][データを確認] の順にクリックします。

    SORACOM Harvest Data 画面が表示されます。

  2. [] をクリックします。

    Harvest Data に保存された位置情報が表示されます。

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

ここでは Raspberry Pi 向けの Linux ディストリビューション Raspberry Pi OS を例に Linux 向けサンプルエージェント (C クライアント) のインストールと、デバイス登録の手順を説明します。

SORACOM では、Eclipse Wakaama のクライアントをインストールとデバイスの登録を簡単にするために、スクリプト build_wakaama.sh を用意しています。

他のディストリビューションではコマンドが異なる場合があります。

  1. Raspberry Pi で以下のコマンドを実行して、スクリプトをダウンロードし、Eclipse Wakaama をビルドして、インストールします。

    $ curl soracom-files.s3.amazonaws.com/build_wakaama.sh | bash
    $ sudo cp inventory/build/lwm2mclient /usr/local/bin
    
  2. Raspberry Pi が SORACOM に接続できていることを PING 応答サービス で確認します。

    Raspberry Pi で SORACOM に接続するには、Air for セルラー の IoT SIM と Soracom Onyx - LTE™ USB ドングル を組み合わせて利用したり、Arc を利用したりします。

  3. bootstrap を実行して Inventory にデバイスを登録します。

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

    デバイス ID (d-xxxxxxxxxxxxxxxxxxxxx) が払い出され、Inventory にデバイスが登録されます。登録されたデバイスのことを「Inventory デバイス」と呼びます。

    • lwm2mclient が実行されている間は、ユーザーコンソールで オンライン と表示されます。
    • lwm2mclient を終了すると オフライン と表示されます。
    -n の後に指定した文字列は ID として扱われます

    -n の後に指定した文字列 (endpoint 名) もデバイスを識別する ID です。そのため、別デバイスの bootstrap を実行する際、同一の endpoint 名を指定すると、Inventory に登録済みのデバイスとみなされます。

    デバイスが異なる場合は、-n の後には既存のデバイスと異なる文字列を指定してください。

    払い出されたデバイス ID は SORACOM ユーザーコンソールで確認します

    払い出されたデバイス ID は、コマンドの実行結果としては表示されません。SORACOM ユーザーコンソールで確認してください。

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

  4. ユーザーコンソール にログインし、Raspberry Pi で利用した IoT SIM のカバレッジタイプを選択します。

    たとえば、Raspberry Pi で plan01s の IoT SIM を利用して Inventory にデバイスを登録した場合は、グローバルカバレッジの表示に変更します。詳しくは、SORACOM ユーザーコンソールで表示するカバレッジタイプを変更する を参照してください。

  5. [メニュー][SORACOM INVENTORY][デバイス管理] の順にクリックします。

    Inventory のデバイス管理画面が表示され、デバイス ID (d-xxxxxxxxxxxxxxxxxxxxx) が表示されます。

うまく登録できていない場合には、lwm2mclient のコマンドオプションや、SORACOM への接続状況を確認してください。