Skip to main content

reTerminal DMとNode-REDおよびBACnet TCP

note

この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues

はじめに

BACnet IP(Building Automation and Control Network over IP)は、建物のシステムを管理および自動化するために設計された通信プロトコルです。これにより、異なるメーカーのデバイスが標準IPネットワーク上でシームレスに相互運用できるようになり、システム統合と柔軟性が向上します。BMS(ビル管理システム)におけるBACnet IPの主な利点には、拡張性の向上、設置と保守の容易化、既存のネットワークインフラの活用が含まれます。また、BACnet IPはリアルタイムのデータ交換をサポートしており、建物のシステムの監視と制御を改善します。これにより、エネルギー効率の向上、運用コストの削減、居住者の快適性と安全性の向上が実現します。

始める前に

このプロジェクトを開始する前に、以下に記載されているようにハードウェアとソフトウェアを事前に準備する必要があります。

ハードウェア

ソフトウェア準備

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ノードのインストール

  1. Node-REDを開く: reTerminalでNode-REDを起動します。通常、ウェブブラウザを開き、http://<your-reTerminal-DM-ip>:1880にアクセスすることで利用できます。

  2. パレット管理にアクセス: Node-REDインターフェースの右上隅にある三本線(メニュー)をクリックしてメインメニューを開きます。ドロップダウンメニューから「パレット管理」を選択します。

  3. 新しいノードをインストール: 「パレット管理」ウィンドウで「インストール」タブに移動します。

  4. パッケージを検索: 検索ボックスにnode-red-contrib-bacnet-extendedと入力してパッケージを探します。

  5. パッケージをインストール: node-red-contrib-bacnet-extendedが利用可能なノードのリストに表示されたら、その横にある「インストール」ボタンをクリックします。これでインストールプロセスが開始されます。

  6. インストール完了を待つ: インストールには数分かかる場合があります。完了すると確認メッセージが表示されます。

  7. インストールを確認: インストールが完了すると、BACnetノードがNode-REDのパレットに表示されます。Node-REDエディターの左側バーのノードリストを確認してインストールを確認できます。

これでnode-red-contrib-bacnet-extendedを正常にインストールし、Node-REDフローでBACnetデバイスを統合する準備が整いました。

室温コントローラーシミュレーターの起動

YABEをインストールした後、add-onフォルダーに移動し、bacnet.Room.Simulatorをダブルクリックして起動します。

その後、YABEを起動する必要があります。

次に、+マークをクリックしてデバイスを追加し、PCのイーサネットポートのIPアドレスを入力します。「開始」をクリックします。

note

イーサネットポートのIPアドレスを設定し、reTerminal DMとPCが同じネットワークドメイン内にあることを確認する必要がある場合があります。

その後、室温シミュレーターと同じデバイスIDを持つデバイスが表示されるはずです。

BACnet IPデバイスの検出

  1. 必要なノード: 以下の4つのノードが必要です:

    • Inject
    • Function
    • Discover-devices
    • Debug
  2. フローにノードを追加: 上記のノードをNode-REDのワークベンチフローにドラッグ&ドロップします。

  3. ノードを接続: ノードを以下のように接続します:

    • Inject >>> Function >>> Discover-devices >>> Debug
  1. Functionノードを設定: Functionノードをダブルクリックして設定ダイアログを開きます。以下のコードを関数ブロックに記述します:

    msg.reuseAddr = true;
    msg.transportClosedDuration = 8000;
    return msg;
  2. フローをデプロイ: Node-REDインターフェースの右上隅にある「デプロイ」ボタンをクリックしてフローをデプロイします。

  3. デバイス検出をトリガー: タイムスタンプボタン(Injectノード)をクリックして検出プロセスを開始します。

  4. デバッグ出力を確認: デバッグウィンドウに出力が表示されるまで待ちます。デバッグメッセージにデバイスのIPとデバイスIDが表示されます。

すべてのデバイスパラメータを読み取る

Node-RED を使用して BACnet デバイスからすべてのパラメータを読み取るには、以下の手順に従ってください:

  1. ノードの準備:

    • Inject、Function、Read-All-Devices、Debug の4つのノードが必要です。
  2. ノードをワークベンチに追加:

    • Inject、Function、Read-All-Devices、Debug ノードをドラッグ&ドロップしてワークベンチに追加します。
  3. ノードを接続:

    • 以下の順序でノードを接続します:
      Inject >>>> Function >>>> Read-All-Devices >>>> Debug
  1. Function ノードを設定:
    • Function ノードをダブルクリックして設定ウィンドウを開きます。
    • 以下のコードを関数ブロックに入力します:
    • msg.reuseAddr = true;
      msg.transportClosedDuration = 8000;
      return msg;
  1. フローをデプロイ:

    • Node-RED インターフェースの右上にある「Deploy」ボタンをクリックしてフローをデプロイします。
  2. デバイスパラメータの読み取りを開始:

    • Inject ノードのタイムスタンプボタンをクリックしてプロセスを開始します。
  3. 出力を確認:

    • Debug ウィンドウに出力が表示されるのを待ちます。BACnet ネットワークエリア内のデバイスのパラメータが表示されます。

このセットアップにより、ネットワーク上の BACnet デバイスからすべてのパラメータを読み取り、Node-RED の Debug ウィンドウに表示されます。

単一デバイスデータを読み取る

  1. ノードの準備:

    • Inject、Function、Read-All-Devices、Debug の4つのノードが必要です。
  2. ノードをワークベンチに追加:

    • Inject、Function、Read-Single-Device、Debug ノードをドラッグ&ドロップしてワークベンチに追加します。
  3. ノードを接続:

    • 以下の順序でノードを接続します:
      Inject >>>> Function >>>> Read-Single-Device >>>> Debug
  1. Function ノードを設定:
    • Function ノードをダブルクリックして設定ウィンドウを開きます。
    • 以下のコードを関数ブロックに入力します:
    •    msg.deviceId=DeviceID;
      msg.address="IP:PORT ADD";
      return msg;
  1. フローをデプロイ:

    • Node-RED インターフェースの右上にある「Deploy」ボタンをクリックしてフローをデプロイします。
  2. デバイスパラメータの読み取りを開始:

    • Inject ノードのタイムスタンプボタンをクリックしてプロセスを開始します。
  3. 出力を確認:

    • Debug ウィンドウに出力が表示されるのを待ちます。BACnet ネットワークエリア内の選択されたデバイスのパラメータが表示されます。

単一デバイスの特定オブジェクトデータを読み取る

  1. ノードの準備:

    • 以下の4つのノードが必要です: Inject、2つのFunctionノード、Read-Single-Device、Debug。
  2. ノードをワークベンチに追加:

    • Inject、2つのFunctionノード、Read-Single-Device、Debugノードをワークベンチにドラッグ&ドロップします。
  3. ノードを接続:

    • 以下の順序でノードを接続します:
      Inject >>>> Function >>>> Read-Single-Devices >>>> Function >>>> Debug
  1. 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;

  1. フローをデプロイ:

    • Node-REDインターフェースの右上にある「Deploy」ボタンをクリックしてフローをデプロイします。
  2. デバイスパラメータの読み取りを開始:

    • Injectノードのタイムスタンプボタンをクリックしてプロセスを開始します。
  3. 出力を確認:

    • Debugウィンドウに出力が表示されるのを待ちます。BACnetネットワークエリア内の選択されたデバイスの特定オブジェクトのパラメータが表示されます。

技術サポートと製品に関する議論

弊社製品をご利用いただきありがとうございます!製品の使用体験がスムーズになるよう、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、いくつかのコミュニケーションチャネルを用意しています。

Loading Comments...