Yep - what Scott said basically.  I run with a formula from here lunaticoastro.com/aagcw/TechInfo/SkyTemperatureModel.pdf and combine that with a RG15 for rain detection - I then combine that into a web server response that matches the weather watcher requirements fo Ekos can pick up the weather from my weatherstation. 

EG: 
float correct_sky_temp(float Ta, float Ts) {
float Tsky = (K1 / 100) * (Ta - K2 / 10) + (K3/100) * pow(exp(K4/1000*Ta),(K5/100));
Tsky = Ts - Tsky;
if(debug_Td) {
              Serial.print("Ts: ");
              Serial.print(Ts);
              Serial.print(" Ta: ");
              Serial.print(Ta);             
              Serial.print(" Corrected: ");
              Serial.println(Tsky);
             }
             
  return Tsky;
}

I just monitor the max/min sky temperature (saved regularly to persist over power cycles / crashes) and then map that to 0-100% cloud cover:

float cloud_cover = (map(sky_temp*100,cloud_min*100,cloud_max*100,0.00,10000)/100);
 

Read More...