Skip to content

jeffutter/particle-elixir

Repository files navigation

Particle

Build Status Hex.pm Inline docs Deps Status License

Particle Cloud API Client for Elixir:

This is an unofficial client for the Particle IoT platform's HTTP API.

Usage

Installation

def deps do
  [{:particle, "~> 0.1.0"}]
end

and run mix deps.get. Now, list the :particle application as your application dependency:

def application do
  [applications: [:particle]]
end

Configuration

You will need to set the following configuration variables in your config/config.exs file:

use Mix.Config

config :particle,
  particle_key: System.get_env("PARTICLE_KEY")

Stream Usage

Create a module responsible for the handling of the events. Customize handle_events for your application.

defmodule MyApp.ParticleEventHandler do
  alias Experimental.GenStage
  alias Particle.Stream

  use GenStage

  def start_link() do
    GenStage.start_link(__MODULE__, :ok, name: __MODULE__)
  end

  def init(:ok) do
    # Starts a permanent subscription to the broadcaster
    # which will automatically start requesting items.
    {:consumer, :ok, subscribe_to: [Stream]}
  end

  def handle_events(events, _from, state) do
    IO.inspect events
    {:noreply, [], state}
  end
end

Start the workers in the Application.

defmodule MyApp do
  use Application
  alias Particle.Stream

  def start(_type, _args) do
    import Supervisor.Spec

    children = [
      worker(Particle.Stream, ["https://api.particle.io/v1/devices/events/status", Particle.Http, [name: Stream]]), # define url here
      worker(MyApp.ParticleEventHandler, [])
    ]
    opts = [strategy: :one_for_one, name: MyApp.Supervisor]
    Supervisor.start_link(children, opts)
  end
end

About

An Elixir Client for the Particle Cloud API

Resources

License

Stars

Watchers

Forks

Packages

No packages published