1 """Handle manual setup of ihc resources as entities in Home Assistant."""
5 import voluptuous
as vol
13 CONF_UNIT_OF_MEASUREMENT,
39 _LOGGER = logging.getLogger(__name__)
43 """Validate the device name."""
44 if CONF_NAME
in config:
46 ihcid = config[CONF_ID]
48 config[CONF_NAME] = name
52 DEVICE_SCHEMA = vol.Schema(
54 vol.Required(CONF_ID): cv.positive_int,
55 vol.Optional(CONF_NAME): cv.string,
56 vol.Optional(CONF_NOTE): cv.string,
57 vol.Optional(CONF_POSITION): cv.string,
61 SWITCH_SCHEMA = DEVICE_SCHEMA.extend(
63 vol.Optional(CONF_OFF_ID, default=0): cv.positive_int,
64 vol.Optional(CONF_ON_ID, default=0): cv.positive_int,
68 BINARY_SENSOR_SCHEMA = DEVICE_SCHEMA.extend(
70 vol.Optional(CONF_INVERTING, default=
False): cv.boolean,
71 vol.Optional(CONF_TYPE): DEVICE_CLASSES_SCHEMA,
75 LIGHT_SCHEMA = DEVICE_SCHEMA.extend(
77 vol.Optional(CONF_DIMMABLE, default=
False): cv.boolean,
78 vol.Optional(CONF_OFF_ID, default=0): cv.positive_int,
79 vol.Optional(CONF_ON_ID, default=0): cv.positive_int,
83 SENSOR_SCHEMA = DEVICE_SCHEMA.extend(
84 {vol.Optional(CONF_UNIT_OF_MEASUREMENT): cv.string}
87 IHC_SCHEMA = vol.Schema(
89 vol.Required(CONF_PASSWORD): cv.string,
90 vol.Required(CONF_URL): cv.string,
91 vol.Required(CONF_USERNAME): cv.string,
92 vol.Optional(CONF_AUTOSETUP, default=
True): cv.boolean,
93 vol.Optional(CONF_BINARY_SENSOR, default=[]): vol.All(
94 cv.ensure_list, [vol.All(BINARY_SENSOR_SCHEMA, validate_name)]
96 vol.Optional(CONF_INFO, default=
True): cv.boolean,
97 vol.Optional(CONF_LIGHT, default=[]): vol.All(
98 cv.ensure_list, [vol.All(LIGHT_SCHEMA, validate_name)]
100 vol.Optional(CONF_SENSOR, default=[]): vol.All(
101 cv.ensure_list, [vol.All(SENSOR_SCHEMA, validate_name)]
103 vol.Optional(CONF_SWITCH, default=[]): vol.All(
104 cv.ensure_list, [vol.All(SWITCH_SCHEMA, validate_name)]
113 controller_conf: ConfigType,
116 """Get manual configuration for IHC devices."""
117 for platform
in IHC_PLATFORMS:
119 if platform
in controller_conf:
120 platform_setup = controller_conf.get(platform, {})
121 for sensor_cfg
in platform_setup:
122 name = sensor_cfg[CONF_NAME]
124 "ihc_id": sensor_cfg[CONF_ID],
125 "ctrl_id": controller_id,
128 "note": sensor_cfg.get(CONF_NOTE)
or "",
129 "position": sensor_cfg.get(CONF_POSITION)
or "",
132 "type": sensor_cfg.get(CONF_TYPE),
133 "inverting": sensor_cfg.get(CONF_INVERTING),
134 "off_id": sensor_cfg.get(CONF_OFF_ID),
135 "on_id": sensor_cfg.get(CONF_ON_ID),
136 "dimmable": sensor_cfg.get(CONF_DIMMABLE),
137 "unit_of_measurement": sensor_cfg.get(CONF_UNIT_OF_MEASUREMENT),
140 discovery_info[name] = device
142 discovery.load_platform(hass, platform, DOMAIN, discovery_info, config)
None get_manual_configuration(HomeAssistant hass, ConfigType config, ConfigType controller_conf, str controller_id)
def validate_name(config)