1.2. データフローの定義¶
ICE Core上のデータの流れを制御するデータフローを定義する手段としてNode-REDによるフロー定義が可能です。
これにより、以下のようなメリットが得られます。
- Web UIによるデータフロー定義Node-REDエディタで作成したフローをエッジサーバ上で動作させることが可能です。Node-REDのノードを利用してデータ送受信やデータ加工の処理を実装できます。
- バックエンドとの接続を抽象化ICE Coreのクラウド接続設定を利用して通信を行うノードを提供します。データフロー定義と接続処理の実装を分離することで、容易に接続先を切り替えられるようになります。
- デバイスとの接続を抽象化ICE Coreのデバイスアダプタを利用して通信を行うノードを提供します。接続処理を意識することなく、デバイスへのアクチュエーションやデータ採取のデータフローを定義できます。
- エコシステムの活用標準ノードやコミュニティにより公開されている様々なフローやノードを利用し、デバイスとの通信やデータの加工・分析を容易に実現できます。
1.2.1. Node-REDとは¶
Node-REDはデバイスやオンラインサービスを接続するためのOSSのツールです。ブラウザ上のエディタでノードを配置・結線する事でデータのフローを定義する事が出来ます。
ICE CoreがNode-REDのインスタンス起動/停止を制御します。Node-REDはICE Coreの起動/停止に合わせてICE Coreと同じNode.jsプロセス内で動作します。
デフォルトの設定では、本番環境での動作を想定し、Node-REDのエディタが無効になっており、ブラウザからアクセスすることはできません。データフローの開発時は、ICE Coreの設定を変更するか、ICE Core SDKをセットアップする事でNode-REDエディタを有効化してから利用してください。
ICE Core SDKのセットアップ方法の詳細は エッジ側開発環境のセットアップ を参照してください。
1.2.2. 提供Node一覧¶
Node-REDエディタから利用可能な7つのノードを提供しています。
Node-REDからICE Coreの通信機能を利用するための入力/出力ノードを提供しており、それらのノードをフローに組み込むことでICE Coreのクラウド接続設定やデバイスアダプタをNode-REDから利用できます。ノード設定により接続するバックエンドやデバイスの切り替えが可能です。
- ice backend inバックエンドからアクチュエーションメッセージを受信するためのノード
- ice backend outバックエンドにイベントデータを送信するためのノード
- ice device inデバイスからイベントデータを受信するためのノード
- ice device outデバイスにアクチュエーションメッセージを送信するためのノード
- ice app inエッジアプリケーションからイベントデータを受信するためのノード
- ice app outエッジアプリケーションにアクチュエーションメッセージを送信するためのノード
- ice app functionエッジアプリケーションでイベントデータを加工するためのノード
詳細は Node-RED ノードリファレンス を参照してください。
1.2.3. ユースケース¶
- デバイスやエッジアプリケーションから取得したイベントデータを、Node-RED経由でバックエンドに送信するケース。
ice device inやice app inでデータを収集し、ice backend outから任意の接続先にデータ送信することができます。
- Node-REDの任意のノードから発生したイベントデータをバックエンドに送信するケース。
Node-RED内で発生したデータをice backend outから任意の接続先にデータ送信します。