コード例 #1
0
        private async Task PersistAverages(string stationId, string sensorId, DateTime day)
        {
            var dayStates             = statePersister.DayStates(stationId, sensorId, day);
            var yesterdayStates       = hourlyStatePersister.DayStates(stationId, sensorId, day.AddDays(-1));
            var dayStatesActive       = from s in dayStates where s.Active select s;
            var yesterdayStatesActive = from s in yesterdayStates where s.Active select s;
            var minutesAverages       = (from s in dayStatesActive
                                         group s by new { Hour = s.At.Hour, Lapse = s.At.Minute / eachMinutes }
                                         into g
                                         select
                                         new SensorStateHourly
            {
                At =
                    new DateTimeOffset(day.Year, day.Month, day.Day, g.Key.Hour, g.Key.Lapse * eachMinutes, 0,
                                       g.Select(x => x.At.Offset).FirstOrDefault()),
                State = sensorId.ToLowerInvariant() == "rain" ? g.Sum(x => x.State) : g.Average(x => x.State),
                Active = g.Count() >= 0.75 * eachMinutes ? true : false,
                Max = g.Max(x => x.State),
                Min = g.Min(x => x.State),
            });
            var hourAverages = generateList(minutesAverages, yesterdayStatesActive);
            await hourlyStatePersister.Persist(stationId, sensorId, hourAverages.ToArray());

            logger.LogTrace(() => $"Actualizados promedios horarios para '{sensorId}' de '{stationId}' del {day}");
        }
コード例 #2
0
        public Task <IEnumerable <Models.SensorDetailState> > DayDetail(string stationId, string sensorId, int year, int month, int day)
        {
            DateTime dayDate;

            if (!DateTime.TryParseExact($"{year:D4}{month:D2}{day:D2}", "yyyyMMdd", CultureInfo.InvariantCulture,
                                        DateTimeStyles.None, out dayDate))
            {
                throw new HttpResponseException(HttpStatusCode.BadRequest);
            }
            var dayStates = sensorStatesPersister.DayStates(stationId, sensorId, dayDate);

            return(Task.FromResult(dayStates.Select(x => new Models.SensorDetailState
            {
                At = x.At,
                State = x.State,
                Active = x.Active
            })));
        }