From fdcd28f96a762c1aadc15803fbac3d99f828182c Mon Sep 17 00:00:00 2001 From: schizza Date: Fri, 4 Apr 2025 14:18:23 +0200 Subject: [PATCH] Fix BUG 68 Fixing Issue #68 --- custom_components/sws12500/sensors_wslink.py | 4 +- custom_components/sws12500/utils.py | 41 +++++++++++++++++++- 2 files changed, 42 insertions(+), 3 deletions(-) diff --git a/custom_components/sws12500/sensors_wslink.py b/custom_components/sws12500/sensors_wslink.py index d052c42..8afd15c 100644 --- a/custom_components/sws12500/sensors_wslink.py +++ b/custom_components/sws12500/sensors_wslink.py @@ -40,9 +40,9 @@ from .const import ( WIND_SPEED, UnitOfDir, MONTHLY_RAIN, - HOURLY_RAIN, YEARLY_RAIN, HOURLY_RAIN, + WEEKLY_RAIN, ) from .sensors_common import WeatherSensorEntityDescription from .utils import wind_dir_to_text @@ -145,7 +145,7 @@ SENSOR_TYPES_WSLINK: tuple[WeatherSensorEntityDescription, ...] = ( native_unit_of_measurement=UnitOfVolumetricFlux.MILLIMETERS_PER_HOUR, device_class=SensorDeviceClass.PRECIPITATION, state_class=SensorStateClass.TOTAL, - suggested_unit_of_measurement=UnitOfPrecipitationDepth.MILLIMETERS_PER_HOUR, + suggested_unit_of_measurement=UnitOfVolumetricFlux.MILLIMETERS_PER_HOUR, suggested_display_precision=2, icon="mdi:weather-pouring", translation_key=RAIN, diff --git a/custom_components/sws12500/utils.py b/custom_components/sws12500/utils.py index 3673417..30a667b 100644 --- a/custom_components/sws12500/utils.py +++ b/custom_components/sws12500/utils.py @@ -284,7 +284,46 @@ def long_term_units_in_statistics_meta(): return sensor_units -def migrate_data(sensor_id: str | None = None): +async def migrate_data(hass: HomeAssistant, sensor_id: str | None = None) -> bool: + """Migrate data from mm/d to mm.""" + + _LOGGER.debug("Sensor %s is required for data migration", sensor_id) + updated_rows = 0 + + if not Path(DATABASE_PATH).exists(): + _LOGGER.error("Database file not found: %s", DATABASE_PATH) + return False + + conn = sqlite3.connect(DATABASE_PATH) + db = conn.cursor() + + try: + _LOGGER.info(sensor_id) + db.execute( + """ + UPDATE statistics_meta + SET unit_of_measurement = 'mm' + WHERE statistic_id = ? + AND unit_of_measurement = 'mm/d'; + """, + (sensor_id,), + ) + updated_rows = db.rowcount + conn.commit() + _LOGGER.info( + "Data migration completed successfully. Updated rows: %s for %s", + updated_rows, + sensor_id, + ) + + except sqlite3.Error as e: + _LOGGER.error("Error during data migration: %s", e) + finally: + conn.close() + return updated_rows + + +def migrate_data_old(sensor_id: str | None = None): """Migrate data from mm/d to mm.""" updated_rows = 0