Home Assistant Unofficial Reference 2024.12.1
switch.py
Go to the documentation of this file.
1 """Support for Firmata switch output."""
2 
3 import logging
4 from typing import Any
5 
6 from homeassistant.components.switch import SwitchEntity
7 from homeassistant.config_entries import ConfigEntry
8 from homeassistant.const import CONF_NAME, CONF_PIN
9 from homeassistant.core import HomeAssistant
10 from homeassistant.helpers.entity_platform import AddEntitiesCallback
11 
12 from .const import CONF_INITIAL_STATE, CONF_NEGATE_STATE, CONF_PIN_MODE, DOMAIN
13 from .entity import FirmataPinEntity
14 from .pin import FirmataBinaryDigitalOutput, FirmataPinUsedException
15 
16 _LOGGER = logging.getLogger(__name__)
17 
18 
20  hass: HomeAssistant,
21  config_entry: ConfigEntry,
22  async_add_entities: AddEntitiesCallback,
23 ) -> None:
24  """Set up the Firmata switches."""
25  new_entities = []
26 
27  board = hass.data[DOMAIN][config_entry.entry_id]
28  for switch in board.switches:
29  pin = switch[CONF_PIN]
30  pin_mode = switch[CONF_PIN_MODE]
31  initial = switch[CONF_INITIAL_STATE]
32  negate = switch[CONF_NEGATE_STATE]
33  api = FirmataBinaryDigitalOutput(board, pin, pin_mode, initial, negate)
34  try:
35  api.setup()
36  except FirmataPinUsedException:
37  _LOGGER.error(
38  "Could not setup switch on pin %s since pin already in use",
39  switch[CONF_PIN],
40  )
41  continue
42  name = switch[CONF_NAME]
43  switch_entity = FirmataSwitch(api, config_entry, name, pin)
44  new_entities.append(switch_entity)
45 
46  async_add_entities(new_entities)
47 
48 
50  """Representation of a switch on a Firmata board."""
51 
52  async def async_added_to_hass(self) -> None:
53  """Set up a switch."""
54  await self._api_api.start_pin()
55 
56  @property
57  def is_on(self) -> bool:
58  """Return true if switch is on."""
59  return self._api_api.is_on
60 
61  async def async_turn_on(self, **kwargs: Any) -> None:
62  """Turn on switch."""
63  await self._api_api.turn_on()
64  self.async_write_ha_stateasync_write_ha_state()
65 
66  async def async_turn_off(self, **kwargs: Any) -> None:
67  """Turn off switch."""
68  await self._api_api.turn_off()
69  self.async_write_ha_stateasync_write_ha_state()
None async_turn_off(self, **Any kwargs)
Definition: entity.py:1709
None turn_off(self, **Any kwargs)
Definition: entity.py:1705
None async_turn_on(self, **Any kwargs)
Definition: entity.py:1701
None turn_on(self, **Any kwargs)
Definition: entity.py:1697
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
Definition: switch.py:23