configuration.py 3.0 KB

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