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 NameとData Typeの両方を指定した場合、両方の条件に合致するイベントデータのみを受信します。
以下にice app inの設定例を記載します。
Application Name: EdgeApp1
Data Type: temperature
この例では、EdgeApp1がエミットしたイベントデータのうち、データタイプがtemperatureであるイベントデータをice app inで受信できます。
2.3.1.2. メッセージ構造¶
ICE CoreとNode-REDのメッセージのマッピングは以下の図のようになります。
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のメッセージのマッピングは以下の図のようになります。
ICE Coreのメッセージは、object_id、app_name、actuation_keyで指定したデバイスと紐づいたデバイスアダプタに送信されます。
- 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つ以上設定されている場合、以下の優先順序で使用する条件を決定します。
- actuation_key
- app_name
- 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のメッセージのマッピングは以下の図のようになります。
Node-RED側のmsg.payloadは、ICE Coreのメッセージのpayloadに格納します。msg.payloadの型がobjectではない場合のみ、{value: msg.payload}の形式でobject型に変換してpayloadに格納します。
エッジアプリケーションでのデータ加工後、メッセージに含まれるpayloadがそのままNode-REDのmsg.payloadに格納されます。payload以外の制御用フィールドはmsg.ice_params配下に格納されます。