configuration.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import voluptuous as vol
  2. from homeassistant.const import CONF_NAME, CONF_HOST
  3. from .const import (CONF_DEVICE_ID, CONF_LOCAL_KEY, CONF_TYPE, CONF_TYPE_HEATER,
  4. CONF_TYPE_DEHUMIDIFIER, CONF_TYPE_FAN, CONF_CLIMATE, CONF_DISPLAY_LIGHT, CONF_CHILD_LOCK,
  5. CONF_TYPE_AUTO)
  6. INDIVIDUAL_CONFIG_SCHEMA_TEMPLATE = [
  7. {"key": CONF_NAME, "type": str, "required": True, "option": False},
  8. {"key": CONF_HOST, "type": str, "required": True, "option": True},
  9. {"key": CONF_DEVICE_ID, "type": str, "required": True, "option": False},
  10. {"key": CONF_LOCAL_KEY, "type": str, "required": True, "option": True},
  11. {
  12. "key": CONF_TYPE,
  13. "type": vol.In([CONF_TYPE_AUTO, CONF_TYPE_HEATER, CONF_TYPE_DEHUMIDIFIER, CONF_TYPE_FAN]),
  14. "required": False,
  15. "default": CONF_TYPE_AUTO,
  16. "option": True,
  17. },
  18. {"key": CONF_CLIMATE, "type": bool, "required": False, "default": True, "option": True},
  19. {"key": CONF_DISPLAY_LIGHT, "type": bool, "required": False, "default": False, "option": True},
  20. {"key": CONF_CHILD_LOCK, "type": bool, "required": False, "default": False, "option": True},
  21. ]
  22. def individual_config_schema(defaults={}, options_only=False):
  23. output = {}
  24. for prop in INDIVIDUAL_CONFIG_SCHEMA_TEMPLATE:
  25. if options_only and not prop.get("option"):
  26. continue
  27. options = {}
  28. default = defaults.get(prop["key"], prop.get("default"))
  29. if default is not None:
  30. options["default"] = default
  31. key = (
  32. vol.Required(prop["key"], **options)
  33. if prop["required"]
  34. else vol.Optional(prop["key"], **options)
  35. )
  36. output[key] = prop["type"]
  37. return output