Home Assistant Unofficial Reference 2024.12.1
fan.py
Go to the documentation of this file.
1 """Support for Modbus fans."""
2 
3 from __future__ import annotations
4 
5 from typing import Any
6 
7 from homeassistant.components.fan import FanEntity, FanEntityFeature
8 from homeassistant.const import CONF_NAME
9 from homeassistant.core import HomeAssistant
10 from homeassistant.helpers.entity_platform import AddEntitiesCallback
11 from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
12 
13 from . import get_hub
14 from .const import CONF_FANS
15 from .entity import BaseSwitch
16 from .modbus import ModbusHub
17 
18 PARALLEL_UPDATES = 1
19 
20 
22  hass: HomeAssistant,
23  config: ConfigType,
24  async_add_entities: AddEntitiesCallback,
25  discovery_info: DiscoveryInfoType | None = None,
26 ) -> None:
27  """Read configuration and create Modbus fans."""
28  if discovery_info is None:
29  return
30  fans = []
31 
32  for entry in discovery_info[CONF_FANS]:
33  hub: ModbusHub = get_hub(hass, discovery_info[CONF_NAME])
34  fans.append(ModbusFan(hass, hub, entry))
35  async_add_entities(fans)
36 
37 
39  """Class representing a Modbus fan."""
40 
41  _enable_turn_on_off_backwards_compatibility = False
42 
43  def __init__(
44  self, hass: HomeAssistant, hub: ModbusHub, config: dict[str, Any]
45  ) -> None:
46  """Initialize the fan."""
47  super().__init__(hass, hub, config)
48  if self.command_oncommand_on is not None and self._command_off_command_off is not None:
49  self._attr_supported_features |= (
50  FanEntityFeature.TURN_OFF | FanEntityFeature.TURN_ON
51  )
52 
53  async def async_turn_on(
54  self,
55  percentage: int | None = None,
56  preset_mode: str | None = None,
57  **kwargs: Any,
58  ) -> None:
59  """Set fan on."""
60  await self.async_turnasync_turn(self.command_oncommand_on)
61 
62  @property
63  def is_on(self) -> bool | None:
64  """Return true if fan is on.
65 
66  This is needed due to the ongoing conversion of fan.
67  """
68  return self._attr_is_on_attr_is_on
None __init__(self, HomeAssistant hass, ModbusHub hub, dict[str, Any] config)
Definition: fan.py:45
None async_turn_on(self, int|None percentage=None, str|None preset_mode=None, **Any kwargs)
Definition: fan.py:58
None async_setup_platform(HomeAssistant hass, ConfigType config, AddEntitiesCallback async_add_entities, DiscoveryInfoType|None discovery_info=None)
Definition: fan.py:26
ModbusHub get_hub(HomeAssistant hass, str name)
Definition: __init__.py:445