round sensor readings to 1 decimal place
division by sensor_divisor produced full float precision values like 34.09999999. apply Float.round/2 in both the phoenix poller and agent channel paths.
This commit is contained in:
parent
2875866c07
commit
6d597f7e76
3 changed files with 8 additions and 2 deletions
|
|
@ -1,6 +1,12 @@
|
|||
CHANGELOG - towerops-web
|
||||
========================
|
||||
|
||||
2026-02-11 - fix: round sensor values to 1 decimal place
|
||||
- Files: lib/towerops/workers/device_poller_worker.ex (poll_simple_sensor/2),
|
||||
lib/towerops_web/channels/agent_channel.ex (process_sensor_reading/3)
|
||||
- Bug: Division by sensor_divisor produced full float precision (e.g. 34.09999999)
|
||||
- Fix: Wrap division result with Float.round(..., 1) in both Phoenix and agent paths
|
||||
|
||||
2026-02-11 - fix: update device status from agent monitoring checks
|
||||
- File: lib/towerops_web/channels/agent_channel.ex (store_monitoring_check/2)
|
||||
- Bug: Devices polled by remote agents stayed in "unknown" state because
|
||||
|
|
|
|||
|
|
@ -792,7 +792,7 @@ defmodule Towerops.Workers.DevicePollerWorker do
|
|||
decoded_value = decode_snmp_value(raw_value)
|
||||
|
||||
if is_number(decoded_value) do
|
||||
value = decoded_value / sensor.sensor_divisor
|
||||
value = Float.round(decoded_value / sensor.sensor_divisor, 1)
|
||||
{:ok, value}
|
||||
else
|
||||
{:error, :non_numeric}
|
||||
|
|
|
|||
|
|
@ -1539,7 +1539,7 @@ defmodule ToweropsWeb.AgentChannel do
|
|||
|
||||
value ->
|
||||
with parsed_value when not is_nil(parsed_value) <- parse_float(value) do
|
||||
final_value = parsed_value / sensor.sensor_divisor
|
||||
final_value = Float.round(parsed_value / sensor.sensor_divisor, 1)
|
||||
|
||||
Snmp.create_sensor_reading(%{
|
||||
sensor_id: sensor.id,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue