Node-REDフロー¶
ここでは、エッジアプリケーションとして動作するNode-REDフローの仕様について記載しています。
サポートバージョン¶
My-IoTでは、下記のバージョンのNode-REDフローをサポートしています。
バージョン |
---|
1.1以上 |
実行権限¶
Node-REDフローは、My-IoTエッジではユーザー権限(pi)で実行されます。
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
注意
配信ファイル¶
エッジアプリケーションには、同時に配信したいファイルを含めることができます。
配信することのできるファイルの仕様は下記のとおりです。
全ての配信ファイルの合計サイズが100MB以下
My-IoT専用ノード¶
My-IoTエッジには、My-IoT用のノードがあらかじめインストールされています。
このノードを利用することで、My-IoT用のNode-REDフローを作成することが可能です。
node-red-contrib-myiot¶
My-IoTへ接続するために利用するノードです。
My-IoTデータストアへのデータの送信や、クラウドアプリケーションからパブリッシュされたデータの受信を行うことができます。
使用方法¶
MyIoT out
ノードとMyIoT in
ノードの二つのノードがあり、それぞれMy-IoTデータストアへの送信、クラウドアプリケーションからパブリッシュされたメッセージの受信を行うことができます。
MyIoT out¶
My-IoTのMQTTブローカに接続し、データをMy-IoTデータストアへパブリッシュします。
msg.payloadにノードに設定されているコネクタIDと、エッジID、タイムスタンプのプロパティを付与したうえで、ノードに設定されているコネクタ定義のJSONスキーマとのvalidationチェックを行います。チェックがNGの場合は送信されません。
My-IoTに接続するための設定はノード側で自動で行われます。
入力
payload
(JSONオブジェクト)My-IoTデータストアへ送信、格納するJSONオブジェクトを入力します。プロパティが設定されていない場合は、メッセージは送信されません。自動的に
connectorID
、edgeID
、およびtimestamp
プロパティを付与します。
出力
payload
(String)送信結果およびエラー内容が出力されます
sendResult
(Boolean)送信結果です
true: 送信成功
false: 送信失敗
設定
コネクタID(必須)
IoTストアに登録したコネクタIDを入力します
コネクタ定義(必須)
IoTストアに登録したコネクタのJSONスキーマを入力してください
QoS
QoSを選択します
0: 最大1度到着
1: 1度以上到着(デフォルト)
名前
ノードにラベルをつける場合は入力します
MyIoT in¶
My-IoTのMQTTブローカに接続し、メッセージをサブスクライブします。
出力
payload
受信したデータがJSONオブジェクト形式で出力されます
設定
名前
ノードにラベルをつける場合は入力します