ZigBeeNet is a implementation of the Zigbee 3.0 Cluster Library for .NET Standard, .NET Core and more .NET platforms.
With ZigBeeNet you can develop your own .NET application which communicates with zigbee devices.
Zigbee is a worldwide standard for low power, self-healing, mesh networks offering a complete and interoperable IoT solution for home and building automation:
- The industry-proven worldwide standard for robust mesh networking
- Capable of supporting hundreds of nodes
- Interoperability across certified Zigbee devices
- Enhanced security
Further information here: https://www.zigbee.org/zigbee-for-developers/zigbee-3-0/
With Zigbee 3.0 you can also build your own Smart Home solution and control Zigbee devices from different manufactures like Philips with Philips Hue and IKEA with Tradfri at the same time in the same network. So you are very flexible and the components are very cheap.
Because Zigbee is just a specification you need a stack of a manufacturer that implements it. ZigBeeNet is developed with a strict seperation of the Zigbee Cluster Library (ZCL) and the various manufacturer stacks. Because of that it is possible to use different hardware for your Zigbee solution
The first stack that is implemented in ZigBeeNet is Z-Stack 3.0 from Texas Instruments
Z-Stack 3.0.x is TI's Zigbee 3.0 compliant protocol suite for the CC2530, CC2531, and CC2538 Wireless MCU. Z-Stack comunicates through TI's Unified Network Processor Interface (NPI) which is used for establishing a serial data link between a TI SoC and external MCUs or PCs. UNPI is also implemented in this project and is also implemented for different plattforms.
The easiest solution is the CC2531 USB Stick with the Znp (Zigbee Network Processor) Image, so that it works as an Zigbee gateway via serial port
Source: https://www.ti.com/tool/z-stack
This library is still under development. Breaking changes are possible at all time. A wiki will be comming ASAP
using System;
namespace ZigBeeNet.PlayGround
{
class Program
{
static void Main(string[] args)
{
try
{
ZigBeeSerialPort zigbeePort = new ZigBeeSerialPort("COM4");
IZigBeeTransportTransmit dongle = new ZigBeeDongleTiCc2531(zigbeePort);
ZigBeeNetworkManager networkManager = new ZigBeeNetworkManager(dongle);
// Initialise the network
networkManager.Initialize();
networkManager.AddSupportedCluster(0x06);
ZigBeeStatus startupSucceded = networkManager.Startup(false);
if (startupSucceded == ZigBeeStatus.SUCCESS)
{
Log.Logger.Information("ZigBee console starting up ... [OK]");
}
else
{
Log.Logger.Information("ZigBee console starting up ... [FAIL]");
return;
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
Console.ReadLine();
}
}
}
This project is highly inspired by https://github.com/zsmartsystems/com.zsmartsystems.zigbee and many ideas were adopted (almost a java -> c# port).