I wrote an automation (well it is a custom app now, but it used to run in Webcore just fine), that uses an indoor light sensor and a virtual dimmer to set a light level for the room scenes.
Basically, each scene has a light level as part of it, which changes the virtual dimmer level setting for the scene. The level dimmer is simply the setpoint for the room light level for a scene. Every time the light sensor changes, it causes the automation to calculates what the levels for the lights should be to hit that target, then it does a checkback to see if it hit target. If not, it does small adjustments to levels and checks back until it hits the target. I make an initial change in level that is bigger if the light level is far from target, and smaller if closer to target. It gets it close, then the governor takes care of the fine adjustments to get to target. If I turn off the virtual dimmer, it deactivates auto light levels from calculating.
I didn't want all my lights to be same level, so it calculates a low, medium, and high level and saves those values to a data driver (but those attributes could just be hub variables). Then in my scenes, I use those variables as the levels, either low, medium, or high. The values change together when adjusted. High level is calculated, then medium is 60% and low is 40% of the high light level value.
The result is that with the morning and evening scenes, it reacts to the changes as the sun sets or rises. It will bring up the lights as it gets darker, and push them down as it gets lighter in the morning. My day scene sometimes brings the lights up a bit if it very cloudy or raining. It is gradual so I never notice any lights dimming. After dark, it just keeps the lights at the level I want for the scene, which usually maxes out to the highest settings. I can also change the virtual dimmer on a dashboard, which will change the light level of the room on demand for any scene, and the lights all keep their relative brightness, to keep the ambiance of some lights being dimmer than others.
In this case, I want the light sensor to pick up that the lamps are changing the inside light level, as that is what I govern to. However, not all light sensors act the same. I have found the Fibaro ZWave multi-sensor reacts to very small changes in ambient light. Others do not seem to change much at all and could not be used for this.
My app is very specific to my use case, so things are hard-coded into it based on my house. I didn't make it to be a generic app anyone can use, but with a bit of tinkering in the Groovy code it could be used by anyone. I can post the code if anyone has an interest in playing with it.