Skip to content

Commit

Permalink
Merge pull request #63 from craibo/2022.12.4
Browse files Browse the repository at this point in the history
2022.12.4
  • Loading branch information
craibo authored Dec 16, 2022
2 parents 9553a48 + 2f379c3 commit 3b7b6a6
Show file tree
Hide file tree
Showing 7 changed files with 334 additions and 144 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,6 @@ build/
__pycache__/
*.py[cod]
*.egg-info/

# IntelliJ
.idea/*
9 changes: 3 additions & 6 deletions custom_components/ha_strava/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,23 +35,20 @@
CONF_ATTR_SPORT_TYPE,
CONF_ATTR_START_LATLONG,
CONF_CALLBACK_URL,
CONF_IMG_ROTATE_EVENT,
CONF_IMG_UPDATE_EVENT,
CONF_SENSOR_ACTIVITY_COUNT,
CONF_SENSOR_ACTIVITY_TYPE,
CONF_SENSOR_CALORIES,
CONF_SENSOR_CITY,
CONF_SENSOR_DATE,
CONF_SENSOR_DISTANCE,
CONF_SENSOR_DURATION,
CONF_SENSOR_ELAPSED_TIME,
CONF_SENSOR_ELEVATION,
CONF_SENSOR_HEART_RATE_AVG,
CONF_SENSOR_HEART_RATE_MAX,
CONF_SENSOR_ID,
CONF_SENSOR_KUDOS,
CONF_SENSOR_MOVING_TIME,
CONF_SENSOR_HEART_RATE_AVG,
CONF_SENSOR_HEART_RATE_MAX,
CONF_SENSOR_PACE,
CONF_SENSOR_POWER,
CONF_SENSOR_TITLE,
CONF_SENSOR_TROPHIES,
Expand Down Expand Up @@ -265,7 +262,7 @@ def _sensor_activity(self, activity: dict, geocode: str) -> dict:
activity.get("start_date_local", "2000-01-01T00:00:00Z"),
"%Y-%m-%dT%H:%M:%SZ",
),
CONF_SENSOR_DURATION: float(activity.get("elapsed_time", -1)),
CONF_SENSOR_ELAPSED_TIME: float(activity.get("elapsed_time", -1)),
CONF_SENSOR_MOVING_TIME: float(activity.get("moving_time", -1)),
CONF_SENSOR_KUDOS: int(activity.get("kudos_count", -1)),
CONF_SENSOR_CALORIES: int(
Expand Down
55 changes: 26 additions & 29 deletions custom_components/ha_strava/config_flow.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,22 +19,14 @@
# custom module imports
from .const import (
CONF_CALLBACK_URL,
CONF_DISTANCE_UNIT_OVERRIDE,
CONF_DISTANCE_UNIT_OVERRIDE_DEFAULT,
CONF_DISTANCE_UNIT_OVERRIDE_IMPERIAL,
CONF_DISTANCE_UNIT_OVERRIDE_METRIC,
CONF_IMG_UPDATE_INTERVAL_SECONDS,
CONF_IMG_UPDATE_INTERVAL_SECONDS_DEFAULT,
CONF_NB_ACTIVITIES,
CONF_PHOTOS,
CONF_SENSOR_CALORIES,
CONF_SENSOR_DISTANCE,
CONF_SENSOR_DURATION,
CONF_SENSOR_ELAPSED_TIME,
CONF_SENSOR_ELEVATION,
CONF_SENSOR_HEART_RATE_AVG,
CONF_SENSOR_HEART_RATE_MAX,
CONF_SENSOR_KUDOS,
CONF_SENSOR_PACE,
CONF_SENSOR_POWER,
CONF_SENSOR_SPEED,
CONF_SENSOR_TROPHIES,
CONFIG_ENTRY_TITLE,
DEFAULT_NB_ACTIVITIES,
DOMAIN,
Expand All @@ -45,19 +37,10 @@

_LOGGER = logging.getLogger(__name__)

SENSOR_OPTIONS = [
CONF_SENSOR_DURATION,
CONF_SENSOR_PACE,
CONF_SENSOR_SPEED,
CONF_SENSOR_DISTANCE,
CONF_SENSOR_KUDOS,
CONF_SENSOR_CALORIES,
CONF_SENSOR_ELEVATION,
CONF_SENSOR_POWER,
CONF_SENSOR_TROPHIES,
CONF_SENSOR_HEART_RATE_AVG,
CONF_SENSOR_HEART_RATE_MAX,
CONF_SENSOR_ELAPSED_TIME,
DISTANCE_UNIT_OVERRIDE_OPTIONS = [
CONF_DISTANCE_UNIT_OVERRIDE_DEFAULT,
CONF_DISTANCE_UNIT_OVERRIDE_METRIC,
CONF_DISTANCE_UNIT_OVERRIDE_IMPERIAL,
]


Expand All @@ -71,6 +54,7 @@ def __init__(self):
self._config_entry_title = None
self._import_strava_images = None
self._img_update_interval_seconds = None
self._config_distance_unit_override = None

async def show_form_init(self):
"""
Expand Down Expand Up @@ -119,6 +103,13 @@ async def show_form_init(self):
ha_strava_config_entries[0].data.get(CONF_PHOTOS),
),
): bool,
vol.Required(
CONF_DISTANCE_UNIT_OVERRIDE,
default=ha_strava_config_entries[0].options.get(
CONF_DISTANCE_UNIT_OVERRIDE,
CONF_DISTANCE_UNIT_OVERRIDE_DEFAULT,
),
): vol.In(DISTANCE_UNIT_OVERRIDE_OPTIONS),
}
),
)
Expand Down Expand Up @@ -167,10 +158,13 @@ async def async_step_init(self, user_input=None):
disabled_by=RegistryEntryDisabler.INTEGRATION,
)

self._nb_activities = user_input[CONF_NB_ACTIVITIES]
self._import_strava_images = user_input[CONF_PHOTOS]
self._nb_activities = user_input.get(CONF_NB_ACTIVITIES)
self._import_strava_images = user_input.get(CONF_PHOTOS)
self._img_update_interval_seconds = int(
user_input[CONF_IMG_UPDATE_INTERVAL_SECONDS]
user_input.get(CONF_IMG_UPDATE_INTERVAL_SECONDS)
)
self._config_distance_unit_override = user_input.get(
CONF_DISTANCE_UNIT_OVERRIDE
)
self._config_entry_title = ha_strava_config_entries[0].title

Expand All @@ -183,6 +177,9 @@ async def async_step_init(self, user_input=None):
CONF_IMG_UPDATE_INTERVAL_SECONDS
] = self._img_update_interval_seconds
ha_strava_options[CONF_PHOTOS] = self._import_strava_images
ha_strava_options[
CONF_DISTANCE_UNIT_OVERRIDE
] = self._config_distance_unit_override

_LOGGER.debug(f"Strava Config Options: {ha_strava_options}")
return self.async_create_entry(
Expand Down Expand Up @@ -210,7 +207,7 @@ def logger(self) -> logging.Logger:
def extra_authorize_data(self) -> dict:
"""Extra data that needs to be appended to the authorize url."""
return {
"scope": "activity:read",
"scope": "activity:read_all",
"approval_prompt": "force",
"response_type": "code",
}
Expand Down
23 changes: 17 additions & 6 deletions custom_components/ha_strava/const.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,10 @@
CONF_NB_ACTIVITIES = "nb_activities"
DEFAULT_NB_ACTIVITIES = 2
MAX_NB_ACTIVITIES = 10
CONF_DISTANCE_UNIT_OVERRIDE = "conf_distance_unit"
CONF_DISTANCE_UNIT_OVERRIDE_DEFAULT = "default"
CONF_DISTANCE_UNIT_OVERRIDE_METRIC = "metric"
CONF_DISTANCE_UNIT_OVERRIDE_IMPERIAL = "imperial"

# Event Specs
CONF_STRAVA_DATA_UPDATE_EVENT = "strava_data_update"
Expand All @@ -38,7 +42,6 @@
# Sensor Specs
CONF_SENSOR_ID = "id"
CONF_SENSOR_DATE = "date"
CONF_SENSOR_DURATION = "duration"
CONF_SENSOR_ACTIVITY_COUNT = "activity_count"
CONF_SENSOR_PACE = "pace"
CONF_SENSOR_SPEED = "speed"
Expand All @@ -55,9 +58,7 @@
CONF_SENSOR_ACTIVITY_TYPE = "activity_type"
CONF_SENSOR_HEART_RATE_AVG = "average_heartrate"
CONF_SENSOR_HEART_RATE_MAX = "max_heartrate"
CONF_ATTR_START_LATLONG = "start_latlng"
CONF_ATTR_END_LATLONG = "end_latlng"
CONF_ATTR_SPORT_TYPE = "sport_type"

CONF_ACTIVITY_TYPE_RUN = "run"
CONF_ACTIVITY_TYPE_RIDE = "ride"
CONF_ACTIVITY_TYPE_MTB_RIDE = "mountainbikeride"
Expand All @@ -71,13 +72,13 @@
CONF_ACTIVITY_TYPE_GYM = "weighttraining"
CONF_ACTIVITY_TYPE_WORKOUT = "workout"
CONF_ACTIVITY_TYPE_SNOWBOARD = "snowboard"

CONF_SUMMARY_RECENT = "summary_recent"
CONF_SUMMARY_YTD = "summary_ytd"
CONF_SUMMARY_ALL = "summary_all"

CONF_SENSORS = {
CONF_SENSOR_DATE: {"icon": "mdi:run"},
CONF_SENSOR_DURATION: {"icon": "mdi:timer"},
CONF_SENSOR_MOVING_TIME: {"icon": "mdi:timer"},
CONF_SENSOR_ELAPSED_TIME: {"icon": "mdi:clock"},
CONF_SENSOR_PACE: {"icon": "mdi:clock-fast"},
Expand All @@ -94,6 +95,7 @@
FACTOR_METER_TO_MILE = 0.000621371
FACTOR_METER_TO_FEET = 3.28084
FACTOR_KILOJOULES_TO_KILOCALORIES = 0.239006
FACTOR_KILOMETER_TO_MILE = 0.621371

CONF_SENSOR_1 = "sensor_1"
CONF_SENSOR_2 = "sensor_2"
Expand All @@ -110,7 +112,7 @@

CONF_SENSOR_DEFAULT = {
"icon": "mdi:run",
CONF_SENSOR_1: CONF_SENSOR_DURATION,
CONF_SENSOR_1: CONF_SENSOR_MOVING_TIME,
CONF_SENSOR_2: CONF_SENSOR_PACE,
CONF_SENSOR_3: CONF_SENSOR_DISTANCE,
CONF_SENSOR_4: CONF_SENSOR_SPEED,
Expand All @@ -124,6 +126,15 @@
CONF_SENSOR_12: CONF_SENSOR_KUDOS,
}

DEVICE_CLASS_DURATION = "duration"
DEVICE_CLASS_DISTANCE = "distance"

CONF_ATTR_START_LATLONG = "start_latlng"
CONF_ATTR_END_LATLONG = "end_latlng"
CONF_ATTR_SPORT_TYPE = "sport_type"
CONF_ATTR_LOCATION = "location"
CONF_ATTR_TITLE = "title"

UNIT_BEATS_PER_MINUTE = "bpm"
UNIT_PACE_MINUTES_PER_KILOMETER = "min/km"
UNIT_PACE_MINUTES_PER_MILE = "min/mi"
Expand Down
Loading

0 comments on commit 3b7b6a6

Please sign in to comment.