public List<Models.SensorStatisticsPacket> Get([FromUri]int duringDay)
        {
            var storeCS = CloudConfigurationManager.GetSetting("StorageConnectionString");
            var storageAccount = CloudStorageAccount.Parse(storeCS);
            var tableClient = storageAccount.CreateCloudTableClient();
            var sassTable = tableClient.GetTableReference("SASSensor");
            var srQquery = new TableQuery<Models.SASSensorTable>().Where(
                TableQuery.GenerateFilterConditionForDate("Timestamp",
             QueryComparisons.GreaterThanOrEqual, DateTimeOffset.Now.AddDays(-duringDay))
                );
            string[] sensorTypes = { "accelx", "accely", "accelz", "temp" };

            DateTime startTime = DateTime.Now;
            DateTime endTime = DateTime.Now.AddDays(-duringDay);
            var dssUnits = new Dictionary<string, Dictionary<string, StatUnit>>();
            var dstatistics = new Dictionary<string, Models.SensorStatisticsPacket>();
            double lastLongitude = 0;
            double lastLatitude = 0;
            foreach (var sass in sassTable.ExecuteQuery(srQquery))
            {
                if (!dssUnits.ContainsKey(sass.deviceId))
                {
                    Dictionary<string, StatUnit> units = new Dictionary<string, StatUnit>();
                    foreach (var st in sensorTypes)
                    {
                        units.Add(st, new StatUnit());
                        units[st].Max = Double.MinValue;
                        units[st].Min = Double.MaxValue;
                    }
                    dssUnits.Add(sass.deviceId, units);
                    var ssp = new Models.SensorStatisticsPacket();
                    ssp.StartTimestamp = startTime;
                    ssp.EndTimestamp = endTime;
                    ssp.DeviceId = sass.deviceId;
                    ssp.LastLatitude = sass.Latitude;
                    ssp.LastLongitude = sass.Longitude;
                    ssp.SensorStatistics = new List<Models.SensorStatisticsUnit>();
                    dstatistics.Add(sass.deviceId, ssp);
                }
                if (dstatistics[sass.deviceId].StartTimestamp > sass.time)
                {
                    dstatistics[sass.deviceId].StartTimestamp = sass.time;
                }
                if (dstatistics[sass.deviceId].EndTimestamp < sass.time)
                {
                    dstatistics[sass.deviceId].EndTimestamp = sass.time;
                }
                dssUnits[sass.deviceId]["accelx"].Add(sass.accelx);
                dssUnits[sass.deviceId]["accely"].Add(sass.accely);
                dssUnits[sass.deviceId]["accelz"].Add(sass.accelz);
                dssUnits[sass.deviceId]["temp"].Add(sass.temp);
            }
            var stats = new List<Models.SensorStatisticsPacket>();
            foreach (var devId in dssUnits.Keys)
            {
                foreach (var st in sensorTypes)
                {
                    var unit = new Models.SensorStatisticsUnit()
                    {
                        Count = dssUnits[devId][st].Count,
                        SensorType = st,
                        SensorValueMax = dssUnits[devId][st].Max,
                        SensorValueMin = dssUnits[devId][st].Min
                    };
                    if (unit.Count > 0)
                    {
                        unit.SensorValueAvg = dssUnits[devId][st].Avg;
                        unit.SensorValueStd = dssUnits[devId][st].Std;
                        dstatistics[devId].SensorStatistics.Add(unit);
                    }
                }
                stats.Add(dstatistics[devId]);
            }
            return stats;
        }
Exemplo n.º 2
0
        public List <Models.SensorStatisticsPacket> Get([FromUri] int duringDay)
        {
            var storeCS        = CloudConfigurationManager.GetSetting("StorageConnectionString");
            var storageAccount = CloudStorageAccount.Parse(storeCS);
            var tableClient    = storageAccount.CreateCloudTableClient();
            var sassTable      = tableClient.GetTableReference("SASSensor");
            var srQquery       = new TableQuery <Models.SASSensorTable>().Where(
                TableQuery.GenerateFilterConditionForDate("Timestamp",
                                                          QueryComparisons.GreaterThanOrEqual, DateTimeOffset.Now.AddDays(-duringDay))
                );

            string[] sensorTypes = { "accelx", "accely", "accelz", "temp" };

            DateTime startTime     = DateTime.Now;
            DateTime endTime       = DateTime.Now.AddDays(-duringDay);
            var      dssUnits      = new Dictionary <string, Dictionary <string, StatUnit> >();
            var      dstatistics   = new Dictionary <string, Models.SensorStatisticsPacket>();
            double   lastLongitude = 0;
            double   lastLatitude  = 0;

            foreach (var sass in sassTable.ExecuteQuery(srQquery))
            {
                if (!dssUnits.ContainsKey(sass.deviceId))
                {
                    Dictionary <string, StatUnit> units = new Dictionary <string, StatUnit>();
                    foreach (var st in sensorTypes)
                    {
                        units.Add(st, new StatUnit());
                        units[st].Max = Double.MinValue;
                        units[st].Min = Double.MaxValue;
                    }
                    dssUnits.Add(sass.deviceId, units);
                    var ssp = new Models.SensorStatisticsPacket();
                    ssp.StartTimestamp   = startTime;
                    ssp.EndTimestamp     = endTime;
                    ssp.DeviceId         = sass.deviceId;
                    ssp.LastLatitude     = sass.Latitude;
                    ssp.LastLongitude    = sass.Longitude;
                    ssp.SensorStatistics = new List <Models.SensorStatisticsUnit>();
                    dstatistics.Add(sass.deviceId, ssp);
                }
                if (dstatistics[sass.deviceId].StartTimestamp > sass.time)
                {
                    dstatistics[sass.deviceId].StartTimestamp = sass.time;
                }
                if (dstatistics[sass.deviceId].EndTimestamp < sass.time)
                {
                    dstatistics[sass.deviceId].EndTimestamp = sass.time;
                }
                dssUnits[sass.deviceId]["accelx"].Add(sass.accelx);
                dssUnits[sass.deviceId]["accely"].Add(sass.accely);
                dssUnits[sass.deviceId]["accelz"].Add(sass.accelz);
                dssUnits[sass.deviceId]["temp"].Add(sass.temp);
            }
            var stats = new List <Models.SensorStatisticsPacket>();

            foreach (var devId in dssUnits.Keys)
            {
                foreach (var st in sensorTypes)
                {
                    var unit = new Models.SensorStatisticsUnit()
                    {
                        Count          = dssUnits[devId][st].Count,
                        SensorType     = st,
                        SensorValueMax = dssUnits[devId][st].Max,
                        SensorValueMin = dssUnits[devId][st].Min
                    };
                    if (unit.Count > 0)
                    {
                        unit.SensorValueAvg = dssUnits[devId][st].Avg;
                        unit.SensorValueStd = dssUnits[devId][st].Std;
                        dstatistics[devId].SensorStatistics.Add(unit);
                    }
                }
                stats.Add(dstatistics[devId]);
            }
            return(stats);
        }