예제 #1
0
 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));
 }
예제 #2
0
        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));
        }
예제 #3
0
        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));
        }
예제 #4
0
        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));
        }