Packages
grizzly
0.15.4
9.1.4
9.1.2
9.1.1
9.1.0
9.0.0
8.15.3
8.15.2
8.15.1
8.15.0
8.14.0
8.13.0
8.12.0
8.11.3
8.11.2
8.11.1
8.11.0
8.10.0
8.9.0
8.8.1
8.8.0
8.7.1
8.7.0
8.6.12
8.6.11
8.6.10
8.6.9
8.6.8
8.6.7
retired
8.6.6
8.6.5
8.6.4
8.6.3
8.6.2
8.6.1
8.6.0
8.5.3
8.5.2
8.5.1
8.5.0
8.4.0
8.3.0
8.2.3
8.2.2
8.2.1
8.2.0
8.1.0
8.0.1
8.0.0
7.4.3
7.4.2
7.4.1
7.4.0
7.3.0
7.2.0
7.1.4
7.1.3
7.1.2
7.1.1
7.1.0
7.0.4
7.0.3
7.0.2
7.0.1
7.0.0
6.8.8
6.8.7
6.8.6
6.8.5
6.8.4
6.8.3
6.8.2
6.8.1
6.8.0
6.7.1
6.7.0
6.6.1
6.6.0
6.5.1
6.5.0
6.4.0
6.3.0
6.2.0
6.1.1
6.1.0
6.0.1
6.0.0
5.4.1
5.4.0
5.3.0
5.2.8
5.2.7
5.2.6
5.2.5
5.2.4
5.2.3
5.2.2
5.2.1
5.2.0
5.1.2
5.1.1
5.1.0
5.0.2
5.0.1
5.0.0
4.0.1
4.0.0
3.0.0
2.1.0
2.0.0
1.0.1
1.0.0
0.22.7
0.22.6
0.22.5
0.22.4
0.22.3
0.22.2
0.22.1
0.22.0
0.21.1
0.21.0
0.20.2
0.20.1
0.20.0
0.19.1
0.19.0
0.18.3
0.18.2
0.18.1
0.18.0
0.17.7
0.17.6
0.17.5
0.17.4
0.17.3
0.17.2
0.17.1
0.17.0
0.16.2
0.16.1
0.16.0
0.15.11
0.15.10
0.15.9
0.15.8
0.15.7
0.15.6
0.15.5
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.8
0.14.7
0.14.6
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.13.0
0.12.3
0.12.2
0.12.1
0.12.0
0.11.0
0.10.3
0.10.2
0.10.1
0.10.0
0.9.0
0.9.0-rc.4
0.9.0-rc.3
0.9.0-rc.2
0.9.0-rc.1
0.9.0-rc.0
0.8.8
0.8.7
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.0
0.6.6
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.0
0.4.3
0.4.2
Elixir Z-Wave library
Current section
Files
Jump to
Current section
Files
lib/grizzly/node.ex
defmodule Grizzly.Node do
@moduledoc """
Functions for working directly with a Z-Wave node
"""
alias Grizzly.SeqNumber
alias Grizzly.ZWave
@type id :: non_neg_integer()
@type lifeline_opts :: {:controller_id, ZWave.node_id()} | {:extra_node_ids, [ZWave.node_id()]}
@doc """
Get the information for a node by its id
The response to this command is the `NodeInfoCacheReport` command
"""
@spec get_info(ZWave.node_id()) :: Grizzly.send_command_response()
def get_info(node_id) do
seq_number = SeqNumber.get_and_inc()
Grizzly.send_command(1, :node_info_cached_get,
seq_number: seq_number,
node_id: node_id
)
end
@doc """
Get a node's dsk.
The response to this command is the `DSKReport` command
"""
@spec get_dsk(ZWave.node_id(), :add | :learn, [Grizzly.command_opt()]) ::
Grizzly.send_command_response()
def get_dsk(node_id, add_mode, opts \\ []) do
Grizzly.send_command(
node_id,
:dsk_get,
[add_mode: add_mode, seq_number: SeqNumber.get_and_inc()],
opts
)
end
@doc """
Set lifeline association for the node
The lifeline associated is used to report events that happen at the Z-Wave
device level back to the Z-Wave controller. For example, if you turn on a
light and want to be notified, the device will need to have it's lifeline
association set.
Opts:
* `:controller_id` - the idea of the main controller to send lifeline
reports to (defaults to `1`)
* `:extra_node_ids` - any extra nodes to set add to the association
group
"""
@spec set_lifeline_association(ZWave.node_id(), [lifeline_opts()]) ::
Grizzly.send_command_response()
def set_lifeline_association(node_id, opts \\ []) do
controller_id = Keyword.get(opts, :controller_id, 1)
extra_node_ids = Keyword.get(opts, :extra_node_ids, [])
nodes = [controller_id | extra_node_ids]
Grizzly.send_command(node_id, :association_set, grouping_identifier: 0x01, nodes: nodes)
end
end