2.4. Event Exchange Platform接続用ノード

Event Exchange Platform (EEP)とイベントの送受信を行うためのノードです。 各ノードの設定項目等の詳細は後述のリファレンスを参照してください。

  • eep out

    EEPへのイベント送信機能を持つノードです。

  • eep in

    EEPからのアクチュエーション指示取得機能を持つノードです。

  • eep get

    EEPからの現在のDevice Phantomの取得機能を持つノードです。

  • eep-config

    他のノードから参照される接続設定ノードです。 HTTP及びMQTTによる接続をサポートします。

2.4.1. eep out

2.4.1.1. 設定項目

eep outには以下の設定項目があります。

Destination
EEPとの接続設定をeep-configノードで設定します。
Device Type
Device Phantomを格納するDevice Typeを設定します。
Device ID
論理的にデバイスを識別するIDであるDevice IDを指定します。 指定されたキー値でDevice Phantomを格納します。 省略された場合Desitinationに設定されたClient IDの値が使用されます。
Name
ノードの名称を設定することができます。

2.4.1.2. メッセージ構造

2.4.1.2.1. 入力メッセージ

eep outノードでは以下の形式のメッセージを受け付けます。

{
    "payload": {
        // Device Phantomのattributes.reportedに格納したい値
    },
    "metadata": {
        // Device Phantomのmetadata.reportedに格納したい値
    },
    "version": xx   //Device Phantomのバージョンを数値で指定します。省略が可能です。
}

eep outノードは上記メッセージを受け取るとEEPに対して HTTPまたはMQTTで以下の形式でDevice Phantomを送信します。

{
    "attributes" :{
        "reported": {
            msg.payloadに入力された値
        }
    },
    "metadata" :{
        "reported": {
            msg.metadataに入力された値
        }
    },
    "deviceId": 設定のDevice ID or Desitinationに設定されたClient ID,
    "version": msg.versionに入力された値
}

msg.versionを省略した場合、送信するJSONのversionも省略されます。 versionが省略されるとDevice Phantomの初期作成時は0が設定され、それ以外の場合は自動的にインクリメントされます。 versionを設定する場合、EEPではエポックミリ秒を指定することを推奨しています。 最新のバージョンより古いバージョンを指定した場合、 その操作は拒否され、ノードからエラー出力されます。

2.4.1.3. エラー出力

HTTPでstatusCode 20X以外が返却された場合やMQTTでrejectedのトピックでレスポンスが返却された場合、 参照しているeep-configノードからログにエラーが出力されます。 エラーメッセージを参照して設定の誤りを修正してください。

2.4.2. eep in

2.4.2.1. 設定項目

eep inには以下の設定項目があります。

Destination
EEPとの接続設定をeep-configノードで設定します。
Device Type
受信したいアクチュエーション指示対象のデバイスのDevice Phantomが格納されているデバイスタイプを設定します。
Ruting Rules
取得したアクチュエーション指示のフィルタリングルールと出力端子端子の対応関係であるルーティングルールを指定します。 プルダウンメニューからall devicesを選択した場合、対応する端子からはすべてのDevice IDに対するアクチュエーションメッセージが出力されます。 プルダウンメニューからtarget deviceを選択した場合、テキストボックスが表示されDevice IDを入力することができます。 この場合、該当する端子からは指定されたDevice IDに対するアクチュエーション指示を出力します。 switchノードのようにルールを複数指定することができ、指定した分の出力端子が表示され、 対応した端子からルールに基づいたアクチュエーション指示が出力されます。
Output Entire Device Phantom
チェックを入れるとDevice Phantom全体をペイロードとして出力します。 チェックを入れない場合はattributes.deltaのみが出力されます。 詳細はメッセージ構造を参照ください。
Name
ノードの名称を設定することができます。

2.4.2.2. メッセージ構造

2.4.2.2.1. 出力メッセージ

eep inはOutput Entire Device Phantomのチェックの有無によって出力メッセージの構造が変化します。

  • Output Entire Device Phantomにチェックがある場合
{
    "payload" : {
        "attributes": {
            "desired" : {},
            "reported" : {},
            "delta": {}
        },
        "metadata": {
            "desired" : {},
            "reported" : {},
            "delta": {}
        },
        "eventId": "xxxxx",
        "deviceId": "<デバイスID>",
        "version": xx
    }
}
  • Output Entire Device Phantomにチェックがない場合
{
    "payload" : {
        //attributes.deltaの中身
    }
}

2.4.3. eep get

2.4.3.1. 設定項目

eep getには以下の設定項目があります。

Destination
EEPとの接続設定をeep-configノードで設定します。
Device Type
取得したいDevice Phantomが格納されているDevice Typeを設定します。
Device ID
論理的にデバイスを識別するIDであるDevice IDを指定します。 指定されたキー値に格納されているDevice Phantomを取得します。 省略された場合Desitinationに設定されたClient IDの値が使用されます。
Output Entire Device Phantom
チェックを入れるとDevice Phantom全体をペイロードとして出力します。 チェックを入れない場合はattributes.deltaのみが出力されます。 詳細はメッセージ構造を参照ください。
Name
ノードの名称を設定することができます。

2.4.3.2. メッセージ構造

2.4.3.2.1. 入力メッセージ

入力メッセージには何を入力してもかまいませんが、 入力された内容は利用されません。また出力メッセージにも反映されません。

{
}

2.4.3.2.2. 出力メッセージ

  • Output Entire Device Phantomにチェックがある場合
{
    "result": "accepted",
    "payload" : {
        "attributes": {
            "desired" : {},
            "reported" : {},
            "delta": {}
        },
        "metadata": {
            "desired" : {},
            "reported" : {},
            "delta": {}
        },
        "eventId": "xxxxx",
        "deviceId": "<デバイスID>",
        "version": xx
    }
}
  • Output Entire Device Phantomにチェックがない場合
{
    "result": "accepted",
    "payload" : {
        //attributes.deltaの中身
    }
}

2.4.3.3. エラー出力

HTTPでStatus Code 20X以外が返却された場合やMQTTでrejectedのトピックでレスポンスが返却された場合、 参照しているeep-configノードからログにエラーが出力されます。 エラーメッセージを参照して設定の誤りを修正してください。

2.4.3.4. 注意事項

同一のeep-configノード、Device Typeが設定された複数のeep getノードが複数ある場合、 一つのeep getノードにメッセージを入力した際に、それ以外のeep getノードからも取得したDevice Phantomの値が出力されます。 回避したい場合には参照するeep-configノードを分けることで回避可能です。

2.4.4. eep-config

2.4.4.1. 設定項目

Destination Type
EEPに接続する際の接続先の種類を設定します。 現時点ではHTTP Event BrokerMQTT Event Brokerを選択できます。
Hostname
接続するEEPのホスト名やIPアドレスを指定します。必須項目です。
Port
接続するEEPのポートを指定します。Destination TypeがHTTP Event Brokerのときは8080が、 MQTT Event Brokerの場合は1883がデフォルトで入力されます。必須項目です。
Enable SSL/TLS
SSL/TLSによる通信の暗号化を行うかどうかをチェックボックスで指定します。 チェックをした場合以下の証明書設定項目が表示されます。
CA Certificate
独自のCA証明書で証明書検証を行う場合、CA証明書ファイルのフルパスを指定します。
Certificate
クライアント証明書による認証を行う場合、クライアント証明書ファイルのフルパスを指定します。
Private Key
クライアント証明書による認証を行う場合、クライアントの秘密鍵ファイルのフルパスを指定します。
Client ID
物理的な(L3/L1)デバイスを識別するIDであるClient IDを指定します。 ICEで使用する場合、Client IDはedge_idの値とすることを推奨します。 使用するClient IDはEEP側に登録されている必要があります。 ICEで使用する場合、core_config.jsonに記載されたedge_idがデフォルト値として埋め込まれます。

上記が接続設定によらない共通設定となります。 以降は選択したDestination Typeにより設定項目が異なります。

  • Destination TypeがHTTP Event Brokerの場合
Tenant
NECモバイルバックエンド基盤のテナント名またはテナントIDを指定します
API Name
NECモバイルバックエンド基盤のAPI Gatewayに登録されたAPI名を指定します。 デフォルトではdevice-phantomが入力されています。必須項目です。
App ID
NECモバイルバックエンド基盤の指定したテナントに対応したアプリケーションIDを指定します。 必須項目です。
App Key
NECモバイルバックエンド基盤の指定したテナントに対応したアプリケーションキーを指定します。 必須項目です。ルートKeyは記入しないように注意してください。
Use Password Authentication
パスワード認証を用いて認証する場合にチェックを入れてください。 チェックをした場合に認証用情報の入力項目が表示されます。
Username
パスワード認証用のユーザ名を指定します。 パスワード認証をする場合、E-mailかいずれかの入力が必要となります。
E-mail
パスワード認証用のユーザのE-mailアドレスを指定します。 パスワード認証をする場合、Usernameかいずれかの入力が必要となります。
Password
パスワード認証用のパスワードを指定します。 パスワード認証をする場合、必須項目となります。
Advanced HTTP Settings
HTTP接続に関する高度な設定項目をする場合にチェックをします。
Enable socket keepalive
チェックすると、ソケットのキープアライブを有効にします。 Advanced Settingsをチェックした場合のみ表示されます。
Keepalive Delay
最後にソケットを使用してからキープアライブ実行するまでの時間をミリ秒で指定します。既定値は0(実行環境の設定に従う)です。 Advanced SettingsとEnable socket keepaliveをチェックした場合のみ表示されます。
Max Connections
この接続設定で同時に生成可能なコネクション数を指定します。 デフォルトでは128が入力されます。 -1を入力するとコネクション数が無制限になります。 Advanced Settingsをチェックした場合のみ表示されます。
Request Timeout
リクエストのタイムアウト時間をミリ秒で指定します。 デフォルトでは60000が入力されます。0より小さい値を入力しても無視をされます。 Advanced Settingsをチェックした場合のみ表示されます。
Request Interval
接続先にHTTPでポーリングをする際、HTTPリクエスト成功時に次のリクエストまでの間隔をミリ秒で指定します。 eep inから参照された場合に使用されます。既定値は10です。0以下の数値が入力された場合、タイムアウトしません。 Advanced Settingsをチェックした場合のみ表示されます。
Timeout Interval
接続先にHTTPでポーリングをする際、HTTPリクエストのタイムアウト発生時の次のリクエストまでの間隔をミリ秒で指定します。 eep inから参照された場合に使用されます。既定値は100です。0以下の数値も入力できますが、0として扱われます。 Advanced Settingsをチェックした場合のみ表示されます。
Error Interval
接続先にHTTPでポーリングをする際、HTTPリクエストのエラー発生時の次のリクエストまでの間隔をミリ秒で指定します。 eep inから参照された場合に使用されます。既定値は1000です。0以下の数値も入力できますが、0として扱われます。 Advanced Settingsをチェックした場合のみ表示されます。
Use proxy server
チェックすると、プロキシサーバの設定が有効になります。
Proxy Server
プロキシサーバの設定を追加・選択します。User prosy serverにチェックを入れた場合、必須項目です。
Change Base Path
Nebula API Gatewayにリクエストする際の基準パスを標準的な/api/から変更する際にチェックをします。 Nebula API Gatewayの前段にリバースプロキシを設定し、サブパスでNebula API Gatewayと 他のサービスを分けている場合などに使用することができます。
Base Path
Nebula API Gatewayにリクエストする際にhttp(s)://hostname:port{BasePath}{APIVersion}/... の{BasePath}に入る値を入力します。デフォルトは/api/となります。
  • Destination TypeがMQTT Event Brokerの場合
Username
パスワード認証を行う場合にユーザ名を入力します
Password
パスワード認証を行う場合にパスワードを入力します
Timeout
MQTTクライアントのconnect実行時のタイムアウト時間を設定します。必須項目です。 デフォルトは30000です。
Publish QoS
MQTTクライアントがパブリッシュするときのQoSを指定します。 0,1,2のいずれかから選択が可能です。デフォルトは1です。
Subscribe QoS
MQTTクライアントがサブスクライブするときのQoSを指定します。 0,1,2のいずれかから選択が可能です。デフォルトは1です。
Options
MQTTクライアントのオプションを任意に入力できます。JSON形式でオプションを指定してください。
Use SNI
チェックした場合SNI接続を行います。 SSL/TLSが有効な時にのみ表示されます。 IoTコアサービスで払い出した環境に接続する場合にチェックは不要です。