public async Task RunDeviceAsync()
        {
            deviceClient = DeviceClient.CreateFromConnectionString(connectionString,
                                                                   TransportType.Mqtt, new ClientOptions {
                ModelId = modelId
            });

            tempSensor = new TemperatureSensor(deviceClient, "tempSensor1", logger);
            diag       = new DiagnosticsInterface(deviceClient, "diag");
            deviceInfo = new DeviceInformation(deviceClient, "deviceInfo");
            sdkInfo    = new SdkInformation(deviceClient, "sdkInfo");

            await deviceInfo.ReportDeviceInfoPropertiesAsync(DeviceInfo.ThisDeviceInfo);

            await sdkInfo.ReportSdkInfoPropertiesAsync();

            diag.OnRebootCommand += Diag_OnRebootCommand;

            tempSensor.OnTargetTempReceived += TempSensor_OnTargetTempReceived;
            await tempSensor.InitAsync();

            await Task.Run(async() =>
            {
                logger.LogWarning("Entering Device Loop");
                while (!quitSignal.IsCancellationRequested)
                {
                    await tempSensor.SendTemperatureTelemetryValueAsync(CurrentTemperature);
                    await diag.SendWorkingTelemetryAsync(Environment.WorkingSet);

                    logger.LogInformation("Sending workingset and temp " + CurrentTemperature);
                    await Task.Delay(5000);
                }
            });
        }
Esempio n. 2
0
        private async Task ProcessTempUpdateAsync(double targetTemp)
        {
            logger.LogWarning($"Ajusting temp from {CurrentTemperature} to {targetTemp}");
            // gradually increase current temp to target temp
            double step = (targetTemp - CurrentTemperature) / 10d;

            for (int i = 9; i >= 0; i--)
            {
                CurrentTemperature = targetTemp - step * (double)i;
                await tempSensor.SendTemperatureTelemetryValueAsync(CurrentTemperature);

                await tempSensor.ReportCurrentTemperatureAsync(CurrentTemperature);

                await Task.Delay(1000);
            }
            logger.LogWarning($"Adjustment complete");
        }