Skip to content

Commit b6e76c2

Browse files
Custom library url (#2416)
* Add custom library url * Update library url
1 parent 1fbd507 commit b6e76c2

File tree

3 files changed

+24
-6
lines changed

3 files changed

+24
-6
lines changed

custom_components/battery_notes/__init__.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
CONF_ENABLE_AUTODISCOVERY,
3232
CONF_ENABLE_REPLACED,
3333
CONF_HIDE_BATTERY,
34+
CONF_LIBRARY_URL,
3435
CONF_ROUND_BATTERY,
3536
CONF_SHOW_ALL_DEVICES,
3637
CONF_USER_LIBRARY,
@@ -39,6 +40,7 @@
3940
DATA_STORE,
4041
DEFAULT_BATTERY_INCREASE_THRESHOLD,
4142
DEFAULT_BATTERY_LOW_THRESHOLD,
43+
DEFAULT_LIBRARY_URL,
4244
DOMAIN,
4345
DOMAIN_CONFIG,
4446
MIN_HA_VERSION,
@@ -75,6 +77,10 @@
7577
CONF_BATTERY_INCREASE_THRESHOLD,
7678
default=DEFAULT_BATTERY_INCREASE_THRESHOLD,
7779
): cv.positive_int,
80+
vol.Optional(
81+
CONF_LIBRARY_URL,
82+
default=DEFAULT_LIBRARY_URL,
83+
): cv.string,
7884
},
7985
),
8086
),
@@ -111,6 +117,7 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
111117
CONF_ROUND_BATTERY: False,
112118
CONF_DEFAULT_BATTERY_LOW_THRESHOLD: DEFAULT_BATTERY_LOW_THRESHOLD,
113119
CONF_BATTERY_INCREASE_THRESHOLD: DEFAULT_BATTERY_INCREASE_THRESHOLD,
120+
CONF_LIBRARY_URL: DEFAULT_LIBRARY_URL,
114121
}
115122

116123
hass.data[DOMAIN] = {

custom_components/battery_notes/const.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030

3131
DEFAULT_BATTERY_LOW_THRESHOLD = 10
3232
DEFAULT_BATTERY_INCREASE_THRESHOLD = 25
33+
DEFAULT_LIBRARY_URL = "https://raw.githubusercontent.com/andrew-codechimp/HA-Battery-Notes/main/custom_components/battery_notes/data/library.json" # pylint: disable=line-too-long
3334

3435
CONF_SOURCE_ENTITY_ID = "source_entity_id"
3536
CONF_BATTERY_TYPE = "battery_type"
@@ -42,7 +43,7 @@
4243
CONF_MODEL_ID = "model_id"
4344
CONF_MANUFACTURER = "manufacturer"
4445
CONF_DEVICE_NAME = "device_name"
45-
CONF_LIBRARY_URL = "https://raw.githubusercontent.com/andrew-codechimp/HA-Battery-Notes/main/custom_components/battery_notes/data/library.json" # pylint: disable=line-too-long
46+
CONF_LIBRARY_URL = "library_url"
4647
CONF_SHOW_ALL_DEVICES = "show_all_devices"
4748
CONF_ENABLE_REPLACED = "enable_replaced"
4849
CONF_DEFAULT_BATTERY_LOW_THRESHOLD = "default_battery_low_threshold"

custom_components/battery_notes/library_updater.py

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
CONF_ENABLE_AUTODISCOVERY,
2121
CONF_LIBRARY_URL,
2222
DATA_LIBRARY_LAST_UPDATE,
23+
DEFAULT_LIBRARY_URL,
2324
DOMAIN,
2425
DOMAIN_CONFIG,
2526
)
@@ -44,7 +45,14 @@ class LibraryUpdater:
4445
def __init__(self, hass: HomeAssistant):
4546
"""Initialize the library updater."""
4647
self.hass = hass
47-
self._client = LibraryUpdaterClient(session=async_get_clientsession(hass))
48+
49+
if DOMAIN_CONFIG in self.hass.data[DOMAIN]:
50+
domain_config: dict = self.hass.data[DOMAIN][DOMAIN_CONFIG]
51+
url = domain_config.get(CONF_LIBRARY_URL, DEFAULT_LIBRARY_URL)
52+
else:
53+
url = DEFAULT_LIBRARY_URL
54+
55+
self._client = LibraryUpdaterClient(library_url=url, session=async_get_clientsession(hass))
4856

4957
# Fire the library check every 24 hours from now
5058
async_track_utc_time_change(
@@ -103,8 +111,7 @@ def _update_library_json(library_file: str, content: str) -> dict[str, Any]:
103111

104112
except LibraryUpdaterClientError:
105113
_LOGGER.warning(
106-
"Unable to update library, this could be a GitHub or internet "
107-
"connectivity issue, will retry later."
114+
"Unable to update library, will retry later."
108115
)
109116

110117
async def time_to_update_library(self) -> bool:
@@ -146,14 +153,17 @@ class LibraryUpdaterClient:
146153

147154
def __init__(
148155
self,
156+
library_url: str,
149157
session: aiohttp.ClientSession,
150158
) -> None:
151159
"""Client to get latest library file from GitHub."""
160+
self._library_url = library_url
152161
self._session = session
153162

154163
async def async_get_data(self) -> any:
155-
"""Get data from the API."""
156-
return await self._api_wrapper(method="get", url=CONF_LIBRARY_URL)
164+
"""Get data from the hosted library."""
165+
_LOGGER.debug(f"Updating library from {self._library_url}")
166+
return await self._api_wrapper(method="get", url=self._library_url)
157167

158168
async def _api_wrapper(
159169
self,

0 commit comments

Comments
 (0)