Node-REDフロー

ここでは、エッジアプリケーションとして動作するNode-REDフローの仕様について記載しています。

サポートバージョン

My-IoTでは、下記のバージョンのNode-REDフローをサポートしています。

バージョン

1.1以上

実行権限

Node-REDフローは、My-IoTエッジではユーザー権限(pi or ubuntu)で実行されます。

Node-REDの追加ノード

ユーザーがパレットに追加したノードなど、My-IoTエッジに標準ではインストールされていないノードを使用することができます。
ノードのインストール情報はエッジアプリファイルを作成した際に、環境に応じて自動で生成されます。
エッジアプリケーションのインストール時には、このインストール情報を参照して不足しているノードが自動的にnpmリポジトリからインストールされます。
インストールされるノードのバージョンは、エッジアプリファイルの作成時にエッジ上にインストールされていたバージョンと同一のバージョンとなります。

npmリポジトリへ登録されていないノードについては、IoTストアへノードプログラムとして登録が必要になります。
エッジアプリケーションで使用しているノードがIoTストアへ登録されている場合は、エッジアプリケーションのインストール時にノードプログラムも自動的にインストールされます。

Linuxアプリケーション

aptで管理されているアプリケーションをNode-REDフローから呼び出して使うことができます。
アプリケーションのインストール情報はエッジアプリファイルを作成した際に、環境に応じて自動で生成されます。
エッジアプリケーションのインストール時には、このインストール情報を参照してLinuxアプリケーションが自動的にaptリポジトリからインストールされます。

インストールされるLinuxアプリケーションについては、aptリポジトリからapt-getでインストールが可能なものに限られます。
ビルドが必要なアプリケーションなど、apt-getからインストールできないアプリケーションを利用する場合は、IoTストアへエッジプログラムとして登録し、エッジアプリケーションに含める必要があります。

エッジアプリファイル

IoTストアへ登録する際には、 エッジアプリファイル を作成する必要があります。
エッジアプリファイルには、デプロイされているNode-REDフローファイルのほか、ノードのインストール情報やLinuxアプリケーションのインストール情報、My-IoTエッジの環境情報などが含まれています。

エッジアプリファイルを作成するには、Node-REDフローがデプロイされているMy-IoTエッジのターミナルから、下記コマンドを実行します。

sudo myiot-get-flow-zip

コマンド実行後、正常に処理が完了するとホームディレクトリへflowTemplate.zipが作成されます。
このzipファイルがIoTストアへ登録する際に必要なエッジアプリファイルとなります。

環境変数

定義済み環境変数の利用

Node-REDフローからは、あらかじめ定義されている下記の環境変数を参照することが可能です。
環境変数をNode-REDフローから利用する方法については、 環境変数を利用する : Node-RED日本ユーザ会 を参照してください。

環境変数

詳細

WIFIMAC

Wi-FiのMACアドレス(大文字コロンなし)

TENANTID

テナントID

EDGEID

エッジID
Wi-FiのMACアドレス(大文字コロンあり)

IOT_CORE_ENDPOINT

IoT CoreエンドポイントURL

DEVICE_CERT

デバイス証明書パス

CERT_KEY

デバイス証明書秘密鍵パス

CA_CERT

AWSのルートCA証明書パス

TOPIC_EDGE_DEVICE_IND

デバイス情報通知用API用のMQTTトピック名

環境変数の設定

環境変数を設定してNode-REDフローから参照する場合は、環境変数設定ファイルと呼ばれるファイルを書き換え、Node-REDフローから参照できるようにする必要があります。

環境変数設定ファイルの仕様は下記のとおりです。

  • 環境変数設定ファイル

/opt/myiot/envSetting/envFlow.txt
  • フォーマット

    • {環境変数名}={値}

    • 値にスペースを含める場合はダブルクオーテーション(")で囲む必要があります

SENSOR_ID=1234567890
SAMPLE_DIR=/example
SAMPLE_TEXT="sample text"

注釈

環境変数設定ファイルは、エッジアプリのアンインストール時に初期化されます。
初期状態では環境変数は設定されていません。

環境変数を利用する場合は、エッジアプリやエッジプログラム、エッジアプリの起動時スクリプトなどを用いて直接上記のファイルを書き換えます。

例として、エッジアプリの配信ファイル機能を使って環境変数を設定する場合は、環境変数設定ファイルを作成し、エッジアプリ登録時に下記のように設定して環境変数設定ファイルを配信します。

  • ファイル名

    • envFlow.txt

  • 展開先ディレクトリ

    • /opt/myiot/envSetting

注意

My-IoTエッジの動作中に環境変数設定ファイルを書き換えた場合、Node-REDの仕様によりMy-IoTエッジを再起動するまで反映されませんので注意してください。
また、予約済み環境変数と環境変数設定ファイルに設定した環境変数以外(スクリプトでOSに設定した環境変数など)はNode-REDフローから参照できません。

配信ファイル

エッジアプリケーションには、同時に配信したいファイルを含めることができます。
配信することのできるファイルの仕様は下記のとおりです。

  • 全ての配信ファイルの合計サイズが100MB以下

My-IoT専用ノード

My-IoTエッジには、My-IoT用のノードがあらかじめインストールされています。
このノードを利用することで、My-IoT用のNode-REDフローを作成することが可能です。

node-red-contrib-myiot

myiot_node

My-IoTへ接続するために利用するノードです。
My-IoTデータストアへのデータの送信や、クラウドアプリケーションからパブリッシュされたデータの受信を行うことができます。

使用方法

MyIoT outノードとMyIoT inノードの二つのノードがあり、それぞれMy-IoTデータストアへの送信、クラウドアプリケーションからパブリッシュされたメッセージの受信を行うことができます。

MyIoT out

myiot_node_out_icon

My-IoTのMQTTブローカに接続し、データをMy-IoTデータストアへパブリッシュします。

msg.payloadにノードに設定されているコネクタIDと、エッジID、タイムスタンプのプロパティを付与したうえで、ノードに設定されているコネクタ定義のJSONスキーマとのvalidationチェックを行います。チェックがNGの場合は送信されません。

My-IoTに接続するための設定はノード側で自動で行われます。

  • 入力

    • payload (JSONオブジェクト)

      • My-IoTデータストアへ送信、格納するJSONオブジェクトを入力します。プロパティが設定されていない場合は、メッセージは送信されません。自動的にconnectorIDedgeID、およびtimestampプロパティを付与します。

  • 出力

    • payload (String)

      • 送信結果およびエラー内容が出力されます

    • sendResult (Boolean)

      • 送信結果です

        • true: 送信成功

        • false: 送信失敗

myiot_node_out_setting

  • 設定

    • コネクタID(必須)

      • IoTストアに登録したコネクタIDを入力します

    • コネクタ定義(必須)

      • IoTストアに登録したコネクタのJSONスキーマを入力してください

    • QoS

      • QoSを選択します

        • 0: 最大1度到着

        • 1: 1度以上到着(デフォルト)

    • 名前

      • ノードにラベルをつける場合は入力します

MyIoT in

myiot_node_in_icon

My-IoTのMQTTブローカに接続し、メッセージをサブスクライブします。

  • 出力

    • payload

      • 受信したデータがJSONオブジェクト形式で出力されます

myiot_node_in_setting

  • 設定

    • 名前

      • ノードにラベルをつける場合は入力します