Ejemplo n.º 1
0
        public List <MeasurementResponse> GetMeasurement(string module)
        {
            var measurementGroups = _context.Measurements
                                    .Include(m => m.Module)
                                    .Where(m => m.Module.Name == module)
                                    .Include(m => m.SensorSpec).ThenInclude(ss => ss.Sensor)
                                    .GroupBy(m => m.TimeReceived);

            List <MeasurementResponse> measurements = new List <MeasurementResponse>();

            // iterate over each group (measurementGroups is an array of arrays, grouped by TimeReceived)
            foreach (var measurementGroup in measurementGroups)
            {
                // create singe object, which will contain all sensor data
                MeasurementResponse measurementResponse = new MeasurementResponse
                {
                    Module         = measurementGroup.ElementAt(0).Module,
                    TimeReceived   = measurementGroup.ElementAt(0).TimeReceived,
                    TimeRegistered = measurementGroup.ElementAt(0).TimeRegistered,
                    Sensors        = measurementGroup.Select(m =>
                    {
                        SensorResponse s = new SensorResponse(m.SensorSpec.Sensor)
                        {
                            Value = m.Value
                        };
                        return(s);
                    }).ToList()
                };

                measurements.Add(measurementResponse);
            }

            return(measurements);
        }
Ejemplo n.º 2
0
 public static void AddInfoSensors(SensorResponse response)
 {
     battery      = response.battery;
     weight       = response.weight;
     temperature  = response.temperature;
     humidity     = response.humidity;
     illumination = response.illumination;
     gate         = response.gate;
     Lock         = response.Lock;
     fold         = response.fold;
 }
Ejemplo n.º 3
0
        public override Task <SensorResponse> GetSensorData(SensorRequest request, ServerCallContext context)
        {
            foreach (var entry in context.RequestHeaders)
            {
                Console.WriteLine(entry);
            }

            SensorResponse sensor = new SensorResponse();

            sensor.Sensor = Sensores.sensores.Find(s => s.Id == request.SensorId);

            return(Task.FromResult(sensor));
        }
        public async Task <ActionResult> Post([FromBody] SensorResponse response)
        {
            try
            {
                var existingData = await _Context.SensorData
                                   .Where(w => w.Device_Id == response.DeviceId && w.DataEntryTime == response.dateTime)
                                   .ToListAsync();

                if (existingData.Count > 0)
                {
                    return(BadRequest("Data already present with this date and time for this device"));
                }


                foreach (var paramData in response.DataSet)
                {
                    SensorData sensorData = new SensorData
                    {
                        DataEntryTime = response.dateTime,
                        Device_Id     = response.DeviceId,
                        Input_Value   = paramData.Value,
                        Param_Id      = paramData.ParameterID
                    };
                    _Context.SensorData.Add(sensorData);
                }
                var deviceInfo = await _Context.Device_info.FindAsync(response.DeviceId);

                deviceInfo.lastupdatedon = response.dateTime;
                deviceInfo.GUID          = Guid.NewGuid().ToString();

                _Context.Device_info.Update(deviceInfo);

                await _Context.SaveChangesAsync();

                SensorReply sensorReply = new SensorReply
                {
                    deviceID      = response.DeviceId,
                    NewGuid       = deviceInfo.GUID,
                    Interval      = 30,
                    ThresHoldSets = await _Context.ParameterBenchmark.ToListAsync()
                };

                return(Ok(sensorReply));
            }
            catch (Exception ex)
            {
                _Logger.LogError($"Error in data {ex.Message}");
                return(BadRequest($"Error in data{ex.Message}"));
            }
        }
Ejemplo n.º 5
0
        public void PrtgClient_RetriesWhileStreaming()
        {
            var response = new SensorResponse(Enumerable.Repeat(new SensorItem(), 1001).ToArray());

            var client = new PrtgClient("prtg.example.com", "username", "passhash", AuthMode.PassHash, new MockRetryWebClient(response, false));

            var retriesToMake = 3;
            var retriesMade   = 0;

            client.RetryCount = retriesToMake;

            client.RetryRequest += (sender, args) =>
            {
                retriesMade++;
            };

            AssertEx.Throws <WebException>(() => client.StreamSensors().ToList(), string.Empty);
            Assert.AreEqual(retriesToMake * 2, retriesMade, "An incorrect number of retries were made.");
        }
Ejemplo n.º 6
0
        public void PrtgClient_RetriesNormally()
        {
            prtgClientRetriesNormally = 0;

            var response = new SensorResponse(Enumerable.Repeat(new SensorItem(), 1001).ToArray());

            var client = new PrtgClient("prtg.example.com", "username", "passhash", AuthMode.PassHash, new MockRetryWebClient(response, true));

            var retriesToMake = 3;

            client.RetryCount = retriesToMake;

            client.RetryRequest += OnClientOnRetryRequest;

            AssertEx.Throws <WebException>(() => client.GetSensors().ToList(), string.Empty);
            Assert.AreEqual(retriesToMake, prtgClientRetriesNormally, "An incorrect number of retries were made.");

            client.RetryRequest -= OnClientOnRetryRequest;

            AssertEx.Throws <WebException>(() => client.GetSensors().ToList(), string.Empty);
            Assert.AreEqual(retriesToMake, prtgClientRetriesNormally, "Retry handler was called after it was removed");
        }
Ejemplo n.º 7
0
        static async Task <IList <SensorResponse> > CreateSensorsAsync(IList <DeviceResponse> deviceResponses, IList <SensorModelResponse> sensorModelResponses)
        {
            int createThisMany = 5000;

            IList <SensorResponse> responses = new List <SensorResponse>(createThisMany);
            IList <SensorRequest>  requests  = _generator.GetSensorRequests
                                               (
                createThisMany,
                deviceResponses.Select(r => r.Id),
                sensorModelResponses.Select(r => r.Id)
                                               );

            foreach (SensorRequest request in requests)
            {
                HttpResponseMessage httpResponseMessage = await _apiClient.PostResourceAsync(request);

                SensorResponse response = await _apiClient.GetResourceFromHttpResponseAsync <SensorResponse>(httpResponseMessage);

                responses.Add(response);
            }

            return(responses);
        }
Ejemplo n.º 8
0
        public void PrtgClient_StreamsSerial_WhenRequestingOver20000Items()
        {
            var count = 20001;

            var response = new SensorResponse(Enumerable.Repeat(new SensorItem(), count).ToArray());

            var client = new PrtgClient("prtg.example.com", "username", "passhash", AuthMode.PassHash, new MockRetryWebClient(response, false));

            var messageFound = false;

            client.LogVerbose += (e, o) =>
            {
                if (o.Message == "Switching to serial stream mode as over 20000 objects were detected")
                {
                    messageFound = true;
                }
            };

            var sensors = client.StreamSensors().ToList();

            Assert.IsTrue(messageFound, "Request did not stream serially");

            Assert.AreEqual(count, sensors.Count);
        }