Edge Box RPi 200与Node Red和BACnet TCP
介绍
BACnet IP(基于IP的楼宇自动化和控制网络)是一种专为管理和自动化楼宇系统而设计的通信协议。它使来自不同制造商的设备能够在标准IP网络上无缝互操作,增强了系统集成和灵活性。BACnet IP在楼宇管理系统(BMS)中的主要优势包括改善的可扩展性、更容易的安装和维护,以及利用现有网络基础设施的能力。BACnet IP还支持实时数据交换,促进了对楼宇系统更好的监控和控制。这导致了能源效率的提高、运营成本的降低,以及居住者舒适度和安全性的增强。
开始使用
在开始这个项目之前,您可能需要按照此处描述的方式提前准备硬件和软件。
硬件准备
Edge Box RPi 200 |
---|
![]() |
软件准备
Edge Box 出厂时预装了 Raspberry Pi OS。如果您是第一次启动此设备,请阅读我们的入门指南 Wiki。我们已经准备了一份Node-RED 入门指南。建议您在继续阅读本 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 和设备。
安装 BACnet 节点
-
打开 Node-RED: 在您的 Edge Box 上启动 Node-RED。您通常可以通过打开网页浏览器并导航到
http://<your-edgebox-ip>:1880
来访问它。 -
访问管理调色板: 在 Node-RED 界面的右上角,点击三条横线(菜单)打开主菜单。从下拉菜单中选择"管理调色板"。
-
安装新节点: 在"管理调色板"窗口中,转到"安装"选项卡。
-
搜索包: 在搜索框中,输入
node-red-contrib-bacnet-extended
来查找包。 -
安装包: 一旦您在可用节点列表中看到
node-red-contrib-bacnet-extended
,点击旁边的"安装"按钮。这将开始安装过程。 -
等待安装完成: 安装可能需要几分钟时间。完成后,您应该会看到确认消息。
-
验证安装: 安装完成后,BACnet 节点将在 Node-RED 调色板中可用。您可以通过检查 Node-RED 编辑器左侧边栏中的节点列表来验证这一点。
现在,您已成功安装了 node-red-contrib-bacnet-extended
,可以开始使用它将 BACnet 设备与您的 Node-RED 流程集成。
启动房间温度控制器模拟器
安装 YABE 后,导航到 add-on
文件夹并双击 bacnet.Room.Simulator
来启动它。
完成后,您需要启动 YABE。

然后,点击 +
标记添加设备并输入您 PC 以太网端口的 IP 地址。点击"开始"。
您可能需要配置以太网端口 IP 地址,以确保它与 EdgeBox 和您的 PC 在同一网络域中。
之后,您应该能够看到具有与房间温度模拟器相同设备 ID 的设备。
发现 BACnet IP 设备
-
所需节点: 您将需要以下四个节点:
- 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 节点)来启动发现过程。
-
检查调试输出: 等待输出出现在调试窗口中。您将在调试消息中看到设备 IP 和设备 ID。

读取所有设备参数
要使用 Node-RED 从 BACnet 设备读取所有参数,请按照以下步骤操作:
-
准备节点:
- 您需要四个节点: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 节点上的时间戳按钮来启动过程。
-
检查输出:
- 等待输出出现在调试窗口中。您将在 BACnet 网络区域中看到设备的参数。
此设置将从您网络上的 BACnet 设备读取所有参数,并在 Node-RED 的调试窗口中显示它们。


读取单个设备数据
-
准备节点:
- 您需要四个节点: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 节点上的时间戳按钮来启动过程。
-
检查输出:
- 等待输出出现在调试窗口中。您将在 BACnet 网络区域中看到所选设备的参数。

读取单个设备特定对象数据
-
准备节点:
- 您需要四个节点:Inject、两个 function 节点、Read-Single-Device 和 Debug。
-
将节点添加到工作台:
- 将 Inject、两个 function 节点、Read-Single-Device 和 Debug 节点拖放到您的工作台上。
-
连接节点:
-
按以下顺序连接节点:
Inject >>>> Function >>>> Read-Single-Devices >>>> Function >>>> Debug
-
-
配置 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;
-
部署流程:
- 点击 Node-RED 界面右上角的"Deploy"按钮来部署流程。
-
启动设备参数读取:
- 点击 Inject 节点上的时间戳按钮来启动过程。
-
检查输出:
- 等待输出出现在 Debug 窗口中。您将在 Debug 窗口中看到 BACnet 网络区域中所选设备的特定对象的参数。

技术支持与产品讨论
感谢您选择我们的产品!我们在这里为您提供不同的支持,以确保您使用我们产品的体验尽可能顺畅。我们提供多种沟通渠道,以满足不同的偏好和需求。