Пример #1
0
 private async Task SaveValveLogAsync(int addr, StateMessage state)
 {
     using (IServiceScope scope = scopeFactory.CreateScope())
     {
         HeatAppContext db   = scope.ServiceProvider.GetRequiredService <HeatAppContext>();
         ValveLog       vl   = new ValveLog(addr, state);
         var            last = db.ValveLog.SingleOrDefault(v => v.Addr == vl.Addr && v.Time == vl.Time);
         if (last == null)
         {
             db.ValveLog.Add(vl);
             await db.SaveChangesAsync();
         }
     }
 }
Пример #2
0
        private void SaveState(int addr, string message)
        {
            using (IServiceScope scope = scopeFactory.CreateScope())
            {
                HeatAppContext db    = scope.ServiceProvider.GetRequiredService <HeatAppContext>();
                List <string>  items = message.Split(' ').ToList();
                ValveLog       vl    = new ValveLog();
                vl.Addr = addr;
                for (int i = 1; i < items.Count; i++)
                {
                    string item = items[i];
                    switch (item.Substring(0, 1))
                    {
                    case "A":
                        vl.Auto = true;
                        break;

                    case "-":
                        vl.Auto = false;
                        break;

                    case "M":
                        vl.Auto = false;
                        break;

                    case "V":
                        vl.Turn = int.Parse(item.Substring(1));
                        break;

                    case "I":
                        vl.Actual = decimal.Parse(item.Substring(1)) / 100;
                        break;

                    case "S":
                        vl.Wanted = decimal.Parse(item.Substring(1)) / 100;
                        break;

                    case "B":
                        vl.Battery = decimal.Parse(item.Substring(1)) / 1000;
                        break;

                    case "E":
                        vl.Error = int.Parse(item.Substring(1), System.Globalization.NumberStyles.HexNumber);
                        break;

                    case "W":
                        vl.Window = true;
                        break;

                    case "L":
                        vl.Locked = true;
                        break;

                    case "X":
                        //$st['force'] = 1;
                        break;
                    }
                }
                DateTime now = DateTime.Now;
                vl.Time = now;
                db.ValveLog.Add(vl);
                db.SaveChanges();
            }
        }