private void SensorValueupload(object state)
        {
            try
            {
                // Air sensor readings
                double temperatureCelsius    = bme280Sensor.Temperature.DegreesCelsius;
                double temperatureFahrenheit = bme280Sensor.Temperature.DegreesFahrenheit;
                double humidity = bme280Sensor.Humidity;
                double pressure = bme280Sensor.Pressure.Kilopascals;

                double lightLevel    = GroveBaseHatAnalogPorts.Read(AnalogPorts.AnalogPort.A0);
                double soilMoisture1 = GroveBaseHatAnalogPorts.Read(AnalogPorts.AnalogPort.A2);
                double soilMoisture2 = GroveBaseHatAnalogPorts.Read(AnalogPorts.AnalogPort.A4);

                LoggingService.Log(string.Format("C {0:0.0}° F {1:0.0}° H {2:0}% P {3:0.000}kPa L {4:0}%  Soil1 {5:0}% Soil2 {6:0}% ", temperatureCelsius, temperatureFahrenheit, humidity, pressure, lightLevel, soilMoisture1, soilMoisture2));

                // Setup for the the logging of sensor values
                var loggingData = new LoggingFields();

                // Construct Azure IoT Central friendly payload
                var telemetryDataPoint = new TelemetryDataPoint();
                telemetryDataPoint.Celsius = temperatureCelsius;
                loggingData.AddDouble(nameof(telemetryDataPoint.Celsius), temperatureCelsius);
                telemetryDataPoint.Fahrenheit = temperatureFahrenheit;
                loggingData.AddDouble(nameof(telemetryDataPoint.Fahrenheit), temperatureFahrenheit);
                telemetryDataPoint.Humidity = humidity;
                loggingData.AddDouble(nameof(telemetryDataPoint.Humidity), humidity);
                telemetryDataPoint.Pressure = pressure;
                loggingData.AddDouble(nameof(telemetryDataPoint.Pressure), pressure);

                telemetryDataPoint.Light = lightLevel;
                loggingData.AddDouble(nameof(telemetryDataPoint.Light), lightLevel);

                telemetryDataPoint.SoilMoisture1 = soilMoisture1;
                loggingData.AddDouble(nameof(telemetryDataPoint.SoilMoisture1), soilMoisture1);
                telemetryDataPoint.SoilMoisture2 = soilMoisture2;
                loggingData.AddDouble(nameof(telemetryDataPoint.SoilMoisture2), soilMoisture2);

                // Log the sensor values to ETW logging
                LoggingService.LogEvent("Sensor readings", loggingData, LoggingLevel.Verbose);

                using (var message = new Message(Encoding.ASCII.GetBytes(JsonConvert.SerializeObject(telemetryDataPoint))))
                {
                    LoggingService.Log("AzureIoTHubClient SendEventAsync starting");
                    azureIoTHubClient.SendEventAsync(message).Wait();
                    LoggingService.Log("AzureIoTHubClient SendEventAsync finished");
                }
            }
            catch (Exception ex)
            {
                LoggingService.Error("Failed to send telemetry", ex);
            }
        }