Code-House / bacnet4j-wrapper

Simple facade for bacnet4j api.
GNU General Public License v3.0
48 stars 20 forks source link

Unsupported BACnet Object "Notification-Class" exception #24

Closed saransh14 closed 10 months ago

saransh14 commented 10 months ago

On using bacnet4j-wrapper APIs for fetching the present values of all the objects associated to a bacnet device, I'm getting an exception UnsupportedTypeException. image

Please provide the support for Notification-Class, so that I can extract the data out of the device.

Thanks, Saransh

saransh14 commented 10 months ago

@splatch Can you please let me know the release version which I shall use to pull in the latest changes that you've done for providing support for Notification Class object type. I can see the maven release workflow action failing for release of the updated code.

splatch commented 10 months ago

Latest version (1.3.0-SNAPSHOT) should be available through sonatype-oss: https://oss.sonatype.org/content/repositories/snapshots/

Let me know if it works for you, if so I'll cut a final release of 1.3.0.

saransh14 commented 10 months ago

Hi @splatch thanks for sharing the snapshot version, although the unsupported exceptions is solved, but still unable to fetch the value using client.getPresentValue(bacnetObject, new BypassBacnetConverter()) method.

Getting the following exception:

2023-11-02T06:52:20.762Z ERROR 1 --- [ scheduling-1] o.w.b.s.service.impl.BacnetServiceImpl : Property Name : Notification Class 1 :: Error occurred : org.code_house.bacnet4j.wrapper.api.BacNetClientException: Could not get property value

Same exception is coming for trendLog object type:

2023-11-02T06:52:20.945Z ERROR 1 --- [ scheduling-1] o.w.b.s.service.impl.BacnetServiceImpl : Property Name : Trend Log 1 :: Error occurred : org.code_house.bacnet4j.wrapper.api.BacNetClientException: Could not get property value

splatch commented 10 months ago

@saransh14 do you have a stack trace which covers library/wrapper. Failure in retrieval might be result of several things, knowing cause will help me with fix.

saransh14 commented 10 months ago

@splatch unable to generate the stack trace of the library/wrapper. Sharing the exception object with the parameter values

image
saransh14 commented 10 months ago

@splatch any update on this issue?

splatch commented 10 months ago

Not yet, I tested with devices I have, but none of them has notification class property within objects. I have to wire in another device (IOM from Johnson/Metasys) in order to check what going on.

Since this library does not use reflection the InvocationTargetException you see might come from upper layers., Can you look deeper if there is maybe actual cause?

splatch commented 10 months ago

@saransh14 I've checked with manually coded bacnet/ip server and it seem to work. Below is output from discovery main which list object properties:

          => Type ANALOG_INPUT id: 1
             Metadata
               Name: test1
               Units: watt-hours
               Description: 
             Present value 12.060566, type: com.serotonin.bacnet4j.type.primitive.Real
             Attribute 'acked-transitions' value EventTransitionBits [to-offnormal=true, to-fault=true, to-normal=true], type: com.serotonin.bacnet4j.type.constructed.EventTransitionBits
             Attribute '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=123, month=NOVEMBER, day=6, dayOfWeek=MONDAY], time=10:4:31.57]]], type: com.serotonin.bacnet4j.type.constructed.SequenceOf
             Attribute 'interface-value' value OptionalReal [choice=Null], type: com.serotonin.bacnet4j.type.constructed.OptionalReal
             Attribute 'fault-high-limit' value 120.0, type: com.serotonin.bacnet4j.type.primitive.Real
             Attribute 'fault-low-limit' value 0.0, type: com.serotonin.bacnet4j.type.primitive.Real
             Attribute 'notify-type' value alarm, type: com.serotonin.bacnet4j.type.enumerated.NotifyType
             Attribute 'out-of-service' value false, type: com.serotonin.bacnet4j.type.primitive.Boolean
             Attribute 'notification-class' value 17, type: com.serotonin.bacnet4j.type.primitive.UnsignedInteger
             Attribute 'present-value' value 11.430752, type: com.serotonin.bacnet4j.type.primitive.Real
             Attribute 'deadband' value 5.0, type: com.serotonin.bacnet4j.type.primitive.Real
             Attribute 'event-message-texts' value [, , ], type: com.serotonin.bacnet4j.type.constructed.SequenceOf
             Attribute 'event-message-texts-config' value [, , ], type: com.serotonin.bacnet4j.type.constructed.SequenceOf
             Attribute 'event-detection-enable' value true, type: com.serotonin.bacnet4j.type.primitive.Boolean
             Attribute 'event-algorithm-inhibit' value false, type: com.serotonin.bacnet4j.type.primitive.Boolean
             Attribute 'event-enable' value EventTransitionBits [to-offnormal=true, to-fault=true, to-normal=true], type: com.serotonin.bacnet4j.type.constructed.EventTransitionBits
             Attribute 'event-state' value normal, type: com.serotonin.bacnet4j.type.enumerated.EventState
             Attribute 'time-delay-normal' value 2, type: com.serotonin.bacnet4j.type.primitive.UnsignedInteger
             Attribute 'reliability-evaluation-inhibit' value false, type: com.serotonin.bacnet4j.type.primitive.Boolean
             Attribute 'reliability' value no-fault-detected, type: com.serotonin.bacnet4j.type.enumerated.Reliability
             Attribute 'high-limit' value 100.0, type: com.serotonin.bacnet4j.type.primitive.Real
             Attribute 'status-flags' value StatusFlags [in-alarm=false, fault=false, overridden=false, out-of-service=false], type: com.serotonin.bacnet4j.type.constructed.StatusFlags
             Attribute 'time-delay' value 1, type: com.serotonin.bacnet4j.type.primitive.UnsignedInteger
             Attribute 'limit-enable' value LimitEnable [low-limit-enable=true, high-limit-enable=true], type: com.serotonin.bacnet4j.type.constructed.LimitEnable
             Attribute 'units' value watt-hours, type: com.serotonin.bacnet4j.type.enumerated.EngineeringUnits
             Attribute 'low-limit' value 20.0, type: com.serotonin.bacnet4j.type.primitive.Real
saransh14 commented 10 months ago

Hi @splatch, can you please cut a release and share the new version for the artificat, so that I can use the same. Thanks in advance.

saransh14 commented 9 months ago

Hi @splatch, can you please share the final release version for 1.3.x, which I can use to fetch out the NotificationClass object types.

splatch commented 9 months ago

I wish to, I attempted to make an release yesterday but it failed. Have to tinker build in order to get it working.

saransh14 commented 9 months ago

Ok Sure, please let me know once the release is available, I'll use the same to extract the data for NotificationClass object types.

saransh14 commented 9 months ago

Hey @splatch , any update on the final release build?

splatch commented 9 months ago

Sorry, I am stuck with some opcua work. If you need a binary please stick with https://oss.sonatype.org/content/groups/public/ for now. Latest snapshot with necessary fixes is there. I'll be working on release close to Christmas.