Particle Cloud API Client for Elixir:
This is an unofficial client for the Particle IoT platform's HTTP API.
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
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")
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