feat: expose CRUD, onboarding, pubsub via web

This commit is contained in:
2026-04-22 16:32:41 +02:00
parent 9807331da4
commit 9389c32244
33 changed files with 1536 additions and 7 deletions
@@ -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