Packages
grizzly
3.0.0
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/virtual_devices.ex
defmodule Grizzly.VirtualDevices do
@moduledoc """
Virtual devices
Virtual devices are in-memory devices that act like a Z-Wave device
"""
alias Grizzly.VirtualDevices.{Device, DeviceServer, Network}
alias Grizzly.ZWave.Command
@typedoc """
Options for adding a virtual devices
* `:inclusion_handler` - if an inclusion handler is provider via the add
options it will override the initial inclusion handle argument to the
network server if one was provided only for that one call to `add_device/2`.
"""
@type add_opt() :: {:inclusion_handler, Grizzly.handler()}
@typedoc """
Options for removing virtual devices
* `:inclusion_handler` - if an inclusion handler is provider via the add
options it will override the initial inclusion handle argument to the
network server if one was provided only for that one call to
`remove_device/2`.
"""
@type remove_opt() :: {:inclusion_handler, Grizzly.handler()}
@typedoc """
Id for a virtual device
"""
@type id() :: {:virtual, integer()}
@doc """
Add a new virtual device to the virtual device network
To add a virtual device you must supply a module that implements the
`Grizzly.VirtualDevices.Device` behaviour.
"""
@spec add_device(Device.t(), [add_opt()]) :: {:ok, id()}
def add_device(device, opts \\ []) do
Network.add_device(device, opts)
end
@doc """
Send a Z-Wave command to a virtual device
"""
@spec send_command(id(), Command.t()) :: Grizzly.send_command_response()
def send_command(node_id, command) do
DeviceServer.send_command(node_id, command)
end
@doc """
Remove a virtual device from the virtual device network
"""
@spec remove_device(id(), [remove_opt()]) :: :ok
def remove_device(virtual_device_id, opts \\ []) do
Network.remove_device(virtual_device_id, opts)
end
@doc """
List all the virtual devices on the virtual device network
"""
@spec list_nodes() :: [id()]
def list_nodes() do
Network.list_nodes()
end
end