feat: add factory_Reset, reconfigure_settings endpoints for sensors

This commit is contained in:
2026-05-15 15:23:58 +02:00
parent b434896e71
commit ed96e044cf
4 changed files with 77 additions and 2 deletions
+23 -2
View File
@@ -54,9 +54,28 @@ defmodule Localiser.Domain.Sensors do
|> Repo.update()
end
def factory_reset(%Sensor{} = sensor) do
Localiser.MQTT.Connection.publish(cmd_topic(sensor), Jason.encode!(%{action: "factory_reset"}))
{:ok, sensor}
end
# Pushes new WiFi and/or MQTT broker settings to the sensor. The sensor will
# apply the changes and restart. All keys are optional — omit any you don't
# want to change. Valid keys: "ssid", "password", "mqtt_host", "mqtt_port".
def reconfigure_settings(%Sensor{} = sensor, config) do
payload = Map.merge(
%{"action" => "reconfigure_settings"},
Map.new(config, fn
{"mqtt_broker", v} -> {"mqtt_host", v}
entry -> entry
end)
)
Localiser.MQTT.Connection.publish(cmd_topic(sensor), Jason.encode!(payload))
{:ok, sensor}
end
def delete_sensor(%Sensor{} = sensor) do
topic = "localiser/sensor/#{sensor.sensor_id}/cmd"
Localiser.MQTT.Connection.publish(topic, Jason.encode!(%{command: "factory_reset"}))
factory_reset(sensor)
Repo.delete(sensor)
end
@@ -164,6 +183,8 @@ defmodule Localiser.Domain.Sensors do
end
end
defp cmd_topic(sensor), do: "localiser/sensor/#{sensor.sensor_id}/cmd"
defp populate_floor_coords(%Sensor{room: nil} = sensor), do: sensor
defp populate_floor_coords(%Sensor{room: room} = sensor) do