設定プロビジョニング・ガイド

目次

概要

このガイドでは、設定プロビジョニングで IoT Agent を使用するプロセスを示します。このユースケースでは、デバイスの所有者は、それぞれを接続する前に、同じタイプのすべてのデバイス間で共有されるデバイス設定をプロビジョニングします。デバイスを区別するために使用される情報は、resource と API Key です。

このガイドでは、Lightweight M2M クライアントを使用してデバイスとのやりとりをシミュレートします。必要に応じて、このクライアントのインストールと使用について説明します。

このガイドでは、OMAレジストリの自動マッピングを使用して、"はじめに" のセクションで定義した WeatherBaloon の例を使用します。したがって、属性は名前によって排他的に定義され、/387/3/23 のような完全な LWM2M マッピングとのマッピングは IoT Agent によって実行されます。

インストール

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

エージェントをインストールするには、まず Github リポジトリをクローンします :

git clone https://github.com/telefonicaid/lightweightm2m-iotagent.git
リポジトリがクローニングされたら、プロジェクトのルートフォルダから次のコマンドを実行して依存関係をダウンロードします :
npm install

クライアントのインストール

クライアントをインストールするには、次の Github リポジトリをクローンします :

git clone https://github.com/telefonicaid/lwm2m-node-lib.git
プロジェクトのルートフォルダから依存関係をダウンロードして実行します :
npm install

設定

リポジトリに付属するデフォルトの config.js ファイルのほとんどは、このガイドのニーズを満たしますが、調整する必要のある、2つ属性があります :

  • config.ngsi.contextBroker.host : IoT Agentで使用する ContextBroker のホスト IP
  • config.ngsi.providerUrl : IoT Agent が ContextProvider リクエストをリスンする URL。通常、これは利用しているマシンの IP とデフォルトポートですが、外部 context broker または 仮想マシンにデプロイされている context broker を使用している場合は、異なる場合があります

少なくともログレベルを DEBUG に変更する必要があります。他のレベルでは、実行時の状況に関する情報は表示されません。

使用方法

エージェントを起動

エージェントを開始するには、リポジトリのルートフォルダから次のように入力します :

bin/lwm2mAgent.js
フォアグラウンドで IoT Agent が実行されるので、何が起きているのかのログを見ることができます。

エージェントがまだ開いている状態で、他の端末でクライアントを開き、クライアントのルートフォルダから次のコマンドを入力します :

bin/iotagent-lwm2m-client.js

設定のプロビジョニング

任意のデバイスを使用する前に、デバイス設定を作成する必要があります。このステップでは、WeatherBaloon タイプのすべてのデバイスの設定を作成します。 設定の作成要求を送るには、Unix ライクな OS にインストールされている curl コマンドを使用します。

このリクエストは、Lightweight M2M ポートではなく、IoT Agent の管理ポート (デフォルト値 4041) に送信する必要があります。

次のリクエストは、WeatherBaloon タイプでデバイスの設定グループを作成します :

(curl localhost:4041/iot/services -s -S --header 'Content-Type: application/json' \
  --header 'Accept: application/json' --header 'fiware-service: Weather' --header 'fiware-servicepath: /baloons' \
  -d @- | python -mjson.tool) <<EOF
{
  "services": [
    {
      "resource": "/weatherBaloon",
      "apikey": "",
      "type": "WeatherBaloon",
      "commands": [],
      "lazy": [
        {
          "name": "Longitude",
          "type": "double"
        },
        {
          "name": "Latitude",
          "type": "double"
        },
        {
          "name": "Temperature Sensor",
          "type": "degrees"
        }
      ],
      "attributes": [
        {
          "name": "Power Control",
          "type": "Boolean"
        }
      ]
    }
  ]
}
EOF

デバイスの使用

デバイスを使用するには、クライアントが起動している端末に変更します。

クライアントでのオブジェクトの作成

LWM2M サーバに接続する前にまず行うべきことは、クライアントが提供するオブジェクトを作成することです。このステップを他の前に(特に登録前に) 実行する理由は、クライアントの登録中に、使用可能なすべてのオブジェクトのリストをサーバに送信するので、サーバはクライアントによって設定されたリソースをアクティブとしてサブスクライブすることができます。

クライアントコンソールから、次のコマンドを入力します :

LWM2M-Client> create /6/0
LWM2M-Client> create /3303/0
LWM2M-Client> create /3312/0
オブジェクトが作成されたら、各属性のデフォルト値を指定します :

  • 経度属性 :
    LWM2M-Client> set /6/0 0 12
  • 緯度属性 :
    LWM2M-Client> set /6/0 1 -4
  • 温度属性 :
    LWM2M-Client> set /3303/0 0 23
  • パワー属性 :
    LWM2M-Client> set /3312/0 0 On

サーバへの接続

すべてのオブジェクトがデバイスに作成されたら、次のコマンドを使用してサーバに接続します :

LWM2M-Client> connect localhost 5684 weather1 /weatherBaloon
このコマンドに関するいくつかの注意事項 :

  • まず、使用されるエンドポイント名 weather1 は、使用可能な ID になります。デバイスのタイプとその機能は、デバイス ID に基づいて決定されるのではなく、アクセスしているリソースに基づいて決定されます
  • URL は /weatherBaloon で、前の手順での設定プロビジョニングで使用したのと同じものです

次の情報をクライアントのコンソールに表示する必要があります :

Connected:
--------------------------------
Device location: rd/2
これは、サーバが接続要求を受け入れ、クライアントの要求に rd/2 の場所を割り当てたことを示します。この正確な場所は、デバイスによって異なる場合があります。 すべてのデバイスに固有の場所があります。

サーバを DEBUG モードで構成した場合は、標準出力を調べて、クライアント登録で何が起きたかを確認します。

Context Broker でエンティティを見ることができるはずです。次のコマンドを使用して、遅延属性のいずれかをクエリすることができます

(curl http://192.168.56.101:1026/v1/queryContext -s -S --header 'Content-Type: application/json' \
 --header 'Accept: application/json' --header 'fiware-service: Weather' --header 'fiware-servicepath: /baloons' \
 -d @- | python -mjson.tool) <<EOF
{
    "entities": [
        {
            "type": "WeatherBaloon",
            "isPattern": "false",
            "id": "weather1:WeatherBaloon"
        }
    ],
    "attributes" : [
        "Latitude"
    ]    
}
EOF
Context Broker へのリクエストのヘッダは、構成プロビジョニングで使用したものと一致する必要があります。