1 """Support for ADS valves."""
3 from __future__
import annotations
6 import voluptuous
as vol
9 DEVICE_CLASSES_SCHEMA
as VALVE_DEVICE_CLASSES_SCHEMA,
10 PLATFORM_SCHEMA
as VALVE_PLATFORM_SCHEMA,
21 from .const
import CONF_ADS_VAR, DATA_ADS
22 from .entity
import AdsEntity
23 from .hub
import AdsHub
25 DEFAULT_NAME =
"ADS valve"
27 PLATFORM_SCHEMA = VALVE_PLATFORM_SCHEMA.extend(
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,
39 add_entities: AddEntitiesCallback,
40 discovery_info: DiscoveryInfoType |
None =
None,
42 """Set up an ADS valve device."""
43 ads_hub = hass.data[DATA_ADS]
45 ads_var: str = config[CONF_ADS_VAR]
46 name: str = config[CONF_NAME]
47 device_class: ValveDeviceClass |
None = config.get(CONF_DEVICE_CLASS)
49 entity =
AdsValve(ads_hub, ads_var, name, device_class)
55 """Representation of an ADS valve entity."""
57 _attr_supported_features = ValveEntityFeature.OPEN | ValveEntityFeature.CLOSE
64 device_class: ValveDeviceClass |
None,
66 """Initialize AdsValve entity."""
67 super().
__init__(ads_hub, name, ads_var)
73 """Register device notification."""
78 self.
_ads_hub_ads_hub.write_by_name(self.
_ads_var_ads_var,
True, pyads.PLCTYPE_BOOL)
82 """Close the valve."""
83 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)
None async_added_to_hass(self)
None __init__(self, AdsHub ads_hub, str ads_var, str name, ValveDeviceClass|None device_class)
None open_valve(self, **kwargs)
None close_valve(self, **kwargs)
None setup_platform(HomeAssistant hass, ConfigType config, AddEntitiesCallback add_entities, DiscoveryInfoType|None discovery_info=None)
None add_entities(AsusWrtRouter router, AddEntitiesCallback async_add_entities, set[str] tracked)