Merge pull request #80 from gorzelak/main

Adding last activities sensor
This commit is contained in:
Ron
2023-05-22 10:11:49 +02:00
committed by GitHub
3 changed files with 18 additions and 0 deletions

View File

@@ -1,5 +1,6 @@
"""The Garmin Connect integration."""
from datetime import date
from datetime import timedelta
import logging
from garminconnect import (
@@ -102,6 +103,11 @@ class GarminConnectDataUpdateCoordinator(DataUpdateCoordinator):
body = await self.hass.async_add_executor_job(
self._api.get_body_composition, date.today().isoformat()
)
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(body)
alarms = await self.hass.async_add_executor_job(self._api.get_device_alarms)
_LOGGER.debug(alarms)
@@ -115,6 +121,8 @@ class GarminConnectDataUpdateCoordinator(DataUpdateCoordinator):
raise UpdateFailed(error) from error
return {}
summary['lastActivities'] = activities
return {
**summary,
**body["totalAverage"],

View File

@@ -399,4 +399,6 @@ GARMIN_ENTITY_LIST = {
"visceralFat": ["Visceral Fat", PERCENTAGE, "mdi:food", None, SensorStateClass.TOTAL, False],
"metabolicAge": ["Metabolic Age", TIME_YEARS, "mdi:calendar-heart", None, SensorStateClass.TOTAL, False],
"nextAlarm": ["Next Alarm Time", None, "mdi:alarm", SensorDeviceClass.TIMESTAMP, None, True],
"lastActivities": ["Last Activities", None, "mdi:numeric", SensorStateClass.TOTAL, None, False]
}

View File

@@ -104,6 +104,10 @@ class GarminConnectSensor(CoordinatorEntity, SensorEntity):
@property
def native_value(self):
"""Return the state of the sensor."""
if self._type == "lastActivities":
return len(self.coordinator.data[self._type])
if not self.coordinator.data or not self.coordinator.data[self._type]:
return None
@@ -143,6 +147,10 @@ class GarminConnectSensor(CoordinatorEntity, SensorEntity):
attributes = {
"last_synced": self.coordinator.data["lastSyncTimestampGMT"],
}
if self._type == "lastActivities":
attributes["last_Activities"] = self.coordinator.data[self._type]
if self._type == "nextAlarm":
attributes["next_alarms"] = calculate_next_active_alarms(
self.coordinator.data[self._type]