diff --git a/lib/towerops/snmp/profiles/dynamic.ex b/lib/towerops/snmp/profiles/dynamic.ex index 9fea6ede..02c77611 100644 --- a/lib/towerops/snmp/profiles/dynamic.ex +++ b/lib/towerops/snmp/profiles/dynamic.ex @@ -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 } _ ->