1 """Selectors for KNX."""
6 import voluptuous
as vol
8 from ..validation
import ga_validator, maybe_ga_validator
9 from .const
import CONF_DPT, CONF_GA_PASSIVE, CONF_GA_STATE, CONF_GA_WRITE
13 """Selector for a KNX group address structure."""
22 write_required: bool =
False,
23 state_required: bool =
False,
24 dpt: type[Enum] |
None =
None,
26 """Initialize the group address selector."""
37 """Validate the passed data."""
38 return self.
schemaschema(data)
41 """Create the schema based on configuration."""
42 schema: dict[vol.Marker, Any] = {}
46 return vol.Schema(schema)
49 """Add basic group address items to the schema."""
51 def add_ga_item(key: str, allowed: bool, required: bool) ->
None:
52 """Add a group address item validator to the schema."""
54 schema[vol.Remove(key)] = object
57 schema[vol.Required(key)] = ga_validator
59 schema[vol.Optional(key, default=
None)] = maybe_ga_validator
65 """Add passive group addresses validator to the schema."""
67 schema[vol.Optional(CONF_GA_PASSIVE, default=list)] = vol.Any(
70 vol.IsFalse(), vol.SetTo(list)
74 schema[vol.Remove(CONF_GA_PASSIVE)] = object
76 def _add_dpt(self, schema: dict[vol.Marker, Any]) ->
None:
77 """Add DPT validator to the schema."""
78 if self.
dptdpt
is not None:
79 schema[vol.Required(CONF_DPT)] = vol.In({item.value
for item
in self.
dptdpt})
81 schema[vol.Remove(CONF_DPT)] = object
None __init__(self, bool write=True, bool state=True, bool passive=True, bool write_required=False, bool state_required=False, type[Enum]|None dpt=None)
None _add_dpt(self, dict[vol.Marker, Any] schema)
None _add_passive(self, dict[vol.Marker, Any] schema)
None _add_group_addresses(self, dict[vol.Marker, Any] schema)
Any __call__(self, Any data)
vol.Schema build_schema(self)