public override async Task <SunriseAndSunset> GetSunriseAndSunset() { if (_sunriseAndSunset == null || (_sunriseAndSunset?.Sunrise.Date < DateTime.Now.Date)) { Uri requestUri = new Uri($"{_baseAuxAppAddress}/suntimes?access_token={_auxAppAccessToken}"); Console.WriteLine($"{DateTime.Now} Hubitat Device Command: {requestUri.ToString().Split('?')[0]}"); using (HttpResponseMessage result = await _client.GetAsync(requestUri)) { result.EnsureSuccessStatusCode(); _sunriseAndSunset = JsonConvert.DeserializeObject <SunriseAndSunset>(await result.Content.ReadAsStringAsync()); } } return(_sunriseAndSunset); }
/// <summary> /// Returns a bool indicating if it's currently dark outside based on sunrise and sunset times. /// </summary> /// <param name="sunriseOffset">Sunrise offset in minutes.</param> /// <param name="sunsetOffset">Sunset offset in minutes.</param> protected async Task <bool> IsDark(int sunriseOffset = 0, int sunsetOffset = 0) { SunriseAndSunset sun = await _hub.GetSunriseAndSunset(); DateTime SunriseWithOffset = sun.Sunrise.AddMinutes(sunriseOffset); DateTime SunsetWithOffset = sun.Sunset.AddMinutes(sunsetOffset); if (DateTime.Now >= SunriseWithOffset && DateTime.Now <= SunsetWithOffset) { return(false); } else { return(true); } }