getopts only accepts one argument per option. How about passing both arguments to -A inside quotes, and separating them later inside your case statement?
A)
let "A_count += 1"
bulbIndex=${OPTARG% O*}
bulbstate=${OPTARG#* }
printf "Set %s state on %s bulb\n" $bulbstate $bulbIndex
;;
Then calling using:
$ ./sample.bash -t 192.168.0.1 -r 192.169.0.33 -A "3 OFF"
Gives:
192.168.0.1
192.169.0.33
Set OFF state on 3 bulb
If you can't use the quotes, then if you can make sure that -A is the last option used, then you can use the OPTARG to get the number, then simply get the final argument separately.
A)
let "A_count += 1"
bulbIndex="${OPTARG}"
bulbstate=${@: -1}
printf "Set %s state on %s bulb\n" $bulbstate $bulbIndex
;;