2.2. Device Adapter連携用ノード¶
2.2.1. ice device in¶
デバイスアダプタに接続されたデバイスからエッジサーバに向けて送信されたイベントデータをNode-REDのフローに伝達するための入力ノードです。
ice device inはノードの設定で指定されたデータタイプのイベントデータみを受信します。デバイス側のデータタイプ定義方法については、 ICE Data Delivery C API を参照してください。
2.2.1.1. 設定項目¶
ice device inには以下の設定項目があります。
- Data Type
- 受信するイベントデータのデータタイプを指定します。設定省略した場合、ice device inで受信可能な全てのデータタイプのイベントデータを受信します。
- Name
- ノードの名称を設定することができます。
いずれかのトポロジでCoAPAdapterのオプションに設定されているデータタイプのイベントデータは、ice device inで受信することができません。 ice device inでイベントデータを受信したい場合、Data Typeに設定するデータタイプをトポロジ側で使用しないように注意してください。
以下にice device inの設定例を記載します。
Data Type: temperature
2.2.1.2. メッセージ構造¶
ICE CoreとNode-REDのメッセージのマッピングは以下の図のようになります。
ICE CoreのメッセージはData Typeに対応するデバイスから受信したデータをpayloadに持っています。
ICE Coreのメッセージに含まれるpayloadがそのままNode-REDのmsg.payloadに格納されます。payload以外の制御用フィールドはmsg.ice_params配下に格納されます。data_typeはデバイスプロファイルに定義された値が設定されています。
必要に応じてfunctionノード等を利用して、フローごとにイベントデータのフィルタリングを行ってください。
2.2.2. ice device out¶
Node-REDのフローからデバイスにアクチュエーションメッセージを送信するための出力ノードです。
ice device outはメッセージで指定したobject_id、もしくはactuation_keyを持つデバイスへアクチュエーションメッセージを送信します。 actuation_keyを使用する場合、ice device outからメッセージ受信したいデバイスのデバイスプロファイルに、actuation_keyを設定する必要があります。
2.2.2.1. 設定項目¶
ice device outには以下の設定項目があります。
- Routing Property
- メッセージの送信先デバイスを指定するためのプロパティです。送信先指定に使用するプロパティ名と、その値を設定します。”unspecified”を設定した場合、メッセージ側のobject_idもしくはactuation_keyにより送信先を決定します。既定値は”actuation_key”です。
- Name
- ノードの名称を設定することができます。
2.2.2.2. メッセージ構造¶
ICE CoreとNode-REDのメッセージのマッピングは以下の図のようになります。
ICE Coreのメッセージは、object_idまたはactuation_keyで指定したデバイスと紐づいたデバイスアダプタに送信されます。ノード設定のRouting Propertyに”unspecified”以外の値を設定した場合、そちらの設定が優先されます。
- op_type
- object_type
- op_id
- object_id
- actuation_key
object_typeの値が”device”か”device_adapter”以外の場合は無視します。
op_type、object_type、op_idのフィールドが存在しない場合、それぞれ以下の固定値が設定されます。
op_type: "actuate"
object_type: "device"
op_id: "none"
typeの値はoperation_request固定となります。
object_idもしくはactuation_keyの値が一致するデバイスにpayloadの内容が届けられます。条件に一致するデバイスが複数存在する場合、それらすべてのデバイスに同じメッセージが届きます。object_idとactuation_keyが両方設定されている場合、actuation_keyの設定が優先されます。
ice device outからメッセージを送信する際にobject_idとactuation_keyが両方存在しない場合、その旨をログ出力してメッセージ送信を中止します。
2.2.3. ice device adapter¶
2.2.3.1. 設定項目¶
ice device adapterには以下の設定項目があります。
- ID
- デバイスアダプタのIDを設定します。半角英数(大文字/小文字)が使用できます。IDには
"RED_DEVADPT_"
の接頭辞が付与されます。この項目に設定したIDの値がデバイスアダプタのobject_idとなります。必須項目です。 - Device
- デバイス定義を設定します。詳細はdevice-configを参照してください。必須項目です。
- Device Check Interval
- ノードで保持しているデバイスのメタデータの有効期間を1~2147483647の範囲で指定します。単位は秒です。指定時間の間、メッセージ送信が無かったデバイスの情報は破棄され、デバイスアダプタのメタデータのデバイス一覧から削除されます。ハートビート有効時は、ハートビートの間隔としても使用されます。既定値は3600です。
- Heartbeat
- ハートビート機能の有効・無効を設定します。ノード内で保持しているデバイスのメタデータをDevice Check Intervalの間隔でバックエンドに送信します。既定値はtrueです。
- Cloud Adapter Options
- メッセージに付与するadapterオプションをJSON形式で設定します。ここで指定した内容がmsg.ice_params.adapterにセットされます。詳細はice backend outのメッセージ構造を参照してください。
- Name
- ノードの名称を設定することができます。
ID、Deviceは、複数のice device adapterで重複して設定することができません。 これらの項目に重複した値を設定している場合、フローのデプロイ時にエラーを出力します。
注釈
IDは、object_id全体(接頭辞部分を含めて)で128文字以内になるように設定してください。
2.2.3.2. メッセージ構造¶
2.2.3.2.1. 入力メッセージ¶
下記の入力メッセージを受け付けます。
- メタデータ登録メッセージ(object_register)
- イベントデータ(event_data)
メタデータ登録メッセージは下記のようなフォーマットです。
{
ice_params: {
type: "object_register",
unique: "..."
},
payload: {
//任意のデバイス情報
}
}
"RED_DEV_<device-configのID>_<unique>"
がデバイスのobject_idになります。 デバイスのメタデータのフォーマットについては、device-configを参照してください。"RED_DEV_<device-configのID>"
がobject_idとなり、デバイスの区別が出来なくなります。注釈
uniqueの値には半角英数(大文字/小文字)が使用できます。文字長は、object_id全体で128文字以内になるように設定してください。
単にICE Backendにイベントデータ送信する場合は、下記のようなフォーマットのメッセージを入力します。
{
ice_params: {
type: "event_data",
unique: "..."
}
payload: {
//イベントデータの内容
}
}
2.2.3.2.2. 出力メッセージ¶
出力メッセージは、下記のようにice_paramsが付与された状態となります。
{
ice_params: {
type: "event_data",
data_type: "<device-configのData Type>",
object_id: "...",
adapter: {
}
},
payload: {
//イベントデータの内容
}
}
2.2.3.3. メタデータ登録¶
2.2.3.3.1. デバイスアダプタ¶
ICE Coreの起動、フローデプロイなど、ice device adapterが有効になったタイミングで、メタデータをICE Backendに送信します。 また、デバイスのメタデータ登録メッセージ受信や、デバイス情報破棄など、ice device adapterで管理しているデバイスの一覧に変化があった場合にもメタデータ登録を行います。
メタデータのフォーマットは下記の通りです。
{
type: "object_register",
edge_id: "...",
flow_id: "...",
object_id: "RED_DEVADPT_<ID>",
object_type: "device_adapter",
payload:{
data_type: "deviceadapter",
payload: {
description: "ice device adapter node",
devices: [
"...",
"...",
"..."
]
},
type: "object_register"
}
}
object_idに"RED_DEVADPT_"
接頭辞付のIDの値が入ります。payload.payload.devicesは、ice device adapterを介して接続しているデバイスのobject_id一覧となっています。
2.2.4. device-config¶
2.2.4.1. 設定項目¶
device-configには以下の設定項目があります。
- ID
- デバイスのIDを設定します。半角英数(大文字/小文字)が使用できます。IDには
"RED_DEV_"
の接頭辞が付与されます。この項目に設定したIDの値がデバイスのobject_idとなります。必須項目です。 - Data Type
- デバイスから送信するイベントデータのデータタイプを指定します。必須項目です。
- Profile
- ICE Backendに送信するメタデータに記載したいデバイス情報をJSON形式で記載します。
IDは、複数のdevice-configで重複して設定することができません。 この項目に重複した値を設定している場合、フローのデプロイ時にエラーを出力します。
注釈
IDは、object_id全体(接頭辞とunique部分を含めて)で128文字以内になるように設定してください。
2.2.4.2. メタデータ登録¶
device-config単体ではメタデータ登録は行われません。ice device adapterに設定することで、メタデータ登録が行われるようになります。
2.2.4.2.1. デバイス¶
ice device adapterで始めてイベントデータを受け取った時、もしくはメタデータ登録メッセージを受け取った時に、メタデータをICE Backendに送信します。
メタデータのフォーマットは下記の通りです。
{
type: "object_register",
edge_id: "...",
flow_id: "...",
object_id: "...",
object_type: "device",
payload:{
data_type: "<Data Type>",
delegate: "..."
payload: {
<Profileの設定値>
},
type: "object_register"
}
}