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

bacstack

v0.0.1-beta.14

Published

A BACnet protocol stack written in pure JavaScript.

Downloads

481

Readme

Node BACstack

A BACnet protocol stack written in pure JavaScript. BACnet is a protocol to interact with building automation devices defined by ASHRAE.

Usage

Add Node BACstack to your project by using:

npm install --save bacstack

The API documentation is available under fh1ch.github.io/node-bacstack.

Features

The BACnet standard defines a wide variety of services as part of it's specification. While Node BACstack tries to be as complete as possible, following services are already supported at this point in time:

| Service | Execute | Handle | |--------------------------------|:--------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------:| | Who Is | yes | yes | | I Am | yes¹ | yes | | Who Has | yes¹ | yes¹ | | I Have | yes¹ | yes¹ | | Time Sync | yes | yes | | UTC Time Sync | yes | yes | | Read Property | yes | yes¹ | | Read Property Multiple | yes | yes¹ | | Read Range | yes | yes¹ | | Write Property | yes | yes¹ | | Write Property Multiple | yes | yes¹ | | Add List Element | yes¹ | yes¹ | | Remove List Element | yes¹ | yes¹ | | Create Object | yes¹ | yes¹ | | Delete Object | yes | yes¹ | | Subscribe COV | yes | yes¹ | | Subscribe Property | yes | yes¹ | | Atomic Read File | yes | yes¹ | | Atomic Write File | yes | yes¹ | | Reinitialize Device | yes | yes¹ | | Device Communication Control | yes | yes¹ | | Get Alarm Summary² | yes | yes¹ | | Get Event Information | yes | yes¹ | | Get Enrollment Summary² | yes | yes¹ | | Acknowledge Alarm | yes¹ | yes¹ | | Confirmed Event Notification | yes¹ | yes¹ | | Unconfirmed Event Notification | yes¹ | yes¹ | | Unconfirmed Private Transfer | yes | yes¹ | | Confirmed Private Transfer | yes | yes¹ |

¹ Support implemented as Beta (untested, undocumented, breaking interface) ² Deprecated BACnet function, available for backwards compatibility

Example

const bacnet = require('bacstack');

// Initialize BACStack
const client = new bacnet({apduTimeout: 6000});

// Discover Devices
client.on('iAm', (device) => {
  console.log('address: ', device.address);
  console.log('deviceId: ', device.deviceId);
  console.log('maxApdu: ', device.maxApdu);
  console.log('segmentation: ', device.segmentation);
  console.log('vendorId: ', device.vendorId);
});
client.whoIs();

// Read Device Object
const requestArray = [{
  objectId: {type: 8, instance: 4194303},
  properties: [{id: 8}]
}];
client.readPropertyMultiple('192.168.1.43', requestArray, (err, value) => {
  console.log('value: ', value);
});

Contributing

Implementing and maintaining a protocol stack is a lot of work, therefore any help is appreciated, from creating issues, to contributing documentation, fixing issues and adding new features.

Please follow the Contribution Guide when submitting any changes.

License

The MIT License

Copyright (c) 2017-2021 Fabio Huser [email protected]

Note: This is not an official product of the BACnet Advocacy Group. BACnet® is a registered trademark of American Society of Heating, Refrigerating and Air-Conditioning Engineers (ASHRAE).