npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@amrc-factoryplus/edge-driver

v0.0.4

Published

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.

Downloads

173

Readme

ACS Edge Agent driver library

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.

This version of the library supports creating read-only, polled device drivers. Other forms of driver may be implemented in the future.

Core concepts

Dataflow is described along a south-north axis, where the Edge Agent and the rest of Factory+ is 'north' of the driver, and the device the driver is reading from is 'south'. Data normally flows from south to north.

The ACS Edge Agent communicates with a driver in terms of 'addresses'. An address is a string, in a format defined by the driver, which identifies a particular data source within the driver's southbound device. The main function of a driver is to read an address when requested, returning a Buffer of binary data. The address strings are entered into the Edge Agent configuration by an administrator and passed down unmodified to the driver.

Depending on the Edge Agent configuration, it may expect the returned Buffer to have some internal structure, and may attempt to read multiple metrics from a single address. This is the function of the 'path' parameter.

A driver will normally require configuration for such things as hostnames, ports, authentication and so on. This configuration is included in the Edge Agent config file and passed down to the driver as part of the initial protocol negotiation. If a changed config is transmitted, the library will handle this by destroying the current handler and creating a new one using the new configuration.

Driver implementations

Different devices have different characteristics, and require different capabilities of the driver. A given driver should use exactly one of these classes.

Driver base class

Driver

This is the base class for all the driver classes. Common methods and parameters are documented here.

Polled driver

PolledDriver

This is for drivers which can read single values from the device when requested. This driver class is not suitable for devices which may produce data asynchronously.

Async driver

AsyncDriver

This is for drivers which produce data values asynchronously and cannot be polled.

Utility functions

Logging

Debug

This class provides simple configurable logging.

Buffer conversions

BufferX

This object provides static functions to construct Buffers.