1 """Schemas used by insteon component."""
3 from __future__
import annotations
5 from pyinsteon.constants
import HC_LOOKUP
6 import voluptuous
as vol
40 ADD_ALL_LINK_SCHEMA = vol.Schema(
42 vol.Required(SRV_ALL_LINK_GROUP): vol.Range(min=0, max=255),
43 vol.Required(SRV_ALL_LINK_MODE): vol.In([SRV_CONTROLLER, SRV_RESPONDER]),
48 DEL_ALL_LINK_SCHEMA = vol.Schema(
49 {vol.Required(SRV_ALL_LINK_GROUP): vol.Range(min=0, max=255)}
53 LOAD_ALDB_SCHEMA = vol.Schema(
55 vol.Required(CONF_ENTITY_ID): vol.Any(cv.entity_id, ENTITY_MATCH_ALL),
56 vol.Optional(SRV_LOAD_DB_RELOAD, default=
False): cv.boolean,
61 PRINT_ALDB_SCHEMA = vol.Schema({vol.Required(CONF_ENTITY_ID): cv.entity_id})
64 X10_HOUSECODE_SCHEMA = vol.Schema({vol.Required(SRV_HOUSECODE): vol.In(HOUSECODES)})
67 TRIGGER_SCENE_SCHEMA = vol.Schema(
68 {vol.Required(SRV_ALL_LINK_GROUP): vol.Range(min=0, max=255)}
72 ADD_DEFAULT_LINKS_SCHEMA = vol.Schema({vol.Required(CONF_ENTITY_ID): cv.entity_id})
76 address=vol.UNDEFINED,
79 firmware=vol.UNDEFINED,
81 """Build the device override schema for config flow."""
84 vol.Required(CONF_ADDRESS, default=address): str,
85 vol.Optional(CONF_CAT, default=cat): str,
86 vol.Optional(CONF_SUBCAT, default=subcat): str,
92 housecode=vol.UNDEFINED,
93 unitcode=vol.UNDEFINED,
94 platform=vol.UNDEFINED,
97 """Build the X10 schema for config flow."""
98 if platform ==
"light":
99 dim_steps_schema = vol.Required(CONF_DIM_STEPS, default=dim_steps)
101 dim_steps_schema = vol.Optional(CONF_DIM_STEPS, default=dim_steps)
104 vol.Required(CONF_HOUSECODE, default=housecode): vol.In(HC_LOOKUP.keys()),
105 vol.Required(CONF_UNITCODE, default=unitcode): vol.In(range(1, 17)),
106 vol.Required(CONF_PLATFORM, default=platform): vol.In(X10_PLATFORMS),
107 dim_steps_schema: vol.Range(min=0, max=255),
113 """Return the most likely USB port for a PLM."""
114 test_strings = [
"FTDI",
"0403:6001",
"10BF:"]
115 for port, name
in ports.items():
116 for test_string
in test_strings:
117 if test_string
in name:
123 """Build the PLM schema for config flow."""
124 if not device
or device == vol.UNDEFINED:
126 return vol.Schema({vol.Required(CONF_DEVICE, default=device): vol.In(ports)})
130 """Build the manual PLM schema for config flow."""
131 return vol.Schema({vol.Required(CONF_DEVICE, default=device): str})
138 username=vol.UNDEFINED,
139 password=vol.UNDEFINED,
141 """Build the Hub schema for config flow."""
142 if port == vol.UNDEFINED:
143 port = PORT_HUB_V2
if hub_version == 2
else PORT_HUB_V1
145 vol.Required(CONF_HOST, default=host): str,
146 vol.Required(CONF_PORT, default=port): int,
147 vol.Required(CONF_HUB_VERSION, default=hub_version): int,
150 schema[vol.Required(CONF_USERNAME, default=username)] = str
151 schema[vol.Required(CONF_PASSWORD, default=password)] = str
152 return vol.Schema(schema)
def build_hub_schema(hub_version, host=vol.UNDEFINED, port=vol.UNDEFINED, username=vol.UNDEFINED, password=vol.UNDEFINED)
def build_plm_manual_schema(device=vol.UNDEFINED)
def build_device_override_schema(address=vol.UNDEFINED, cat=vol.UNDEFINED, subcat=vol.UNDEFINED, firmware=vol.UNDEFINED)
def build_plm_schema(dict[str, str] ports, device=vol.UNDEFINED)
def build_x10_schema(housecode=vol.UNDEFINED, unitcode=vol.UNDEFINED, platform=vol.UNDEFINED, dim_steps=22)
def _find_likely_port(ports)