1 """Support for AdGuard Home switches."""
3 from __future__
import annotations
5 from collections.abc
import Callable, Coroutine
6 from dataclasses
import dataclass
7 from datetime
import timedelta
10 from adguardhome
import AdGuardHome, AdGuardHomeError
16 from .
import AdGuardConfigEntry, AdGuardData
17 from .const
import DOMAIN, LOGGER
18 from .entity
import AdGuardHomeEntity
24 @dataclass(frozen=True, kw_only=True)
26 """Describes AdGuard Home switch entity."""
28 is_on_fn: Callable[[AdGuardHome], Callable[[], Coroutine[Any, Any, bool]]]
29 turn_on_fn: Callable[[AdGuardHome], Callable[[], Coroutine[Any, Any,
None]]]
30 turn_off_fn: Callable[[AdGuardHome], Callable[[], Coroutine[Any, Any,
None]]]
33 SWITCHES: tuple[AdGuardHomeSwitchEntityDescription, ...] = (
36 translation_key=
"protection",
37 is_on_fn=
lambda adguard: adguard.protection_enabled,
38 turn_on_fn=
lambda adguard: adguard.enable_protection,
39 turn_off_fn=
lambda adguard: adguard.disable_protection,
43 translation_key=
"parental",
44 is_on_fn=
lambda adguard: adguard.parental.enabled,
45 turn_on_fn=
lambda adguard: adguard.parental.enable,
46 turn_off_fn=
lambda adguard: adguard.parental.disable,
50 translation_key=
"safe_search",
51 is_on_fn=
lambda adguard: adguard.safesearch.enabled,
52 turn_on_fn=
lambda adguard: adguard.safesearch.enable,
53 turn_off_fn=
lambda adguard: adguard.safesearch.disable,
57 translation_key=
"safe_browsing",
58 is_on_fn=
lambda adguard: adguard.safebrowsing.enabled,
59 turn_on_fn=
lambda adguard: adguard.safebrowsing.enable,
60 turn_off_fn=
lambda adguard: adguard.safebrowsing.disable,
64 translation_key=
"filtering",
65 is_on_fn=
lambda adguard: adguard.filtering.enabled,
66 turn_on_fn=
lambda adguard: adguard.filtering.enable,
67 turn_off_fn=
lambda adguard: adguard.filtering.disable,
71 translation_key=
"query_log",
72 is_on_fn=
lambda adguard: adguard.querylog.enabled,
73 turn_on_fn=
lambda adguard: adguard.querylog.enable,
74 turn_off_fn=
lambda adguard: adguard.querylog.disable,
81 entry: AdGuardConfigEntry,
82 async_add_entities: AddEntitiesCallback,
84 """Set up AdGuard Home switch based on a config entry."""
85 data = entry.runtime_data
94 """Defines a AdGuard Home switch."""
96 entity_description: AdGuardHomeSwitchEntityDescription
101 entry: AdGuardConfigEntry,
102 description: AdGuardHomeSwitchEntityDescription,
104 """Initialize AdGuard Home switch."""
118 """Turn off the switch."""
121 except AdGuardHomeError:
122 LOGGER.error(
"An error occurred while turning off AdGuard Home switch")
126 """Turn on the switch."""
129 except AdGuardHomeError:
130 LOGGER.error(
"An error occurred while turning on AdGuard Home switch")
134 """Update AdGuard Home entity."""
None async_turn_off(self, **Any kwargs)
None async_turn_on(self, **Any kwargs)
None _adguard_update(self)
None __init__(self, AdGuardData data, AdGuardConfigEntry entry, AdGuardHomeSwitchEntityDescription description)
None async_setup_entry(HomeAssistant hass, AdGuardConfigEntry entry, AddEntitiesCallback async_add_entities)