   _handleCommandReceived: (cmd) ->
     @log 'verbose', "Received Insteon command for device #{cmd.device_insteon_id}"
     node = @_nodesByHexId[cmd.device_insteon_id]
+    proxyFor = @get('proxyDevices')[node.id]
+    if proxyFor?
+      node = @children.get(proxyFor)
+      if node?
+        @log 'verbose', "...proxied to #{node.id}"
+      else
+        @log 'warn', "Proxy target device #{proxyFor} does not exist!"
     if node?
       @log 'verbose', "Dispatching #{cmd.status} command to node #{node.id}"
       switch cmd.status

        @setValid true
      else
        @discoverDevices()
    @_api.on 'error', =>
      @log 'warn', 'An Insteon error occurred'
    @_api.on 'command', (cmd) => @_handleCommandReceived(cmd)

  discoverDevices: ->

  name: "Insteon"
  defaults:
    initialStatusCheck:   true # Check status on all devices upon connection?
    batchCommandInterval: 2000 # How long to wait between repeated commands (ms)
    proxyDevices:         {}   # Set "deviceId1": "deviceId2" to redirect all
                               # status messages from the key device to the
                               # value device. Also excludes the key device from
                               # bulk status checks. Useful for controllers.

  initialize: ->
    super
