core/homeassistant/components/tibber/__init__.py

56 lines
1.5 KiB
Python
Raw Normal View History

"""
Support for Tibber.
For more details about this platform, please refer to the documentation at
https://home-assistant.io/components/tibber/
"""
import asyncio
import logging
import aiohttp
import voluptuous as vol
import homeassistant.helpers.config_validation as cv
from homeassistant.const import (EVENT_HOMEASSISTANT_STOP, CONF_ACCESS_TOKEN,
CONF_NAME)
from homeassistant.helpers import discovery
from homeassistant.helpers.aiohttp_client import async_get_clientsession
REQUIREMENTS = ['pyTibber==0.7.2']
DOMAIN = 'tibber'
CONFIG_SCHEMA = vol.Schema({
DOMAIN: vol.Schema({
vol.Required(CONF_ACCESS_TOKEN): cv.string,
})
}, extra=vol.ALLOW_EXTRA)
_LOGGER = logging.getLogger(__name__)
async def async_setup(hass, config):
"""Set up the Tibber component."""
conf = config.get(DOMAIN)
import tibber
tibber_connection = tibber.Tibber(conf[CONF_ACCESS_TOKEN],
websession=async_get_clientsession(hass))
hass.data[DOMAIN] = tibber_connection
async def _close(event):
await tibber_connection.rt_disconnect()
hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STOP, _close)
try:
await tibber_connection.update_info()
except (asyncio.TimeoutError, aiohttp.ClientError):
return False
for component in ['sensor', 'notify']:
discovery.load_platform(hass, component, DOMAIN,
{CONF_NAME: DOMAIN}, config)
return True