Current section
Files
Jump to
Current section
Files
lib/zwave.ex
defmodule ZWave do
@moduledoc """
ZWave module.
"""
require Logger
use Supervisor
def start_link(_) do
Supervisor.start_link(__MODULE__, {}, name: __MODULE__)
end
def start_child(defn) do
Supervisor.start_child(__MODULE__, defn)
end
def init(_) do
supervise([], strategy: :one_for_one)
end
@doc """
Start a network
Returns `:ok`.
## Examples
iex> ZWave.start("/dev/tty.usbmodem14101", "net1")
:ok
"""
def start(device, network), do: ZWave.ZStick.start(device, network |> String.to_atom())
@doc """
Send a command to a node
Returns `:ok`.
## Examples
iex> ZWave.send_command("stick1", "node_3", {:basic_set, 100})
:ok
"""
def send_command(net, node, cmd), do: GenServer.call(get_node_pid(net, node), {:command, cmd})
@doc """
Get node informations
Returns `:ok`.
## Examples
iex> ZWave.get_node_info("stick1", "node_3")
:ok
"""
def get_node_info(net, node), do: GenServer.call(get_node_pid(net, node), :get_info)
defp get_node_pid(net, node), do: Process.whereis("#{net}_#{node}" |> String.to_atom())
end