Exemple #1
0
        /// <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);
        }