public void timerWindFinder_Tick(object sender, EventArgs e)
{
int sensor_num;
sensor_num = AppContext.PersistentState.StationSensorIndexWF;
string str_not_corr_sensor = "Not correct sensor selected!";
try
{
ISensor[] sensors = _deviceConnection.ToArray();
if (sensors[sensor_num].IsValid)
{
if (labelControlWindFinder.Text == str_not_corr_sensor)
{
//labelControlWindFinder.Text = "Correct sensor selected";
labelControlWindFinder.SetPropertyThreadSafe(() => labelControlWindFinder.Text, "Correct sensor selected");
}
}
else
{
// CancelWindFinder("Not correct sensor selected!");
labelControlWindFinder.SetPropertyThreadSafe(() => labelControlWindFinder.Text, str_not_corr_sensor);
return;
}
pom_inverval++;
if (pom_inverval < AppContext.PersistentState.StationIntervalWF * 6) return;
pom_inverval = 0;
var reading = sensors[sensor_num].GetCurrentReading();
// Log.DebugFormat("readed from sensor: " + reading.ToString() );
// System.Diagnostics.Debug.WriteLine("readed from sensor: " + reading.Humidity.ToString() + " " + reading.Temperature.ToString() +
// " " + reading.Pressure.ToString() + " " + reading.TimeStamp.ToString() + " " + reading.WindDirection.ToString() + " " + reading.WindSpeed.ToString());
Dictionary<string, string> queryParams = new Dictionary<string, string>();
queryParams.Add("sender_id", AppContext.PersistentState.StationNameWF);
queryParams.Add("password", AppContext.PersistentState.StationPasswordWF);
DateTime utcStamp = reading.TimeStamp.ToUniversalTime();
//queryParams.Add("date", utcStamp.ToString("yyyy-MM-dd hh:mm:ss"));
queryParams.Add("date", utcStamp.ToString("dd.MM.yyyy"));
queryParams.Add("time", utcStamp.ToString("hh:mm"));
if (reading.IsTemperatureValid)
{
var tempConverter = ReadingValuesConverterCache<Reading>.TemperatureCache
.Get(sensors[sensor_num].TemperatureUnit, TemperatureUnit.Celsius);
var temperature = tempConverter.Convert(reading.Temperature);
queryParams.Add("airtemp", temperature.ToString());
}
if (reading.IsWindSpeedValid)
{
var speedConverter = ReadingValuesConverterCache<Reading>.SpeedCache
.Get(sensors[sensor_num].SpeedUnit, SpeedUnit.MetersPerSec);
var speed = speedConverter.Convert(reading.WindSpeed / 3.6);
queryParams.Add("windspeed", speed.ToString());
}
if (reading.IsWindDirectionValid && reading.WindDirection >= 0 && reading.WindDirection <= 360.0)
{
queryParams.Add("winddir", ((int)(reading.WindDirection)).ToString());
}
if (reading.IsPressureValid)
{
var pressConverter = ReadingValuesConverterCache<Reading>.PressCache
.Get(sensors[sensor_num].PressureUnit, PressureUnit.KiloPascals);
var pressure = pressConverter.Convert(reading.Pressure);
queryParams.Add("pressure", pressure.ToString());
}
/*
if (reading.IsHumidityValid)
{
queryParams.Add("humidity", (reading.Humidity * 100.0).ToString());
}
if (reading.IsHumidityValid && reading.IsTemperatureValid)
{
var tempConverterCelcius = ReadingValuesConverterCache<Reading>.TemperatureCache
.Get(sensors[sensor_num].TemperatureUnit, TemperatureUnit.Celsius);
var tempConverterCToF = ReadingValuesConverterCache<Reading>.TemperatureCache
.Get(TemperatureUnit.Celsius, TemperatureUnit.Fahrenheit);
var tempC = tempConverterCelcius.Convert(reading.Temperature);
var dewPointC = DewPointCalculator.DewPoint(tempC, reading.Humidity);
var dewPointF = tempConverterCToF.Convert(dewPointC);
queryParams.Add("dewptf", dewPointF.ToString());
}
*/
var builder = new UriBuilder("http://www.windfinder.com/wind-cgi/httpload.pl?");
//sender_id="++"&password=&date=19.5.2011&time=17:13&airtemp=20&windspeed=12&gust=14&winddir=180&pressure=1012&rain=5");
builder.Query = String.Join(
"&",
queryParams
.Select(kvp => String.Concat(Uri.EscapeDataString(kvp.Key), '=', Uri.EscapeDataString(kvp.Value)))
.ToArray()
);
try
{
var reqSent = HttpWebRequest.Create(builder.Uri);
reqSent.BeginGetResponse(HandlWFResult, reqSent);
System.Diagnostics.Debug.WriteLine("\r\nRiadok: " + builder.Uri);
}
catch (Exception ex)
{
Log.Warn("WindFinder failure.", ex);
}
}
catch (Exception mainex)
{
Log.Warn("WindFinder failure main: ", mainex);
}
}