序
鉴于目前网上对于BACnet协议的相关文章比较少,所以写出这段时间对于java对接该协议的一个demo程序,供参考。
一、代码简介
本代码 gitee地址:gitee.com/Simon-Alexs… 仓库中的bacnet-demo
所使用的jar包为:
- BACnet6.0.0
- sero-scheduler1.1.0
- sero-warp1.1.0 BACnet sdk源码github地址:github.com/MangoAutoma…
本文章内代码曾参考此文章的内容:
二、BACnet协议相关的工具
- VTS自定义创建虚拟设备及点位:BACnet/IP之BACnet4j学习VTS创建虚拟设备及点位测试03_夢_殤的博客-CSDN博客_bacnet4j
- 设备可视化工具:Yet Another Bacnet Explorer download | SourceForge.net
三、代码包含demo内容
- 扫描网段内所有的设备;
- 读取设备的所有对象信息;
- 读取设备对象的属性值;
- 修改设备对象的属性值;
- 订阅设备对象的属性值的变化(COV);
- 失败:想尝试订阅事件,但是并没有发现相关的api,在Yabe工具中也没有看到相关的事件信息。
四、代码运行前必看
- 此代码基于Yabe这个可视化工具及其附带的设备模拟器进行编写。
- Yabe下载地址:liquidtelecom.dl.sourceforge.net/project/yet…
- Yabe安装后将自动带有模拟器 Bacnet.Room.Simulator.exe。(模拟器文件路径:模拟器在Yabe软件安装路径的/AddOn文件夹下。我的文件路径为:D:\ProgramFiles\Work\Others\BACnet\Yabe\AddOn\Bacnet.Room.Simulator.lnk)
- 运行此代码前:需在本机或者与本机同网段的其他机器上,运行Yabe软件附带的 Bacnet.Room.Simulator.exe ,代码里将访问此设备
- tips:该模拟器支持多开(多次打开此模拟器,会启动多个设备id不同的设备)
- 运行此代码前:需关闭 Yabe、InneaBACnetExplorer Free Edition等所有的浏览设备信息的可视化工具,否则代码里将无法请求到设备(当初只关了Yabe忘记了曾经安装过的InneaBACnetExplorer Free Edition,导致浪费了半天多的时间QAQ)
- 若要运行TestBACnetForSubscribe.java,则需将其内的 int remoteDeviceIdForSubscribeCOV = 1425616; 修改为你实际要访问的设备id值(Bacnet.Room.Simulator模拟器的设备id)
五、jar包加载
所需使用的三个jar包,需要指定仓库(pom文件中已写好相关说明)
ps:未对其进行完整验证,但是大致上是正确的。
附:其他资料
我自己所了解到的一些网站和文章,仅供参考:
- BACnetIntroduction.pdf,是一个人对于BACnet协议的介绍,写的很正式,有点官方的意思。该文章基于的协议版本为135-2012:链接:pan.baidu.com/s/1gzDSShLJ… 提取码:26f4
- BACnet Standard - BACnet International
- 协议购买地址(协议就是ASHRAE制定的,也是他们在维护和迭代):ASHRAE 135-2020 | ASHRAE Store (techstreet.com)
- 这里的项目好像是开发BACnet协议的实现的,应该是给设备服务商用的开源项目网站(bacnet官方维护)
- OPC和BACnet在智能建筑系统集成中的比较研究.pdf (book118.com)
已知协议版本:
- 135-2020(2020年10月发布,1428页)
- 135-2016(2016年01月发布,1378页)
- 135-2012(2012年01月发布,1052页)
- 135-2010(2011年01月发布)
- 135-2008(2009年01月发布)
- 135-2004(2004年01月发布)
- 135-2001(2001年01月发布)
- 135-1995(1995年01月发布)