61 lines
1.7 KiB
Python
61 lines
1.7 KiB
Python
"""This module connects to a Genius hub and shares the data."""
|
|
import logging
|
|
|
|
import voluptuous as vol
|
|
|
|
from homeassistant.const import (
|
|
CONF_HOST, CONF_PASSWORD, CONF_TOKEN, CONF_USERNAME)
|
|
from homeassistant.helpers import config_validation as cv
|
|
from homeassistant.helpers.aiohttp_client import async_get_clientsession
|
|
from homeassistant.helpers.discovery import async_load_platform
|
|
|
|
_LOGGER = logging.getLogger(__name__)
|
|
|
|
DOMAIN = 'geniushub'
|
|
|
|
_V1_API_SCHEMA = vol.Schema({
|
|
vol.Required(CONF_TOKEN): cv.string,
|
|
})
|
|
_V3_API_SCHEMA = vol.Schema({
|
|
vol.Required(CONF_HOST): cv.string,
|
|
vol.Required(CONF_USERNAME): cv.string,
|
|
vol.Required(CONF_PASSWORD): cv.string,
|
|
})
|
|
CONFIG_SCHEMA = vol.Schema({
|
|
DOMAIN: vol.Any(
|
|
_V3_API_SCHEMA,
|
|
_V1_API_SCHEMA,
|
|
)
|
|
}, extra=vol.ALLOW_EXTRA)
|
|
|
|
|
|
async def async_setup(hass, hass_config):
|
|
"""Create a Genius Hub system."""
|
|
from geniushubclient import GeniusHubClient # noqa; pylint: disable=no-name-in-module
|
|
|
|
geniushub_data = hass.data[DOMAIN] = {}
|
|
|
|
kwargs = dict(hass_config[DOMAIN])
|
|
if CONF_HOST in kwargs:
|
|
args = (kwargs.pop(CONF_HOST), )
|
|
else:
|
|
args = (kwargs.pop(CONF_TOKEN), )
|
|
|
|
try:
|
|
client = geniushub_data['client'] = GeniusHubClient(
|
|
*args, **kwargs, session=async_get_clientsession(hass)
|
|
)
|
|
|
|
await client.hub.update()
|
|
|
|
except AssertionError: # assert response.status == HTTP_OK
|
|
_LOGGER.warning(
|
|
"setup(): Failed, check your configuration.",
|
|
exc_info=True)
|
|
return False
|
|
|
|
hass.async_create_task(async_load_platform(
|
|
hass, 'climate', DOMAIN, {}, hass_config))
|
|
|
|
return True
|