1 """The fitbit component."""
10 from .const
import DOMAIN, FitbitScope
11 from .coordinator
import FitbitData, FitbitDeviceCoordinator
12 from .exceptions
import FitbitApiException, FitbitAuthException
13 from .model
import config_from_entry_data
15 PLATFORMS: list[Platform] = [Platform.SENSOR]
19 """Set up fitbit from a config entry."""
20 hass.data.setdefault(DOMAIN, {})
23 await config_entry_oauth2_flow.async_get_config_entry_implementation(
27 session = config_entry_oauth2_flow.OAuth2Session(hass, entry, implementation)
29 hass, session, unit_system=entry.data.get(
"unit_system")
32 await fitbit_api.async_get_access_token()
33 except FitbitAuthException
as err:
34 raise ConfigEntryAuthFailed
from err
35 except FitbitApiException
as err:
36 raise ConfigEntryNotReady
from err
39 coordinator: FitbitDeviceCoordinator |
None =
None
40 if fitbit_config.is_allowed_resource(FitbitScope.DEVICE,
"devices/battery"):
42 await coordinator.async_config_entry_first_refresh()
44 hass.data[DOMAIN][entry.entry_id] =
FitbitData(
45 api=fitbit_api, device_coordinator=coordinator
48 await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
54 """Unload a config entry."""
55 if unload_ok := await hass.config_entries.async_unload_platforms(entry, PLATFORMS):
56 hass.data[DOMAIN].pop(entry.entry_id)
FitbitConfig config_from_entry_data(Mapping[str, Any] data)
bool async_unload_entry(HomeAssistant hass, ConfigEntry entry)
bool async_setup_entry(HomeAssistant hass, ConfigEntry entry)