Home Assistant Unofficial Reference 2024.12.1
valve.py
Go to the documentation of this file.
1 """Support for ADS valves."""
2 
3 from __future__ import annotations
4 
5 import pyads
6 import voluptuous as vol
7 
9  DEVICE_CLASSES_SCHEMA as VALVE_DEVICE_CLASSES_SCHEMA,
10  PLATFORM_SCHEMA as VALVE_PLATFORM_SCHEMA,
11  ValveDeviceClass,
12  ValveEntity,
13  ValveEntityFeature,
14 )
15 from homeassistant.const import CONF_DEVICE_CLASS, CONF_NAME
16 from homeassistant.core import HomeAssistant
18 from homeassistant.helpers.entity_platform import AddEntitiesCallback
19 from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
20 
21 from .const import CONF_ADS_VAR, DATA_ADS
22 from .entity import AdsEntity
23 from .hub import AdsHub
24 
25 DEFAULT_NAME = "ADS valve"
26 
27 PLATFORM_SCHEMA = VALVE_PLATFORM_SCHEMA.extend(
28  {
29  vol.Required(CONF_ADS_VAR): cv.string,
30  vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
31  vol.Optional(CONF_DEVICE_CLASS): VALVE_DEVICE_CLASSES_SCHEMA,
32  }
33 )
34 
35 
37  hass: HomeAssistant,
38  config: ConfigType,
39  add_entities: AddEntitiesCallback,
40  discovery_info: DiscoveryInfoType | None = None,
41 ) -> None:
42  """Set up an ADS valve device."""
43  ads_hub = hass.data[DATA_ADS]
44 
45  ads_var: str = config[CONF_ADS_VAR]
46  name: str = config[CONF_NAME]
47  device_class: ValveDeviceClass | None = config.get(CONF_DEVICE_CLASS)
48 
49  entity = AdsValve(ads_hub, ads_var, name, device_class)
50 
51  add_entities([entity])
52 
53 
55  """Representation of an ADS valve entity."""
56 
57  _attr_supported_features = ValveEntityFeature.OPEN | ValveEntityFeature.CLOSE
58 
59  def __init__(
60  self,
61  ads_hub: AdsHub,
62  ads_var: str,
63  name: str,
64  device_class: ValveDeviceClass | None,
65  ) -> None:
66  """Initialize AdsValve entity."""
67  super().__init__(ads_hub, name, ads_var)
68  self._attr_device_class_attr_device_class = device_class
69  self._attr_reports_position_attr_reports_position = False
70  self._attr_is_closed_attr_is_closed = True
71 
72  async def async_added_to_hass(self) -> None:
73  """Register device notification."""
74  await self.async_initialize_deviceasync_initialize_device(self._ads_var_ads_var, pyads.PLCTYPE_BOOL)
75 
76  def open_valve(self, **kwargs) -> None:
77  """Open the valve."""
78  self._ads_hub_ads_hub.write_by_name(self._ads_var_ads_var, True, pyads.PLCTYPE_BOOL)
79  self._attr_is_closed_attr_is_closed = False
80 
81  def close_valve(self, **kwargs) -> None:
82  """Close the valve."""
83  self._ads_hub_ads_hub.write_by_name(self._ads_var_ads_var, False, pyads.PLCTYPE_BOOL)
84  self._attr_is_closed_attr_is_closed = True
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 __init__(self, AdsHub ads_hub, str ads_var, str name, ValveDeviceClass|None device_class)
Definition: valve.py:65
None close_valve(self, **kwargs)
Definition: valve.py:81
None setup_platform(HomeAssistant hass, ConfigType config, AddEntitiesCallback add_entities, DiscoveryInfoType|None discovery_info=None)
Definition: valve.py:41
None add_entities(AsusWrtRouter router, AddEntitiesCallback async_add_entities, set[str] tracked)