Contents
オンディレイ タイマ/オフディレイ タイマ
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)になります。