OMA Lightweight M2M IoT Agent : 管理ガイド

目次

前提条件

IoT Agent は、Node.js 0.10.xが動作するように要求し、NPM をパッケージ・マネージャとして使用します。ほとんどの Linux ディストリビューションは、それをインストールするためのパッケージを提供します。他の OS については、ここに Node.js をインストールする方法があります。

注 : 現在のバージョンの Node.js、0.12.x はエージェントでテストされていないため、以前のバージョンをダウンロードして使用することをお勧めします。このプロセスは、n または nvm でユーティリティで可能です。

インストール

Github リポジトリのクローニング

リポジトリがクローンされると、プロジェクトのルートフォルダから次のコマンドが実行されます :

npm install
これにより、プロジェクトの依存関係がダウンロードされ、実行準備が整います。

RPM の使用

RPM の生成方法については、"Packaging"の指示に従ってください。

RPM をインストールするには、YUM ツールを使用します :

yum localinstall --nogpg <rpm-file>

Docker を使用

Docker HuB に公開されている IoTAgent の開発版の自動ビルドがあります。Docker バージョンを使用してインストールするには、次のコマンドを実行してください :

docker run --link orion:orion telefonicaiot/lightweightm2m-iotagent
ご覧のように、他の IoT Agent と同様に、Lightweight M2M では Context Broker が動作する必要があります。リンクするには、例のように --link オプションを使用してください。

使用方法

Github からの インストール

IoT Agent を実行するには、クローンされたプロジェクトのルートフォルダから次のコマンドを発行します :

bin/lwm2mAgent.js [config file]
設定ファイルのオプションの名前はオプションで、次のセクションで説明します。

RPM のインストール

RPM は、典型的な手順で管理できる Linux サービスをインストールします

service iotagent-lwm2m start

service iotagent-lwm2m status

service iotagent-lwm2m stop

このモードでは、ログは、/var/log/iotagent-lwm2m/iotagent-lwm2m.log に書き込まれます。

設定

IoT Agent に設定セットを提供するには、2つの方法があります : プロジェクトのルートフォルダに関連する設定ファイルの名前を渡すか、config.js の例をカスタマイズします。

設定ファイルは、2つのセクションに分かれています : 1つは NGSI ノース・バウンド ngsi の標準セクションで、もう1つは Lightweight M2M サウス・バウンド lwm2m です。前者は、ここで説明する Node.js IoT Agent フレームワークで説明したのと同じフォーマットに従います。

後者は、ここで説明するように、デバイスとの通信に使用する Lightweight M2M ライブラリを設定します(serverセクション)。

これらは、エージェント用に構成できる特定の LWM2M パラメータです :

  • logLevel : IoT Agent 固有情報のログのレベル。例 : 'DEBUG'
  • port : IoT Agent がリスニングする UDP ポート。例 : 60001
  • delayedObservationTimeout : LWM2M クライアントがアクティブ属性を持つ場合、IoT Agent は、クライアントが登録した直後に、それぞれのオブザーバ命令を送信します。これは、観測リクエストがその運命に到達しない可能性があるため、クライアントがリッスンを開始するには時間がかかりすぎるとエラーを引き起こす可能性があります。このタイムアウト(ミリ秒)は、サーバがリクエストを送信する前にリスナーを作成する機会をクライアントに与えるために使用されます。
  • defaultType : デバイスにタイプを割り当てることができない場合(タイプの事前プロビジョニングやパスの割り当てなし)、このタイプはデフォルトで割り当てられます。例 : 'Device'
  • types : 複数のサウス・バウンド・パスを持つ IoT Agent の場合、このアトリビュートは、設定ファイルまたは Device Configuration API を使用して定義されたアトリビュートタイプをサウス・バウンド・インターフェイスにマッピングします。例えば :
            {
                name: 'Light',
                url: '/light'
            },
            {
                name: 'Pressure',
                url: '/pres'
            },
            {
                name: 'Arduino',
                url: '/arduino'
            }

パッケージング

許可される唯一のパッケージタイプは RPM です。パッケージングのスクリプトを実行するには、システムで RPM ビルドツールを使用可能にする必要があります。

プロジェクトのルートフォルダから、次のコマンドを使用して RPM を作成します :

cd rpm
./create-rpm.sh <release-number> <version-number>
ここでの、<version-number>はパッケージに必要なバージョン(x.y.z) で、<release-number>は以前のインストールに依存して増加する番号です。

健全性チェック

健全性チェック手順は、システム管理者がインストールのテスト準備が整ったことを確認するための手順です。したがって、単体テスト、統合テスト、ユーザ検証に進む前に、明白なまたは基本的な誤動作が修正されていることを保証するための予備テストセットです

管理インターフェイスの起動状態をチェック

IoTAgent が実行されているかどうかを確認するために実行できる最初の手順は、管理インターフェイスからバージョンを取得することです。これを行うには curl コマンドを使うことができます :

curl -v http://<server_ip>:4041/iot/about
この実行の結果は、実行されている IoT Agent ライブラリのバージョンとともに 200 OK の戻りコードでなければなりません :

HTTP/1.1 200 OK
X-Powered-By: Express
Content-Type: application/json; charset=utf-8
Content-Length: 46
ETag: W/"2e-d494dc75"
Date: Fri, 25 Sep 2015 08:14:45 GMT
Connection: keep-alive

{"version":"0.8.1","port":4041,"baseRoot":"/"}

実行中のプロセスのリスト

エージェントは単一の node.js プロセスを起動し、bin/lwm2mAgent.js スクリプトを実行します。実行中のプロセスの例を次に示します :

root       732 31786  8 10:14 pts/0    00:00:00 node bin/lwm2mAgent.js
プロセスがサービスとして実行されている場合は、/opt/iotagent-lwm2m/iotagent-lwm2m.pid ファイル内で PID 番号を見つけることができます。

データベース

Lightweight M2M は、選択された設定に応じて、テスト用イン・メモリ・データベース または MongoDB で動作します。ホスト、ポート、およびデータベース名は、設定ファイルでも設定されます。 詳細については、設定のセクションを確認してください。ノース・バウンドとサウス・バウンドの両方が DB を使用し、その設定が異なる可能性があることに注意してください。

ネットワークインターフェース の アップ&オープン

Linux マシンで netstat を使用すると、ポートを確認できます。 IoT Agent は、管理ポートとプロビジョニングポート (通常: TCP 4041)と Lightweight M2M ポート (通常: 60001) の2つのポートで待機する必要があります。

管理ポートは、次のコマンドで確認できます :

netstat -ntpl | grep 4041

結果は次のような1行になります :

tcp        0      0 0.0.0.0:4041                0.0.0.0:*                   LISTEN      <PID>/node            
ここでの、<PID> は、IoT Agent の PID に対応します。

Lightweight M2M ポートは、次のコマンドで確認できます :

netstat -nupl | grep 60001

期待される結果は次のような行になります :

udp        0      0 0.0.0.0:60001               0.0.0.0:*                               589/node
ここでの、<PID> は、IoT Agent の PID に対応します。

サービスの起動をチェック

サービスが動作しているかどうかを確認する簡単な方法は、serrvice コマンドの status を使用することです。次のように実行します :

service iotagent-lwm2m status
IoT Agent サービスが稼働しているかどうかを返します。これは PID チェックに基づく簡単な方法であり、実際の作業エージェントをチェックするのではなく、プロセスの存在のみを確認することに注意してください。管理インターフェースのクエリは、常により強力なチェックです。

エンド・ツー・エンドのテスト

単純な LWM2M チェックを行うには、LWM2M クライアントをインストールする必要があります。最善の方法は、IoT Agent が使用する同じライブラリ、Node.js LWM2M Library のクライアントをインストールすることです。このライブラリには、シンプルなシナリオをテストするための簡単なコマンドライン Lightweight M2M Client が含まれています。この種のテストを実行する方法の例については、ユーザ・マニュアルの"はじめに"のセクションの簡単な登録と測定値の送信テストを参照してください。

診断手順

IoT Agent で問題が発生した場合、または健全性チェックが失敗した場合は、管理者はログファイルを調べて、発生した問題の種類を確認する必要があります。RPM を使用して IoT Agent がデプロイされている場合、ログは /var/log/iotagent-lwm2m フォルダに格納されます。IoT Agent がコマンドラインから起動されている場合、ログは標準出力に書き込まれます。ログをデバッグしようとするときは、まず設定セクションで説明されているようにログレベルを変更します。IoT Agent のノース・バウンドとサウス・バウンドには異なるログレベルがあり、それぞれ独立して設定できることに注意してください。

リソースの可用性

DevOpsによってすぐに埋められるようにします

リモートサービス・アクセス

公開されている API の詳細については、ユーザ・マニュアルを参照してください。

リソース消費

DevOps によってすぐに埋められるようにします

I/Oフロー

Lightweight M2M IoT Agent は、Node.js IoT Agent ライブラリに示されているエージェントの 標準 I/Oフロー に従います。分かりやすくするために、ここにフローを再現します :

General

サウス・バウンドの相互作用は、OMA Lightweight M2M Specification 仕様で定義されているフローに従います。