From 71da9d2f50e80da1cc0a9545c6d7a5b815042879 Mon Sep 17 00:00:00 2001 From: Martin Hjelmare Date: Wed, 30 Nov 2016 22:02:18 +0100 Subject: [PATCH] Fix mysensors ir switch overwriting devices (#4612) --- homeassistant/components/switch/mysensors.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/switch/mysensors.py b/homeassistant/components/switch/mysensors.py index d6b348d8274..44bbfcb16d9 100644 --- a/homeassistant/components/switch/mysensors.py +++ b/homeassistant/components/switch/mysensors.py @@ -38,6 +38,8 @@ def setup_platform(hass, config, add_devices, discovery_info=None): if not gateways: return + platform_devices = [] + for gateway in gateways: # Define the S_TYPES and V_TYPES that the platform should handle as # states. Map them in a dict of lists. @@ -88,6 +90,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): devices = {} gateway.platform_callbacks.append(mysensors.pf_callback_factory( map_sv_types, devices, add_devices, device_class_map)) + platform_devices.append(devices) def send_ir_code_service(service): """Set IR code as device state attribute.""" @@ -95,11 +98,13 @@ def setup_platform(hass, config, add_devices, discovery_info=None): ir_code = service.data.get(ATTR_IR_CODE) if entity_ids: - _devices = [device for device in devices.values() + _devices = [device for gw_devs in platform_devices + for device in gw_devs.values() if isinstance(device, MySensorsIRSwitch) and device.entity_id in entity_ids] else: - _devices = [device for device in devices.values() + _devices = [device for gw_devs in platform_devices + for device in gw_devs.values() if isinstance(device, MySensorsIRSwitch)] kwargs = {ATTR_IR_CODE: ir_code}