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; }
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"); } }
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(); }
public DeviceMethods() { db = new TankToadContext(); }
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; }