Home Assistant Unofficial Reference 2024.12.1
__init__.py
Go to the documentation of this file.
1 """Support for the EZcontrol XS1 gateway."""
2 
3 import logging
4 
5 import voluptuous as vol
6 import xs1_api_client
7 
8 from homeassistant.const import (
9  CONF_HOST,
10  CONF_PASSWORD,
11  CONF_PORT,
12  CONF_SSL,
13  CONF_USERNAME,
14  Platform,
15 )
16 from homeassistant.core import HomeAssistant
17 from homeassistant.helpers import discovery
19 from homeassistant.helpers.typing import ConfigType
20 
21 _LOGGER = logging.getLogger(__name__)
22 
23 DOMAIN = "xs1"
24 ACTUATORS = "actuators"
25 SENSORS = "sensors"
26 
27 # define configuration parameters
28 CONFIG_SCHEMA = vol.Schema(
29  {
30  DOMAIN: vol.Schema(
31  {
32  vol.Required(CONF_HOST): cv.string,
33  vol.Optional(CONF_PASSWORD): cv.string,
34  vol.Optional(CONF_PORT, default=80): cv.string,
35  vol.Optional(CONF_SSL, default=False): cv.boolean,
36  vol.Optional(CONF_USERNAME): cv.string,
37  }
38  )
39  },
40  extra=vol.ALLOW_EXTRA,
41 )
42 
43 PLATFORMS = [Platform.CLIMATE, Platform.SENSOR, Platform.SWITCH]
44 
45 
46 def setup(hass: HomeAssistant, config: ConfigType) -> bool:
47  """Set up XS1 integration."""
48  _LOGGER.debug("Initializing XS1")
49 
50  host = config[DOMAIN][CONF_HOST]
51  port = config[DOMAIN][CONF_PORT]
52  ssl = config[DOMAIN][CONF_SSL]
53  user = config[DOMAIN].get(CONF_USERNAME)
54  password = config[DOMAIN].get(CONF_PASSWORD)
55 
56  # initialize XS1 API
57  try:
58  xs1 = xs1_api_client.XS1(
59  host=host, port=port, ssl=ssl, user=user, password=password
60  )
61  except ConnectionError as error:
62  _LOGGER.error(
63  "Failed to create XS1 API client because of a connection error: %s",
64  error,
65  )
66  return False
67 
68  _LOGGER.debug("Establishing connection to XS1 gateway and retrieving data")
69 
70  hass.data[DOMAIN] = {}
71 
72  actuators = xs1.get_all_actuators(enabled=True)
73  sensors = xs1.get_all_sensors(enabled=True)
74 
75  hass.data[DOMAIN][ACTUATORS] = actuators
76  hass.data[DOMAIN][SENSORS] = sensors
77 
78  _LOGGER.debug("Loading platforms for XS1 integration")
79  # Load platforms for supported devices
80  for platform in PLATFORMS:
81  discovery.load_platform(hass, platform, DOMAIN, {}, config)
82 
83  return True
web.Response get(self, web.Request request, str config_key)
Definition: view.py:88
bool setup(HomeAssistant hass, ConfigType config)
Definition: __init__.py:46