インストール&管理ガイド¶
構成¶
IoT Agent を起動する activate()
関数は、IoT Agent の設定を持つ単一のパラメータとして受け取ります。エージェント・コンソールは、config.js
ファイルから同じ設定を読み取ります。
グローバル・コンフィグレーション¶
これらは、グローバル・セクションで設定できるパラメータです :
- logLevel : ログする最小ログレベル。 DEBUG, INFO, ERROR, FATAL のいずれかの値をとります。例 : 'DEBUG'
- contextBroker : Context Broker (ホストとポート) への接続データ。例えば :
{
host: '192.168.56.101',
port: '1026'
}
- アクティブな属性の更新を送信するだけで、NGSIv2 を使用する場合は :
{
host: '192.168.56.101',
port: '1026',
ngsiVersion: 'v2'
}
- server : コンテキスト・サーバ (IoT Agent がコンテキスト・プロバイダとしてリッスンするポートと、すべてのパスのプレフィックスとなるベースルート) を作成するために使用される設定。
port
属性は必須です。baseRoot
属性を使用しない場合、デフォルトで '/' が使用されます。例えば :
{
baseRoot: '/',
port: 4041
}
- stats : 定期的な統計情報の収集を設定します。統計情報の書込みの間隔を設定するには、ミリ秒単位の
interval
を使用します。
stats: {
interval: 100
}
- authentication : Context Brokerでセキュリティが有効になっているシナリオで、必要な信頼トークンを持つデバイスのトークンを取得するための認証データ。現在、2つの認証プロバイダ、
keystone
とoauth2
がサポートされています。フィールドenabled
をtrue
に設定することで、認証を有効にする必要があります。keystone
に基づく認証では、device
またはdeviceGroup
に関連する信頼は、特定のユーザおよび所与のドメイン (すなわち、fiware-service
およびfiware-servicepath
の組み合わせ) に対するユーザの権利を表すトークンです。認証プロセスでは、信頼委任ワーク・フローを使用して、提供された信頼が有効かどうかをチェックします。この場合、Context Broker へのリクエストを認証するために使用できるx-subject-token
が返されます。必必要なパラメータは、host
とport
の代わりに使用されるキーストーンのurl
ですが、この組み合わせを使用する場合、IoT Agent はプロトコルが HTTP であるとみなします。user
とpassword
には、信頼確認が委任されます。 例えば :
{
enabled: true,
url: 'https://localhost:5000',
type: 'keystone',
user: 'iotagent',
password: 'iotagent'
}
oauth2
ベースの認証では、device
または deviceGroup
に関連付けられた trust
は、Context Broker クライアントの特定のユーザによって発行された refresh_token
です。認証プロセスでは、refresh_token
grant type を使用して、Context Broker へのリクエストを認証するために使用できる access_token
を取得します。当面は、refresh_token
は、期限切れの offline_token' ではないという前提があります。リフレッシュ・トークンの追加により通信が遅くなる可能性があるため、IoT デバイスの場合、これが最善の解決策であると信じています。 それでも、トークンに接続されたセキュリティ問題がある場合、開発者はプロバイダ側のリフレッシュ・トークンを無効にすることができます。コードは [Keycloak](http://www.keycloak.org) と [Auth0](https://auth0.com) を使用してテストされました。OAuth2 は標準ですが、すべての実装が同じように動作するわけではないので、特にステータス・コードやエラー・メッセージについては、他のプロバイダのためにカスタマイズが必要な場合もあります。必須パラメータは、使用する OAuth 2 プロバイダの
url(代わりに
hostと
portを使用しますが、この組み合わせを使用する場合、IoT Agent はプロトコルが HTTP であるとみなします)、検証リクエストを送信する
tokenPath、Context Broker を識別する
clientIdおよび
clientSecret、および認証リクエストを送信するために使用するヘッダ・フィールドです。
Authorization: Bearer
{
enabled: true,
type: 'oauth2',
url: 'http://localhost:3000',
header: 'Authorization',
clientId: 'context-broker',
clientSecret: 'c8d58d16-0a42-400e-9765-f32e154a5a9e',
tokenPath: '/auth/realms/default/protocol/openid-connect/token'
}
- deviceRegistry : 作成するデバイス・レジストリのタイプ。現在、
memory
とmongodb
の2つの値がサポートされています。前者が設定されている場合は、一時的なメモリベースのデバイス・レジストリが使用され、すべてのデバイスが登録されます。このレジストリは、プロセスが再起動されるたびに空になります。後者を選択すると、MongoDB データベースがすべてのデバイス情報を格納するために使用されるため、ある実行から他の実行に永続化されます。後述するmongodb
セクションで Mongodb データベースを設定する必要があります。例えば :
{
type: 'mongodb'
}
- mongodb :
mongodb
タイプのリポジトリ用に MongoDB ドライバを設定します。host
パラメータがカンマで区切られた IP のリストである場合、それらはレプリカセットの一部であるとみなされます。その場合、オプションのプロパティreplicaSet
にはレプリカ・セット名を含める必要があります。属性が存在する場合、MongoDB ドライバは起動時に接続をretries' 回、リトライし、リトライ間に
retryTime` 秒、待機します。デフォルト値はそれぞれ 5と 5です。例えば :
{
host: 'localhost',
port: '27017',
db: 'iotagent',
retries: 5,
retryTime: 5
}
- iotManager : IoT Agent を IoTManager に登録するために必要なすべての情報を設定します。このセクションが存在する場合、IoTA は 指定された
host
,port
およびpath
の IoTAM に、オブジェクトに設定された情報を登録しようとします。報告される IoTAgent の URL は、追加されたagentPath
とともに以下に説明されるprovidedUrl
になります :
{
host: 'mockediotam.com',
port: 9876,
path: '/protocols',
protocol: 'GENERIC_PROTOCOL',
description: 'A generic protocol',
agentPath: '/iot'
}
- types : 下記の Configuration API セクションの Type Configuration を参照してください
- eventType : イベントのデフォルト・タイプ。
addEvents
プラグインでのみ有効。 - service : IoT Agent のデフォルトのサービス。デバイスが登録されており、デバイス情報とともにサービス情報が提供されておらず、特定のタイプのサービス情報が設定されていない場合は、代わりにデフォルトのIoT Agent サービスが使用されます。例: 'smartGondor'
- subservice : IoT Agent のデフォルトのサブ・サービス。デバイスが登録されていて、デバイス・データにサブ・サービス情報がなく、指定されたタイプのサブ・サービス情報が設定されていない場合は、代わりにデフォルトの IoT Agent サブ・サービスが使用されます。例 : '/gardens'
- providerUrl : コンテキスト・プロバイダのレジストレーションのリクエストで送信する URL。展開された IoT Agent (Context Broker が NGSI リクエストをリダイレクトする IP) の外部 IP を表す必要があります。例 : 'http://192.168.56.1:4041'
- deviceRegistrationDuration : ISO 8601 標準フォーマットでの、コンテキスト・プロバイダとしてのレジストレーション期間。例 : 'P1M'
- iotaVersion : about メソッドで表示される IoTA のバージョンを示します。各 IoTA によって自動的に入力される必要があります
- appendMode : このフラグが有効になっている場合、Context Broker への更新リクエストは、デフォルトの UPDATE ではなく APPEND 型で常に実行されます。これは、コンテキスト・プロバイダでの属性の使用に影響を与えるため、このフラグは慎重に使用する必要があります
- dieOnUnexpectedError : このフラグが有効になっていると、IoTAgent はグローバル例外を捕捉せず、予期しないエラーが発生しなくなります
- singleConfigurationMode : 下位互換性のためにシングル設定モードを有効にします。概要の説明を参照してください。デフォルトは false です。
- timestamp : このフラグが有効になっている場合、IoT Agent はデバイス情報から更新されたすべての属性に 'TimeInstant' メタデータ属性を追加します
- defaultResource : リソースが指定されていない場合、新しい設定のレジストレーション用のリソースとして使用するデフォルトの文字列
- defaultKey : 特定の設定に属していないデバイスの API キーとして使用するデフォルト文字列
- componentName : このIoT Agent のコンポーネント名をログに記録するデフォルトの文字列
- pollingExpiration : ミリ秒単位でポーリング・キューで待機しているコマンドの有効期限。コマンドがデバイスによって収集されずにこの時間の間待ち行列に入った場合、有効期限デーモンはそれを再リクエストします。この属性は省略可能です。存在しない場合、コマンドは期限切れになりません。
- pollingDaemonFrequency : 期限切れコマンドの収集間隔。ミリ秒単位。この属性はオプションです。このパラメータが存在しない場合、ポーリング・デーモンは開始されません。
- autocast : 有効にすると、IoT Agent は JSON ネイティブタイプの NGSIv2 のみ)を考慮して属性値をキャストしようとします
環境変数を使用した設定¶
Docker、Heroku などのコンテナ・ベースのテクノロジでこれらのパラメータを簡単に使用できるように、環境変数で設定パラメータの一部を上書きすることができます。
次の表は、受け入れられた環境変数と、変数が上書きする設定パラメータを示しています。
環境変数 | 設定属性 |
---|---|
IOTA_CB_URL | contextBroker.url |
IOTA_CB_HOST | contextBroker.host |
IOTA_CB_PORT | contextBroker.port |
IOTA_CB_NGSI_VERSION | contextBroker.ngsiVersion |
IOTA_NORTH_HOST | server.host |
IOTA_NORTH_PORT | server.port |
IOTA_PROVIDER_URL | providerUrl |
IOTA_REGISTRY_TYPE | deviceRegistry.type |
IOTA_LOG_LEVEL | logLevel |
IOTA_TIMESTAMP | timestamp |
IOTA_IOTAM_URL | iotManager.url |
IOTA_IOTAM_HOST | iotManager.host |
IOTA_IOTAM_PORT | iotManager.port |
IOTA_IOTAM_PATH | iotManager.path |
IOTA_IOTAM_AGENTPATH | iotManager.agentPath |
IOTA_IOTAM_PROTOCOL | iotManager.protocol |
IOTA_IOTAM_DESCRIPTION | iotManager.description |
IOTA_MONGO_HOST | mongodb.host |
IOTA_MONGO_PORT | mongodb.port |
IOTA_MONGO_DB | mongodb.db |
IOTA_MONGO_REPLICASET | mongodb.replicaSet |
IOTA_MONGO_RETRIES | mongodb.retries |
IOTA_MONGO_RETRY_TIME | mongodb.retryTime |
IOTA_SINGLE_MODE | singleConfigurationMode |
IOTA_APPEND_MODE | appendMode |
IOTA_POLLING_EXPIRATION | pollingExpiration |
IOTA_POLLING_DAEMON_FREQ | pollingDaemonFrequency |
IOTA_AUTOCAST | autocast |