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