public DeviceModel SaveMessage(Mt90Message message) { using (var conn = new SqlConnection(_connectionString)) { conn.Open(); var result = conn.Query <DeviceModel>(@"Mt90AddMessage", new { Protocol = 2, message.DataIdentifier, message.DataLength, message.CommandType, message.Imei, message.EventCode, message.Latitude, message.Longitude, message.DateAndTime, message.PositioningStatus, message.NumberOfSatellites, message.GsmSignalStrength, message.Speed, message.Direction, message.HorizontalPositioningAccuracy, message.Altitude, message.Mileage, message.RunTime, message.BaseStationInfo, message.IOPortStatus, message.AnalogInputValue, message.Ip, message.Battery, }, commandType: CommandType.StoredProcedure).FirstOrDefault(); return(result ?? new DeviceModel()); } }
public Mt90Message GetMt90Message(string s) { var message = new Mt90Message(); //"$$B145,863158020721157,AAA,35,52.691971,25.372790,150204170317,V,0,8,0,0,0.0,0,7067,150931,257|1|00FE|066A,0000,0000|0000|0000|09E9|0000,00000001,*" if (!String.IsNullOrEmpty(s) && s.IndexOf(',') > -1) { var messageArr = s.Split(','); if (messageArr.Length > 3 && messageArr[0].StartsWith("$$")) { var message0 = messageArr[0].Remove(0, 2); message.DataIdentifier = message0.Remove(1); message.DataLength = Convert.ToInt32(message0.Remove(0, 1)); message.Imei = messageArr[1]; message.CommandType = messageArr[2]; if (message.CommandType == "AAA") { message.EventCode = messageArr[3]; message.Latitude = messageArr[4]; message.Longitude = messageArr[5]; string formatString = "yy''MM''dd''HH''mm''ss"; string sampleData = messageArr[6];; message.DateAndTime = DateTime.ParseExact(sampleData, formatString, null); message.PositioningStatus = messageArr[7]; message.NumberOfSatellites = Convert.ToInt32(messageArr[8]); message.GsmSignalStrength = Convert.ToInt32(messageArr[9]); message.Speed = messageArr[10]; message.Direction = Convert.ToInt32(messageArr[11]); message.HorizontalPositioningAccuracy = messageArr[12]; message.Altitude = messageArr[13]; message.Mileage = messageArr[14]; message.RunTime = messageArr[15]; message.BaseStationInfo = messageArr[16]; message.IOPortStatus = messageArr[17]; message.AnalogInputValue = messageArr[18]; var batteryHex = messageArr[18].Split('|')[3]; var voltage = int.Parse(batteryHex, System.Globalization.NumberStyles.HexNumber);; var battery = ((voltage - 2114) * 100) / 492; message.Battery = battery; } else if (message.CommandType == "AFF") { message.EventCode = messageArr[4]; message.Latitude = messageArr[5]; message.Longitude = messageArr[6]; string formatString = "yy''MM''dd''HH''mm''ss"; string sampleData = messageArr[7];; message.DateAndTime = DateTime.ParseExact(sampleData, formatString, null); message.PositioningStatus = messageArr[8]; message.NumberOfSatellites = Convert.ToInt32(messageArr[9]); message.GsmSignalStrength = Convert.ToInt32(messageArr[10]); message.Speed = messageArr[11]; message.Direction = Convert.ToInt32(messageArr[12]); message.HorizontalPositioningAccuracy = messageArr[13]; message.Altitude = messageArr[14]; message.Mileage = messageArr[15]; message.RunTime = messageArr[16]; message.BaseStationInfo = messageArr[17]; message.IOPortStatus = messageArr[18]; message.AnalogInputValue = messageArr[19]; var batteryHex = messageArr[19].Split('|')[3]; var voltage = int.Parse(batteryHex, System.Globalization.NumberStyles.HexNumber);; var battery = ((voltage - 2114) * 100) / 492; message.Battery = battery; } else { } } } return(message); }
private void SendWebClients(Mt90Message message) { var device = repository.SaveMessage(message); if (device != null) { if (message.EventCode == "1") { try { var messageSms = HttpUtility.UrlEncode("На " + device.Name + " сработал SOS. https://maps.google.com/maps?q=" + device.LastCoordinates, Encoding.UTF8); Addressee(device, messageSms); } catch (Exception e) { (new FileHelper()).SaveMessage("error.txt", e.ToString()); } } if (message.EventCode == "21") { try { var messageSms = HttpUtility.UrlEncode(device.Name + " покинуло гео-зону. https://maps.google.com/maps?q=" + device.LastCoordinates, Encoding.UTF8); Addressee(device, messageSms); } catch (Exception e) { (new FileHelper()).SaveMessage("error.txt", e.ToString()); } } if (message.EventCode == "17") { try { var messageSms = HttpUtility.UrlEncode(device.Name + " села батарейка. https://maps.google.com/maps?q=" + device.LastCoordinates, Encoding.UTF8); var serviceBus = new ServiceBusHelper(); if (!String.IsNullOrEmpty(device.Addressee1) && device.Addressee1LowBattery) { var smsSender = new SmsSenderModel() { Sender = ConfigurationManager.AppSettings["SmsSender"].ToString(), Phone = device.Addressee1, Message = messageSms, CrateDate = DateTime.UtcNow }; var json = new JavaScriptSerializer().Serialize(smsSender); serviceBus.SendMessages("SmsSender", json); } if (!String.IsNullOrEmpty(device.Addressee2) && device.Addressee2LowBattery) { var smsSender = new SmsSenderModel() { Sender = ConfigurationManager.AppSettings["SmsSender"].ToString(), Phone = device.Addressee2, Message = messageSms, CrateDate = DateTime.UtcNow }; var json = new JavaScriptSerializer().Serialize(smsSender); serviceBus.SendMessages("SmsSender", json); } if (!String.IsNullOrEmpty(device.Addressee3) && device.Addressee3LowBattery) { var smsSender = new SmsSenderModel() { Sender = ConfigurationManager.AppSettings["SmsSender"].ToString(), Phone = device.Addressee3, Message = messageSms, CrateDate = DateTime.UtcNow }; var json = new JavaScriptSerializer().Serialize(smsSender); serviceBus.SendMessages("SmsSender", json); } if (!String.IsNullOrEmpty(device.Addressee4) && device.Addressee4LowBattery) { var smsSender = new SmsSenderModel() { Sender = ConfigurationManager.AppSettings["SmsSender"].ToString(), Phone = device.Addressee4, Message = messageSms, CrateDate = DateTime.UtcNow }; var json = new JavaScriptSerializer().Serialize(smsSender); serviceBus.SendMessages("SmsSender", json); } } catch (Exception e) { (new FileHelper()).SaveMessage("error.txt", e.ToString()); } } } try { using (var hubConnection = new HubConnection("http://cb.hranitel24.ru:80")) { var hubProxy = hubConnection.CreateHubProxy("deviceHub"); hubConnection.Start().Wait(); hubProxy.Invoke("UpdateDevice", (new JavaScriptSerializer()).Serialize(device)); } } catch (Exception e) { (new FileHelper()).SaveMessage("error.txt", e.ToString()); } try { using (var hubConnection = new HubConnection("http://crm.hranitel24.ru:80")) { var hubProxy = hubConnection.CreateHubProxy("deviceHub"); hubConnection.Start().Wait(); hubProxy.Invoke("UpdateDevice", (new JavaScriptSerializer()).Serialize(device)); } } catch (Exception e) { (new FileHelper()).SaveMessage("error.txt", e.ToString()); } }