コード例 #1
0
        public static void Main(string[] args)
        {
            if (!File.Exists("Kuivuri.db"))
            {
                using (var db = new KuivuriContext())
                {
                    RelationalDatabaseCreator databaseCreator =
                        (RelationalDatabaseCreator)db.Database.GetService <IDatabaseCreator>();
                    databaseCreator.CreateTables();
                }
            }

            CreateWebHostBuilder(args).Build().Run();
        }
コード例 #2
0
        public void MeasureData([FromBody] MeasureData value)
        {
            if (config.Value.ApiKey != value.ApiKey)
            {
                return;
            }

            KuivuriContext ctx  = new KuivuriContext();
            var            data = new Measurement()
            {
                MachineName = value.MachineName, Temp1 = value.Temp1, Temp2 = value.Temp2, Hairio = value.Hairio, Jaahdytys = value.Jaahdytys, Kuivaus = value.Kuivaus
            };

            ctx.Measurement.Add(data);
            ctx.SaveChanges();
        }
コード例 #3
0
        public CurrentValues GetCurrent()
        {
            KuivuriContext ctx  = new KuivuriContext();
            var            data = ctx.Measurement.OrderByDescending(i => i.Created).First();

            if (data != null)
            {
                return new CurrentValues()
                       {
                           Time = data.Created.FloorSeconds().ToLocalTime(), Temp1 = data.Temp1, Temp2 = data.Temp2
                       }
            }
            ;

            return(null);
        }
    }
コード例 #4
0
        public Trace[] Get12hData()
        {
            KuivuriContext ctx     = new KuivuriContext();
            DateTime       now     = DateTime.UtcNow.FloorSeconds();
            DateTime       minus12 = DateTime.UtcNow.AddHours(-12);

            DateTime[] times   = new DateTime[12 * 60];
            double[]   values1 = new double[12 * 60];
            double[]   values2 = new double[12 * 60];

            for (int i = 0; i < times.Length; i++)
            {
                times[i] = minus12.AddMinutes(i).ToLocalTime();
            }

            foreach (var m in ctx.Measurement.Where(i => i.Created > minus12).ToArray().GroupBy(t => new { t.Created }).Select(i => new { i.Key.Created, Temp1 = i.Average(p => p.Temp1), Temp2 = i.Average(p => p.Temp2) }))
            {
                int index = (int)((m.Created.FloorSeconds() - minus12).TotalMinutes);
                if (index > 0 && index < times.Length)
                {
                    values1[index] = m.Temp1;
                    values2[index] = m.Temp2;
                }
            }

            // Last slot is not always filled.
            if (values1[values1.Length - 1] == 0)
            {
                values1[values1.Length - 1] = values1[values1.Length - 2];
            }

            if (values2[values2.Length - 1] == 0)
            {
                values2[values2.Length - 1] = values2[values2.Length - 2];
            }

            return(new Trace[] { new Trace()
                                 {
                                     x = times, y = values1
                                 }, new Trace()
                                 {
                                     x = times, y = values2
                                 } });
        }