Skip to content

Commit b341e23

Browse files
WIP
1 parent a2de734 commit b341e23

File tree

10 files changed

+67
-65
lines changed

10 files changed

+67
-65
lines changed

custom_components/battery_notes/__init__.py

Lines changed: 6 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,16 @@
88

99
import logging
1010
import re
11-
from dataclasses import dataclass
12-
from datetime import datetime
1311

1412
import voluptuous as vol
1513
from awesomeversion.awesomeversion import AwesomeVersion
16-
from homeassistant.config_entries import ConfigEntry
1714
from homeassistant.const import __version__ as HA_VERSION # noqa: N812
1815
from homeassistant.core import HomeAssistant, callback
1916
from homeassistant.helpers import config_validation as cv
2017
from homeassistant.helpers import entity_registry as er
2118
from homeassistant.helpers import issue_registry as ir
2219
from homeassistant.helpers.typing import ConfigType
2320
from homeassistant.util import dt as dt_util
24-
from homeassistant.util.hass_dict import HassKey
2521

2622
from .config_flow import CONFIG_VERSION
2723
from .const import (
@@ -44,14 +40,18 @@
4440
DEFAULT_SCHEMA_URL,
4541
DOMAIN,
4642
MIN_HA_VERSION,
43+
MY_KEY,
4744
PLATFORMS,
4845
)
49-
from .coordinator import BatteryNotesCoordinator
46+
from .coordinator import (
47+
BatteryNotesConfigEntry,
48+
BatteryNotesCoordinator,
49+
BatteryNotesDomainConfig,
50+
)
5051
from .discovery import DiscoveryManager
5152
from .library_updater import LibraryUpdater
5253
from .services import setup_services
5354
from .store import (
54-
BatteryNotesStorage,
5555
async_get_registry,
5656
)
5757

@@ -91,35 +91,6 @@
9191
extra=vol.ALLOW_EXTRA,
9292
)
9393

94-
@dataclass
95-
class BatteryNotesDomainConfig:
96-
"""Class for sharing config data within the BatteryNotes integration."""
97-
enable_autodiscovery: bool = True
98-
show_all_devices: bool = False
99-
enable_replaced: bool = True
100-
hide_battery: bool = False
101-
round_battery: bool = False
102-
default_battery_low_threshold: int = DEFAULT_BATTERY_LOW_THRESHOLD
103-
battery_increased_threshod: int = DEFAULT_BATTERY_INCREASE_THRESHOLD
104-
library_url: str = DEFAULT_LIBRARY_URL
105-
schema_url: str = DEFAULT_SCHEMA_URL
106-
library_updater: LibraryUpdater | None
107-
library_last_update: datetime | None = None
108-
user_library: str = ""
109-
coordinator: BatteryNotesCoordinator | None
110-
111-
type BatteryNotesConfigEntry = ConfigEntry[BatteryNotesData]
112-
113-
MY_KEY: HassKey["BatteryNotesDomainConfig"] = HassKey(DOMAIN)
114-
115-
@dataclass
116-
class BatteryNotesData:
117-
"""Class for sharing data within the BatteryNotes integration."""
118-
119-
domain_config: BatteryNotesDomainConfig
120-
store: BatteryNotesStorage
121-
coordinator: BatteryNotesCoordinator
122-
12394

12495
async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
12596
"""Integration setup."""

custom_components/battery_notes/binary_sensor.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363
CoordinatorEntity,
6464
)
6565

66-
from . import MY_KEY, PLATFORMS, BatteryNotesConfigEntry
66+
from . import PLATFORMS
6767
from .common import validate_is_float
6868
from .const import (
6969
ATTR_BATTERY_LOW_THRESHOLD,
@@ -72,8 +72,12 @@
7272
ATTR_BATTERY_TYPE_AND_QUANTITY,
7373
CONF_SOURCE_ENTITY_ID,
7474
DOMAIN,
75+
MY_KEY,
76+
)
77+
from .coordinator import (
78+
BatteryNotesConfigEntry,
79+
BatteryNotesCoordinator,
7580
)
76-
from .coordinator import BatteryNotesCoordinator
7781
from .entity import (
7882
BatteryNotesEntityDescription,
7983
)

custom_components/battery_notes/button.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
)
3434
from homeassistant.helpers.reload import async_setup_reload_service
3535

36-
from . import PLATFORMS, BatteryNotesConfigEntry
36+
from . import PLATFORMS
3737
from .const import (
3838
ATTR_BATTERY_QUANTITY,
3939
ATTR_BATTERY_TYPE,
@@ -45,7 +45,7 @@
4545
DOMAIN,
4646
EVENT_BATTERY_REPLACED,
4747
)
48-
from .coordinator import BatteryNotesCoordinator
48+
from .coordinator import BatteryNotesConfigEntry, BatteryNotesCoordinator
4949
from .entity import (
5050
BatteryNotesEntityDescription,
5151
)

custom_components/battery_notes/const.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
11
"""Constants for battery_notes."""
22

33
import json
4+
from dataclasses import dataclass
5+
from datetime import datetime
46
from logging import Logger, getLogger
57
from pathlib import Path
68
from typing import Final
79

810
import voluptuous as vol
911
from homeassistant.const import Platform
1012
from homeassistant.helpers import config_validation as cv
13+
from homeassistant.util.hass_dict import HassKey
14+
15+
from .library_updater import LibraryUpdater
1116

1217
LOGGER: Logger = getLogger(__package__)
1318

@@ -112,3 +117,21 @@
112117
Platform.SENSOR,
113118
Platform.BINARY_SENSOR,
114119
]
120+
121+
@dataclass
122+
class BatteryNotesDomainConfig:
123+
"""Class for sharing config data within the BatteryNotes integration."""
124+
enable_autodiscovery: bool = True
125+
show_all_devices: bool = False
126+
enable_replaced: bool = True
127+
hide_battery: bool = False
128+
round_battery: bool = False
129+
default_battery_low_threshold: int = DEFAULT_BATTERY_LOW_THRESHOLD
130+
battery_increased_threshod: int = DEFAULT_BATTERY_INCREASE_THRESHOLD
131+
library_url: str = DEFAULT_LIBRARY_URL
132+
schema_url: str = DEFAULT_SCHEMA_URL
133+
library_updater: LibraryUpdater | None
134+
library_last_update: datetime | None = None
135+
user_library: str = ""
136+
137+
MY_KEY: HassKey[BatteryNotesDomainConfig] = HassKey(DOMAIN)

custom_components/battery_notes/coordinator.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,15 @@
33
from __future__ import annotations
44

55
import logging
6+
from dataclasses import dataclass
67
from datetime import datetime
78
from typing import cast
89

910
from homeassistant.components.binary_sensor import DOMAIN as BINARY_SENSOR_DOMAIN
1011
from homeassistant.components.binary_sensor import BinarySensorDeviceClass
1112
from homeassistant.components.sensor import DOMAIN as SENSOR_DOMAIN
1213
from homeassistant.components.sensor import SensorDeviceClass
14+
from homeassistant.config_entries import ConfigEntry
1315
from homeassistant.const import (
1416
CONF_DEVICE_ID,
1517
PERCENTAGE,
@@ -24,7 +26,6 @@
2426
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator
2527
from homeassistant.util import dt as dt_util
2628

27-
from . import BatteryNotesConfigEntry
2829
from .common import validate_is_float
2930
from .const import (
3031
ATTR_BATTERY_LAST_REPLACED,
@@ -46,17 +47,33 @@
4647
CONF_BATTERY_TYPE,
4748
CONF_FILTER_OUTLIERS,
4849
CONF_SOURCE_ENTITY_ID,
50+
DEFAULT_BATTERY_INCREASE_THRESHOLD,
51+
DEFAULT_BATTERY_LOW_THRESHOLD,
52+
DEFAULT_LIBRARY_URL,
53+
DEFAULT_SCHEMA_URL,
4954
DOMAIN,
5055
EVENT_BATTERY_INCREASED,
5156
EVENT_BATTERY_THRESHOLD,
5257
LAST_REPLACED,
5358
LAST_REPORTED,
5459
LAST_REPORTED_LEVEL,
60+
BatteryNotesDomainConfig,
5561
)
5662
from .filters import LowOutlierFilter
63+
from .library_updater import LibraryUpdater
64+
from .store import BatteryNotesStorage
5765

5866
_LOGGER = logging.getLogger(__name__)
5967

68+
type BatteryNotesConfigEntry = ConfigEntry[BatteryNotesData]
69+
70+
@dataclass
71+
class BatteryNotesData:
72+
"""Class for sharing data within the BatteryNotes integration."""
73+
74+
domain_config: BatteryNotesDomainConfig
75+
store: BatteryNotesStorage
76+
coordinator: BatteryNotesCoordinator
6077

6178

6279
class BatteryNotesCoordinator(DataUpdateCoordinator[None]):

custom_components/battery_notes/diagnostics.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313
entity_registry as er,
1414
)
1515

16-
from . import BatteryNotesConfigEntry
1716
from .common import get_device_model_id
1817
from .const import CONF_SOURCE_ENTITY_ID
18+
from .coordinator import BatteryNotesConfigEntry
1919

2020

2121
async def async_get_config_entry_diagnostics(

custom_components/battery_notes/library.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@
1010
from homeassistant.core import HomeAssistant
1111
from homeassistant.helpers.storage import STORAGE_DIR
1212

13-
from . import MY_KEY
1413
from .const import (
1514
DATA_LIBRARY,
1615
DOMAIN,
16+
MY_KEY,
1717
)
1818

1919
_LOGGER = logging.getLogger(__name__)

custom_components/battery_notes/library_updater.py

Lines changed: 7 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,8 @@
1818
from homeassistant.helpers.event import async_track_utc_time_change
1919
from homeassistant.helpers.storage import STORAGE_DIR
2020

21-
from . import MY_KEY
2221
from .const import (
23-
CONF_ENABLE_AUTODISCOVERY,
24-
CONF_LIBRARY_URL,
25-
CONF_SCHEMA_URL,
26-
DEFAULT_LIBRARY_URL,
27-
DEFAULT_SCHEMA_URL,
28-
DOMAIN,
29-
DOMAIN_CONFIG,
22+
MY_KEY,
3023
)
3124
from .discovery import DiscoveryManager
3225

@@ -47,13 +40,10 @@ def __init__(self, hass: HomeAssistant):
4740
"""Initialize the library updater."""
4841
self.hass = hass
4942

50-
if DOMAIN_CONFIG in self.hass.data[DOMAIN]:
51-
domain_config: dict = self.hass.data[DOMAIN][DOMAIN_CONFIG]
52-
library_url = domain_config.get(CONF_LIBRARY_URL, DEFAULT_LIBRARY_URL)
53-
schema_url = domain_config.get(CONF_SCHEMA_URL, DEFAULT_SCHEMA_URL)
54-
else:
55-
library_url = DEFAULT_LIBRARY_URL
56-
schema_url = DEFAULT_SCHEMA_URL
43+
domain_config = self.hass.data[MY_KEY]
44+
45+
library_url = domain_config.library_url
46+
schema_url = domain_config.schema_url
5747

5848
self._client = LibraryUpdaterClient(library_url=library_url, schema_url=schema_url, session=async_get_clientsession(hass))
5949

@@ -71,12 +61,9 @@ async def timer_update(self, now: datetime):
7161

7262
await self.get_library_updates(now)
7363

74-
if DOMAIN_CONFIG not in self.hass.data[DOMAIN]:
75-
return
76-
77-
domain_config: dict = self.hass.data[DOMAIN][DOMAIN_CONFIG]
64+
domain_config = self.hass.data[MY_KEY]
7865

79-
if domain_config.get(CONF_ENABLE_AUTODISCOVERY):
66+
if domain_config.enable_autodiscovery:
8067
discovery_manager = DiscoveryManager(self.hass, domain_config)
8168
await discovery_manager.start_discovery()
8269
else:

custom_components/battery_notes/sensor.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@
5353
CoordinatorEntity,
5454
)
5555

56-
from . import MY_KEY, BatteryNotesConfigEntry
5756
from .common import validate_is_float
5857
from .const import (
5958
ATTR_BATTERY_LAST_REPLACED,
@@ -72,9 +71,10 @@
7271
CONF_SOURCE_ENTITY_ID,
7372
DOMAIN,
7473
LAST_REPLACED,
74+
MY_KEY,
7575
PLATFORMS,
7676
)
77-
from .coordinator import BatteryNotesCoordinator
77+
from .coordinator import BatteryNotesConfigEntry, BatteryNotesCoordinator
7878
from .entity import (
7979
BatteryNotesEntityDescription,
8080
)

custom_components/battery_notes/services.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
from homeassistant.helpers import entity_registry as er
1414
from homeassistant.util import dt as dt_util
1515

16-
from . import BatteryNotesConfigEntry
1716
from .const import (
1817
ATTR_BATTERY_LAST_REPLACED,
1918
ATTR_BATTERY_LAST_REPORTED,
@@ -42,6 +41,7 @@
4241
SERVICE_DATA_DATE_TIME_REPLACED,
4342
SERVICE_DATA_DAYS_LAST_REPORTED,
4443
)
44+
from .coordinator import BatteryNotesConfigEntry
4545

4646
_LOGGER = logging.getLogger(__name__)
4747

0 commit comments

Comments
 (0)