diff --git a/components/hue/__init__.py b/components/hue/__init__.py
index ac17e6e..0646d20 100644
--- a/components/hue/__init__.py
+++ b/components/hue/__init__.py
@@ -1,6 +1,7 @@
 """Support for the Philips Hue system."""
 import ipaddress
 import logging
+import asyncio
 
 import voluptuous as vol
 
@@ -10,7 +11,8 @@ from homeassistant.helpers import (
     config_validation as cv, device_registry as dr)
 
 from .const import DOMAIN
-from .bridge import HueBridge
+from .bridge import (HueBridge, SERVICE_HUE_SCENE,
+                     SCENE_SCHEMA, ATTR_GROUP_NAME, ATTR_SCENE_NAME)
 # Loading the config flow file will register the flow
 from .config_flow import configured_hosts
 
@@ -49,6 +51,30 @@ CONFIG_SCHEMA = vol.Schema({
 
 async def async_setup(hass, config):
     """Set up the Hue platform."""
+    async def hue_activate_scene(call, skip_reload=True):
+        """Handle activation of Hue scene."""
+        # Get parameters
+        group_name = call.data[ATTR_GROUP_NAME]
+        scene_name = call.data[ATTR_SCENE_NAME]
+
+        # Call the set scene function on each bridge
+        tasks = [bridge.hue_activate_scene(call,
+                                           updated=skip_reload,
+                                           hide_warnings=skip_reload)
+                 for bridge in hass.data[DOMAIN].values()
+                 if isinstance(bridge, HueBridge)]
+        results = await asyncio.gather(*tasks)
+
+        # Did *any* bridge succeed? If not, refresh / retry
+        # Note that we'll get a "None" value for a successful call
+        if None not in results:
+            if skip_reload:
+                return await hue_activate_scene(call,
+                                                skip_reload=False)
+            _LOGGER.warning("No bridge was able to activate "
+                            "scene %s in group %s", scene_name, group_name)
+
+    # Set up the Hue platform.
     conf = config.get(DOMAIN)
     if conf is None:
         conf = {}
@@ -57,6 +83,11 @@ async def async_setup(hass, config):
     hass.data[DATA_CONFIGS] = {}
     configured = configured_hosts(hass)
 
+    # Register a local handler for scene activation
+    hass.services.async_register(
+        DOMAIN, SERVICE_HUE_SCENE, hue_activate_scene,
+        schema=SCENE_SCHEMA)
+
     # User has configured bridges
     if CONF_BRIDGES not in conf:
         return True
@@ -136,4 +167,5 @@ async def async_setup_entry(hass, entry):
 async def async_unload_entry(hass, entry):
     """Unload a config entry."""
     bridge = hass.data[DOMAIN].pop(entry.data['host'])
+    hass.services.async_remove(DOMAIN, SERVICE_HUE_SCENE)
     return await bridge.async_reset()
diff --git a/components/hue/__pycache__/__init__.cpython-36.pyc b/components/hue/__pycache__/__init__.cpython-36.pyc
index 797d11a..3586289 100644
Binary files a/components/hue/__pycache__/__init__.cpython-36.pyc and b/components/hue/__pycache__/__init__.cpython-36.pyc differ
diff --git a/components/hue/__pycache__/bridge.cpython-36.pyc b/components/hue/__pycache__/bridge.cpython-36.pyc
index 45e11aa..fc7bbe3 100644
Binary files a/components/hue/__pycache__/bridge.cpython-36.pyc and b/components/hue/__pycache__/bridge.cpython-36.pyc differ
diff --git a/components/hue/bridge.py b/components/hue/bridge.py
index 6fa6bad..199217a 100644
--- a/components/hue/bridge.py
+++ b/components/hue/bridge.py
@@ -75,10 +75,6 @@ class HueBridge:
         hass.async_create_task(hass.config_entries.async_forward_entry_setup(
             self.config_entry, 'sensor'))
 
-        hass.services.async_register(
-            DOMAIN, SERVICE_HUE_SCENE, self.hue_activate_scene,
-            schema=SCENE_SCHEMA)
-
         return True
 
     async def async_reset(self):
@@ -95,7 +91,7 @@ class HueBridge:
         if self.api is None:
             return True
 
-        self.hass.services.async_remove(DOMAIN, SERVICE_HUE_SCENE)
+        #self.hass.services.async_remove(DOMAIN, SERVICE_HUE_SCENE)
 
         # If setup was successful, we set api variable, forwarded entry and
         # register service
@@ -110,11 +106,14 @@ class HueBridge:
         # None and True are OK
         return False not in results
 
-    async def hue_activate_scene(self, call, updated=False):
+    #async def hue_activate_scene(self, call, updated=False):
+    async def hue_activate_scene(self, call, updated=False,
+                                 hide_warnings=False):
         """Service to call directly into bridge to set scenes."""
         group_name = call.data[ATTR_GROUP_NAME]
         scene_name = call.data[ATTR_SCENE_NAME]
-
+        LOGGER.warning('SEBAS activating scene %s'
+                        ' on group %s', scene_name, group_name)
         group = next(
             (group for group in self.api.groups.values()
              if group.name == group_name), None)
@@ -131,18 +130,21 @@ class HueBridge:
         if not updated and (group is None or scene is None):
             await self.api.groups.update()
             await self.api.scenes.update()
-            await self.hue_activate_scene(call, updated=True)
-            return
+            return await self.hue_activate_scene(call, updated=True)
 
         if group is None:
-            LOGGER.warning('Unable to find group %s', group_name)
-            return
+            if not hide_warnings:
+                LOGGER.warning('Unable to find group %s'
+                               ' on bridge %s', group_name, self.host)
+            return False
 
         if scene is None:
-            LOGGER.warning('Unable to find scene %s', scene_name)
-            return
+            if not hide_warnings:
+                LOGGER.warning('Unable to find scene %s'
+                               ' on bridge %s', scene_name, self.host)
+            return False
 
-        await group.set_action(scene=scene.id)
+        return await group.set_action(scene=scene.id)
 
 
 async def get_bridge(hass, host, username=None):
