2.3. Edge Application連携用ノード

2.3.1. ice app in

エッジアプリケーションからエッジサーバに向けて送信されたイベントデータをNode-REDのフローに伝達するための入力ノードです。

ice app inはノードの設定で指定されたアプリケーション名やデータタイプによってイベントデータをフィルタリングします。エッジアプリケーション側のデータタイプ定義方法については、 ICE Data Delivery C API を参照してください。

2.3.1.1. 設定項目

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

Application Name
イベントデータを取得したいエッジアプリケーションの名前を指定します。設定省略した場合、ice app inで受信可能な全てのエッジアプリケーションからのイベントデータを受信します。
Data Type
受信するイベントデータのデータタイプを指定します。設定省略した場合、ice app inで受信可能な全てのデータタイプのイベントデータを受信します。
Name
ノードの名称を設定することができます。

Application NameData Typeの両方を指定した場合、両方の条件に合致するイベントデータのみを受信します。

以下にice app inの設定例を記載します。

Application Name: EdgeApp1
Data Type: temperature

この例では、EdgeApp1がエミットしたイベントデータのうち、データタイプがtemperatureであるイベントデータをice app inで受信できます。

2.3.1.2. メッセージ構造

ICE CoreとNode-REDのメッセージのマッピングは以下の図のようになります。

msgappin

ICE CoreのメッセージはData Typeに対応するデバイスから受信したデータをpayloadに持っています。

ICE Coreのメッセージに含まれるpayloadがそのままNode-REDのmsg.payloadに格納されます。payload以外の制御用フィールドはmsg.ice_params配下に格納されます。

必要に応じてfunctionノード等を利用して、フローごとにイベントデータのフィルタリングを行ってください。

2.3.2. ice app out

Node-REDのフローからエッジアプリケーションにアクチュエーションメッセージを送信するための出力ノードです。

ice app outはメッセージで指定したobject_id、actuation_key、アプリケーション名を持つエッジアプリケーションへアクチュエーションメッセージを送信します。 actuation_keyを使用する場合、ice app outからメッセージ受信したいエッジアプリケーションのプロファイルに、actuation_keyを設定する必要があります。

2.3.2.1. 設定項目

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

Routing Property
メッセージの送信先アプリケーションを指定するためのプロパティです。送信先指定に使用するプロパティ名と、その値を設定します。”unspecified”を設定した場合、メッセージ側のobject_id、app_name、actuation_keyにより送信先を決定します。既定値は”actuation_key”です。
Name
ノードの名称を設定することができます。

2.3.2.2. メッセージ構造

ICE CoreとNode-REDのメッセージのマッピングは以下の図のようになります。

msgappout

ICE Coreのメッセージは、object_id、app_name、actuation_keyで指定したデバイスと紐づいたデバイスアダプタに送信されます。

Node-RED側のmsg.payloadは、ICE Coreのメッセージのpayloadに格納します。msg.payloadの型がobjectではない場合のみ、{value: msg.payload}の形式でobject型に変換してpayloadに格納します。
msg.ice_paramsに以下のフィールドが存在していれば、ICE Coreのメッセージに値を渡します。
  • op_type
  • op_id
  • object_id
  • app_name
  • actuation_key

op_type、object_type、op_idのフィールドが存在しない場合、それぞれ以下の固定値が設定されます。

op_type: "actuate"
object_type: "edge_application"
op_id: "none"

typeの値はoperation_request固定となります。

object_id、app_name、actuation_keyの値が一致するデバイスにpayloadの内容が届けられます。条件に一致するデバイスが複数存在する場合、それらすべてのデバイスに同じメッセージが届きます。object_id、app_name、actuation_keyが2つ以上設定されている場合、以下の優先順序で使用する条件を決定します。

  1. actuation_key
  2. app_name
  3. object_id

ノード設定のRouting Propertyに”unspecified”以外の値を設定した場合、メッセージ側のobject_id、app_name、actuation_keyは無視し、ノード設定が優先されます。

ice app outからメッセージを送信する際にobject_id、app_name、actuation_keyがいずれも存在しない場合、その旨をログ出力してメッセージ送信を中止します。

2.3.3. ice app function

Node-REDのフローからエッジアプリケーションを使ってデータ加工を行うためのファンクションノードです。

ice app functionはノード設定で指定したアプリケーション名を持つエッジアプリケーションとデータの送受信を行うことができます。エッジアプリケーションのイベント受信処理機能を利用してデータを加工し、その処理結果を受け取ります。

2.3.3.1. 設定項目

ice app functionには以下の設定項目があります。

Application Name
データ加工を行うエッジアプリケーション名
Name
ノードの名称を設定することができます。

2.3.3.2. メッセージ構造

ICE CoreとNode-REDのメッセージのマッピングは以下の図のようになります。

msgappfuncout

Node-RED側のmsg.payloadは、ICE Coreのメッセージのpayloadに格納します。msg.payloadの型がobjectではない場合のみ、{value: msg.payload}の形式でobject型に変換してpayloadに格納します。

msgappfuncin

エッジアプリケーションでのデータ加工後、メッセージに含まれるpayloadがそのままNode-REDのmsg.payloadに格納されます。payload以外の制御用フィールドはmsg.ice_params配下に格納されます。