public async Task <string> GetWeather(string location) { var client = new OpenWeatherMap.OpenWeatherMapClient(getWeatherApiAppId()); var weather = await client.CurrentWeather.GetByName(location); return($"City: {weather.City.Name} w/ {weather.Clouds.Value} clouds; last updated {weather.LastUpdate.Value:d}"); }
static async System.Threading.Tasks.Task Main(string[] args) { string choice; var client = new OpenWeatherMap.OpenWeatherMapClient(cnfg.Api_token); Console.WriteLine("City or coords?"); choice = Console.ReadLine(); double[] tmp_arr = new double[3]; int ii; WeatherData response; switch (choice) { case "0": response = cnfg.GetResponse("?q=" + Console.ReadLine()); break; case "1": response = cnfg.GetResponse("?lat=" + cnfg.Shir + "&lon=" + cnfg.Dolg); break; default: response = cnfg.GetResponse("?lat=" + cnfg.Shir + "&lon=" + cnfg.Dolg); for (int i = 3; i < response.List.Length; i += 8) { ii = 0; for (int j = i; i - j < 2; j--, ii++) { tmp_arr[0] = response.List[j].Main["temp"]; tmp_arr[1] = response.List[j - 1].Main["temp_min"]; tmp_arr[2] = response.List[j - 2].Main["temp_max"]; } Console.WriteLine( "Max: {0} kelvin\nAvg: {1} kelvin\n\n", tmp_arr.Max(), Math.Round(tmp_arr.Average(), 2) ); } Console.WriteLine(response.List); break; } Console.ReadKey(); }
private async Task LoadWeather() { IsLoading = true; try { var client = new OpenWeatherMap.OpenWeatherMapClient(); var cityId = SettingsHelper.Settings.CityId.GetValue <double>(); if (cityId == default(double)) { cityId = 2113015;//set Chiba-Japan as default value } Weather = await client.GetWeatherAsync(cityId); } catch (Exception ex) { Debugger.WriteErrorLog("Error occured while loading weather.", ex); await new MessageDialog(ex.Message, "Error occured while loading weather.").ShowAsync(); } IsLoading = false; }
//HERE are my sources for this //https://books.google.com/books?id=_2brYQqb_RYC&pg=PA26&lpg=PA26&dq=average+watts/m%5E2+surface+peak&source=bl&ots=ImzfwuObq1&sig=oWaRpcitRVbF5M0YApRiLwb-qoA&hl=en&sa=X&ved=0ahUKEwi41IKkxLPaAhUBWK0KHXLbB3EQ6AEIiQEwBw#v=onepage&q=average%20watts%2Fm%5E2%20surface%20peak&f=false //https://solarpowerrocks.com/solar-basics/how-do-solar-panels-work-in-cloudy-weather/ /* * Assumptions: * 1kw/m^2 during sunlight * 25% efficiency during cloudy day * 100% efficiency during sunny day * * panel is 15% efficient at converting power * * full power during daylight * * */ public static PowerData MakePredictionAndGetAngles(string weather) { const double wattsPerM2 = 1000; const double coefficientForClouds = 0.25; const double panelAreaInM2 = 0.0687; const double panelEfficiency = 0.15; //Get the minutes of the day that are avaiulable ExcelPackage package = new ExcelPackage(new System.IO.FileInfo("wwwroot/xls/NOAA_Solar_Calculations_day.xlsx")); ExcelWorksheet sheet = package.Workbook.Worksheets[1]; var start = sheet.Dimension.Start; var end = sheet.Dimension.End; //double solarMinutes = Convert.ToDouble(sheet.Cells[27, 2].Text); //DateTime sunrise = Convert.ToDateTime(sheet.Cells[25, 2].Text); //DateTime sunset = Convert.ToDateTime(sheet.Cells[26, 2].Text); double solarMinutes; PowerData data = new PowerData(); //Now get all teh angle data List <DateTime> TimeFractions = new List <DateTime>(); List <double> AngleH = new List <double>(); List <double> AngleA = new List <double>(); //Also get the coordinates var lat = Convert.ToDouble(sheet.Cells[3, 2].Text); var lng = Convert.ToDouble(sheet.Cells[4, 2].Text); int row = start.Row; //Get sunrise and sunset double sunrise = Convert.ToDouble(sheet.Cells[2, 25].Text); double sunset = Convert.ToDouble(sheet.Cells[2, 26].Text); solarMinutes = (sunset - sunrise) * 24 * 60; //Skip headers row++; //Parse rows one by one while (row < end.Row) { if (row < 180 && row > 90) { //Add the thing from this row to each TimeFractions.Add(Convert.ToDateTime(sheet.Cells[row, 5].Text)); AngleH.Add(Convert.ToDouble(sheet.Cells[row, 33].Text)); AngleA.Add(Convert.ToDouble(sheet.Cells[row, 34].Text)); } //increment row row++; } //Closes package package.Dispose(); //Now get the weather OpenWeatherMap.OpenWeatherMapClient client = new OpenWeatherMap.OpenWeatherMapClient("933839ed82ba0ad5f89513a943b6f71c"); OpenWeatherMap.Coordinates coord = new OpenWeatherMap.Coordinates(); coord.Latitude = lat; coord.Longitude = lng; //This is lowkey a little bit dangerous var currentWeather = client.CurrentWeather.GetByCoordinates(coord).Result; double cloudyNess = currentWeather.Clouds.Value; data.City = currentWeather.City.Name; data.UrlForIcon = "http://openweathermap.org/img/w/" + currentWeather.Weather.Icon + ".png"; data.CurrentWeather = currentWeather.Weather.Value; //Make the predictions if (cloudyNess < 50) { data.DailyPower = wattsPerM2 * panelAreaInM2 * panelEfficiency * (solarMinutes / 60.0) * ((100 - cloudyNess) / 100); data.CurrentPower = wattsPerM2 * panelAreaInM2 * panelEfficiency; } else { data.DailyPower = wattsPerM2 * panelAreaInM2 * panelEfficiency * solarMinutes / 60.0; data.CurrentPower = wattsPerM2 * panelAreaInM2 * panelEfficiency; } data.Times = TimeFractions; //Process 3d angles if (cloudyNess < 50) { data.AngleA = AngleA; data.AngleH = AngleH; } else { data.AngleH = new List <double>(); data.AngleA = new List <double>(); foreach (var t in data.Times) { data.AngleA.Add(0); data.AngleH.Add(0); } } data.X = new List <double>(); data.Y = new List <double>(); data.Z = new List <double>(); foreach (var angle in AngleA) { data.X.Add(5 * Math.Sin(angle)); data.Z.Add(5 * Math.Cos(angle)); } foreach (var angle in AngleH) { data.Y.Add(5 * Math.Tan(angle)); } data.countAngs = data.Y.Count; data.HoursOfSun = (int)solarMinutes / 60; return(data); }