diff --git a/src/tadoasync/models.py b/src/tadoasync/models.py index e5a459e..81cd51e 100644 --- a/src/tadoasync/models.py +++ b/src/tadoasync/models.py @@ -514,8 +514,8 @@ class ZoneState(DataClassORJSONMixin): # pylint: disable=too-many-instance-attr metadata=field_options(alias="nextTimeBlock") ) - sensor_data_points: SensorDataPoints | dict[Any, Any] = field( - default_factory=dict, metadata=field_options(alias="sensorDataPoints") + sensor_data_points: SensorDataPoints | None = field( + metadata=field_options(alias="sensorDataPoints") ) overlay: Overlay | None = None geolocation_override_disable_time: str | None = field( @@ -569,6 +569,13 @@ class ZoneState(DataClassORJSONMixin): # pylint: disable=too-many-instance-attr open_window_attr: OpenWindow | None = None is_away: bool = False + @classmethod + def __pre_deserialize__(cls, d: dict[str, Any]) -> dict[str, Any]: + """Pre deserialize hook.""" + if not d["sensorDataPoints"]: + d["sensorDataPoints"] = None + return d + @dataclass class OpenWindow(DataClassORJSONMixin): diff --git a/src/tadoasync/tadoasync.py b/src/tadoasync/tadoasync.py index 713ac7b..8fcc9ef 100644 --- a/src/tadoasync/tadoasync.py +++ b/src/tadoasync/tadoasync.py @@ -48,7 +48,6 @@ GetMe, HomeState, MobileDevice, - SensorDataPoints, TemperatureOffset, Weather, Zone, @@ -446,11 +445,7 @@ async def _request( async def update_zone_data(self, data: ZoneState) -> None: # pylint: disable=too-many-branches """Update the zone data.""" - if (isinstance(data.sensor_data_points, SensorDataPoints)) and ( - hasattr(data, "sensor_data_points") - and data.sensor_data_points - and data.sensor_data_points != {} - ): + if data.sensor_data_points is not None: temperature = float(data.sensor_data_points.inside_temperature.celsius) data.current_temp = temperature data.current_temp_timestamp = ( diff --git a/tests/__snapshots__/test_tado.ambr b/tests/__snapshots__/test_tado.ambr index 84ca37c..5630f49 100644 --- a/tests/__snapshots__/test_tado.ambr +++ b/tests/__snapshots__/test_tado.ambr @@ -2710,8 +2710,7 @@ 'power': 'ON', 'precision': None, 'preparation': False, - 'sensor_data_points': dict({ - }), + 'sensor_data_points': None, 'setting': dict({ 'fan_level': None, 'fan_speed': None, @@ -2817,8 +2816,7 @@ 'power': 'ON', 'precision': None, 'preparation': False, - 'sensor_data_points': dict({ - }), + 'sensor_data_points': None, 'setting': dict({ 'fan_level': None, 'fan_speed': None, @@ -2919,8 +2917,7 @@ 'power': 'OFF', 'precision': None, 'preparation': False, - 'sensor_data_points': dict({ - }), + 'sensor_data_points': None, 'setting': dict({ 'fan_level': None, 'fan_speed': None,