configuration.py 1.8 KB

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