zwave 0.8.0

  • Installing
  • Versions
  • 38


zwave is a Dart package for interacting with Z-Wave devices.


This Dart package uses the Open Z-Wave library to communicate with a compatible Z-Wave Controller and interact with Z-Wave devices.


This package provides

See the zwave library for more about how to interact with Z-Wave devices.



Pair your Z-Wave controller with your Z-Wave devices, then install the Open Z-Wave library. Use the MinOZW example that is included in the Open Z-Wave library to ensure that the Open Z-Wave library is installed correctly and can communicate with your devices using your Z-Wave Controller.

Activate this zwave package using the pub global command.

    pub global activate zwave

From your application directory (the application that references the zwave package) run the following command to build the native library

    pub global run zwave:build_lib

pub global activate makes the Dart scripts in the zwave/bin directory runnable from the command line. pub global run zwave:build_lib runs the zwave/bin/build_lib.dart program which in turn calls the build_lib script to compile the native library for the zwave package.

Finally, run the included command line application to ensure that this package is installed correctly and can communicate with your devices using your Z-Wave Controller.



  • add node group/association accessor, add node, remove node
  • add Device.requestAllConfigParams, Device.get/setConfigParam
  • use Device.setConfigParam instead of the ZWave.device "configuration" parameter
  • track last time that each value changes
  • add orElse named argument to Device.valueByIndex
  • add zwave command line application for querying and updating the ZWave devices


  • implement addDevice and removeDevice methods
  • implement RawValue
  • partially implement ScheduleValue
  • add ZWave.heal to update node routing tables
  • add Device.neighborIds indicating which other devices a device can directly communicate with


  • enhance ZWave.device to optionally set device name and configuration
  • add ZWave.pollInterval and Value.pollIntensity accessors
  • add Value help text and Device.valueByIndex accessors
  • new NodeEvent and SceneEvent subclasses of Notification


  • add Value.index to differentiate between values with the same label
  • update Device.value(...) to search userValues first then all values
  • enhance toString to include device name and value label
  • fix Value.min and max
  • add support for setting short and byte values


  • update generate to include comments in src/zwave_g.dart
  • new ZWave deviceSummary convenience method for listing device info
  • add device and value lookup convenience methods
  • add Device update method for updating all a device's information
  • add Device onNotification event stream
  • add support for setting int value
  • rename ZWave.deviceSummary() --> summary() and add Device.summary()
  • add and Device.label getters and setters


  • add writeConfig to save network configuration
  • add setters to bool and list values
  • add onChange notification stream
  • add value readOnly and writeOnly accessors
  • parameterize the Value class and its methods
  • add userPath for specifying user data directory
  • add support for DoubleValue


  • add value label accessor
  • add value genre and device userValues accessors
  • improve docs


  • add device accessors for product and manufacturer information
  • write network config to file on shutdown
  • cleanup generated code and usages


  • build device value list from notifications


  • initialize Open Z-Wave library
  • connect to Z-Wave controller
  • build device list from notifications

1. Depend on it

Add this to your package's pubspec.yaml file:

  zwave: "^0.8.0"

2. Install it

You can install packages from the command line:

with pub:

$ pub get

Alternatively, your editor might support pub get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:

import 'package:zwave/zwave.dart';
Version Uploaded Documentation Archive
0.8.0 Jul 5, 2017 Go to the documentation of zwave 0.8.0 Download zwave 0.8.0 archive
0.7.0 Dec 27, 2016 Go to the documentation of zwave 0.7.0 Download zwave 0.7.0 archive
0.6.0 Aug 8, 2016 Go to the documentation of zwave 0.6.0 Download zwave 0.6.0 archive
0.5.0 Jul 29, 2016 Go to the documentation of zwave 0.5.0 Download zwave 0.5.0 archive
0.3.0 Jul 23, 2016 Go to the documentation of zwave 0.3.0 Download zwave 0.3.0 archive
0.2.0 Jul 16, 2016 Go to the documentation of zwave 0.2.0 Download zwave 0.2.0 archive
0.1.3 Jul 2, 2016 Go to the documentation of zwave 0.1.3 Download zwave 0.1.3 archive
0.1.2 Jun 19, 2016 Go to the documentation of zwave 0.1.2 Download zwave 0.1.2 archive
0.1.1 May 31, 2016 Go to the documentation of zwave 0.1.1 Download zwave 0.1.1 archive
0.1.0 May 31, 2016 Go to the documentation of zwave 0.1.0 Download zwave 0.1.0 archive


This feature is new.
We welcome feedback.
More details: scoring.

We analyzed this package, and provided a score, details, and suggestions below.

  • tool failures on Feb 24, 2018
  • Dart: 2.0.0-dev.20.0
  • pana: 0.10.1


Describes how popular the package is relative to other packages. [more]
0 / 100
Code health derived from static analysis. [more]
80 / 100
Reflects how tidy and up-to-date the package is. [more]
72 / 100
Overall score:
Weighted score of the above. [more]


Detected platforms: unsure

Error(s) prevent platform classification.


  • Fix lib/src/ozw.dart.

    Strong-mode analysis of lib/src/ozw.dart failed with the following error:

    line: 163 col: 32
    The return type 'List<String>' isn't a 'List<int>', as defined by the method '_networkIds'.

  • Fix lib/zwave.dart.

    Strong-mode analysis of lib/zwave.dart failed with the following error:

    line: 346 col: 9
    The name 'valueByIndex' is already defined.

  • Fix platform conflicts.

    Make sure none of the libraries use mutually exclusive dependendencies.

  • Fix issues reported by dartanalyzer.

    dartanalyzer reported 2 error(s) and 0 warning(s).

  • Package is pre-v1 release.

    While there is nothing inherently wrong with versions of 0.*.*, it usually means that the author is still experimenting with the general direction API.

  • Maintain an example.

    Create a short demo in the example/ directory to show how to use this package. Common file name patterns include: main.dart, example.dart or you could also use zwave.dart.


Package Constraint Resolved Available
Direct dependencies
Dart SDK >=1.15.0 <2.0.0
args >=0.13.7 <1.1.0 1.0.2 1.4.1
logging ^0.11.3 0.11.3+1
Dev dependencies
grinder ^0.8.0
mockito ^2.0.2
test ^0.12.4