{"id":20669703,"url":"https://github.com/genielabs/zwave-lib-dotnet","last_synced_at":"2025-04-07T08:14:46.807Z","repository":{"id":36902585,"uuid":"41209604","full_name":"genielabs/zwave-lib-dotnet","owner":"genielabs","description":"Z-Wave Home Automation library for .NET / Mono","archived":false,"fork":false,"pushed_at":"2025-03-09T09:49:06.000Z","size":305,"stargazers_count":64,"open_issues_count":7,"forks_count":38,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-03-31T07:04:26.084Z","etag":null,"topics":["dotnet","home-automation","homegenie","library","z-wave","zwave"],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/genielabs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-08-22T14:00:51.000Z","updated_at":"2025-03-10T08:51:55.000Z","dependencies_parsed_at":"2025-03-09T08:32:19.239Z","dependency_job_id":null,"html_url":"https://github.com/genielabs/zwave-lib-dotnet","commit_stats":null,"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/genielabs%2Fzwave-lib-dotnet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/genielabs%2Fzwave-lib-dotnet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/genielabs%2Fzwave-lib-dotnet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/genielabs%2Fzwave-lib-dotnet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/genielabs","download_url":"https://codeload.github.com/genielabs/zwave-lib-dotnet/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247615377,"owners_count":20967184,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dotnet","home-automation","homegenie","library","z-wave","zwave"],"created_at":"2024-11-16T20:15:41.953Z","updated_at":"2025-04-07T08:14:46.783Z","avatar_url":"https://github.com/genielabs.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build status](https://ci.appveyor.com/api/projects/status/9x2lxm4b1x4bmru9?svg=true)](https://ci.appveyor.com/project/genemars/zwave-lib-dotnet)\n[![NuGet](https://img.shields.io/nuget/v/ZWaveLib.svg)](https://www.nuget.org/packages/ZWaveLib/)\n![License](https://img.shields.io/github/license/genielabs/zwave-lib-dotnet.svg)\n\n# Z-Wave Home Automation library for .NET\n\n## Features\n\n- Works with most Z-Wave serial controllers\n- Event driven\n- Hot plug\n- Automatically restabilish connection on error/disconnect\n- 100% managed code implementation\n- Compatible with Mono\n\n## NuGet Package\n\nZWaveLib  is available as a [NuGet package](https://www.nuget.org/packages/ZWaveLib).\n\nRun `Install-Package ZWaveLib` in the [Package Manager Console](http://docs.nuget.org/docs/start-here/using-the-package-manager-console) or search for “ZWaveLib” in your IDE’s package management plug-in.\n\n## Example usage\n```csharp\n\n// Initialize the ZWaveController\n\nvar controller = new ZWaveController(serialPortName);\n\n// Register the Controller event handlers (see methods example below)\n\ncontroller.ControllerStatusChanged += Controller_ControllerStatusChanged;;\ncontroller.DiscoveryProgress += Controller_DiscoveryProgress;\ncontroller.NodeOperationProgress += Controller_NodeOperationProgress;\ncontroller.NodeUpdated += Controller_NodeUpdated;\n\n// Open connection\ncontroller.Connect();\n\n// Issue some commands on a dimmer and a thermostat node\n\nvar dimmer = controller.GetNode(4);\n// Set dimmer level to 50\nSwitchMultilevel.Set(dimmer, 50);\n\nvar thermostat = controller.GetNode(10);\n// Configure the Set Point\nThermostatSetPoint.Set(thermostat, ThermostatSetPoint.Value.Heating, 21);\n// Set the Thermostat mode to Heat\nThermostatMode.Set(thermostat, ThermostatMode.Value.Heat);\n// Or turn it off\nThermostatMode.Set(thermostat, ThermostatMode.Value.Off);\n\n// Controller event handlers\n\nvoid Controller_ControllerStatusChanged (object sender, ControllerStatusEventArgs args)\n{\n    Console.WriteLine(\"ControllerStatusChange {0}\", args.Status);\n    var controller = (sender as ZWaveController);\n    switch (args.Status)\n    {\n    case ControllerStatus.Connected:\n        // Initialize the controller and get the node list\n        controller.Initialize();\n        break;\n    case ControllerStatus.Disconnected:\n        break;\n    case ControllerStatus.Initializing:\n        break;\n    case ControllerStatus.Ready:\n        // Query all nodes (Supported Classes, Routing Info, Node Information Frame, Manufacturer Specific)\n        controller.Discovery();\n        break;\n    case ControllerStatus.Error:\n        break;\n    }\n}\n\nvoid Controller_DiscoveryProgress(object sender, DiscoveryProgressEventArgs args)\n{\n    Console.WriteLine(\"DiscoveryProgress {0}\", args.Status);\n    var controller = (sender as ZWaveController);\n    switch (args.Status)\n    {\n    case DiscoveryStatus.DiscoveryStart:\n        break;\n    case DiscoveryStatus.DiscoveryEnd:\n        break;\n    }\n}\n\nvoid Controller_NodeOperationProgress(object sender, NodeOperationProgressEventArgs args)\n{\n    // this will fire on a node operation such as Add, Remove, Updating Routing, etc..\n    Console.WriteLine(\"NodeOperationProgress {0} {1}\", args.NodeId, args.Status);\n}\n\nvoid Controller_NodeUpdated(object sender, NodeUpdatedEventArgs args)\n{\n    // this will fire when new data is received from a node such as level, temperature, humidity, etc...\n    Console.WriteLine(\"NodeUpdated {0} Event Parameter {1} Value {2}\", args.NodeId, args.Event.Parameter, args.Event.Value);\n}\n\n```\n\n## Who's using this library?\n\n- [HomeGenie Server](http://github.com/genielabs/HomeGenie): smart home automation server\n- [MIG.HomeAuto](https://github.com/genielabs/mig-homeauto): home automation API\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgenielabs%2Fzwave-lib-dotnet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgenielabs%2Fzwave-lib-dotnet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgenielabs%2Fzwave-lib-dotnet/lists"}