From d7838136e6257d6bfed7f320f341a099222bd3d4 Mon Sep 17 00:00:00 2001 From: drakhart <14996002+Drakhart@users.noreply.github.com> Date: Sat, 15 Apr 2023 02:03:32 +0200 Subject: [PATCH] fix: vmoto last warning time --- custom_components/super_soco_custom/coordinator.py | 12 ++++++++---- custom_components/super_soco_custom/helpers.py | 7 +++++-- tests/test_helpers.py | 5 ++++- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/custom_components/super_soco_custom/coordinator.py b/custom_components/super_soco_custom/coordinator.py index 361953c..8a962d0 100644 --- a/custom_components/super_soco_custom/coordinator.py +++ b/custom_components/super_soco_custom/coordinator.py @@ -212,7 +212,8 @@ async def _async_update_data(self): { DATA_ECU_BATTERY: device_data[DATA_ECU_BATTERY], DATA_LAST_GPS_TIME: parse_timestamp( - device_data[DATA_LAST_GPS_TIME] + device_data[DATA_LAST_GPS_TIME], + False, ), DATA_MODEL_NAME: self._user_data[DATA_USER_BIND_DEVICE][ DATA_MODEL_NAME @@ -451,10 +452,12 @@ async def _get_last_trip_data(self) -> dict: 1, ), DATA_LAST_TRIP_BEGIN_TIME: parse_timestamp( - trip[DATA_LAST_TRIP_BEGIN_TIME] + trip[DATA_LAST_TRIP_BEGIN_TIME], + True, ), DATA_LAST_TRIP_END_TIME: parse_timestamp( - trip[DATA_LAST_TRIP_END_TIME] + trip[DATA_LAST_TRIP_END_TIME], + True, ), DATA_LAST_TRIP_RIDE_DISTANCE: round( trip[DATA_LAST_TRIP_MILEAGE], DISTANCE_ROUNDING_DECIMALS @@ -544,7 +547,8 @@ async def _get_last_warning_data(self) -> dict: data = { DATA_LAST_WARNING_TIME: parse_timestamp( - warning[DATA_CREATE_TIME] + warning[DATA_CREATE_TIME], + True, ), } else: diff --git a/custom_components/super_soco_custom/helpers.py b/custom_components/super_soco_custom/helpers.py index 9a2b4ae..4c84798 100644 --- a/custom_components/super_soco_custom/helpers.py +++ b/custom_components/super_soco_custom/helpers.py @@ -77,7 +77,10 @@ def parse_date(date_string: str) -> datetime: return datetime.strptime(clean_string, "%d/%m/%Y %H:%M%z") -def parse_timestamp(timestampMilliseconds: int) -> datetime: +def parse_timestamp(timestampMilliseconds: int, fix_timezone: bool = False) -> datetime: timestamp = timestampMilliseconds / MILLISECONDS_IN_A_SECOND - timestamp += UTC_TO_SHANGHAI_HOURS_DIFFERENCE * SECONDS_IN_AN_HOUR + + if fix_timezone: + timestamp += UTC_TO_SHANGHAI_HOURS_DIFFERENCE * SECONDS_IN_AN_HOUR + return datetime.fromtimestamp(timestamp, tz=pytz.UTC) diff --git a/tests/test_helpers.py b/tests/test_helpers.py index 0299bc2..83edfea 100644 --- a/tests/test_helpers.py +++ b/tests/test_helpers.py @@ -17,6 +17,9 @@ def test_calculate_course(): def test_parse_timestamp(): """Test parse_timestamp.""" - assert parse_timestamp(1681423654000) == datetime.datetime( + assert parse_timestamp(1681423654000, True) == datetime.datetime( 2023, 4, 14, 6, 7, 34, tzinfo=pytz.UTC ) + assert parse_timestamp(1681423654000) == datetime.datetime( + 2023, 4, 13, 22, 7, 34, tzinfo=pytz.UTC + )