configuration.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  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. [
  26. CONF_TYPE_AUTO,
  27. CONF_TYPE_HEATER,
  28. CONF_TYPE_DEHUMIDIFIER,
  29. CONF_TYPE_FAN,
  30. CONF_TYPE_GECO_HEATER,
  31. CONF_TYPE_GPCV_HEATER,
  32. ]
  33. ),
  34. "required": False,
  35. "default": CONF_TYPE_AUTO,
  36. "option": True,
  37. },
  38. {
  39. "key": CONF_CLIMATE,
  40. "type": bool,
  41. "required": False,
  42. "default": True,
  43. "option": True,
  44. },
  45. {
  46. "key": CONF_DISPLAY_LIGHT,
  47. "type": bool,
  48. "required": False,
  49. "default": False,
  50. "option": True,
  51. },
  52. {
  53. "key": CONF_CHILD_LOCK,
  54. "type": bool,
  55. "required": False,
  56. "default": False,
  57. "option": True,
  58. },
  59. ]
  60. def individual_config_schema(defaults={}, options_only=False):
  61. output = {}
  62. for prop in INDIVIDUAL_CONFIG_SCHEMA_TEMPLATE:
  63. if options_only and not prop.get("option"):
  64. continue
  65. options = {}
  66. default = defaults.get(prop["key"], prop.get("default"))
  67. if default is not None:
  68. options["default"] = default
  69. key = (
  70. vol.Required(prop["key"], **options)
  71. if prop["required"]
  72. else vol.Optional(prop["key"], **options)
  73. )
  74. output[key] = prop["type"]
  75. return output