Exemple #1
0
        public void SetUp()
        {
            _kernel     = new StandardKernel(new RepositoryModule());
            _controller = _kernel.Get <TelemetryController>();
            MapperConfig.RegisterMapping();


            _dto = new TelemetryDto()
            {
                Car = new CarDto()
                {
                    Chassis = "CH1", TyreTemp = 89.22, TyreDeg = 0.084334, Fuel = 98.59, Weight = 842.59
                },
                Lap = new LapDto()
                {
                    Number = 100, Timespan = new TimeSpan(0, 1, 45, 9)
                },
                TimeStamp = DateTime.Parse("2016-09-17T13:02:55.696Z")
            };

            _dto2 = new TelemetryDto()
            {
                Car = new CarDto()
                {
                    Chassis = "CH2", TyreTemp = 89.22, TyreDeg = 0.084334, Fuel = 98.59, Weight = 842.59
                },
                Lap = new LapDto()
                {
                    Number = 100, Timespan = new TimeSpan(0, 1, 45, 9)
                },
                TimeStamp = DateTime.Parse("2016-09-17T13:02:55.696Z")
            };
        }
Exemple #2
0
        public async Task <bool> SendTelemetryDataAsync(TelemetryDto telemetry)
        {
            Message telemetryMessage = new Message(Encoding.ASCII.GetBytes(JsonConvert.SerializeObject(telemetry)));

            telemetryMessage.Properties.Add("temperatureAlert", (telemetry.Temperature > 30) ? "true" : "false");

            try {
                await _deviceClient.SendEventAsync(telemetryMessage);
            }
            catch (Exception ex)
            {
                return(false);
            }

            return(true);
        }
Exemple #3
0
        private async void _sendTelemetryTimer_Tick(object sender, object e)
        {
            TelemetryDto telemetry = _bl.GetTelemetryData();

            TelemetryStatus = ($"Trying to send: {JsonConvert.SerializeObject(telemetry)}");

            _telemetryList.Add(JsonConvert.SerializeObject(telemetry));

            if (IsHttpIngest)
            {
                await _blHttp.SendTelemetryDataAsync(telemetry);
            }
            else
            {
                await _bl.SendTelemetryDataAsync(telemetry);
            }
            TelemetryStatus = $"Sent: {JsonConvert.SerializeObject(telemetry)}";
        }
        public async Task <bool> SendTelemetryDataAsync(TelemetryDto telemetry)
        {
            string sASToken = CreateServiceBusSASToken(Configuration.DeviceId, Configuration.DeviceSummetricKey, Configuration.IoTHubFullName);

            using (HttpClient httpClient = new HttpClient())
            {
                httpClient.DefaultRequestHeaders.Add("Accept", "application/json");
                httpClient.DefaultRequestHeaders.Add("Authorization", sASToken);
                HttpContent httpContent = new StringContent(JsonConvert.SerializeObject(telemetry));

                HttpResponseMessage httpResponseMessage = await httpClient.PostAsync(Configuration.DeviceIoTHubTargetUrl, httpContent);

                if (httpResponseMessage.IsSuccessStatusCode)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
        }
        public async Task <IHttpActionResult> Post([FromBody] TelemetryDto telemetry)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            //check the message Queue for messages
            await CheckQueueForTelemetries();

            if (CheckTelemetryRules(telemetry, "CH1"))
            {
                return(await Task.FromResult(HttpActionResult(telemetry)));
            }

            if (CheckTelemetryRules(telemetry, "CH2"))
            {
                return(await Task.FromResult(HttpActionResult(telemetry)));
            }

            return(new BadRequestErrorMessageResult("Duplicate not allowed. A lap can track a car at most once", this));
        }
        private IHttpActionResult HttpActionResult(TelemetryDto telemetry)
        {
            var newTelemetryData = Mapper.Map <Telemetry>(telemetry);

            try
            {
                //throw  new ServerException("Repository is down!");
                NewLyAddedtelemetries.Add(newTelemetryData);
            }
            catch (Exception ex)
            {
                _unitOfWork.Messenger.SendMessage(telemetry);

                return(Ok(new
                {
                    Information =
                        "Repository currently offline. Your data is in a queue and will be stored in the Repo as soon as it's back online"
                }));
            }


            return(CreatedAtRoute("CreateLap", new { Id = Mapper.Map <Telemetry>(telemetry).Id },
                                  Mapper.Map <Telemetry>(telemetry)));
        }