If your son is as sensitive to smoke as you describe, I suggest you've booked on the wrong cruise line.
There are other lines with much more restrictive smoking policies. Celebrity and Oceania, Regent, come to mind that allow no smoking in passenber cabins nor on balconies.
To avoid the problems, if not too late, I suggest cancelling, and rebooking a line better suited to your situation.