模拟器
拿其中一个模拟器Yabe来配合这次学习
安装好后,我们只需要用到这两个功能即可。
我们点击Simulator功能,会弹出这么一个模拟框。
这是模拟一个真实设备温度设备,底下的deviceId则为设备唯一标识。
我们同时打开多台,就可以发现他们的唯一标识不一样。
接下来打开Yabe
选择Add device,然后输入本机ip地址
然后你就会发现,它把我们刚刚打开的两台模拟设备扫描进去了。
选中其中一台设备后,下面Address Space会显示几行数据,对某个数据右键选择订阅后,你会发现,我们可以拿到模拟设备中的某个值的实时数据。
从而,我们能判断出,哪个属性值对应的是模拟设备中的什么,基于软件对设备的通讯到此就结束了。
重点在于我们如何使用Java来使用BACnet进行设备之间的通讯。
使用Java主动查
引入maven
在开始示例之前,请确保已经下载并配置了BACnet4J库。
<!-- https://github.com/infiniteautomation/BACnet4J -->
<dependency>
<groupId>com.infiniteautomation</groupId>
<artifactId>bacnet4j</artifactId>
<version>6.0.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/bacnet/bacnet4j-6.0.0.jar</systemPath>
</dependency>
通过测试,单引用bacnet4j依赖,是远远不够的。使用起来会报各种异常,
比如
- slf4j的 NoClassDefFoundError: org/slf4j/LoggerFactory
- warp的 NoClassDefFoundError: lohbihler/warp/WarpScheduledExecutorService
- commons的 NoCl