public async Task RunAsync(string connectionString, ILogger logger, CancellationToken quitSignal) { this.logger = logger; deviceClient = DeviceClient.CreateFromConnectionString(connectionString, TransportType.Mqtt, new ClientOptions { ModelId = modelId }); var refrigerator = new PnPComponent(deviceClient, logger); await refrigerator.SetPnPCommandHandlerAsync("Reset", async (MethodRequest req, object ctx) => { logger.LogWarning("============> Processing Reset"); MemoryLeak.FreeMemory(); await refrigerator.ReportPropertyAsync("LastInitDateTime", DateTime.Now.ToUniversalTime()); return await Task.FromResult(new MethodResponse(200)); }, null); await refrigerator.SetPnPDesiredPropertyHandlerAsync<int>("RefreshInterval", (int newValue) => { if (int.TryParse(newValue.ToString(), out int refreshInterval)) { logger.LogWarning("=====================> RefreshInterval: " + refreshInterval); RefreshInterval = refreshInterval; } }, this); await Task.Run(async () => { RefreshInterval = await refrigerator.ReadDesiredPropertyAsync<int>("RefreshInterval"); if (RefreshInterval == default(int)) RefreshInterval = defaultRefreshInterval; await refrigerator.ReportPropertyAsync("SerialNumber", "1235435"); await refrigerator.ReportPropertyAsync("LastInitDateTime", DateTime.Now.ToUniversalTime()); int avg = 21; var rnd = new Random(Environment.TickCount); while (!quitSignal.IsCancellationRequested) { var payload = new { temp = avg + rnd.Next(10) }; await refrigerator.SendTelemetryValueAsync(JsonConvert.SerializeObject(payload)); logger.LogInformation("Sending CurrentTemperature: " + payload.temp); await Task.Delay(RefreshInterval * 1000); MemoryLeak.FillMemory(); } }); }
public async Task ComponentReportProperty() { await comp.ReportPropertyAsync("prop1", "val1"); var compTwinValue = mockClient.ReportedCollection.GetPropertyValue <string>("c1", "prop1"); Assert.Equal("val1", compTwinValue); }
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.SendTelemetryValueAsync(JsonConvert.SerializeObject(new { temperature = CurrentTemperature })); await tempSensor.ReportPropertyAsync("currentTemperature", CurrentTemperature); await Task.Delay(1000); } logger.LogWarning($"Adjustment complete"); }
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 * i; await component.SendTelemetryValueAsync("{temperature:" + CurrentTemperature + "}"); await component.ReportPropertyAsync("currentTemperature", CurrentTemperature); await Task.Delay(1000); } logger.LogWarning($"Adjustment complete"); }
public async Task NoComponentReportProperty() { await nocomp.ReportPropertyAsync("prop1", "val1"); Assert.Equal("val1", mockClient.ReportedCollection["prop1"].Value); }