private async void SensorUpdateTimerCallback(object state)
        {
            try
            {
                UnitsNet.Temperature temperature = bme280Sensor.Temperature;
                double            humidity       = bme280Sensor.Humidity;
                UnitsNet.Pressure airPressure    = bme280Sensor.Pressure;

                Debug.WriteLine($"{DateTime.UtcNow.ToLongTimeString()} Timer triggered " +
                                $"Temperature: {temperature.DegreesCelsius:0.0}°C {temperature.DegreesFahrenheit:0.0}°F " +
                                $"Humidity: {humidity:0.0}% " +
                                $"AirPressure: {airPressure.Kilopascals:0.000}KPa ");

                // Manually construct JSON payload, not recomended
                string payloadText = @"{""Temperature"":" + temperature.DegreesCelsius.ToString("f1") +
                                     @",""Humidity"":" + humidity.ToString("F0") +
                                     @",""AirPressure"":" + airPressure.Kilopascals.ToString("F3") +
                                     @"}";

                using (var message = new Message(Encoding.ASCII.GetBytes(payloadText)))
                {
                    Debug.WriteLine("AzureIoTHubClient SendEventAsync starting");
                    await azureIoTHubClient.SendEventAsync(message);

                    Debug.WriteLine("AzureIoTHubClient SendEventAsync finished");
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine($"Retrieving or sending sensor values failed:{ex.Message}");
            }
        }
        private async void SensorUpdateTimerCallback(object state)
        {
            try
            {
                UnitsNet.Temperature temperature = bme280Sensor.Temperature;
                double            humidity       = bme280Sensor.Humidity;
                UnitsNet.Pressure airPressure    = bme280Sensor.Pressure;

                Debug.WriteLine($"{DateTime.UtcNow.ToLongTimeString()} Timer triggered " +
                                $"Temperature: {temperature.DegreesCelsius:0.0}°C {temperature.DegreesFahrenheit:0.0}°F " +
                                $"Humidity: {humidity:0.0}% " +
                                $"AirPressure: {airPressure.Kilopascals:0.000}KPa ");

                SensorPayload sensorPayload = new SensorPayload()
                {
                    Temperature = temperature.DegreesCelsius,
                    Humidity    = humidity,
                    AirPressure = airPressure.Kilopascals,
                };

                string payloadText = JsonConvert.SerializeObject(sensorPayload);

                using (var message = new Message(Encoding.ASCII.GetBytes(payloadText)))
                {
                    Debug.WriteLine("AzureIoTHubClient SendEventAsync starting");
                    await azureIoTHubClient.SendEventAsync(message);

                    Debug.WriteLine("AzureIoTHubClient SendEventAsync finished");
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine($"Retrieving or sending sensor values failed:{ex.Message}");
            }
        }
示例#3
0
        private async void SensorUpdateTimerCallback(object state)
        {
            try
            {
                // Checking that SaS token isn't about to expire
                if ((DateTime.UtcNow - sasTokenIssuedAtUtc) >= sasTokenValidityPeriod)
                {
                    Debug.WriteLine($"{DateTime.UtcNow.ToString("hh:mm:ss")} SAS token needs renewing");

                    try
                    {
                        TpmDevice myDevice = new TpmDevice(0);                         // Use logical device 0 on the TPM

                        azureIoTHubUri      = myDevice.GetHostName();
                        deviceId            = myDevice.GetDeviceId();
                        sasToken            = myDevice.GetSASToken((uint)sasTokenValidityPeriod.TotalSeconds);
                        sasTokenIssuedAtUtc = DateTime.UtcNow;
                    }
                    catch (Exception ex)
                    {
                        Debug.WriteLine($"TpmDevice.GetSASToken refresh failed:{ex.Message}");
                        return;
                    }

                    try
                    {
                        azureIoTHubClient = DeviceClient.Create(azureIoTHubUri, AuthenticationMethodFactory.CreateAuthenticationWithToken(deviceId, sasToken), TransportType.Mqtt);
                    }
                    catch (Exception ex)
                    {
                        Debug.WriteLine($"DeviceClient.Create with TPM info failed:{ex.Message}");
                        return;
                    }

                    Debug.WriteLine($"{DateTime.UtcNow.ToString("hh:mm:ss")} SAS token renewed ");
                }

                UnitsNet.Temperature temperature = bme280Sensor.Temperature;
                double            humidity       = bme280Sensor.Humidity;
                UnitsNet.Pressure airPressure    = bme280Sensor.Pressure;

                Debug.WriteLine($"{DateTime.UtcNow.ToLongTimeString()} Timer triggered " +
                                $"Temperature: {temperature.DegreesCelsius:0.0}°C {temperature.DegreesFahrenheit:0.0}°F " +
                                $"Humidity: {humidity:0.0}% " +
                                $"AirPressure: {airPressure.Kilopascals:0.000}KPa ");

                SensorPayloadDto sensorPayload = new SensorPayloadDto()
                {
                    Temperature = temperature.DegreesCelsius,
                    Humidity    = humidity,
                    AirPressure = airPressure.Kilopascals,
                };

                string payloadText = JsonConvert.SerializeObject(sensorPayload);

                using (var message = new Message(Encoding.ASCII.GetBytes(payloadText)))
                {
                    Debug.WriteLine($" {DateTime.UtcNow.ToString("hh:mm:ss.fff")} AzureIoTHubClient SendEventAsync starting");
                    await azureIoTHubClient.SendEventAsync(message);

                    Debug.WriteLine($" {DateTime.UtcNow.ToString("hh:mm:ss.fff")} AzureIoTHubClient SendEventAsync finished");
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine($"Retrieving or sending sensor values failed:{ex.Message}");
            }
        }