Continued advances in technology have led to falling costs and a dramatic increase in the aggregate amount of solar capacity installed across the world. A drawback of increased solar penetration is the potential for supply-demand mismatches in the grid due to the intermittent nature of solar generation. While energy storage can be used to mask such problems, we argue that there is also a need to explicitly control the rate of solar generation of each solar array in order to achieve high penetration while also handling supply-demand mismatches. To address this issue, we present the notion of smart solar arrays that can actively modulate their solar output based on the notion of proportional fairness. We present a decentralized algorithm based on Lagrangian optimization that enables each smart solar array to make local decisions on its fair share of solar power it can inject into the grid and then present a sense-broadcast-respond protocol to implement our decentralized algorithm into smart solar arrays. We also study the benefits of using energy storage when we rate control solar. To do so, we present a decentralized algorithm to charge and discharge batteries for each smart solar. Our evaluation on a city-scale dataset shows that our approach enables 2.6× more solar penetration while causing smart arrays to reduce their output by as little as 12.4%. By employing an adaptive gradient approach, our decentralized algorithm has 3 to 30× faster convergence. Finally, we demonstrate energy storage can help netmeter more solar energy while ensuring fairness and grid constraints are met.