fix: use last_value field so sensor values are saved to database

- Change sensor_value to last_value to match Sensor schema
- Make wireless sensor_index unique using OID suffix
- Values now persist and can be graphed
This commit is contained in:
Graham McIntire 2026-01-21 17:29:23 -06:00
parent 985e3533df
commit 28a9517a1f
No known key found for this signature in database

View file

@ -216,7 +216,7 @@ defmodule Towerops.Snmp.Profiles.Dynamic do
sensor_descr: sensor_oid[:sensor_descr] || sensor_oid[:sensor_type],
sensor_unit: sensor_oid[:sensor_unit] || "",
sensor_divisor: sensor_oid[:sensor_divisor] || 1,
sensor_value: value
last_value: value / 1
}
else
{:error, :translation_failed} ->
@ -368,7 +368,7 @@ defmodule Towerops.Snmp.Profiles.Dynamic do
oid: sensor.sensor_oid,
descr: sensor.sensor_descr,
type: sensor.sensor_type,
value: sensor.sensor_value,
value: sensor.last_value,
unit: sensor.sensor_unit || ""
}
@ -656,14 +656,18 @@ defmodule Towerops.Snmp.Profiles.Dynamic do
defp fetch_wireless_sensor_value(sensor_def, client_opts) do
case Client.get(client_opts, sensor_def.oid) do
{:ok, value} when is_integer(value) ->
# Use OID suffix to make sensor_index unique (avoids collisions like two "frequency" sensors)
oid_suffix = sensor_def.oid |> String.split(".") |> Enum.take(-2) |> Enum.join("_")
%{
sensor_type: sensor_def.sensor_type,
sensor_index: "wireless_#{sensor_def.sensor_type}",
sensor_index:
"wireless_#{sensor_def.sensor_descr |> String.downcase() |> String.replace(" ", "_")}_#{oid_suffix}",
sensor_oid: sensor_def.oid,
sensor_descr: sensor_def.sensor_descr,
sensor_unit: sensor_def.sensor_unit,
sensor_divisor: sensor_def.sensor_divisor,
sensor_value: value
last_value: value / 1
}
_ ->