Example #1
0
        private void InitDSC()
        {
            TankToadContext td  = new TankToadContext();
            var             DSC = td.DeviceSpecificConstants.FirstOrDefault();

            if (_device.HardwareVersion == "WM5E" ||
                _device.HardwareVersion == "WM5F" ||
                _device.HardwareVersion == "WM5G")
            {
                systemVoltage = DSC.WM_SystemVoltage;
                ADCscale      = DSC.WM_ADCscale;
                reportScale   = DSC.WM_ReportScale;
            }
            //Default
            else
            {
                systemVoltage = DSC.Default_SystemVoltage;
                ADCscale      = DSC.Default_ADCscale;
                reportScale   = DSC.Default_ReportScale;
            }

            //units
            if (_device.FirmwareName == "WM5E-Firmware")
            {
                if (_device.FirmwareBranch == "Master")
                {
                    measurementType = DSC.Master_MeasurementType;
                    units           = DSC.Master_Units;
                }
                else
                if (_device.FirmwareBranch == "Operator")
                {
                    measurementType = DSC.Operator_MeasurementType;
                    units           = DSC.Operator_Units;
                }
                else
                if (_device.FirmwareBranch == "Pressure")
                {
                    measurementType = DSC.Pressure_MeasurementType;
                    units           = DSC.Pressure_Units;
                }
                else
                {
                    measurementType = DSC.Default_MeasurementType;
                    units           = DSC.Default_Units;
                }
            }
            //Default
            else
            {
                measurementType = DSC.Default_MeasurementType;
                units           = DSC.Default_Units;
            }

            //Grace Window
            graceWindow = DSC.GraceWindow;
        }
Example #2
0
        public SMSparse(SMS sms)
        {
            TankToadContext td = new TankToadContext();

            _sms         = sms;
            _error       = new List <string>();
            _diagnostics = new Diagnostics();
            _data        = new List <Data>();
            _device      = td.DeviceAttributes
                           .Where(d => d.CellNumber == sms.From)
                           .FirstOrDefault();
            if (_device == null)
            {
                ErrorList.Add("No device");
                return;
            }

            InitDSC();

            Regex DATregex = new Regex(@"^DAT:");

            if (DATregex.Matches(_sms.Body).Count > 0)
            {
                DAT();
            }
            Regex RPTregex = new Regex(@"^RPT:");

            if (RPTregex.Matches(_sms.Body).Count > 0)
            {
                RPT();
            }

            bool ifDAT = DATregex.Matches(_sms.Body).Count > 0;
            bool ifRPT = RPTregex.Matches(_sms.Body).Count > 0;

            if (!(ifRPT || ifDAT))
            {
                ErrorList.Add("SMS type");
            }
        }
Example #3
0
        public void SMSparse(int Id)
        {
            TankToadContext tdParse = new TankToadContext();

            var      sms    = tdParse.SMS.Find(Id);
            var      datas  = tdParse.Datas.Where(d => d.SMSId == sms.Id);
            SMSparse sparse = new SMSparse(sms);

            if (sparse.ErrorList.Count != 0)
            {
                sms.Status = sparse.ErrorList[0];
            }
            else
            {
                if (datas != null && sparse.Data.Count != 0)
                {
                    sms.Status = "OK";
                    tdParse.Datas.RemoveRange(datas);
                    tdParse.Datas.AddRange(sparse.Data);
                    var diagnostic = tdParse.Diagnostics.Where(d => d.SMSId == sms.Id).FirstOrDefault();
                    if (diagnostic != null)
                    {
                        tdParse.Diagnostics.Remove(diagnostic);
                    }
                    tdParse.Diagnostics.Add(sparse.Diagnostics);
                }

                if (sparse.EditedDevice != null)
                {
                    sms.Status = "OK";
                    DeviceController deviceController = new DeviceController();
                    deviceController.PutDeviceAttributes(sparse.EditedDevice.Id, sparse.EditedDevice);
                }
            }
            tdParse.SaveChanges();
        }
Example #4
0
 public DeviceMethods()
 {
     db = new TankToadContext();
 }
Example #5
0
        private void RPT()
        {
            TankToadContext td = new TankToadContext();

            var device = td.DeviceAttributes
                         .Where(d => d.CellNumber == _sms.From)
                         .FirstOrDefault();

            if (device == null)
            {
                ErrorList.Add("No Device");
                return;
            }

            Regex lines      = new Regex(@"^(.+)$", RegexOptions.Multiline);
            var   linesMatch = lines.Matches(_sms.Body);

            if (linesMatch.Count <= 1)
            {
                ErrorList.Add("No Body");
                return;
            }

            var body = linesMatch[1].Value;

            //user number
            var userNumberReg0 = (new Regex(@"ADD:\+(\d+)\D"));
            var userNumberStr0 = userNumberReg0.Match(body).Value;
            var userNumberReg1 = (new Regex(@"\+(\d+)"));
            var userNumber     = userNumberReg1.Match(userNumberStr0).Value;

            if (userNumber.Length == 0)
            {
                _error.Add("user number");
                return;
            }
            device.CustomerPhoneNumber = userNumber;

            //gateway number
            var gatewayNumberReg0 = (new Regex(@"ADM:\+(\d+)\D"));
            var gatewayNumberStr0 = gatewayNumberReg0.Match(body).Value;
            var gatewayNumberReg1 = (new Regex(@"\+(\d+)"));
            var gatewayNumber     = gatewayNumberReg1.Match(gatewayNumberStr0).Value;

            if (gatewayNumber.Length == 0)
            {
                _error.Add("gateway number");
                return;
            }
            device.GatewayPhoneNumber = gatewayNumber;

            //WLL
            var WLL_Reg0 = (new Regex(@"WLL:(\d+)\D"));
            var WLL_Str0 = WLL_Reg0.Match(body).Value;
            var WLL_Reg1 = (new Regex(@"(\d+)"));
            var WLL_str1 = WLL_Reg1.Match(WLL_Str0).Value;

            if (WLL_str1.Length == 0)
            {
                _error.Add("WLL");
                return;
            }
            int WLL = int.Parse(WLL_str1);

            device.WaterLowLevel = WLL;

            //WHL
            var WHL_Reg0 = (new Regex(@"WHL:(\d+)\D"));
            var WHL_Str0 = WHL_Reg0.Match(body).Value;
            var WHL_Reg1 = (new Regex(@"(\d+)"));
            var WHL_str1 = WHL_Reg1.Match(WHL_Str0).Value;

            if (WHL_str1.Length == 0)
            {
                _error.Add("WHL");
                return;
            }
            int WHL = int.Parse(WHL_str1);

            device.WaterHighLevel = WHL;

            //BLL
            var BLL_Reg0 = (new Regex(@"BLL:(\d+)\D"));
            var BLL_Str0 = BLL_Reg0.Match(body).Value;
            var BLL_Reg1 = (new Regex(@"(\d+)"));
            var BLL_str1 = BLL_Reg1.Match(BLL_Str0).Value;

            if (BLL_str1.Length == 0)
            {
                _error.Add("BLL");
                return;
            }
            int BLL = int.Parse(BLL_str1);

            device.BatteryLowLevel = BLL;

            //BSL
            var BSL_Reg0 = (new Regex(@"BSL:(\d+)\D"));
            var BSL_Str0 = BSL_Reg0.Match(body).Value;
            var BSL_Reg1 = (new Regex(@"(\d+)"));
            var BSL_str1 = BSL_Reg1.Match(BSL_Str0).Value;

            if (BSL_str1.Length == 0)
            {
                _error.Add("BSL");
                return;
            }
            int BSL = int.Parse(BSL_str1);

            device.BatteryShutdownLevel = BSL;

            //BTL
            var BTL_Reg0 = (new Regex(@"BTL:(\d+)\D"));
            var BTL_Str0 = BTL_Reg0.Match(body).Value;
            var BTL_Reg1 = (new Regex(@"(\d+)"));
            var BTL_str1 = BTL_Reg1.Match(BTL_Str0).Value;

            if (BTL_str1.Length == 0)
            {
                _error.Add("BTL");
                return;
            }
            int BTL = int.Parse(BTL_str1);

            device.BatteryTopLevel = BTL;

            //TOA
            var TOA_Reg0 = (new Regex(@"TOA:(\d+)/(\d+)/(\d+):(\d+):(\d+)\D"));
            var TOA_Str0 = TOA_Reg0.Match(body).Value;
            var TOA_Reg1 = (new Regex(@":(\d+):(\d+)\D"));
            var TOA_str1 = TOA_Reg1.Match(TOA_Str0).Value;
            var TOA_Reg2 = (new Regex(@"(\d+):(\d+)"));
            var TOA_str2 = TOA_Reg2.Match(TOA_str1).Value;

            if (TOA_str2.Length == 0)
            {
                _error.Add("TOA");
                return;
            }
            device.TimeOfAlert = TOA_str2;

            //CSP
            var CSP_Reg0 = (new Regex(@"CSP:(\d+)\D"));
            var CSP_Str0 = CSP_Reg0.Match(body).Value;
            var CSP_Reg1 = (new Regex(@"(\d+)"));
            var CSP_str1 = CSP_Reg1.Match(CSP_Str0).Value;

            if (CSP_str1.Length == 0)
            {
                _error.Add("CSP");
                return;
            }
            int CSP = int.Parse(CSP_str1);

            device.SleepPeriod = CSP;

            //ANS
            var ANS_Reg0 = (new Regex(@"ANS:(\d+)\D"));
            var ANS_Str0 = ANS_Reg0.Match(body).Value;
            var ANS_Reg1 = (new Regex(@"(\d+)"));
            var ANS_str1 = ANS_Reg1.Match(ANS_Str0).Value;

            if (ANS_str1.Length == 0)
            {
                _error.Add("ANS");
                return;
            }
            int ANS = int.Parse(ANS_str1);

            device.NumberOfSleepPeriods = ANS;

            //CEM
            var CEM_Reg0 = (new Regex(@"CEM:(\d+)\D"));
            var CEM_Str0 = CEM_Reg0.Match(body).Value;
            var CEM_Reg1 = (new Regex(@"(\d+)"));
            var CEM_str1 = CEM_Reg1.Match(CEM_Str0).Value;

            if (CEM_str1.Length == 0)
            {
                _error.Add("CEM");
                return;
            }
            int CEM = int.Parse(CEM_str1);

            device.EnergyMode = CEM;

            //COM
            var COM_Reg0 = (new Regex(@"COM:(\d+)\D"));
            var COM_Str0 = COM_Reg0.Match(body).Value;
            var COM_Reg1 = (new Regex(@"(\d+)"));
            var COM_str1 = COM_Reg1.Match(COM_Str0).Value;

            if (COM_str1.Length == 0)
            {
                _error.Add("COM");
                return;
            }
            int COM = int.Parse(COM_str1);

            device.OperationMode = COM;

            //VFC
            var VFC_Reg0 = (new Regex(@"VFC:(\d+)$"));
            var VFC_Str0 = VFC_Reg0.Match(body).Value;
            var VFC_Reg1 = (new Regex(@"(\d+)"));
            var VFC_str1 = VFC_Reg1.Match(VFC_Str0).Value;

            if (VFC_str1.Length == 0)
            {
                _error.Add("VFC");
                return;
            }
            int VFC = int.Parse(VFC_str1);

            device.VoltageFeedback = VFC;

            //smsId
            device.SMSId = _sms.Id;

            device.UpdateDate = DateTime.UtcNow;

            _editedDevice = device;
        }