public Task SendTelemetryAsync(ThingTelemetry telemetry) { State._telemetry.Add(telemetry); // saving data at the device level if (State._deviceGroupId != "") { var deviceGroup = ActorProxy.Create <IThingGroup>(new ActorId(State._deviceGroupId)); return(deviceGroup.SendTelemetryAsync(telemetry)); // sending telemetry data for aggregation } return(Task.FromResult(true)); }
public Task SendTelemetryAsync(bool developedFault, string device, string region) { ThingTelemetry telemetry = new ThingTelemetry() { DevelopedFault = developedFault, DeviceId = device, Region = region }; State._telemetry.Add(telemetry); // saving data at the device level if (State._deviceGroupId != "") { var deviceGroup = ActorProxy.Create <IThingGroup>(new ActorId(State._deviceGroupId)); return(deviceGroup.SendTelemetryAsync(telemetry)); // sending telemetry data for aggregation } return(Task.FromResult(true)); }
public Task SendTelemetryAsync(ThingTelemetry telemetry) { if (telemetry.DevelopedFault) { if (false == _faultsPerRegion.ContainsKey(telemetry.Region)) { State._faultsPerRegion[telemetry.Region] = 0; } State._faultsPerRegion[telemetry.Region]++; State._faultyDevices.Add(_devices.Where(d => d.DeviceId == telemetry.DeviceId).FirstOrDefault()); if (State._faultsPerRegion[telemetry.Region] > _devices.Count(d => d.Region == telemetry.Region) / 3) { Console.WriteLine("Sending an engineer to repair/replace devices in {0}", telemetry.Region); foreach (var device in State._faultyDevices.Where(d => d.Region == telemetry.Region).ToList()) { Console.WriteLine("\t{0}", device); } } } return(Task.FromResult(true)); }
public Task SendTelemetryAsync(ThingTelemetry telemetry) { CloudTable cloudTable; CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(storageConnectionString); var cloudTableClient = cloudStorageAccount.CreateCloudTableClient(); cloudTable = cloudTableClient.GetTableReference("Falhas"); cloudTable.CreateIfNotExistsAsync(); if (telemetry.DevelopedFault) { if (false == State._faultsPerRegion.ContainsKey(telemetry.Region)) { State._faultsPerRegion[telemetry.Region] = 0; } State._faultsPerRegion[telemetry.Region]++; State._faultyDevices.Add(State._devices.Where(d => d.DeviceId == telemetry.DeviceId).FirstOrDefault()); if (State._faultsPerRegion[telemetry.Region] > State._devices.Count(d => d.Region == telemetry.Region) / 3) { Console.WriteLine("Sending an engineer to repair/replace devices in {0}", telemetry.Region); foreach (var device in State._faultyDevices.Where(d => d.Region == telemetry.Region).ToList()) { Console.WriteLine("\t{0}", device); var Falha = new FaultsEntity(telemetry.Region, device.DeviceId) { Version = device.Version }; TableOperation insertOperation = TableOperation.InsertOrReplace(Falha); cloudTable.ExecuteAsync(insertOperation); } } } return(Task.FromResult(true)); }