Markd,
I was thinking that perhaps an easier way (although not as fancy) would be to use 2-way switches. Although I haven't totally thought this one though, here's how I think it could work - If someone turns on the light late at night, your software would see it because of the 2-way communication of the switches. At that point, your software could send an additional command to adjust the light differently from what the setting physically is on the switch.
I used to do this in my bathroom for late at night so it won't be at full brightness. One issue is that it will go to full brightness first, if you ramp rate is too fast, before the software kicks in and adjusts it.