44 lines
1.1 KiB
Elixir
44 lines
1.1 KiB
Elixir
defmodule Localiser.Web.Channels.SensorsChannel do
|
|
use Phoenix.Channel
|
|
|
|
@impl true
|
|
def join("sensors", _params, socket) do
|
|
Phoenix.PubSub.subscribe(Localiser.PubSub, "sensors")
|
|
{:ok, socket}
|
|
end
|
|
|
|
@impl true
|
|
def handle_info({:sensor_announced, sensor}, socket) do
|
|
push(socket, "sensor_announced", render_sensor(sensor))
|
|
{:noreply, socket}
|
|
end
|
|
|
|
def handle_info({:sensor_enrolled, sensor}, socket) do
|
|
push(socket, "sensor_enrolled", render_sensor(sensor))
|
|
{:noreply, socket}
|
|
end
|
|
|
|
def handle_info({:sensor_unenrolled, sensor_id}, socket) do
|
|
push(socket, "sensor_unenrolled", %{sensor_id: sensor_id})
|
|
{:noreply, socket}
|
|
end
|
|
|
|
def handle_info({:calibration_complete, sensor_id}, socket) do
|
|
push(socket, "calibration_complete", %{sensor_id: sensor_id})
|
|
{:noreply, socket}
|
|
end
|
|
|
|
def handle_info(_msg, socket), do: {:noreply, socket}
|
|
|
|
defp render_sensor(sensor) do
|
|
%{
|
|
id: sensor.id,
|
|
sensor_id: sensor.sensor_id,
|
|
room_id: sensor.room_id,
|
|
floor_x: sensor.floor_x,
|
|
floor_y: sensor.floor_y,
|
|
rssi_ref: sensor.rssi_ref
|
|
}
|
|
end
|
|
end
|