private async void onTimer(object state) { string temperatureText, pressureText; try { var sensorData = await _bmp180.GetSensorDataAsync(Bmp180AccuracyMode.UltraHighResolution); temperatureText = sensorData.Temperature.ToString("F1"); pressureText = sensorData.Pressure.ToString("F2"); temperatureText += "C - hex:" + BitConverter.ToString(sensorData.UncompestatedTemperature); pressureText += "hPa - hex:" + BitConverter.ToString(sensorData.UncompestatedPressure); WeatherData data = new WeatherData { Temperature = sensorData.Temperature, Pressure = sensorData.Pressure }; var client = new HttpClient(); //client.BaseAddress = new Uri("http://192.168.0.105/WebMonitor"); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); string weather = JsonConvert.SerializeObject(data); HttpResponseMessage response = await client.PostAsync("http://192.168.0.105:5001/Home/AddWeatherData", new StringContent(weather)); Console.WriteLine(response.StatusCode.ToString()); } catch (Exception ex) { temperatureText = "Sensor Error: " + ex.Message; pressureText = "Sensor Error: " + ex.Message; } }
private async void _periodicTimer_Tick(object sender, object e) { Bmp180SensorData sensorData = null; // Read and format Sensor data try { sensorData = await _bmp180.GetSensorDataAsync(Bmp180AccuracyMode.UltraHighResolution); Temperature = sensorData.Temperature; Pressure = sensorData.Pressure; Altitude = sensorData.Altitude; LastUpdated = DateTime.UtcNow.ToString(); } catch (Exception) { LastUpdated = "Sensor Error! Can't get values from sensor."; } if (sensorData != null) { // reference: https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-csharp-csharp-getstarted#create-a-simulated-device-app // send to IoT Hub SendDeviceToCloudMessagesAsync(sensorData); } }
private async void onTimer(object state) { string temperatureText, pressureText; try { var sensorData = await _bmp180.GetSensorDataAsync(Bmp180AccuracyMode.UltraHighResolution); temperatureText = sensorData.Temperature.ToString("F1"); pressureText = sensorData.Pressure.ToString("F2"); temperatureText += "C - hex:" + BitConverter.ToString(sensorData.UncompestatedTemperature); pressureText += "hPa - hex:" + BitConverter.ToString(sensorData.UncompestatedPressure); } catch (Exception ex) { temperatureText = "Sensor Error: " + ex.Message; pressureText = "Sensor Error: " + ex.Message; } }
/// <summary> /// Este metodo se ejecuta segun el tiempo definido en el archivo de configuracion para leer datos del sensor /// </summary> /// <param name="state"></param> public async void TimerCallback(object state) { string temperatureText; try { var sensorData = await _bmp180.GetSensorDataAsync(Bmp180AccuracyMode.UltraHighResolution); temperatureText = sensorData.Temperature.ToString(""); temperatureText += "°C"; var temperatureDataPoint = new { deviceKey = deviceKey, deviceName = deviceName, temperatura = sensorData.Temperature, fecha = DateTime.Now }; var messageString = JsonConvert.SerializeObject(temperatureDataPoint); var message = new Microsoft.Azure.Devices.Client.Message(Encoding.ASCII.GetBytes(messageString)); message.Properties["Ambiente"] = ambiente; autoResetEvent.WaitOne(); await deviceClient.SendEventAsync(message); autoResetEvent.Set(); } catch (Exception ex) { var a = ex.StackTrace; temperatureText = "Sensor Error: " + ex.Message; } //// actualizaciones de la interfaz de usuario... deben ser invocados en el subproceso de interfaz de usuario var task = this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { temperatura.Text = temperatureText; }); }