reTerminal DMとNode Red、BACnet TCP
はじめに
BACnet IP(Building Automation and Control Network over IP)は、ビルシステムの管理と自動化のために設計された通信プロトコルです。異なるメーカーのデバイスが標準IPネットワーク上でシームレスに相互運用できるようにし、システム統合と柔軟性を向上させます。ビル管理システム(BMS)におけるBACnet IPの主な利点には、スケーラビリティの向上、設置とメンテナンスの簡素化、既存のネットワークインフラストラクチャの活用能力が含まれます。BACnet IPはリアルタイムデータ交換もサポートし、ビルシステムのより良い監視と制御を促進します。これにより、エネルギー効率の向上、運用コストの削減、居住者の快適性と安全性の向上が実現されます。
はじめに
このプロジェクトを開始する前に、ここで説明されているように、ハードウェアとソフトウェアを事前に準備する必要があります。
ハードウェア
reTerminal DM |
---|
![]() |
ソフトウェアの準備
Node-REDを使った入門ガイドを用意しました。このwikiに進む前に、このガイドを確認することをお勧めします。
YABE
このリンクにアクセスして、YABE(Yet Another BACnet Explorer)をダウンロードしてください。YABEはBACnetデバイスをシミュレートし、探索することができる多機能ツールで、テストや開発目的に最適です。ホストPCにダウンロードしてインストールすると、YABEを使用して室温データをシミュレートし、reTerminal DMのNode-REDを使ってそのデータを読み取り、処理します。
BACnet IP用のイーサネット設定の構成
デバイスのIPドメインがワイヤレス設定と異なるため、IP設定を手動で変更する必要がある場合があります。そのために、
- ステップ01: 次のコマンドを実行します:
sudo nano /etc/dhcpcd.conf
- ステップ 02: 次に、PLC/デバイスのネットワークドメインに応じてイーサネットポートの設定を構成し、metric コマンドを使用して優先度を設定します。最も低いメトリックが最も高い優先度を持ちます。
BACnet ノードのインストール
-
Node-REDを開く: reTerminalでNode-REDを起動します。通常、Webブラウザを開いて
http://<your-reTerminal-DM-ip>:1880
にアクセスすることでアクセスできます。 -
パレット管理にアクセス: Node-REDインターフェースの右上角にある3本の水平線(メニュー)をクリックしてメインメニューを開きます。ドロップダウンメニューから「Manage palette」を選択します。
-
新しいノードをインストール: 「Manage palette」ウィンドウで、「Install」タブに移動します。
-
パッケージを検索: 検索ボックスに
node-red-contrib-bacnet-extended
と入力してパッケージを見つけます。 -
パッケージをインストール: 利用可能なノードのリストに
node-red-contrib-bacnet-extended
が表示されたら、その横にある「Install」ボタンをクリックします。これによりインストールプロセスが開始されます。 -
インストール完了を待つ: インストールには数分かかる場合があります。完了すると、確認メッセージが表示されます。
-
インストールを確認: インストールが完了すると、BACnet ノードがNode-REDパレットで利用可能になります。Node-REDエディターの左サイドバーのノードリストを確認することで、これを確認できます。
これで、node-red-contrib-bacnet-extended
のインストールが正常に完了し、Node-REDフローで BACnet デバイスを統合するために使用を開始できます。
室温コントローラーシミュレーターの開始
YABEをインストールしたら、add-on
フォルダに移動し、bacnet.Room.Simulator
をダブルクリックして起動します。
完了したら、YABEを起動する必要があります。

次に、+
マークをクリックしてデバイスを追加し、PCのイーサネットポートのIPアドレスを入力します。「Start」をクリックします。
reTerminal DMとPCの両方が同じネットワークドメインにあることを確認するために、イーサネットポートのIPアドレスを設定する必要がある場合があります。
その後、室温シミュレーターと同じデバイスIDを持つデバイスが表示されるはずです。
BACnet IPデバイスの発見
-
必要なノード: 以下の4つのノードが必要です:
- Inject
- Function
- Discover-devices
- Debug
-
フローにノードを追加: 上記のノードをNode-REDワークベンチフローにドラッグアンドドロップします。
-
ノードを接続: 以下の方法でノードを接続します:
- Inject >>> Function >>> Discover-devices >>> Debug
-
Functionノードを設定: Functionノードをダブルクリックして設定ダイアログを開きます。ファンクションブロックに以下のコードを記述します:
msg.reuseAddr = true;
msg.transportClosedDuration = 8000;
return msg;
-
フローをデプロイする: Node-REDインターフェースの右上角にある「Deploy」ボタンをクリックしてフローをデプロイします。
-
デバイス検出をトリガーする: タイムスタンプボタン(Injectノード)をクリックして検出プロセスを開始します。
-
デバッグ出力を確認する: Debugウィンドウに出力が表示されるまで待ちます。デバッグメッセージでデバイスIPとデバイスIDが表示されます。

全デバイスパラメータの読み取り
Node-REDを使用してBACnetデバイスから全パラメータを読み取るには、以下の手順に従ってください:
-
ノードを準備する:
- 4つのノードが必要です:Inject、Function、Read-All-Devices、Debug。
-
ワークベンチにノードを追加する:
- Inject、Function、Read-All-Devices、Debugノードをワークベンチにドラッグ&ドロップします。
-
ノードを接続する:
-
以下の順序でノードを接続します:
Inject >>>> Function >>>> Read-All-Devices >>>> Debug
-
-
Functionノードを設定する:
- Functionノードをダブルクリックして設定ウィンドウを開きます。
- ファンクションブロックに以下のコードを入力します:
msg.reuseAddr = true;
msg.transportClosedDuration = 8000;
return msg;
-
フローをデプロイする:
- Node-REDインターフェースの右上角にある「Deploy」ボタンをクリックしてフローをデプロイします。
-
デバイスパラメータ読み取りを開始する:
- Injectノードのタイムスタンプボタンをクリックしてプロセスを開始します。
-
出力を確認する:
- Debugウィンドウに出力が表示されるまで待ちます。BACnetネットワークエリア内のデバイスのパラメータが表示されます。
この設定により、ネットワーク上のBACnetデバイスから全パラメータを読み取り、Node-REDのDebugウィンドウに表示します。

単一デバイスデータの読み取り
-
ノードを準備する:
- 4つのノードが必要です:Inject、Function、Read-All-Devices、Debug。
-
ワークベンチにノードを追加する:
- Inject、Function、Read-Single-Device、Debugノードをワークベンチにドラッグ&ドロップします。
-
ノードを接続する:
-
以下の順序でノードを接続します:
Inject >>>> Function >>>> Read-Single-Device >>>> Debug
-
-
Functionノードを設定する:
- Functionノードをダブルクリックして設定ウィンドウを開きます。
- ファンクションブロックに以下のコードを入力します:
msg.deviceId=DeviceID;
msg.address="IP:PORT ADD";
return msg;
-
フローをデプロイする:
- Node-REDインターフェースの右上角にある「Deploy」ボタンをクリックしてフローをデプロイします。
-
デバイスパラメータ読み取りを開始する:
- Injectノードのタイムスタンプボタンをクリックしてプロセスを開始します。
-
出力を確認する:
- Debugウィンドウに出力が表示されるまで待ちます。BACnetネットワークエリア内の選択されたデバイスのパラメータが表示されます。

単一デバイスの特定オブジェクトデータの読み取り
-
ノードの準備:
- 4つのノードが必要です:Inject、2つのFunctionノード、Read-Single-Device、およびDebug。
-
ワークベンチにノードを追加:
- Inject、2つのFunctionノード、Read-Single-Device、およびDebugノードをワークベンチにドラッグ&ドロップします。
-
ノードの接続:
-
以下の順序でノードを接続します:
Inject >>>> Function >>>> Read-Single-Devices >>>> Function >>>> Debug
-
-
Functionノードの設定:
- Injectノードの近くにあるFunctionノードをダブルクリックして設定ウィンドウを開きます。
- Functionブロックに以下のコードを入力します:
msg.deviceId=DeviceID;
msg.address="IP:PORT ADD";
return msg;- Debugノードの近くにあるFunctionノードをダブルクリックして設定ウィンドウを開きます。
- Functionブロックに以下のコードを入力します:
const objects = msg.payload['OBJECT_LIST(76)'];
let temperatureIndoor = null;
for (let obj of objects) {
if (obj['OBJECT_NAME(77)'] === 'Temperature.Indoor' && obj['OBJECT_TYPE(79)'] === 'ANALOG_INPUT(0)') {
temperatureIndoor = obj['PRESENT_VALUE(85)'];
break;
}
}
if (temperatureIndoor !== null) {
msg.payload = { 'Temperature.Indoor': temperatureIndoor };
} else {
msg.payload = { error: 'Temperature.Indoor not found' };
}
return msg;
-
フローのデプロイ:
- Node-REDインターフェースの右上角にある「Deploy」ボタンをクリックしてフローをデプロイします。
-
デバイスパラメータ読み取りの開始:
- Injectノードのタイムスタンプボタンをクリックしてプロセスを開始します。
-
出力の確認:
- Debugウィンドウに出力が表示されるまで待ちます。BACnetネットワークエリア内の選択されたデバイスの特定のオブジェクトのパラメータのみが表示されます。

技術サポート & 製品ディスカッション
弊社製品をお選びいただき、ありがとうございます!弊社製品での体験が可能な限りスムーズになるよう、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、複数のコミュニケーションチャンネルを用意しています。