diff --git a/custom_components/garmin_connect/__init__.py b/custom_components/garmin_connect/__init__.py index 8dab2cd..b89c2c8 100644 --- a/custom_components/garmin_connect/__init__.py +++ b/custom_components/garmin_connect/__init__.py @@ -101,41 +101,46 @@ class GarminConnectDataUpdateCoordinator(DataUpdateCoordinator): async def _async_update_data(self) -> dict: """Fetch data from Garmin Connect.""" + + summary = {} + body = {} + activites = {} + alarms = {} + gear = {} + gear_stats = {} + gear_defaults = {} + activity_types = {} + sleep_data = {} + sleep_score = None + try: summary = await self.hass.async_add_executor_job( self._api.get_user_summary, date.today().isoformat() ) - _LOGGER.debug(summary) + _LOGGER.debug(f"Summary data: {summary}") + body = await self.hass.async_add_executor_job( self._api.get_body_composition, date.today().isoformat() ) + _LOGGER.debug(f"Body data: {body}") + activities = await self.hass.async_add_executor_job( self._api.get_activities_by_date, (date.today()-timedelta(days=7)).isoformat(), (date.today()+timedelta(days=1)).isoformat() ) + _LOGGER.debug(f"Activities data: {activities}") + summary['lastActivities'] = activities - - _LOGGER.debug(body) alarms = await self.hass.async_add_executor_job(self._api.get_device_alarms) - _LOGGER.debug(alarms) - gear = await self.hass.async_add_executor_job( - self._api.get_gear, summary[GEAR.USERPROFILE_ID] - ) - tasks: list[Awaitable] = [ - self.hass.async_add_executor_job( - self._api.get_gear_stats, gear_item[GEAR.UUID] - ) - for gear_item in gear - ] - gear_stats = await asyncio.gather(*tasks) + _LOGGER.debug(f"Alarms data: {alarms}") + activity_types = await self.hass.async_add_executor_job( self._api.get_activity_types ) - gear_defaults = await self.hass.async_add_executor_job( - self._api.get_gear_defaults, summary[GEAR.USERPROFILE_ID] - ) + _LOGGER.debug(f"Activity types data: {activity_types}") + sleep_data = await self.hass.async_add_executor_job( self._api.get_sleep_data, date.today().isoformat()) - + _LOGGER.debug(f"Sleep data: {sleep_data}") except ( GarminConnectAuthenticationError, GarminConnectTooManyRequestsError, @@ -146,12 +151,33 @@ class GarminConnectDataUpdateCoordinator(DataUpdateCoordinator): raise UpdateFailed(error) from error return {} - sleep_score = None + try: + gear = await self.hass.async_add_executor_job( + self._api.get_gear, summary[GEAR.USERPROFILE_ID] + ) + _LOGGER.debug(f"Gear data: {gear}") + + tasks: list[Awaitable] = [ + self.hass.async_add_executor_job( + self._api.get_gear_stats, gear_item[GEAR.UUID] + ) + for gear_item in gear + ] + gear_stats = await asyncio.gather(*tasks) + _LOGGER.debug(f"Gear stats data: {gear_stats}") + + gear_defaults = await self.hass.async_add_executor_job( + self._api.get_gear_defaults, summary[GEAR.USERPROFILE_ID] + ) + _LOGGER.debug(f"Gear defaults data: {gear_defaults}") + except: + _LOGGER.debug("Gear data is not available") + try: sleep_score = sleep_data["dailySleepDTO"]["sleepScores"]["overall"]["value"] + _LOGGER.debug(f"Sleep score data: {sleep_score}") except KeyError: - _LOGGER.debug("sleepScore was absent") - summary['lastActivities'] = activities + _LOGGER.debug("Sleep score data is not available") return { **summary,