From a23296ea348e1b21f5933862af32dc187dc98053 Mon Sep 17 00:00:00 2001 From: Graham McIntire Date: Sun, 25 Jan 2026 12:38:23 -0600 Subject: [PATCH] fix: add missing sensor units to existing sensors MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- ...0260125183652_add_missing_sensor_units.exs | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 priv/repo/migrations/20260125183652_add_missing_sensor_units.exs diff --git a/priv/repo/migrations/20260125183652_add_missing_sensor_units.exs b/priv/repo/migrations/20260125183652_add_missing_sensor_units.exs new file mode 100644 index 00000000..1533a905 --- /dev/null +++ b/priv/repo/migrations/20260125183652_add_missing_sensor_units.exs @@ -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