configuration.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. import voluptuous as vol
  2. from homeassistant.const import CONF_HOST, CONF_NAME
  3. from .const import (
  4. CONF_CHILD_LOCK,
  5. CONF_CLIMATE,
  6. CONF_DEVICE_ID,
  7. CONF_DISPLAY_LIGHT,
  8. CONF_LOCAL_KEY,
  9. CONF_SWITCH,
  10. CONF_TYPE,
  11. CONF_TYPE_AUTO,
  12. CONF_TYPE_DEHUMIDIFIER,
  13. CONF_TYPE_EUROM_600_HEATER,
  14. CONF_TYPE_FAN,
  15. CONF_TYPE_GECO_HEATER,
  16. CONF_TYPE_GPCV_HEATER,
  17. CONF_TYPE_GPPH_HEATER,
  18. CONF_TYPE_GSH_HEATER,
  19. CONF_TYPE_GARDENPAC_HEATPUMP,
  20. CONF_TYPE_KOGAN_HEATER,
  21. CONF_TYPE_KOGAN_SWITCH,
  22. CONF_TYPE_PURLINE_M100_HEATER,
  23. )
  24. INDIVIDUAL_CONFIG_SCHEMA_TEMPLATE = [
  25. {"key": CONF_NAME, "type": str, "required": True, "option": False},
  26. {"key": CONF_HOST, "type": str, "required": True, "option": True},
  27. {"key": CONF_DEVICE_ID, "type": str, "required": True, "option": False},
  28. {"key": CONF_LOCAL_KEY, "type": str, "required": True, "option": True},
  29. {
  30. "key": CONF_TYPE,
  31. "type": vol.In(
  32. [
  33. CONF_TYPE_AUTO,
  34. CONF_TYPE_DEHUMIDIFIER,
  35. CONF_TYPE_EUROM_600_HEATER,
  36. CONF_TYPE_FAN,
  37. CONF_TYPE_GECO_HEATER,
  38. CONF_TYPE_GPCV_HEATER,
  39. CONF_TYPE_GPPH_HEATER,
  40. CONF_TYPE_GSH_HEATER,
  41. CONF_TYPE_GARDENPAC_HEATPUMP,
  42. CONF_TYPE_KOGAN_HEATER,
  43. CONF_TYPE_KOGAN_SWITCH,
  44. CONF_TYPE_PURLINE_M100_HEATER,
  45. ]
  46. ),
  47. "required": False,
  48. "default": CONF_TYPE_AUTO,
  49. "option": True,
  50. },
  51. {
  52. "key": CONF_CLIMATE,
  53. "type": bool,
  54. "required": False,
  55. "default": True,
  56. "option": True,
  57. },
  58. {
  59. "key": CONF_DISPLAY_LIGHT,
  60. "type": bool,
  61. "required": False,
  62. "default": False,
  63. "option": True,
  64. },
  65. {
  66. "key": CONF_CHILD_LOCK,
  67. "type": bool,
  68. "required": False,
  69. "default": False,
  70. "option": True,
  71. },
  72. {
  73. "key": CONF_SWITCH,
  74. "type": bool,
  75. "required": False,
  76. "default": False,
  77. "option": True,
  78. },
  79. ]
  80. def individual_config_schema(defaults={}, options_only=False):
  81. output = {}
  82. for prop in INDIVIDUAL_CONFIG_SCHEMA_TEMPLATE:
  83. if options_only and not prop.get("option"):
  84. continue
  85. options = {}
  86. default = defaults.get(prop["key"], prop.get("default"))
  87. if default is not None:
  88. options["default"] = default
  89. key = (
  90. vol.Required(prop["key"], **options)
  91. if prop["required"]
  92. else vol.Optional(prop["key"], **options)
  93. )
  94. output[key] = prop["type"]
  95. return output