Skip to content

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

License

Notifications You must be signed in to change notification settings

alexxxz1977/ZWave4Net

This branch is 5 commits ahead of roblans/ZWave4Net:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

e1dd5bb · Jun 8, 2024
Sep 28, 2015
May 18, 2022
Jun 8, 2024
Jun 8, 2018
Sep 8, 2015
Sep 8, 2015
Feb 5, 2020
Jul 26, 2020
May 10, 2023
May 21, 2022
May 18, 2022

Repository files navigation

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:

  • .NET 6.0
  • .NET 5.0
  • .NET 4.8
  • .NET Standard 2.0
  • .NET Standard 2.1
  • .NET Core 3.1
  • Universal App Platform: win10

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

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

Supported Z-Wave command classes:

  • Alarm v1-2
  • Association v1-3
  • Basic v1-2
  • Battery v1*
  • CentralScene v1*
  • Clock v1
  • Color v1-3
  • Configuration v1*
  • ManufacturerSpecific v1-2
  • Meter v1-6
  • MultiChannel
  • MultiChannelAssociation
  • NodeNaming v1
  • Notification v3-8
  • SceneActivation v1
  • Schedule v1
  • SensorAlarm v1
  • SensorBinary v1-2
  • SensorMultiLevel v1-11
  • SwitchAll v1
  • SwitchBinary v1-2
  • SwitchMultiLevel v1-2, 4*
  • SwitchToggleBinary v1
  • SwitchToggleMultiLevel v1
  • ThermostatFanMode v1*
  • ThermostatMode v1*
  • ThermostatOperatingState v1*
  • ThermostatSetpoint v1*
  • Version v1-2*
  • WakeUp v1-3

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);

About

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

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 99.8%
  • PowerShell 0.2%