fix: add missing sensor units to existing sensors
Sets sensor_unit for all sensors that are missing it, fixing sensors
created before the discovery code was updated to set units properly.
Updates:
- Temperature sensors: set to '°C'
- Voltage sensors: set to 'V'
- Current sensors: set to 'mA'
- Power sensors: set to 'W'
- dBm sensors: set to 'dBm'
This ensures the device detail page displays units correctly for all
sensor types (e.g., "27 °C" instead of "27" for temperature).
The discovery code already sets these units for new sensors, so this
migration only affects existing data.
Related to:
- lib/towerops/snmp/profiles/vendors/routeros.ex:690 (°C)
- lib/towerops/snmp/profiles/vendors/routeros.ex:709 (V)
- lib/towerops/snmp/profiles/base.ex:1473-1480 (sensor_type_to_unit)
🤖 Generated with Claude Code
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
9c2efec473
commit
a23296ea34
1 changed files with 62 additions and 0 deletions
|
|
@ -0,0 +1,62 @@
|
|||
defmodule Towerops.Repo.Migrations.AddMissingSensorUnits do
|
||||
use Ecto.Migration
|
||||
|
||||
def up do
|
||||
# Set sensor_unit for all sensors that are missing it
|
||||
# This fixes sensors created before sensor_unit was properly set in discovery code
|
||||
|
||||
# Temperature sensors
|
||||
execute """
|
||||
UPDATE snmp_sensors
|
||||
SET sensor_unit = '°C'
|
||||
WHERE sensor_type = 'temperature'
|
||||
AND (sensor_unit IS NULL OR sensor_unit = '')
|
||||
"""
|
||||
|
||||
# Voltage sensors (only those without unit set)
|
||||
execute """
|
||||
UPDATE snmp_sensors
|
||||
SET sensor_unit = 'V'
|
||||
WHERE sensor_type = 'voltage'
|
||||
AND (sensor_unit IS NULL OR sensor_unit = '')
|
||||
"""
|
||||
|
||||
# Current sensors
|
||||
execute """
|
||||
UPDATE snmp_sensors
|
||||
SET sensor_unit = 'mA'
|
||||
WHERE sensor_type = 'current'
|
||||
AND (sensor_unit IS NULL OR sensor_unit = '')
|
||||
"""
|
||||
|
||||
# Power sensors
|
||||
execute """
|
||||
UPDATE snmp_sensors
|
||||
SET sensor_unit = 'W'
|
||||
WHERE sensor_type = 'power'
|
||||
AND (sensor_unit IS NULL OR sensor_unit = '')
|
||||
"""
|
||||
|
||||
# dBm sensors (optical power)
|
||||
execute """
|
||||
UPDATE snmp_sensors
|
||||
SET sensor_unit = 'dBm'
|
||||
WHERE sensor_type = 'dbm'
|
||||
AND (sensor_unit IS NULL OR sensor_unit = '')
|
||||
"""
|
||||
|
||||
# State sensors (leave empty, they don't have units)
|
||||
# Fan speed sensors should already have RPM
|
||||
# Frequency, rate, etc. should already have their units
|
||||
end
|
||||
|
||||
def down do
|
||||
# Revert by setting units back to empty string
|
||||
execute """
|
||||
UPDATE snmp_sensors
|
||||
SET sensor_unit = ''
|
||||
WHERE sensor_type IN ('temperature', 'voltage', 'current', 'power', 'dbm')
|
||||
AND sensor_unit IN ('°C', 'V', 'mA', 'W', 'dBm')
|
||||
"""
|
||||
end
|
||||
end
|
||||
Loading…
Add table
Reference in a new issue