@@ -233,13 +233,14 @@ SensorData calcSunsetSunrise(double time, double date, double latitude, double l
233233 int intminSR = 0 ;
234234 int inthrSS = 0 ;
235235 int intminSS = 0 ;
236+ bool sunDown = true ;
236237
237- // Calculate local time
238- time_t t = (date * secPerYear) + (time + int (timezone * secPerHour));
239238
240- // api->getLogger()->logDebug(GwLog::DEBUG,"... PageClock : Lat %f, Lon %f, at: %d, next SR: %d (%s), next SS: %d (%s)", latitude, longitude, t, sunR, sSunR, sunS, sSunS);
239+ // api->getLogger()->logDebug(GwLog::DEBUG,"... calcSun : Lat %f, Lon %f, at: %d, next SR: %d (%s), next SS: %d (%s)", latitude, longitude, t, sunR, sSunR, sunS, sSunS);
241240
242- if (!isnan (time) && !isnan (date) && !isnan (latitude) && !isnan (longitude) && !isnan (timezone)) {
241+ if (!isnan (time) && !isnan (date) && !isnan (latitude) && !isnan (longitude) && !isnan (timezone)) {
242+ // Calculate local time
243+ time_t t = (date * secPerYear) + (time + int (timezone * secPerHour));
243244 sr.calculate (latitude, longitude, t); // LAT, LON, EPOCH
244245 // Sunrise
245246 if (sr.hasRise ) {
@@ -253,48 +254,20 @@ SensorData calcSunsetSunrise(double time, double date, double latitude, double l
253254 inthrSS = int (sunS / secPerHour);
254255 intminSS = int ((sunS - inthrSS * secPerHour)/60 );
255256 }
257+ // Sun control (return value by sun on sky = false, sun down = true)
258+ if ((t >= (sr.riseTime + int (timezone * secPerHour))) && (t <= (sr.setTime + int (timezone * secPerHour))))
259+ sunDown = false ;
260+ else sunDown = true ;
256261 }
257262 // Return values
258263 returnset.sunsetHour = inthrSS;
259264 returnset.sunsetMinute = intminSS;
260265 returnset.sunriseHour = inthrSR;
261266 returnset.sunriseMinute = intminSR;
267+ returnset.sunDown = sunDown;
262268
263- // api->getLogger()->logDebug(GwLog::DEBUG,"... PageClock : at t: %d, hasRise: %d, next SR: %d '%s', hasSet: %d, next SS: %d '%s'\n", t, sr.hasRise, sr.riseTime, sSunR, sr.hasSet, sr.setTime, sSunS);
269+ // api->getLogger()->logDebug(GwLog::DEBUG,"... calcSun : at t: %d, hasRise: %d, next SR: %d '%s', hasSet: %d, next SS: %d '%s'\n", t, sr.hasRise, sr.riseTime, sSunR, sr.hasSet, sr.setTime, sSunS);
264270 return returnset;
265271}
266272
267- // Sun control (return valu by sun on sky = false, sun down = true)
268- bool sunControl (double time, double date, double latitude, double longitude, double timezone){
269- SunRise sr;
270- int secPerHour = 3600 ;
271- int secPerYear = 86400 ;
272- sr.hasRise = false ;
273- sr.hasSet = false ;
274- time_t sunR = 0 ;
275- time_t sunS = 0 ;
276-
277- // Calculate local time
278- time_t t = (date * secPerYear) + (time + int (timezone * secPerHour));
279-
280- if (!isnan (time) && !isnan (date) && !isnan (latitude) && !isnan (longitude) && !isnan (timezone)) {
281- sr.calculate (latitude, longitude, t); // LAT, LON, EPOCH
282- // Sunrise
283- if (sr.hasRise ) {
284- sunR = (sr.riseTime + int (timezone * secPerHour) + 30 ); // add 30 seconds: round to minutes
285- }
286- // Sunset
287- if (sr.hasSet ) {
288- sunS = (sr.setTime + int (timezone * secPerHour) + 30 ); // add 30 seconds: round to minutes
289- }
290- }
291- // Return values (sun on sky = false, sun down = true)
292- if (t > sunR && t < sunS){
293- return false ;
294- }
295- else {
296- return true ;
297- }
298- }
299-
300273#endif
0 commit comments