Hi guys,
If I "extend" from the class "RemoteDevice" and then create a object of that, I can't use it to send regular BACnet requests. I always run in a NullPointerException.
/17:02:40.933 [BACnet4J transport for device 10001] ERROR com.serotonin.bacnet4j.transport.DefaultTransport - Error during send: OutgoingConfirmed [maxAPDULengthAccepted=-1, segmentationSupported=null, service=ReadPropertyRequest [objectIdentifier=device 2098177, propertyIdentifier=object-list, propertyArrayIndex=null], consumer=com.serotonin.bacnet4j.transport.ServiceFutureImpl@10a4064, address=Address [networkNumber=0, macAddress=[c0,a8,1,b1,ba,c0]], linkService=null]
java.lang.NullPointerException: null
at com.serotonin.bacnet4j.transport.DefaultTransport$OutgoingConfirmed.sendImpl(DefaultTransport.java:380)
at com.serotonin.bacnet4j.transport.DefaultTransport$Outgoing.send(DefaultTransport.java:336)
at com.serotonin.bacnet4j.transport.DefaultTransport.run(DefaultTransport.java:486)
at java.base/java.lang.Thread.run(Thread.java:830)
17:02:40.933 [BACnet4J transport for device 10001] ERROR com.serotonin.bacnet4j.transport.DefaultTransport - Original send stack
java.lang.Exception: null
at com.serotonin.bacnet4j.transport.DefaultTransport.send(DefaultTransport.java:292)
at com.serotonin.bacnet4j.transport.DefaultTransport.send(DefaultTransport.java:283)
at com.serotonin.bacnet4j.LocalDevice.send(LocalDevice.java:989)
at com.serotonin.bacnet4j.util.RequestUtils.sendOneAtATime(RequestUtils.java:425)
at com.serotonin.bacnet4j.util.RequestUtils.readProperties(RequestUtils.java:396)
at com.serotonin.bacnet4j.util.RequestUtils.readProperties(RequestUtils.java:257)
at com.serotonin.bacnet4j.util.RequestUtils.getProperties(RequestUtils.java:141)
at com.serotonin.bacnet4j.util.RequestUtils.getProperties(RequestUtils.java:136)
at com.bacnetbrowser.schoko.DeviceTest$Listener.iAmReceived(DeviceTest.java:40)
at com.serotonin.bacnet4j.event.DeviceEventHandler.fireIAmReceived(DeviceEventHandler.java:97)
at com.serotonin.bacnet4j.service.unconfirmed.IAmRequest.lambda$handle$0(IAmRequest.java:118)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:830)
The code I used for testing:
public class DeviceTest {
static LocalDevice localDevice;
public static void main(String[] args) throws Exception {
int localDevice_ID = 10001;
IpNetworkBuilder ipNetworkBuilder = new IpNetworkBuilder();
ipNetworkBuilder.withLocalBindAddress(IpNetwork.DEFAULT_BIND_IP);
ipNetworkBuilder.withBroadcast("255.255.255.255", IpNetwork.BVLC_TYPE);
ipNetworkBuilder.withPort(47808);
DefaultTransport transport = new DefaultTransport(ipNetworkBuilder.build());
localDevice = new LocalDevice(localDevice_ID, transport);
localDevice.getEventHandler().addListener(new Listener());
localDevice.initialize();
localDevice.startRemoteDeviceDiscovery();
}
static class Listener extends DeviceEventAdapter {
@Override
public void iAmReceived(RemoteDevice d) {
System.out.println("I am received" + d);
Device device = new Device(localDevice, d.getInstanceNumber(), d.getAddress());
try {
Map<PropertyIdentifier, Encodable> values = RequestUtils.getProperties(
localDevice, device, device.getObjectIdentifier(),null,
PropertyIdentifier.objectList);
System.out.println(values);
} catch (BACnetException e) {
e.printStackTrace();
}
}
}
static class Device extends RemoteDevice{
public Device(LocalDevice localDevice, int instanceNumber, Address address) {
super(localDevice, instanceNumber, address);
}
}
}
I would be glad if somone could have a look and give me a feedback ;-)
BR
Andreas