From 25429f085093d89d543a0b90e30d0d62d1b7dac9 Mon Sep 17 00:00:00 2001
From: hxb <hxb@hdlchina.com.cn>
Date: 星期二, 30 八月 2022 09:37:38 +0800
Subject: [PATCH] 合并了IOS的代码

---
 ZigbeeApp/Shared/Phone/ZigBee/Device/ZbGateway.cs |  272 ++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 180 insertions(+), 92 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/ZigBee/Device/ZbGateway.cs b/ZigbeeApp/Shared/Phone/ZigBee/Device/ZbGateway.cs
index f8b36df..eccff57 100755
--- a/ZigbeeApp/Shared/Phone/ZigBee/Device/ZbGateway.cs
+++ b/ZigbeeApp/Shared/Phone/ZigBee/Device/ZbGateway.cs
@@ -26,24 +26,26 @@
         /// <summary>
         /// 涓荤綉鍏�
         /// </summary>
-        /// <value>The main gate way.</value>
+        [Newtonsoft.Json.JsonIgnore]
         public static ZbGateway MainGateWay
         {
             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;
+            {
+                ZbGateway mainWay = null;
+                for (int i = 0; i < GateWayList.Count; i++)
+                {
+                    if (GateWayList[i].HomeId == Config.Instance.HomeId)
+                    {
+                        //2020.07.16鍙樻洿:鍒閭d箞澶�,濡傛灉浣忓畢ID涓�鏍�,鍏堢‘瀹氬氨鏄畠浜�(涓嶇劧鏈夋椂鍊欑粡甯歌繑鍥瀗ull,鏈夊彲鑳芥槸鍒锋柊涓嶅埌)
+                        mainWay = GateWayList[i];
+                        if (mainWay.IsMainGateWay == true)
+                        {
+                            //鐒跺悗濡傛灉瀹冪‘瀹炴槸涓荤綉鍏�,鐩存帴break
+                            break;
+                        }
+                    }
+                }
+                return mainWay;
             }
         }
 
@@ -68,7 +70,7 @@
         {
             get
             {
-                var fileName = "Gateway_" + DeviceType.ZbGateway.ToString() + "_" + this.getGatewayBaseInfo?.gwID;
+                var fileName = "Gateway_" + DeviceType.ZbGateway.ToString() + "_" + this.GwId;
                 return fileName;
             }
         }
@@ -551,7 +553,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 } };
@@ -2348,7 +2349,7 @@
         /// </summary>
         static Guid currentGuid = Guid.NewGuid();
 
-        public async System.Threading.Tasks.Task SendAesKey()
+        public async Task SendAesKey()
         {
             if (PubKey != null)
             {
@@ -2367,12 +2368,11 @@
             }
         }
 
-        public async System.Threading.Tasks.Task StartLocalMqtt(string brokerName)
+        public async Task StartLocalMqtt(string brokerName)
         {
             if (localMqttIsConnecting
-                       || !Shared.Common.Config.Instance.IsLogin
-                       || Shared.Common.Config.Instance.HomeId == ""
-                       || localIsConnected)
+                || Shared.Common.Config.Instance.HomeId == ""
+                || localIsConnected)
             {
                 return;
             }
@@ -2413,6 +2413,11 @@
                             {
                                 DebugPrintLog($" 鏈湴杩炴帴鎴愬姛_缃戝叧IP:{brokerName}_缃戝叧鏄惁鍔�:{IsEncry}_褰撳墠瀵嗙爜:{Password}");
                                 IsRemote = false;
+                                //Log鍐欏叆(璋冭瘯鐢�)
+                                if (Shared.Phone.UserCenter.UserCenterResourse.HideOption.WriteSendAndReceveDataToFile == 1)
+                                {
+                                    Shared.Phone.UserCenter.HdlLogLogic.Current.WriteLog(2, "鏈湴杩炴帴鎴愬姛");
+                                }
                             });
                         }
 
@@ -2452,7 +2457,12 @@
                     }
                 }
                 catch (Exception ex)
-                {
+                {
+                    //Log鍐欏叆(璋冭瘯鐢�)
+                    if (Shared.Phone.UserCenter.UserCenterResourse.HideOption.WriteSendAndReceveDataToFile == 1)
+                    {
+                        Shared.Phone.UserCenter.HdlLogLogic.Current.WriteLog(2, "鏈湴杩炴帴寮傚父:\r\n" + ex.Message);
+                    }
                     DebugPrintLog($"灞�鍩熺綉閫氳杩炴帴鍑哄紓甯�:{ex.Message}");
                 }
                 finally
@@ -2462,22 +2472,15 @@
             });
         }
 
-        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>
         /// <returns></returns>
-        static async System.Threading.Tasks.Task initGateWayBaseInfomation()
+        static async Task initGateWayBaseInfomation()
         {
             if (AllowRemoteCtrl == false)
             {
@@ -2495,9 +2498,7 @@
                     MainAccountId = Config.Instance.Home.MainUserDistributedMark,
                     SharedHid = Config.Instance.Home.Id
                 };
-
-                var listNotShow = new List<string>() { "NotSetAgain" };
-                var resultData = await Shared.Phone.UserCenter.UserCenterLogic.GetByteResponseDataByRequestHttps("App/GetSharedHomeApiControl", false, pra, listNotShow);
+                var resultData = Shared.Phone.UserCenter.UserCenterLogic.GetByteResponseDataByRequestHttps("App/GetSharedHomeApiControl", false, pra, new List<string> { "NotCheck" });
                 if (resultData == null)
                 {
                     return;
@@ -2518,7 +2519,7 @@
                 pra2.ReqDto.LoginAccessToken = loginToken;
                 var bytes = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(pra2));
 
-                var result = await CommonPage.Instance.DoRequestZigbeeHttpsInterface("https://global.hdlcontrol.com/HangZhouHdlCloudApi/App/GetSingleHomeGatewayPagger", bytes, loginToken);
+                var result = CommonPage.Instance.DoRequestZigbeeHttpsInterface("https://global.hdlcontrol.com/HangZhouHdlCloudApi/App/GetSingleHomeGatewayPagger", bytes, loginToken);
                 if (result != null)
                 {
                     var jobject = Newtonsoft.Json.Linq.JObject.Parse(Encoding.UTF8.GetString(result));
@@ -2543,7 +2544,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);
@@ -2570,23 +2571,37 @@
         public static IMqttClient RemoteMqttClient = new MqttFactory().CreateMqttClient();
         static bool remoteIsConnected;
 
+        /// <summary>
+        /// 杩滅▼寮�濮嬭繛鎺ョ殑鏃堕棿鐐�
+        /// </summary>
+        private static DateTime RemoteConnectTime = DateTime.Now;
         /// <summary>
         /// 鍚姩杩滅▼Mqtt
         /// </summary>
         /// <returns>The start.</returns>
         /// <param name="brokerName">Broker name.</param>
-        public static async System.Threading.Tasks.Task StartRemoteMqtt()
+        public static async Task StartRemoteMqtt()
         {
             //杩藉姞锛氭病鏈夎繙绋嬭繛鎺ョ殑鏉冮檺
             if (AllowRemoteCtrl == false
-               || remoteMqttIsConnecting
-               || !Shared.Common.Config.Instance.IsLogin
                || Shared.Common.Config.Instance.HomeId == ""
                || remoteIsConnected)
             {
                 return;
             }
-            await System.Threading.Tasks.Task.Factory.StartNew(async () =>
+            //濡傛灉杩滅▼杩樺湪杩炴帴涓�
+            if (remoteMqttIsConnecting == true)
+            {
+                //濡傛灉杩欎釜鍙橀噺涓�鐩村浜庤繛鎺ヤ腑鐨勭姸鎬�,浣嗘槸宸茬粡杩囧幓浜�10绉掍簡,杩樻槸true鐨勮瘽,璇存槑杩欓噷鏄湁鐐归棶棰樼殑,闇�瑕侀噸鏂板垱寤�
+                if ((DateTime.Now - RemoteConnectTime).TotalMilliseconds < 10 * 1000)
+                {
+                    return;
+                }
+            }
+            //璁板綍璧疯繖娆¤繙绋嬭繛鎺ョ殑鏃堕棿鐐�
+            RemoteConnectTime = DateTime.Now;
+
+            await Task.Factory.StartNew(async () =>
             {
                 try
                 {
@@ -2649,44 +2664,50 @@
                                 //璁㈤槄涓�涓尋涓嬬嚎鐨勪富棰�
                                 await RemoteMqttClient.SubscribeAsync("/ZigbeeGateWayToClient/" + Config.Instance.ConnEmqClientId + "/Push/NotifySqueeze");
 
-                                await initGateWayBaseInfomation();
-
-                                //娌℃湁涓荤綉鍏虫椂涓诲姩璇诲彇锛岃幏鍙栦富缃戝叧淇℃伅
-                                var gateWayList = GateWayList.FindAll(obj => obj.getGatewayBaseInfo.HomeId == Shared.Common.Config.Instance.HomeId);
-                                if (gateWayList.Find(obj => obj.getGatewayBaseInfo.IsMainGateWay == true) == null)
+                                //濡傛灉杩欎釜鍑芥暟鍗′箙浜嗙殑璇濓紝浼氭帴鏀跺埌浜戠鎺ㄩ�佺殑鎸や笅绾夸富棰橈紝涓嶇煡閬撲负浠�涔�
+                                new Thread(async () =>
                                 {
-                                    if (gateWayList.Count == 1)
+                                    await initGateWayBaseInfomation();
+
+                                    //娌℃湁涓荤綉鍏虫椂涓诲姩璇诲彇锛岃幏鍙栦富缃戝叧淇℃伅
+                                    var gateWayList = GateWayList.FindAll(obj => obj.HomeId == Shared.Common.Config.Instance.HomeId);
+                                    if (gateWayList.Find(obj => obj.IsMainGateWay == true) == null)
                                     {
-                                        gateWayList[0].getGatewayBaseInfo.IsMainGateWay = true;
-                                    }
-                                    else
-                                    {
-                                        for (int i = 0; i < gateWayList.Count; i++)
+                                        if (gateWayList.Count == 1)
                                         {
-                                            var gateWay = gateWayList[i];
-                                            var info = await gateWay.GetZbGwInfoAsync();
-                                            if (info == null || info.getGwData == null)
+                                            gateWayList[0].IsMainGateWay = true;
+                                        }
+                                        else
+                                        {
+                                            for (int i = 0; i < gateWayList.Count; i++)
                                             {
-                                                continue;
-                                            }
-                                            if (info.getGwData.IsDominant == 1)
-                                            {
-                                                for (int j = 0; j < gateWayList.Count; j++)
+                                                var gateWay = gateWayList[i];
+                                                var info = await gateWay.GetZbGwInfoAsync();
+                                                if (info == null || info.getGwData == null)
                                                 {
-                                                    if (gateWayList[i].getGatewayBaseInfo.gwID == info.getGwData.GwId)
-                                                    {
-                                                        gateWayList[i].getGatewayBaseInfo.IsMainGateWay = true;
-                                                    }
-                                                    else
-                                                    {
-                                                        gateWayList[i].getGatewayBaseInfo.IsMainGateWay = false;
-                                                    }
+                                                    continue;
                                                 }
-                                                break;
+                                                if (info.getGwData.IsDominant == 1)
+                                                {
+                                                    for (int j = 0; j < gateWayList.Count; j++)
+                                                    {
+                                                        if (gateWayList[i].GwId == info.getGwData.GwId)
+                                                        {
+                                                            gateWayList[i].IsMainGateWay = true;
+                                                        }
+                                                        else
+                                                        {
+                                                            gateWayList[i].IsMainGateWay = false;
+                                                        }
+                                                    }
+                                                    break;
+                                                }
                                             }
                                         }
                                     }
-                                }
+                                })
+                                { IsBackground = true }.Start();
+                                
                             });
                         }
                         #endregion
@@ -2708,7 +2729,7 @@
                                 ["PublishPayloadJsonStr"] = "1"
                             };
                             var bytes = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(jsonData));
-                            result = await CommonPage.Instance.DoRequestZigbeeHttpsInterface("https://global.hdlcontrol.com/HangZhouHdlCloudApi/EmqMqtt/GetConnMqttInfo", bytes, Config.Instance.Token);
+                            result = CommonPage.Instance.DoRequestZigbeeHttpsInterface("https://global.hdlcontrol.com/HangZhouHdlCloudApi/EmqMqtt/GetConnMqttInfo", bytes, Config.Instance.Token);
                         }
                         else
                         {
@@ -2725,7 +2746,7 @@
                                 ["PublishPayloadJsonStr"] = "1"
                             };
                             var bytes = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(jsonData));
-                            result = await CommonPage.Instance.DoRequestZigbeeHttpsInterface("https://global.hdlcontrol.com/HangZhouHdlCloudApi/EmqMqtt/ShareMemberConnMqttInfo", bytes, Config.Instance.Token);
+                            result = CommonPage.Instance.DoRequestZigbeeHttpsInterface("https://global.hdlcontrol.com/HangZhouHdlCloudApi/EmqMqtt/ShareMemberConnMqttInfo", bytes, Config.Instance.Token);
                         }
                         if (result != null)
                         {
@@ -2736,8 +2757,6 @@
                                 AllowRemoteCtrl = false;
                                 return;
                             }
-                            //铏界劧涓嶇煡閬撳鎸や笅绾块偅涓�鍧楁湁娌℃湁鐢�,涓嶈繃鍏堣繖涔堝紕
-                            await System.Threading.Tasks.Task.Delay(1500);
 
                             var responseData = jobject["ResponseData"];
                             if (responseData != null)
@@ -2785,13 +2804,15 @@
         /// <summary>
         /// 鏂紑鏈嶅姟鍣ㄨ繛鎺�
         /// </summary>
-        public async System.Threading.Tasks.Task DisConnectLocalMqttClient(string s)
+        public async Task DisConnectLocalMqttClient(string s)
         {
             try
             {
                 if (localIsConnected)
                 {
                     localIsConnected = false;
+                    //杩欎釜涓滆タ涔熻寮�
+                    localMqttIsConnecting = false;
                     DebugPrintLog($"Local涓诲姩鏂紑_{s}");
                     //await localMqttClient.DisconnectAsync(new MQTTnet.Client.Disconnecting.MqttClientDisconnectOptions {  }, CancellationToken.None);
                     await localMqttClient.DisconnectAsync();
@@ -2801,18 +2822,38 @@
             {
                 DebugPrintLog($"Local鏂紑閫氳杩炴帴鍑哄紓甯�:{ex.Message}");
             }
+        }
+
+        /// <summary>
+        /// 寮哄埗鏂紑鏈湴鐨勭綉鍏宠繛鎺�
+        /// </summary>
+        public async Task CloseLocalConnectionOnForce()
+        {
+            try
+            {
+                await localMqttClient.DisconnectAsync();
+            }
+            catch { }
+            finally
+            {
+                localIsConnected = false;
+                //杩欎釜涓滆タ涔熻寮�
+                localMqttIsConnecting = false;
+            }
         }
 
         /// <summary>
         /// 鏂紑杩滅▼Mqtt鐨勯摼鎺�
         /// </summary>
-        public static async System.Threading.Tasks.Task DisConnectRemoteMqttClient(string s = "")
+        public static async Task DisConnectRemoteMqttClient(string s = "")
         {
             try
             {
                 if (remoteIsConnected)
                 {
                     remoteIsConnected = false;
+                    //杩欎釜涓滆タ涔熻寮�
+                    remoteMqttIsConnecting = false;
                     DebugPrintLog($"Remote涓诲姩鏂紑_{s}");
                     //await RemoteMqttClient.DisconnectAsync(new MQTTnet.Client.Disconnecting.MqttClientDisconnectOptions { }, CancellationToken.None);
                     await RemoteMqttClient.DisconnectAsync();
@@ -2821,6 +2862,25 @@
             catch (Exception e)
             {
                 DebugPrintLog($"Remote鏂紑閫氳杩炴帴鍑哄紓甯�:{e.Message}");
+            }
+        }
+
+        /// <summary>
+        /// 寮哄埗鏂紑杩滅▼Mqtt鐨勯摼鎺�
+        /// </summary>
+        /// <returns></returns>
+        public static async Task CloseRemoteConnectionOnForce()
+        {
+            try
+            {
+                await RemoteMqttClient.DisconnectAsync();
+            }
+            catch { }
+            finally
+            {
+                remoteIsConnected = false;
+                //杩欎釜涓滆タ涔熻寮�
+                remoteMqttIsConnecting = false;
             }
         }
 
@@ -2858,11 +2918,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
@@ -2902,6 +2962,16 @@
                 if (Shared.Common.Config.Instance.HomeId == "")
                 {
                     return;
+                }
+
+                //Log鍐欏叆(璋冭瘯鐢�)
+                if (Shared.Phone.UserCenter.UserCenterResourse.HideOption.WriteSendAndReceveDataToFile == 1)
+                {
+                    string text = "杩滅▼鍙戦��:";
+                    if (IsRemote == false) { text = "鏈湴鍙戦��:"; }
+                    text += topic + "\r\n";
+                    text += Encoding.UTF8.GetString(message) + "\r\n";
+                    Shared.Phone.UserCenter.HdlLogLogic.Current.WriteLog(2, text);
                 }
 
                 if (IsRemote)
@@ -2936,6 +3006,11 @@
                             {
                                 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 });
+                            }
+                            //Log鍐欏叆(璋冭瘯鐢�)
+                            if (Shared.Phone.UserCenter.UserCenterResourse.HideOption.WriteSendAndReceveDataToFile == 1)
+                            {
+                                Shared.Phone.UserCenter.HdlLogLogic.Current.WriteLog(2, "鏈湴杩炴帴寮傚父鏂紑");
                             }
                         }
                     }
@@ -3152,10 +3227,18 @@
                     attrId = topic.Split('/')[5];
                 }
 
+                //Log鍐欏叆(璋冭瘯鐢�)
+                if (Shared.Phone.UserCenter.UserCenterResourse.HideOption.WriteSendAndReceveDataToFile == 1)
+                {
+                    string text = "缃戝叧鍥炲:" + topic + "\r\n";
+                    text += message + "\r\n";
+                    Shared.Phone.UserCenter.HdlLogLogic.Current.WriteLog(2, text);
+                }
+
                 //鍏ㄥ眬鎺ユ敹缃戝叧鎺ㄩ�佺殑鐨勯�昏緫(涓轰簡鎵ц閫熷害,灏藉彲鑳界殑鍒姞鑰楁椂鐨勬搷浣�)
                 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;
@@ -3193,16 +3276,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;
                                 }
                             }
                         }
@@ -3237,7 +3320,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"), 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)
                             {
@@ -3260,7 +3343,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"), 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)
                             {
@@ -3362,7 +3445,7 @@
                 #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)
@@ -3380,7 +3463,7 @@
                 #region 閫昏緫琚皟鐢ㄥ弽棣�
                 else if (topic == gatewayID + "/" + "Logic/Execute_Respon")
                 {
-                    //var logic = new Logic() { DataID = jobject.Value<int>("Data_ID"), GateWayId = gwa.getGatewayBaseInfo.gwID };
+                    //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)
@@ -3398,7 +3481,7 @@
                 #region 鏃堕棿鐐规潯浠舵帹杩熸墽琛�
                 else if (topic == gatewayID + "/" + "Logic/TimingWillArrive")
                 {
-                    //var logic = new Logic() { DataID = jobject.Value<int>("Data_ID"), GateWayId = gwa.getGatewayBaseInfo.gwID };
+                    //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)
@@ -3416,7 +3499,7 @@
                 #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)
                     {
@@ -3433,7 +3516,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)
                     {
@@ -3450,7 +3533,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)
                     {
@@ -3497,6 +3580,11 @@
         /// </summary>
         public void ReSave()
         {
+            if (Shared.Common.Config.Instance.Home.IsShowTemplate == true)
+            {
+                //灞曠ず妯℃澘鏃�,涓嶅厑璁镐繚瀛樻枃浠�(闃叉灞炴�т笂鎶ョ敤鐨�)
+                return;
+            }
             Global.WriteFileByBytesByHomeId(FilePath, System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this)));
         }
         #endregion
@@ -3513,7 +3601,7 @@
 #if DEBUG
             if (flage == true)
             {
-                if (msg.Contains("DeviceStatusReport") == false)
+                //if (msg.Contains("DeviceInfoRespon") == true)
                 {
                     System.Console.WriteLine(msg + "  " + System.DateTime.Now.ToLongTimeString() + " " + System.DateTime.Now.Millisecond);
                 }

--
Gitblit v1.8.0