Files
service/lib/neon_vertigo_service/mqtt/server.ex
T

36 lines
949 B
Elixir

defmodule NeonVertigoService.Mqtt.Service do
use GenServer
def start_link(_) do
GenServer.start_link(__MODULE__, [], name: __MODULE__)
end
def init(_) do
{:ok, {}, {:continue, :init_mqtt}}
end
# Callbacks
def handle_continue(:init_mqtt, {}) do
mqtt_config = Application.fetch_env!(:neon_vertigo_service, :mqtt_params)
{:ok, mqtt_pid} = Supervisor.start_child(
NeonVertigoService.Mqtt.Supervisor,
%{
id: :neon_vertigo_emqtt,
start: {:emqtt, :start_link, [[owner: self(), name: :neon_vertigo_service_emqtt] ++ mqtt_config]}
}
)
{:ok, _mqtt_props} = :emqtt.connect(mqtt_pid)
:emqtt.subscribe(mqtt_pid, %{}, [{"$share/neon-vertigo-service/test/+", [{:qos, 1}]}])
{:noreply, {mqtt_pid}}
end
# Handling MQTT messages
def handle_info({:publish, msg}, state) do
IO.puts("Received message")
IO.inspect(msg)
{:noreply, state}
end
end