BACnet driver: per-device ReadPropertyMultiple size limit (or "force single ReadProperty")
E
Espen Bø
Details:
The BACnet driver builds large ReadPropertyMultiple (RPM) requests. Small field controllers can't cope with them and the device never initializes:
- Controllers with a small response buffer return Abort(buffer-overflow)— they start a segmented reply, then abort mid-transfer.
- Slower controllers return Abort(application-exceeded-reply-time)— they can't compute all the values within the reply window.
In both cases there is
no automatic fallback
— the same large RPM is re-sent every polling cycle and fails identically, so the device stays UNINITIALIZED/flaky.We hit this on a Siemens Climatix POL908 (IV Produkt AHU, 239 objects → exceeded-reply-time) and a Regin Corrigo (→ buffer-overflow). Third-party BACnet clients read these exact devices fine, because they read conservatively (small batches / single reads). Ignition can't currently match that.
Request:
a per-device setting for max objects/properties per RPM
, and/or a "Force single ReadProperty"
toggle. Bonus: on Abort(buffer-overflow / segmentation-not-supported)
, automatically retry with a smaller batch or single ReadProperty.Why it matters:
makes a large class of common controllers (Climatix POL6xx/POL9xx, Regin, etc.) readable without any device-side changes.Log In