Open pshank opened 5 years ago
Segmentation is supported in BACpypes, and while the test coverage is not complete with respect to the 135.1 testing and conformance standard, it has been holding up. Configure your local device object with one of the enumerations you would like to have (segmented receive, transmit, or both), but as you state you can't change the device you are talking to.
Reading the length of the object list should absolutely not require segmentation! The .19.00.1f
at the end of the APDU is bothering me, that should be .29.00
.
Yea, that .19.00
is a context encoded value with the wrong tag number, and the .1f
after that is a closing tag. Something weird is going on with your client and the server abort is misleading.
Gah! I didn't read the original problem correctly, this is a ReadPropertyMultiple
not ReadProperty
so the encoding is correct. The request decodes into
listOfReadAccessSpecs
[0] objectIdentifier = ('device', 1600011)
listOfPropertyReferences
[0] propertyIdentifier = 'objectList'
propertyArrayIndex = 0L
Can you check to make sure the device supports this service by reading the protocol services supported property? Maybe the abort it's sending back has the wrong reason code.
@pshank have you fixed your issue ?
Hello!
I seem to be running into a problem reading the 0 index of the objectList on the 'device' object. I have been able to successfully read this value from a different BACnet device that had 290+ BACnet objects. This new device has closer to 850 BACnet objects. When I attempt to read a single value from the objectList, I receive a 'segmentationnotsupported' error
The main difference between the old and new devices is that the new device supports segmentation (segmentedBoth) whereas I am using the BACpypes library along with my own bacnetip.py script which allows me to use the readpropertymultiple and whoisiam modules without a console. I was under the impression that segmentation is not supported using BACpypes, is that correct?
So is my problem that this new device is expecting my Gateway to handle segmentation? I had thought that the bacnet device would default to non-segmentation if mine was defined as 'noSegmentation', but perhaps I am wrong.
The following is the output from the ReadPropertyMultiple command with the --debug bacpypes.appservice.ClientSSM flag enabled.
Not sure if this is a bug, or just poor configuration on my end. Unfortunately, I am unable to change the segmentation mode of the devices I am trying to read.
If my device requires segmentation for this to work at all, are there any existing examples of how segmentation is implemented that you know of?
Thank you!