feat: add factory_Reset, reconfigure_settings endpoints for sensors
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user