Not able to create local device using port 47809
-
Hi,
With BACnet4J library, I am trying to create a new object of the local device using port 47809 and initialize it.
Code snippet::static LocalDevice initializeLocalDevice() {
LocalDevice device = null;
try {
device = new LocalDevice(localDeviceId, new DefaultTransport(new IpNetworkBuilder().withPort(47809).build()));
device.initialize();
} catch (Exception e) {
System.err.println("Error in initializeLocalDevice: " + e);
e.printStackTrace();
}
return device;
}But, got below error while executing the above code.
Error:
Error in initializeLocalDevice: java.lang.IllegalArgumentException: Either withBroadcast or withSubnet must be called.
java.lang.IllegalArgumentException: Either withBroadcast or withSubnet must be called.
at com.serotonin.bacnet4j.npdu.ip.IpNetworkBuilder.build(IpNetworkBuilder.java:129)Please provide any solution for the same.
Thanks,
Vihangi -
Hi Vihangi, welcome to the forum.
The answer is right there in the exception. If you're going to be developing with BACnet4J you will need to be able to read in the code why the exception has occurred if its message is not clear to you: https://github.com/infiniteautomation/BACnet4J/blob/master/src/main/java/com/serotonin/bacnet4j/npdu/ip/IpNetworkBuilder.java#L128
-
Hi Phildunlap, Thanks for the reply.
My error is resolved by doing below changes:
new DefaultTransport(new IpNetworkBuilder().withPort(47809).withBroadcast(broadcastAdd, 24).build()Can we implement BACnet router to do communication between two devices with the different ports?
For example:
One device with port 47808 and another one with 47809Is it possible to do this with BACnet4J library?
-
Per the BACnet specification all devices on a network must be on the same port. So, to bridge networks you need a BBMD, which could be a BACnet router. The IpNetwork class does have support for behaving as a BBMD, but as Mango does not expose this functionality I have little experience with it. You can see there is an enableBBMD method, though: https://github.com/infiniteautomation/BACnet4J/blob/master/src/main/java/com/serotonin/bacnet4j/npdu/ip/IpNetwork.java#L991
-
Thanks, Phildunlap !!
-
Hi Phildunlap,
I am getting below error while reading log record of TrendLog Object.
Error:
Error: ErrorAPDU(errorClass=property, errorCode=read-access-denied,errorClass=property, errorCode=read-access-denied)Other Property Values are as below:
Property:: acked-transitions Value :: EventTransitionBits [to-offnormal=true, to-fault=true, to-normal=true]
Property:: align-intervals Value :: true
Property:: buffer-size Value :: 50
Property:: client-cov-increment Value :: ClientCov [entry=2.0]
Property:: cov-resubscription-interval Value :: 200
Property:: description Value :: EventEnrollment Object
Property:: event-enable Value :: EventTransitionBits [to-offnormal=false, to-fault=true, to-normal=false]
Property:: event-state Value :: normal
Property:: event-time-stamps Value :: [TimeStamp [choice=DateTime [date=Date [year=255, month=UNSPECIFIED, day=255, dayOfWeek=UNSPECIFIED], time=255:255:255.255]], TimeStamp [choice=DateTime [date=Date [year=255, month=UNSPECIFIED, day=255, dayOfWeek=UNSPECIFIED], time=255:255:255.255]], TimeStamp [choice=DateTime [date=Date [year=255, month=UNSPECIFIED, day=255, dayOfWeek=UNSPECIFIED], time=255:255:255.255]]]
Property:: interval-offset Value :: 100
Property:: last-notify-record Value :: 1064
Property:: log-device-object-property Value :: DeviceObjectPropertyReference [objectIdentifier=analog-output 12, propertyIdentifier=present-value, propertyArrayIndex=null, deviceIdentifier=device 105]
Property:: enable Value :: true
Property:: log-interval Value :: 100
Property:: logging-type Value :: polled
Property:: notification-class Value :: 19
Property:: notification-threshold Value :: 100
Property:: notify-type Value :: event
Property:: object-identifier Value :: trend-log 26
Property:: object-name Value :: EventEnrollment-Object
Property:: object-type Value :: trend-log
Property:: profile-name Value :: Default
Property:: record-count Value :: 50
Property:: records-since-notification Value :: 26
Property:: start-time Value :: DateTime [date=Date [year=119, month=SEPTEMBER, day=27, dayOfWeek=FRIDAY], time=4:0:0.0]
Property:: stop-time Value :: DateTime [date=Date [year=119, month=OCTOBER, day=4, dayOfWeek=FRIDAY], time=6:30:0.0]
Property:: stop-when-full Value :: false
Property:: total-record-count Value :: 1094Please help me with this.
As I want to poll and read trend logs. -
Did you attempt to figure this out before you asked? Are you attempting to read the log buffer property? https://github.com/infiniteautomation/BACnet4J/blob/master/src/main/java/com/serotonin/bacnet4j/obj/TrendLogObject.java#L233
-
Yes, I have tried to trigger it and it will work. But, with " logging-type Value = polled", it was not able to get a trend log.
With polling, it will generate below error:
ErrorAPDU(errorClass=property, errorCode=invalid-data-type,errorClass=property, errorCode=invalid-data-type) Error: ErrorAPDU(errorClass=property, errorCode=invalid-data-type,errorClass=property, errorCode=invalid-data-type), originalInvokeId=18Read the output of log buffer property:
Error: ErrorAPDU(errorClass=property, errorCode=read-access-denied,errorClass=property, errorCode=read-access-denied)Is there any configuration issue?
-
Still not able to read Log buffer values.
Got same Error:
ErrorAPDU(errorClass=property, errorCode=invalid-data-type,errorClass=property, errorCode=invalid-data-type) Error: ErrorAPDU(errorClass=property, errorCode=invalid-data-type,errorClass=property, errorCode=invalid-data-type), originalInvokeId=18Please help me with this.