BACnet4J
BACnet4J copied to clipboard
Error writing multistate property 'stateText'
trafficstars
Describe the bug
Cannot write multistate property stateText
To Reproduce Steps to reproduce the behavior:
- Create a MultistateValue object in a device
- Connect a BACnet client and try to update stateText from the client
- Error is generated in the device (server)
java.lang.ClassCastException: com.serotonin.bacnet4j.type.constructed.SequenceOf cannot be cast to com.serotonin.bacnet4j.type.constructed.BACnetArray
at com.serotonin.bacnet4j.obj.mixin.MultistateMixin.validateProperty(MultistateMixin.java:63)
at com.serotonin.bacnet4j.obj.BACnetObject.writeProperty(BACnetObject.java:481)
at com.serotonin.bacnet4j.service.confirmed.WritePropertyRequest.handle(WritePropertyRequest.java:102)
at com.serotonin.bacnet4j.transport.DefaultTransport.handleConfirmedRequest(DefaultTransport.java:870)
at com.serotonin.bacnet4j.transport.DefaultTransport.incomingConfirmedRequest(DefaultTransport.java:827)
at com.serotonin.bacnet4j.transport.DefaultTransport.receiveAPDU(DefaultTransport.java:640)
at com.serotonin.bacnet4j.transport.DefaultTransport.receiveImpl(DefaultTransport.java:578)
at com.serotonin.bacnet4j.transport.DefaultTransport.run(DefaultTransport.java:498)
at java.lang.Thread.run(Thread.java:748)
Expected behavior I can update stateText from a BACnet client
I logged the request in 'DeviceEventAdapter.allowPropertyWrite()' listener callback and the Property Value is really of the type SequenceOf. The log from my device (server):
2021-04-16 15:09:03,140 - BACnet write property write request received from=192.168.0.130:0xBAC0
2021-04-16 15:09:03,140 - object-name : 71L2Az00_plant_mod
2021-04-16 15:09:03,141 - object-type : multi-state-value
2021-04-16 15:09:03,141 - property : state-text
2021-04-16 15:09:03,141 - value : [Anlage Aus, ON-Optimum Start, Ein-Stützbetrieb, Ein-Nachtkühlung, Ein-Zeitprogramm, Ein-Übersteuerung, Ein-Nachlauf]
2021-04-16 15:09:03,141 - value-type : SequenceOf