frangoteam / FUXA

Web-based Process Visualization (SCADA/HMI/Dashboard) software
https://frangoteam.org
MIT License
2.49k stars 741 forks source link

Switching from the BACnet library to node-backstack. Added support for Multistate objects. #1218

Closed lpaszcza closed 1 month ago

lpaszcza commented 1 month ago
  1. Switching from the BACnet library to node-backstack.

When querying for the list of objects (OBJECT_LIST) and there is a large number of objects on the controllers (around 100), readProperty returns an incorrect value. Replaced it with the node-bacstack library. https://github.com/fh1ch/node-bacstack

  1. Changing from readProperty to readPropertyMultiple when we querying for name of objects.

The change was made to reduce the number of packets when querying for a large number of objects.

  1. Added support for Multistate objects.

Added Multistate Variable, Multistate Input, Multistate Output.

[BUG]

2024-06-04T11:17:45.550Z [ERR] RangeError [ERR_OUT_OF_RANGE]: The value of "byteLength" is out of range. It must be >= 1 and <= 6. Received 0 at boundsError (internal/buffer.js:83:9) at Buffer.readIntBE (internal/buffer.js:442:3) at module.exports.decodeSigned (C:\FUXA\FUXA_BACSTACK\server\node_modules\bacstack\lib\asn1.js:818:19) at bacappDecodeData (C:\FUXA\FUXA_BACSTACK\server\node_modules\bacstack\lib\asn1.js:1023:16) at module.exports.bacappDecodeApplicationData (C:\FUXA\FUXA_BACSTACK\server\node_modules\bacstack\lib\asn1.js:682:16) at Object.module.exports.decodeReadAccessResult (C:\FUXA\FUXA_BACSTACK\server\node_modules\bacstack\lib\asn1.js:764:29) at Object.module.exports.decodeAcknowledge (C:\FUXA\FUXA_BACSTACK\server\node_modules\bacstack\lib\services\read-property-multiple.js:36:27) at C:\FUXA\FUXA_BACSTACK\server\node_modules\bacstack\lib\client.js:675:54 at _invokeStore. (C:\FUXA\FUXA_BACSTACK\server\node_modules\bacstack\lib\client.js:90:7) at Client._invokeCallback (C:\FUXA\FUXA_BACSTACK\server\node_modules\bacstack\lib\client.js:78:26) at Client._handlePdu (C:\FUXA\FUXA_BACSTACK\server\node_modules\bacstack\lib\client.js:391:16) at Client._performDefaultSegmentHandling (C:\FUXA\FUXA_BACSTACK\server\node_modules\bacstack\lib\client.js:144:12) at Client._processSegment (C:\FUXA\FUXA_BACSTACK\server\node_modules\bacstack\lib\client.js:165:10) at Client._handlePdu (C:\FUXA\FUXA_BACSTACK\server\node_modules\bacstack\lib\client.js:393:16) at Client._handleNpdu (C:\FUXA\FUXA_BACSTACK\server\node_modules\bacstack\lib\client.js:437:10) at Client._receiveData (C:\FUXA\FUXA_BACSTACK\server\node_modules\bacstack\lib\client.js:448:12) logger.js:90 2024-06-04T11:17:46.324Z [WAR] 'BACnet' working (connection || polling) overload! 0 logger.js:83 2024-06-04T11:17:51.336Z [WAR] 'BACnet' working (connection || polling) overload! 0

unocelli commented 1 month ago

Good job, Thanks!