アプリケーション開発

Node-REDの利用方法

ステップ2:Node-RED利用手順

ここでは、赤外線学習リモコンを使って、「指定の気温に達したらエアコンが作動する」アプリケーションの作成を紹介します。

前提条件

  • Node-REDの基本操作を理解していること。
    ※基本操作については、Node-REDの公式ドキュメントをご覧ください。(https://nodered.jp/docs/)
  • 赤外線リモコンとエアコンがIoTアクセス制御エンジンへデバイス登録されていること。

仕様は以下の通りです。

  • 気温を3分ごとに取得
  • 気温が25℃以上の場合、エアコンをつける

1 token injectノードの追加

左側のパレットからワークスペース上に[Symphony]カテゴリ内のtoken injectノードをドラッグして追加します。

以降、ノードの追加は左側のパレットの指定カテゴリ内より選択し、追加してください。

ノードを選択すると、右側のサイドバーでノードの詳細を確認できます。

図:token injectノードの追加

2 Injectノードの追加

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

配置したInjectノードをダブルクリックし、繰り返しの項目を「指定した時間間隔」に設定し、時間間隔を「3分」に設定します。

図:Injectノードの追加

3 get:devicesノードの追加

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

図:get:devicesノードの追加

4 filterノードの追加

[Symphony]カテゴリ内のfilterノードをドラッグして追加します。filterノードは、指定のデバイス、ニックネーム、タグと一致する情報を抽出します。

filterノードをダブルクリックし、フィルタの種類を「profile」にします。プロファイルを「temperature」にします。

図:filterノードの追加

5 temperatureノードの追加

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

図:temperatureノードの追加

6 debugノードの追加

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

図:debugノードの追加

7 全てのノードをワイヤーで接続

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

図:ノードの接続

※ワイヤーの接続方法や削除方法について詳しくはNode-RED公式のエディタガイドをご確認ください。

  • token injectノードの出力とget:devicesノードの入力
  • Injectノードの出力とget:devicesノードの入力
  • get:devicesノードの正常終了時出力とfilterノードの入力
  • filterノードの正常終了時の出力とtemperatureノードの入力
  • temperatureノードの正常終了時の出力とdebugノードの入力
  • get:devicesノードのエラー時出力とdebugノードの入力
  • filterノードのエラー時出力とdebugノードの入力
  • temperatureノードのエラー時出力とdebugノードの入力

ワイヤーを全て接続すると以下のようになります。

※正しくワイヤーが接続されていれば、ノードの配置は図の通りでなくても問題ありません。

図:全体図

8 switchノードの追加

[機能]カテゴリ内のswitchノードをドラッグして追加します。

配置したswitchノードをダブルクリックし、プロパティに「payload.temperature」と入力します。

条件を「>=」と数値による評価に変更し、値に「25」を設定します。

追加ボタンで条件を追加し、「その他」を設定します。

図:switchノードの追加

9 get:devicesノードの追加

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

図:get:devicesノードの追加

10 filterノードの追加

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

filterノードをダブルクリックし、フィルタの種類を「profile」にします。

プロファイルを選択式から文字列に変更し、「airConditioner」を入力します。

図:filterノードの追加

11 device apiノードの追加

[Symphony]カテゴリ内のdevice apiノードをドラッグして追加します。device apiノードは、任意のデバイスAPIを実行します。

device apiノードをダブルクリックし、実行Actionパスに「/airConditioner」を設定し、実行Actionメソッドに「put」を指定します。

図:device apiノードの追加

12 debugノードの追加

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

図:debugノードの追加

13 ノードをワイヤーで接続

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

  • 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ノードの入力

ワイヤーを全て接続すると以下のようになります。

※正しくワイヤーが接続されていれば、ノードの配置は図の通りでなくても問題ありません。

図:全体図

14 デプロイ

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

図:全体図

15 フローの実行

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℃以上の場合、エアコンをつける」というフローを作成しましたが、作成したいフローに合わせて取得する時間や条件を変更して試してみてください。