Skip to main content

Edge Box RPi 200とNode RedおよびBACnet TCP

はじめに

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

はじめに

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

ハードウェアの準備

Edge Box RPi 200

ソフトウェアの準備

Edge Boxは、Raspberry Pi OSがプリインストールされた状態でお手元に届きます。このデバイスを初めて起動する場合は、Getting Started Wikiをお読みください。Node-REDのGetting Startedガイドも用意しています。このwikiを進める前に、このガイドを確認することをお勧めします。このチュートリアルでは、YABE室温シミュレーターを実行するホストPCと、Edge Box上で動作するNode-REDを接続します。

YABE

このリンクにアクセスして、YABE(Yet Another BACnet Explorer)をダウンロードしてください。YABEはBACnetデバイスのシミュレーションと探索を可能にする多機能ツールで、テストと開発目的に最適です。ホストPCにダウンロードしてインストールすると、YABEを使用して室温データをシミュレートし、Edge Box上のNode-REDを使用してそのデータを読み取り、処理します。

BACnet IP用のイーサネット設定の構成

デバイスのIPドメインがワイヤレス設定と異なるため、IP設定を手動で変更する必要がある場合があります。そのために、

  • ステップ01: 次のコマンドを実行します:
sudo nano /etc/dhcpcd.conf
  • ステップ 02: 次に、デバイスのネットワークドメインに応じてイーサネットポートの設定を構成し、metricコマンドを使用して優先度を設定します。最も低いmetricが最も高い優先度を持ちます。その後、Edge BoxとDeviceを接続します。

BACnetノードのインストール

  1. Node-REDを開く: Edge BoxでNode-REDを起動します。通常、Webブラウザを開いてhttp://<your-edgebox-ip>:1880にアクセスすることでアクセスできます。

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

  3. 新しいノードをインストール: 「Manage palette」ウィンドウで、「Install」タブに移動します。

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

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

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

  7. インストールを確認: インストールが完了すると、BACnetノードがNode-REDパレットで利用可能になります。Node-REDエディターの左サイドバーのノードリストを確認することで、これを確認できます。

これで、node-red-contrib-bacnet-extendedのインストールが正常に完了し、Node-REDフローでBACnetデバイスを統合するために使用を開始できます。

室温コントローラーシミュレーターの開始

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

完了したら、YABEを起動する必要があります。

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

note

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

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

BACnet IPデバイスの検出

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

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

  3. ノードを接続: 以下の方法でノードを接続します:

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

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

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

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

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

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

  1. ノードを準備する:

    • 4つのノードが必要です:Inject、Function、Read-All-Devices、Debug。
  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. ノードを準備する:

    • 4つのノードが必要です:Inject、Function、Read-All-Devices、Debug。
  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ノードをダブルクリックして設定ウィンドウを開きます。
    • ファンクションブロックに以下のコードを入力します:
       msg.deviceId=DeviceID;
    msg.address="IP:PORT ADD";
    return msg;
    • Debugノードの近くにある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...