Xiaomi MiIO Remote: Lazy discover disabled (#12710)

* Lazy discovery disabled: The Chuang Mi IR Remote Controller wants to be re-discovered every 5 minutes. As long as polling is disabled the device should be re-discovered in front of every command.

* Use a unique data key per domain.

* Named argument used and comment added.
This commit is contained in:
Sebastian Muszynski 2018-03-05 07:06:00 +01:00 committed by Teemu R
parent 259121c7a7
commit b0e062b2f8

View File

@ -26,7 +26,7 @@ REQUIREMENTS = ['python-miio==0.3.7']
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
SERVICE_LEARN = 'xiaomi_miio_learn_command' SERVICE_LEARN = 'xiaomi_miio_learn_command'
PLATFORM = 'xiaomi_miio' DATA_KEY = 'remote.xiaomi_miio'
CONF_SLOT = 'slot' CONF_SLOT = 'slot'
CONF_COMMANDS = 'commands' CONF_COMMANDS = 'commands'
@ -70,7 +70,11 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None):
# Create handler # Create handler
_LOGGER.info("Initializing with host %s (token %s...)", host, token[:5]) _LOGGER.info("Initializing with host %s (token %s...)", host, token[:5])
device = ChuangmiIr(host, token)
# The Chuang Mi IR Remote Controller wants to be re-discovered every
# 5 minutes. As long as polling is disabled the device should be
# re-discovered (lazy_discover=False) in front of every command.
device = ChuangmiIr(host, token, lazy_discover=False)
# Check that we can communicate with device. # Check that we can communicate with device.
try: try:
@ -79,8 +83,8 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None):
_LOGGER.error("Token not accepted by device : %s", ex) _LOGGER.error("Token not accepted by device : %s", ex)
return return
if PLATFORM not in hass.data: if DATA_KEY not in hass.data:
hass.data[PLATFORM] = {} hass.data[DATA_KEY] = {}
friendly_name = config.get(CONF_NAME, "xiaomi_miio_" + friendly_name = config.get(CONF_NAME, "xiaomi_miio_" +
host.replace('.', '_')) host.replace('.', '_'))
@ -93,7 +97,7 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None):
friendly_name, device, slot, timeout, friendly_name, device, slot, timeout,
hidden, config.get(CONF_COMMANDS)) hidden, config.get(CONF_COMMANDS))
hass.data[PLATFORM][host] = xiaomi_miio_remote hass.data[DATA_KEY][host] = xiaomi_miio_remote
async_add_devices([xiaomi_miio_remote]) async_add_devices([xiaomi_miio_remote])
@ -106,7 +110,7 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None):
entity_id = service.data.get(ATTR_ENTITY_ID) entity_id = service.data.get(ATTR_ENTITY_ID)
entity = None entity = None
for remote in hass.data[PLATFORM].values(): for remote in hass.data[DATA_KEY].values():
if remote.entity_id == entity_id: if remote.entity_id == entity_id:
entity = remote entity = remote