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