オンディレイ タイマ/オフディレイ タイマ

1.概要

オンディレイタイマは、スイッチがオンされてから一定時間経過後に実際にオンし、オフの時は、即座にオフするスイッチのことです。
同様にオフディレイタイマは、スイッチがオンの時は即座にオンし、オフの時には一定時間経過後にオフするスイッチのことです。
組み合わせると、オンの時とオフの時で遅延時間が異なるスイッチを作れます。また、オンとオフの時で経過時間が同じなら単にdelayノードを使えば実現できます。

次から、Node-REDでこれらの動作を記述します。記述方法は一つの例ですので、他の方法もあります。
まず、一番単純な、ディレイ動作の記述例を示します。次に、オンディレイタイマ動作、オフディレイタイマ動作の順にみていきます。

2. ディレイの記述と動作

ディレイ動作のNode-REDのエディタ記述とON/OFFに対応してLEDを点灯させる動作を以下に示します。
オン・オフスイッチの後段にdelayノードを入れて5秒遅らせているだけです。

3. オンディレイタイマの記述と動作

オンディレイタイマのNode-REDのエディタ記述とON/OFFに対応してLEDを点灯させる動作を以下に示します。
記述の詳細は、「5. オンディレイタイマの動作実装」を参照ください。

4. オフディレイタイマの記述と動作

オフディレイタイマのNode-REDのエディタ記述とON/OFFに対応してLEDを点灯させる動作を以下に示します。
オンディレイタイマの記述との違いは、delayノードの位置です。

5. オンディレイタイマの動作実装

1)初期化の設定

① injectノードを配置します。ダブルクリックをして、プロパティを表示します。
② 「Node-RED起動の 0.1秒後、以下を行う」にチェックを入れます。
③ 名前を入力します。
④ 最後に完了を押します。

⑤ changeノードを配置し、injectノードと結線します。ダブルクリックをして、プロパティを表示します。
⑥ 「値の代入」で、“flow.is-on”を設定します。
⑦ 「対象の値」に「真偽」 の“false”を設定します。
⑧ 「名前」を入力します。
⑨ 最後に「完了」を押します。

2) ON/OFFスイッチの設定

① dashbooardの switchノードを配置します。ダブルクリックして,プロパティ設定画面を開きます。
② Groupの設定を行うため、鉛筆マークをクリックします。

③ タブの設定を行うため、鉛筆マークをクリックします。

④ タブの名前を設定します。
⑤ 追加をクリックします。

⑥ タブの名前を設定します。
⑦ 幅を6に変更します。
⑧ 追加をクリックします。

⑨ 名前を設定します。
⑩ 完了をクリックします。

3) スイッチ動作の設定

スイッチがON/OFFに変更された際の動作を記述します。

3-1) switchノードの配置

switchノードをダッシュボードに配置し、ON/OFFの信号を“true”と“false”で生成します。

① switchノードを配置し、ダッシュボードのswitchノードと接続します。そして、ダブルクリックしてプロパティを開きます。
② 名前を入力します。
③ 条件欄の条件1に、“trueである”を選択します。
④ 「追加」ボタンをおして条件欄を追加します。
⑤ 条件2に”falseである“を選択します。
⑥ 最後に「完了」を押します。

3-2) delayノードの配置

ONの信号を遅延させるために、delayノードを使います。

① delayノードを配置し、switchノードの条件1と接続します。そして、ダブルクリックしてプロパティを開きます。
② 遅延値を変更する場合は、時間欄を変更します。
③ 完了を押します。

 

3-3) changeノードの配置

遅延させたON信号で、”flow.is-on“信号を”ture“にします。

① changeノードを配置し、delayノードと接続します。そして、ダブルクリックしてプロパティを開きます。
② 名前を変更します。
③ 値の代入を”flow.is-on”に設定します。
④ 「対象の値」を「真偽」の”true“にします。
⑤ 「完了」を押します。

3-4) changeノードの配置

OFF信号で、”flow.is-on“信号を”false“にします。

① changeノードを配置し、switchノードの条件2と接続します。そして、ダブルクリックしてプロパティを開きます。
② 名前を変更します。
③ 値の代入を”flow.is-on”に設定します。
④ 「対象の値」を「真偽」の”false“にします。
⑤ 「完了」を押します。

3-5) commentノードの配置

On delay timerのブロックの記述は終わりです。“ On Delay Timer ブロック”のコメントを入れておきます。

① commentノードを配置し、ダブルクリックしてプロパティを開きます。
② 名前にコメントを入れます。ここでは”On Delay Timer ブロック“と記載します。
③ 「完了」を押します。

 

4) 動作確認ブロックの記述

0.1秒おきに、”flow.is-on”の真偽を確認し、”true“ならLEDを赤に、”false“ならLEDを緑にします。

4-1)injectノードの配置

0.1秒毎に動作を起こすトリガーとして使用します。

① injectノードを配置し、ダブルクリックしてプロパティを開きます。
② 名前を入力します。 
③ 繰り返しの条件を「指定した時間間隔」に変更します。
④ 「時間間隔」を0.1秒に設定します
⑤ 最後に「完了」を押します。

4-2)changeノードの配置

“flow.is-on”をチェックし、”true“,”false”を“msg.payload”に出力します。

① changeノードを配置し、injectノードと接続します。そして、ダブルクリックしてプロパティを開きます。
② 名前を入力します。
③ 対象の値を”flow.is-on“に設定します
④ 最後に「完了」を押します。

4-3)ledノードの配置

msg.payloadが“true”なら赤を,”false“なら緑に点灯します。

① ledノードを配置し、changeノードと接続します。そして、ダブルクリックしてプロパティを開きます。
② グループをswitchと一緒のグループにします。ここでは、「タブ:ディレイタイマ、グループ:オンディレイタイマ」としています。
③ ラベルを入力します。
④ “true”で赤(red)に設定します。
⑤ “false”で緑(green)に設定します。
⑥ 最後に「完了」を押します。

4-4) commentノードの配置

動作確認のブロックの記述は終わりです。“動作確認 ブロック”のコメントを入れておきます。

① commentノードを配置し、ダブルクリックしてプロパティを開きます。
② 名前にコメントを入れます。ここでは”動作確認 ブロック“と記載します。
③ 「完了」を押します。

5) デプロイ

記述は完了しました。

①「デプロイ」を押します。

 

6) 動作確認

ダッシュボードを表示します。

① LEDは緑(OFF)に点灯しています。
② switchを右側のONにスライドします。LEDは緑(OFF)のままです。
③ 約5秒後にLEDが赤(ON)になります → オン ディレイ動作
④ switchを左側のOFFにスライドします。LEDはすぐに緑(OFF)になります。