Exemple #1
0
 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());
     }
 }
Exemple #2
0
        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());
            }
        }