Various cleanups in AdGuard Home (#75250)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
This commit is contained in:
parent
48f4b51a1d
commit
c6c063e8c5
6 changed files with 86 additions and 129 deletions
69
homeassistant/components/adguard/entity.py
Normal file
69
homeassistant/components/adguard/entity.py
Normal file
|
@ -0,0 +1,69 @@
|
|||
"""AdGuard Home base entity."""
|
||||
from __future__ import annotations
|
||||
|
||||
from adguardhome import AdGuardHome, AdGuardHomeError
|
||||
|
||||
from homeassistant.config_entries import SOURCE_HASSIO, ConfigEntry
|
||||
from homeassistant.helpers.device_registry import DeviceEntryType
|
||||
from homeassistant.helpers.entity import DeviceInfo, Entity
|
||||
|
||||
from .const import DATA_ADGUARD_VERSION, DOMAIN, LOGGER
|
||||
|
||||
|
||||
class AdGuardHomeEntity(Entity):
|
||||
"""Defines a base AdGuard Home entity."""
|
||||
|
||||
_attr_has_entity_name = True
|
||||
_attr_available = True
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
adguard: AdGuardHome,
|
||||
entry: ConfigEntry,
|
||||
) -> None:
|
||||
"""Initialize the AdGuard Home entity."""
|
||||
self._entry = entry
|
||||
self.adguard = adguard
|
||||
|
||||
async def async_update(self) -> None:
|
||||
"""Update AdGuard Home entity."""
|
||||
if not self.enabled:
|
||||
return
|
||||
|
||||
try:
|
||||
await self._adguard_update()
|
||||
self._attr_available = True
|
||||
except AdGuardHomeError:
|
||||
if self._attr_available:
|
||||
LOGGER.debug(
|
||||
"An error occurred while updating AdGuard Home sensor",
|
||||
exc_info=True,
|
||||
)
|
||||
self._attr_available = False
|
||||
|
||||
async def _adguard_update(self) -> None:
|
||||
"""Update AdGuard Home entity."""
|
||||
raise NotImplementedError()
|
||||
|
||||
@property
|
||||
def device_info(self) -> DeviceInfo:
|
||||
"""Return device information about this AdGuard Home instance."""
|
||||
if self._entry.source == SOURCE_HASSIO:
|
||||
config_url = "homeassistant://hassio/ingress/a0d7b954_adguard"
|
||||
elif self.adguard.tls:
|
||||
config_url = f"https://{self.adguard.host}:{self.adguard.port}"
|
||||
else:
|
||||
config_url = f"http://{self.adguard.host}:{self.adguard.port}"
|
||||
|
||||
return DeviceInfo(
|
||||
entry_type=DeviceEntryType.SERVICE,
|
||||
identifiers={
|
||||
(DOMAIN, self.adguard.host, self.adguard.port, self.adguard.base_path) # type: ignore[arg-type]
|
||||
},
|
||||
manufacturer="AdGuard Team",
|
||||
name="AdGuard Home",
|
||||
sw_version=self.hass.data[DOMAIN][self._entry.entry_id].get(
|
||||
DATA_ADGUARD_VERSION
|
||||
),
|
||||
configuration_url=config_url,
|
||||
)
|
Loading…
Add table
Add a link
Reference in a new issue