Add tradfri device info (#16768)

This commit is contained in:
Paulus Schoutsen 2018-09-21 14:47:52 +02:00 committed by Pascal Vizeli
parent a0a54dfd5b
commit 3e59ffb33a
4 changed files with 39 additions and 5 deletions

View file

@ -13,7 +13,8 @@ from homeassistant.components.light import (
SUPPORT_COLOR, Light)
from homeassistant.components.light import \
PLATFORM_SCHEMA as LIGHT_PLATFORM_SCHEMA
from homeassistant.components.tradfri import KEY_GATEWAY, KEY_API
from homeassistant.components.tradfri import (
KEY_GATEWAY, KEY_API, DOMAIN as TRADFRI_DOMAIN)
from homeassistant.components.tradfri.const import (
CONF_IMPORT_GROUPS, CONF_GATEWAY_ID)
import homeassistant.util.color as color_util
@ -161,6 +162,7 @@ class TradfriLight(Light):
self._hs_color = None
self._features = SUPPORTED_FEATURES
self._available = True
self._gateway_id = gateway_id
self._refresh(light)
@ -169,6 +171,22 @@ class TradfriLight(Light):
"""Return unique ID for light."""
return self._unique_id
@property
def device_info(self):
"""Return the device info."""
info = self._light.device_info
return {
'identifiers': {
(TRADFRI_DOMAIN, self._light.id)
},
'name': self._name,
'manufacturer': info.manufacturer,
'model': info.model_number,
'sw_version': info.firmware_version,
'via_hub': (TRADFRI_DOMAIN, self._gateway_id),
}
@property
def min_mireds(self):
"""Return the coldest color_temp that this light supports."""

View file

@ -11,7 +11,8 @@ from .const import DOMAIN
def initialize(hass, client_id, client_secret):
"""Initialize a local auth provider."""
config_flow.register_flow_implementation(
hass, DOMAIN, 'local', partial(generate_auth_url, client_id),
hass, DOMAIN, 'configuration.yaml',
partial(generate_auth_url, client_id),
partial(resolve_auth_code, hass, client_id, client_secret)
)

View file

@ -12,7 +12,8 @@ from homeassistant import config_entries
import homeassistant.helpers.config_validation as cv
from homeassistant.util.json import load_json
from .const import CONF_IMPORT_GROUPS, CONF_IDENTITY, CONF_HOST, CONF_KEY
from .const import (
CONF_IMPORT_GROUPS, CONF_IDENTITY, CONF_HOST, CONF_KEY, CONF_GATEWAY_ID)
from . import config_flow # noqa pylint_disable=unused-import
@ -84,7 +85,7 @@ async def async_setup_entry(hass, entry):
gateway = Gateway()
try:
await api(gateway.get_gateway_info())
gateway_info = await api(gateway.get_gateway_info())
except RequestError:
_LOGGER.error("Tradfri setup failed.")
return False
@ -92,6 +93,20 @@ async def async_setup_entry(hass, entry):
hass.data.setdefault(KEY_API, {})[entry.entry_id] = api
hass.data.setdefault(KEY_GATEWAY, {})[entry.entry_id] = gateway
dev_reg = await hass.helpers.device_registry.async_get_registry()
dev_reg.async_get_or_create(
config_entry_id=entry.entry_id,
connections=set(),
identifiers={
(DOMAIN, entry.data[CONF_GATEWAY_ID])
},
manufacturer='IKEA',
name='Gateway',
# They just have 1 gateway model. Type is not exposed yet.
model='E1526',
sw_version=gateway_info.firmware_version,
)
hass.async_create_task(hass.config_entries.async_forward_entry_setup(
entry, 'light'
))

View file

@ -322,7 +322,7 @@ def mock_component(hass, component):
def mock_registry(hass, mock_entries=None):
"""Mock the Entity Registry."""
registry = entity_registry.EntityRegistry(hass)
registry.entities = mock_entries or {}
registry.entities = mock_entries or OrderedDict()
async def _get_reg():
return registry