diff --git a/lib/localiser/domain/sensors.ex b/lib/localiser/domain/sensors.ex index 9cb18c6..de1d831 100644 --- a/lib/localiser/domain/sensors.ex +++ b/lib/localiser/domain/sensors.ex @@ -59,6 +59,11 @@ defmodule Localiser.Domain.Sensors do {:ok, sensor} end + def get_version(%Sensor{} = sensor) do + Localiser.MQTT.Connection.publish(cmd_topic(sensor), Jason.encode!(%{action: "version"})) + {:ok, sensor} + end + def send_ota_update(%Sensor{} = sensor, url, version) do payload = %{ action: "ota", diff --git a/lib/localiser/web/controllers/sensor_controller.ex b/lib/localiser/web/controllers/sensor_controller.ex index 2126730..cb3a24d 100644 --- a/lib/localiser/web/controllers/sensor_controller.ex +++ b/lib/localiser/web/controllers/sensor_controller.ex @@ -239,6 +239,12 @@ defmodule Localiser.Web.Controllers.SensorController do json(conn, %{status: "ok"}) end + def get_version(conn, %{"id" => id}) do + sensor = Sensors.get_sensor!(id) + {:ok, _} = Sensors.get_version(sensor) + json(conn, %{status: "ok"}) + end + def reconfigure(conn, %{"id" => id} = params) do sensor = Sensors.get_sensor!(id) config = Map.take(params, ["ssid", "password", "mqtt_broker", "mqtt_port"]) diff --git a/lib/localiser/web/router.ex b/lib/localiser/web/router.ex index 87c41a5..d156fee 100644 --- a/lib/localiser/web/router.ex +++ b/lib/localiser/web/router.ex @@ -103,5 +103,6 @@ defmodule Localiser.Web.Router do post "/sensors/:id/reconfigure", SensorController, :reconfigure post "/sensors/:id/calibration/start", SensorController, :calibration_start post "/sensors/:id/calibration/stop", SensorController, :calibration_stop + get "/sensors/:id/version", SensorController, :get_version end end