Esempio n. 1
0
        /// <summary>
        /// Method to add data to the table (= POST)
        /// </summary>
        /// <param name="deviceId">Device Id</param>
        /// <param name="temperature">Temperature</param>
        /// <param name="humidity">Humidity</param>
        public async Task AddData(string deviceId, int temperature, int humidity)
        {
            var sensorHatModel = new SensorHatModel();

            sensorHatModel.DeviceId    = deviceId;
            sensorHatModel.Humidity    = humidity;
            sensorHatModel.Temperature = temperature;
            sensorHatModel.TimeStamp   = DateTime.Now;

            // convert it to JSON
            var modelJson = JsonConvert.SerializeObject(sensorHatModel);

            // add model to the reuest as content with the right content type
            HttpContent content = new StringContent(modelJson);

            content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
            content.Headers.Add("SensorHatDataAddKey", _authKey);

            // make that call
            HttpResponseMessage response = await Client.PostAsync(_baseAddress + "/api/SensorHat/AddData/", content);

            // if the call is not successful, throw exception
            if (!response.IsSuccessStatusCode)
            {
                throw new Exception(response.ReasonPhrase);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Gets the data as per the sorted order
        /// </summary>
        /// <param name="deviceId">Id of the device</param>
        /// <param name="startUTCTime">Start time in UTC</param>
        /// <param name="endUTCTime">End time in UTC</param>
        /// <param name="latestFirst">Order of the data</param>
        /// <returns></returns>
        public List <SensorHatModel> GetSensorHatData(string deviceId, DateTime startUTCTime, DateTime endUTCTime, bool latestFirst)
        {
            if (string.IsNullOrEmpty(deviceId))
            {
                throw new ArgumentNullException(nameof(deviceId));
            }

            // ensure that the params are valid
            if (startUTCTime < endUTCTime)
            {
                throw new ArgumentException("Start time should be less than the end time.");
            }

            // return list
            List <SensorHatModel> data = new List <SensorHatModel>();

            try
            {
                // get the start and end row keys
                var startRowKey = SensorHatEntity.GenerateRowKey(latestFirst, startUTCTime.Ticks);
                var endRowKey   = SensorHatEntity.GenerateRowKey(latestFirst, endUTCTime.Ticks);

                // build the filter for PartitionKey
                var pkFilter = TableQuery.GenerateFilterCondition(nameof(TableEntity.PartitionKey), QueryComparisons.Equal, deviceId);

                // filter fr ow keys
                var gtEqRowFilter = TableQuery.GenerateFilterCondition(nameof(TableEntity.RowKey), QueryComparisons.GreaterThanOrEqual, startRowKey);
                var ltEqRowFilter = TableQuery.GenerateFilterCondition(nameof(TableEntity.RowKey), QueryComparisons.LessThanOrEqual, endRowKey);

                // combine the filters
                var rowRangeFilter = TableQuery.CombineFilters(gtEqRowFilter, TableOperators.And, ltEqRowFilter);
                var filter         = TableQuery.CombineFilters(pkFilter, TableOperators.And, rowRangeFilter);

                // run the queries
                var tableQuery = new TableQuery <SensorHatEntity>().Where(filter);

                var results = _table.ExecuteQuery(tableQuery);
                //convert entities into models
                foreach (var ent in results)
                {
                    var model = new SensorHatModel();
                    model.DeviceId    = ent.PartitionKey;
                    model.Humidity    = ent.Humidity;
                    model.Temperature = ent.Temperature;
                    model.TimeStamp   = ent.LocalTime;

                    data.Add(model);
                }
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex.Message);
            }

            return(data);
        }
Esempio n. 3
0
        public void Post([FromBody] SensorHatModel weatherData)
        {
            var repos = new SensorHatRepository();

            repos.AddSensorHatData(weatherData.DeviceId, weatherData.Temperature, weatherData.Humidity, weatherData.TimeStamp);
        }