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経由でバックエンドに送信するケース。

usecase1

ice device inice app inでデータを収集し、ice backend outから任意の接続先にデータ送信することができます。

  • Node-REDの任意のノードから発生したイベントデータをバックエンドに送信するケース。

usecase3

Node-RED内で発生したデータをice backend outから任意の接続先にデータ送信します。