/// <inheritdoc /> public async Task <SolarInfo> GetSolarInfoAsync(GeoInfo geoInfo) { var lat = geoInfo.Latitude.ToString(CultureInfo.InvariantCulture); var lng = geoInfo.Longitude.ToString(CultureInfo.InvariantCulture); var response = await _httpService.GetStringAsync($"https://api.sunrise-sunset.org/json?lat={lat}&lng={lng}&formatted=0"); if (response.IsBlank()) { return(null); } try { // Parse var parsed = JToken.Parse(response); // Extract data var sunrise = parsed["results"]["sunrise"].Value <DateTime>(); var sunset = parsed["results"]["sunset"].Value <DateTime>(); // Populate var result = new SolarInfo(sunrise.TimeOfDay, sunset.TimeOfDay); return(result); } catch { Debug.WriteLine("Could not deserialize solar info", GetType().Name); return(null); } }
public bool SetDimLevelIfDark(int dimLevel) { string[] coords = LocalSettings.HomeCoordinates.Split(','); SolarInfo si = SolarInfo.ForDate(double.Parse(coords[0]), double.Parse(coords[1]), DateTime.Now); if (si.Sunset <= DateTime.Now || si.Sunrise >= DateTime.Now) { return(SetDimLevel(dimLevel)); } return(false); }