有没有人在 BACnet 服务器上使用 bacnet4j 构建多个虚拟本地设备?必须做些什么,才能实现这一目标?
这基本上是可能的吗?
是的,您可以使用 bacnet4j 创建 BACnet 服务器。以下示例显示如何使用模拟值 BACnet 对象设置设备:
IpNetwork network = new IpNetwork("10.78.20.255", 0xBAC5);
Transport transport = new Transport(network);
// create device with random device number
int localDeviceID = 10000 + (int) ( Math.random() * 10000);
LocalDevice localDevice = new LocalDevice(localDeviceID, transport);
localDevice.initialize();
System.out.println("Local device is running with device id " + localDeviceID);
// create sample BACnet object
ObjectIdentifier objectId = new ObjectIdentifier(ObjectType.analogValue, 1);
BACnetObject object = new BACnetObject(localDevice, objectId);
localDevice.addObject(object);
请注意,您必须确保对象标识符(示例中的模拟值 1)在设备上是唯一的。
我的建议是考虑使用环回地址,或者更确切地说(不是众所周知的)回溯地址范围。
换句话说,尽管很多人都知道 127.0.0.1 的 IP(v4) 地址是环回地址,但没有多少人知道/停下来意识到它是 A 类地址,换句话说,有很多(本地) 除了典型/默认的 127.0.0.1 地址之外,您可以使用/在此 127.xyz 环回范围内可用的 IP(v4) 地址,例如 127.0.0.2/etc - 两者(/范围内的所有地址)都将(/应该)解析到您的本地计算机,因此允许您的所有(虚拟)设备具有相同的(BACnet)端口#但都分配/使用唯一的 IP 地址。