1 """The generic_hygrostat component."""
3 import voluptuous
as vol
11 async_remove_stale_devices_links_keep_entity_device,
15 DOMAIN =
"generic_hygrostat"
17 CONF_HUMIDIFIER =
"humidifier"
18 CONF_SENSOR =
"target_sensor"
19 CONF_MIN_HUMIDITY =
"min_humidity"
20 CONF_MAX_HUMIDITY =
"max_humidity"
21 CONF_TARGET_HUMIDITY =
"target_humidity"
22 CONF_DEVICE_CLASS =
"device_class"
23 CONF_MIN_DUR =
"min_cycle_duration"
24 CONF_DRY_TOLERANCE =
"dry_tolerance"
25 CONF_WET_TOLERANCE =
"wet_tolerance"
26 CONF_KEEP_ALIVE =
"keep_alive"
27 CONF_INITIAL_STATE =
"initial_state"
28 CONF_AWAY_HUMIDITY =
"away_humidity"
29 CONF_AWAY_FIXED =
"away_fixed"
30 CONF_STALE_DURATION =
"sensor_stale_duration"
34 DEFAULT_NAME =
"Generic Hygrostat"
36 HYGROSTAT_SCHEMA = vol.Schema(
38 vol.Required(CONF_HUMIDIFIER): cv.entity_id,
39 vol.Required(CONF_SENSOR): cv.entity_id,
40 vol.Optional(CONF_DEVICE_CLASS): vol.In(
41 [HumidifierDeviceClass.HUMIDIFIER, HumidifierDeviceClass.DEHUMIDIFIER]
43 vol.Optional(CONF_MAX_HUMIDITY): vol.Coerce(float),
44 vol.Optional(CONF_MIN_DUR): vol.All(cv.time_period, cv.positive_timedelta),
45 vol.Optional(CONF_MIN_HUMIDITY): vol.Coerce(float),
46 vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
47 vol.Optional(CONF_DRY_TOLERANCE, default=DEFAULT_TOLERANCE): vol.Coerce(float),
48 vol.Optional(CONF_WET_TOLERANCE, default=DEFAULT_TOLERANCE): vol.Coerce(float),
49 vol.Optional(CONF_TARGET_HUMIDITY): vol.Coerce(float),
50 vol.Optional(CONF_KEEP_ALIVE): vol.All(cv.time_period, cv.positive_timedelta),
51 vol.Optional(CONF_INITIAL_STATE): cv.boolean,
52 vol.Optional(CONF_AWAY_HUMIDITY): vol.Coerce(int),
53 vol.Optional(CONF_AWAY_FIXED): cv.boolean,
54 vol.Optional(CONF_STALE_DURATION): vol.All(
55 cv.time_period, cv.positive_timedelta
57 vol.Optional(CONF_UNIQUE_ID): cv.string,
61 CONFIG_SCHEMA = vol.Schema(
62 {DOMAIN: vol.All(cv.ensure_list, [HYGROSTAT_SCHEMA])},
63 extra=vol.ALLOW_EXTRA,
67 async
def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
68 """Set up the Generic Hygrostat component."""
69 if DOMAIN
not in config:
72 for hygrostat_conf
in config[DOMAIN]:
73 hass.async_create_task(
74 discovery.async_load_platform(
75 hass, Platform.HUMIDIFIER, DOMAIN, hygrostat_conf, config
83 """Set up from a config entry."""
88 entry.options[CONF_HUMIDIFIER],
91 await hass.config_entries.async_forward_entry_setups(entry, (Platform.HUMIDIFIER,))
92 entry.async_on_unload(entry.add_update_listener(config_entry_update_listener))
97 """Update listener, called when the config entry options are changed."""
98 await hass.config_entries.async_reload(entry.entry_id)
102 """Unload a config entry."""
103 return await hass.config_entries.async_unload_platforms(
104 entry, (Platform.HUMIDIFIER,)
bool async_setup_entry(HomeAssistant hass, ConfigEntry entry)
bool async_unload_entry(HomeAssistant hass, ConfigEntry entry)
None config_entry_update_listener(HomeAssistant hass, ConfigEntry entry)
bool async_setup(HomeAssistant hass, ConfigType config)
None async_remove_stale_devices_links_keep_entity_device(HomeAssistant hass, str entry_id, str source_entity_id_or_uuid)