6.7.1. 概要

ICE Coreでは、ICE Core上のデータの流れを制御するデータフローを定義する手段として Node-RED連携によりデータフローをNode-REDのフローで定義可能となります。これにより、以下のようなメリットが得られます。

  • データフローの定義をGUI上で開発
  • 標準ノードやコミュニティにより公開されている様々なノードを利用してデータを加工・分析

ICE CoreとNode-REDの連携イメージを以下の図に示します。

overview

ICE CoreがNode-REDのインスタンス起動/停止を制御し、ICE Coreの起動/停止時に自動でNode-REDの起動/停止を行います。Node-REDはICE Coreと同じNode.jsプロセス上で動作します。
Node-REDからICE Coreの通信機能を利用するための入力/出力ノードを提供しており、それらのノードをフローに組み込むことでICE Coreのクラウド接続設定やデバイスアダプタをNode-REDから利用できます。Node-RED連携のためにICE Coreのトポロジを定義する必要は無く、ノード設定により接続するバックエンドやデバイスの切り替えが可能です。

6.7.1.1. データフロー

6.7.1.1.1. バックエンドとの通信

ice backend inice backend outを用いてバックエンドと通信する際のデータフローです。

flowcloud

  • イベントデータ Node-REDのフローで発生したデータをバックエンドに送信します。任意の入力ノードと接続されたデバイスの採取データや、Node-REDのフローでデータ分析を行った結果などをバックエンドに送信するケースで利用します。ice backend outを出力ノードとして使用し、ICE Coreのトポロジを経由してバックエンドとの通信を行います。入力ノードには、ICE提供ノードを含めた様々なノードを適用できます。
  • アクチュエーション バックエンドからのメッセージをNode-REDで受信します。任意の出力ノードに接続されたデバイスに指示を届けたり、Node-REDのフローで特定の処理を実行するトリガとして利用します。ice backend inを入力ノードとして使用し、ICE Coreのトポロジを経由してバックエンドとの通信を行います。出力ノードには、ICE提供ノードを含めた様々なノードを適用できます。

6.7.1.1.2. デバイスとの通信

ice device inice device outを用いてデバイスと通信する際のデータフローです。

flowdevice

  • イベントデータ デバイスからのイベントデータをNode-REDで受信します。任意の出力ノードからデータ送信したり、Node-REDのフローでデータ分析を行ったりするケースで利用します。ice device inを入力ノードとして使用し、ICE Coreのトポロジを経由してデバイスアダプタと接続されたデバイスとの通信を行います。出力ノードには、ICE提供ノードを含めた様々なノードを適用できます。
  • アクチュエーション デバイスへのメッセージをNode-REDから送信します。任意の入力ノードで受信したデータをデバイスに届けたり、Node-REDのフローでデータ分析を行った結果をデバイスに返却したりするケースで利用します。ice device outを出力ノードとして使用し、ICE Coreのトポロジを経由してデバイスアダプタと接続されたデバイスとの通信を行います。入力ノードには、ICE提供ノードを含めた様々なノードを適用できます。

6.7.1.1.3. エッジアプリケーションとの通信

ice app inice app outice app functionを用いてデバイスと通信する際のデータフローです。

flowapp

  • イベントデータ エッジアプリケーションからのイベントデータをNode-REDで受信します。任意の出力ノードからデータ送信したり、Node-REDのフローでデータ分析を行ったりするケースで利用します。ice app inを入力ノードとして使用し、ICE Coreのトポロジを経由してエッジアプリケーションとの通信を行います。出力ノードには、ICE提供ノードを含めた様々なノードを適用できます。
  • アクチュエーション エッジアプリケーションのメッセージをNode-REDから送信します。任意の入力ノードで受信したデータをエッジアプリケーションに届けたり、Node-REDのフローでデータ分析を行った結果をエッジアプリケーションに返却したりするケースで利用します。ice app outを出力ノードとして使用し、ICE Coreのトポロジを経由してエッジアプリケーションとの通信を行います。入力ノードには、ICE提供ノードを含めた様々なノードを適用できます。

flowappfunc

  • イベントデータ加工 Node-REDのフローを流れるイベントデータをエッジアプリケーションで加工します。任意の出力ノードや、ice device inから取得したデータを、バックエンドに送信する前に加工したい場合などに利用します。ice app functionをファンクションノードとして使用し、ICE Coreのトポロジを経由してエッジアプリケーションとの通信を行います。入出力ノードには、ICE提供ノードを含めた様々なノードを適用できます。

6.7.1.1.4. トポロジ機能(旧互換)

従来機能であるトポロジを併用する場合のデータフローです。

flowcompat

Node-REDと連携せず、トポロジによるデータフロー定義を行っているのが図中の青枠部分です。青枠の通信はV1.1までのデータフロー定義と互換性を保っており、Node-RED連携に影響を受けずに、従来通りの通信が可能です。