Fix possible KeyError (#9242)

* Multiple devices per child per platform would lead to KeyError.
This commit is contained in:
Martin Hjelmare 2017-08-31 21:00:09 +02:00 committed by GitHub
parent acb6b7c68d
commit 274e4449ea

View File

@ -485,12 +485,14 @@ def gw_callback_factory(hass):
validated = validate_child(msg.gateway, msg.node_id, child) validated = validate_child(msg.gateway, msg.node_id, child)
for platform, dev_ids in validated.items(): for platform, dev_ids in validated.items():
devices = get_mysensors_devices(hass, platform) devices = get_mysensors_devices(hass, platform)
for idx, dev_id in enumerate(list(dev_ids)): new_dev_ids = []
for dev_id in dev_ids:
if dev_id in devices: if dev_id in devices:
dev_ids.pop(idx)
signals.append(SIGNAL_CALLBACK.format(*dev_id)) signals.append(SIGNAL_CALLBACK.format(*dev_id))
if dev_ids: else:
discover_mysensors_platform(hass, platform, dev_ids) new_dev_ids.append(dev_id)
if new_dev_ids:
discover_mysensors_platform(hass, platform, new_dev_ids)
for signal in set(signals): for signal in set(signals):
# Only one signal per device is needed. # Only one signal per device is needed.
# A device can have multiple platforms, ie multiple schemas. # A device can have multiple platforms, ie multiple schemas.