A NodeJS module for communicating with Zigbee devices using an XBee (series 2). The module allows communication with nodes' Zigbee Device Object (ZDO) and application objects (endpoints).
A web app is provided for discovering and configuring Zigbee devices on the network. First edit config.js to set your serial port and then run:
> node app.js
Emphasis of this project will initially be on implementing the HA profile.
The goal of this library is to provide enough functionality to create and configure a network of Zigbee devices for use in an automation and monitoring scenario. This includes setting up bindings and attribute reporting. This involves:
A comprehensive, nice looking end-user GUI for every-day interaction with devices is a separate project. See Whims (https://github.com/stormboy/whims) for a project that interfaces with multiple subsystems via Meem protocol over MQTT. Subsystems include Zigbee, Nest thermostat, Belkin Wemo, X10, Raven Smart energy USB stick, Pioneer AV.
The glue between Zigbee and MQTT-based protocol will either be in a separate project or an "example" application in this project.
A Web GUI is provided that allows discovery of Nodes and Endpoints.
Binding and attribute reports are now manageable in the library, but the UI does not provide a nice way to do so as yet.
allowJoin
joinNetwork
leaveNetwork
discoverNodeEndpoints(address64, cb)
discoverAttributes(addr64, endpoint, cluster, start, max, cb)
addBinding(binding)
configReporting(address64, data) data incudes endpoint, clusterId, attributes
initialized
node
device
lifecycle
addNode e.g. zbee.addNode(ZigbeeNode);
bind
subscribe
This object represents an Application Object in a Node. A ZigbeeDevice has clusters.
There is one ZDO per ZigbeeNode. Accessed via:
node.zdo
requestNetworkAddress
requestIEEEAddress
requestNodeDescriptor
requestActiveEndpoints
requestSimpleDescriptor(endpoint)
requestComplexDescriptor
requestUserDescriptor
setUserDescriptor(desc)
requestBind(binding)
requestUnbind(binding)
configureReporting
requestNetworkDiscovery
Contains attributes
General functions
Cluster-dependend functions. e.g. identify() sendOnOff(value)
attributeReport