From 184bc4bec55987727d9fd85e3dd9104756f46085 Mon Sep 17 00:00:00 2001 From: Liu Xiaoyi Date: Fri, 6 Feb 2026 13:35:35 +0800 Subject: [PATCH] Improve temperature logging (#825) * Always log current temperature * Forcefully align each ata_sct_temperature_history data point to an integer multiple of the logging interval to prevent repeated data points Fixes #824 --- .../scrutiny_repository_temperature.go | 37 ++++++++++--------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/webapp/backend/pkg/database/scrutiny_repository_temperature.go b/webapp/backend/pkg/database/scrutiny_repository_temperature.go index 07caa0e..63a2d70 100644 --- a/webapp/backend/pkg/database/scrutiny_repository_temperature.go +++ b/webapp/backend/pkg/database/scrutiny_repository_temperature.go @@ -23,9 +23,11 @@ func (sr *scrutinyRepository) SaveSmartTemperature(ctx context.Context, wwn stri continue } - minutesOffset := collectorSmartData.AtaSctTemperatureHistory.LoggingIntervalMinutes * int64(ndx) * 60 + intervalSec := collectorSmartData.AtaSctTemperatureHistory.LoggingIntervalMinutes * 60 + datapointTime := collectorSmartData.LocalTime.TimeT - int64(ndx) * intervalSec + alignedDatapointTime := datapointTime - datapointTime % intervalSec smartTemp := measurements.SmartTemperature{ - Date: time.Unix(collectorSmartData.LocalTime.TimeT-minutesOffset, 0), + Date: time.Unix(alignedDatapointTime, 0), Temp: temp, } @@ -40,23 +42,22 @@ func (sr *scrutinyRepository) SaveSmartTemperature(ctx context.Context, wwn stri return err } } - // also add the current temperature. - } else { - - smartTemp := measurements.SmartTemperature{ - Date: time.Unix(collectorSmartData.LocalTime.TimeT, 0), - Temp: collectorSmartData.Temperature.Current, - } - - tags, fields := smartTemp.Flatten() - tags["device_wwn"] = wwn - p := influxdb2.NewPoint("temp", - tags, - fields, - smartTemp.Date) - return sr.influxWriteApi.WritePoint(ctx, p) } - return nil + + + // Even if ata_sct_temperature_history is present, also add current temperature. See #824 + smartTemp := measurements.SmartTemperature{ + Date: time.Unix(collectorSmartData.LocalTime.TimeT, 0), + Temp: collectorSmartData.Temperature.Current, + } + + tags, fields := smartTemp.Flatten() + tags["device_wwn"] = wwn + p := influxdb2.NewPoint("temp", + tags, + fields, + smartTemp.Date) + return sr.influxWriteApi.WritePoint(ctx, p) } func (sr *scrutinyRepository) GetSmartTemperatureHistory(ctx context.Context, durationKey string) (map[string][]measurements.SmartTemperature, error) {