Home Assistant Unofficial Reference 2024.12.1
switch.py
Go to the documentation of this file.
1 """Support for Edimax switches."""
2 
3 from __future__ import annotations
4 
5 from typing import Any
6 
7 from pyedimax.smartplug import SmartPlug
8 import voluptuous as vol
9 
11  PLATFORM_SCHEMA as SWITCH_PLATFORM_SCHEMA,
12  SwitchEntity,
13 )
14 from homeassistant.const import CONF_HOST, CONF_NAME, CONF_PASSWORD, CONF_USERNAME
15 from homeassistant.core import HomeAssistant
17 from homeassistant.helpers.entity_platform import AddEntitiesCallback
18 from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
19 
20 DOMAIN = "edimax"
21 
22 DEFAULT_NAME = "Edimax Smart Plug"
23 DEFAULT_PASSWORD = "1234"
24 DEFAULT_USERNAME = "admin"
25 
26 PLATFORM_SCHEMA = SWITCH_PLATFORM_SCHEMA.extend(
27  {
28  vol.Required(CONF_HOST): cv.string,
29  vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
30  vol.Optional(CONF_PASSWORD, default=DEFAULT_PASSWORD): cv.string,
31  vol.Optional(CONF_USERNAME, default=DEFAULT_USERNAME): cv.string,
32  }
33 )
34 
35 
37  hass: HomeAssistant,
38  config: ConfigType,
39  add_entities: AddEntitiesCallback,
40  discovery_info: DiscoveryInfoType | None = None,
41 ) -> None:
42  """Find and return Edimax Smart Plugs."""
43  host = config.get(CONF_HOST)
44  auth = (config.get(CONF_USERNAME), config.get(CONF_PASSWORD))
45  name = config.get(CONF_NAME)
46 
47  add_entities([SmartPlugSwitch(SmartPlug(host, auth), name)], True)
48 
49 
51  """Representation an Edimax Smart Plug switch."""
52 
53  def __init__(self, smartplug, name):
54  """Initialize the switch."""
55  self.smartplugsmartplug = smartplug
56  self._name_name = name
57  self._state_state = False
58  self._info_info = None
59  self._mac_mac = None
60 
61  @property
62  def unique_id(self):
63  """Return the device's MAC address."""
64  return self._mac_mac
65 
66  @property
67  def name(self):
68  """Return the name of the Smart Plug, if any."""
69  return self._name_name
70 
71  @property
72  def is_on(self):
73  """Return true if switch is on."""
74  return self._state_state
75 
76  def turn_on(self, **kwargs: Any) -> None:
77  """Turn the switch on."""
78  self.smartplugsmartplug.state = "ON"
79 
80  def turn_off(self, **kwargs: Any) -> None:
81  """Turn the switch off."""
82  self.smartplugsmartplug.state = "OFF"
83 
84  def update(self) -> None:
85  """Update edimax switch."""
86  if not self._info_info:
87  self._info_info = self.smartplugsmartplug.info
88  self._mac_mac = self._info_info["mac"]
89 
90  self._state_state = self.smartplugsmartplug.state == "ON"
None add_entities(AsusWrtRouter router, AddEntitiesCallback async_add_entities, set[str] tracked)
None setup_platform(HomeAssistant hass, ConfigType config, AddEntitiesCallback add_entities, DiscoveryInfoType|None discovery_info=None)
Definition: switch.py:41