Added the endurance score as an optional entity

This commit is contained in:
Jean-François Paris
2025-05-14 23:51:57 +01:00
parent fdcdc01b7b
commit 94e1416e5d
3 changed files with 24 additions and 0 deletions

View File

@@ -114,6 +114,7 @@ class GarminConnectDataUpdateCoordinator(DataUpdateCoordinator):
sleep_time_seconds = None
hrv_data = {}
hrv_status = {"status": "unknown"}
endurance_data = {}
next_alarms = []
today = datetime.now(ZoneInfo(self.time_zone)).date()
@@ -181,6 +182,13 @@ class GarminConnectDataUpdateCoordinator(DataUpdateCoordinator):
self.api.get_hrv_data, today.isoformat()
)
_LOGGER.debug("HRV data fetched: %s", hrv_data)
# Endurance data
endurance_data = await self.hass.async_add_executor_job(
self.api.get_endurance_score, today.isoformat()
)
_LOGGER.debug("Endurance data fetched: %s", endurance_data)
except (
GarminConnectAuthenticationError,
GarminConnectTooManyRequestsError,
@@ -254,6 +262,7 @@ class GarminConnectDataUpdateCoordinator(DataUpdateCoordinator):
"sleepScore": sleep_score,
"sleepTimeSeconds": sleep_time_seconds,
"hrvStatus": hrv_status,
"enduranceScore": endurance_data,
}

View File

@@ -657,6 +657,14 @@ GARMIN_ENTITY_LIST = {
None,
True,
],
"enduranceScore": [
"Endurance Score",
None,
"mdi:run",
None,
SensorStateClass.MEASUREMENT,
False,
],
}
GEAR_ICONS = {

View File

@@ -204,6 +204,9 @@ class GarminConnectSensor(CoordinatorEntity, SensorEntity):
elif self._type == "hrvStatus":
value = self.coordinator.data[self._type]["status"].capitalize()
elif self._type == "enduranceScore":
value = self.coordinator.data[self._type]["overallScore"]
elif "Duration" in self._type or "Seconds" in self._type:
value = round(value // 60, 2)
@@ -261,6 +264,10 @@ class GarminConnectSensor(CoordinatorEntity, SensorEntity):
attributes = {**attributes, **self.coordinator.data[self._type]}
del attributes["status"]
if self._type == "enduranceScore":
attributes = {**attributes, **self.coordinator.data[self._type]}
del attributes["overallScore"]
return attributes
@property