Home Assistant Unofficial Reference 2024.12.1
switch.py
Go to the documentation of this file.
1 """Support for ADS switch platform."""
2 
3 from __future__ import annotations
4 
5 from typing import Any
6 
7 import pyads
8 import voluptuous as vol
9 
11  PLATFORM_SCHEMA as SWITCH_PLATFORM_SCHEMA,
12  SwitchEntity,
13 )
14 from homeassistant.const import CONF_NAME
15 from homeassistant.core import HomeAssistant
17 from homeassistant.helpers.entity_platform import AddEntitiesCallback
18 from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
19 
20 from .const import CONF_ADS_VAR, DATA_ADS, STATE_KEY_STATE
21 from .entity import AdsEntity
22 
23 DEFAULT_NAME = "ADS Switch"
24 
25 PLATFORM_SCHEMA = SWITCH_PLATFORM_SCHEMA.extend(
26  {
27  vol.Required(CONF_ADS_VAR): cv.string,
28  vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
29  }
30 )
31 
32 
34  hass: HomeAssistant,
35  config: ConfigType,
36  add_entities: AddEntitiesCallback,
37  discovery_info: DiscoveryInfoType | None = None,
38 ) -> None:
39  """Set up switch platform for ADS."""
40  ads_hub = hass.data[DATA_ADS]
41 
42  name: str = config[CONF_NAME]
43  ads_var: str = config[CONF_ADS_VAR]
44 
45  add_entities([AdsSwitch(ads_hub, name, ads_var)])
46 
47 
49  """Representation of an ADS switch device."""
50 
51  async def async_added_to_hass(self) -> None:
52  """Register device notification."""
53  await self.async_initialize_deviceasync_initialize_device(self._ads_var_ads_var, pyads.PLCTYPE_BOOL)
54 
55  @property
56  def is_on(self) -> bool:
57  """Return True if the entity is on."""
58  return self._state_dict[STATE_KEY_STATE]
59 
60  def turn_on(self, **kwargs: Any) -> None:
61  """Turn the switch on."""
62  self._ads_hub_ads_hub.write_by_name(self._ads_var_ads_var, True, pyads.PLCTYPE_BOOL)
63 
64  def turn_off(self, **kwargs: Any) -> None:
65  """Turn the switch off."""
66  self._ads_hub_ads_hub.write_by_name(self._ads_var_ads_var, False, pyads.PLCTYPE_BOOL)
None async_initialize_device(self, str ads_var, type plctype, str state_key=STATE_KEY_STATE, int|None factor=None)
Definition: entity.py:37
None turn_off(self, **Any kwargs)
Definition: entity.py:1705
None turn_on(self, **Any kwargs)
Definition: entity.py:1697
None setup_platform(HomeAssistant hass, ConfigType config, AddEntitiesCallback add_entities, DiscoveryInfoType|None discovery_info=None)
Definition: switch.py:38
None add_entities(AsusWrtRouter router, AddEntitiesCallback async_add_entities, set[str] tracked)