Explicitly pass in the config_entry in totalconnect coordinator (#137898)

explicitly pass in the config_entry in coordinator
This commit is contained in:
Michael 2025-02-09 14:33:13 +01:00 committed by GitHub
parent 89e29dd14f
commit 028c74e488
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 31 additions and 19 deletions

View File

@ -3,18 +3,15 @@
from total_connect_client.client import TotalConnectClient
from total_connect_client.exceptions import AuthenticationError
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_PASSWORD, CONF_USERNAME, Platform
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import ConfigEntryAuthFailed
from .const import AUTO_BYPASS, CONF_USERCODES
from .coordinator import TotalConnectDataUpdateCoordinator
from .coordinator import TotalConnectConfigEntry, TotalConnectDataUpdateCoordinator
PLATFORMS = [Platform.ALARM_CONTROL_PANEL, Platform.BINARY_SENSOR, Platform.BUTTON]
type TotalConnectConfigEntry = ConfigEntry[TotalConnectDataUpdateCoordinator]
async def async_setup_entry(
hass: HomeAssistant, entry: TotalConnectConfigEntry
@ -41,7 +38,7 @@ async def async_setup_entry(
"TotalConnect authentication failed during setup"
) from exception
coordinator = TotalConnectDataUpdateCoordinator(hass, client)
coordinator = TotalConnectDataUpdateCoordinator(hass, entry, client)
await coordinator.async_config_entry_first_refresh()
entry.runtime_data = coordinator

View File

@ -12,14 +12,13 @@ from homeassistant.components.alarm_control_panel import (
AlarmControlPanelState,
CodeFormat,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import HomeAssistantError, ServiceValidationError
from homeassistant.helpers import entity_platform
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import CODE_REQUIRED, DOMAIN
from .coordinator import TotalConnectDataUpdateCoordinator
from .coordinator import TotalConnectConfigEntry, TotalConnectDataUpdateCoordinator
from .entity import TotalConnectLocationEntity
SERVICE_ALARM_ARM_AWAY_INSTANT = "arm_away_instant"
@ -27,7 +26,9 @@ SERVICE_ALARM_ARM_HOME_INSTANT = "arm_home_instant"
async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
hass: HomeAssistant,
entry: TotalConnectConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up TotalConnect alarm panels based on a config entry."""
coordinator = entry.runtime_data

View File

@ -12,12 +12,11 @@ from homeassistant.components.binary_sensor import (
BinarySensorEntity,
BinarySensorEntityDescription,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import EntityCategory
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .coordinator import TotalConnectDataUpdateCoordinator
from .coordinator import TotalConnectConfigEntry, TotalConnectDataUpdateCoordinator
from .entity import TotalConnectLocationEntity, TotalConnectZoneEntity
LOW_BATTERY = "low_battery"
@ -119,7 +118,9 @@ LOCATION_BINARY_SENSORS: tuple[TotalConnectAlarmBinarySensorEntityDescription, .
async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
hass: HomeAssistant,
entry: TotalConnectConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up TotalConnect device sensors based on a config entry."""
sensors: list = []

View File

@ -7,12 +7,11 @@ from total_connect_client.location import TotalConnectLocation
from total_connect_client.zone import TotalConnectZone
from homeassistant.components.button import ButtonEntity, ButtonEntityDescription
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import EntityCategory
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .coordinator import TotalConnectDataUpdateCoordinator
from .coordinator import TotalConnectConfigEntry, TotalConnectDataUpdateCoordinator
from .entity import TotalConnectLocationEntity, TotalConnectZoneEntity
@ -38,7 +37,9 @@ PANEL_BUTTONS: tuple[TotalConnectButtonEntityDescription, ...] = (
async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
hass: HomeAssistant,
entry: TotalConnectConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up TotalConnect buttons based on a config entry."""
buttons: list = []

View File

@ -20,17 +20,28 @@ from .const import DOMAIN
SCAN_INTERVAL = timedelta(seconds=30)
_LOGGER = logging.getLogger(__name__)
type TotalConnectConfigEntry = ConfigEntry[TotalConnectDataUpdateCoordinator]
class TotalConnectDataUpdateCoordinator(DataUpdateCoordinator[None]):
"""Class to fetch data from TotalConnect."""
config_entry: ConfigEntry
config_entry: TotalConnectConfigEntry
def __init__(self, hass: HomeAssistant, client: TotalConnectClient) -> None:
def __init__(
self,
hass: HomeAssistant,
config_entry: TotalConnectConfigEntry,
client: TotalConnectClient,
) -> None:
"""Initialize."""
self.client = client
super().__init__(
hass, logger=_LOGGER, name=DOMAIN, update_interval=SCAN_INTERVAL
hass,
logger=_LOGGER,
config_entry=config_entry,
name=DOMAIN,
update_interval=SCAN_INTERVAL,
)
async def _async_update_data(self) -> None:

View File

@ -5,9 +5,10 @@ from __future__ import annotations
from typing import Any
from homeassistant.components.diagnostics import async_redact_data
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from .coordinator import TotalConnectConfigEntry
TO_REDACT = [
"username",
"Password",
@ -22,7 +23,7 @@ TO_REDACT = [
async def async_get_config_entry_diagnostics(
hass: HomeAssistant, config_entry: ConfigEntry
hass: HomeAssistant, config_entry: TotalConnectConfigEntry
) -> dict[str, Any]:
"""Return diagnostics for a config entry."""
client = config_entry.runtime_data.client