/ZWave4Net

ZWave4Net is a .NET library that interfaces with the Aeotec / Aeon Labs Z-Stick.

Primary LanguageC#Apache License 2.0Apache-2.0

ZWave4Net

ZWave4Net is a .NET library that interfaces with the Aeotec / Aeon Labs Z-Stick. It uses an event-driven, non-blocking model that makes it lightweight and efficient.

Supported Targets:

  • Managed Framework: net45
  • Universal Windows: uap10.0
  • Portable Class Library: net45 + win8

Runs on Raspberry PI IoT Windows 10 (see note below)

NuGet package: https://www.nuget.org/packages/ZWave4Net/

Supported Z-Wave command classes:

  • Alarm
  • Association
  • Basic
  • Battery
  • Clock
  • Color
  • Configuration
  • ManufacturerSpecific
  • Meter
  • SceneActivation
  • SensorAlarm
  • SensorBinary
  • SensorMultiLevel
  • SwitchBinary
  • ThermostatSetpoint
  • Version
  • WakeUp

FIBARO Wall Plug sample:

    public async Task TurnWallPlugOn()
    {
        // the nodeID of the wallplug
        byte wallPlugNodeID = 3;

        // create the controller
        var controller = new ZWaveController("COM1");
        
        // open the controller
        controller.Open();

        // get the included nodes
        var nodes = await controller.GetNodes();
        
        // get the wallplug
        var wallPlug = nodes[wallPlugNodeID];
        
        // get the SwitchBinary commandclass
        var switchBinary = wallPlug.GetCommandClass<SwitchBinary>();

        // turn wallplug on
        await switchBinary.Set(0xFF);

        // close the controller
        controller.Close();
    }

FIBARO Motion Sensor sample:

    public async Task SensorAlarm()
    {
        // the nodeID of the motion sensor
        byte motionSensorID = 5;

        // create the controller
        var controller = new ZWaveController("COM1");

        // open the controller
        controller.Open();

        // get the included nodes
        var nodes = await controller.GetNodes();

        // get the motionSensor
        var motionSensor = nodes[motionSensorID];

        // get the SensorAlarm commandclass
        var sensorAlarm = motionSensor.GetCommandClass<SensorAlarm>();

        // subscribe to alarm event
        sensorAlarm.Changed += (s, e) => Console.WriteLine("Alarm");

        // wait
        Console.ReadLine();

        // close the controller
        controller.Close();
    }

Note: running ZWave4Net on Raspberry PI IoT Windows 10:

// note: opening the serialport by name fails on Windows 10 IoT, use USB vendorId and productId instead
var controller = new ZWaveController(vendorId: 0x0658, productId: 0x0200);