feat: expose CRUD, onboarding, pubsub via web
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
defmodule Localiser.Web.Channels.ParticlesChannel do
|
||||
use Phoenix.Channel
|
||||
|
||||
@impl true
|
||||
def join("particles:" <> tag_id, _params, socket) do
|
||||
Phoenix.PubSub.subscribe(Localiser.PubSub, "particles:#{tag_id}")
|
||||
{:ok, assign(socket, :tag_id, tag_id)}
|
||||
end
|
||||
|
||||
@impl true
|
||||
def handle_info({:particles_updated, payload}, socket) do
|
||||
push(socket, "particles_updated", %{
|
||||
tag_id: payload.tag_id,
|
||||
estimate: payload.estimate,
|
||||
particles: payload.particles
|
||||
})
|
||||
{:noreply, socket}
|
||||
end
|
||||
|
||||
def handle_info(_msg, socket), do: {:noreply, socket}
|
||||
end
|
||||
@@ -0,0 +1,20 @@
|
||||
defmodule Localiser.Web.Channels.RoomChannel do
|
||||
use Phoenix.Channel
|
||||
|
||||
@impl true
|
||||
def join("rooms:occupancy", _params, socket) do
|
||||
Phoenix.PubSub.subscribe(Localiser.PubSub, "rooms:occupancy")
|
||||
{:ok, socket}
|
||||
end
|
||||
|
||||
@impl true
|
||||
def handle_info({:room_occupancy_changed, room_id, occupants}, socket) do
|
||||
push(socket, "occupancy_changed", %{
|
||||
room_id: room_id,
|
||||
occupants: MapSet.to_list(occupants)
|
||||
})
|
||||
{:noreply, socket}
|
||||
end
|
||||
|
||||
def handle_info(_msg, socket), do: {:noreply, socket}
|
||||
end
|
||||
@@ -0,0 +1,43 @@
|
||||
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
|
||||
Reference in New Issue
Block a user