3章Armadillo のセットアップ を完了している場合は Armadillo を起動すると、自動的に Node-RED コンテナが起動します。
Node-RED への接続には 「ネットワークに接続する」 で取得した IP アドレスを使用します。
パソコンの Web ブラウザから、http://<ipアドレス>:1880/
にアクセスしてください。
Node-RED には大きく3つの領域があります。
使用可能なコアノード、カスタムノードの一覧を表示します。
Node-RED では一つのアプリケーションの流れをフローという単位で表します。
ワークスペース上にノードを繋げてフローを作成します。
パレットから必要なノードをワークスペースにドラッグ、ドロップで配置します。
選択したノードの情報や、デバッグメッセージを表示します。
4.2. Node-RED コンテナのログを表示する
パソコンの Web ブラウザから、http://<ipアドレス>:1880/node-red.log
にアクセスすると Node-RED コンテナのログが表示されます。
このログファイルは /var/app/rollback/volumes/node-red/log
に保存されています。ログのサイズが 5MB を超えると新しいログファイルに移行します。
古いログファイルを表示したい場合は、http://<ipアドレス>:1880/node-red.log.1
にアクセスしてください。
Node-RED では一つのアプリケーションの流れをフローという単位で表します。
各ノードを使用したフローの作成方法について紹介します。
ここでは、LED を1秒間隔で点滅するフローを作成します。すべて Node-RED のコアノードを使用します。
Armadillo-IoT ゲートウェイ G4 で使用できる LED としてユーザー LED(緑)があります。
ユーザー LED(緑) の場所については 「インターフェースレイアウト」 をご確認ください。
ユーザー LED(緑) は /sys/class/leds/led1/brightness
ファイルへ値を書き込むことによって、LEDの点灯/消灯を行うことができます。
0 を書き込むと消灯、0 以外の値 (1~255) を書き込むと点灯します。
表4.1 LED 信号配列
部品番号 | 名称(色) | 説明 |
---|
LED3 | ユーザー LED(緑) | トランジスタを経由してi.MX 8M PlusのGPIO1_IO14ピンに接続
(Low: 消灯、High: 点灯) |
-
パレットから [inject] ノードをワークスペースにドラッグ、ドロップします。
[inject] ノードのプロパティを編集します。[inject] は2秒間隔で実行します。
名前: LED Blink
繰り返し: 指定した時間間隔
時間間隔:2秒
-
[trigger] ノードをドラッグ、ドロップします。
[trigger] ノードのプロパティを編集します。
[trigger] は 1 を送信して1秒待機後、0 を送信します。これにより点滅動作を実現します。
送信データ:1
送信後の処理:指定した時間待機
1秒
再送信データ:0
-
[LED Blink] ノードの右側にある端子をクリックし、[trigger] ノードの左側の端子を選択して放します。
-
[write file] ノードをドラッグ、ドロップします。
[write file] ノードのプロパティを編集します。
/sys/class/leds/led1/brightness
ファイルへ [trigger] からの送信データを書き込みます。
ファイル名: /sys/class/leds/led1/brightness
動作: ファイルを上書き
文字コード: デフォルト
名前: LED1
-
[trigger] ノードの右側にある端子をクリックし、[LED1] ノードの左側の端子を選択して放します。
-
[debug] ノードをドラッグ、ドロップします。
[LED1] ノードの右側にある端子をクリックし、[debug] ノードの左側の端子を選択して放します。
-
画面右上の [デプロイ] を押します。ユーザー LED(緑) が1秒毎に点滅を繰り返す動きをすれば成功です。
ここでは、 Armadillo-IoT ゲートウェイ G4 の CPU の測定温度を1秒間隔で取得するフローを作成します。全て Node-RED のコアノードを使用します。
/sys/class/thermal/thermal_zone0/temp
ファイルの値を読み出すことによって測定温度を取得することができます。
温度はミリ°C の単位で表示されるため、°C 単位への変換も行います。
-
パレットから [inject] ノードをワークスペースにドラッグ、ドロップします。
[inject] ノードのプロパティを編集します。[inject] は1秒間隔で実行します。
繰り返し: 指定した時間間隔
時間間隔: 1秒
-
[read file] ノードをドラッグ、ドロップします。
[read file] ノードのプロパティを編集します。
/sys/class/thermal/thermal_zone0/temp
ファイルの値を読み出します。
ファイル名: /sys/class/thermal/thermal_zone0/temp
出力形式: 文字列
文字コード: デフォルト
名前: CPU temp
-
[Get CPU temp] ノードの右側にある端子をクリックし、[CPU temp] ノードの左側の端子を選択して放します。
-
[function] ノードをドラッグ、ドロップします。
[function] ノードのプロパティを編集します。
CPU の測定温度がミリ°C の単位のため、°C の単位へ変換します。
msg.payload
で渡された値を 1000 で割り、msg.payload
に戻します。
名前: CPU temp calc
コード:
msg.payload = msg.payload / 1000;
return msg;
-
[CPU temp] ノードの右側にある端子をクリックし、[CPU temp calc] ノードの左側の端子を選択して放します。
-
[debug] ノードをドラッグ、ドロップします。
[CPU temp calc] ノードの右側にある端子をクリックし、[debug] ノードの左側の端子を選択して放します。
-
画面右上の [デプロイ] を押します。デバッグメッセージに1秒毎に CPU の測定温度が表示されます。
4.4.3. RS-485 modbus RTU 読み出しを行う
ここでは、 USB RS-485 変換器を使用した Modubus RTU 読み出し用フローを作成します。
Node-RED のコアノードのほかに modbus-client ノード、Modbus-Read ノード、 modbus-response ノードを使用します。
RS-485 シリアルインターフェースのデバイスファイルは、/dev/ttyUSB0
を使用します。
USB の場所については 「インターフェースレイアウト」 をご確認ください。
今回は以下のRS-485通信対応デバイスを想定した場合の設定内容となります。
実際に動作確認する場合は、使用するRS-485通信対応デバイスの設定に変更してください。
ユニットID: 1
通信プロトコル: Modbus RTU
ボーレート: 9600
読み出しアドレス: 0x00
ファンクションコード: 1
-
パレットから [Modbus-Read] ノードをワークスペースにドラッグ、ドロップします。
-
[Modbus-Read] ノードのプロパティを編集します。
先に Server を設定する必要があります。[新規に modbus-client を追加] の右隣の編集ボタンを押して [modbus-client] を作成します。
名前: RS485 slave device
Type: Serial
Serial port: /dev/ttyUSB0
Serial type: RTU
Baud rate: 9600
Unit-Id: 1
[Modbus-Read] ノードのプロパティを編集します。
名前: slave device
トピック:
Unit-Id:
FC: FC 1:Read Coil Status
Address: 0
Quantity: 1
Poll Rate: 1 Second(s)
Server: RS485 slave device
-
[Modbus-Response] ノードをドラッグ、ドロップします。
[slave device] ノードの右側にある端子をクリックし、[Modbus-Response] ノードの左側の端子を選択して放します。
-
画面右上の [デプロイ] を押します。読み出しに成功すると1秒毎に読みだした値が更新され [Modbus-Response] ノードの下に表示されます。
4.4.4. CPU の測定温度のグラフをダッシュボードに表示する
「CPU の測定温度を取得する」 で取得した CPU 温度をダッシュボードにグラフとして表示するフローを作成します。
サイドバーの右端にある三角形のボタンを押し、[ダッシュボード] を選択します。
[ダッシュボード] 編集画面が表示されることを確認します。
[+タブ] ボタンを押して [Tab1] を追加します。
[Tab1] プロパティを編集します。
名前: Armadillo
アイコン: dashboard
[Armadillo] タブが追加されました。
名前: Armadillo
アイコン: dashboard
[Armadillo] 横の [+グループ] ボタンを押して [Group1] を追加します。
名前: Armadillo
アイコン: dashboard
[Group1] プロパティを編集します。
名前: Group 1
タブ: Armadillo
種類:
幅: 15
□グループ名を表示する
[chart] ノードをワークスペースにドラッグ、ドロップします。ダッシュボード編集画面の [Group1] グループに追加されたことを確認します。
[chart] ノードのプロパティを編集します。
グループ: [Armadillo] Group 1
サイズ: 自動
ラベル: CPU temp
種類: 折れ線グラフ
X軸: 直近1時間
X軸ラベル: HH:mm:ss
Y軸: 最小 20 最大 50
凡例: 非表示 補完: 直線
[CPU temp calc] ノードの右側にある端子をクリックし、[CPU temp] ノードの左側の端子を選択して放します。
画面右上の [デプロイ] を押します。ダッシュボード編集画面の [テーマ] タブの右側にある四角に矢印が重なったボタンを選択すると、ダッシュボードが表示されます。
-
ダッシュボードの CPU 温度のグラフは一秒毎に更新されます。
ここでは、外部プログラムを実行しその結果を取得するフローを作成します。
外部プログラムは [exec] ノードで実行することができます。
ここでの外部プログラムとはシステムコマンドやユーザー自身が作成したプログラムのことを指します。
例として date
コマンドを実行するフローを作成します。
-
パレットから [inject] ノードをワークスペースにドラッグ、ドロップします。
プロパティはデフォルトから変更ありません。
-
[exec] ノードをドラッグ、ドロップします。
[exec] ノードのプロパティを編集します。
コマンド: date
引数: なし
-
[indect] ノードの右側にある端子をクリックし、[exec] ノードの左側の端子を選択して放
します。
-
[debug] ノードをドラッグ、ドロップします。
[exec] ノードの右側の一番上にある端子をクリックし、[debug] ノードの左側の端子を選択して放します。
-
画面右上の [デプロイ] を押します。
-
[inject] ノードの左の四角を押すと [exec] ノードに設定した
date
コマンドが実行され標準出力の結果が
デバッグメッセージに表示されます。
[exec] ノードの右の端子は上からそれぞれ「標準出力」「標準エラー出力」「返却コード」となっており、
取得したい出力によって使い分けることができます。
ここでは、 Node-RED を任意のタイミングで終了するフローを作成します。
Node-RED のコアノードのほかに exit ノードを使用します。
| |
---|
Node-RED 終了後、Node-RED を再起動するためには Armadillo-IoT ゲートウェイ G4 の電源を再投入する必要があります。 |
-
パレットから [inject] ノードをワークスペースにドラッグ、ドロップします
[inject] ノードのプロパティを編集します。
名前: Finish Node-RED
繰り返し: なし
-
[exit] ノードをドラッグ、ドロップします。
[exit] ノードのプロパティを編集します。
Name: exit
Exit code: 0
[Finish Node-RED] ノードの右側にある端子をクリックし、[exit] ノードの左側の端子を選択して放します。
-
画面右上の [デプロイ] を押します。[Finish Node-RED] ノードの左側にあるボタンを押すと Node-RED が終了します。