{"_id":"@amrc-factoryplus/edge-driver","_rev":"5-a75761df2b61f2f6531d876dc607f53b","name":"@amrc-factoryplus/edge-driver","dist-tags":{"latest":"0.1.0"},"versions":{"0.0.2":{"name":"@amrc-factoryplus/edge-driver","version":"0.0.2","keywords":[],"author":"","license":"ISC","_id":"@amrc-factoryplus/edge-driver@0.0.2","maintainers":[{"name":"amrc-benmorrow","email":"b.morrow@amrc.co.uk"},{"name":"alex-godbehere","email":"alex.godbehere@amrc.co.uk"}],"dist":{"shasum":"6232b5f00e4f329051cc938d32545be3aba2257b","tarball":"https://registry.npmjs.org/@amrc-factoryplus/edge-driver/-/edge-driver-0.0.2.tgz","fileCount":10,"integrity":"sha512-Uhcou4R1IRusqKRO7ae8gwkiTv0UfcTbissi9RN74+C3O9NqHPPYOScGCRjmYwDyKhJUOHsVkoB1BNcfnsLzpg==","signatures":[{"sig":"MEYCIQDeLi3EVC4ZxIgNDmFu4oUfLyAXk3RZwFr7CLxuxhKbHgIhAIE5+uUu0l9ztmsf40vfMHMMS6iTf2IhYBplCyj6KCo1","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17420},"main":"lib/index.js","type":"module","gitHead":"04505d57188ce5d34249b9a6103a57ece1310c84","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"amrc-benmorrow","email":"b.morrow@amrc.co.uk"},"_npmVersion":"10.7.0","description":"This library exists to make it easier to write drivers for the ACS Edge Agent. The Edge Agent exposes an MQTT broker for drivers to communicate with and requires drivers to use a specific protocol for communication.","directories":{},"_nodeVersion":"20.15.0","dependencies":{"mqtt":"^5.8.0","async":"^3.2.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.52.0"},"_npmOperationalInternal":{"tmp":"tmp/edge-driver_0.0.2_1721213898418_0.38560309676702786","host":"s3://npm-registry-packages"}},"0.0.3":{"name":"@amrc-factoryplus/edge-driver","version":"0.0.3","keywords":[],"author":"","license":"ISC","_id":"@amrc-factoryplus/edge-driver@0.0.3","maintainers":[{"name":"amrc-benmorrow","email":"b.morrow@amrc.co.uk"},{"name":"alex-godbehere","email":"alex.godbehere@amrc.co.uk"}],"dist":{"shasum":"daf99d87eb9af541d3a217dbd99207dcbd0dbe27","tarball":"https://registry.npmjs.org/@amrc-factoryplus/edge-driver/-/edge-driver-0.0.3.tgz","fileCount":16,"integrity":"sha512-R0P9PhO5/bgtRW9n7WtCOjHWjpKCc0gXta64Du8kToz9+lkSCtdhOo0B4/w/SDyFqogMJt2M9x+jBuzalDobVg==","signatures":[{"sig":"MEQCIC0sBPn4Bvgw09CpH+QIRpsoGIJTsEUdIT32xubiBthPAiA7/OtwnTvLvvQZvT+SVXPTnYXealWIznaeX4RRTDbi3A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":29049},"main":"lib/index.js","type":"module","gitHead":"fcbf9ba66eb190a6762db4669d866f026e3311a2","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"amrc-benmorrow","email":"b.morrow@amrc.co.uk"},"_npmVersion":"10.8.1","description":"This library exists to make it easier to write drivers for the ACS Edge Agent. The Edge Agent exposes an MQTT broker for drivers to communicate with and requires drivers to use a specific protocol for communication.","directories":{},"_nodeVersion":"20.16.0","dependencies":{"mqtt":"^5.8.0","async":"^3.2.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.52.0"},"_npmOperationalInternal":{"tmp":"tmp/edge-driver_0.0.3_1724165514437_0.7408109079317524","host":"s3://npm-registry-packages"}},"0.0.4":{"name":"@amrc-factoryplus/edge-driver","version":"0.0.4","keywords":[],"author":"","license":"ISC","_id":"@amrc-factoryplus/edge-driver@0.0.4","maintainers":[{"name":"amrc-benmorrow","email":"b.morrow@amrc.co.uk"},{"name":"alex-godbehere","email":"alex.godbehere@amrc.co.uk"}],"dist":{"shasum":"47e78a9fdafb0bda4a8df1c56d1a1da2391ca184","tarball":"https://registry.npmjs.org/@amrc-factoryplus/edge-driver/-/edge-driver-0.0.4.tgz","fileCount":16,"integrity":"sha512-8dvmbySbiLjWiVD1fSatGFgiRG7kwiWhtRbt172hlbZimWXNsKS0ws2eUjpH2WIbGLFSA7C1W8KbEWE2QySxQw==","signatures":[{"sig":"MEQCICP0Q6kpjmLUtdJGuMG74MjomWQdxnwYjU9wRJFzTJSZAiA77/PolluUGh4ftqr2MVt/ibggJMJwLh+ovesJUy66Ow==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":30944},"main":"lib/index.js","type":"module","gitHead":"131246baac4f6faa9768dd42528cd5f17758e2ad","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"amrc-benmorrow","email":"b.morrow@amrc.co.uk"},"_npmVersion":"10.8.2","description":"This library exists to make it easier to write drivers for the ACS Edge Agent. The Edge Agent exposes an MQTT broker for drivers to communicate with and requires drivers to use a specific protocol for communication.","directories":{},"_nodeVersion":"20.17.0","dependencies":{"mqtt":"^5.8.0","async":"^3.2.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.52.0"},"_npmOperationalInternal":{"tmp":"tmp/edge-driver_0.0.4_1724838988565_0.005616516882809064","host":"s3://npm-registry-packages"}},"0.0.5":{"name":"@amrc-factoryplus/edge-driver","version":"0.0.5","keywords":[],"author":"","license":"ISC","_id":"@amrc-factoryplus/edge-driver@0.0.5","maintainers":[{"name":"amrc-benmorrow","email":"b.morrow@amrc.co.uk"},{"name":"alex-godbehere","email":"alex.godbehere@amrc.co.uk"}],"dist":{"shasum":"1cfcb2fe5769086593195b82acd2d7125ee98ae2","tarball":"https://registry.npmjs.org/@amrc-factoryplus/edge-driver/-/edge-driver-0.0.5.tgz","fileCount":17,"integrity":"sha512-ZlIV7TX5RuWI0nCOfRu+xkfDiea2gIoD94KjGBmDKAluxxfrJfLzeaSJd6MB6s1pfOqNUXuwaIn8nWnCkxYEbg==","signatures":[{"sig":"MEUCIA20CpSFOZdeqEfgl/CEsEth4MDRWCbndplNm/4qtVdDAiEA3+YLrz+QGxyw/phgp6Ov7OzJHT7hiqIJDPY5JUzU9HY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":31646},"main":"lib/index.js","type":"module","gitHead":"2f9672001ca21cba8c9776ac639e1cd7f4786500","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"amrc-benmorrow","email":"b.morrow@amrc.co.uk"},"_npmVersion":"10.8.2","description":"This library exists to make it easier to write drivers for the ACS Edge Agent. The Edge Agent exposes an MQTT broker for drivers to communicate with and requires drivers to use a specific protocol for communication.","directories":{},"_nodeVersion":"20.18.1","dependencies":{"mqtt":"^5.8.0","async":"^3.2.5"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.52.0"},"_npmOperationalInternal":{"tmp":"tmp/edge-driver_0.0.5_1736954731074_0.6185107976283417","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@amrc-factoryplus/edge-driver","version":"0.1.0","description":"This library exists to make it easier to write drivers for the ACS Edge Agent. The Edge Agent exposes an MQTT broker for drivers to communicate with and requires drivers to use a specific protocol for communication.","main":"lib/index.js","type":"module","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"keywords":[],"author":"","license":"ISC","dependencies":{"async":"^3.2.5","mqtt":"^5.8.0"},"devDependencies":{"eslint":"^8.52.0"},"_id":"@amrc-factoryplus/edge-driver@0.1.0","gitHead":"e8824d877481223cfa66c98cacd8878928cf8b21","_nodeVersion":"20.18.3","_npmVersion":"10.8.2","dist":{"integrity":"sha512-YIN8F/+lC39G0GpdVUih7YErO8N6NDGV39YUi9U3Zzus3QXZG3sxnI812p2Ry71Qa4c7NvxoYwmhig4iCwdsJg==","shasum":"bdb58c61870b642f5ba493bd4200e1921f9226a0","tarball":"https://registry.npmjs.org/@amrc-factoryplus/edge-driver/-/edge-driver-0.1.0.tgz","fileCount":17,"unpackedSize":32942,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCNQwdGfiDh3ZPUTgyc7NUvKqfozzpIrWJWQUlPegZdbAIhAIOQSMLAJYAaadBh/NKK4ZaKw3iU5N29Eu+FB0z7n/uH"}]},"_npmUser":{"name":"amrc-benmorrow","email":"b.morrow@amrc.co.uk"},"directories":{},"maintainers":[{"name":"amrc-benmorrow","email":"b.morrow@amrc.co.uk"},{"name":"alex-godbehere","email":"alex.godbehere@amrc.co.uk"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/edge-driver_0.1.0_1741178374290_0.9443268661782056"},"_hasShrinkwrap":false}},"time":{"created":"2024-07-17T10:58:18.288Z","modified":"2025-03-05T12:39:34.758Z","0.0.2":"2024-07-17T10:58:18.560Z","0.0.3":"2024-08-20T14:51:54.603Z","0.0.4":"2024-08-28T09:56:28.733Z","0.0.5":"2025-01-15T15:25:31.263Z","0.1.0":"2025-03-05T12:39:34.538Z"},"license":"ISC","keywords":[],"description":"This library exists to make it easier to write drivers for the ACS Edge Agent. The Edge Agent exposes an MQTT broker for drivers to communicate with and requires drivers to use a specific protocol for communication.","maintainers":[{"name":"amrc-benmorrow","email":"b.morrow@amrc.co.uk"},{"name":"alex-godbehere","email":"alex.godbehere@amrc.co.uk"}],"readme":"# ACS Edge Agent driver library\n\nThis library exists to make it easier to write drivers for the ACS Edge\nAgent. The Edge Agent exposes an MQTT broker for drivers to communicate\nwith and requires drivers to use a specific protocol for communication.\n\nThis version of the library supports creating read-only, polled and\nasynchronous device drivers. Other forms of driver may be implemented in\nthe future.\n\n## Core concepts\n\nDataflow is described along a south-north axis, where the Edge Agent and\nthe rest of Factory+ is 'north' of the driver, and the device the driver\nis reading from is 'south'. Data normally flows from south to north.\n\nThe ACS Edge Agent communicates with a driver in terms of 'addresses'.\nAn address is a string, in a format defined by the driver, which\nidentifies a particular data source within the driver's southbound\ndevice. The main function of a driver is to read an address when\nrequested, returning a Buffer of binary data. The address strings are\nentered into the Edge Agent configuration by an administrator and passed\ndown unmodified to the driver.\n\nDepending on the Edge Agent configuration, it may expect the returned\nBuffer to have some internal structure, and may attempt to read multiple\nmetrics from a single address. This is the function of the 'path'\nparameter.\n\nA driver will normally require configuration for such things as\nhostnames, ports, authentication and so on. This configuration is\nincluded in the Edge Agent config file and passed down to the driver as\npart of the initial protocol negotiation. If a changed config is\ntransmitted, the library will handle this by destroying the current\nhandler and creating a new one using the new configuration.\n\n## Driver implementations\n\nDifferent devices have different characteristics, and require different\ncapabilities of the driver. A given driver should use exactly one of\nthese classes.\n\n### Driver base class\n\n[Driver](./docs/driver.md)\n\nThis is the base class for all the driver classes. Common methods and\nparameters are documented here.\n\n### Polled driver\n\n[PolledDriver](./docs/polled.md)\n\nThis is for drivers which can read single values from the device when\nrequested. This driver class is not suitable for devices which may\nproduce data asynchronously.\n\n### Async driver\n\n[AsyncDriver](./docs/async.md)\n\nThis is for drivers which produce data values asynchronously and cannot\nbe polled.\n\n## Utility functions\n\n### Logging\n\n[Debug](./docs/debug.md)\n\nThis class provides simple configurable logging.\n\n### Buffer conversions\n\n[BufferX](./docs/bufferx.md)\n\nThis object provides static functions to construct Buffers.\n","readmeFilename":"README.md"}