feat: include self-reported tx_power in measurement calls

This commit is contained in:
2026-05-16 14:42:37 +02:00
parent f5e148bb88
commit 0f0f377e98
3 changed files with 32 additions and 20 deletions
+21 -12
View File
@@ -51,20 +51,29 @@ defmodule Localiser.MQTT.Router do
end
defp handle_rssi(sensor_id, payload) do
with {:ok, %{"tag_id" => tag_id, "rssi" => rssi}} <-
Jason.decode(payload) do
case Jason.decode(payload) do
{:ok, %{"id" => tag_id, "rssi" => rssi} = decoded} ->
reading = %{
sensor_id: sensor_id,
tag_id: tag_id,
rssi: rssi,
tx_power: Map.get(decoded, "tx_power"),
timestamp: DateTime.utc_now()
}
Localiser.MQTT.Telemetry.count_reading()
Localiser.RSSI.Buffer.push(reading)
reading = %{
sensor_id: sensor_id,
tag_id: tag_id,
rssi: rssi,
timestamp: DateTime.utc_now()
}
{:ok, %{"tag_id" => tag_id, "rssi" => rssi}} ->
reading = %{
sensor_id: sensor_id,
tag_id: tag_id,
rssi: rssi,
tx_power: nil,
timestamp: DateTime.utc_now()
}
Localiser.MQTT.Telemetry.count_reading()
Localiser.RSSI.Buffer.push(reading)
Localiser.MQTT.Telemetry.count_reading()
Localiser.RSSI.Buffer.push(reading)
else
{:error, reason} ->
Logger.error("[MQTT.Router] Bad payload from #{sensor_id}: #{inspect(reason)}")
Localiser.MQTT.Telemetry.count_error()