goopenzwave

package module
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 16, 2019 License: MIT Imports: 4 Imported by: 0

README

goopenzwave

Go bindings for the OpenZWave library.

Warning

This package is still fairly new and so the API is changing pretty rapidly, so be careful if you decide to use it. However, the API will try to mimic the C++ OpenZWave library as much as possible, if it doesn't already, so there shouldn't be many breaking changes.

Most of the C++ OpenZWave library is wrapped now, but should you find anything missing please create a new issue or fork it, implement it yourself and submit a pull request.

Installing OpenZWave

This package requires a system installation of OpenZWave. pkg-config is then used during the build of this package to get the open-zwave library and headers.

Note that package managers may install an old version of the library so a manual build/install from source is preferred.

Example install from source:

  1. git clone https://github.com/OpenZWave/open-zwave.git
  2. cd open-zwave
  3. make -j$(nproc)
  4. sudo make install
  5. You may need to call sudo ldconfig now on linux systems
  6. See the open-zwave/INSTALL file for more information

Get the Package

go get github.com/jimjibone/goopenzwave

Example: gominozw

This package comes with a basic example, gominozw, which is a replica of the original C++ OpenZWave MinOZW utility, now written in Go.

It shows how to set up the Manager with various options and listen for Notifications. Once the initial scan of devices is complete, polling for basic values is set up for the devices.

To install and use:

go install github.com/jimjibone/goopenzwave/gominozw
gominozw --controller /dev/ttyYourUSBDevice

Notes

open-zwave build fails with fatal error: libudev.h: No such file or directory on Debian/Ubuntu

Try installing libudev with apt and build again.

apt-get install libudev-dev
cd open-zwave && make
Crashes instantly on macOS 10.12

Do you see something like this when trying to run something with the goopenzwave package?

$ ./gominozw -h
zsh: killed     ./gominozw -h

You should try building with the -ldflags=-s option. E.g.: go build -ldflags=-s. More info at golang/go#19734.

Documentation

Index

Constants

View Source
const (
	LogLevelInvalid      = LogLevel(C.loglevel_invalid)
	LogLevelNone         = LogLevel(C.loglevel_none)
	LogLevelAlways       = LogLevel(C.loglevel_always)
	LogLevelFatal        = LogLevel(C.loglevel_fatal)
	LogLevelError        = LogLevel(C.loglevel_error)
	LogLevelWarning      = LogLevel(C.loglevel_warning)
	LogLevelAlert        = LogLevel(C.loglevel_alert)
	LogLevelInfo         = LogLevel(C.loglevel_info)
	LogLevelDetail       = LogLevel(C.loglevel_detail)
	LogLevelDebug        = LogLevel(C.loglevel_debug)
	LogLevelStreamdetail = LogLevel(C.loglevel_streamdetail)
	LogLevelInternal     = LogLevel(C.loglevel_internal)
)

Variables

This section is empty.

Functions

func AddAssociation

func AddAssociation(homeID uint32, nodeID uint8, groupIDx uint8, targetNodeID uint8, instance uint8) error

AddAssociation adds a node to an association group.

Due to the possibility of a device being asleep, the command is assumed to succeed, and the association data held in this class is updated directly. This will be reverted by a future Association message from the device if the Z-Wave message actually failed to get through. Notification callbacks will be sent in both cases.

func AddDriver

func AddDriver(controllerPath string) error

AddDriver creates a new driver for a Z-Wave controller using the path specified (e.g. "/dev/ttyUSB0"). It returns an error if the controller already exists.

This method creates a Driver object for handling communications with a single Z-Wave controller. In the background, the driver first tries to read configuration data saved during a previous run. It then queries the controller directly for any missing information, and a refresh of the list of nodes that it controls. Once this information has been received, a DriverReady notification callback is sent, containing the Home ID of the controller. This Home ID is required by most of the OpenZWave Manager class methods.

func AddNode

func AddNode(homeID uint32, doSecurity bool) (bool, error)

AddNode starts the Inclusion Process to add a Node to the Network. It will return true if the command was sent to the controller successfully.

The Status of the Node Inclusion is communicated via Notifications. Specifically, you should monitor ControllerCommand Notifications.

func AssignReturnRoute

func AssignReturnRoute(homeID uint32, nodeID uint8) (bool, error)

AssignReturnRoute will ask a Node to update its update its Return Route to the Controller. It will return true if the command was sent to the controller successfully.

func CancelControllerCommand

func CancelControllerCommand(homeID uint32)

CancelControllerCommand cancels any in-progress command running on a controller.

func ClearSwitchPoints

func ClearSwitchPoints(homeID uint32, valueID uint64)

ClearSwitchPoints clears all switch points from the schedule.

func CreateButton

func CreateButton(homeID uint32, nodeID uint8, buttonID uint8) (bool, error)

CreateButton create a handheld button id. It will return true if the command was sent to the controller successfully.

func CreateNewPrimary

func CreateNewPrimary(homeID uint32) (bool, error)

CreateNewPrimary will create a new primary controller when old primary fails. Requires SUC. It will return true if the command was sent to the controller successfully.

This command Creates a new Primary Controller when the Old Primary has Failed.

Requires a SUC on the network to function.

func DeleteAllReturnRoutes

func DeleteAllReturnRoutes(homeID uint32, nodeID uint8) (bool, error)

DeleteAllReturnRoutes will ask a Node to delete all Return Routes. It will return true if the command was sent to the controller successfully.

This command will ask a Node to delete all its return routes, and will rediscover when needed.

func DeleteButton

func DeleteButton(homeID uint32, nodeID uint8, buttonID uint8) (bool, error)

DeleteButton deletes a handheld button id. It will return true if the command was sent to the controller successfully.

func DestroyOptions

func DestroyOptions() bool

DestroyOptions deletes the Options and cleans up any associated objects. The application is responsible for destroying the Options object, but this must not be done until after the Manager object has been destroyed.

func DisablePoll

func DisablePoll(homeID uint32, valueID uint64) bool

DisablePoll disables the polling of a device's state. Returns true if polling was disabled.

func EnablePoll

func EnablePoll(homeID uint32, valueID uint64, intensity uint8) bool

EnablePoll enables the polling of a device's state. Returns true if polling was enabled.

func GetChangeVerified

func GetChangeVerified(homeID uint32, valueID uint64) (bool, error)

GetChangeVerified returns true if value changes upon a refresh should be verified. If so, the library will immediately refresh the value a second time whenever a change is observed. This helps to filter out spurious data reported occasionally by some devices.

func GetControllerNodeID

func GetControllerNodeID(homeID uint32) uint8

GetControllerNodeID returns the node ID of the Z-Wave controller.

func GetControllerPath

func GetControllerPath(homeID uint32) string

GetControllerPath returns a string of the controller interface path.

func GetGroupLabel

func GetGroupLabel(homeID uint32, nodeID uint8, groupIDx uint8) (string, error)

GetGroupLabel returns a label for the particular group of a node. This label is populated by the device specific configuration files.

func GetLibraryTypeName

func GetLibraryTypeName(homeID uint32) string

GetLibraryTypeName returns a string containing the Z-Wave API library type used by a controller.

The possible library types are: - Static Controller - Controller - Enhanced Slave - Slave - Installer - Routing Slave - Bridge Controller - Device Under Test

The controller should never return a slave library type. For a more efficient test of whether a controller is a Bridge Controller, use the IsBridgeController method.

func GetLibraryVersion

func GetLibraryVersion(homeID uint32) string

GetLibraryVersion returns a string version of the Z-Wave API library used by a controller.

func GetMaxAssociations

func GetMaxAssociations(homeID uint32, nodeID uint8, groupIDx uint8) (uint8, error)

GetMaxAssociations returns the maximum number of associations for a group.

func GetNodeBasicType

func GetNodeBasicType(homeID uint32, nodeID uint8) (uint8, error)

GetNodeBasicType returns the basic type of a node.

func GetNodeClassInformation

func GetNodeClassInformation(homeID uint32, nodeID uint8, commandClassID uint8) (bool, string, uint8, error)

GetNodeClassInformation returns true if the node has the defined class available or not, and the class name and version if available.

func GetNodeDeviceType

func GetNodeDeviceType(homeID uint32, nodeID uint8) (uint16, error)

GetNodeDeviceType returns the node device type as reported in the Z-Wave+ Info report.

func GetNodeDeviceTypeString

func GetNodeDeviceTypeString(homeID uint32, nodeID uint8) (string, error)

GetNodeDeviceTypeString returns a string of the node device type as reported in the Z-Wave+ Info report.

func GetNodeGenericType

func GetNodeGenericType(homeID uint32, nodeID uint8) (uint8, error)

GetNodeGenericType returns the generic type of a node.

func GetNodeLocation

func GetNodeLocation(homeID uint32, nodeID uint8) (string, error)

GetNodeLocation returns the location of a node.

The node location is a user-editable string that would normally be handled by the Node Naming commmand class, but many devices do not support it. So that a node can always report its location, OpenZWave stores it with the node data, and provides access through this method and SetNodeLocation, rather than reporting it via a command class Value object.

func GetNodeManufacturerID

func GetNodeManufacturerID(homeID uint32, nodeID uint8) (string, error)

GetNodeManufacturerID returns the manufacturer ID of a device.

The manufacturer ID is a four digit hex code and would normally be handled by the Manufacturer Specific commmand class, but not all devices support it. Although the value reported by this method will be an empty string if the command class is not supported and cannot be set by the user, the manufacturer ID is still stored with the node data (rather than being reported via a command class Value object) to retain a consistent approach with the other manufacturer specific data.

func GetNodeManufacturerName

func GetNodeManufacturerName(homeID uint32, nodeID uint8) (string, error)

GetNodeManufacturerName returns the manufacturer name of a device.

The manufacturer name would normally be handled by the Manufacturer Specific commmand class, taking the manufacturer ID reported by the device and using it to look up the name from the manufacturer_specific.xml file in the OpenZWave config folder. However, there are some devices that do not support the command class, so to enable the user to manually set the name, it is stored with the node data and accessed via this method rather than being reported via a command class Value object.

func GetNodeMaxBaudRate

func GetNodeMaxBaudRate(homeID uint32, nodeID uint8) (uint32, error)

GetNodeMaxBaudRate returns the maximum baud rate of a node's communications.

func GetNodeName

func GetNodeName(homeID uint32, nodeID uint8) (string, error)

GetNodeName returns the name of a node.

The node name is a user-editable label for the node that would normally be handled by the Node Naming commmand class, but many devices do not support it. So that a node can always be named, OpenZWave stores it with the node data, and provides access through this method and SetNodeName, rather than reporting it via a command class Value object. The maximum length of a node name is 16 characters.

func GetNodePlusType

func GetNodePlusType(homeID uint32, nodeID uint8) (uint8, error)

GetNodePlusType returns the node PlusType as reported in the Z-Wave+ Info report.

func GetNodePlusTypeString

func GetNodePlusTypeString(homeID uint32, nodeID uint8) (string, error)

GetNodePlusTypeString returns a string of the node PlusType as reported in the Z-Wave+ Info report.

func GetNodeProductID

func GetNodeProductID(homeID uint32, nodeID uint8) (string, error)

GetNodeProductID returns the product ID of a device.

The product ID is a four digit hex code and would normally be handled by the Manufacturer Specific commmand class, but not all devices support it. Although the value reported by this method will be an empty string if the command class is not supported and cannot be set by the user, the product ID is still stored with the node data (rather than being reported via a command class Value object) to retain a consistent approach with the other manufacturer specific data.

func GetNodeProductName

func GetNodeProductName(homeID uint32, nodeID uint8) (string, error)

GetNodeProductName returns the product name of a device.

The product name would normally be handled by the Manufacturer Specific commmand class, taking the product Type and ID reported by the device and using it to look up the name from the manufacturer_specific.xml file in the OpenZWave config folder. However, there are some devices that do not support the command class, so to enable the user to manually set the name, it is stored with the node data and accessed via this method rather than being reported via a command class Value object.

func GetNodeProductType

func GetNodeProductType(homeID uint32, nodeID uint8) (string, error)

GetNodeProductType returns the product type of a device.

The product type is a four digit hex code and would normally be handled by the Manufacturer Specific commmand class, but not all devices support it. Although the value reported by this method will be an empty string if the command class is not supported and cannot be set by the user, the product type is still stored with the node data (rather than being reported via a command class Value object) to retain a consistent approach with the other manufacturer specific data.

func GetNodeQueryStage

func GetNodeQueryStage(homeID uint32, nodeID uint8) (string, error)

GetNodeQueryStage returns the node's query stage as a string.

func GetNodeRole

func GetNodeRole(homeID uint32, nodeID uint8) (uint8, error)

GetNodeRole returns the node role as reported in the Z-Wave+ Info report.

func GetNodeRoleString

func GetNodeRoleString(homeID uint32, nodeID uint8) (string, error)

GetNodeRoleString returns a string of the node role as reported in the Z-Wave+ Info report.

func GetNodeSecurity

func GetNodeSecurity(homeID uint32, nodeID uint8) (uint8, error)

GetNodeSecurity returns the security byte of a node.

func GetNodeSpecificType

func GetNodeSpecificType(homeID uint32, nodeID uint8) (uint8, error)

GetNodeSpecificType returns the specific type of a node.

func GetNodeType

func GetNodeType(homeID uint32, nodeID uint8) (string, error)

GetNodeType returns a human-readable label describing the node.

The label is taken from the Z-Wave specific, generic or basic type, depending on which of those values are specified by the node.

func GetNodeVersion

func GetNodeVersion(homeID uint32, nodeID uint8) (uint8, error)

GetNodeVersion returns the version number of a node.

func GetNumGroups

func GetNumGroups(homeID uint32, nodeID uint8) (uint8, error)

GetNumGroups returns the number of association groups reported by this node.

In Z-Wave, groups are numbered starting from one. For example, if a call to GetNumGroups returns 4, the _groupIdx value to use in calls to GetAssociations, AddAssociation and RemoveAssociation will be a number between 1 and 4.

func GetNumSwitchPoints

func GetNumSwitchPoints(homeID uint32, valueID uint64) (uint8, error)

GetNumSwitchPoints returns the number of switch points defined in a schedule. It will return zero if the value if not of schedule type.

func GetPollIntensity

func GetPollIntensity(homeID uint32, valueID uint64) uint8

GetPollIntensity returns the polling intensity of a device's state.

func GetPollInterval

func GetPollInterval() int32

GetPollInterval returns the time period between polls of a node's state.

func GetSUCNodeID

func GetSUCNodeID(homeID uint32) uint8

GetSUCNodeID returns the node ID of the Static Update Controller.

func GetSendQueueCount

func GetSendQueueCount(homeID uint32) int32

GetSendQueueCount returns the count of messages in the outgoing send queue.

func GetSwitchPoint

func GetSwitchPoint(homeID uint32, valueID uint64, idx uint8) (uint8, uint8, int8, error)

GetSwitchPoint returns switch point data from the schedule. It will also return an error if the value is not of schedule type.

It retrieves the time and setback values from a switch point in the schedule.

func GetValueAsBool

func GetValueAsBool(homeID uint32, valueID uint64) (bool, error)

GetValueAsBool returns the value as a bool. It will also return an error if the value is not a bool type.

func GetValueAsByte

func GetValueAsByte(homeID uint32, valueID uint64) (byte, error)

GetValueAsByte returns the value as an 8-bit unsigned integer. It will also return an error if the value is not of byte type.

func GetValueAsFloat

func GetValueAsFloat(homeID uint32, valueID uint64) (float32, error)

GetValueAsFloat returns the value as a float. It will also return an error if the value is not a decimal type.

func GetValueAsInt

func GetValueAsInt(homeID uint32, valueID uint64) (int32, error)

GetValueAsInt returns the value as a 32-bit signed integer. It will also return an error if the value is not of 32-bit signed integer type.

func GetValueAsRaw

func GetValueAsRaw(homeID uint32, valueID uint64) ([]byte, error)

GetValueAsRaw returns the value as a raw byte slice. It will also return an error if the value is not of raw type.

func GetValueAsShort

func GetValueAsShort(homeID uint32, valueID uint64) (int16, error)

GetValueAsShort returns the value as a 16-bit signed integer. It will also return an error if the value is not of 16-bit signed integer type.

func GetValueAsString

func GetValueAsString(homeID uint32, valueID uint64) string

GetValueAsString returns the value as a string, regardless of its actual type.

func GetValueFloatPrecision

func GetValueFloatPrecision(homeID uint32, valueID uint64) (uint8, error)

GetValueFloatPrecision returns the float value's precision. It will also return an error if the value is not of decimal type.

func GetValueHelp

func GetValueHelp(homeID uint32, valueID uint64) (string, error)

GetValueHelp returns a help string describing the value's purpose and usage.

func GetValueLabel

func GetValueLabel(homeID uint32, valueID uint64) (string, error)

GetValueLabel returns the user-friendly label for the value.

func GetValueListItems

func GetValueListItems(homeID uint32, valueID uint64) ([]string, error)

GetValueListItems returns the list of items from a list value. It will also return an error if the value is not of list type.

func GetValueListSelectionAsInt32

func GetValueListSelectionAsInt32(homeID uint32, valueID uint64) (int32, error)

GetValueListSelectionAsInt32 returns selected item from a list as an integer. It will also return an error if the value is not of list type.

func GetValueListSelectionAsString

func GetValueListSelectionAsString(homeID uint32, valueID uint64) (string, error)

GetValueListSelectionAsString returns selected item from a list as a string. It will also return an error if the value is not of list type.

func GetValueMax

func GetValueMax(homeID uint32, valueID uint64) (int32, error)

GetValueMax returns the maximum that this value may contain.

func GetValueMin

func GetValueMin(homeID uint32, valueID uint64) (int32, error)

GetValueMin returns the minimum that this value may contain.

func GetValueUnits

func GetValueUnits(homeID uint32, valueID uint64) (string, error)

GetValueUnits returns the units that the value is measured in.

func GetVersionAsString

func GetVersionAsString() string

GetVersionAsString returns the Version Number of OZW as a string.

func GetVersionLongAsString

func GetVersionLongAsString() string

GetVersionLongAsString returns the Version Number including Git commit of OZW as a string.

func HasNodeFailed

func HasNodeFailed(homeID uint32, nodeID uint8) (bool, error)

HasNodeFailed checks if the Controller Believes a Node has Failed. The result is then communicated via a Notification. It will return true if the command was sent to the controller successfully.

This is different from the IsNodeFailed call in that we test the Controllers Failed Node List, whereas the IsNodeFailed is testing our list of Failed Nodes, which might be different. The Results will be communicated via Notifications. Specifically, you should monitor the ControllerCommand notifications.

func HealNetwork

func HealNetwork(homeID uint32, doRR bool)

HealNetwork heals a network by requesting node's rediscover their neighbors.

Sends a ControllerCommand_RequestNodeNeighborUpdate to every node. Can take a while on larger networks.

func HealNetworkNode

func HealNetworkNode(homeID uint32, nodeID uint8, doRR bool)

HealNetworkNode heals a network node by requesting that the node rediscovers their neighbors.

Sends a ControllerCommand_RequestNodeNeighborUpdate to the node.

func IsBridgeController

func IsBridgeController(homeID uint32) bool

IsBridgeController returns true if the controller is using the bridge controller library.

A bridge controller is able to create virtual nodes that can be associated with other controllers to enable events to be passed on.

func IsNodeAwake

func IsNodeAwake(homeID uint32, nodeID uint8) (bool, error)

IsNodeAwake returns true if the node is awake, otherwise false if it is asleep.

func IsNodeBeamingDevice

func IsNodeBeamingDevice(homeID uint32, nodeID uint8) (bool, error)

IsNodeBeamingDevice returns true if the node is a beam capable device.

func IsNodeFailed

func IsNodeFailed(homeID uint32, nodeID uint8) (bool, error)

IsNodeFailed returns true if the node is working, otherwise false if it has failed.

func IsNodeFrequentListeningDevice

func IsNodeFrequentListeningDevice(homeID uint32, nodeID uint8) (bool, error)

IsNodeFrequentListeningDevice returns true if the node is a frequent listening device that goes to sleep but can be woken up by a beam. Useful to determine node and controller consistency.

func IsNodeInfoReceived

func IsNodeInfoReceived(homeID uint32, nodeID uint8) (bool, error)

IsNodeInfoReceived returns whether the node information has been received.

func IsNodeListeningDevice

func IsNodeListeningDevice(homeID uint32, nodeID uint8) (bool, error)

IsNodeListeningDevice returns true if the node is a listening device that does not go to sleep.

func IsNodeRoutingDevice

func IsNodeRoutingDevice(homeID uint32, nodeID uint8) (bool, error)

IsNodeRoutingDevice returns true if the node is a routing device that passes messages to other nodes.

func IsNodeSecurityDevice

func IsNodeSecurityDevice(homeID uint32, nodeID uint8) (bool, error)

IsNodeSecurityDevice returns true if the node supports security features.

func IsNodeZWavePlus

func IsNodeZWavePlus(homeID uint32, nodeID uint8) (bool, error)

IsNodeZWavePlus returns true if this a ZWave+ Supported Node.

func IsPolled

func IsPolled(homeID uint32, valueID uint64) bool

IsPolled returns true if the device's state is being polled.

func IsPrimaryController

func IsPrimaryController(homeID uint32) bool

IsPrimaryController returns true if the controller is a primary controller.

The primary controller is the main device used to configure and control a Z-Wave network. There can only be one primary controller - all other controllers are secondary controllers.

func IsStaticUpdateController

func IsStaticUpdateController(homeID uint32) bool

IsStaticUpdateController returns true if the controller is a static update controller.

A Static Update Controller (SUC) is a controller that must never be moved in normal operation and which can be used by other nodes to receive information about network changes.

func IsValuePolled

func IsValuePolled(homeID uint32, valueID uint64) (bool, error)

IsValuePolled returns true if the value is currently being polled.

func IsValueReadOnly

func IsValueReadOnly(homeID uint32, valueID uint64) (bool, error)

IsValueReadOnly returns true if the value is read-only.

func IsValueSet

func IsValueSet(homeID uint32, valueID uint64) (bool, error)

IsValueSet returns true if the value has been set.

func IsValueWriteOnly

func IsValueWriteOnly(homeID uint32, valueID uint64) (bool, error)

IsValueWriteOnly returns true if the value is write-only.

func LogDriverStatistics

func LogDriverStatistics(homeID uint32)

LogDriverStatistics will send the current driver statistics to the log file.

func PressButton

func PressButton(homeID uint32, valueID uint64) error

PressButton starts an activity in a device. It will return an error if the value is not of button type.

Since buttons are write-only values that do not report a state, no notification callbacks are sent.

func ReceiveConfiguration

func ReceiveConfiguration(homeID uint32) (bool, error)

ReceiveConfiguration will receive network configuration information from the primary controller. Requires secondary. This command prepares the controller to recieve Network Configuration from a Secondary Controller. It will return true if the command was sent to the controller successfully.

func RefreshNodeInfo

func RefreshNodeInfo(homeID uint32, nodeID uint8) (bool, error)

RefreshNodeInfo triggers the fetching of fixed data about a node. Returns true if the request was sent successfully.

Causes the node's data to be obtained from the Z-Wave network in the same way as if it had just been added. This method would normally be called automatically by OpenZWave, but if you know that a node has been changed, calling this method will force a refresh of all of the data held by the library. This can be especially useful for devices that were asleep when the application was first run. This is the same as the query state starting from the beginning.

func RefreshValue

func RefreshValue(homeID uint32, valueID uint64) (bool, error)

RefreshValue refreshes the specified value from the Z-Wave network. It will return true if the driver and node were found, otherwise false.

A call to this function causes the library to send a message to the network to retrieve the current value of the specified ValueID (just like a poll, except only one-time, not recurring).

func ReleaseButton

func ReleaseButton(homeID uint32, valueID uint64) error

ReleaseButton stops an activity in a device. It will return an error if the value is not of button type.

Since buttons are write-only values that do not report a state, no notification callbacks are sent.

func RemoveAssociation

func RemoveAssociation(homeID uint32, nodeID uint8, groupIDx uint8, targetNodeID uint8, instance uint8)

RemoveAssociation removes a node from an association group.

Due to the possibility of a device being asleep, the command is assumed to succeed, and the association data held in this class is updated directly. This will be reverted by a future Association message from the device if the Z-Wave message actually failed to get through. Notification callbacks will be sent in both cases.

func RemoveDriver

func RemoveDriver(controllerPath string) error

RemoveDriver removes the driver for a Z-Wave controller as specified, and closes the controller. It returns an error if the controller could not be found.

Drivers do not need to be explicitly removed before calling Destroy - this is handled automatically.

func RemoveFailedNode

func RemoveFailedNode(homeID uint32, nodeID uint8) (bool, error)

RemoveFailedNode removes a Failed Device from the Z-Wave Network. It will return true if the command was sent to the controller successfully.

This Command will remove a failed node from the network. The Node should be on the Controllers Failed Node List, otherwise this command will fail. You can use the HasNodeFailed function below to test if the Controller believes the Node has Failed. The Status of the Node Removal is communicated via Notifications. Specifically, you should monitor ControllerCommand Notifications.

func RemoveNode

func RemoveNode(homeID uint32) (bool, error)

RemoveNode removes a Device from the Z-Wave Network. It will return true if the command was sent to the controller successfully.

The Status of the Node Removal is communicated via Notifications. Specifically, you should monitor ControllerCommand Notifications.

func RemoveSwitchPoint

func RemoveSwitchPoint(homeID uint32, valueID uint64, hours, minutes uint8) error

RemoveSwitchPoint removes a switch point from the schedule. It will return an error if the value is not of schedule type or there is no switch point with the specified time values.

func ReplaceFailedNode

func ReplaceFailedNode(homeID uint32, nodeID uint8) (bool, error)

ReplaceFailedNode will replace a failed device with another. If the node is not in the controller's failed nodes list, or the node responds, this command will fail. You can check if a Node is in the Controllers Failed node list by using the HasNodeFailed method. It will return true if the command was sent to the controller successfully.

func ReplicationSend

func ReplicationSend(homeID uint32, nodeID uint8) (bool, error)

ReplicationSend sends information from primary to secondary. It will return true if the command was sent to the controller successfully.

func RequestNetworkUpdate

func RequestNetworkUpdate(homeID uint32, nodeID uint8) (bool, error)

RequestNetworkUpdate updates the controller with network information from the SUC/SIS. It will return true if the command was sent to the controller successfully.

func RequestNodeAllConfigParam

func RequestNodeAllConfigParam(homeID uint32, nodeID uint8)

RequestNodeAllConfigParam requests the values of all known configurable parameters from a device.

func RequestNodeConfigParam

func RequestNodeConfigParam(homeID uint32, nodeID uint8, param uint8)

RequestNodeConfigParam requests the value of a configurable parameter from a device.

Some devices have various parameters that can be configured to control the device behaviour. These are not reported by the device over the Z-Wave network, but can usually be found in the device's user manual. This method requests the value of a parameter from the device, and then returns immediately, without waiting for a response. If the parameter index is valid for this device, and the device is awake, the value will eventually be reported via a ValueChanged notification callback. The ValueID reported in the callback will have an index set the same as _param and a command class set to the same value as returned by a call to Configuration::StaticGetCommandClassId.

func RequestNodeDynamic

func RequestNodeDynamic(homeID uint32, nodeID uint8) (bool, error)

RequestNodeDynamic triggers the fetching of just the dynamic value data for a node. Returns true if the request was sent successfully.

Causes the node's values to be requested from the Z-Wave network. This is the same as the query state starting from the dynamic state.

func RequestNodeNeighborUpdate

func RequestNodeNeighborUpdate(homeID uint32, nodeID uint8) (bool, error)

RequestNodeNeighborUpdate will ask a Node to update its Neighbor Tables. It will return true if the command was sent to the controller successfully.

This command will ask a Node to update its Neighbor Tables.

func RequestNodeState

func RequestNodeState(homeID uint32, nodeID uint8) (bool, error)

RequestNodeState triggers the fetching of dynamic value data for a node. Returns true if the request was sent successfully.

Causes the node's values to be requested from the Z-Wave network. This is the same as the query state starting from the associations state.

func ResetController

func ResetController(homeID uint32)

ResetController performs a hard reset on a PC Z-Wave Controller.

Resets a controller and erases its network configuration settings. The controller becomes a primary controller ready to add devices to a new network.

func SendNodeInformation

func SendNodeInformation(homeID uint32, nodeID uint8) (bool, error)

SendNodeInformation sends a NIF frame from the Controller to a Node. It will return true if the command was sent to the controller successfully.

This command send a NIF frame from the Controller to a Node.

func SetChangeVerified

func SetChangeVerified(homeID uint32, valueID uint64, verify bool)

SetChangeVerified sets a flag indicating whether value changes noted upon a refresh should be verified. If so, the library will immediately refresh the value a second time whenever a change is observed. This helps to filter out spurious data reported occasionally by some devices.

func SetNodeConfigParam

func SetNodeConfigParam(homeID uint32, nodeID uint8, param uint8, value int32, size uint8) (bool, error)

SetNodeConfigParam sets the value of a configurable parameter in a device. Returns true if the message setting was sent to the device.

Some devices have various parameters that can be configured to control the device behaviour. These are not reported by the device over the Z-Wave network, but can usually be found in the device's user manual. This method returns immediately, without waiting for confirmation from the device that the change has been made.

func SetNodeLevel

func SetNodeLevel(homeID uint32, nodeID uint8, level uint8)

SetNodeLevel sets the basic level of a node.

This is a helper method to simplify basic control of a node. It is the equivalent of changing the value reported by the node's Basic command class and will generate a ValueChanged notification from that class.

func SetNodeLocation

func SetNodeLocation(homeID uint32, nodeID uint8, location string)

SetNodeLocation sets the location of a node.

The node location is a user-editable string that would normally be handled by the Node Naming commmand class, but many devices do not support it. So that a node can always report its location, OpenZWave stores it with the node data, and provides access through this method and GetNodeLocation, rather than reporting it via a command class Value object. If the device does support the Node Naming command class, the new location will be sent to the node.

func SetNodeManufacturerName

func SetNodeManufacturerName(homeID uint32, nodeID uint8, manufacturerName string)

SetNodeManufacturerName sets the manufacturer name of a device.

The manufacturer name would normally be handled by the Manufacturer Specific commmand class, taking the manufacturer ID reported by the device and using it to look up the name from the manufacturer_specific.xml file in the OpenZWave config folder. However, there are some devices that do not support the command class, so to enable the user to manually set the name, it is stored with the node data and accessed via this method rather than being reported via a command class Value object.

func SetNodeName

func SetNodeName(homeID uint32, nodeID uint8, nodeName string)

SetNodeName sets the name of a node.

The node name is a user-editable label for the node that would normally be handled by the Node Naming commmand class, but many devices do not support it. So that a node can always be named, OpenZWave stores it with the node data, and provides access through this method and GetNodeName, rather than reporting it via a command class Value object. If the device does support the Node Naming command class, the new name will be sent to the node. The maximum length of a node name is 16 characters.

func SetNodeOff

func SetNodeOff(homeID uint32, nodeID uint8)

SetNodeOff turns a node off.

This is a helper method to simplify basic control of a node. It is the equivalent of changing the level reported by the node's Basic command class to zero, and will generate a ValueChanged notification from that class.

func SetNodeOn

func SetNodeOn(homeID uint32, nodeID uint8)

SetNodeOn turns a node on.

This is a helper method to simplify basic control of a node. It is the equivalent of changing the level reported by the node's Basic command class to 255, and will generate a ValueChanged notification from that class. This command will turn on the device at its last known level, if supported by the device, otherwise it will turn it on at 100%.

func SetNodeProductName

func SetNodeProductName(homeID uint32, nodeID uint8, productName string)

SetNodeProductName sets the product name of a device.

The product name would normally be handled by the Manufacturer Specific commmand class, taking the product Type and ID reported by the device and using it to look up the name from the manufacturer_specific.xml file in the OpenZWave config folder. However, there are some devices that do not support the command class, so to enable the user to manually set the name, it is stored with the node data and accessed via this method rather than being reported via a command class Value object.

func SetPollIntensity

func SetPollIntensity(homeID uint32, valueID uint64, intensity uint8)

SetPollIntensity sets the frequency of polling.

  • 0 = none
  • 1 = every time through the list
  • 2 = every other time
  • etc.

func SetPollInterval

func SetPollInterval(milliseconds int32, intervalBetweenPolls bool)

SetPollInterval will set the time period between polls of a node's state.

Due to patent concerns, some devices do not report state changes automatically to the controller. These devices need to have their state polled at regular intervals. The length of the interval is the same for all devices. To even out the Z-Wave network traffic generated by polling, OpenZWave divides the polling interval by the number of devices that have polling enabled, and polls each in turn. It is recommended that if possible, the interval should not be set shorter than the number of polled devices in seconds (so that the network does not have to cope with more than one poll per second).

func SetSwitchPoint

func SetSwitchPoint(homeID uint32, valueID uint64, hours, minutes uint8, setback int8) error

SetSwitchPoint sets a switch point in the schedule. It will return an error if the value is not of schedule type.

Inserts a new switch point into the schedule, unless a switch point already exists at the specified time in which case that switch point is updated with the new setback value instead. A maximum of nine switch points can be set in the schedule.

func SetValueBool

func SetValueBool(homeID uint32, valueID uint64, value bool) error

SetValueBool sets the state of a bool. It will return an error if the value is not of bool type.

Due to the possibility of a device being asleep, the command is assumed to succeed, and the value held by the node is updated directly. This will be reverted by a future status message from the device if the Z-Wave message actually failed to get through. Notification callbacks will be sent in both cases.

func SetValueBytes

func SetValueBytes(homeID uint32, valueID uint64, value []byte) error

SetValueBytes sets the value of a raw value. It will return an error if the value is not of raw type.

Due to the possibility of a device being asleep, the command is assumed to succeed, and the value held by the node is updated directly. This will be reverted by a future status message from the device if the Z-Wave message actually failed to get through. Notification callbacks will be sent in both cases.

func SetValueFloat

func SetValueFloat(homeID uint32, valueID uint64, value float32) error

SetValueFloat sets the value of a decimal. It will return an error if the value is not of decimal type.

It is usually better to handle decimal values using strings rather than floats, to avoid floating point accuracy issues. Due to the possibility of a device being asleep, the command is assumed to succeed, and the value held by the node is updated directly. This will be reverted by a future status message from the device if the Z-Wave message actually failed to get through. Notification callbacks will be sent in both cases.

func SetValueHelp

func SetValueHelp(homeID uint32, valueID uint64, value string)

SetValueHelp sets a help string describing the value's purpose and usage.

func SetValueInt16

func SetValueInt16(homeID uint32, valueID uint64, value int16) error

SetValueInt16 sets the value of a 16-bit signed integer. It will return an error if the value is not of 16-bit signed integer type.

Due to the possibility of a device being asleep, the command is assumed to succeed, and the value held by the node is updated directly. This will be reverted by a future status message from the device if the Z-Wave message actually failed to get through. Notification callbacks will be sent in both cases.

func SetValueInt32

func SetValueInt32(homeID uint32, valueID uint64, value int32) error

SetValueInt32 sets the value of a 32-bit signed integer. It will return an error if the value is not of 32-bit signed integer type.

Due to the possibility of a device being asleep, the command is assumed to succeed, and the value held by the node is updated directly. This will be reverted by a future status message from the device if the Z-Wave message actually failed to get through. Notification callbacks will be sent in both cases.

func SetValueLabel

func SetValueLabel(homeID uint32, valueID uint64, value string) error

SetValueLabel sets the user-friendly label for the value.

func SetValueListSelection

func SetValueListSelection(homeID uint32, valueID uint64, selection string) error

SetValueListSelection sets the selected item in a list. It will return an error if the value is not of list type or if the selection is not in the list.

Due to the possibility of a device being asleep, the command is assumed to succeed, and the value held by the node is updated directly. This will be reverted by a future status message from the device if the Z-Wave message actually failed to get through. Notification callbacks will be sent in both cases.

func SetValueString

func SetValueString(homeID uint32, valueID uint64, value string) error

SetValueString sets the value from a string, regardless of type. It will return an error if the value could not be parsed into the correct type for the value.

Due to the possibility of a device being asleep, the command is assumed to succeed, and the value held by the node is updated directly. This will be reverted by a future status message from the device if the Z-Wave message actually failed to get through. Notification callbacks will be sent in both cases.

func SetValueUint8

func SetValueUint8(homeID uint32, valueID uint64, value uint8) error

SetValueUint8 sets the value of a byte. It will return an error if the value is not of byte type.

Due to the possibility of a device being asleep, the command is assumed to succeed, and the value held by the node is updated directly. This will be reverted by a future status message from the device if the Z-Wave message actually failed to get through. Notification callbacks will be sent in both cases.

func SetValueUnits

func SetValueUnits(homeID uint32, valueID uint64, value string) error

SetValueUnits sets the units that the value is measured in.

func SoftReset

func SoftReset(homeID uint32)

SoftReset performs a soft reset on a PC Z-Wave Controller.

Resets a controller without erasing its network configuration settings.

func Start

func Start(handler NotificationHandler) error

Start will create a new OpenZWave Manager, starting the library execution. The OpenZWave Options must be created and locked before calling this. See the Options struct. Also pass a NotificationHandler function to this as notifications will also be started.

func Stop

func Stop() error

Stop will stop notifications and destroy the manager. Do this just before you quit your app. Don't forget to destroy the Options object after calling this.

func TestNetwork

func TestNetwork(homeID uint32, count uint32)

TestNetwork tests the network.

Sends a series of messages to every node on the network for testing network reliability.

func TestNetworkNode

func TestNetworkNode(homeID uint32, nodeID uint8, count uint32)

TestNetworkNode tests the network node.

Sends a series of messages to a network node for testing network reliability.

func TransferPrimaryRole

func TransferPrimaryRole(homeID uint32) (bool, error)

TransferPrimaryRole adds a new controller to the network and make it the primary. The existing primary will become a secondary controller. It will return true if the command was sent to the controller successfully.

Types

type LogLevel

type LogLevel int32

type Node

type Node struct {
	HomeID uint32
	NodeID uint8
}

Node contains all necessary information for a Node from the OpenZWave library. Create a new Node by using the `NewNode` function with the HomeID and NodeID as supplied from a Notification.

func NewNode

func NewNode(homeID uint32, nodeID uint8) *Node

NewNode will create a new Node object filled with the data available from the Manager based on the homeID and nodeID.

func (*Node) GetBasicType

func (n *Node) GetBasicType() (uint8, error)

GetBasicType Get the basic type of a node.

func (*Node) GetClassInformation

func (n *Node) GetClassInformation(commandClassID uint8) (bool, string, uint8, error)

GetClassInformation Get whether the node has the defined class available or not.

func (*Node) GetDeviceType

func (n *Node) GetDeviceType() (uint16, error)

GetDeviceType Get the node device type as reported in the Z-Wave+ Info report.

func (*Node) GetDeviceTypeString

func (n *Node) GetDeviceTypeString() (string, error)

GetDeviceTypeString Get the node device type as reported in the Z-Wave+ Info report.

func (*Node) GetGenericType

func (n *Node) GetGenericType() (uint8, error)

GetGenericType Get the generic type of a node.

func (*Node) GetLocation

func (n *Node) GetLocation() (string, error)

GetLocation Get the location of a node The node location is a user-editable string that would normally be handled by the Node Naming commmand class, but many devices do not support it. So that a node can always report its location, OpenZWave stores it with the node data, and provides access through this method and SetNodeLocation, rather than reporting it via a command class Value object.

func (*Node) GetManufacturerID

func (n *Node) GetManufacturerID() (string, error)

GetManufacturerID Get the manufacturer ID of a device The manufacturer ID is a four digit hex code and would normally be handled by the Manufacturer Specific commmand class, but not all devices support it. Although the value reported by this method will be an empty string if the command class is not supported and cannot be set by the user, the manufacturer ID is still stored with the node data (rather than being reported via a command class Value object) to retain a consistent approach with the other manufacturer specific data.

func (*Node) GetManufacturerName

func (n *Node) GetManufacturerName() (string, error)

GetManufacturerName Get the manufacturer name of a device The manufacturer name would normally be handled by the Manufacturer Specific commmand class, taking the manufacturer ID reported by the device and using it to look up the name from the manufacturer_specific.xml file in the OpenZWave config folder. However, there are some devices that do not support the command class, so to enable the user to manually set the name, it is stored with the node data and accessed via this method rather than being reported via a command class Value object.

func (*Node) GetMaxBaudRate

func (n *Node) GetMaxBaudRate() (uint32, error)

GetMaxBaudRate Get the maximum baud rate of a node's communications.

func (*Node) GetName

func (n *Node) GetName() (string, error)

GetName Get the name of a node The node name is a user-editable label for the node that would normally be handled by the Node Naming commmand class, but many devices do not support it. So that a node can always be named, OpenZWave stores it with the node data, and provides access through this method and SetNodeName, rather than reporting it via a command class Value object. The maximum length of a node name is 16 characters.

func (*Node) GetPlusType

func (n *Node) GetPlusType() (uint8, error)

GetPlusType Get the node PlusType as reported in the Z-Wave+ Info report.

func (*Node) GetPlusTypeString

func (n *Node) GetPlusTypeString() (string, error)

GetPlusTypeString Get the node PlusType as reported in the Z-Wave+ Info report.

func (*Node) GetProductID

func (n *Node) GetProductID() (string, error)

GetProductID Get the product ID of a device The product ID is a four digit hex code and would normally be handled by the Manufacturer Specific commmand class, but not all devices support it. Although the value reported by this method will be an empty string if the command class is not supported and cannot be set by the user, the product ID is still stored with the node data (rather than being reported via a command class Value object) to retain a consistent approach with the other manufacturer specific data.

func (*Node) GetProductName

func (n *Node) GetProductName() (string, error)

GetProductName Get the product name of a device The product name would normally be handled by the Manufacturer Specific commmand class, taking the product Type and ID reported by the device and using it to look up the name from the manufacturer_specific.xml file in the OpenZWave config folder. However, there are some devices that do not support the command class, so to enable the user to manually set the name, it is stored with the node data and accessed via this method rather than being reported via a command class Value object.

func (*Node) GetProductType

func (n *Node) GetProductType() (string, error)

GetProductType Get the product type of a device The product type is a four digit hex code and would normally be handled by the Manufacturer Specific commmand class, but not all devices support it. Although the value reported by this method will be an empty string if the command class is not supported and cannot be set by the user, the product type is still stored with the node data (rather than being reported via a command class Value object) to retain a consistent approach with the other manufacturer specific data.

func (*Node) GetQueryStage

func (n *Node) GetQueryStage() (string, error)

GetQueryStage Get whether the node's query stage as a string.

func (*Node) GetRole

func (n *Node) GetRole() (uint8, error)

GetRole Get the node device type as reported in the Z-Wave+ Info report.

func (*Node) GetRoleString

func (n *Node) GetRoleString() (string, error)

GetRoleString Get the node role as reported in the Z-Wave+ Info report.

func (*Node) GetSecurity

func (n *Node) GetSecurity() (uint8, error)

GetSecurity Get the security byte of a node.

func (*Node) GetSpecificType

func (n *Node) GetSpecificType() (uint8, error)

GetSpecificType Get the specific type of a node.

func (*Node) GetType

func (n *Node) GetType() (string, error)

GetType Get a human-readable label describing the node The label is taken from the Z-Wave specific, generic or basic type, depending on which of those values are specified by the node.

func (*Node) GetVersion

func (n *Node) GetVersion() (uint8, error)

GetVersion Get the version number of a node.

func (*Node) IsAwake

func (n *Node) IsAwake() (bool, error)

IsAwake Get whether the node is awake or asleep.

func (*Node) IsBeamingDevice

func (n *Node) IsBeamingDevice() (bool, error)

IsBeamingDevice Get whether the node is a beam capable device.

func (*Node) IsFailed

func (n *Node) IsFailed() (bool, error)

IsFailed Get whether the node is working or has failed.

func (*Node) IsFrequentListeningDevice

func (n *Node) IsFrequentListeningDevice() (bool, error)

IsFrequentListeningDevice Get whether the node is a frequent listening device that goes to sleep but can be woken up by a beam. Useful to determine node and controller consistency.

func (*Node) IsInfoReceived

func (n *Node) IsInfoReceived() (bool, error)

IsInfoReceived Get whether the node information has been received.

func (*Node) IsListeningDevice

func (n *Node) IsListeningDevice() (bool, error)

IsListeningDevice Get whether the node is a listening device that does not go to sleep.

func (*Node) IsRoutingDevice

func (n *Node) IsRoutingDevice() (bool, error)

IsRoutingDevice Get whether the node is a routing device that passes messages to other nodes.

func (*Node) IsSecurityDevice

func (n *Node) IsSecurityDevice() (bool, error)

IsSecurityDevice Get the security attribute for a node. True if node supports security features.

func (*Node) IsZWavePlus

func (n *Node) IsZWavePlus() (bool, error)

IsZWavePlus Is this a ZWave+ Supported Node?

func (*Node) RefeshInfo

func (n *Node) RefeshInfo() (bool, error)

RefeshInfo Trigger the fetching of fixed data about a node. Causes the node's data to be obtained from the Z-Wave network in the same way as if it had just been added. This method would normally be called automatically by OpenZWave, but if you know that a node has been changed, calling this method will force a refresh of all of the data held by the library. This can be especially useful for devices that were asleep when the application was first run. This is the same as the query state starting from the beginning.

func (*Node) RequestDynamic

func (n *Node) RequestDynamic() (bool, error)

RequestDynamic Trigger the fetching of just the dynamic value data for a node. Causes the node's values to be requested from the Z-Wave network. This is the same as the query state starting from the dynamic state.

func (*Node) RequestState

func (n *Node) RequestState() (bool, error)

RequestState Trigger the fetching of dynamic value data for a node. Causes the node's values to be requested from the Z-Wave network. This is the same as the query state starting from the associations state.

func (*Node) SetLevel

func (n *Node) SetLevel(level uint8)

SetLevel Sets the basic level of a node This is a helper method to simplify basic control of a node. It is the equivalent of changing the value reported by the node's Basic command class and will generate a ValueChanged notification from that class.

func (*Node) SetLocation

func (n *Node) SetLocation(location string)

SetLocation Set the location of a node The node location is a user-editable string that would normally be handled by the Node Naming commmand class, but many devices do not support it. So that a node can always report its location, OpenZWave stores it with the node data, and provides access through this method and GetNodeLocation, rather than reporting it via a command class Value object. If the device does support the Node Naming command class, the new location will be sent to the node.

func (*Node) SetManufacturerName

func (n *Node) SetManufacturerName(name string)

SetManufacturerName Set the manufacturer name of a device The manufacturer name would normally be handled by the Manufacturer Specific commmand class, taking the manufacturer ID reported by the device and using it to look up the name from the manufacturer_specific.xml file in the OpenZWave config folder. However, there are some devices that do not support the command class, so to enable the user to manually set the name, it is stored with the node data and accessed via this method rather than being reported via a command class Value object.

func (*Node) SetName

func (n *Node) SetName(name string)

SetName Set the name of a node The node name is a user-editable label for the node that would normally be handled by the Node Naming commmand class, but many devices do not support it. So that a node can always be named, OpenZWave stores it with the node data, and provides access through this method and GetNodeName, rather than reporting it via a command class Value object. If the device does support the Node Naming command class, the new name will be sent to the node. The maximum length of a node name is 16 characters.

func (*Node) SetOff

func (n *Node) SetOff()

SetOff Turns a node off This is a helper method to simplify basic control of a node. It is the equivalent of changing the level reported by the node's Basic command class to zero, and will generate a ValueChanged notification from that class.

func (*Node) SetOn

func (n *Node) SetOn()

SetOn Turns a node on This is a helper method to simplify basic control of a node. It is the equivalent of changing the level reported by the node's Basic command class to 255, and will generate a ValueChanged notification from that class. This command will turn on the device at its last known level, if supported by the device, otherwise it will turn it on at 100%.

func (*Node) SetProductName

func (n *Node) SetProductName(name string)

SetProductName Set the product name of a device The product name would normally be handled by the Manufacturer Specific commmand class, taking the product Type and ID reported by the device and using it to look up the name from the manufacturer_specific.xml file in the OpenZWave config folder. However, there are some devices that do not support the command class, so to enable the user to manually set the name, it is stored with the node data and accessed via this method rather than being reported via a command class Value object.

func (*Node) String

func (n *Node) String() string

String will return a string containing some useful information about the Node.

type Notification

type Notification struct {
	Type         NotificationType
	HomeID       uint32
	NodeID       uint8
	ValueID      *ValueID
	GroupIDX     *uint8
	Event        *uint8
	ButtonID     *uint8
	SceneID      *uint8
	Notification *NotificationCode
}

Notification is a container for the C++ OpenZWave library Notification class.

func (*Notification) String

func (n *Notification) String() string

type NotificationCode

type NotificationCode int

NotificationCode defines a type for the notification code enum.

const (
	NotificationCodeMsgComplete NotificationCode = iota // C.notification_code_msgComplete
	NotificationCodeTimeout                             // C.notification_code_timeout
	NotificationCodeNoOperation                         // C.notification_code_noOperation
	NotificationCodeAwake                               // C.notification_code_awake
	NotificationCodeSleep                               // C.notification_code_sleep
	NotificationCodeDead                                // C.notification_code_dead
	NotificationCodeAlive                               // C.notification_code_alive
)

func (NotificationCode) String

func (nc NotificationCode) String() string

type NotificationHandler

type NotificationHandler func(notification *Notification)

NotificationHandler defines the format for a function that will handle new Notification's as they arrive.

type NotificationType

type NotificationType int

NotificationType defines a type for the notification type enum.

const (
	NotificationTypeValueAdded NotificationType = iota
	NotificationTypeValueRemoved
	NotificationTypeValueChanged
	NotificationTypeValueRefreshed
	NotificationTypeGroup
	NotificationTypeNodeNew
	NotificationTypeNodeAdded
	NotificationTypeNodeRemoved
	NotificationTypeNodeProtocolInfo
	NotificationTypeNodeNaming
	NotificationTypeNodeEvent
	NotificationTypePollingDisabled
	NotificationTypePollingEnabled
	NotificationTypeCreateButton
	NotificationTypeDeleteButton
	NotificationTypeButtonOn
	NotificationTypeButtonOff
	NotificationTypeDriverReady
	NotificationTypeDriverFailed
	NotificationTypeDriverReset
	NotificationTypeEssentialNodeQueriesComplete
	NotificationTypeNodeQueriesComplete
	NotificationTypeAwakeNodesQueried
	NotificationTypeAllNodesQueriedSomeDead
	NotificationTypeAllNodesQueried
	NotificationTypeNotification
	NotificationTypeDriverRemoved
	NotificationTypeControllerCommand
	NotificationTypeNodeReset
)

func (NotificationType) String

func (nt NotificationType) String() string

type Options

type Options struct {
	// contains filtered or unexported fields
}

Options is a container for the C++ OpenZWave library Options class.

func CreateOptions

func CreateOptions(configPath, userPath, commandLine string) *Options

CreateOptions creates an object to manage the program options.

func GetOptions

func GetOptions() *Options

GetOptions gets a pointer to the Options singleton object.

func (*Options) AddOptionBool

func (o *Options) AddOptionBool(name string, value bool) bool

AddOptionBool add a boolean option to the program. Adds an option to the program whose value can then be read from a file or command line. All calls to AddOptionInt must be made before Lock.

func (*Options) AddOptionInt

func (o *Options) AddOptionInt(name string, value int32) bool

AddOptionInt add an integer option to the program. Adds an option to the program whose value can then be read from a file or command line. All calls to AddOptionInt must be made before Lock.

func (*Options) AddOptionLogLevel

func (o *Options) AddOptionLogLevel(name string, value LogLevel) bool

AddOptionLogLevel add a log level option to the program. Adds an option to the program whose value can then be read from a file or command line. All calls to AddOptionLogLevel must be made before Lock.

func (*Options) AddOptionString

func (o *Options) AddOptionString(name string, value string, append bool) bool

AddOptionString add a string option to the program. Adds an option to the program whose value can then be read from a file or command line. All calls to AddOptionString must be made before Lock.

func (*Options) AreLocked

func (o *Options) AreLocked() bool

AreLocked test whether the options have been locked.

func (*Options) GetOptionAsBool

func (o *Options) GetOptionAsBool(name string) (bool, bool)

GetOptionAsBool get the value of a boolean option.

func (*Options) GetOptionAsInt

func (o *Options) GetOptionAsInt(name string) (bool, int32)

GetOptionAsInt get the value of an integer option.

func (*Options) GetOptionAsString

func (o *Options) GetOptionAsString(name string) (bool, string)

GetOptionAsString get the value of a string option.

func (*Options) Lock

func (o *Options) Lock() bool

Lock locks the options. Reads in option values from the XML options file and command line string and marks the options as locked. Once locked, no more calls to AddOption can be made. The options must be locked before the Manager::Create method is called.

type UStrHomeNodeFunc added in v0.2.0

type UStrHomeNodeFunc = func(uint32, uint8) (string, error)

type Uint8HomeNodeFunc added in v0.2.0

type Uint8HomeNodeFunc = func(uint32, uint8) (uint8, error)

type ValueID

type ValueID struct {
	HomeID         uint32
	NodeID         uint8
	Genre          ValueIDGenre
	CommandClassID uint8
	Instance       uint8
	Index          uint8
	Type           ValueIDType
	ID             uint64
}

ValueID contains all appropriate information available for a ValueID from the OpenZWave library. You should not create a new ValueID manually, but receive it from the goopenzwave package after a Notification has been received from the OpenZWave library.

func (*ValueID) DisablePoll

func (v *ValueID) DisablePoll() bool

DisablePoll disables the polling of a device's state. Returns true if polling was disabled.

func (*ValueID) EnablePoll

func (v *ValueID) EnablePoll(intensity uint8) bool

EnablePoll enables the polling of a device's state. Returns true if polling was enabled.

func (*ValueID) GetAsBool

func (v *ValueID) GetAsBool() (bool, error)

GetAsBool returns the value as a bool. It will also return an error if the value is not a bool type.

func (*ValueID) GetAsByte

func (v *ValueID) GetAsByte() (byte, error)

GetAsByte returns the value as an 8-bit unsigned integer. It will also return an error if the value is not of byte type.

func (*ValueID) GetAsFloat

func (v *ValueID) GetAsFloat() (float32, error)

GetAsFloat returns the value as a float. It will also return an error if the value is not a decimal type.

func (*ValueID) GetAsInt

func (v *ValueID) GetAsInt() (int32, error)

GetAsInt returns the value as a 32-bit signed integer. It will also return an error if the value is not of 32-bit signed integer type.

func (*ValueID) GetAsRaw

func (v *ValueID) GetAsRaw() ([]byte, error)

GetAsRaw returns the value as a raw byte slice. It will also return an error if the value is not of raw type.

func (*ValueID) GetAsShort

func (v *ValueID) GetAsShort() (int16, error)

GetAsShort returns the value as a 16-bit signed integer. It will also return an error if the value is not of 16-bit signed integer type.

func (*ValueID) GetAsString

func (v *ValueID) GetAsString() string

GetAsString returns the value as a string, regardless of its actual type.

func (*ValueID) GetChangeVerified

func (v *ValueID) GetChangeVerified() (bool, error)

GetChangeVerified returns true if value changes upon a refresh should be verified. If so, the library will immediately refresh the value a second time whenever a change is observed. This helps to filter out spurious data reported occasionally by some devices.

func (*ValueID) GetFloatPrecision

func (v *ValueID) GetFloatPrecision() (uint8, error)

GetFloatPrecision returns the float value's precision. It will also return an error if the value is not of decimal type.

func (*ValueID) GetHelp

func (v *ValueID) GetHelp() (string, error)

GetHelp returns a help string describing the value's purpose and usage.

func (*ValueID) GetLabel

func (v *ValueID) GetLabel() (string, error)

GetLabel returns the user-friendly label for the value.

func (*ValueID) GetListItems

func (v *ValueID) GetListItems() ([]string, error)

GetListItems returns the list of items from a list value. It will also return an error if the value is not of list type.

func (*ValueID) GetListSelectionAsInt32

func (v *ValueID) GetListSelectionAsInt32() (int32, error)

GetListSelectionAsInt32 returns selected item from a list as an integer. It will also return an error if the value is not of list type.

func (*ValueID) GetListSelectionAsString

func (v *ValueID) GetListSelectionAsString() (string, error)

GetListSelectionAsString returns selected item from a list as a string. It will also return an error if the value is not of list type.

func (*ValueID) GetMax

func (v *ValueID) GetMax() (int32, error)

GetMax returns the maximum that this value may contain.

func (*ValueID) GetMin

func (v *ValueID) GetMin() (int32, error)

GetMin returns the minimum that this value may contain.

func (*ValueID) GetPollIntensity

func (v *ValueID) GetPollIntensity() uint8

GetPollIntensity returns the polling intensity of a device's state.

func (*ValueID) GetUnits

func (v *ValueID) GetUnits() (string, error)

GetUnits returns the units that the value is measured in.

func (*ValueID) IDString

func (v *ValueID) IDString() string

IDString will create a string representation of the ID for use as a key.

func (*ValueID) IsPolled

func (v *ValueID) IsPolled() (bool, error)

IsPolled returns true if the value is currently being polled.

func (*ValueID) IsReadOnly

func (v *ValueID) IsReadOnly() (bool, error)

IsReadOnly returns true if the value is read-only.

func (*ValueID) IsSet

func (v *ValueID) IsSet() (bool, error)

IsSet returns true if the value has been set.

func (*ValueID) IsWriteOnly

func (v *ValueID) IsWriteOnly() (bool, error)

IsWriteOnly returns true if the value is write-only.

func (*ValueID) PressButton

func (v *ValueID) PressButton() error

PressButton starts an activity in a device. It will return an error if the value is not of button type.

Since buttons are write-only values that do not report a state, no notification callbacks are sent.

func (*ValueID) Refresh

func (v *ValueID) Refresh() (bool, error)

Refresh refreshes the specified value from the Z-Wave network. It will return true if the driver and node were found, otherwise false.

A call to this function causes the library to send a message to the network to retrieve the current value of the specified ValueID (just like a poll, except only one-time, not recurring).

func (*ValueID) ReleaseButton

func (v *ValueID) ReleaseButton() error

ReleaseButton stops an activity in a device. It will return an error if the value is not of button type.

Since buttons are write-only values that do not report a state, no notification callbacks are sent.

func (*ValueID) SetBool

func (v *ValueID) SetBool(value bool) error

SetBool sets the state of a bool. It will return an error if the value is not of bool type.

Due to the possibility of a device being asleep, the command is assumed to succeed, and the value held by the node is updated directly. This will be reverted by a future status message from the device if the Z-Wave message actually failed to get through. Notification callbacks will be sent in both cases.

func (*ValueID) SetBytes

func (v *ValueID) SetBytes(value []byte) error

SetBytes sets the value of a raw value. It will return an error if the value is not of raw type.

Due to the possibility of a device being asleep, the command is assumed to succeed, and the value held by the node is updated directly. This will be reverted by a future status message from the device if the Z-Wave message actually failed to get through. Notification callbacks will be sent in both cases.

func (*ValueID) SetChangeVerified

func (v *ValueID) SetChangeVerified(verify bool)

SetChangeVerified sets a flag indicating whether value changes noted upon a refresh should be verified. If so, the library will immediately refresh the value a second time whenever a change is observed. This helps to filter out spurious data reported occasionally by some devices.

func (*ValueID) SetFloat

func (v *ValueID) SetFloat(value float32) error

SetFloat sets the value of a decimal. It will return an error if the value is not of decimal type.

It is usually better to handle decimal values using strings rather than floats, to avoid floating point accuracy issues. Due to the possibility of a device being asleep, the command is assumed to succeed, and the value held by the node is updated directly. This will be reverted by a future status message from the device if the Z-Wave message actually failed to get through. Notification callbacks will be sent in both cases.

func (*ValueID) SetHelp

func (v *ValueID) SetHelp(help string)

SetHelp sets a help string describing the value's purpose and usage.

func (*ValueID) SetInt16

func (v *ValueID) SetInt16(value int16) error

SetInt16 sets the value of a 16-bit signed integer. It will return an error if the value is not of 16-bit signed integer type.

Due to the possibility of a device being asleep, the command is assumed to succeed, and the value held by the node is updated directly. This will be reverted by a future status message from the device if the Z-Wave message actually failed to get through. Notification callbacks will be sent in both cases.

func (*ValueID) SetInt32

func (v *ValueID) SetInt32(value int32) error

SetInt32 sets the value of a 32-bit signed integer. It will return an error if the value is not of 32-bit signed integer type.

Due to the possibility of a device being asleep, the command is assumed to succeed, and the value held by the node is updated directly. This will be reverted by a future status message from the device if the Z-Wave message actually failed to get through. Notification callbacks will be sent in both cases.

func (*ValueID) SetLabel

func (v *ValueID) SetLabel(label string) error

SetLabel sets the user-friendly label for the value.

func (*ValueID) SetListSelection

func (v *ValueID) SetListSelection(selectedItem string) error

SetListSelection sets the selected item in a list. It will return an error if the value is not of list type or if the selection is not in the list.

Due to the possibility of a device being asleep, the command is assumed to succeed, and the value held by the node is updated directly. This will be reverted by a future status message from the device if the Z-Wave message actually failed to get through. Notification callbacks will be sent in both cases.

func (*ValueID) SetPollIntensity

func (v *ValueID) SetPollIntensity(intensity uint8)

SetPollIntensity sets the frequency of polling.

  • 0 = none
  • 1 = every time through the list
  • 2 = every other time
  • etc.

func (*ValueID) SetString

func (v *ValueID) SetString(value string) error

SetString sets the value from a string, regardless of type. It will return an error if the value could not be parsed into the correct type for the value.

Due to the possibility of a device being asleep, the command is assumed to succeed, and the value held by the node is updated directly. This will be reverted by a future status message from the device if the Z-Wave message actually failed to get through. Notification callbacks will be sent in both cases.

func (*ValueID) SetUint8

func (v *ValueID) SetUint8(value uint8) error

SetUint8 sets the value of a byte. It will return an error if the value is not of byte type.

Due to the possibility of a device being asleep, the command is assumed to succeed, and the value held by the node is updated directly. This will be reverted by a future status message from the device if the Z-Wave message actually failed to get through. Notification callbacks will be sent in both cases.

func (*ValueID) SetUnits

func (v *ValueID) SetUnits(units string) error

SetUnits sets the units that the value is measured in.

func (*ValueID) String

func (v *ValueID) String() string

func (*ValueID) StringFull

func (v *ValueID) StringFull() string

type ValueIDGenre

type ValueIDGenre int

ValueIDGenre defines a type for the valueid genre enum.

const (
	ValueIDGenreBasic ValueIDGenre = iota
	ValueIDGenreUser
	ValueIDGenreConfig
	ValueIDGenreSystem
	ValueIDGenreCount
)

func (ValueIDGenre) String

func (v ValueIDGenre) String() string

type ValueIDType

type ValueIDType int

ValueIDType defines a type for the valueid type enum.

const (
	ValueIDTypeBool ValueIDType = iota
	ValueIDTypeByte
	ValueIDTypeDecimal
	ValueIDTypeInt
	ValueIDTypeList
	ValueIDTypeSchedule
	ValueIDTypeShort
	ValueIDTypeString
	ValueIDTypeButton
	ValueIDTypeRaw
	ValueIDTypeMax
)

func (ValueIDType) String

func (v ValueIDType) String() string

type Version

type Version struct {
	Major int
	Minor int
}

Version represents the OpenZWave library version as major and minor integers.

func GetVersion

func GetVersion() Version

GetVersion returns the Version Number as the Version Struct (Only Major/Minor returned).

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL