configuration.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import voluptuous as vol
  2. from homeassistant.const import CONF_NAME, CONF_HOST
  3. from .const import (
  4. CONF_DEVICE_ID,
  5. CONF_LOCAL_KEY,
  6. CONF_TYPE,
  7. CONF_TYPE_HEATER,
  8. CONF_TYPE_DEHUMIDIFIER,
  9. CONF_TYPE_FAN,
  10. CONF_TYPE_GECO_HEATER,
  11. CONF_TYPE_GPCV_HEATER,
  12. CONF_CLIMATE,
  13. CONF_DISPLAY_LIGHT,
  14. CONF_CHILD_LOCK,
  15. CONF_TYPE_AUTO,
  16. )
  17. INDIVIDUAL_CONFIG_SCHEMA_TEMPLATE = [
  18. {"key": CONF_NAME, "type": str, "required": True, "option": False},
  19. {"key": CONF_HOST, "type": str, "required": True, "option": True},
  20. {"key": CONF_DEVICE_ID, "type": str, "required": True, "option": False},
  21. {"key": CONF_LOCAL_KEY, "type": str, "required": True, "option": True},
  22. {
  23. "key": CONF_TYPE,
  24. "type": vol.In(
  25. [CONF_TYPE_AUTO, CONF_TYPE_HEATER, CONF_TYPE_DEHUMIDIFIER, CONF_TYPE_FAN, CONF_TYPE_GECO_HEATER, CONF_TYPE_GPCV_HEATER]
  26. ),
  27. "required": False,
  28. "default": CONF_TYPE_AUTO,
  29. "option": True,
  30. },
  31. {
  32. "key": CONF_CLIMATE,
  33. "type": bool,
  34. "required": False,
  35. "default": True,
  36. "option": True,
  37. },
  38. {
  39. "key": CONF_DISPLAY_LIGHT,
  40. "type": bool,
  41. "required": False,
  42. "default": False,
  43. "option": True,
  44. },
  45. {
  46. "key": CONF_CHILD_LOCK,
  47. "type": bool,
  48. "required": False,
  49. "default": False,
  50. "option": True,
  51. },
  52. ]
  53. def individual_config_schema(defaults={}, options_only=False):
  54. output = {}
  55. for prop in INDIVIDUAL_CONFIG_SCHEMA_TEMPLATE:
  56. if options_only and not prop.get("option"):
  57. continue
  58. options = {}
  59. default = defaults.get(prop["key"], prop.get("default"))
  60. if default is not None:
  61. options["default"] = default
  62. key = (
  63. vol.Required(prop["key"], **options)
  64. if prop["required"]
  65. else vol.Optional(prop["key"], **options)
  66. )
  67. output[key] = prop["type"]
  68. return output