1.1.6. Node-REDに関連する設定

Node-RED利用時に関連するその他設定項目について説明します。

1.1.6.1. core_config.json

Node-REDの有効化・無効化を切り替える場合に設定変更を行います。 {ICE_HOME}/core/conf ディレクトリに配置されています。

nodered.enabled
Node-REDの有効・無効を指定します。falseにするとNode-REDのインスタンスは起動しません。 既定値はtrueです。
nodered.config_file
Node-REDの設定ファイルのパスを指定します。既定では {ICE_HOME}/core/conf/nodered_settings.js が設定されます。{ICE_HOME}/core ディレクトリからの相対パス、または絶対パスで設定してください。

cloud_config.jsonでAWS IoTの接続先情報を作成する場合、core_config.jsonのaws.iotにAWS IoTクライアントの設定を定義しておく必要があります。

{

    ...

  },
  "aws": {
    "iot": {
      "awsConfigName": {
        "endpoint": "xxx.iot.xxx.amazonaws.com",
        "port": 8883,
        "clientType": "thing",
        "thingName": "hoge",
        "thingOptions": {
          "operationTimeout": 10
        },
        "registerOptions": {
          "ignoreDeltas": false
        },
        "clientId": "";
        "caPath": "",
        "certPath": "",
        "keyPath": ""
        "deviceOptions": {
          "keepalive": 300
        }
      }
    }
  }
}

thingOptions、registerOptions、deviceOptionsに指定可能な値は、https://github.com/aws/aws-iot-device-sdk-js#thingShadow を参照してください。

1.1.6.2. cloud_config.json

エッジサーバの接続先を変更する場合に定義の追加が必要です。 {ICE_HOME}/core/conf ディレクトリに配置されています。

cloud_config.json を参照して接続先設定を定義してください。

Nebula API Gatewayと接続する場合のcloud_config.jsonの設定例:

{
  "adm": {
    ...
  },
  "ma": {
    ...
  },
  "app": {
    ...
  },
  "http_outbound": {
    "type": "http",
    "config": {
      "url": "https://www.example.com/api/1/5899242bf24c3e45dcd79014/api/amqp/publish/my-queue",
      "method": "POST",
      "ca": "cacert.pem",
      "cert": "client.cert",
      "key": "client.key",
      "auth_method": "nebula",
      "auth_param": {
        "login_url": "https://www.example.com/api/1/5899242bf24c3e45dcd79014/login",
        "login_username": "foo",
        "login_password": "Passw0rD"
      },
      "options": {
        "headers": {
          "Content-Type": "application/json",
          "X-Application-Id": "58992489f24c3e45dcd79018",
          "X-Application-Key": "tiRUtXrUfiWkvAvbQSRXocovHgfK0SrcBfl6QLG8"
        }
      }
    }
  },
  "http_inbound": {
    "type": "http",
    "config": {
      "url": "https://www.example.com/api/1/5899242bf24c3e45dcd79014/api/amqp/consume/my-queue",
      "method": "GET",
      "ca": "cacert.pem",
      "cert": "client.cert",
      "key": "client.key",
      "auth_method": "nebula",
      "auth_param": {
        "login_url": "https://www.example.com/api/1/5899242bf24c3e45dcd79014/login",
        "login_email": "foo@example.com",
        "login_password": "Passw0rD"
      },
      "options": {
        "headers": {
          "Content-Type": "application/json",
          "X-Application-Id": "58992489f24c3e45dcd79018",
          "X-Application-Key": "tiRUtXrUfiWkvAvbQSRXocovHgfK0SrcBfl6QLG8"
        }
      }
    }
  }
}

AWS IoTと接続する場合のcloud_config.jsonの設定例:

{
  "adm": {
    ...
  },
  "ma": {
    ...
  },
  "app": {
    ...
  },
  "aws_outbound": {
    "type": "aws_iot",
    "config": {
      "topicName": "topic",
      "qos": 1,
      "method": "publish",
      "onlyPayload": true,
      "configName": "awsConfigName"
    }
  },
  "aws_inbound": {
    "type": "aws_iot",
    "config": {
      "topicName": "topic",
      "qos": 1,
      "event": "message",
      "configName": "awsConfigName"
    }
  }
}

config.configNameでは、core_config.jsonで定義しているAWS IoTの接続設定名を指定します。

1.1.6.3. デバイス/エッジアプリケーションのプロファイル

ice device outice app outからアクチュエーションメッセージを送信するために、プロファイルの設定が必要です。プロファイルについては、 ICE Data Delivery C API を参照してください。

ice device outice app outと通信したいデバイス・エッジアプリケーションのプロファイルには、actuation_keyを必ず記載してください。actuation_keyが無い場合はactuation_keyを用いたメッセージ送信ができません。

デバイスプロファイルの設定例を以下に記載します。

"Vendor": "デバイスの開発会社",
"Product": "デバイスの製品名",
"ModelNo": "デバイスの型番",
"ProductNo": "デバイスの製品番号",
"SerialNo": "デバイスの製造番号",
"data_type": "デバイスが送信するデータのタイプ",
"actuation_key": "Node-REDからデバイスを識別するためのキーの配列"

actuation_keyは以下のように複数指定可能です。

"actuation_key": ["thermometer","hygrometer","accelerometer"]

1.1.6.4. ログ設定

Node-REDのカスタムロギングモジュールの機能を利用し、ICE CoreのロガーからNode-REDのログ出力を行います。
nodered_settings.js のlogging.iceLoggerがNode-RED側の設定となっており、ここでログレベルの変更が可能です。

ログ出力先やログローテートの設定はICE Coreのcore_logger.jsonで行います。 既定では以下のように設定されています。

"NODE-RED": {
    "type": "file",
    "filename": "/var/log/ice/node-red.log",
    "maxLogSize":102400,
    "backups":3
},