From 48ba446936b51fffafa7c3600c0dadc6ac0e8c20 Mon Sep 17 00:00:00 2001
From: 陈嘉乐 <cjl@hdlchina.com.cn>
Date: 星期五, 10 七月 2020 10:52:13 +0800
Subject: [PATCH] 2020-07-10-01

---
 ZigbeeApp/Shared/Phone/ZigBee/Device/ZbGateway.cs | 1453 +++++++++++-----------------------------------------------
 1 files changed, 276 insertions(+), 1,177 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/ZigBee/Device/ZbGateway.cs b/ZigbeeApp/Shared/Phone/ZigBee/Device/ZbGateway.cs
index b85b2c0..9810450 100755
--- a/ZigbeeApp/Shared/Phone/ZigBee/Device/ZbGateway.cs
+++ b/ZigbeeApp/Shared/Phone/ZigBee/Device/ZbGateway.cs
@@ -22,14 +22,7 @@
     [System.Serializable]
     public class ZbGateway : ZbGatewayData
     {
-        public ZbGateway()
-        {
-            this.Type = DeviceType.ZbGateway;
-        }
-
-
-
-        #region 缃戝叧鐗规畩淇℃伅澶勭悊
+        #region 涓�鍫嗗彉閲�
         /// <summary>
         /// 涓荤綉鍏�
         /// </summary>
@@ -38,19 +31,7 @@
         {
             get
             {
-                return GateWayList.Find((obj) => { return obj.getGatewayBaseInfo.HomeId == Shared.Common.Config.Instance.HomeId && obj.getGatewayBaseInfo.IsMainGateWay; });
-            }
-        }
-
-        /// <summary>
-        /// 涓荤綉鍏�
-        /// </summary>
-        [Newtonsoft.Json.JsonIgnore]
-        public bool IsMainGateWay
-        {
-            get
-            {
-                return getGatewayBaseInfo != null && getGatewayBaseInfo.IsMainGateWay;
+                return GateWayList.Find((obj) => { return obj.HomeId == Shared.Common.Config.Instance.HomeId && obj.IsMainGateWay; });
             }
         }
 
@@ -71,20 +52,39 @@
         /// </summary>
         /// <value>The file path.</value>
         [Newtonsoft.Json.JsonIgnore]
-        public override string FilePath
+        public string FilePath
         {
             get
             {
-                var deviceType = Type.ToString();
-                var fileName = "Gateway_" + deviceType + "_" + this.getGatewayBaseInfo?.gwID;
+                var fileName = "Gateway_" + DeviceType.ZbGateway.ToString() + "_" + this.GwId;
                 return fileName;
+            }
+        }
+
+        /// <summary>
+        /// 绛夊緟浠庣綉鍏虫帴鏀舵暟鎹殑鏃堕棿
+        /// </summary>
+        /// <value>The wait receive data time.</value>
+        [Newtonsoft.Json.JsonIgnore]
+        public int WaitReceiveDataTime
+        {
+            get
+            {
+                if (Device.ZbGateway.RemoteMqttClient != null && Device.ZbGateway.RemoteMqttClient.IsConnected)
+                {
+                    return 10000;
+                }
+                else
+                {
+                    return 3000;
+                }
             }
         }
 
         /// <summary>
         /// 灞�鍩熺綉鍔犲瘑瀵嗙爜
         /// </summary>
-        string password;
+        private string password;
         /// <summary>
         /// 灞�鍩熺綉鍔犲瘑瀵嗛挜
         /// </summary>
@@ -101,27 +101,6 @@
             }
         }
 
-        #region variable 
-        /// <summary>
-        /// 杩滅▼杩炴帴鎴愬姛鏃剁殑鏃堕棿
-        /// </summary>
-        public static DateTime LoginRemoteDateTime = DateTime.Now;
-
-        /// <summary>
-        /// 鍚屾鍒拌繙绋嬬殑褰撳墠鏃堕棿鎴�
-        /// </summary>Re
-        public static ulong CurrentTimeStamp
-        {
-            get
-            {
-                return RemoteTimeStamp + (ulong)(DateTime.Now - LoginRemoteDateTime).TotalSeconds;
-            }
-        }
-
-        /// <summary>
-        /// 杩滅▼杩炴帴鎴愬姛鏃剁殑鏃堕棿鎴�
-        /// </summary>
-        public static ulong RemoteTimeStamp;
         /// <summary>
         /// 缃戝叧鏄惁鍔犲瘑
         /// </summary>
@@ -138,71 +117,6 @@
         [Newtonsoft.Json.JsonIgnore]
         public static List<ZbGateway> GateWayList = new List<ZbGateway>();
 
-        //褰撳墠缃戝叧涓殑璁惧鍒楄〃
-        [Newtonsoft.Json.JsonIgnore]
-        public List<CommonDevice> DeviceList = new List<CommonDevice>();
-
-        /// <summary>
-        /// 鎵�鏈夌綉鍏充腑鐨勮澶囧垪琛�
-        /// </summary>
-        [Newtonsoft.Json.JsonIgnore]
-        public List<CommonDevice> AllGatewayDeviceList = new List<CommonDevice>();
-
-        /// <summary>
-        /// 缃戝叧涓満鏅垪琛�
-        /// 涓�涓満鏅腑鍖呭惈鎵�鏈変俊鎭紝鍖呮嫭鍦烘櫙璁惧淇℃伅
-        /// </summary>
-        [Newtonsoft.Json.JsonIgnore]
-        public static List<Scene.GetSceneAllInfo> AllSceneList = new List<Scene.GetSceneAllInfo>();
-
-        /// <summary>
-        /// 缃戝叧涓満鏅殑璁惧鍒楄〃
-        /// </summary>
-        [Newtonsoft.Json.JsonIgnore]
-        public List<Scene.GetSceneDeviceListInfo> SceneDeviceList = new List<Scene.GetSceneDeviceListInfo>();
-
-        /// <summary>
-        /// 缃戝叧涓�昏緫鍒楄〃
-        /// </summary>
-        [Newtonsoft.Json.JsonIgnore]
-        public static List<Logic.GetLogicInfoResponseData> LogicList = new List<Logic.GetLogicInfoResponseData>();
-
-        /// <summary>
-        /// 缃戝叧涓環dl绉佹湁鎸夐敭缁戝畾鍒楄〃
-        /// </summary>
-        [Newtonsoft.Json.JsonIgnore]
-        public List<HDLbutton> HdlButtonList = new List<HDLbutton>();
-
-        //缃戝叧涓柊鐨勮澶囧垪琛�
-        [Newtonsoft.Json.JsonIgnore]
-        public List<CommonDevice> ListNewDeviceInfoData = new List<CommonDevice>();
-
-        /// <summary>
-        /// 绉佹湁鎸夐敭淇℃伅鍒楄〃
-        /// </summary>
-        [Newtonsoft.Json.JsonIgnore]
-        public System.Collections.Generic.Dictionary<string, HDLbutton> hdlButtonInfoList = new Dictionary<string, HDLbutton>();
-
-        /// <summary>
-        /// 浼犳劅鍣ㄤ俊鎭垪琛�
-        /// </summary>
-        [Newtonsoft.Json.JsonIgnore]
-        public System.Collections.Generic.Dictionary<string, Scene.TaskListInfo> sceneTaskInfoList = new Dictionary<string, Scene.TaskListInfo>();
-
-        #region action variable
-        /// <summary>
-        /// 鎺ユ敹鏁版嵁鍚庡洖璋�
-        /// </summary>
-        [Newtonsoft.Json.JsonIgnore]
-        Action<object> action;
-        /// <summary>
-        /// 璁剧疆鏁版嵁鍥炶皟
-        /// </summary>
-        public void SetAction(Action<object> action, int timeOut = 1000)
-        {
-            this.action = action;
-        }
-
         /// <summary>
         /// 缃戝叧鎺ㄩ�佹暟鎹�
         /// <para>绗竴涓弬鏁帮細濡傛灉涓� DeviceInComingRespon:璁惧鏂颁笂鎶�</para>
@@ -217,24 +131,15 @@
         /// <para>绗竴涓弬鏁帮細濡傛灉涓� ZoneTriggerReport:闃插尯琚Е鍙戞椂鎶ュ憡</para>
         /// <para>绗竴涓弬鏁帮細濡傛灉涓� LogicExecuteReport:閫昏緫琚皟鐢ㄥ弽棣�</para>
         /// <para>绗竴涓弬鏁帮細濡傛灉涓� TimingWillArrive:鏃堕棿鐐规潯浠舵帹杩熸墽琛�</para>
-        /// para>绗竴涓弬鏁帮細 濡傛灉涓� ModeTriggerReport:妯″紡瀹夐槻鍔ㄤ綔琚渶缁堟縺娲绘椂鍙戦�佹姤璀︿俊鎭�</para>
+        /// <para>绗竴涓弬鏁帮細 濡傛灉涓� ModeTriggerReport:妯″紡瀹夐槻鍔ㄤ綔琚渶缁堟縺娲绘椂鍙戦�佹姤璀︿俊鎭�</para>
         /// <para>绗竴涓弬鏁帮細濡傛灉涓� EnOrWithdrawSucceedReport:閫氳繃澶栭儴鏂瑰紡甯冮槻鎾ら槻鎴愬姛鏃舵姤鍛婃伅</para>
         /// <para>绗竴涓弬鏁帮細濡傛灉涓� PushTargetInfoReport:鑳佽揩瀵嗙爜鎾ら槻鏃剁煭淇℃帹閫�</para>
-        /// <para>绗竴涓弬鏁帮細濡傛灉涓� DeviceDefaultAck:鑺傜偣璁惧榛樿鍙嶉</para>
         /// <para>绗竴涓弬鏁帮細濡傛灉涓� DDevice/IsGetEpointInfo:鏈夋柊璁惧鍔犲叆zigbee缃戠粶鍙嶉</para>璁惧璇锋眰APP鑾峰彇鍗囩骇鏁版嵁
         /// <para>绗竴涓弬鏁帮細濡傛灉涓� Device/DeviceJoinZbNet:鑾峰彇鏂拌澶囨墍鏈夌鐐逛俊鎭槸鍚︽垚鍔熷弽棣�</para>
         /// <para>绗竴涓弬鏁帮細濡傛灉涓� DeviceRequestAcUpdateData: 璁惧璇锋眰绌鸿皟鍙戝崌绾ф暟鎹�</para>
         /// </summary>
         [Newtonsoft.Json.JsonIgnore]
         public Action<string, object> ReportAction;
-        /// <summary>
-        /// 浜戠閫氳閿欒鏁版嵁涓婃姤
-        ///<para>"ForwardGatewayNoOnLine", "褰撳墠鎿嶄綔鐨勭綉鍏充笉鍦ㄧ嚎"</para>
-        ///<para>"AppTimeOut", "浠庝簯绔幏鍙栨暟鎹秴鏃讹紝璇烽噸鏂拌幏鍙�"</para>
-        ///<para>"AppNoLogin", "鐧诲綍杩囨湡锛岃閲嶆柊鐧诲綍"</para>
-        /// </summary>
-        [Newtonsoft.Json.JsonIgnore]
-        public Action<string, string> CloudErrorAction;
 
         /// <summary>
         /// 缃戝叧鏂囦欢娴佸唴瀹归�氱煡
@@ -253,8 +158,7 @@
         /// </summary>
         [Newtonsoft.Json.JsonIgnore]
         public Action<string, string> Actions;
-        #endregion
-        #endregion
+
         #endregion
 
         #region 缃戝叧API
@@ -275,8 +179,7 @@
 
                     if (topic == gatewayID + "/" + "Error_Respon")
                     {
-                        var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = this.getGatewayBaseInfo?.gwID };
-                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.ErrorResponData>(jobject["Data"].ToString());
+                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString());
 
                         if (temp == null)
                         {
@@ -284,24 +187,21 @@
                         }
                         else
                         {
-                            d = new GetGwVersionAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) };
+                            d = new GetGwVersionAllData { errorResponData = temp, errorMessageBase = CommonDevice.ErrorMess(temp.Error) };
                         }
                     }
 
                     if (topic == gatewayID + "/" + "GetZbGwVersionRespon")
                     {
-                        var gatewayTemp = new ZbGateway() { DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = this.getGatewayBaseInfo?.gwID };
-                        gatewayTemp.getGwVersion = Newtonsoft.Json.JsonConvert.DeserializeObject<GetGwVersionData>(jobject["Data"].ToString());
+                        var getGwVersion = Newtonsoft.Json.JsonConvert.DeserializeObject<GetGwVersionData>(jobject["Data"].ToString());
 
-                        if (gatewayTemp.getGwVersion == null)
+                        if (getGwVersion == null)
                         {
                             d = new GetGwVersionAllData { errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖" };
                         }
                         else
                         {
-                            d = new GetGwVersionAllData { getGwVersion = gatewayTemp.getGwVersion };
-                            AppVersion = gatewayTemp.getGwVersion.AppVersion;
-                            ZigbeeVersion = gatewayTemp.getGwVersion.ZigbeeVersion;
+                            d = new GetGwVersionAllData { getGwVersion = getGwVersion };
                             //Save();
                             DebugPrintLog($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{topic}");
                         }
@@ -353,16 +253,15 @@
                     if (topic == gatewayID + "/" + "GetZbGwInfo_Respon")
                     {
                         var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
-                        var gatewayTemp = new ZbGateway() { DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = getGatewayBaseInfo.gwID };
-                        gatewayTemp.getGwInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<GetGwData>(jobject["Data"].ToString());
+                        var getGwInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<GetGwData>(jobject["Data"].ToString());
 
-                        if (gatewayTemp.getGwInfo == null)
+                        if (getGwInfo == null)
                         {
                             data = new GetGwAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" };
                         }
                         else
                         {
-                            data = new GetGwAllData { getGwData = gatewayTemp.getGwInfo };
+                            data = new GetGwAllData { getGwData = getGwInfo };
                             DebugPrintLog($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{topic}");
                         }
                     }
@@ -407,8 +306,7 @@
 
                     if (topic == gatewayID + "/" + "Error_Respon")
                     {
-                        var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = this.getGatewayBaseInfo?.gwID };
-                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.ErrorResponData>(jobject["Data"].ToString());
+                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString());
 
                         if (temp == null)
                         {
@@ -416,13 +314,12 @@
                         }
                         else
                         {
-                            d = new GetMacResponData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) };
+                            d = new GetMacResponData { errorResponData = temp, errorMessageBase = CommonDevice.ErrorMess(temp.Error) };
                         }
                     }
 
                     if (topic == gatewayID + "/" + "ZbGw/GetMac_Respon")
                     {
-                        var gatewayTemp = new ZbGateway() { DataID = jobject.Value<int>("Data_ID") };
                         var tempData = Newtonsoft.Json.JsonConvert.DeserializeObject<MacAddrData>(jobject["Data"].ToString());
 
                         if (tempData == null)
@@ -477,8 +374,7 @@
 
                     if (topic == gatewayID + "/" + "Error_Respon")
                     {
-                        var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = this.getGatewayBaseInfo?.gwID };
-                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.ErrorResponData>(jobject["Data"].ToString());
+                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString());
 
                         if (temp == null)
                         {
@@ -486,22 +382,21 @@
                         }
                         else
                         {
-                            d = new GwReNameAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) };
+                            d = new GwReNameAllData { errorResponData = temp, errorMessageBase = CommonDevice.ErrorMess(temp.Error) };
                         }
                     }
 
                     if (topic == gatewayID + "/" + "GwReName_Respon")
                     {
-                        var gatewayTemp = new ZbGateway() { DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = this.getGatewayBaseInfo?.gwID };
-                        gatewayTemp.gwRename = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.GwReNameData>(jobject["Data"].ToString());
+                        var gwRename = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.GwReNameData>(jobject["Data"].ToString());
 
-                        if (gatewayTemp.gwRename == null)
+                        if (gwRename == null)
                         {
                             d = new GwReNameAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" };
                         }
                         else
                         {
-                            d = new GwReNameAllData { gwReNameData = gatewayTemp.gwRename };
+                            d = new GwReNameAllData { gwReNameData = gwRename };
                             DebugPrintLog($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}");
                         }
                     }
@@ -560,8 +455,7 @@
 
                     if (topic == gatewayID + "/" + "Error_Respon")
                     {
-                        var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = this.getGatewayBaseInfo?.gwID };
-                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.ErrorResponData>(jobject["Data"].ToString());
+                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString());
 
                         if (temp == null)
                         {
@@ -569,21 +463,20 @@
                         }
                         else
                         {
-                            d = new GwSetHomeIdAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) };
+                            d = new GwSetHomeIdAllData { errorResponData = temp, errorMessageBase = CommonDevice.ErrorMess(temp.Error) };
                         }
                     }
 
                     if (topic == gatewayID + "/" + "GwSetHomeId_Respon")
                     {
-                        var gatewayTemp = new ZbGateway() { DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = this.getGatewayBaseInfo?.gwID };
-                        gatewayTemp.gwSetHomeId = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.GwSetHomeIdData>(jobject["Data"].ToString());
-                        if (gatewayTemp.gwSetHomeId == null)
+                        var gwSetHomeId = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.GwSetHomeIdData>(jobject["Data"].ToString());
+                        if (gwSetHomeId == null)
                         {
                             d = new GwSetHomeIdAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" };
                         }
                         else
                         {
-                            d = new GwSetHomeIdAllData { gwSetHomeIdData = gatewayTemp.gwSetHomeId };
+                            d = new GwSetHomeIdAllData { gwSetHomeIdData = gwSetHomeId };
                             DebugPrintLog($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}");
                         }
                     }
@@ -637,498 +530,6 @@
         }
         #endregion
 
-        #region 鑾峰彇宸插叆缃戣澶囦俊鎭�
-        /// <summary>
-        /// 鑾峰彇缃戝叧璁惧淇℃伅(娉ㄦ剰锛岃繖涓帴鍙d細琚幓鎺夛級
-        /// </summary>
-        public async System.Threading.Tasks.Task<List<CommonDevice>> GetGwDeviceList()
-        {
-            DeviceList.Clear();
-            return await System.Threading.Tasks.Task.Run((Func<System.Threading.Tasks.Task<List<CommonDevice>>>)(async () =>
-            {
-                var dateTime = DateTime.Now;
-                bool canBreak = false;
-                Action<string, string> action = (topic, message) =>
-                {
-                    var gatewayID = topic.Split('/')[0];
-                    var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
-
-                    if (topic == gatewayID + "/" + "DeviceInfoRespon")
-                    {
-                        dateTime = DateTime.Now;
-                        var totalNum = Newtonsoft.Json.JsonConvert.DeserializeObject<int>(jobject["Data"]["TotalNum"].ToString());
-                        if (totalNum == 0)
-                        {
-                            canBreak = true;
-                            return;
-                        }
-                        var deviceID = jobject.Value<int>("Device_ID");
-                        switch ((DeviceType)(deviceID))
-                        {
-                            //case DeviceType.DimmableLight:
-                            //    var dimmableLight = new DimmableLight() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = this.getGatewayBaseInfo?.gwID };
-                            //    dimmableLight.DeviceInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<DimmableLight.DeviceInfoData>(jobject["Data"].ToString());
-                            //    if (dimmableLight.DeviceInfo == null)
-                            //    {
-                            //        return;
-                            //    }
-                            //    var light = DeviceList.Find(obj => obj.DeviceID == dimmableLight.DeviceID && obj.DeviceAddr == dimmableLight.DeviceAddr && obj.DeviceEpoint == dimmableLight.DeviceEpoint);
-                            //    if (light == null)
-                            //    {
-                            //        DeviceList.Add(dimmableLight);
-                            //        dimmableLight.DeviceName = dimmableLight.DeviceInfo.MacName;
-                            //        dimmableLight.DeviceEpointName = dimmableLight.DeviceInfo.DeviceName;
-                            //        dimmableLight.ImgVersion = dimmableLight.DeviceInfo.ImgVersion;
-                            //        dimmableLight.HwVersion = dimmableLight.DeviceInfo.HwVersion;
-                            //        dimmableLight.IsOnline = dimmableLight.DeviceInfo.IsOnline;
-                            //        dimmableLight.DriveCode = dimmableLight.DeviceInfo.DriveCode;
-                            //        dimmableLight.ImgTypeId = dimmableLight.DeviceInfo.ImgTypeId;
-                            //        dimmableLight.IasDeviceType = dimmableLight.DeviceInfo.DeviceType;
-                            //        dimmableLight.Profile = dimmableLight.DeviceInfo.Profile;
-                            //        dimmableLight.InClusterList = dimmableLight.DeviceInfo.InClusterList;
-                            //        dimmableLight.OutClusterList = dimmableLight.DeviceInfo.OutClusterList;
-                            //        dimmableLight.AttributeStatus = dimmableLight.DeviceInfo.AttributeStatus;
-                            //        //dimmableLight.Save();
-                            //    }
-                            //    else
-                            //    {
-                            //        light.DeviceInfo = dimmableLight.DeviceInfo;
-                            //        light.DeviceName = dimmableLight.DeviceInfo.MacName;
-                            //        light.DeviceEpointName = dimmableLight.DeviceInfo.DeviceName;
-                            //        light.ImgVersion = dimmableLight.DeviceInfo.ImgVersion;
-                            //        light.HwVersion = dimmableLight.DeviceInfo.HwVersion;
-                            //        light.IsOnline = dimmableLight.DeviceInfo.IsOnline;
-                            //        light.DriveCode = dimmableLight.DeviceInfo.DriveCode;
-                            //        light.ImgTypeId = dimmableLight.DeviceInfo.ImgTypeId;
-                            //        light.IasDeviceType = dimmableLight.DeviceInfo.DeviceType;
-                            //        light.Profile = dimmableLight.DeviceInfo.Profile;
-                            //        light.InClusterList = dimmableLight.DeviceInfo.InClusterList;
-                            //        light.OutClusterList = dimmableLight.DeviceInfo.OutClusterList;
-                            //        light.AttributeStatus = dimmableLight.DeviceInfo.AttributeStatus;
-                            //        //dimmableLight.ReSave();
-                            //    }
-                            //    DebugPrintLog($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}");
-
-                            //    break;
-                            //case DeviceType.OnOffSwitch:
-                            //    var panel = new Panel() { Time = jobject.Value<int>("Time"), DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = this.getGatewayBaseInfo?.gwID };
-                            //    panel.DeviceInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<Panel.DeviceInfoData>(jobject["Data"].ToString());
-                            //    if (panel.DeviceInfo == null)
-                            //    {
-                            //        return;
-                            //    }
-                            //    var panelInfo = DeviceList.Find(obj => obj.DeviceID == panel.DeviceID && obj.DeviceAddr == panel.DeviceAddr && obj.DeviceEpoint == panel.DeviceEpoint);
-                            //    if (panelInfo == null)
-                            //    {
-                            //        DeviceList.Add(panel);
-                            //        panel.DeviceName = panel.DeviceInfo.MacName;
-                            //        panel.DeviceEpointName = panel.DeviceInfo.DeviceName;
-                            //        panel.ImgTypeId = panel.DeviceInfo.ImgTypeId;
-                            //        panel.ImgVersion = panel.DeviceInfo.ImgVersion;
-                            //        panel.HwVersion = panel.DeviceInfo.HwVersion;
-                            //        panel.IasDeviceType = panel.DeviceInfo.DeviceType;
-                            //        panel.IsOnline = panel.DeviceInfo.IsOnline;
-                            //        panel.DriveCode = panel.DeviceInfo.DriveCode;
-                            //        panel.Profile = panel.DeviceInfo.Profile;
-                            //        panel.InClusterList = panel.DeviceInfo.InClusterList;
-                            //        panel.OutClusterList = panel.DeviceInfo.OutClusterList;
-                            //        panel.AttributeStatus = panel.DeviceInfo.AttributeStatus;
-                            //        //panel.Save();
-                            //    }
-                            //    else
-                            //    {
-                            //        panelInfo.DeviceInfo = panel.DeviceInfo;
-                            //        panelInfo.DeviceName = panel.DeviceInfo.MacName;
-                            //        panelInfo.DeviceEpointName = panel.DeviceInfo.DeviceName;
-                            //        panelInfo.ImgVersion = panel.DeviceInfo.ImgVersion;
-                            //        panelInfo.HwVersion = panel.DeviceInfo.HwVersion;
-                            //        panelInfo.IsOnline = panel.DeviceInfo.IsOnline;
-                            //        panelInfo.DriveCode = panel.DeviceInfo.DriveCode;
-                            //        panelInfo.IasDeviceType = panel.DeviceInfo.DeviceType;
-                            //        panelInfo.Profile = panel.DeviceInfo.Profile;
-                            //        panelInfo.ImgTypeId = panel.DeviceInfo.ImgTypeId;
-                            //        panelInfo.InClusterList = panel.DeviceInfo.InClusterList;
-                            //        panelInfo.OutClusterList = panel.DeviceInfo.OutClusterList;
-                            //        panelInfo.AttributeStatus = panel.DeviceInfo.AttributeStatus;
-                            //        //panel.ReSave();
-                            //    }
-                            //    DebugPrintLog($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}");
-
-                            //    break;
-                            //case DeviceType.OnOffOutput:
-                            //    var toggleLight = new ToggleLight() { Time = jobject.Value<int>("Time"), DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = this.getGatewayBaseInfo?.gwID };
-                            //    toggleLight.DeviceInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<ToggleLight.DeviceInfoData>(jobject["Data"].ToString());
-                            //    if (toggleLight.DeviceInfo == null)
-                            //    {
-                            //        return;
-                            //    }
-                            //    var toggleLightInfo = DeviceList.Find(obj => obj.DeviceID == toggleLight.DeviceID && obj.DeviceAddr == toggleLight.DeviceAddr && obj.DeviceEpoint == toggleLight.DeviceEpoint);
-                            //    if (toggleLightInfo == null)
-                            //    {
-                            //        DeviceList.Add(toggleLight);
-                            //        toggleLight.DeviceName = toggleLight.DeviceInfo.MacName;
-                            //        toggleLight.DeviceEpointName = toggleLight.DeviceInfo.DeviceName;
-                            //        toggleLight.ImgVersion = toggleLight.DeviceInfo.ImgVersion;
-                            //        toggleLight.HwVersion = toggleLight.DeviceInfo.HwVersion;
-                            //        toggleLight.IsOnline = toggleLight.DeviceInfo.IsOnline;
-                            //        toggleLight.DriveCode = toggleLight.DeviceInfo.DriveCode;
-                            //        toggleLight.IasDeviceType = toggleLight.DeviceInfo.DeviceType;
-                            //        toggleLight.Profile = toggleLight.DeviceInfo.Profile;
-                            //        toggleLight.ImgTypeId = toggleLight.DeviceInfo.ImgTypeId;
-                            //        toggleLight.InClusterList = toggleLight.DeviceInfo.InClusterList;
-                            //        toggleLight.OutClusterList = toggleLight.DeviceInfo.OutClusterList;
-                            //        toggleLight.AttributeStatus = toggleLight.DeviceInfo.AttributeStatus;
-                            //        //toggleLight.Save();
-                            //    }
-                            //    else
-                            //    {
-                            //        toggleLightInfo.DeviceName = toggleLight.DeviceInfo.MacName;
-                            //        toggleLightInfo.DeviceEpointName = toggleLight.DeviceInfo.DeviceName;
-                            //        toggleLightInfo.ImgVersion = toggleLight.DeviceInfo.ImgVersion;
-                            //        toggleLightInfo.HwVersion = toggleLight.DeviceInfo.HwVersion;
-                            //        toggleLightInfo.IsOnline = toggleLight.DeviceInfo.IsOnline;
-                            //        toggleLightInfo.DriveCode = toggleLight.DeviceInfo.DriveCode;
-                            //        toggleLightInfo.IasDeviceType = toggleLight.DeviceInfo.DeviceType;
-                            //        toggleLightInfo.Profile = toggleLight.DeviceInfo.Profile;
-                            //        toggleLightInfo.ImgTypeId = toggleLight.DeviceInfo.ImgTypeId;
-                            //        toggleLightInfo.InClusterList = toggleLight.DeviceInfo.InClusterList;
-                            //        toggleLightInfo.OutClusterList = toggleLight.DeviceInfo.OutClusterList;
-                            //        toggleLightInfo.AttributeStatus = toggleLight.DeviceInfo.AttributeStatus;
-                            //        toggleLightInfo.DeviceInfo = toggleLight.DeviceInfo;
-                            //        //toggleLightInfo.ReSave();
-                            //    }
-                            //    DebugPrintLog($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}");
-
-                            //    break;
-                            //case DeviceType.AirSwitch:
-                            //    var airSwitch = new AirSwitch() { Time = jobject.Value<int>("Time"), DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = this.getGatewayBaseInfo?.gwID };
-                            //    airSwitch.DeviceInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<AirSwitch.DeviceInfoData>(jobject["Data"].ToString());
-                            //    if (airSwitch.DeviceInfo == null)
-                            //    {
-                            //        return;
-                            //    }
-                            //    var airSwitchInfo = DeviceList.Find(obj => obj.DeviceID == airSwitch.DeviceID && obj.DeviceAddr == airSwitch.DeviceAddr && obj.DeviceEpoint == airSwitch.DeviceEpoint);
-                            //    if (airSwitchInfo == null)
-                            //    {
-                            //        DeviceList.Add(airSwitch);
-                            //        airSwitch.DeviceName = airSwitch.DeviceInfo.MacName;
-                            //        airSwitch.DeviceEpointName = airSwitch.DeviceInfo.DeviceName;
-                            //        airSwitch.ImgVersion = airSwitch.DeviceInfo.ImgVersion;
-                            //        airSwitch.HwVersion = airSwitch.DeviceInfo.HwVersion;
-                            //        airSwitch.IsOnline = airSwitch.DeviceInfo.IsOnline;
-                            //        airSwitch.DriveCode = airSwitch.DeviceInfo.DriveCode;
-                            //        airSwitch.IasDeviceType = airSwitch.DeviceInfo.DeviceType;
-                            //        airSwitch.Profile = airSwitch.DeviceInfo.Profile;
-                            //        airSwitch.ImgTypeId = airSwitch.DeviceInfo.ImgTypeId;
-                            //        airSwitch.InClusterList = airSwitch.DeviceInfo.InClusterList;
-                            //        airSwitch.OutClusterList = airSwitch.DeviceInfo.OutClusterList;
-                            //        airSwitch.AttributeStatus = airSwitch.DeviceInfo.AttributeStatus;
-                            //        //airSwitch.Save();
-                            //    }
-                            //    else
-                            //    {
-                            //        airSwitchInfo.DeviceName = airSwitch.DeviceInfo.MacName;
-                            //        airSwitchInfo.DeviceEpointName = airSwitch.DeviceInfo.DeviceName;
-                            //        airSwitchInfo.ImgVersion = airSwitch.DeviceInfo.ImgVersion;
-                            //        airSwitchInfo.HwVersion = airSwitch.DeviceInfo.HwVersion;
-                            //        airSwitchInfo.IsOnline = airSwitch.DeviceInfo.IsOnline;
-                            //        airSwitchInfo.DriveCode = airSwitch.DeviceInfo.DriveCode;
-                            //        airSwitchInfo.IasDeviceType = airSwitch.DeviceInfo.DeviceType;
-                            //        airSwitchInfo.Profile = airSwitch.DeviceInfo.Profile;
-                            //        airSwitchInfo.ImgTypeId = airSwitch.DeviceInfo.ImgTypeId;
-                            //        airSwitchInfo.InClusterList = airSwitch.DeviceInfo.InClusterList;
-                            //        airSwitchInfo.OutClusterList = airSwitch.DeviceInfo.OutClusterList;
-                            //        airSwitchInfo.AttributeStatus = airSwitch.DeviceInfo.AttributeStatus;
-                            //        airSwitchInfo.DeviceInfo = airSwitch.DeviceInfo;
-                            //        // airSwitchInfo.ReSave();
-                            //    }
-                            //    DebugPrintLog($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}");
-
-                            //    break;
-                            //case DeviceType.WindowCoveringDevice:
-                            //    var windowCovering = new Rollershade() { DeviceID = jobject.Value<int>((object)"Device_ID"), DeviceAddr = jobject.Value<string>((object)"DeviceAddr"), DeviceEpoint = jobject.Value<int>((object)"Epoint"), DataID = jobject.Value<int>((object)"Data_ID"), CurrentGateWayId = this.getGatewayBaseInfo?.gwID };
-                            //    windowCovering.DeviceInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<Rollershade.DeviceInfoData>(jobject["Data"].ToString());
-                            //    if (windowCovering.DeviceInfo == null)
-                            //    {
-                            //        return;
-                            //    }
-                            //    var wc = DeviceList.Find(obj => obj.DeviceID == windowCovering.DeviceID && obj.DeviceAddr == windowCovering.DeviceAddr && obj.DeviceEpoint == windowCovering.DeviceEpoint);
-                            //    if (wc == null)
-                            //    {
-                            //        DeviceList.Add(windowCovering);
-                            //        windowCovering.DeviceName = windowCovering.DeviceInfo.MacName;
-                            //        windowCovering.DeviceEpointName = windowCovering.DeviceInfo.DeviceName;
-                            //        windowCovering.ImgVersion = windowCovering.DeviceInfo.ImgVersion;
-                            //        windowCovering.HwVersion = windowCovering.DeviceInfo.HwVersion;
-                            //        windowCovering.IsOnline = windowCovering.DeviceInfo.IsOnline;
-                            //        windowCovering.DriveCode = windowCovering.DeviceInfo.DriveCode;
-                            //        windowCovering.IasDeviceType = windowCovering.DeviceInfo.DeviceType;
-                            //        windowCovering.Profile = windowCovering.DeviceInfo.Profile;
-                            //        windowCovering.ImgTypeId = windowCovering.DeviceInfo.ImgTypeId;
-                            //        windowCovering.InClusterList = windowCovering.DeviceInfo.InClusterList;
-                            //        windowCovering.OutClusterList = windowCovering.DeviceInfo.OutClusterList;
-                            //        windowCovering.AttributeStatus = windowCovering.DeviceInfo.AttributeStatus;
-                            //        //windowCovering.Save();
-                            //    }
-                            //    else
-                            //    {
-                            //        wc.DeviceName = windowCovering.DeviceInfo.MacName;
-                            //        wc.DeviceEpointName = windowCovering.DeviceInfo.DeviceName;
-                            //        wc.DeviceInfo = windowCovering.DeviceInfo;
-                            //        wc.ImgVersion = windowCovering.DeviceInfo.ImgVersion;
-                            //        wc.HwVersion = windowCovering.DeviceInfo.HwVersion;
-                            //        wc.IsOnline = windowCovering.DeviceInfo.IsOnline;
-                            //        wc.DriveCode = windowCovering.DeviceInfo.DriveCode;
-                            //        wc.IasDeviceType = windowCovering.DeviceInfo.DeviceType;
-                            //        wc.Profile = windowCovering.DeviceInfo.Profile;
-                            //        wc.ImgTypeId = windowCovering.DeviceInfo.ImgTypeId;
-                            //        wc.InClusterList = windowCovering.DeviceInfo.InClusterList;
-                            //        wc.OutClusterList = windowCovering.DeviceInfo.OutClusterList;
-                            //        wc.AttributeStatus = windowCovering.DeviceInfo.AttributeStatus;
-                            //        // wc.ReSave();
-                            //    }
-                            //    DebugPrintLog($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}");
-                            //    break;
-                            //case DeviceType.IASZone:
-                            //    var ias = new IASZone() { Time = jobject.Value<int>("Time"), DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = this.getGatewayBaseInfo?.gwID };
-                            //    ias.DeviceInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<IASZone.DeviceInfoData>(jobject["Data"].ToString());
-                            //    if (ias.DeviceInfo == null)
-                            //    {
-                            //        return;
-                            //    }
-                            //    var infoIAS = DeviceList.Find(obj => obj.DeviceID == ias.DeviceID && obj.DeviceAddr == ias.DeviceAddr && obj.DeviceEpoint == ias.DeviceEpoint);
-                            //    if (infoIAS == null)
-                            //    {
-                            //        DeviceList.Add(ias);
-                            //        ias.DeviceName = ias.DeviceInfo.MacName;
-                            //        ias.DeviceEpointName = ias.DeviceInfo.DeviceName;
-                            //        ias.ImgVersion = ias.DeviceInfo.ImgVersion;
-                            //        ias.HwVersion = ias.DeviceInfo.HwVersion;
-                            //        ias.IsOnline = ias.DeviceInfo.IsOnline;
-                            //        ias.DriveCode = ias.DeviceInfo.DriveCode;
-                            //        ias.IasDeviceType = ias.DeviceInfo.DeviceType;
-                            //        ias.Profile = ias.DeviceInfo.Profile;
-                            //        ias.ImgTypeId = ias.DeviceInfo.ImgTypeId;
-                            //        ias.InClusterList = ias.DeviceInfo.InClusterList;
-                            //        ias.OutClusterList = ias.DeviceInfo.OutClusterList;
-                            //        ias.AttributeStatus = ias.DeviceInfo.AttributeStatus;
-                            //        //ias.Save();
-                            //    }
-                            //    else
-                            //    {
-                            //        infoIAS.DeviceName = ias.DeviceInfo.MacName;
-                            //        infoIAS.DeviceEpointName = ias.DeviceInfo.DeviceName;
-                            //        infoIAS.DeviceEpointName = ias.DeviceInfo.DeviceName;
-                            //        infoIAS.ImgVersion = ias.DeviceInfo.ImgVersion;
-                            //        infoIAS.HwVersion = ias.DeviceInfo.HwVersion;
-                            //        infoIAS.IsOnline = ias.DeviceInfo.IsOnline;
-                            //        infoIAS.DriveCode = ias.DeviceInfo.DriveCode;
-                            //        infoIAS.IasDeviceType = ias.DeviceInfo.DeviceType;
-                            //        infoIAS.Profile = ias.DeviceInfo.Profile;
-                            //        infoIAS.ImgTypeId = ias.DeviceInfo.ImgTypeId;
-                            //        infoIAS.InClusterList = ias.DeviceInfo.InClusterList;
-                            //        infoIAS.OutClusterList = ias.DeviceInfo.OutClusterList;
-                            //        infoIAS.AttributeStatus = ias.DeviceInfo.AttributeStatus;
-                            //        infoIAS.DeviceInfo = ias.DeviceInfo;
-                            //        //ias.ReSave();
-                            //    }
-                            //    DebugPrintLog($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}");
-                            //    break;
-                            //case DeviceType.OtaDevice:
-                            //case DeviceType.OtaPanelDevice:
-                            //var ota = new OTADevice() { Time = jobject.Value<int>("Time"), DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = this.getGatewayBaseInfo?.gwID };
-                            //ota.DeviceInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<DeviceInfoData>(jobject["Data"].ToString());
-                            //if (ota.DeviceInfo == null)
-                            //{
-                            //    return;
-                            //}
-                            //var infoOta = DeviceList.Find(obj => obj.DeviceID == ota.DeviceID && obj.DeviceAddr == ota.DeviceAddr && obj.DeviceEpoint == ota.DeviceEpoint);
-                            //if (infoOta == null)
-                            //{
-                            //    DeviceList.Add(ota);
-                            //    ota.DeviceName = ota.DeviceInfo.MacName;
-                            //    ota.DeviceEpointName = ota.DeviceInfo.DeviceName;
-                            //    ota.ImgVersion = ota.DeviceInfo.ImgVersion;
-                            //    ota.HwVersion = ota.DeviceInfo.HwVersion;
-                            //    ota.IsOnline = ota.DeviceInfo.IsOnline;
-                            //    ota.DriveCode = ota.DeviceInfo.DriveCode;
-                            //    ota.IasDeviceType = ota.DeviceInfo.DeviceType;
-                            //    ota.Profile = ota.DeviceInfo.Profile;
-                            //    ota.ImgTypeId = ota.DeviceInfo.ImgTypeId;
-                            //    ota.InClusterList = ota.DeviceInfo.InClusterList;
-                            //    ota.OutClusterList = ota.DeviceInfo.OutClusterList;
-                            //    ota.AttributeStatus = ota.DeviceInfo.AttributeStatus;
-                            //    //ota.Save();
-                            //}
-                            //else
-                            //{
-                            //    infoOta.DeviceName = ota.DeviceInfo.MacName;
-                            //    infoOta.DeviceEpointName = ota.DeviceInfo.DeviceName;
-                            //    infoOta.DeviceEpointName = ota.DeviceInfo.DeviceName;
-                            //    infoOta.ImgVersion = ota.DeviceInfo.ImgVersion;
-                            //    infoOta.HwVersion = ota.DeviceInfo.HwVersion;
-                            //    infoOta.IsOnline = ota.DeviceInfo.IsOnline;
-                            //    infoOta.DriveCode = ota.DeviceInfo.DriveCode;
-                            //    infoOta.IasDeviceType = ota.DeviceInfo.DeviceType;
-                            //    infoOta.Profile = ota.DeviceInfo.Profile;
-                            //    infoOta.ImgTypeId = ota.DeviceInfo.ImgTypeId;
-                            //    infoOta.InClusterList = ota.DeviceInfo.InClusterList;
-                            //    infoOta.OutClusterList = ota.DeviceInfo.OutClusterList;
-                            //    infoOta.AttributeStatus = ota.DeviceInfo.AttributeStatus;
-                            //    infoOta.DeviceInfo = ota.DeviceInfo;
-                            //    //ota.ReSave();
-                            //}
-                            //DebugPrintLog($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}");
-                            //break;
-                            //case DeviceType.Thermostat:
-                            //var thermostat = new ThermostatObj() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gateway.getGatewayBaseInfo.gwID };
-                            //thermostat.DeviceInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<ThermostatObj.DeviceInfoData>(jobject["Data"].ToString());
-                            //if (thermostat.DeviceInfo == null)
-                            //{
-                            //    return;
-                            //}
-                            //var ther = gateway.DeviceList.Find(obj => obj.DeviceID == thermostat.DeviceID && obj.DeviceAddr == thermostat.DeviceAddr && obj.DeviceEpoint == thermostat.DeviceEpoint);
-                            //if (ther == null)
-                            //{
-                            //    gateway.DeviceList.Add(thermostat);
-                            //    thermostat.DeviceName = thermostat.DeviceInfo.DeviceName;
-                            //    IO.LocalFileUtils.SaveDeviceInfo(thermostat, thermostat.DeviceEpoint.ToString());
-                            //}
-                            //else
-                            //{
-                            //    ther.DeviceName = thermostat.DeviceInfo.DeviceName;
-                            //    ther.DeviceInfo = thermostat.DeviceInfo;
-                            //    ZigBee.IO.LocalFileUtils.SaveDeviceInfo(ther, ther.DeviceEpoint.ToString());
-                            //}
-                            //break;
-                            //case DeviceType.TemperatureSensor:
-                            //var temperatureSensor = new TemperatureSensor() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gateway.getGatewayBaseInfo.gwID };
-                            //temperatureSensor.DeviceInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<TemperatureSensor.DeviceInfoData>(jobject["Data"].ToString());
-                            //if (temperatureSensor.DeviceInfo == null)
-                            //{
-                            //    return;
-                            //}
-                            //var ts = gateway.DeviceList.Find(obj => obj.DeviceID == temperatureSensor.DeviceID && obj.DeviceAddr == temperatureSensor.DeviceAddr && obj.DeviceEpoint == temperatureSensor.DeviceEpoint);
-                            //if (ts == null)
-                            //{
-                            //    gateway.DeviceList.Add(temperatureSensor);
-                            //    temperatureSensor.DeviceName = temperatureSensor.DeviceInfo.DeviceName;
-                            //    IO.LocalFileUtils.SaveDeviceInfo(temperatureSensor, temperatureSensor.DeviceEpoint.ToString());
-                            //}
-                            //else
-                            //{
-                            //    ts.DeviceName = temperatureSensor.DeviceInfo.DeviceName;
-                            //    ts.DeviceInfo = temperatureSensor.DeviceInfo;
-                            //    IO.LocalFileUtils.SaveDeviceInfo(ts, ts.DeviceEpoint.ToString());
-                            //}
-                            //break;
-
-                        }
-                    }
-                    else if (topic == gatewayID + "/" + "DeviceInfoResponEnd")
-                    {
-                        canBreak = true;
-                    }
-                };
-
-                Actions += action;
-                DebugPrintLog("DeviceInfo Actions 鍚姩" + "_" + System.DateTime.Now.ToString());
-
-                try
-                {
-                    var jObject = new JObject { { "Cluster_ID", 0 }, { "Command", 93 } };
-                    Send("GetDeviceInfo", jObject.ToString());
-                }
-                catch { }
-
-                while (canBreak == false && (DateTime.Now - dateTime).TotalMilliseconds < 6000)
-                {
-                    await System.Threading.Tasks.Task.Delay(10);
-                }
-
-                Actions -= action;
-                DebugPrintLog("DeviceInfo_Actions 閫�鍑�" + System.DateTime.Now.ToString());
-                return DeviceList;
-            }));
-        }
-        #endregion
-
-        #region 鑾峰彇缃戝叧璁板綍鐨勮澶囧睘鎬х姸鎬�
-        /// <summary>
-        ///鑾峰彇缃戝叧璁板綍鐨勮澶囧睘鎬х姸鎬�
-        /// </summary>
-        public async System.Threading.Tasks.Task<GetStatusRecordAllInfo> GetStatusRecordAsync(string deviceAddr, int deviceEpoint)
-        {
-            return await System.Threading.Tasks.Task.Run(async () =>
-            {
-                GetStatusRecordAllInfo d = null;
-                Action<string, string> action = (topic, message) =>
-                {
-                    var gatewayID = topic.Split('/')[0];
-                    var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
-
-                    if (topic == gatewayID + "/" + "Error_Respon")
-                    {
-                        var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = this.getGatewayBaseInfo?.gwID };
-                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.ErrorResponData>(jobject["Data"].ToString());
-
-                        if (temp == null)
-                        {
-                            d = new GetStatusRecordAllInfo { errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖" };
-                        }
-                        else
-                        {
-                            d = new GetStatusRecordAllInfo { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) };
-                        }
-                    }
-
-                    if (topic == gatewayID + "/" + "GetStatusRecord_Respon")
-                    {
-                        var gatewayTemp = new ZbGateway() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = this.getGatewayBaseInfo?.gwID };
-                        gatewayTemp.getStatusRecordInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.GetStatusRecordInfo>(jobject["Data"].ToString());
-
-                        if (gatewayTemp.getStatusRecordInfo == null)
-                        {
-                            d = new GetStatusRecordAllInfo { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" };
-                        }
-                        else
-                        {
-                            d = new GetStatusRecordAllInfo { getStatusRecordInfo = gatewayTemp.getStatusRecordInfo };
-                            DebugPrintLog($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}");
-                        }
-                    }
-                };
-                Actions += action;
-                DebugPrintLog("GetStatusRecord_Actions 鍚姩" + System.DateTime.Now.ToString());
-                try
-                {
-                    var jObject = new JObject { { "DeviceAddr", deviceAddr }, { "Epoint", deviceEpoint }, { "Cluster_ID", 0 }, { "Command", 80 } };
-                    Send("GetStatusRecord", jObject.ToString());
-
-                }
-                catch { }
-
-                var dateTime = DateTime.Now;
-                while ((DateTime.Now - dateTime).TotalMilliseconds < WaitReceiveDataTime)
-                {
-                    await System.Threading.Tasks.Task.Delay(10);
-                    if (d != null)
-                    {
-                        break;
-                    }
-                }
-                if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime)
-                {
-                    d = new GetStatusRecordAllInfo { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" };
-                }
-                Actions -= action;
-                DebugPrintLog("GetStatusRecord_Actions 閫�鍑�" + System.DateTime.Now.ToString());
-
-                return d;
-            });
-        }
-        #endregion
-
         #region 鍏佽璁惧鍏ョ綉
         ///<summary >
         /// 鎼滅储鏂板叆缃戠殑璁惧锛堝厑璁歌澶囧叆缃戯級
@@ -1138,7 +539,6 @@
         {
             await System.Threading.Tasks.Task.Run(async () =>
             {
-                CommonDevice commonDev = null;
                 Action<string, string> action1 = (topic, message) => { };
                 Actions += action1;
                 var jObject = new JObject { { "Cluster_ID", 0 }, { "Command", 94 } };
@@ -1193,8 +593,7 @@
 
                     if (topic == gatewayID + "/" + "Error_Respon")
                     {
-                        var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = this.getGatewayBaseInfo?.gwID };
-                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.ErrorResponData>(jobject["Data"].ToString());
+                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString());
 
                         if (temp == null)
                         {
@@ -1202,13 +601,12 @@
                         }
                         else
                         {
-                            d = new GwLinuxResetResponData { errorMessageBase = ErrorMess(temp.Error) };
+                            d = new GwLinuxResetResponData { errorMessageBase = CommonDevice.ErrorMess(temp.Error) };
                         }
                     }
 
                     if (topic == gatewayID + "/" + "GwLinuxReset_Respon")
                     {
-                        var gatewayTemp = new ZbGateway() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = this.getGatewayBaseInfo?.gwID };
                         var result = Newtonsoft.Json.JsonConvert.DeserializeObject<int>(jobject["Data"].ToString());
 
                         if (result == null)
@@ -1271,8 +669,7 @@
 
                     if (topic == gatewayID + "/" + "Error_Respon")
                     {
-                        var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = this.getGatewayBaseInfo?.gwID };
-                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.ErrorResponData>(jobject["Data"].ToString());
+                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString());
 
                         if (temp == null)
                         {
@@ -1280,13 +677,12 @@
                         }
                         else
                         {
-                            d = new GwRebootResponAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) };
+                            d = new GwRebootResponAllData { errorResponData = temp, errorMessageBase = CommonDevice.ErrorMess(temp.Error) };
                         }
                     }
 
                     if (topic == gatewayID + "/" + "GwReboot_Respon")
                     {
-                        var gatewayTemp = new ZbGateway() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = this.getGatewayBaseInfo?.gwID };
                         var result = Newtonsoft.Json.JsonConvert.DeserializeObject<int>(jobject["Data"].ToString());
 
                         if (result == null)
@@ -1347,8 +743,7 @@
 
                     if (topic == gatewayID + "/" + "Error_Respon")
                     {
-                        var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = this.getGatewayBaseInfo?.gwID };
-                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.ErrorResponData>(jobject["Data"].ToString());
+                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString());
 
                         if (temp == null)
                         {
@@ -1356,22 +751,21 @@
                         }
                         else
                         {
-                            d = new SaveNVFileResponseAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) };
+                            d = new SaveNVFileResponseAllData { errorResponData = temp, errorMessageBase = CommonDevice.ErrorMess(temp.Error) };
                         }
                     }
 
                     if (topic == gatewayID + "/" + "ZbGwOperation/SaveNVFile_Respon")
                     {
-                        var gatewayTemp = new ZbGateway() { DataID = jobject.Value<int>("Data_ID") };
-                        gatewayTemp.zbGwOperationSaveNVFileData = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.SaveNVFileResponseData>(jobject["Data"].ToString());
+                        var zbGwOperationSaveNVFileData = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.SaveNVFileResponseData>(jobject["Data"].ToString());
 
-                        if (gatewayTemp.zbGwOperationSaveNVFileData == null)
+                        if (zbGwOperationSaveNVFileData == null)
                         {
                             d = new SaveNVFileResponseAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" };
                         }
                         else
                         {
-                            d = new SaveNVFileResponseAllData { saveNVFileResponseData = gatewayTemp.zbGwOperationSaveNVFileData };
+                            d = new SaveNVFileResponseAllData { saveNVFileResponseData = zbGwOperationSaveNVFileData };
                             DebugPrintLog($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}");
                         }
                     }
@@ -1425,8 +819,7 @@
 
                     if (topic == gatewayID + "/" + "Error_Respon")
                     {
-                        var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = this.getGatewayBaseInfo?.gwID };
-                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.ErrorResponData>(jobject["Data"].ToString());
+                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString());
 
                         if (temp == null)
                         {
@@ -1434,14 +827,13 @@
                         }
                         else
                         {
-                            d = new RestoreNVAllDtta { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) };
+                            d = new RestoreNVAllDtta { errorResponData = temp, errorMessageBase = CommonDevice.ErrorMess(temp.Error) };
                         }
                     }
 
 
                     if (topic == gatewayID + "/" + "ZbGwOperation/RestoreNV_Respon")
                     {
-                        var gatewayTemp = new ZbGateway() { DataID = jobject.Value<int>("Data_ID") };
                         var tempData = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.RestoreNVDtta>(jobject["Data"].ToString());
 
                         if (tempData == null)
@@ -1505,21 +897,19 @@
 
                     if (topic == gatewayID + "/" + "Error_Respon")
                     {
-                        var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = this.getGatewayBaseInfo?.gwID };
-                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.ErrorResponData>(jobject["Data"].ToString());
+                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString());
                         if (temp == null)
                         {
                             d = new GwGetChannelResponData { errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖" };
                         }
                         else
                         {
-                            d = new GwGetChannelResponData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) };
+                            d = new GwGetChannelResponData { errorResponData = temp, errorMessageBase = CommonDevice.ErrorMess(temp.Error) };
                         }
                     }
 
                     if (topic == gatewayID + "/" + "ZbGw/GetChannel_Respon")
                     {
-                        var gatewayTemp = new ZbGateway() { DataID = jobject.Value<int>("Data_ID") };
                         var channel = Newtonsoft.Json.JsonConvert.DeserializeObject<int>(jobject["Data"]["Channel"].ToString());
                         d = new GwGetChannelResponData { channel = channel };
                         DebugPrintLog($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}");
@@ -1573,8 +963,7 @@
 
                     if (topic == gatewayID + "/" + "Error_Respon")
                     {
-                        var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = this.getGatewayBaseInfo?.gwID };
-                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.ErrorResponData>(jobject["Data"].ToString());
+                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString());
 
                         if (temp == null)
                         {
@@ -1582,13 +971,12 @@
                         }
                         else
                         {
-                            d = new ChangeChannelResponAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) };
+                            d = new ChangeChannelResponAllData { errorResponData = temp, errorMessageBase = CommonDevice.ErrorMess(temp.Error) };
                         }
                     }
 
                     if (topic == gatewayID + "/" + "ZbGw/ChangeChannel_Respon")
                     {
-                        var gatewayTemp = new ZbGateway() { DataID = jobject.Value<int>("Data_ID") };
                         var tempInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<ChangeChannelResponData>(jobject["Data"].ToString());
 
                         if (tempInfo == null)
@@ -1667,8 +1055,11 @@
         /// </summary>
         public async System.Threading.Tasks.Task<Panel.PanelSwitchLevelInfo> ClientDataPassthroughBytesAsync(string deviceAddr, int devicePoint, long dataLength, byte[] passData)
         {
+            var myDevice = Shared.Common.LocalDevice.Current.GetDevice(deviceAddr, devicePoint);
+
             Panel.PanelSwitchLevelInfo result = null;
-            if (Gateway == null)
+
+            if (myDevice.Gateway == null)
             {
                 result = new Panel.PanelSwitchLevelInfo { errorMessageBase = "褰撳墠娌℃湁缃戝叧" };
                 return result;
@@ -1682,8 +1073,7 @@
 
                     if (topic == gatewayID + "/" + "Error_Respon")
                     {
-                        var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = Gateway.getGatewayBaseInfo.gwID };
-                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.ErrorResponData>(jobject["Data"].ToString());
+                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString());
 
                         if (temp == null)
                         {
@@ -1692,24 +1082,23 @@
 
                         else
                         {
-                            result = new Panel.PanelSwitchLevelInfo { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) };
+                            result = new Panel.PanelSwitchLevelInfo { errorResponData = temp, errorMessageBase = CommonDevice.ErrorMess(temp.Error) };
                         }
                     }
 
                     if (topic == gatewayID + "/" + "ZbDataPassthrough")
                     {
-                        var gatewayTemp = new ZbGateway() { DataID = jobject.Value<int>("Data_ID") };
-                        gatewayTemp.clientDataPassthroughResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<ClientDataPassthroughResponseData>(jobject["Data"].ToString());
+                        var clientDataPassthroughResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ClientDataPassthroughResponseData>(jobject["Data"].ToString());
 
-                        if (gatewayTemp.clientDataPassthroughResponseData == null)
+                        if (clientDataPassthroughResponseData == null)
                         {
                             result = new Panel.PanelSwitchLevelInfo { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" };
                         }
                         else
                         {
-                            if (gatewayTemp.clientDataPassthroughResponseData?.PassData != null)
+                            if (clientDataPassthroughResponseData?.PassData != null)
                             {
-                                var data = gatewayTemp.clientDataPassthroughResponseData.PassData;
+                                var data = clientDataPassthroughResponseData.PassData;
                                 if (data.Length == 14)
                                 {
                                     var command = data[4].ToString() + data[5].ToString() + data[2].ToString() + data[3].ToString();
@@ -1726,7 +1115,7 @@
                     }
                 };
 
-                Gateway.Actions += action;
+                myDevice.Gateway.Actions += action;
                 System.Console.WriteLine("ClientDataPassthrough_Actions 鍚姩" + System.DateTime.Now.ToString());
 
                 try
@@ -1767,7 +1156,7 @@
                 {
                     result = new Panel.PanelSwitchLevelInfo { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" };
                 }
-                Gateway.Actions -= action;
+                myDevice.Gateway.Actions -= action;
                 System.Console.WriteLine("ClientDataPassthrough_Actions 閫�鍑�" + System.DateTime.Now.ToString());
 
                 return result;
@@ -1796,8 +1185,7 @@
 
                     if (topic == gatewayID + "/" + "Error_Respon")
                     {
-                        var gatewayTemp = new ZbGateway() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = this.getGatewayBaseInfo?.gwID };
-                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.ErrorResponData>(jobject["Data"].ToString());
+                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString());
 
                         if (temp == null)
                         {
@@ -1805,24 +1193,16 @@
                         }
                         else
                         {
-                            d = new PassthroughAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) };
+                            d = new PassthroughAllData { errorResponData = temp, errorMessageBase = CommonDevice.ErrorMess(temp.Error) };
                         }
                     }
 
                     if (topic == gatewayID + "/" + "ZbDataPassthrough")
                     {
-                        var gatewayTemp = new ZbGateway() { DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = this.getGatewayBaseInfo?.gwID };
                         var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<string>(jobject["Data"].ToString());
 
-                        if (gatewayTemp.getGwVersion == null)
-                        {
-                            d = new PassthroughAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" };
-                        }
-                        else
-                        {
-                            d = new PassthroughAllData { passData = temp };
-                            DebugPrintLog($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}");
-                        }
+                        d = new PassthroughAllData { passData = temp };
+                        DebugPrintLog($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}");
                     }
                 };
                 Actions += action;
@@ -1875,8 +1255,7 @@
 
                     if (topic == gatewayID + "/" + "Error_Respon")
                     {
-                        var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = this.getGatewayBaseInfo?.gwID };
-                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.ErrorResponData>(jobject["Data"].ToString());
+                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString());
 
                         if (temp == null)
                         {
@@ -1885,13 +1264,12 @@
 
                         else
                         {
-                            d = new LinuxUpgradeAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) };
+                            d = new LinuxUpgradeAllData { errorResponData = temp, errorMessageBase = CommonDevice.ErrorMess(temp.Error) };
                         }
                     }
 
                     if (topic == gatewayID + "/" + "ZbGwOperation/LinuxUpgrade_Respon")
                     {
-                        var gatewayTemp = new ZbGateway() { DataID = jobject.Value<int>("Data_ID") };
                         var result = Newtonsoft.Json.JsonConvert.DeserializeObject<int>(jobject["Data"]["Result"].ToString());
                         d = new LinuxUpgradeAllData { Result = result };
                         DebugPrintLog($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}");
@@ -1952,8 +1330,7 @@
 
                     if (topic == gatewayID + "/" + "Error_Respon")
                     {
-                        var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = getGatewayBaseInfo.gwID };
-                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.ErrorResponData>(jobject["Data"].ToString());
+                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString());
 
                         if (temp == null)
                         {
@@ -1962,22 +1339,21 @@
 
                         else
                         {
-                            d = new ZbGwOperationUpgradeAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) };
+                            d = new ZbGwOperationUpgradeAllData { errorResponData = temp, errorMessageBase = CommonDevice.ErrorMess(temp.Error) };
                         }
                     }
 
                     if (topic == gatewayID + "/" + "ZbGwOperation/Upgrade_Respon")
                     {
-                        var gatewayTemp = new ZbGateway() { DataID = jobject.Value<int>("Data_ID") };
-                        gatewayTemp.zbGwOperationUpgradeData = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.ZbGwOperationUpgradeData>(jobject["Data"].ToString());
+                        zbGwOperationUpgradeData = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.ZbGwOperationUpgradeData>(jobject["Data"].ToString());
 
-                        if (gatewayTemp.zbGwOperationUpgradeData == null)
+                        if (zbGwOperationUpgradeData == null)
                         {
                             d = new ZbGwOperationUpgradeAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" };
                         }
                         else
                         {
-                            d = new ZbGwOperationUpgradeAllData { bGwOperationUpgradeData = gatewayTemp.zbGwOperationUpgradeData };
+                            d = new ZbGwOperationUpgradeAllData { bGwOperationUpgradeData = zbGwOperationUpgradeData };
                             DebugPrintLog($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}");
                         }
                     }
@@ -2023,11 +1399,11 @@
         /// <returns>The file async.</returns>
         /// <param name="distributedMark">Distributed mark:鍥轰欢鍞竴鏍囪瘑</param>
         /// <param name="imageName">Image name:鍥轰欢鐗堟湰</param>
-        public async System.Threading.Tasks.Task<DownloadFileResponAllData> DownloadFileAsync(string distributedMark, string imageName)
+        public async System.Threading.Tasks.Task<CommonDevice.DownloadFileResponAllData> DownloadFileAsync(string distributedMark, string imageName)
         {
             return await System.Threading.Tasks.Task.Run(async () =>
             {
-                DownloadFileResponAllData d = null; ;
+                CommonDevice.DownloadFileResponAllData d = null; ;
                 Action<string, string> action = (topic, message) =>
                 {
                     var gatewayID = topic.Split('/')[0];
@@ -2035,32 +1411,30 @@
 
                     if (topic == gatewayID + "/" + "Error_Respon")
                     {
-                        var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = getGatewayBaseInfo.gwID };
-                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.ErrorResponData>(jobject["Data"].ToString());
+                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString());
 
                         if (temp == null)
                         {
-                            d = new DownloadFileResponAllData { errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖" };
+                            d = new CommonDevice.DownloadFileResponAllData { errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖" };
                         }
 
                         else
                         {
-                            d = new DownloadFileResponAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) };
+                            d = new CommonDevice.DownloadFileResponAllData { errorResponData = temp, errorMessageBase = CommonDevice.ErrorMess(temp.Error) };
                         }
                     }
 
                     if (topic == gatewayID + "/" + "DownloadFile_Respon")
                     {
-                        var gatewayTemp = new ZbGateway() { DataID = jobject.Value<int>("Data_ID") };
-                        gatewayTemp.downloadFileResponData = Newtonsoft.Json.JsonConvert.DeserializeObject<DownloadFileResponData>(jobject["Data"].ToString());
+                        var downloadFileResponData = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.DownloadFileResponData>(jobject["Data"].ToString());
 
-                        if (gatewayTemp.downloadFileResponData == null)
+                        if (downloadFileResponData == null)
                         {
-                            d = new DownloadFileResponAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" };
+                            d = new CommonDevice.DownloadFileResponAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" };
                         }
                         else
                         {
-                            d = new DownloadFileResponAllData { downloadFileResponData = gatewayTemp.downloadFileResponData };
+                            d = new CommonDevice.DownloadFileResponAllData { downloadFileResponData = downloadFileResponData };
                             DebugPrintLog($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}");
                         }
                     }
@@ -2091,7 +1465,7 @@
                 }
                 if ((DateTime.Now - dateTime).TotalMilliseconds > 30 * 1000)
                 {
-                    d = new DownloadFileResponAllData { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" };
+                    d = new CommonDevice.DownloadFileResponAllData { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" };
 
                 }
                 Actions -= action;
@@ -2118,8 +1492,7 @@
 
                     if (topic == gatewayID + "/" + "Error_Respon")
                     {
-                        var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = getGatewayBaseInfo.gwID };
-                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.ErrorResponData>(jobject["Data"].ToString());
+                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString());
 
                         if (temp == null)
                         {
@@ -2128,22 +1501,21 @@
 
                         else
                         {
-                            d = new CheckVDDriveCodeResponseAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) };
+                            d = new CheckVDDriveCodeResponseAllData { errorResponData = temp, errorMessageBase = CommonDevice.ErrorMess(temp.Error) };
                         }
                     }
 
                     if (topic == gatewayID + "/" + "VirtualDrive/CatDriveCode_Respon")
                     {
-                        var gatewayTemp = new ZbGateway() { DataID = jobject.Value<int>("Data_ID") };
-                        gatewayTemp.vDriveDriveCodeResponData = Newtonsoft.Json.JsonConvert.DeserializeObject<VDriveDriveCodeResponData>(jobject["Data"].ToString());
+                        var vDriveDriveCodeResponData = Newtonsoft.Json.JsonConvert.DeserializeObject<VDriveDriveCodeResponData>(jobject["Data"].ToString());
 
-                        if (gatewayTemp.vDriveDriveCodeResponData == null)
+                        if (vDriveDriveCodeResponData == null)
                         {
                             d = new CheckVDDriveCodeResponseAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" };
                         }
                         else
                         {
-                            d = new CheckVDDriveCodeResponseAllData { vDriveDriveCodeResponData = gatewayTemp.vDriveDriveCodeResponData };
+                            d = new CheckVDDriveCodeResponseAllData { vDriveDriveCodeResponData = vDriveDriveCodeResponData };
                             DebugPrintLog($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}");
                         }
                     }
@@ -2198,8 +1570,7 @@
 
                     if (topic == gatewayID + "/" + "Error_Respon")
                     {
-                        var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = getGatewayBaseInfo.gwID };
-                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.ErrorResponData>(jobject["Data"].ToString());
+                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString());
 
                         if (temp == null)
                         {
@@ -2208,22 +1579,21 @@
 
                         else
                         {
-                            d = new VirtualDriveUpgradeResponseAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) };
+                            d = new VirtualDriveUpgradeResponseAllData { errorResponData = temp, errorMessageBase = CommonDevice.ErrorMess(temp.Error) };
                         }
                     }
 
                     if (topic == gatewayID + "/" + "VirtualDrive/Upgrade_Respon")
                     {
-                        var gatewayTemp = new ZbGateway() { DataID = jobject.Value<int>("Data_ID") };
-                        gatewayTemp.virtualDriveUpgradeResponData = Newtonsoft.Json.JsonConvert.DeserializeObject<VirtualDriveUpgradeResponData>(jobject["Data"].ToString());
+                        virtualDriveUpgradeResponData = Newtonsoft.Json.JsonConvert.DeserializeObject<VirtualDriveUpgradeResponData>(jobject["Data"].ToString());
 
-                        if (gatewayTemp.virtualDriveUpgradeResponData == null)
+                        if (virtualDriveUpgradeResponData == null)
                         {
                             d = new VirtualDriveUpgradeResponseAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" };
                         }
                         else
                         {
-                            d = new VirtualDriveUpgradeResponseAllData { virtualDriveUpgradeResponData = gatewayTemp.virtualDriveUpgradeResponData };
+                            d = new VirtualDriveUpgradeResponseAllData { virtualDriveUpgradeResponData = virtualDriveUpgradeResponData };
                             DebugPrintLog($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{topic}");
                         }
                     }
@@ -2261,115 +1631,6 @@
 
         #endregion
 
-        //#region 涓婁紶绉佹湁鏁版嵁
-        //private bool backupSuccess = false;
-        /// <summary>
-        /// 涓婁紶绉佹湁鏁版嵁
-        /// </summary>
-        /// <returns>The data to gateway.</returns>
-        /// <param name="fileName">File name.</param>
-        /// <param name="dev">Dev.</param>
-        //public async System.Threading.Tasks.Task<SendFileResponseAllData> BackupDataToGateway(string fileName, CommonDevice dev)
-        //{
-        //    return await System.Threading.Tasks.Task.Run(async () =>
-        //    {
-        //        SendFileResponseAllData backUpStatus = null;
-        //        var file = await System.Threading.Tasks.Task.Factory.StartNew(() => Newtonsoft.Json.JsonConvert.SerializeObject(dev));
-        //        var data = System.Text.Encoding.UTF8.GetBytes(file);
-        //        //缃戝叧涓垱寤哄瓨鍌ㄦ暟鎹殑鏂囦欢
-        //        var saveFileName = await dev.Gateway.CreateFileAsync(fileName);
-        //        if (saveFileName != null && saveFileName.Result == 0)
-        //        {
-        //            backupSuccess = false;
-        //            //涓婁紶鏁版嵁鍒扮綉鍏�
-        //            var saveData = await dev.Gateway.SendFileAsync(data);
-        //            if (saveData != null)
-        //            {
-        //                backUpStatus = new SendFileResponseAllData { Result = saveData.Result };
-        //            }
-        //        }
-        //        var dateTime = DateTime.Now;
-        //        while ((DateTime.Now - dateTime).TotalMilliseconds < WaitReceiveDataTime)
-        //        {
-        //            await System.Threading.Tasks.Task.Delay(10);
-        //            if (backUpStatus != null)
-        //            {
-        //                break;
-        //            }
-        //        }
-        //        if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime)
-        //        {
-        //            backUpStatus = new SendFileResponseAllData { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" };
-        //         };
-        //        return backUpStatus;
-        //    });
-        //}
-
-        /// <summary>
-        /// 涓嬭浇绉佹湁鏁版嵁
-        /// </summary>
-        /// <returns>The data from gateway.</returns>
-        /// <param name="fileName">File name.</param>
-        /// <param name="dev">Dev.</param>
-        //public async System.Threading.Tasks.Task<System.Collections.Generic.List<byte>> DownloadDataFromGateway(string fileName, CommonDevice dev)
-        //{
-        //    return await System.Threading.Tasks.Task.Run(async () =>
-        //    {
-        //        byteSource.Clear();
-        //        System.Collections.Generic.List<byte> backUpData = null;
-        //        var dateTime = DateTime.Now;
-        //        //鑾峰彇褰撳墠鏂囦欢鐨勫叿浣撲俊鎭�
-        //        //var getFileSize = await currentKey.Gateway.GetCurrentFileInfoAsync(fileName);
-        //        //涓嬭浇鏂囦欢
-        //        var saveFileName = await dev.Gateway.SetDownloadFileAsync(fileName);
-        //        Action<string, byte[]> action = (topic, dataContent) =>
-        //        {
-        //            if (topic.Split('/')[0] + "/" + topic.Split('/')[1] + "/" + topic.Split('/')[2] == topic.Split('/')[0] + "/" + "FileTransfer/DownloadFile")
-        //            {
-        //                dateTime = DateTime.Now;
-        //                byte[] fileBytes = dataContent;
-        //                if (fileBytes[5] != 1)
-        //                {
-        //                    if (fileBytes.Length == 2056)
-        //                    {
-        //                        var tempBytes = new byte[2048];
-        //                        System.Array.Copy(fileBytes, 8, tempBytes, 0, 2048);
-        //                        byteSource.AddRange(tempBytes);
-        //                    }
-        //                    else
-        //                    {
-        //                        var tempBytes = new byte[fileBytes.Length - 8];
-        //                        System.Array.Copy(fileBytes, 8, tempBytes, 0, tempBytes.Length);
-        //                        byteSource.AddRange(tempBytes);
-        //                    }
-        //                }
-        //                else
-        //                {
-        //                    var tempBytes = new byte[fileBytes.Length - 8];
-        //                    System.Array.Copy(fileBytes, 8, tempBytes, 0, tempBytes.Length);
-        //                    byteSource.AddRange(tempBytes);
-
-        //                    if (byteSource != null )
-        //                    {
-        //                        backUpData = byteSource;
-        //                    }
-        //                }
-
-        //            }
-        //        };
-        //        dev.Gateway.FileContentAction += action;
-
-        //        while ((DateTime.Now - dateTime).TotalMilliseconds < 2000)
-        //        {
-        //            await System.Threading.Tasks.Task.Delay(10);
-        //        }
-        //        dev.Gateway.FileContentAction -= action;
-        //        return byteSource;
-        //    });
-        //}
-
-        //#endregion
-
         #region 瀹㈡埛绔笂浼犳枃浠跺埌缃戝叧.
         /// <summary>
         /// 瀹㈡埛绔笂浼犳枃浠跺埌缃戝叧
@@ -2390,8 +1651,7 @@
 
                     if (topic == gatewayID + "/" + "Error_Respon")
                     {
-                        var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = getGatewayBaseInfo.gwID };
-                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ErrorResponData>(jobject["Data"].ToString());
+                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString());
 
                         if (temp == null)
                         {
@@ -2399,13 +1659,12 @@
                         }
                         else
                         {
-                            dataRes = new CreateFileResponseAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) };
+                            dataRes = new CreateFileResponseAllData { errorResponData = temp, errorMessageBase = CommonDevice.ErrorMess(temp.Error) };
                         }
                     }
 
                     if (topic == gatewayID + "/" + "FileTransfer/CreateFile_Respon")
                     {
-                        var security = new ZbGateway() { DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = getGatewayBaseInfo.gwID };
                         var result = Newtonsoft.Json.JsonConvert.DeserializeObject<int>(jobject["Data"]["Result"].ToString());
                         dataRes = new CreateFileResponseAllData { Result = result };
                         DebugPrintLog($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}");
@@ -2469,7 +1728,6 @@
 
                     if (topic == gatewayID + "/FileTransfer/SendFile_Respon")
                     {
-                        var gateway = new ZbGateway() { DataID = jobject.Value<int>("Data_ID") };
                         var result = Newtonsoft.Json.JsonConvert.DeserializeObject<int>(jobject["Data"]["Result"].ToString());
                         dataRes = new SendFileResponseAllData { Result = result };
                         if (result == 0)
@@ -2559,8 +1817,7 @@
 
                     if (topic == gatewayID + "/" + "Error_Respon")
                     {
-                        var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = getGatewayBaseInfo.gwID };
-                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ErrorResponData>(jobject["Data"].ToString());
+                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString());
 
                         if (temp == null)
                         {
@@ -2568,13 +1825,12 @@
                         }
                         else
                         {
-                            dataRes = new FileTransferLsDiResponseAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) };
+                            dataRes = new FileTransferLsDiResponseAllData { errorResponData = temp, errorMessageBase = CommonDevice.ErrorMess(temp.Error) };
                         }
                     }
 
                     if (topic == gatewayID + "/" + "FileTransfer/lsDir_Respon")
                     {
-                        var lsDir = new ZbGateway() { DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = getGatewayBaseInfo.gwID };
                         var resultlsDir = Newtonsoft.Json.JsonConvert.DeserializeObject<FileTransferLsDiResponseData>(jobject["Data"].ToString());
                         if (resultlsDir != null)
                         {
@@ -2637,8 +1893,7 @@
 
                     if (topic == gatewayID + "/" + "Error_Respon")
                     {
-                        var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = getGatewayBaseInfo.gwID };
-                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ErrorResponData>(jobject["Data"].ToString());
+                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString());
 
                         if (temp == null)
                         {
@@ -2646,13 +1901,12 @@
                         }
                         else
                         {
-                            dataRes = new FileTransferGetFileInfoResponseAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) };
+                            dataRes = new FileTransferGetFileInfoResponseAllData { errorResponData = temp, errorMessageBase = CommonDevice.ErrorMess(temp.Error) };
                         }
                     }
 
                     if (topic == gatewayID + "/" + "FileTransfer/GetFileInfo_Respon")
                     {
-                        var lsDir = new ZbGateway() { DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = getGatewayBaseInfo.gwID };
                         var resultlsDir = Newtonsoft.Json.JsonConvert.DeserializeObject<FileTransferGetFileInfoResponseData>(jobject["Data"].ToString());
                         if (resultlsDir != null)
                         {
@@ -2717,8 +1971,7 @@
 
                     if (topic == gatewayID + "/" + "Error_Respon")
                     {
-                        var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = getGatewayBaseInfo.gwID };
-                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ErrorResponData>(jobject["Data"].ToString());
+                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString());
 
                         if (temp == null)
                         {
@@ -2726,13 +1979,12 @@
                         }
                         else
                         {
-                            dataRes = new SetDownloadFileResponseAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) };
+                            dataRes = new SetDownloadFileResponseAllData { errorResponData = temp, errorMessageBase = CommonDevice.ErrorMess(temp.Error) };
                         }
                     }
 
                     if (topic == gatewayID + "/" + "FileTransfer/SetDownloadFile_Respon")
                     {
-                        var lsDir = new ZbGateway() { DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = CurrentGateWayId };
                         var tempData = Newtonsoft.Json.JsonConvert.DeserializeObject<SetDownloadFileResponseData>(jobject["Data"].ToString());
                         if (tempData != null)
                         {
@@ -2740,7 +1992,7 @@
                             var tempDa = new SetDownloadFileResponseData();
                             if (tempData.Result == 0)
                             {
-                                ZbGateway.byteSource.Clear();
+                                this.byteSource.Clear();
                             }
                             tempDa.Result = tempData.Result;
                             dataRes.setDownloadFileResponseData = tempDa;
@@ -2788,7 +2040,7 @@
         #endregion
 
         #region 缃戝叧鍙戦�佹枃浠舵祦鍒板鎴风
-        static System.Collections.Generic.List<byte> byteSource = new System.Collections.Generic.List<byte>();
+        private List<byte> byteSource = new List<byte>();
         ///<summary >
         /// 涓嬭浇鏂囦欢涓殑鏁版嵁
         /// </summary>
@@ -2851,8 +2103,7 @@
 
                     if (topic == gatewayID + "/" + "Error_Respon")
                     {
-                        var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = getGatewayBaseInfo.gwID };
-                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ErrorResponData>(jobject["Data"].ToString());
+                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString());
 
                         if (temp == null)
                         {
@@ -2860,13 +2111,12 @@
                         }
                         else
                         {
-                            dataRes = new DelFileOrDirResponseAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) };
+                            dataRes = new DelFileOrDirResponseAllData { errorResponData = temp, errorMessageBase = CommonDevice.ErrorMess(temp.Error) };
                         }
                     }
 
                     if (topic == gatewayID + "/" + "FileTransfer/DelFileOrDir_Respon")
                     {
-                        var lsDir = new ZbGateway() { DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = CurrentGateWayId };
                         var resultDelFileOrDir = Newtonsoft.Json.JsonConvert.DeserializeObject<DelFileOrDirResponseData>(jobject["Data"].ToString());
                         if (resultDelFileOrDir != null)
                         {
@@ -2930,8 +2180,7 @@
 
                     if (topic == gatewayID + "/" + "Error_Respon")
                     {
-                        var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = getGatewayBaseInfo.gwID };
-                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ErrorResponData>(jobject["Data"].ToString());
+                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString());
 
                         if (temp == null)
                         {
@@ -2939,13 +2188,12 @@
                         }
                         else
                         {
-                            dataRes = new CreateDirResponseAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) };
+                            dataRes = new CreateDirResponseAllData { errorResponData = temp, errorMessageBase = CommonDevice.ErrorMess(temp.Error) };
                         }
                     }
 
                     if (topic == gatewayID + "/" + "FileTransfer/CreateDir_Respon")
                     {
-                        var lsDir = new ZbGateway() { DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = CurrentGateWayId };
                         var resultCreateDir = Newtonsoft.Json.JsonConvert.DeserializeObject<CreateDirResponseData>(jobject["Data"].ToString());
                         if (resultCreateDir != null)
                         {
@@ -3006,7 +2254,6 @@
                     if (topic == gatewayID + "/" + "SendAESKey_Respon")
                     {
                         var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
-                        var gatewayTemp = new ZbGateway() { DataID = jobject.Value<int>("Data_ID") };
                         var result = Newtonsoft.Json.JsonConvert.DeserializeObject<int>(jobject["Data"]["Result"].ToString());
                         sendKeyResponData = new SendKeyResponData { Result = result };
                         DebugPrintLog($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}");
@@ -3051,23 +2298,7 @@
         /// <para>杩涘叆褰撳墠鐣岄潰鏃惰娣诲姞</para>
         /// <para>閫�鍑哄綋鍓嶇晫闈㈡椂瑕佸叧闂�</para>
         /// </summary>
-        public static readonly System.Collections.Generic.List<IStatus> StatusList = new System.Collections.Generic.List<IStatus>();
-
-        /// <summary>
-        /// 璁惧鐘舵�佹洿鏂�
-        /// </summary>
-        /// <param name="commonDevice">Common device.</param>
-        public static void UpdateDeviceStatus(CommonDevice commonDevice)
-        {
-            if (commonDevice == null)
-            {
-                return;
-            }
-            for (int i = 0; i < StatusList.Count; i++)
-            {
-                StatusList[i].Changed(commonDevice);
-            }
-        }
+        public static readonly List<IStatus> StatusList = new List<IStatus>();
 
         /// <summary>
         /// 璁惧淇℃伅鍙樺寲
@@ -3097,6 +2328,7 @@
         /// </summary>
         IMqttClient localMqttClient = new MqttFactory().CreateMqttClient();
         bool localMqttIsConnecting;
+        [Newtonsoft.Json.JsonIgnore]
         public bool localIsConnected;
         /// <summary>
         /// 鎵嬫満鏍囪瘑
@@ -3168,7 +2400,6 @@
                             {
                                 DebugPrintLog($" 鏈湴杩炴帴鎴愬姛_缃戝叧IP:{brokerName}_缃戝叧鏄惁鍔�:{IsEncry}_褰撳墠瀵嗙爜:{Password}");
                                 IsRemote = false;
-                                Shared.Phone.UserCenter.HdlGatewayLogic.Current.CheckGatewayByConnectChanged(Shared.Phone.UserCenter.GatewayConnectMode.WIFI);
                             });
                         }
 
@@ -3180,14 +2411,14 @@
                             {
                                 if (localMqttClient.Options == null)
                                 {
-                                    var options = new MQTTnet.Client.Options.MqttClientOptionsBuilder().WithClientId(currentGuid.ToString())
-                       .WithTcpServer(brokerName, 1883)
-                       .WithKeepAlivePeriod(TimeSpan.FromSeconds(20))
-                       .WithCleanSession()
-                        //.WithCommunicationTimeout(TimeSpan.FromSeconds(10))
-                       .WithCredentials("", "")
-                       .Build();
-                                    await localMqttClient.ConnectAsync(options, CancellationToken.None);
+                                    var options = new MQTTnet.Client.Options.MqttClientOptionsBuilder()//MQTT杩炴帴鍙傛暟濉厖
+                                    .WithClientId(currentGuid.ToString())//瀹㈡埛绔疘D
+                                    .WithTcpServer(brokerName, 1883)//TCP鏈嶅姟绔�  1883  锛屽嵆MQTT鏈嶅姟绔�
+                                    .WithCredentials("", "")//"", "")//鍑瘉  甯愬彿 瀵嗙爜
+                                    .WithCommunicationTimeout(new TimeSpan(0, 0, 60)) //閲嶈繛瓒呮椂鏃堕棿锛岄粯璁�5s
+                                    .WithKeepAlivePeriod(new TimeSpan(0, 0, 15)) //淇濇寔杩炴帴鏃堕棿锛岄粯璁�5s锛屽績璺冲寘
+                                    .Build();//
+                                    await localMqttClient.ConnectAsync(options);
                                 }
                                 else
                                 {
@@ -3218,17 +2449,10 @@
             });
         }
 
-        class GateWayBaseInfomation
-        {
-            //public string GatewayUniqueId;//"Emq缃戝叧1",   <!-- 缃戝叧Mac -->
-            public bool MqttOnlineStatus;//: true,  <!-- 缃戝叧鍦ㄤ簯绔疎mq鏄惁鍦ㄧ嚎 -->
-            public string AesKey;// : "a5d8da8a-ddea-48",  <!-- 涓庢缃戝叧鍦ㄤ簯绔疎mq閫氫俊鏃讹紝璐熻浇鍔犺В鐨�16浣岮es瀵嗛挜 -->
-            public string MacMark;//: "61eaa0ea-4812-4a7a-86d6-3098c61e64ed"   <!-- 缃戝叧瀵瑰簲鐨勫敮涓�鐮� -->
-        }
         /// <summary>
         /// 褰撳墠鏈夊笎鍙蜂笅鎵�鏈夌殑缃戝叧鍒楄〃鍙婁俊鎭�
         /// </summary>
-        static Dictionary<string, GateWayBaseInfomation> GateWayBaseInfomations = new Dictionary<string, GateWayBaseInfomation> { };
+        public static Dictionary<string, Shared.Phone.UserCenter.GatewayResult> GateWayBaseInfomations = new Dictionary<string, Shared.Phone.UserCenter.GatewayResult> { };
         /// <summary>
         /// 鑾峰彇褰撳墠甯愬彿鎵�鏈夌殑缃戝叧淇℃伅
         /// </summary>
@@ -3299,7 +2523,7 @@
                             var list = JArray.Parse(responseData["PageData"].ToString());
                             foreach (var v in list)
                             {
-                                GateWayBaseInfomations[v["GatewayUniqueId"].ToString()] = new GateWayBaseInfomation { AesKey = v["AesKey"].ToString(), MacMark = v["MacMark"].ToString(), MqttOnlineStatus = bool.Parse(v["MqttOnlineStatus"].ToString()) };
+                                GateWayBaseInfomations[v["GatewayUniqueId"].ToString()] = new Shared.Phone.UserCenter.GatewayResult { AesKey = v["AesKey"].ToString(), MacMark = v["MacMark"].ToString(), MqttOnlineStatus = bool.Parse(v["MqttOnlineStatus"].ToString()) };
                                 //if (RemoteMqttClient.IsConnected)
                                 {
                                     await RemoteMqttClient.SubscribeAsync($"/ZigbeeGateWayToClient/{v["MacMark"].ToString()}/#", MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce);
@@ -3319,15 +2543,12 @@
         /// 澶栫綉鐨凪QTT鏄惁姝e湪杩炴帴
         /// </summary>
         static bool remoteMqttIsConnecting;
-        static bool IsLoginAgain;
+
         /// <summary>
         /// 杩滅▼MqttClient
         /// </summary>
-        public static IMqttClient RemoteMqttClient= new MqttFactory().CreateMqttClient();
-        static bool remoteIsConnected; 
-        private int IsLogin = 0;
-        [Newtonsoft.Json.JsonIgnore]
-        static Action actionTemp;
+        public static IMqttClient RemoteMqttClient = new MqttFactory().CreateMqttClient();
+        static bool remoteIsConnected;
 
         /// <summary>
         /// 鍚姩杩滅▼Mqtt
@@ -3359,23 +2580,19 @@
                         if (RemoteMqttClient.ApplicationMessageReceivedHandler == null)
                         {
                             RemoteMqttClient.UseApplicationMessageReceivedHandler((e) =>
-                            {
-                                if (!RemoteMqttClient.IsConnected || !IsRemote)
-                                {
-                                    if (e.ApplicationMessage.Topic != "/ZigbeeGateWayToClient/" + Config.Instance.ConnEmqClientId + "/Push/NotifySqueeze")
-                                    {
-                                        return;
-                                    }
-                                }
-                                //濡傛灉褰撳墠浣跨敤鐨勬槸鍐呯綉妯″紡
-                                if (IsRemote == false)
+                            {
+                                //杩欓噷鏄壒娈婄殑涓婚
+                                if (e.ApplicationMessage.Topic == "/ZigbeeGateWayToClient/" + Config.Instance.ConnEmqClientId + "/Push/NotifySqueeze"//韪汉涓嬬嚎
+                                   || e.ApplicationMessage.Topic == "/ZigbeeGateWayToClient/" + Config.Instance.Guid + "/Push/Deleted"//鍒嗕韩鍒犻櫎
+                                   || e.ApplicationMessage.Topic == "/ZigbeeGateWayToClient/" + Config.Instance.Guid + "/Push/DeletedShareData"//鍒嗕韩鍒犻櫎
+                                   || e.ApplicationMessage.Topic == "/ZigbeeGateWayToClient/" + Config.Instance.Guid + "/Push/Update"//鎴愬憳鏉冮檺鍙樻洿
+                                   || e.ApplicationMessage.Topic == "/ZigbeeGateWayToClient/" + Config.Instance.Home.Id + "_" + Config.Instance.Guid + "/PrimaryUserDelYou")//瀛愯处鍙疯鍒犻櫎
                                 {
-                                    if (e.ApplicationMessage.Topic == "/ZigbeeGateWayToClient/" + Config.Instance.ConnEmqClientId + "/Push/NotifySqueeze"//韪汉涓嬬嚎
-                                      || e.ApplicationMessage.Topic == "/ZigbeeGateWayToClient/" + Config.Instance.Guid + "/Push/Deleted"//鍒嗕韩鍒犻櫎
-                                      || e.ApplicationMessage.Topic == "/ZigbeeGateWayToClient/" + Config.Instance.Guid + "/Push/DeletedShareData")
-                                    {
-                                        mqttRemoteClient_MqttMsgPublishReceived(e);
-                                    }
+                                    mqttRemoteClient_MqttMsgPublishReceived(e);
+                                    return;
+                                }
+                                if (!RemoteMqttClient.IsConnected || !IsRemote)
+                                {
                                     return;
                                 }
                                 mqttRemoteClient_MqttMsgPublishReceived(e);
@@ -3404,19 +2621,23 @@
                                     await RemoteMqttClient.SubscribeAsync("/ZigbeeGateWayToClient/" + myGuid + "/Push/Deleted");
                                     //璁㈤槄涓�涓垎浜暟鎹凡缁忓彉鏇寸殑涓婚
                                     await RemoteMqttClient.SubscribeAsync("/ZigbeeGateWayToClient/" + myGuid + "/Push/DeletedShareData");
+                                    //璁㈤槄涓�涓瓙璐﹀彿琚垹闄ょ殑涓婚
+                                    await RemoteMqttClient.SubscribeAsync("/ZigbeeGateWayToClient/" + Config.Instance.Home.Id + "_" + myGuid + "/PrimaryUserDelYou");
+                                    //璁㈤槄涓�涓垚鍛樻潈闄愬凡缁忓彉鏇寸殑涓婚
+                                    await RemoteMqttClient.SubscribeAsync("/ZigbeeGateWayToClient/" + myGuid + "/Push/Update");
                                 }
                                 //璁㈤槄涓�涓尋涓嬬嚎鐨勪富棰�
                                 await RemoteMqttClient.SubscribeAsync("/ZigbeeGateWayToClient/" + Config.Instance.ConnEmqClientId + "/Push/NotifySqueeze");
 
                                 await initGateWayBaseInfomation();
-                                Shared.Phone.UserCenter.HdlGatewayLogic.Current.CheckGatewayByConnectChanged(Shared.Phone.UserCenter.GatewayConnectMode.Remote);
+
                                 //娌℃湁涓荤綉鍏虫椂涓诲姩璇诲彇锛岃幏鍙栦富缃戝叧淇℃伅
-                                var gateWayList = GateWayList.FindAll(obj => obj.getGatewayBaseInfo.HomeId == Shared.Common.Config.Instance.HomeId);
-                                if (gateWayList.Find(obj => obj.getGatewayBaseInfo.IsMainGateWay == true) == null)
+                                var gateWayList = GateWayList.FindAll(obj => obj.HomeId == Shared.Common.Config.Instance.HomeId);
+                                if (gateWayList.Find(obj => obj.IsMainGateWay == true) == null)
                                 {
                                     if (gateWayList.Count == 1)
                                     {
-                                        gateWayList[0].getGatewayBaseInfo.IsMainGateWay = true;
+                                        gateWayList[0].IsMainGateWay = true;
                                     }
                                     else
                                     {
@@ -3432,13 +2653,13 @@
                                             {
                                                 for (int j = 0; j < gateWayList.Count; j++)
                                                 {
-                                                    if (gateWayList[i].getGatewayBaseInfo.gwID == info.getGwData.GwId)
+                                                    if (gateWayList[i].GwId == info.getGwData.GwId)
                                                     {
-                                                        gateWayList[i].getGatewayBaseInfo.IsMainGateWay = true;
+                                                        gateWayList[i].IsMainGateWay = true;
                                                     }
                                                     else
                                                     {
-                                                        gateWayList[i].getGatewayBaseInfo.IsMainGateWay = false;
+                                                        gateWayList[i].IsMainGateWay = false;
                                                     }
                                                 }
                                                 break;
@@ -3495,6 +2716,9 @@
                                 AllowRemoteCtrl = false;
                                 return;
                             }
+                            //铏界劧涓嶇煡閬撳鎸や笅绾块偅涓�鍧楁湁娌℃湁鐢�,涓嶈繃鍏堣繖涔堝紕
+                            await System.Threading.Tasks.Task.Delay(1500);
+
                             var responseData = jobject["ResponseData"];
                             if (responseData != null)
                             {
@@ -3550,7 +2774,7 @@
                     localIsConnected = false;
                     DebugPrintLog($"Local涓诲姩鏂紑_{s}");
                     //await localMqttClient.DisconnectAsync(new MQTTnet.Client.Disconnecting.MqttClientDisconnectOptions {  }, CancellationToken.None);
-                    await localMqttClient.DisconnectAsync(); 
+                    await localMqttClient.DisconnectAsync();
                 }
             }
             catch (Exception ex)
@@ -3562,7 +2786,7 @@
         /// <summary>
         /// 鏂紑杩滅▼Mqtt鐨勯摼鎺�
         /// </summary>
-        public static async System.Threading.Tasks.Task DisConnectRemoteMqttClient(string s="")
+        public static async System.Threading.Tasks.Task DisConnectRemoteMqttClient(string s = "")
         {
             try
             {
@@ -3574,12 +2798,15 @@
                     await RemoteMqttClient.DisconnectAsync();
                 }
             }
-            catch(Exception e) { 
+            catch (Exception e)
+            {
                 DebugPrintLog($"Remote鏂紑閫氳杩炴帴鍑哄紓甯�:{e.Message}");
             }
         }
 
         #endregion
+
+        #region 鏁版嵁鍙戦��
 
         /// <summary>
         /// 鍙戦�佹秷鎭埌鏈嶅姟鍣�
@@ -3611,11 +2838,11 @@
         {
             try
             {
-                if (this.getGatewayBaseInfo?.gwID == null || !GateWayBaseInfomations.ContainsKey(this.getGatewayBaseInfo?.gwID))
+                if (this.GwId == string.Empty || !GateWayBaseInfomations.ContainsKey(this.GwId))
                 {
                     return;
                 }
-                var gateWayBaseInfomation = GateWayBaseInfomations[this.getGatewayBaseInfo?.gwID];
+                var gateWayBaseInfomation = GateWayBaseInfomations[this.GwId];
                 message = SecuritySet.AesEncryptBytes(message, gateWayBaseInfomation.AesKey);
                 var topicEncStr = $"/ClientToZigbeeGateWay/{gateWayBaseInfomation.MacMark}/Common/{topicName}";
                 //(6)鏋勫缓Mqtt闇�瑕佸彂甯冪殑鏁版嵁鍖�,鍙戝竷缁欎簯绔殑MqttBroker
@@ -3660,11 +2887,11 @@
                 if (IsRemote)
                 {
                     await SendRemoteMsg(topic, message, retain);
-                    DebugPrintLog($"杩滅▼鈥斺�斿彂閫佸埌缃戝叧鐨勪富棰�:{topic}_鍙戦�佸埌缃戝叧鐨勬暟鎹�:{System.Text.Encoding.UTF8.GetString(message)}_褰撳墠缃戝叧{CurrentGateWayId}");//{System.DateTime.Now.ToString()}");// DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff")
+                    DebugPrintLog($"杩滅▼鈥斺�斿彂閫佸埌缃戝叧鐨勪富棰�:{topic}_鍙戦�佸埌缃戝叧鐨勬暟鎹�:{System.Text.Encoding.UTF8.GetString(message)}");//{System.DateTime.Now.ToString()}");// DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff")
                 }
                 else
                 {
-                    DebugPrintLog($"灞�鍩熺綉鈥斺�斿彂閫佸埌缃戝叧鐨勪富棰�:{topic}_鍙戦�佸埌缃戝叧鐨勬暟鎹�:{System.Text.Encoding.UTF8.GetString(message)}_褰撳墠缃戝叧{CurrentGateWayId} 鏄惁鍔犲瘑:{IsEncry}");
+                    DebugPrintLog($"灞�鍩熺綉鈥斺�斿彂閫佸埌缃戝叧鐨勪富棰�:{topic}_鍙戦�佸埌缃戝叧鐨勬暟鎹�:{System.Text.Encoding.UTF8.GetString(message)}_鏄惁鍔犲瘑:{IsEncry}");
 
                     if (IsEncry)
                     {
@@ -3680,14 +2907,14 @@
                         {
                             await localMqttClient.PublishAsync(new MqttApplicationMessage { Topic = topic, Payload = message, QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce, Retain = retain });
                         }
-                        catch(Exception e)
+                        catch (Exception e)
                         {
                             DebugPrintLog($"Local涓诲姩鏂紑_{e.Message}");
                             await DisConnectLocalMqttClient(e.Message);
                             await StartLocalMqtt("ReConnect");
                             if (localIsConnected)
                             {
-                                DebugPrintLog($"灞�鍩熺綉鈥斺�斾簩娆″彂閫佸埌缃戝叧鐨勪富棰�:{topic}_鍙戦�佸埌缃戝叧鐨勬暟鎹�:{System.Text.Encoding.UTF8.GetString(message)}_褰撳墠缃戝叧{CurrentGateWayId} 鏄惁鍔犲瘑:{IsEncry}");
+                                DebugPrintLog($"灞�鍩熺綉鈥斺�斾簩娆″彂閫佸埌缃戝叧鐨勪富棰�:{topic}_鍙戦�佸埌缃戝叧鐨勬暟鎹�:{System.Text.Encoding.UTF8.GetString(message)}_鏄惁鍔犲瘑:{IsEncry}");
                                 await localMqttClient.PublishAsync(new MqttApplicationMessage { Topic = topic, Payload = message, QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce, Retain = retain });
                             }
                         }
@@ -3732,7 +2959,7 @@
                     return;
                 }
 
-                DebugPrintLog($"灞�鍩熺綉鈥斺�斿彂閫佸埌缃戝叧鐨勪富棰�:{topic}_鍙戦�佸埌缃戝叧鐨勬暟鎹�:{System.Text.Encoding.UTF8.GetString(message)}_褰撳墠缃戝叧{CurrentGateWayId} 鏄惁鍔犲瘑:{IsEncry}");
+                DebugPrintLog($"灞�鍩熺綉鈥斺�斿彂閫佸埌缃戝叧鐨勪富棰�:{topic}_鍙戦�佸埌缃戝叧鐨勬暟鎹�:{System.Text.Encoding.UTF8.GetString(message)}_鏄惁鍔犲瘑:{IsEncry}");
 
                 if (IsEncry)
                 {
@@ -3755,7 +2982,7 @@
                         await StartLocalMqtt("ReConnect");
                         if (localIsConnected)
                         {
-                            DebugPrintLog($"灞�鍩熺綉鈥斺�斾簩娆″彂閫佸埌缃戝叧鐨勪富棰�:{topic}_鍙戦�佸埌缃戝叧鐨勬暟鎹�:{System.Text.Encoding.UTF8.GetString(message)}_褰撳墠缃戝叧{CurrentGateWayId} 鏄惁鍔犲瘑:{IsEncry}");
+                            DebugPrintLog($"灞�鍩熺綉鈥斺�斾簩娆″彂閫佸埌缃戝叧鐨勪富棰�:{topic}_鍙戦�佸埌缃戝叧鐨勬暟鎹�:{System.Text.Encoding.UTF8.GetString(message)}_鏄惁鍔犲瘑:{IsEncry}");
                             await localMqttClient.PublishAsync(new MqttApplicationMessage { Topic = topic, Payload = message, QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce, Retain = retain });
                         }
                     }
@@ -3767,13 +2994,9 @@
             }
         }
 
-        [Serializable]
-        public class CloudTimeResponse
-        {
-            public string StateCode;
-            public string Info;
-            public string CloudTimestamp;
-        }
+        #endregion
+
+        #region 鏁版嵁鎺ユ敹澶勭悊
 
         /// <summary>
         /// 鎺ユ敹杩滅▼鏁版嵁澶勭悊
@@ -3799,7 +3022,8 @@
                 {
                     return;
                 }
-                if (topics[2]== "NotifyGateWayInfoChange") {
+                if (topics[2] == "NotifyGateWayInfoChange")
+                {
                     initGateWayBaseInfomation();
                     return;
                 }
@@ -3885,7 +3109,7 @@
         /// <param name="topic">Topic.</param>
         /// <param name="message">Message.</param>
         /// <param name="e">E.</param>
-        static void ReceiveMessage(string topic, string message, byte []payload)
+        static void ReceiveMessage(string topic, string message, byte[] payload)
         {
             try
             {
@@ -3911,7 +3135,7 @@
                 //鍏ㄥ眬鎺ユ敹缃戝叧鎺ㄩ�佺殑鐨勯�昏緫(涓轰簡鎵ц閫熷害,灏藉彲鑳界殑鍒姞鑰楁椂鐨勬搷浣�)
                 Shared.Phone.UserCenter.HdlGatewayReceiveLogic.Current.GatewayOverallMsgReceive(gatewayID, topic, reportStatus, message);
 
-                var gwa = GateWayList.Find(obj => obj.getGatewayBaseInfo.gwID == gatewayID);
+                var gwa = GateWayList.Find(obj => obj.GwId == gatewayID);
                 if (gwa == null)
                 {
                     return;
@@ -3923,7 +3147,6 @@
                 }
 
                 gwa.GwResDataAction?.Invoke(topic, message);
-                gwa.CurrentGateWayId = gatewayID;
 
                 var jobject = new Newtonsoft.Json.Linq.JObject();
                 if (topic.Split('/')[0] + "/" + topic.Split('/')[1] == topic.Split('/')[0] + "/" + "FileTransfer")
@@ -3950,16 +3173,16 @@
                         var gwData = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.GetGwData>(jobject["Data"].ToString());
                         if (gwData != null)
                         {
-                            var gwList = GateWayList.FindAll(obj => obj.getGatewayBaseInfo.HomeId == Shared.Common.Config.Instance.HomeId);
+                            var gwList = GateWayList.FindAll(obj => obj.HomeId == Shared.Common.Config.Instance.HomeId);
                             for (int i = 0; i < gwList.Count; i++)
                             {
-                                if (gwList[i].getGatewayBaseInfo.gwID == gatewayID)
+                                if (gwList[i].GwId == gatewayID)
                                 {
-                                    gwList[i].getGatewayBaseInfo.IsMainGateWay = true;
+                                    gwList[i].IsMainGateWay = true;
                                 }
                                 else
                                 {
-                                    gwList[i].getGatewayBaseInfo.IsMainGateWay = false;
+                                    gwList[i].IsMainGateWay = false;
                                 }
                             }
                         }
@@ -3967,136 +3190,23 @@
                 }
 
                 #endregion
-                #region 璁惧鏂颁笂鎶�
-                //姝ラ1锛夌綉鍏冲憡鐭ュ鎴风鏈夋柊璁惧鍔犲叆zigbee缃戠粶銆�
-                if (topic == gatewayID + "/" + "Device/DeviceJoinZbNet_Respon")
-                {
-                    var gatewayTemp = new ZbGateway() { DeviceAddr = jobject.Value<string>("DeviceAddr"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID };
-                    gatewayTemp.deviceDeviceJoinZbNetResponData = Newtonsoft.Json.JsonConvert.DeserializeObject<DeviceDeviceJoinZbNetResponData>(jobject["Data"].ToString());
-                    if (gatewayTemp.deviceDeviceJoinZbNetResponData == null)
-                    {
-                        return;
-                    }
-                    //涓婃姤绫诲瀷閫氱煡
-                    if (gwa.ReportAction != null)
-                    {
-                        DebugPrintLog("Device/DeviceJoinZbNet宸茬粡閫氱煡");
-                        gatewayTemp.CurrentGateWayId = gatewayID;//杩欓噷鐨凜urrentGateWayId鏄綋鍓嶆柊new ZbGateway鐨勫��
-                        gwa.ReportAction("Device/DeviceJoinZbNet", gatewayTemp);
-                    }
-                }
-                //姝ラ2锛夌綉鍏冲憡鐭ュ鎴风鑾峰彇鏂拌澶囨墍鏈夌鐐逛俊鎭槸鍚︽垚鍔�
-                if (topic == gatewayID + "/" + "Device/IsGetEpointInfo_Respon")
-                {
-                    var gatewayTemp = new ZbGateway() { DeviceAddr = jobject.Value<string>("DeviceAddr"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID };
-                    gatewayTemp.deviceIsGetEpointInfoResponData = Newtonsoft.Json.JsonConvert.DeserializeObject<DeviceIsGetEpointInfoResponData>(jobject["Data"].ToString());
-                    if (gatewayTemp.deviceIsGetEpointInfoResponData == null)
-                    {
-                        return;
-                    }
-                    //涓婃姤绫诲瀷閫氱煡
-                    if (gwa.ReportAction != null)
-                    {
-                        DebugPrintLog("Device/IsGetEpointInfo宸茬粡閫氱煡");
-                        gatewayTemp.CurrentGateWayId = gatewayID;//杩欓噷鐨凜urrentGateWayId鏄綋鍓嶆柊new ZbGateway鐨勫��
-                        gwa.ReportAction("Device/IsGetEpointInfo", gatewayTemp);
-                    }
-                }
-                //姝ラ3锛夌綉鍏充笂鎶ヨ妭鐐硅澶囨墍鏈夌鐐逛俊鎭�
-                if (topic == gatewayID + "/" + "DeviceInComingRespon")
-                {
-                    //鏂拌澶囦笂鎶ワ紝閲嶆柊鍙戣幏鍙栨墍鏈夌殑璁惧
-                    var tempDevice = new CommonDevice() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID };
-                    tempDevice.getNewDeviceInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.NewDeviceInfoData>(jobject["Data"].ToString());
-                    if (gwa.ReportAction != null)
-                    {
-                        DebugPrintLog("DeviceInComingRespon宸茬粡閫氱煡");
-                        gwa.ReportAction("DeviceInComingRespon", tempDevice.getNewDeviceInfo);
-                    }
-                    UpdateDeviceInfo(tempDevice, "DeviceInComingRespon");
-                    UpdateDeviceStatus(gwa);
-                }
-                #endregion
+
                 #region 璁惧鍦ㄧ嚎鐘舵�佹洿鏂板弽棣�
-                else if (topic == gatewayID + "/" + "OnlineStatusChange_Respon")
-                {
-                    var tempDevice = new CommonDevice() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID };
-                    tempDevice.IsOnline = Newtonsoft.Json.JsonConvert.DeserializeObject<int>(jobject["Data"]["IsOnline"].ToString());
-
-                    if (gwa.ReportAction != null)
-                    {
-                        DebugPrintLog("OnlineStatusChange宸茬粡閫氱煡");
-                        gwa.ReportAction("OnlineStatusChange", tempDevice);
-                    }
-                    var infoTempDevice = gwa.DeviceList.Find(obj => obj.DeviceID == tempDevice.DeviceID && obj.DeviceAddr == tempDevice.DeviceAddr);
-                    if (infoTempDevice == null)
-                    {
-                        gwa.DeviceList.Add(tempDevice);
-                        UpdateDeviceStatus(tempDevice);
-                        UpdateDeviceInfo(tempDevice, "OnlineStatusChange");
-                    }
-                    else
-                    {
-                        if (infoTempDevice.DeviceInfo != null)
-                        {
-                            infoTempDevice.DeviceInfo.IsOnline = infoTempDevice.IsOnline;
-                        }
-                        UpdateDeviceInfo(infoTempDevice, "OnlineStatusChange");
-                        UpdateDeviceStatus(infoTempDevice);
-                    }
-                }
-                #endregion
-                #region 璁惧琚垹闄や笂鎶�
-                else if (topic == gatewayID + "/" + "RemoveDeviceRespon")
-                {
-                    var gatewayTemp = new ZbGateway() { DeviceAddr = jobject.Value<string>("DeviceAddr"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID };
-                    gatewayTemp.removeDeviceResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.RemoveDeviceResponseData>(jobject["Data"].ToString());
 
-                    if (gatewayTemp.removeDeviceResponseData != null)
-                    {
-                        try
-                        {
-                            if (gatewayTemp.removeDeviceResponseData.Result == 0)
-                            {
-                                foreach (var delD in gatewayTemp.removeDeviceResponseData.DeviceList)
-                                {
-                                    var tempDevice = new CommonDevice() { DeviceAddr = jobject.Value<string>("DeviceAddr"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID };
-                                    tempDevice.removeDeviceResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.RemoveDeviceResponseData>(jobject["Data"].ToString());
-                                    if (tempDevice.removeDeviceResponseData == null)
-                                    {
-                                        return;
-                                    }
-                                    else
-                                    {
-                                        UpdateDeviceStatus(tempDevice);
-                                        UpdateDeviceInfo(tempDevice, "RemoveDeviceRespon");
-                                        if (tempDevice.removeDeviceResponseData.Result == 0)
-                                        {
-                                            var infoTempDevice = gwa.DeviceList.Find((CommonDevice obj) => obj.DeviceID == tempDevice.DeviceID && obj.DeviceAddr == tempDevice.DeviceAddr && obj.DeviceEpoint == tempDevice.DeviceEpoint);
-                                            if (infoTempDevice != null)
-                                            {
-                                                gwa.DeviceList.Remove(infoTempDevice);
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                        catch { }
-                    }
-                }
+                //2020.05.11 鍒犻櫎
+
                 #endregion
+
                 #region 璁惧鐘舵�佷笂鎶�
-                else if (topic == gatewayID + "/" + "DeviceStatusReport" + "/" + addr + "/" + epoint + "/" + cluID + "/" + attrId)
+                if (topic == gatewayID + "/" + "DeviceStatusReport" + "/" + addr + "/" + epoint + "/" + cluID + "/" + attrId)
                 {
                     var deviceID = jobject.Value<int>("Device_ID");
                     var deviceAddr = jobject.Value<string>("DeviceAddr");
                     var tempEpoint = jobject.Value<int>("Epoint");
                     var dataId = jobject.Value<int>("Data_ID");
 
-                    var tempDevice = new CommonDevice { DeviceID = deviceID, DeviceAddr = deviceAddr, DeviceEpoint = tempEpoint, DataID = dataId };
+                    var tempDevice = new CommonDevice { DeviceID = deviceID, DeviceAddr = deviceAddr, DeviceEpoint = tempEpoint };
                     tempDevice.DeviceStatusReport = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.DeviceStatusReportData>(jobject["Data"].ToString());
-                    UpdateDeviceStatus(tempDevice);
                     UpdateDeviceInfo(tempDevice, "DeviceStatusReport");
                 }
                 #endregion
@@ -4107,7 +3217,7 @@
                     switch ((DeviceType)(deviceID))
                     {
                         case DeviceType.DoorLock:
-                            var doorLock = new DoorLock() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID };
+                            var doorLock = new DoorLock() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), CurrentGateWayId = gwa.GwId };
                             var OperatingEventNotificationDatad = Newtonsoft.Json.JsonConvert.DeserializeObject<ZigBee.Device.DoorLock.DoorLockOperatingEventNotificationCommand>(jobject["Data"].ToString());
                             if (OperatingEventNotificationDatad != null)
                             {
@@ -4118,7 +3228,6 @@
                                 DebugPrintLog("DoorLockProgrammingEventNotificationCommand宸茬粡閫氱煡");
                                 gwa.ReportAction("DoorLockProgrammingEventNotificationCommand", doorLock);
                             }
-                            UpdateDeviceStatus(doorLock);
                             UpdateDeviceInfo(doorLock, "DoorLockProgrammingEventNotificationCommand");
                             break;
                     }
@@ -4131,7 +3240,7 @@
                     switch ((DeviceType)(deviceID))
                     {
                         case DeviceType.DoorLock:
-                            var doorLock = new DoorLock() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID };
+                            var doorLock = new DoorLock() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), CurrentGateWayId = gwa.GwId };
                             var ProgrammingEventNotificationData = Newtonsoft.Json.JsonConvert.DeserializeObject<ZigBee.Device.DoorLock.DoorLockProgrammingEventNotificationCommand>(jobject["Data"].ToString());
                             if (ProgrammingEventNotificationData != null)
                             {
@@ -4142,41 +3251,21 @@
                                 DebugPrintLog("DoorLockProgrammingEventNotificationCommand宸茬粡閫氱煡");
                                 gwa.ReportAction("DoorLockProgrammingEventNotificationCommand", doorLock);
                             }
-                            UpdateDeviceStatus(doorLock);
                             UpdateDeviceInfo(doorLock, "DoorLockProgrammingEventNotificationCommand");
                             break;
                     }
-                }
+                }
                 #endregion
                 #region IAS瀹夐槻淇℃伅涓婃姤
-                else if (topic == gatewayID + "/" + "IASInfoReport")
-                {
-                    var deviceID = jobject.Value<int>("Device_ID");
-                    switch ((DeviceType)(deviceID))
-                    {
-                        case DeviceType.IASZone:
-                            var ias = new IASZone() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID };
-                            ias.iASInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<IASZone.IASInfoData>(jobject["Data"].ToString());
-                            //涓婃姤绫诲瀷閫氱煡锛屽繀闇�鍏堣皟鐢紝鐒跺悗鎵嶆湁閫氱煡锛屽惁鍒欐槸绌轰笉浼氶�氱煡鐨�
-                            if (gwa.ReportAction != null)
-                            {
-                                DebugPrintLog("IASInfoReport宸茬粡閫氱煡");
-                                //ias.Save();
-                                gwa.ReportAction("IASInfoReport", ias.iASInfo);
-                            }
-
-                            UpdateDeviceStatus(ias);
-                            UpdateDeviceInfo(ias, "IASInfoReport");
-                            break;
-                    }
-                }
+
+                //2020.05.11 鍒犻櫎
+
                 #endregion
                 #region 涓嬭浇杩涘害涓婃姤
                 else if (topic == gatewayID + "/" + "DownloadFile_Progress")
                 {
-                    var gatewayTemp = new ZbGateway() { DataID = jobject.Value<int>("Data_ID") };
-                    gatewayTemp.downloadFileProgressResponData = Newtonsoft.Json.JsonConvert.DeserializeObject<DownloadFileProgressResponData>(jobject["Data"].ToString());
-                    if (gatewayTemp.downloadFileProgressResponData == null)
+                    gwa.downloadFileProgressResponData = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.DownloadFileProgressResponData>(jobject["Data"].ToString());
+                    if (gwa.downloadFileProgressResponData == null)
                     {
                         return;
                     }
@@ -4184,15 +3273,13 @@
                     if (gwa.ReportAction != null)
                     {
                         DebugPrintLog("DownloadFileProgress");
-                        gatewayTemp.CurrentGateWayId = gatewayID;//杩欓噷鐨凜urrentGateWayId鏄綋鍓嶆柊new ZbGateway鐨勫��
-                        gwa.ReportAction("DownloadFileProgress", gatewayTemp);
+                        gwa.ReportAction("DownloadFileProgress", gwa);
                     }
                 }
                 else if (topic == gatewayID + "/" + "ZbGwOperation/Upgrade_Respon")
                 {
-                    var gatewayTemp = new ZbGateway() { DataID = jobject.Value<int>("Data_ID") };
-                    gatewayTemp.zbGwOperationUpgradeData = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGwOperationUpgradeData>(jobject["Data"].ToString());
-                    if (gatewayTemp.zbGwOperationUpgradeData == null)
+                    gwa.zbGwOperationUpgradeData = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGwOperationUpgradeData>(jobject["Data"].ToString());
+                    if (gwa.zbGwOperationUpgradeData == null)
                     {
                         return;
                     }
@@ -4200,16 +3287,14 @@
                     if (gwa.ReportAction != null)
                     {
                         DebugPrintLog("鍗忚皟鍣ㄥ崌绾х櫨鍒嗘瘮");
-                        gatewayTemp.CurrentGateWayId = gatewayID;//杩欓噷鐨凜urrentGateWayId鏄綋鍓嶆柊new ZbGateway鐨勫��
-                        gwa.ReportAction("CordinatorUpgradePercent", gatewayTemp);
+                        gwa.ReportAction("CordinatorUpgradePercent", gwa);
                     }
                 }
                 else if (topic == gatewayID + "/" + "OTA/Schedule_Respon")
                 {
-                    var gatewayTemp = new ZbGateway() { DataID = jobject.Value<int>("Data_ID") };
-                    gatewayTemp.oTAScheduleResponData = Newtonsoft.Json.JsonConvert.DeserializeObject<OTAScheduleResponData>(jobject["Data"].ToString());
+                    gwa.oTAScheduleResponData = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.OTAScheduleResponData>(jobject["Data"].ToString());
 
-                    if (gatewayTemp.oTAScheduleResponData == null)
+                    if (gwa.oTAScheduleResponData == null)
                     {
                         return;
                     }
@@ -4218,16 +3303,14 @@
                     if (gwa.ReportAction != null)
                     {
                         DebugPrintLog("鑺傜偣璁惧鍗囩骇鐧惧垎姣�");
-                        gatewayTemp.CurrentGateWayId = gatewayID;//杩欓噷鐨凜urrentGateWayId鏄綋鍓嶆柊new ZbGateway鐨勫��
-                        gwa.ReportAction("DeviceUpgradePercent", gatewayTemp);
+                        gwa.ReportAction("DeviceUpgradePercent", gwa);
                     }
                 }
                 else if (topic == gatewayID + "/" + "VirtualDrive/Upgrade_Respon")
                 {
-                    var gatewayTemp = new ZbGateway() { DataID = jobject.Value<int>("Data_ID") };
-                    gatewayTemp.virtualDriveUpgradeResponData = Newtonsoft.Json.JsonConvert.DeserializeObject<VirtualDriveUpgradeResponData>(jobject["Data"].ToString());
+                    gwa.virtualDriveUpgradeResponData = Newtonsoft.Json.JsonConvert.DeserializeObject<VirtualDriveUpgradeResponData>(jobject["Data"].ToString());
 
-                    if (gatewayTemp.virtualDriveUpgradeResponData == null)
+                    if (gwa.virtualDriveUpgradeResponData == null)
                     {
                         return;
                     }
@@ -4235,18 +3318,16 @@
                     if (gwa.ReportAction != null)
                     {
                         DebugPrintLog("铏氭嫙椹卞姩鍗囩骇鐧惧垎姣�");
-                        gatewayTemp.CurrentGateWayId = gatewayID;//杩欓噷鐨凜urrentGateWayId鏄綋鍓嶆柊new ZbGateway鐨勫��
-                        gwa.ReportAction("VirtualDriveUpgrade", gatewayTemp);
+                        gwa.ReportAction("VirtualDriveUpgrade", gwa);
                     }
                 }
                 #endregion
                 #region 閲嶅惎缃戝叧绯荤粺
                 else if (topic == gatewayID + "/" + "GwReboot_Respon")
                 {
-                    var gatewayTemp = new ZbGateway() { DeviceID = jobject.Value<int>("Device_ID") };
-                    gatewayTemp.gwRebootResponData = Newtonsoft.Json.JsonConvert.DeserializeObject<GwRebootResponData>(jobject["Data"].ToString());
+                    var gwRebootResponData = Newtonsoft.Json.JsonConvert.DeserializeObject<GwRebootResponData>(jobject["Data"].ToString());
 
-                    if (gatewayTemp.gwRebootResponData == null)
+                    if (gwRebootResponData == null)
                     {
                         return;
                     }
@@ -4254,15 +3335,14 @@
                     if (gwa.ReportAction != null)
                     {
                         DebugPrintLog("GwReboot_Respon宸茬粡閫氱煡");
-                        gatewayTemp.CurrentGateWayId = gatewayID;//杩欓噷鐨凜urrentGateWayId鏄綋鍓嶆柊new ZbGateway鐨勫��
-                        gwa.ReportAction("GwReboot_Respon", gatewayTemp);
+                        gwa.ReportAction("GwReboot_Respon", gwRebootResponData);
                     }
                 }
                 #endregion
                 #region 闃插尯琚Е鍙戞椂鎶ュ憡
                 else if (topic == gatewayID + "/" + "Security/ZoneTriggerReport")
                 {
-                    var ias = new Safeguard() { DataID = jobject.Value<int>("Data_ID"), GateWayId = gwa.getGatewayBaseInfo.gwID };
+                    var ias = new Safeguard() { DataID = jobject.Value<int>("Data_ID"), GateWayId = gwa.GwId };
                     ias.zoneTriggerReportData = Newtonsoft.Json.JsonConvert.DeserializeObject<Safeguard.ZoneTriggerReportData>(jobject["Data"].ToString());
 
                     if (ias.zoneTriggerReportData == null)
@@ -4280,43 +3360,43 @@
                 #region 閫昏緫琚皟鐢ㄥ弽棣�
                 else if (topic == gatewayID + "/" + "Logic/Execute_Respon")
                 {
-                    var logic = new Logic() { DataID = jobject.Value<int>("Data_ID"), GateWayId = gwa.getGatewayBaseInfo.gwID };
-                    logic.logicExecuteRespo = Newtonsoft.Json.JsonConvert.DeserializeObject<Logic.ExecuteResponse>(jobject["Data"].ToString());
+                    //var logic = new Logic() { DataID = jobject.Value<int>("Data_ID"), GateWayId = gwa.GwId };
+                    //logic.logicExecuteRespo = Newtonsoft.Json.JsonConvert.DeserializeObject<Logic.ExecuteResponse>(jobject["Data"].ToString());
 
-                    if (logic.logicExecuteRespo == null)
-                    {
-                        return;
-                    }
-                    //涓婃姤绫诲瀷閫氱煡
-                    if (gwa.ReportAction != null)
-                    {
-                        DebugPrintLog("LogicExecuteReport宸茬粡閫氱煡");
-                        gwa.ReportAction("LogicExecuteReport", logic.logicExecuteRespo);
-                    }
+                    //if (logic.logicExecuteRespo == null)
+                    //{
+                    //    return;
+                    //}
+                    ////涓婃姤绫诲瀷閫氱煡
+                    //if (gwa.ReportAction != null)
+                    //{
+                    //    DebugPrintLog("LogicExecuteReport宸茬粡閫氱煡");
+                    //    gwa.ReportAction("LogicExecuteReport", logic.logicExecuteRespo);
+                    //}
                 }
                 #endregion
                 #region 鏃堕棿鐐规潯浠舵帹杩熸墽琛�
                 else if (topic == gatewayID + "/" + "Logic/TimingWillArrive")
                 {
-                    var logic = new Logic() { DataID = jobject.Value<int>("Data_ID"), GateWayId = gwa.getGatewayBaseInfo.gwID };
-                    logic.timingWillArriveData = Newtonsoft.Json.JsonConvert.DeserializeObject<Logic.TimingWillArriveData>(jobject["Data"].ToString());
+                    //var logic = new Logic() { DataID = jobject.Value<int>("Data_ID"), GateWayId = gwa.GwId };
+                    //logic.timingWillArriveData = Newtonsoft.Json.JsonConvert.DeserializeObject<Logic.TimingWillArriveData>(jobject["Data"].ToString());
 
-                    if (logic.timingWillArriveData == null)
-                    {
-                        return;
-                    }
-                    //涓婃姤绫诲瀷閫氱煡
-                    if (gwa.ReportAction != null)
-                    {
-                        DebugPrintLog("TimingWillArrive宸茬粡閫氱煡");
-                        gwa.ReportAction("TimingWillArrive", logic.timingWillArriveData);
-                    }
+                    //if (logic.timingWillArriveData == null)
+                    //{
+                    //    return;
+                    //}
+                    ////涓婃姤绫诲瀷閫氱煡
+                    //if (gwa.ReportAction != null)
+                    //{
+                    //    DebugPrintLog("TimingWillArrive宸茬粡閫氱煡");
+                    //    gwa.ReportAction("TimingWillArrive", logic.timingWillArriveData);
+                    //}
                 }
                 #endregion
                 #region 妯″紡瀹夐槻鍔ㄤ綔琚渶缁堟縺娲绘椂鍙戦�佹姤璀︿俊鎭�
                 else if (topic == gatewayID + "/" + "Security/ModeTriggerReport")
                 {
-                    var ias = new Safeguard() { DataID = jobject.Value<int>("Data_ID"), GateWayId = gwa.getGatewayBaseInfo.gwID };
+                    var ias = new Safeguard() { DataID = jobject.Value<int>("Data_ID"), GateWayId = gwa.GwId };
                     ias.modeTriggerReportData = Newtonsoft.Json.JsonConvert.DeserializeObject<Safeguard.ModeTriggerReportData>(jobject["Data"].ToString());
                     if (ias.modeTriggerReportData == null)
                     {
@@ -4333,7 +3413,7 @@
                 #region 閫氳繃澶栭儴鏂瑰紡甯冮槻鎾ら槻鎴愬姛鏃舵姤鍛婃伅
                 else if (topic == gatewayID + "/" + "Security/EnOrWithdrawSucceedReport")
                 {
-                    var ias = new Safeguard() { DataID = jobject.Value<int>("Data_ID"), GateWayId = gwa.getGatewayBaseInfo.gwID };
+                    var ias = new Safeguard() { DataID = jobject.Value<int>("Data_ID"), GateWayId = gwa.GwId };
                     ias.enOrWithdrawSucceedReportData = Newtonsoft.Json.JsonConvert.DeserializeObject<Safeguard.EnOrWithdrawSucceedReportData>(jobject["Data"].ToString());
                     if (ias.enOrWithdrawSucceedReportData == null)
                     {
@@ -4350,7 +3430,7 @@
                 #region 鑳佽揩瀵嗙爜鎾ら槻鏃剁煭淇℃帹閫�
                 else if (topic == gatewayID + "/" + "Security/PushTargetInfo")
                 {
-                    var ias = new Safeguard() { DataID = jobject.Value<int>("Data_ID"), GateWayId = gwa.getGatewayBaseInfo.gwID };
+                    var ias = new Safeguard() { DataID = jobject.Value<int>("Data_ID"), GateWayId = gwa.GwId };
                     ias.coercedPWDWithdrawReportData = Newtonsoft.Json.JsonConvert.DeserializeObject<Safeguard.CoercedPWDWithdrawReportData>(jobject["Data"].ToString());
                     if (ias.coercedPWDWithdrawReportData == null)
                     {
@@ -4364,22 +3444,6 @@
                     }
                 }
                 #endregion
-                #region 鑺傜偣璁惧榛樿鍙嶉
-                else if (topic == gatewayID + "/" + "DeviceDefaultAck")
-                {
-                    var deviceDefaultAck = new ZbGateway() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = gwa.getGatewayBaseInfo.gwID };
-                    if (deviceDefaultAck == null)
-                    {
-                        return;
-                    }
-                    //涓婃姤绫诲瀷閫氱煡
-                    if (gwa.ReportAction != null)
-                    {
-                        DebugPrintLog("DeviceDefaultAck");
-                        gwa.ReportAction("DeviceDefaultAck", deviceDefaultAck);
-                    }
-                }
-                #endregion
 
                 #region 璁惧璇锋眰APP鑾峰彇鍗囩骇鏁版嵁
                 else if (topic == gatewayID + "/" + "ZbDataPassthrough")
@@ -4387,7 +3451,7 @@
                     //涓婃姤绫诲瀷閫氱煡
                     if (gwa.ReportAction != null)
                     {
-                        var clientDataPassthrough = Newtonsoft.Json.JsonConvert.DeserializeObject<ClientDataPassthroughResponseData>(jobject["Data"].ToString());
+                        var clientDataPassthrough = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ClientDataPassthroughResponseData>(jobject["Data"].ToString());
                         if (clientDataPassthrough != null)
                         {
                             DebugPrintLog("DeviceRequestAcUpdateData");
@@ -4403,5 +3467,40 @@
             }
 
         }
+
+        #endregion
+
+        #region 淇濆瓨缂撳瓨
+
+        /// <summary>
+        /// 閲嶆柊淇濆瓨璁惧
+        /// </summary>
+        public void ReSave()
+        {
+            Global.WriteFileByBytesByHomeId(FilePath, System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this)));
+        }
+        #endregion
+
+        #region 璋冭瘯鎵撳嵃
+
+        /// <summary>
+        /// 璋冭瘯鏃舵墦寮�鎵撳嵃淇℃伅锛宼rue:鎵撳嵃锛宖alse:涓嶆墦鍗�
+        /// </summary>
+        /// <param name="msg">Message.</param>
+        /// <param name="flage">If set to <c>true</c> flage.</param>
+        public static void DebugPrintLog(string msg, bool flage = true)
+        {
+#if DEBUG
+            if (flage == true)
+            {
+                //if (msg.Contains("DeviceStatusReport") == false)
+                {
+                    System.Console.WriteLine(msg + "  " + System.DateTime.Now.ToLongTimeString() + " " + System.DateTime.Now.Millisecond);
+                }
+            }
+#endif
+        }
+
+        #endregion
     }
 }

--
Gitblit v1.8.0