Execute a single command, and sets sleep times properly.

        - controller_id = index of controller, zero-based
        - command is normal LedController command as a string
        - *args and **kwargs are passed to command

        For example, .execute(0, "on", 1) sends "on" command to group 1 on controller 0 (first IP passed to constructor).

def execute(self, controller_id, command, *args, **kwargs):
        """
        Execute a single command, and sets sleep times properly.

        - controller_id = index of controller, zero-based
        - command is normal LedController command as a string
        - *args and **kwargs are passed to command

        For example, .execute(0, "on", 1) sends "on" command to group 1 on controller 0 (first IP passed to constructor).
        """
        controller_instance = self.controllers[controller_id]
        controller_instance.last_command_at = self.last_command_at
        ret_val = getattr(controller_instance, command)(*args, **kwargs)
        self.last_command_at = controller_instance.last_command_at
        return ret_val