Skip to content

Instantly share code, notes, and snippets.

@xenji
Created February 20, 2016 16:07
Show Gist options
  • Save xenji/baeb3a7806f5de61de78 to your computer and use it in GitHub Desktop.
Save xenji/baeb3a7806f5de61de78 to your computer and use it in GitHub Desktop.
defmodule Weather.Broker do
use GenServer
require Logger
def start_link(name) do
GenServer.start_link(__MODULE__, :ok, name: name)
end
def stop(server) do
GenServer.stop(server)
end
def init(_args) do
{:ok, client} = :emqttc.start_link(:weather, [:host, "iot.eclipse.org",
:keepalive, 30,
:port, 1883,
:client_id, "weather",
:reconnect, 3])
{:ok, [mqttc: client, seq: 1]}
end
# Receive Publish Message
def handle_info({:publish, topic, payload}, state) do
Logger.info "Received publish"
IO.inspect topic
IO.inspect payload
IO.inspect state
{:noreply, state};
end
# Client connected
def handle_info({:mqttc, client, :connected}, state = [mqttc: client, seq: seq]) do
Logger.info "Received connect"
IO.inspect state
{:noreply, [mqttc: client, seq: seq]};
end
# Client connected
def handle_info({:mqttc, client, :disconnected}, state = [mqttc: client, seq: seq]) do
Logger.info "Received disconnect"
IO.inspect client
IO.inspect seq
IO.inspect state
{:noreply, [mqttc: client, seq: seq]};
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment