アプリケーション開発
Node-REDの利用方法
ステップ2:Node-RED利用手順
ここでは、赤外線学習リモコンを使って、「指定の気温に達したらエアコンが作動する」アプリケーションの作成を紹介します。
前提条件
- Node-REDの基本操作を理解していること。
※基本操作については、Node-REDの公式ドキュメントをご覧ください。(https://nodered.jp/docs/) - 赤外線リモコンとエアコンがIoTアクセス制御エンジンへデバイス登録されていること。
仕様は以下の通りです。
- 気温を3分ごとに取得
- 気温が25℃以上の場合、エアコンをつける
token injectノードの追加
左側のパレットからワークスペース上に[Symphony]カテゴリ内のtoken injectノード
をドラッグして追加します。
以降、ノードの追加は左側のパレットの指定カテゴリ内より選択し、追加してください。
ノードを選択すると、右側のサイドバーでノードの詳細を確認できます。

Injectノードの追加
[入力]カテゴリ内のInjectノード
をドラッグして追加します。
配置したInjectノード
をダブルクリックし、繰り返しの項目を「指定した時間間隔」に設定し、時間間隔を「3分」に設定します。

get:devicesノードの追加
[Symphony]カテゴリ内のget:devicesノード
をドラッグして追加します。get:devicesノード
は、IoTアクセス制御エンジンに登録されているデバイスの一覧を取得できます。

filterノードの追加
[Symphony]カテゴリ内のfilterノード
をドラッグして追加します。filterノード
は、指定のデバイス、ニックネーム、タグと一致する情報を抽出します。
filterノード
をダブルクリックし、フィルタの種類を「profile」にします。プロファイルを「temperature」にします。

temperatureノードの追加
[Symphony]カテゴリ内のtemperatureノード
をドラッグして追加します。temperatureノード
は、temperatureプロファイルのデバイスAPIを実行します。(気温の取得ができます)

debugノードの追加
[出力]カテゴリ内のdebugノード
をドラッグして追加します。

全てのノードをワイヤーで接続
ノードの右側(出力ポート)からノードの左側(入力ポート)へマウスをドラッグしてノード同士を繋ぎます。

※ワイヤーの接続方法や削除方法について詳しくはNode-RED公式のエディタガイドをご確認ください。
token injectノード
の出力とget:devicesノード
の入力Injectノード
の出力とget:devicesノード
の入力get:devicesノード
の正常終了時出力とfilterノード
の入力filterノード
の正常終了時の出力とtemperatureノード
の入力temperatureノード
の正常終了時の出力とdebugノード
の入力get:devicesノード
のエラー時出力とdebugノード
の入力filterノード
のエラー時出力とdebugノード
の入力temperatureノード
のエラー時出力とdebugノード
の入力
ワイヤーを全て接続すると以下のようになります。
※正しくワイヤーが接続されていれば、ノードの配置は図の通りでなくても問題ありません。

switchノードの追加
[機能]カテゴリ内のswitchノード
をドラッグして追加します。
配置したswitchノード
をダブルクリックし、プロパティに「payload.temperature」と入力します。
条件を「>=」と数値による評価に変更し、値に「25」を設定します。
追加ボタンで条件を追加し、「その他」を設定します。

get:devicesノードの追加
[Symphony]カテゴリ内のget:devicesノード
をドラッグして追加します。

filterノードの追加
[Symphony]カテゴリ内のfilterノード
をドラッグして追加します。
filterノード
をダブルクリックし、フィルタの種類を「profile」にします。
プロファイルを選択式から文字列に変更し、「airConditioner」を入力します。

device apiノードの追加
[Symphony]カテゴリ内のdevice apiノード
をドラッグして追加します。device apiノード
は、任意のデバイスAPIを実行します。
device apiノード
をダブルクリックし、実行Actionパスに「/airConditioner」を設定し、実行Actionメソッドに「put」を指定します。

debugノードの追加
[出力]カテゴリ内のdebugノード
をドラッグして追加します。

ノードをワイヤーで接続
ノードの右側(出力ポート)からノードの左側(入力ポート)へマウスをドラッグしてノード同士を繋ぎます。
temperatureノード
の出力とswitchノード
の入力switchノード
の「>=25」とget:devicesノード
の入力get:devicesノード
の正常終了時出力とfilterノード
の入力filterノード
の正常終了時出力とdevice apiノード
の入力device apiノード
の正常終了時の出力とdebugノード
の入力switchノード
の「その他」とdebugノード
の入力get:devicesノード
のエラー時出力とdebugノード
の入力filterノード
のエラー時出力とdebugノード
の入力device apiノード
のエラー時出力とdebugノード
の入力
ワイヤーを全て接続すると以下のようになります。
※正しくワイヤーが接続されていれば、ノードの配置は図の通りでなくても問題ありません。

デプロイ
デプロイボタンをクリックすることでランタイムにフローをデプロイします。

フローの実行
token injectノード
の左側にあるボタンを押します。これでフローが実行されます。

このフローは3分ごとに実行され、気温を取得します。取得した気温が25℃以上の場合、エアコンが起動します。
フローの実行後、右側のタブからデバッグを選択すると、msg.payload の中を確認できます。
気温が25℃以上だった場合は、 temperature API 実行時のレスポンスと airConditioner API 実行時のレスポンスが表示されます。

上が temperature API 実行時のレスポンスで、気温が25.4℃であることがわかります。( temperature: 25.4 )
下が airConditioner API 実行時のレスポンスで、エアコンが起動したことがわかります。( powerState: "ON" )
気温が25℃未満だった場合は、temperature API 実行時のレスポンスのみ表示されます。 airConditioner API はフローの条件に当てはまらず実行されないため、 airConditioner API 実行時のレスポンスは表示されません。
本チュートリアルでは、「気温を3分ごとに取得し、気温が25℃以上の場合、エアコンをつける」というフローを作成しましたが、作成したいフローに合わせて取得する時間や条件を変更して試してみてください。