90 lines
2.0 KiB
Python
90 lines
2.0 KiB
Python
import logging
|
|
|
|
from homeassistant import config_entries
|
|
|
|
from .mod_view import setup_view
|
|
from .connection import setup_connection
|
|
from .service import setup_service
|
|
from .const import (
|
|
DOMAIN,
|
|
DATA_DEVICES,
|
|
DATA_ALIASES,
|
|
DATA_ADDERS,
|
|
CONFIG_DEVICES,
|
|
DATA_CONFIG,
|
|
DATA_SETUP_COMPLETE,
|
|
)
|
|
|
|
COMPONENTS = [
|
|
"media_player",
|
|
"sensor",
|
|
"binary_sensor",
|
|
"light",
|
|
"camera",
|
|
]
|
|
|
|
_LOGGER = logging.getLogger(__name__)
|
|
|
|
|
|
async def async_setup(hass, config):
|
|
|
|
_LOGGER.error(hass.config_entries)
|
|
|
|
if not hass.config_entries.async_entries(DOMAIN):
|
|
hass.async_create_task(
|
|
hass.config_entries.flow.async_init(
|
|
DOMAIN,
|
|
context={
|
|
"source": config_entries.SOURCE_IMPORT
|
|
},
|
|
data={}
|
|
)
|
|
)
|
|
|
|
aliases = {}
|
|
for d in config[DOMAIN].get(CONFIG_DEVICES, {}):
|
|
name = config[DOMAIN][CONFIG_DEVICES][d].get("name", None)
|
|
if name:
|
|
aliases[name] = d.replace('_', '-')
|
|
|
|
hass.data[DOMAIN] = {
|
|
DATA_DEVICES: {},
|
|
DATA_ALIASES: aliases,
|
|
DATA_ADDERS: {},
|
|
DATA_CONFIG: config[DOMAIN],
|
|
DATA_SETUP_COMPLETE: False,
|
|
}
|
|
|
|
await setup_connection(hass, config)
|
|
setup_view(hass)
|
|
|
|
for component in COMPONENTS:
|
|
hass.async_create_task(
|
|
hass.helpers.discovery.async_load_platform(
|
|
component,
|
|
DOMAIN,
|
|
{},
|
|
config
|
|
)
|
|
)
|
|
|
|
await setup_service(hass)
|
|
|
|
hass.data[DOMAIN][DATA_SETUP_COMPLETE] = True
|
|
|
|
for device in hass.data[DOMAIN][DATA_DEVICES].values():
|
|
device.trigger_update()
|
|
|
|
return True
|
|
|
|
|
|
async def async_setup_entry(hass, config_entry):
|
|
for component in COMPONENTS:
|
|
hass.async_create_task(
|
|
hass.config_entries.async_forward_entry_setup(
|
|
config_entry,
|
|
component
|
|
)
|
|
)
|
|
return True
|