noble

A Node.js BLE (Bluetooth Low Energy) port for Erlang and Elixir.


License
MIT

Documentation

Noble

A Node.js BLE (Bluetooth Low Energy) port for Erlang and Elixir.

Installation

If available in Hex, the package can be installed by adding noble to your list of dependencies in mix.exs:

def deps() do
  [
    {:noble, "~> 0.0.3"}
  ]
end

Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/noble.

Usage

iex> port = :noble.open()
#PID<0.208.0>
iex> flush()
{:noble_port_data, #PID<0.208.0>,
 %{"state" => "unknown", "type" => "stateChange"}}
{:noble_port_data, #PID<0.208.0>,
 %{"state" => "poweredOn", "type" => "stateChange"}}
iex> :noble.start_scanning(port, ["3c0224177edd82f015c558dba740760f"])
:ok
iex> flush()
{:noble_port_data, #PID<0.208.0>, %{"type" => "scanStart"}}
{:noble_port_data, #PID<0.208.0>,
 %{
   "address" => "04-6a-fd-20-d9-ee",
   "addressType" => "public",
   "advertisement" => %{
     "localName" => "MY_BLE_DEVICE",
     "manufacturerData" => nil,
     "serviceData" => nil,
     "serviceUuids" => ["3c0224177edd82f015c558dba740760f"],
     "txPowerLevel" => nil
   },
   "connectable" => true,
   "peripheralUuid" => "75f2b516030ffbfd694125abf5f73337",
   "rssi" => -78,
   "type" => "discover"
 }}
iex> :noble.stop_scanning(port)
:ok
iex> flush()
{:noble_port_data, #PID<0.208.0>, %{"type" => "scanStop"}}
iex> :noble.connect(port, "75f2b516030ffbfd694125abf5f73337")
:ok
iex> flush()
{:noble_port_data, #PID<0.208.0>,
 %{"peripheralUuid" => "75f2b516030ffbfd694125abf5f73337", "type" => "connect"}}
iex> :noble.disconnect(port, "75f2b516030ffbfd694125abf5f73337")
:ok
iex> flush()
{:noble_port_data, #PID<0.208.0>,
 %{"peripheralUuid" => "75f2b516030ffbfd694125abf5f73337", "type" => "disconnect"}}
iex> :noble.stop(port)
:ok
iex> flush()
{:noble_port_data, #PID<0.208.0>, %{"type" => "stop"}}
{:noble_port_closed, #PID<0.208.0>}