インストール&管理ガイド

構成

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つの認証プロバイダ、keystoneoauth2 がサポートされています。フィールド enabledtrueに設定することで、認証を有効にする必要があります。keystone に基づく認証では、device または deviceGroup に関連する信頼は、特定のユーザおよび所与のドメイン (すなわち、fiware-service および fiware-servicepath の組み合わせ) に対するユーザの権利を表すトークンです。認証プロセスでは、信頼委任ワーク・フローを使用して、提供された信頼が有効かどうかをチェックします。この場合、Context Broker へのリクエストを認証するために使用できる x-subject-token が返されます。必必要なパラメータは、hostport の代わりに使用されるキーストーンの url ですが、この組み合わせを使用する場合、IoT Agent はプロトコルが HTTP であるとみなします。userpassword には、信頼確認が委任されます。 例えば :
    {
          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(代わりにhostportを使用しますが、この組み合わせを使用する場合、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 : 作成するデバイス・レジストリのタイプ。現在、memorymongodb の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