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/UserCenter/CommonBase/Logic/HdlGatewayLogic.cs | 1772 +++++++++++++++++++++++++++++++++------------------------- 1 files changed, 1,013 insertions(+), 759 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayLogic.cs index 20c6cb8..21a9022 100755 --- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayLogic.cs +++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayLogic.cs @@ -15,11 +15,11 @@ #region 鈻� 鍙橀噺澹版槑___________________________ /// <summary> - /// 澶囦唤涓氬姟鐨勯�昏緫 + /// 缃戝叧涓氬姟鐨勯�昏緫绫� /// </summary> private static HdlGatewayLogic m_Current = null; /// <summary> - /// 澶囦唤涓氬姟鐨勯�昏緫 + /// 缃戝叧涓氬姟鐨勯�昏緫绫� /// </summary> public static HdlGatewayLogic Current { @@ -69,8 +69,7 @@ continue; } //娣诲姞缂撳瓨 - string gwID = HdlGatewayLogic.Current.GetGatewayId(gateway); - dicGateway[gwID] = gateway; + dicGateway[gateway.GwId] = gateway; } } } @@ -117,10 +116,20 @@ { return; } + + List<string> listBackupGwId = new List<string>(); + var fileData = Global.ReadFileByDirectory(DirNameResourse.LocalMemoryDirectory, DirNameResourse.BackupGatewayIdFile); + if (fileData != null) + { + //鏂板锛氳櫧鐒舵鐜囦綆锛屼絾鏄‘瀹炲彂鐢熶簡銆傚鏋滄湁缃戠粶鏃讹紝App閲嶆柊缁戝畾璁板綍鐨勭綉鍏冲け璐ョ殑璇� + //涓嶅簲璇ュ垹闄ゅ畠 + listBackupGwId = JsonConvert.DeserializeObject<List<string>>(System.Text.Encoding.UTF8.GetString(fileData)); + } + List<string> listDelete = new List<string>(); foreach (var gatewayId in this.dicGateway.Keys) { - if (result.ContainsKey(gatewayId) == false) + if (result.ContainsKey(gatewayId) == false && listBackupGwId.Contains(gatewayId) == false) { //鏈湴瀛樺湪浜戠涓嶅瓨鍦ㄧ殑缃戝叧锛屽垯鍒犻櫎 listDelete.Add(gatewayId); @@ -132,8 +141,10 @@ List<CommonDevice> list = Common.LocalDevice.Current.GetDeviceByGatewayID(gatewayId); foreach (var device in list) { - //鍒犻櫎璁惧锛屼笉鍒犻櫎鎴块棿淇℃伅 - Common.LocalDevice.Current.DeleteMemmoryDevice(device, false); + //鍒犻櫎涓�鑸澶� + Common.LocalDevice.Current.DeleteMemmoryDevice(device, true); + //鍒犻櫎Ota璁惧 + Common.LocalDevice.Current.DeleteMemmoryOtaDevice(device.DeviceAddr); } //鍒犻櫎缃戝叧鏂囦欢 this.DeleteGatewayFile(gatewayId); @@ -168,10 +179,28 @@ /// <returns></returns> private ZbGateway GetGatewayFromFile(string file) { - byte[] filebyte = Global.ReadFileByHomeId(file); - string strvalue = System.Text.Encoding.UTF8.GetString(filebyte); - var gateway = JsonConvert.DeserializeObject<ZbGateway>(strvalue); - return gateway; + try + { + byte[] filebyte = Global.ReadFileByHomeId(file); + string strvalue = System.Text.Encoding.UTF8.GetString(filebyte); + var gateway = JsonConvert.DeserializeObject<ZbGateway>(strvalue); + if (gateway.GwId == string.Empty) + { + //杩欐槸鏃ф暟鎹�,闇�瑕佺壒娈婂鐞� + var jobject = Newtonsoft.Json.Linq.JObject.Parse(strvalue); + string gwInfo = jobject["getGwInfo"].ToString(); + + var result = JsonConvert.DeserializeObject<ZbGatewayData.GetGwData>(gwInfo); + //灏嗙綉鍏崇殑鏁版嵁璁剧疆鍒版湰鍦扮紦瀛樹腑 + this.SetGatewayDataToLocalMemmory(gateway, result); + } + return gateway; + } + catch (Exception ex) + { + HdlLogLogic.Current.WriteLog(ex); + return null; + } } #endregion @@ -179,20 +208,40 @@ #region 鈻� 娣诲姞缃戝叧___________________________ /// <summary> - /// 娣诲姞鏂扮綉鍏�(浠呴檺杩藉姞鏂扮殑缃戝叧 1:姝e父 -1:寮傚父 0:褰撳墠鐨勭綉鍏崇粦瀹氬湪浜嗗綋鍓嶈处鍙蜂笅鐨勪笉鍚屼綇瀹呴噷闈�) + /// 娣诲姞鏂扮綉鍏�(浠呴檺杩藉姞鏂扮殑缃戝叧) /// </summary> /// <param name="zbGateway">缃戝叧</param> /// <param name="mode">鏄惁鏄剧ず閿欒</param> - public async Task<int> AddNewGateway(ZbGateway zbGateway, ShowErrorMode mode) - { + public async Task<bool> AddNewGateway(ZbGateway zbGateway, ShowErrorMode mode) + { + //璁剧疆缃戝叧鐨勭粡绾害 + bool falge = this.SetGatewaySite(zbGateway, Common.Config.Instance.Home.Longitude, Common.Config.Instance.Home.Latitude, ShowErrorMode.NO); + if (falge == false) + { + return falge; + } //鎵ц娣诲姞缃戝叧鍒板唴瀛� var result = await this.DoAddGatewayToMemory(zbGateway, mode); - if (result != 1) + //鍓嶇殑缃戝叧缁戝畾鍦ㄤ簡褰撳墠璐﹀彿涓嬬殑涓嶅悓浣忓畢閲岄潰 + if (result == 0) { - return result; + if (mode == ShowErrorMode.YES) + { + //缃戝叧缁戝畾鍦ㄥ綋鍓嶈处鍙蜂笅鐨勫叾浠栦綇瀹呴噷\r\n璇疯В闄ょ粦瀹氬悗鍐嶈瘯 + string msg = Language.StringByID(R.MyInternationalizationString.uTheGatewayInOtherResidenceMsg); + if (msg.Contains("{0}") == true) + { + msg = string.Format(msg, "\r\n"); + } + this.ShowTipMsg(msg); + } + return false; + } + if (result == -1) + { + return false; } - - return 1; + return true; } /// <summary> @@ -202,8 +251,8 @@ public void AddVirtualGateway(string gatewayId) { var gateWay = new ZbGateway { IsVirtual = true }; - gateWay.getGatewayBaseInfo.gwID = gatewayId; - gateWay.getGatewayBaseInfo.HomeId = Shared.Common.Config.Instance.HomeId; + gateWay.GwId = gatewayId; + gateWay.HomeId = Shared.Common.Config.Instance.HomeId; gateWay.ReSave(); this.dicGateway[gatewayId] = gateWay; } @@ -288,7 +337,7 @@ } //鏄惁宸茬粡瀛樺湪 - string gwID = HdlGatewayLogic.Current.GetGatewayId(zbGateway); + string gwID = zbGateway.GwId; bool isEsist = HdlGatewayLogic.Current.IsGatewayExist(zbGateway); if (isEsist == false) { @@ -300,11 +349,11 @@ //鍒锋柊鐨勬槸缂撳瓨,涓嶅埛鏂扮湡瀹炵墿鐞嗙綉鍏� this.dicGateway[gwID].GatewayOnlineFlage = zbGateway.GatewayOnlineFlage; - this.dicGateway[gwID].getGwInfo = result.getGwData; - this.dicGateway[gwID].getGatewayBaseInfo.GwName = result.getGwData.GwName; - this.dicGateway[gwID].getGatewayBaseInfo.IpAddress = result.getGwData.GwIP; - this.dicGateway[gwID].getGatewayBaseInfo.HomeId = Common.Config.Instance.HomeId; - this.dicGateway[gwID].ReSave(); + //灏嗙綉鍏崇殑鏁版嵁璁剧疆鍒版湰鍦扮紦瀛樹腑 + this.SetGatewayDataToLocalMemmory(this.dicGateway[gwID], result.getGwData); + //椤轰究杩欎釜鍙橀噺涔熻缃竴涓� + this.SetGatewayDataToLocalMemmory(zbGateway, result.getGwData, false); + if (isEsist == false) { //娣诲姞澶囦唤 @@ -339,8 +388,7 @@ { //璋冪敤鎺ュ彛锛岀粦瀹氱綉鍏�(鍗充娇澶辫触锛屼篃杩斿洖true寰�涓嬭蛋) var bindGateway = new BindGatewayPra(); - string gwID = this.GetGatewayId(zbGateway); - bindGateway.BindGateways.Add(gwID); + bindGateway.BindGateways.Add(zbGateway.GwId); //鑾峰彇鎺у埗涓讳汉璐﹀彿鐨凾oken bindGateway.LoginAccessToken = UserCenterLogic.GetConnectMainToken(); @@ -366,7 +414,7 @@ /// <returns></returns> public bool HomeIdIsEmpty(ZbGateway zbGateway) { - return this.HomeIdIsEmpty(zbGateway.getGatewayBaseInfo.HomeId); + return this.HomeIdIsEmpty(zbGateway.HomeId); } /// <summary> @@ -391,6 +439,7 @@ /// 閲嶆柊缁戝畾缃戝叧(1:姝e父 -1:寮傚父 0:褰撳墠鐨勭綉鍏崇粦瀹氬湪浜嗗綋鍓嶈处鍙蜂笅鐨勪笉鍚屼綇瀹呴噷闈�) /// </summary> /// <param name="zbGateway">缃戝叧</param> + /// <param name="btnMsg">娑堟伅鎺т欢</param> public async Task<int> ReBindNewGateway(ZbGateway zbGateway, NormalViewControl btnMsg = null) { if (zbGateway == null) @@ -398,6 +447,12 @@ //閿欒:缃戝叧瀵硅薄涓㈠け string msg = Language.StringByID(R.MyInternationalizationString.uErrorGatewayLostMsg); this.ShowTipMsg(msg); + return -1; + } + //璁剧疆缃戝叧鐨勭粡绾害 + bool falge = this.SetGatewaySite(zbGateway, Common.Config.Instance.Home.Longitude, Common.Config.Instance.Home.Latitude, ShowErrorMode.YES); + if (falge == false) + { return -1; } @@ -437,7 +492,7 @@ btnMsg.TextID = R.MyInternationalizationString.uGatewayDataIsChangingPleaseWhait; }); } - await System.Threading.Tasks.Task.Delay(8000); + await Task.Delay(8000); //鑾峰彇缃戝叧鐨勪俊鎭� var result = await zbGateway.GetZbGwInfoAsync(); @@ -449,15 +504,7 @@ return -1; } - if (result == null) - { - //鑾峰彇缃戝叧淇℃伅澶辫触 - string msg = Language.StringByID(R.MyInternationalizationString.uGetGatewayInfoFail); - this.ShowTipMsg(msg); - return -1; - } - - if (result.getGwData == null) + if (result == null || result.getGwData == null) { //鑾峰彇缃戝叧淇℃伅澶辫触 string msg = Language.StringByID(R.MyInternationalizationString.uGetGatewayInfoFail); @@ -466,7 +513,7 @@ } //鏄惁宸茬粡瀛樺湪 - string gwID = HdlGatewayLogic.Current.GetGatewayId(zbGateway); + string gwID = zbGateway.GwId; bool isEsist = HdlGatewayLogic.Current.IsGatewayExist(zbGateway); if (isEsist == false) { @@ -478,11 +525,11 @@ //鍒锋柊鐨勬槸缂撳瓨,涓嶅埛鏂扮湡瀹炵墿鐞嗙綉鍏� this.dicGateway[gwID].GatewayOnlineFlage = zbGateway.GatewayOnlineFlage; - this.dicGateway[gwID].getGwInfo = result.getGwData; - this.dicGateway[gwID].getGatewayBaseInfo.GwName = result.getGwData.GwName; - this.dicGateway[gwID].getGatewayBaseInfo.IpAddress = result.getGwData.GwIP; - this.dicGateway[gwID].getGatewayBaseInfo.HomeId = Common.Config.Instance.HomeId; - this.dicGateway[gwID].ReSave(); + //灏嗙綉鍏崇殑鏁版嵁璁剧疆鍒版湰鍦扮紦瀛樹腑 + this.SetGatewayDataToLocalMemmory(this.dicGateway[gwID], result.getGwData); + //椤轰究杩欎釜鍙橀噺涔熻缃竴涓� + this.SetGatewayDataToLocalMemmory(zbGateway, result.getGwData, false); + if (isEsist == false) { //娣诲姞澶囦唤 @@ -540,16 +587,115 @@ } //淇敼缂撳瓨 - string gwID = this.GetGatewayId(zbGateway); - this.dicGateway[gwID].getGatewayBaseInfo.GwName = gatewayName; + string gwID = zbGateway.GwId; + this.dicGateway[gwID].GwName = gatewayName; this.dicGateway[gwID].ReSave(); //娣诲姞鑷姩澶囦唤 HdlAutoBackupLogic.AddOrEditorFile(zbGateway.FilePath); return true; - } - + } + + #endregion + + #region 鈻� 缃戝叧鍒囨崲___________________________ + + /// <summary> + /// 鎵ц鍒囨崲缃戝叧鎿嶄綔 + /// </summary> + /// <param name="gatewayId"></param> + public async Task<bool> DoSwitchGateway(string gatewayId) + { + var zbGateway = this.GetLocalGateway(gatewayId); + if (this.CheckGatewayOnlineByFlag(zbGateway) == true) + { + //閲嶆柊鑾峰彇鍦ㄧ嚎缃戝叧鐨勪俊鎭� + var result = await this.GetOnlineGatewayInfo(gatewayId); + if (result == false) + { + return false; + } + } + //鍒囨崲缃戝叧,淇濆瓨缂撳瓨 + this.SaveGatewayIdToLocation(gatewayId); + //鍒囨崲缃戝叧鐨勮瘽,涓婚〉闇�瑕侀噸鏂板埛鏂� + UserView.UserPage.Instance.RefreshForm = true; + + return true; + } + + /// <summary> + /// 鑾峰彇鍦ㄧ嚎缃戝叧淇℃伅 + /// </summary> + /// <param name="gatewayId"></param> + /// <returns></returns> + private async Task<bool> GetOnlineGatewayInfo(string gatewayId) + { + //鏄剧ず杩涘害鏉� + ProgressBar.Show(); + + //妫�娴嬪箍鎾埌鐨勮繖涓綉鍏虫槸鍚︽嫢鏈変綇瀹匢D + ZbGateway realWay = null; + bool getGatewayInfo = true; + if (this.GetRealGateway(ref realWay, gatewayId) == true) + { + //閲嶆柊璁剧疆浣忓畢ID(杩欎釜搴旇鏄笉缁忚繃APP,鐩存帴鎶婄綉鍏虫仮澶嶄簡鍑哄巶璁剧疆) + if (this.HomeIdIsEmpty(realWay.HomeId) == true) + { + int result2 = await this.ReBindNewGateway(realWay); + if (result2 == 0) + { + //鍑虹幇鏈煡閿欒,璇风◢鍚庡啀璇� + this.ShowTipMsg(Language.StringByID(R.MyInternationalizationString.uUnKnowErrorAndResetAgain)); + //鍏抽棴杩涘害鏉� + ProgressBar.Close(); + } + else if (result2 == -1) + { + //鍏抽棴杩涘害鏉� + ProgressBar.Close(); + return false; + } + //閲嶆柊缁戝畾缃戝叧閲岄潰宸茬粡閲嶆柊鑾峰彇浜嗙綉鍏充俊鎭� + getGatewayInfo = false; + } + } + + if (getGatewayInfo == true) + { + //鑾峰彇缃戝叧淇℃伅 + var info = await this.GetGatewayNewInfoAsync(realWay); + if (info == null) + { + //鍏抽棴杩涘害鏉� + ProgressBar.Close(); + return false; + } + } + + //鑾峰彇鍏ㄩ儴璁惧 + int result = LocalDevice.Current.SetDeviceToMemmoryByGateway(realWay); + //鍏抽棴杩涘害鏉� + ProgressBar.Close(); + if (result == -1) + { + return false; + } + return true; + } + + /// <summary> + /// 淇濆瓨閫夋嫨鐨勭綉鍏矷D鍒版湰鍦� + /// </summary> + /// <param name="gatewayId"></param> + public void SaveGatewayIdToLocation(string gatewayId) + { + GatewayResourse.AppOldSelectGatewayId = gatewayId; + byte[] data = System.Text.Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(GatewayResourse.AppOldSelectGatewayId)); + Global.WriteFileToDirectoryByBytes(DirNameResourse.LocalMemoryDirectory, DirNameResourse.AppOldSelectGatewayFile, data); + } + #endregion #region 鈻� 鍒犻櫎缃戝叧___________________________ @@ -560,9 +706,8 @@ /// <param name="zbGateway"></param> public async Task<bool> DeleteGateway(ZbGateway zbGateway) { - string gwID = this.GetGatewayId(zbGateway); //绉婚櫎鏈湴缃戝叧淇℃伅 - return await this.DeleteGateway(gwID); + return await this.DeleteGateway(zbGateway.GwId); } /// <summary> @@ -581,23 +726,23 @@ bool result = await this.SetHomeIdToGateway(realWay, string.Empty); if (result == false) { - //缃戝叧瑙g粦澶辫触 + //缃戝叧瑙g粦澶辫触 涓嶇悊瀹�,鍥犱负缃戝叧鍙互鎸夋寜閿己鍒舵悳绱㈠緱鍒� string msg = Language.StringByID(R.MyInternationalizationString.uGatewayUnBindFail); - this.ShowErrorMsg(msg); - return false; + //this.ShowErrorMsg(msg); + //return false; } } //鍒犻櫎浜戠鐨勭綉鍏� - await Phone.UserCenter.HdlGatewayLogic.Current.DeleteDataBaseGateway(zbGatewayID); + await this.DeleteDataBaseGateway(zbGatewayID); //鍒犻櫎缃戝叧鏂囦欢 this.DeleteGatewayFile(zbGatewayID); //绉婚櫎 - ZbGateway.GateWayList.RemoveAll((obj) => this.GetGatewayId(obj) == zbGatewayID); + ZbGateway.GateWayList.RemoveAll((obj) => obj.GwId == zbGatewayID); //鏂紑mqtt杩炴帴 - realWay.DisConnect("GD"); + realWay.DisConnectLocalMqttClient("GD"); return true; } @@ -630,18 +775,21 @@ { //鍒犻櫎璁惧鏂囦欢 Common.LocalDevice.Current.DeleteMemmoryDevice(device, true); + //鍒犻櫎Ota璁惧 + Common.LocalDevice.Current.DeleteMemmoryOtaDevice(device.DeviceAddr); } //濡傛灉鏄富缃戝叧 if (this.IsMainGateway(zbGatewayID) == 1) { - foreach (var room in Shared.Common.Room.Lists) + var listAllRoom = UserCenter.HdlRoomLogic.Current.GetAllListRooms(); + foreach (var room in listAllRoom) { //鍒犻櫎鍦烘櫙鏂囦欢 - foreach (var scene in room.SceneUIFilePathList) + foreach (var sceneId in room.ListSceneId) { - if (Global.IsExistsByHomeId(scene) == true) + if (Global.IsExistsByHomeId($"Scene_{sceneId}.json") == true) { - Global.DeleteFilebyHomeId(scene); + Global.DeleteFilebyHomeId($"Scene_{sceneId}.json"); } } } @@ -656,9 +804,8 @@ /// 鍒锋柊缃戝叧鐨勫湪绾跨姸鎬�(娉ㄦ剰,鍒锋柊鐨勬槸缂撳瓨,璇疯皟鐢–heckGatewayOnlineByFlag鏉ュ垽鏂槸鍚﹀湪绾�) /// </summary> /// <param name="listGateway"></param> - /// <param name="waitTime">灞�鍩熺綉鐨勬椂鍊�,鏃跺�欑瓑寰�3绉掑欢杩�</param> /// <returns></returns> - public void RefreshGatewayOnlineStatu(List<ZbGateway> listGateway, bool waitTime = true) + public void RefreshGatewayOnlineStatu(List<ZbGateway> listGateway) { var listRealWay = new List<ZbGateway>(); for (int i = 0; i < listGateway.Count; i++) @@ -673,41 +820,29 @@ { //铏氭嫙鐗╃悊缃戝叧 listRealWay.Add(listGateway[i]); - if (waitTime == false) - { - //涓嶇瓑寰呯殑璇�,鏍囪瘑鎸囧畾缃戝叧涓轰笉鍦ㄧ嚎 - this.SetGatewayNotOnLineFlag(listRealWay[i]); - } } - if (waitTime == true) - { - //鍙湁绛夊緟鐨勬椂鍊�,鎵嶆爣璇嗘寚瀹氱綉鍏充负涓嶅湪绾� - this.SetGatewayNotOnLineFlag(listRealWay[i]); - } + //鏍囪瘑鎸囧畾缃戝叧涓轰笉鍦ㄧ嚎 + listRealWay[i].GatewayOnlineFlage = false; } - if (waitTime == true) + //杩欐槸绗竴閬撳潕,寮哄埗妫�鏌IFI:绛夊緟2绉�(鍥犱负wifi鐨勬椂鍊欙紝瀹冧細鑷姩鍘诲埛鏂癴lage) + System.Threading.Thread.Sleep(2000); + //妫�鏌ユ槸鍚︽嫢鏈夌綉鍏冲瓨鍦ㄤ簬WIFi涓� + if (this.CheckHadGatewayInWifi(listRealWay) == false) { - //杩欐槸绗竴閬撳潕,寮哄埗妫�鏌IFI:绛夊緟3绉�(鍥犱负wifi鐨勬椂鍊欙紝瀹冧細鑷姩鍘诲埛鏂癴lage) - System.Threading.Thread.Sleep(3000); - //妫�鏌ユ槸鍚︽嫢鏈夌綉鍏冲瓨鍦ㄤ簬WIFi涓� - if (this.CheckHadGatewayInWifi(listRealWay) == false) - { - //绗簩閬撳潕锛氬湪杩滅▼鐨勬儏鍐典笅鍒锋柊缃戝叧鐨勫湪绾跨姸鎬� - this.RefreshGatewayOnlineOnRemode(listRealWay); - } + //绗簩閬撳潕锛氬湪杩滅▼鐨勬儏鍐典笅鍒锋柊缃戝叧鐨勫湪绾跨姸鎬� + this.RefreshGatewayOnlineOnRemode(listRealWay); } //鍒锋柊缂撳瓨鐨勫湪绾挎爣璇� foreach (var zbway in listRealWay) { - string gwID = this.GetGatewayId(zbway); + string gwID = zbway.GwId; if (this.dicGateway.ContainsKey(gwID) == false) { continue; } this.dicGateway[gwID].GatewayOnlineFlage = zbway.GatewayOnlineFlage; - this.dicGateway[gwID].ReSave(); } } @@ -744,31 +879,16 @@ } foreach (var way in listGateway) { - if (way == null || way.getGatewayBaseInfo == null) + if (way == null) { continue; } - string strId = this.GetGatewayId(way); - if (dicDbGateway.ContainsKey(strId) == true //濡傛灉浜戠涓婇潰鏈夎繖涓綉鍏� - && dicDbGateway[strId].MqttOnlineStatus == true //濡傛灉浜戠涓婇潰杩欎釜缃戝叧鏄湪绾跨殑 - ) + string strId = way.GwId; + if (dicDbGateway.ContainsKey(strId) == true) //濡傛灉浜戠涓婇潰鏈夎繖涓綉鍏� { - way.GatewayOnlineFlage = true; + way.GatewayOnlineFlage = dicDbGateway[strId].MqttOnlineStatus; } } - } - - /// <summary> - /// 鏍囪瘑鎸囧畾缃戝叧涓轰笉鍦ㄧ嚎 - /// </summary> - /// <param name="zbGateway"></param> - public void SetGatewayNotOnLineFlag(ZbGateway zbGateway) - { - if (zbGateway == null) - { - return; - } - zbGateway.GatewayOnlineFlage = false; } /// <summary> @@ -783,7 +903,7 @@ return false; } //浣跨敤缂撳瓨鐨勶紝鍥犱负鍒锋柊鍦ㄧ嚎鐘舵�佺殑鏃跺�欙紝鍒锋柊鐨勫氨鏄紦瀛橈紝鑰屼笉鏄湡瀹炵墿鐞嗙綉鍏� - string gwID = this.GetGatewayId(zbGateway); + string gwID = zbGateway.GwId; if (this.dicGateway.ContainsKey(gwID) == true) { return this.dicGateway[gwID].GatewayOnlineFlage; @@ -809,12 +929,12 @@ List<ZbGateway> newlist = new List<ZbGateway>(); foreach (var way in list) { - if (Config.Instance.HomeId != way.getGatewayBaseInfo.HomeId) + if (Config.Instance.HomeId != way.HomeId) { //濡傛灉涓嶆槸褰撳墠浣忓畢 continue; } - string gwID = this.GetGatewayId(way); + string gwID = way.GwId; if (this.dicGateway.ContainsKey(gwID) == false) { //濡傛灉鏈湴骞舵病鏈夎繖涓綉鍏� @@ -884,11 +1004,11 @@ /// <returns></returns> public bool GetRealGateway(ref ZbGateway zbGateway, ZbGateway tagartWay) { - if (tagartWay == null || tagartWay.getGatewayBaseInfo == null) + if (tagartWay == null) { return false; } - return this.GetRealGateway(ref zbGateway, this.GetGatewayId(tagartWay)); + return this.GetRealGateway(ref zbGateway, tagartWay.GwId); } /// <summary> @@ -901,14 +1021,14 @@ { var realWay = ZbGateway.GateWayList.Find((obj) => { - return this.GetGatewayId(obj) == gwId; + return obj.GwId == gwId; }); if (realWay == null) { //濡傛灉缃戝叧瀵硅薄涓㈠け浜�,鍒欏垱寤轰釜鏂扮殑 realWay = new ZbGateway { IsVirtual = true, }; - realWay.getGatewayBaseInfo.gwID = gwId; - realWay.getGatewayBaseInfo.HomeId = Shared.Common.Config.Instance.HomeId; + realWay.GwId = gwId; + realWay.HomeId = Shared.Common.Config.Instance.HomeId; ZbGateway.GateWayList.Add(realWay); } zbGateway = realWay; @@ -917,97 +1037,264 @@ #endregion - #region 鈻� 鑾峰彇缃戝叧GwInfo閲岄潰鐨勫睘鎬__________ + #region 鈻� 鑾峰彇鍗忚皟鍣ㄥ綋鍓嶄俊閬揰________________ /// <summary> - /// 鑾峰彇缃戝叧GwInfo閲岄潰鐨勫睘鎬� + /// 鑾峰彇鍗忚皟鍣ㄥ綋鍓嶄俊閬�(浼氭湁绛夊緟寤惰繜,杩斿洖-1浠h〃閿欒) /// </summary> - /// <param name="zbGateway">缃戝叧瀵硅薄</param> - /// <param name="attributeName">getGwInfo閲岄潰灞炴�х殑鍚嶅瓧</param> - /// <param name="defult">濡傛灉鑾峰彇涓嶅埌鏃讹紝璁剧疆鐨勯粯璁ゅ��</param> + /// <param name="zbGateway"></param> /// <returns></returns> - public object GetGwInfoAttribute(ZbGateway zbGateway, string attributeName, string defult = "") + public int GetGatewayChannelId(ZbGateway zbGateway) { - string gwID = this.GetGatewayId(zbGateway); - var localWay = this.GetLocalGateway(gwID); - - object objValue = null; - if (localWay == null || localWay.getGwInfo == null) + ZbGateway realWay = null; + if (this.GetRealGateway(ref realWay, zbGateway) == false) { - //鏈湴娌℃湁璁板綍鏈夎繖涓笢瑗�,鍒欑洿鎺ヨ繑鍥炲弬鏁扮殑鏁版嵁 - if (zbGateway.getGwInfo != null) + //閿欒:缃戝叧瀵硅薄涓㈠け + this.ShowTipMsg(Language.StringByID(R.MyInternationalizationString.uErrorGatewayLostMsg)); + return -1; + } + int data = -1; + Action<string, string> action = (topic, message) => + { + var gatewayID = topic.Split('/')[0]; + if (topic == gatewayID + "/" + "ZbGw/GetChannel_Respon") { - objValue = zbGateway.getGwInfo.GetType().InvokeMember(attributeName, System.Reflection.BindingFlags.GetField, null, zbGateway.getGwInfo, null); + var jobject = Newtonsoft.Json.Linq.JObject.Parse(message); + data = Convert.ToInt32(jobject["Data"]["Channel"].ToString()); } - else - { - return defult; - } - } - else + }; + realWay.Actions += action; + + var jObject = new Newtonsoft.Json.Linq.JObject { { "Cluster_ID", 64512 }, { "Command", 8 } }; + realWay.Send("ZbGw/GetChannel", jObject.ToString()); + + int TimeOut = 0; + while (data == -1 && TimeOut < 30) { - //鑾峰彇鏈湴鐨勫睘鎬� - objValue = localWay.getGwInfo.GetType().InvokeMember(attributeName, System.Reflection.BindingFlags.GetField, null, localWay.getGwInfo, null); + System.Threading.Thread.Sleep(100); + TimeOut++; } - if (objValue == null) + realWay.Actions -= action; + if (data == -1) { - return defult; - } - return objValue; - } - - /// <summary> - /// 鑾峰彇缃戝叧GatewayBaseInfo閲岄潰鐨勫睘鎬� - /// </summary> - /// <param name="zbGateway">缃戝叧瀵硅薄</param> - /// <param name="attributeName">GatewayBaseInfo閲岄潰灞炴�х殑鍚嶅瓧</param> - /// <param name="defult">濡傛灉鑾峰彇涓嶅埌鏃讹紝璁剧疆鐨勯粯璁ゅ��</param> - /// <returns></returns> - public object GetGatewayBaseInfoAttribute(ZbGateway zbGateway, string attributeName, string defult = "") - { - string gwID = this.GetGatewayId(zbGateway); - var localWay = this.GetLocalGateway(gwID); - - object objValue = null; - if (localWay == null || localWay.getGatewayBaseInfo == null) - { - //鏈湴娌℃湁璁板綍鏈夎繖涓笢瑗�,鍒欑洿鎺ヨ繑鍥炲弬鏁扮殑鏁版嵁 - if (zbGateway.getGatewayBaseInfo != null) - { - objValue = zbGateway.getGatewayBaseInfo.GetType().InvokeMember(attributeName, System.Reflection.BindingFlags.GetField, null, zbGateway.getGatewayBaseInfo, null); - } - else - { - return defult; - } - } - else - { - //鑾峰彇鏈湴灞炴�� - objValue = localWay.getGatewayBaseInfo.GetType().InvokeMember(attributeName, System.Reflection.BindingFlags.GetField, null, localWay.getGatewayBaseInfo, null); + //鑾峰彇鍗忚皟鍣ㄤ俊閬撳け璐� + string msg = Language.StringByID(R.MyInternationalizationString.uGetGatewayChannelIdFail); + msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, null, "鍥炲瓒呮椂"); + this.ShowTipMsg(msg); } - if (objValue == null) - { - return defult; - } - return objValue; + return data; } #endregion - #region 鈻� 鑾峰彇缃戝叧ID(鏈夌壒娈婃剰涔�)_____________ + #region 鈻� 鑾峰彇鍗忚皟鍣∕AC______________________ /// <summary> - /// 鑾峰彇缃戝叧瀵硅薄閲岄潰鐨勭綉鍏矷D(灏佽杩欎釜鏂规硶鏈夌壒娈婃剰涔�) + /// 鑾峰彇鍗忚皟鍣∕AC鍦板潃(浼氭湁绛夊緟寤惰繜,杩斿洖null浠h〃閿欒) /// </summary> - /// <param name="zbGateway">缃戝叧瀵硅薄</param> + /// <param name="zbGateway"></param> /// <returns></returns> - public string GetGatewayId(ZbGateway zbGateway) + public string GetGatewayCoordinatorMac(ZbGateway zbGateway) { - //杩欎釜涓滆タ涓嶄細涓虹┖ - return zbGateway.getGatewayBaseInfo.gwID; + ZbGateway realWay = null; + if (this.GetRealGateway(ref realWay, zbGateway) == false) + { + //閿欒:缃戝叧瀵硅薄涓㈠け + this.ShowTipMsg(Language.StringByID(R.MyInternationalizationString.uErrorGatewayLostMsg)); + return null; + } + string data = null; + Action<string, string> action = (topic, message) => + { + var gatewayID = topic.Split('/')[0]; + if (topic == gatewayID + "/" + "ZbGw/GetMac_Respon") + { + var jobject = Newtonsoft.Json.Linq.JObject.Parse(message); + data = jobject["Data"]["MacAddr"].ToString(); + } + }; + realWay.Actions += action; + + var jObject = new Newtonsoft.Json.Linq.JObject { { "Cluster_ID", 64512 }, { "Command", 13 } }; + realWay.Send("ZbGw/GetMac", jObject.ToString()); + + int TimeOut = 0; + while (data == null && TimeOut < 30) + { + System.Threading.Thread.Sleep(100); + TimeOut++; + } + + realWay.Actions -= action; + if (data == null) + { + //鑾峰彇鍗忚皟鍣∕ac澶辫触 + string msg = Language.StringByID(R.MyInternationalizationString.uGetGatewayCoordinatorMacFail); + msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, null, "鍥炲瓒呮椂"); + this.ShowTipMsg(msg); + } + + return data; + } + + #endregion + + #region 鈻� 鑾峰彇鍗忚皟鍣≒anID____________________ + + /// <summary> + /// 鑾峰彇鍗忚皟鍣≒anID(浼氭湁绛夊緟寤惰繜,杩斿洖-1浠h〃閿欒) + /// </summary> + /// <param name="zbGateway"></param> + /// <returns></returns> + public int GetGatewayPanId(ZbGateway zbGateway) + { + ZbGateway realWay = null; + if (this.GetRealGateway(ref realWay, zbGateway) == false) + { + //閿欒:缃戝叧瀵硅薄涓㈠け + this.ShowTipMsg(Language.StringByID(R.MyInternationalizationString.uErrorGatewayLostMsg)); + return -1; + } + int panId = -1; + Action<string, string> action = (topic, message) => + { + var gatewayID = topic.Split('/')[0]; + if (topic == gatewayID + "/" + "ZbGw/GetPanId_Respon") + { + var jobject = Newtonsoft.Json.Linq.JObject.Parse(message); + panId = Convert.ToInt32(jobject["Data"]["PANID"].ToString()); + } + }; + realWay.Actions += action; + + var jObject = new Newtonsoft.Json.Linq.JObject { { "Cluster_ID", 64512 }, { "Command", 12 } }; + realWay.Send("ZbGw/GetPanId", jObject.ToString()); + + int TimeOut = 0; + while (panId == -1 && TimeOut < 30) + { + System.Threading.Thread.Sleep(100); + TimeOut++; + } + + realWay.Actions -= action; + if (panId == -1) + { + //鑾峰彇鍗忚皟鍣≒anID澶辫触 + string msg = Language.StringByID(R.MyInternationalizationString.uGetGatewayPanIDFail); + msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, null, "鍥炲瓒呮椂"); + this.ShowTipMsg(msg); + } + + return panId; + } + + #endregion + + #region 鈻� 缃戝叧鑷姩澶囦唤璁剧疆___________________ + + /// <summary> + /// 鑾峰彇缃戝叧鑷姩澶囦唤璁剧疆(-1:寮傚父 0:鍏抽棴 1:鎵撳紑) + /// </summary> + /// <param name="zbGateway"></param> + /// <returns></returns> + public int GetGatewayAutoBackupStatu(ZbGateway zbGateway) + { + ZbGateway realWay = null; + if (this.GetRealGateway(ref realWay, zbGateway) == false) + { + //閿欒:缃戝叧瀵硅薄涓㈠け + this.ShowTipMsg(Language.StringByID(R.MyInternationalizationString.uErrorGatewayLostMsg)); + return -1; + } + int statu = -1; + Action<string, string> action = (topic, message) => + { + var gatewayID = topic.Split('/')[0]; + if (topic == gatewayID + "/GatewayAutoBackup_Respon") + { + var jobject = Newtonsoft.Json.Linq.JObject.Parse(message); + statu = Convert.ToInt32(jobject["Data"]["AutoBackupStatus"].ToString()); + } + }; + realWay.Actions += action; + + var jObject = new Newtonsoft.Json.Linq.JObject { { "Cluster_ID", 0 }, { "Command", 6205 } }; + var data = new Newtonsoft.Json.Linq.JObject { { "AutoBackup", 1 } }; + jObject.Add("Data", data); + realWay.Send("GatewayAutoBackup", jObject.ToString()); + + int TimeOut = 0; + while (statu == -1 && TimeOut < 60) + { + System.Threading.Thread.Sleep(100); + TimeOut++; + } + + realWay.Actions -= action; + if (statu == -1) + { + //鑾峰彇缃戝叧鑷姩澶囦唤璁剧疆澶辫触 + string msg = Language.StringByID(R.MyInternationalizationString.uGetGatewayAutoBackupStatuFail); + msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, null, "鍥炲瓒呮椂"); + this.ShowTipMsg(msg); + } + + return statu; + } + + /// <summary> + /// 璁剧疆缃戝叧鑷姩澶囦唤璁剧疆 + /// </summary> + /// <param name="zbGateway"></param> + /// <param name="statu"></param> + /// <returns></returns> + public bool SetGatewayAutoBackupStatu(ZbGateway zbGateway, bool statu) + { + ZbGateway realWay = null; + if (this.GetRealGateway(ref realWay, zbGateway) == false) + { + //閿欒:缃戝叧瀵硅薄涓㈠け + this.ShowTipMsg(Language.StringByID(R.MyInternationalizationString.uErrorGatewayLostMsg)); + return false; + } + int result = -1; + Action<string, string> action = (topic, message) => + { + var gatewayID = topic.Split('/')[0]; + if (topic == gatewayID + "/GatewayAutoBackup_Respon") + { + var jobject = Newtonsoft.Json.Linq.JObject.Parse(message); + result = Convert.ToInt32(jobject["Data"]["AutoBackupStatus"].ToString()); + } + }; + realWay.Actions += action; + + var jObject = new Newtonsoft.Json.Linq.JObject { { "Cluster_ID", 0 }, { "Command", 6205 } }; + var data = new Newtonsoft.Json.Linq.JObject { { "AutoBackup", statu == true ? 2 : 3 } }; + jObject.Add("Data", data); + realWay.Send("GatewayAutoBackup", jObject.ToString()); + + int TimeOut = 0; + while (result == -1 && TimeOut < 60) + { + System.Threading.Thread.Sleep(100); + TimeOut++; + } + + realWay.Actions -= action; + if (result == -1) + { + //璁剧疆缃戝叧鑷姩澶囦唤澶辫触 + string msg = Language.StringByID(R.MyInternationalizationString.uSetGatewayAutoBackupStatuFail); + msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, null, "鍥炲瓒呮椂"); + this.ShowTipMsg(msg); + return false; + } + + return true; } #endregion @@ -1022,10 +1309,10 @@ /// <returns></returns> public string GetGatewayName(ZbGateway zbGateway, GetNameMode mode = GetNameMode.SpecialGateway) { - string gwId = this.GetGatewayId(zbGateway); + string gwId = zbGateway.GwId; if (this.dicGateway.ContainsKey(gwId) == false) { - return zbGateway.getGatewayBaseInfo.GwName == null ? string.Empty : zbGateway.getGatewayBaseInfo.GwName; + return zbGateway.GwName; } var localWay = this.dicGateway[gwId]; @@ -1035,13 +1322,13 @@ return name; } - if (mode == GetNameMode.SpecialGateway && localWay.getGwInfo != null) + if (mode == GetNameMode.SpecialGateway) { - string keyName = Common.LocalDevice.deviceModelIdName + this.GetGwInfoAttribute(localWay, "LinuxImageType").ToString(); - if (Common.LocalDevice.Current.dicDeviceDefultNameID.ContainsKey(keyName) == true) + string keyName = Common.LocalDevice.deviceModelIdName + localWay.LinuxImageType; + if (LocalDevice.Current.dicDeviceAllNameID.ContainsKey(keyName) == true) { - //娌℃湁鍚嶇О鏃讹紝鍒欎娇鐢≧鏂囦欢閲岄潰璁剧疆鐨勪笢瑗� - return Language.StringByID(Common.LocalDevice.Current.dicDeviceDefultNameID[keyName]); + //娌℃湁鍚嶇О鏃讹紝鍒欎娇鐢≧鏂囦欢閲岄潰璁剧疆鐨勯粯璁よ澶囧悕绉� + return Language.StringByID(LocalDevice.Current.dicDeviceAllNameID[keyName] + 20000); } } @@ -1059,7 +1346,7 @@ { return string.Empty; } - return zbGateway.getGatewayBaseInfo.GwName; + return zbGateway.GwName; } /// <summary> @@ -1073,17 +1360,17 @@ //鍒濆鍊�:鏃犳硶璇嗗埆鐨勭綉鍏宠澶� button.TextID = R.MyInternationalizationString.uUnDistinguishTheGatewayDevice; - string gwId = this.GetGatewayId(zbGateway); - if (this.dicGateway.ContainsKey(gwId) == false || this.dicGateway[gwId].getGwInfo == null) + string gwId = zbGateway.GwId; + if (this.dicGateway.ContainsKey(gwId) == false) { //濡傛灉杩欎釜缃戝叧娌℃湁淇℃伅锛屽垯浠庢柊鑾峰彇 - if (zbGateway.getGwInfo != null && zbGateway.getGwInfo.LinuxImageType != 0) + if (zbGateway.LinuxImageType != -1) { - string keyName = Common.LocalDevice.deviceModelIdName + zbGateway.getGwInfo.LinuxImageType; - if (Common.LocalDevice.Current.dicDeviceDefultNameID.ContainsKey(keyName) == true) + string keyName = Common.LocalDevice.deviceModelIdName + zbGateway.LinuxImageType; + if (Common.LocalDevice.Current.dicDeviceAllNameID.ContainsKey(keyName) == true) { //浣跨敤R鏂囦欢閲岄潰璁剧疆鐨勪笢瑗� - button.TextID = LocalDevice.Current.dicDeviceDefultNameID[keyName]; + button.TextID = LocalDevice.Current.dicDeviceAllNameID[keyName]; } } else @@ -1094,14 +1381,16 @@ var result = await this.GetGatewayNewInfoAsync(zbGateway, ShowErrorMode.NO); if (result != null) { - zbGateway.getGwInfo = result; + //灏嗙綉鍏崇殑鏁版嵁璁剧疆鍒版湰鍦扮紦瀛樹腑 + this.SetGatewayDataToLocalMemmory(zbGateway, result, false); + HdlThreadLogic.Current.RunMain(() => { - string keyName = Common.LocalDevice.deviceModelIdName + zbGateway.getGwInfo.LinuxImageType; - if (Common.LocalDevice.Current.dicDeviceDefultNameID.ContainsKey(keyName) == true) + string keyName = Common.LocalDevice.deviceModelIdName + zbGateway.LinuxImageType; + if (Common.LocalDevice.Current.dicDeviceAllNameID.ContainsKey(keyName) == true) { //浣跨敤R鏂囦欢閲岄潰璁剧疆鐨勪笢瑗� - button.TextID = LocalDevice.Current.dicDeviceDefultNameID[keyName]; + button.TextID = LocalDevice.Current.dicDeviceAllNameID[keyName]; } }); } @@ -1110,11 +1399,11 @@ } else { - string keyName = Common.LocalDevice.deviceModelIdName + this.dicGateway[gwId].getGwInfo.LinuxImageType; - if (Common.LocalDevice.Current.dicDeviceDefultNameID.ContainsKey(keyName) == true) + string keyName = Common.LocalDevice.deviceModelIdName + this.dicGateway[gwId].LinuxImageType; + if (Common.LocalDevice.Current.dicDeviceAllNameID.ContainsKey(keyName) == true) { //浣跨敤R鏂囦欢閲岄潰璁剧疆鐨勪笢瑗� - button.TextID = Common.LocalDevice.Current.dicDeviceDefultNameID[keyName]; + button.TextID = Common.LocalDevice.Current.dicDeviceAllNameID[keyName]; } } } @@ -1167,17 +1456,16 @@ return null; } - string gwID = this.GetGatewayId(zbGateway); + string gwID = zbGateway.GwId; if (this.dicGateway.ContainsKey(gwID) == true) { //鍒锋柊缂撳瓨 ZbGateway localWay = this.dicGateway[gwID]; - localWay.getGwInfo = imageTypeResult.getGwData; - localWay.getGatewayBaseInfo.GwName = imageTypeResult.getGwData.GwName; - localWay.getGatewayBaseInfo.IpAddress = imageTypeResult.getGwData.GwIP; - - localWay.ReSave(); + //灏嗙綉鍏崇殑鏁版嵁璁剧疆鍒版湰鍦扮紦瀛樹腑 + this.SetGatewayDataToLocalMemmory(localWay, imageTypeResult.getGwData); } + //椤轰究杩欎釜鍙橀噺涔熻缃竴涓� + this.SetGatewayDataToLocalMemmory(zbGateway, imageTypeResult.getGwData, false); return imageTypeResult.getGwData; } @@ -1205,6 +1493,78 @@ return result; } + /// <summary> + /// 灏嗙綉鍏崇殑鏁版嵁璁剧疆鍒版湰鍦扮紦瀛樹腑 + /// </summary> + /// <param name="localWay">鏈湴缃戝叧</param> + /// <param name="data">缃戝叧鏁版嵁</param> + /// <param name="saveFile">鏄惁淇濆瓨鏂囦欢</param> + private void SetGatewayDataToLocalMemmory(ZbGateway localWay, ZbGatewayData.GetGwData data, bool saveFile = true) + { + localWay.GwId = data.GwId; + localWay.GwName = data.GwName; + localWay.GwSerialNum = data.GWSN; + localWay.IsMainGateWay = data.IsDominant == 1 ? true : false; + localWay.GwIP = data.GwIP; + localWay.LinuxImageType = data.LinuxImageType; + localWay.LinuxHardVersion = data.LinuxHWVersion; + localWay.LinuxFirmwareVersion = data.LinuxFWVersion; + localWay.CoordinatorHardVersion = data.ZbHWVersion; + localWay.CoordinatorFirmwareVersion = data.ZbFWVersion; + localWay.CoordinatorImageId = data.ZbImageType; + localWay.DriveCodeList = data.DriveCodeList; + if (saveFile == true) + { + localWay.ReSave(); + } + } + + #endregion + + #region 鈻� 缃戝叧鎴块棿鐩稿叧_______________________ + + /// <summary> + /// 鑾峰彇缃戝叧鎵�鍦ㄧ殑鎴块棿 + /// </summary> + /// <param name="zbGateway">缃戝叧瀵硅薄</param> + /// <returns></returns> + public Room GetRoomByGateway(ZbGateway zbGateway) + { + return this.GetRoomByGateway(zbGateway.GwId); + } + + /// <summary> + /// 鑾峰彇缃戝叧鎵�鍦ㄧ殑鎴块棿 + /// </summary> + /// <param name="gatewayId">缃戝叧ID</param> + /// <returns></returns> + public Room GetRoomByGateway(string gatewayId) + { + var localGateway = this.GetLocalGateway(gatewayId); + if (localGateway == null) + { + return null; + } + return HdlRoomLogic.Current.GetRoomById(localGateway.RoomId); + } + + /// <summary> + /// 鍙樻洿缃戝叧鎴块棿 + /// </summary> + /// <param name="zbGateway">缃戝叧瀵硅薄</param> + /// <param name="roomId">鎴块棿ID</param> + public void ChangedGatewayRoom(ZbGateway zbGateway, string roomId) + { + var localGateway = this.GetLocalGateway(zbGateway.GwId); + if (localGateway != null) + { + localGateway.RoomId = roomId; + localGateway.ReSave(); + //娣诲姞澶囦唤 + HdlAutoBackupLogic.AddOrEditorFile(localGateway.FilePath); + } + } + #endregion #region 鈻� 娓呯┖鐪熷疄缃戝叧鍒楄〃___________________ @@ -1222,7 +1582,7 @@ //鏈�鍚庡啀鏂紑mqtt杩炴帴 for (int i = 0; i < list.Count; i++) { - list[i].DisConnect("G"); + list[i].DisConnectLocalMqttClient("G"); } list.Clear(); } @@ -1246,66 +1606,67 @@ return null; } //浣跨敤鏈湴缂撳瓨瀵硅薄 - string gwID = this.GetGatewayId(zbGateway); - var localWay = this.GetLocalGateway(gwID); + var localWay = this.GetLocalGateway(zbGateway.GwId); if (localWay == null) { return null; } //娣诲姞缃戝叧鐨勫崌绾у浐浠�(鎴愪笉鎴愬姛閮芥棤鎵�璋�) - var flage = await HdlFirmwareUpdateLogic.AddFirmwareVersionInfo(FirmwareLevelType.Linux, - this.GetGwInfoAttribute(localWay, "LinuxHWVersion").ToString(), - this.GetGwInfoAttribute(localWay, "LinuxImageType").ToString()); + var flage = HdlFirmwareUpdateLogic.AddFirmwareVersionInfo(FirmwareLevelType.Linux, + localWay.LinuxHardVersion.ToString(), + localWay.LinuxImageType.ToString()); //娣诲姞鍗忚皟鍣ㄧ殑鍗囩骇鍥轰欢(鎴愪笉鎴愬姛閮芥棤鎵�璋�) - flage = await HdlFirmwareUpdateLogic.AddFirmwareVersionInfo(FirmwareLevelType.Coordinator, - this.GetGwInfoAttribute(localWay, "ZbHWVersion").ToString(), - this.GetGwInfoAttribute(localWay, "ZbImageType").ToString()); + flage = HdlFirmwareUpdateLogic.AddFirmwareVersionInfo(FirmwareLevelType.Coordinator, + localWay.CoordinatorHardVersion.ToString(), + localWay.CoordinatorImageId.ToString()); //缃戝叧鐨勭増鏈� var gatewayFirmware = HdlFirmwareUpdateLogic.GetFirmwareMostVersionInfo(FirmwareLevelType.Linux, - this.GetGwInfoAttribute(localWay, "LinuxHWVersion").ToString(), - this.GetGwInfoAttribute(localWay, "LinuxImageType").ToString(), - Convert.ToInt32(this.GetGwInfoAttribute(localWay, "LinuxFWVersion"))); + localWay.LinuxHardVersion.ToString(), + localWay.LinuxImageType.ToString(), + localWay.LinuxFirmwareVersion); //鍗忚皟鍣ㄧ増鏈� var coordinatorFirmware = HdlFirmwareUpdateLogic.GetFirmwareMostVersionInfo(FirmwareLevelType.Coordinator, - this.GetGwInfoAttribute(localWay, "ZbHWVersion").ToString(), - this.GetGwInfoAttribute(localWay, "ZbImageType").ToString(), - Convert.ToInt32(this.GetGwInfoAttribute(localWay, "ZbFWVersion"))); + localWay.CoordinatorHardVersion.ToString(), + localWay.CoordinatorImageId.ToString(), + localWay.CoordinatorFirmwareVersion); - //杩欎釜缃戝叧闇�瑕佹湁铏氭嫙椹卞姩杩欎釜涓滆タ鎵嶈 - FirmwareVersionInfo virtualFirmware = null; - string linImage = this.GetGwInfoAttribute(localWay, "LinuxImageType").ToString(); - if (linImage != "6") - { - //铏氭嫙椹卞姩鍙� - var listvVode = await HdlGatewayLogic.Current.GetListVDDriveCode(localWay); - if (listvVode != null && listvVode.Count > 0) - { - //娣诲姞铏氭嫙椹卞姩鐨勫崌绾у浐浠�(鎴愪笉鎴愬姛閮芥棤鎵�璋�) - flage = await HdlFirmwareUpdateLogic.AddFirmwareVersionInfo(FirmwareLevelType.VirtualDevice, - listvVode[0].DriveHwVersion.ToString(), - listvVode[0].DriveImageType.ToString()); - - //铏氭嫙椹卞姩 - virtualFirmware = HdlFirmwareUpdateLogic.GetFirmwareMostVersionInfo(FirmwareLevelType.VirtualDevice, - listvVode[0].DriveHwVersion.ToString(), - listvVode[0].DriveImageType.ToString(), - listvVode[0].DriveFwVersion); - - if (virtualFirmware != null) - { - virtualFirmware.VirtualCode = listvVode[0].DriveCode; - } - } - } var list = new List<FirmwareVersionInfo>(); list.Add(gatewayFirmware); list.Add(coordinatorFirmware); - list.Add(virtualFirmware); + //杩欎釜缃戝叧闇�瑕佹湁铏氭嫙椹卞姩杩欎釜涓滆タ鎵嶈 + if (localWay.LinuxImageType != 6) + { + //铏氭嫙椹卞姩鍙� + foreach (var data in localWay.DriveCodeList) + { + //娣诲姞铏氭嫙椹卞姩鐨勫崌绾у浐浠�(鎴愪笉鎴愬姛閮芥棤鎵�璋�) + flage = HdlFirmwareUpdateLogic.AddFirmwareVersionInfo(FirmwareLevelType.VirtualDevice, + data.DriveHwVersion.ToString(), + data.DriveImageType.ToString()); + + //铏氭嫙椹卞姩 + var virtualFirmware = HdlFirmwareUpdateLogic.GetFirmwareMostVersionInfo(FirmwareLevelType.VirtualDevice, + data.DriveHwVersion.ToString(), + data.DriveImageType.ToString(), + data.DriveFwVersion); + + if (virtualFirmware != null) + { + virtualFirmware.VirtualCode = data.DriveCode; + list.Add(virtualFirmware); + } + } + } + if (list.Count == 2) + { + //铏氭嫙椹卞姩濡傛灉娌℃湁鏂扮増鏈殑璇濓紝鍥哄畾娣诲姞涓�涓┖鐨� + list.Add(null); + } return list; } @@ -1314,31 +1675,20 @@ /// </summary> /// <param name="zbGateway"></param> /// <returns></returns> - public async Task<List<ZbGatewayData.DriveCodeObj>> GetListVDDriveCode(ZbGateway zbGateway) + public List<ZbGatewayData.DriveCodeObj> GetListVDDriveCode(ZbGateway zbGateway) { - ZbGateway zbTemp = null; - if (this.GetRealGateway(ref zbTemp, zbGateway) == false) + var jObject = new Newtonsoft.Json.Linq.JObject { { "Cluster_ID", 0 }, { "Command", 505 } }; + var result = this.SendJobjectDataToGateway(zbGateway, "VirtualDrive/CatDriveCode", jObject.ToString(), "VirtualDrive/CatDriveCode_Respon"); + if (result.ErrorMsg != null) + { + this.ShowTipMsg(result.ErrorMsg); + } + if (result.ErrorMsgDiv == 0) { return null; } - var result = await zbTemp.CheckVDDriveCodeAsync(); - //妫�娴嬬綉鍏宠繑鍥炵殑鍏遍�氶敊璇姸鎬佺爜 - string error = HdlCheckLogic.Current.CheckCommonErrorCode(result); - if (error != null) - { - this.ShowTipMsg(error); - return null; - } - - if (result == null || result.vDriveDriveCodeResponData == null || result.vDriveDriveCodeResponData.DriveCodeList == null) - { - return null; - } - if (result.vDriveDriveCodeResponData.DriveCodeList.Count > 0) - { - return result.vDriveDriveCodeResponData.DriveCodeList; - } - return null; + var dataInfo = JsonConvert.DeserializeObject<ZbGatewayData.VDriveDriveCodeResponData>(result.ReceiptData); + return dataInfo.DriveCodeList; } #endregion @@ -1352,8 +1702,7 @@ /// <returns></returns> public int IsMainGateway(ZbGateway zbGateway) { - string gwID = this.GetGatewayId(zbGateway); - return this.IsMainGateway(gwID); + return this.IsMainGateway(zbGateway.GwId); } /// <summary> @@ -1382,13 +1731,12 @@ /// <param name="zbGateway"></param> public void SetRealGatewayPictrue(Button button, ZbGateway zbGateway) { - string gwID = this.GetGatewayId(zbGateway); - var localWay = this.GetLocalGateway(gwID); - if (localWay == null || localWay.getGwInfo == null) + var localWay = this.GetLocalGateway(zbGateway.GwId); + if (localWay == null) { - if (zbGateway.getGwInfo != null && zbGateway.getGwInfo.LinuxImageType != 0) + if (zbGateway.LinuxImageType != -1) { - button.UnSelectedImagePath = "Gateway/RealGateway" + zbGateway.getGwInfo.LinuxImageType + ".png"; + button.UnSelectedImagePath = "Gateway/RealGateway" + zbGateway.LinuxImageType + ".png"; } else { @@ -1398,7 +1746,8 @@ var result = await this.GetGatewayNewInfoAsync(zbGateway, ShowErrorMode.NO); if (result != null) { - zbGateway.getGwInfo = result; + //灏嗙綉鍏崇殑鏁版嵁璁剧疆鍒版湰鍦扮紦瀛樹腑 + this.SetGatewayDataToLocalMemmory(zbGateway, result, false); HdlThreadLogic.Current.RunMain(() => { button.UnSelectedImagePath = "Gateway/RealGateway" + result.LinuxImageType + ".png"; @@ -1409,7 +1758,7 @@ } else { - button.UnSelectedImagePath = "Gateway/RealGateway" + localWay.getGwInfo.LinuxImageType + ".png"; + button.UnSelectedImagePath = "Gateway/RealGateway" + localWay.LinuxImageType + ".png"; } } @@ -1420,13 +1769,12 @@ /// <param name="zbGateway"></param> public void SetGatewayIcon(Button button, ZbGateway zbGateway) { - string gwID = this.GetGatewayId(zbGateway); - var localWay = this.GetLocalGateway(gwID); - if (localWay == null || localWay.getGwInfo == null) + var localWay = this.GetLocalGateway(zbGateway.GwId); + if (localWay == null) { - if (zbGateway.getGwInfo != null && zbGateway.getGwInfo.LinuxImageType != 0) + if (zbGateway.LinuxImageType != -1) { - button.UnSelectedImagePath = "Gateway/GatewayIcon" + zbGateway.getGwInfo.LinuxImageType + ".png"; + button.UnSelectedImagePath = "Gateway/GatewayIcon" + zbGateway.LinuxImageType + ".png"; } else { @@ -1436,7 +1784,8 @@ var result = await this.GetGatewayNewInfoAsync(zbGateway, ShowErrorMode.NO); if (result != null) { - zbGateway.getGwInfo = result; + //灏嗙綉鍏崇殑鏁版嵁璁剧疆鍒版湰鍦扮紦瀛樹腑 + this.SetGatewayDataToLocalMemmory(zbGateway, result, false); HdlThreadLogic.Current.RunMain(() => { button.UnSelectedImagePath = "Gateway/GatewayIcon" + result.LinuxImageType + ".png"; @@ -1447,7 +1796,7 @@ } else { - button.UnSelectedImagePath = "Gateway/GatewayIcon" + localWay.getGwInfo.LinuxImageType + ".png"; + button.UnSelectedImagePath = "Gateway/GatewayIcon" + localWay.LinuxImageType + ".png"; } } @@ -1462,8 +1811,7 @@ /// <returns></returns> public bool IsGatewayExist(ZbGateway zbGateway) { - string gwID = this.GetGatewayId(zbGateway); - return this.IsGatewayExist(gwID); + return this.IsGatewayExist(zbGateway.GwId); } /// <summary> @@ -1496,316 +1844,16 @@ return; } var jObject = new Newtonsoft.Json.Linq.JObject { { "Cluster_ID", 0 }, { "Command", 85 } }; - realWay.Send("GwLinuxLocate_Respon", jObject.ToString()); - } - - #endregion - - #region 鈻� 涓�鑸柟娉昣__________________________ - - /// <summary> - /// 寮瑰嚭缃戝叧涓嶅湪绾跨殑 - /// </summary> - private void ShowGatewayNotOnlineMsg() - { - Application.RunOnMainThread(() => + if (this.IsGatewayExist(zbGateway) == true) { - //缃戝叧杩炴帴澶辫触,璇风‘璁ょ綉缁� - string msg = Language.StringByID(R.MyInternationalizationString.uGatewayIsNotLinkAndCheckNetwork); - var control = new ShowMsgControl(ShowMsgType.Tip, msg); - control.Show(); - }); - } - - /// <summary> - /// 鏄剧ず閿欒淇℃伅绐楀彛 - /// </summary> - /// <param name="msg"></param> - private void ShowErrorMsg(string msg) - { - Application.RunOnMainThread(() => - { - var contr = new ShowMsgControl(ShowMsgType.Error, msg); - contr.Show(); - }); - } - - /// <summary> - /// 鏄剧ずTip淇℃伅绐楀彛 - /// </summary> - /// <param name="msg"></param> - private void ShowTipMsg(string msg) - { - Application.RunOnMainThread(() => - { - var contr = new ShowMsgControl(ShowMsgType.Tip, msg); - contr.Show(); - }); - } - - #endregion - - #region 鈻� 缃戝叧鐩戣___________________________ - - #region 鈻� 鍙橀噺澹版槑___________________________ - - /// <summary> - /// 褰撳墠鐨勭綉缁滆繛鎺ユā寮� - /// </summary> - private GatewayConnectMode nowGwConnectMode = GatewayConnectMode.None; - /// <summary> - /// 鏄惁瀛樺湪缃戝叧姝e湪鍗囩骇 - /// </summary> - private bool hadGatewayUpdate = false; - - #endregion - - #region 鈻� 缃戝叧杩炴帴鏂瑰紡鍙樻洿___________________ - - /// <summary> - /// 褰撶綉鍏崇殑杩炴帴鏂瑰紡鏀瑰彉鏃�,妫�娴嬬綉鍏�,鐒跺悗鏄剧ず鐗规晥 - /// </summary> - /// <param name="connectMode">缃戝叧鍙樻洿鍚庣殑杩炴帴鏂瑰紡</param> - public void CheckGatewayByConnectChanged(GatewayConnectMode connectMode) - { - if (this.nowGwConnectMode == connectMode || this.hadGatewayUpdate == true) - { - //鐩稿悓鐨勮繛鎺ユā寮�,鎴栬�呮湁缃戝叧姝e湪鍗囩骇,鍒欎笉闇�瑕佹搷浣� - return; + realWay.Send("GwLinuxLocate_Respon", jObject.ToString()); } - - //娌℃湁缃戠粶 - if (connectMode == GatewayConnectMode.NoLine) + else { - nowGwConnectMode = GatewayConnectMode.NoLine; - //鍦ㄨ繙绋嬬殑鏉′欢涓嬶紝妫�鏌ョ綉鍏崇殑鍦ㄧ嚎鐘舵��(缃戠粶鍙樻洿鏃惰Е鍙�) - } - //鍙互鍙�4G - else if (connectMode == GatewayConnectMode.Remote) - { - nowGwConnectMode = GatewayConnectMode.Remote; - //鍦ㄨ繙绋嬬殑鏉′欢涓嬶紝妫�鏌ョ綉鍏崇殑鍦ㄧ嚎鐘舵��(缃戠粶鍙樻洿鏃惰Е鍙�) - this.CheckGatewayStatuByRemote(); - } - //WIFI - else if (connectMode == GatewayConnectMode.WIFI) - { - nowGwConnectMode = GatewayConnectMode.WIFI; - //鍦╓IFI鐨勬潯浠朵笅锛屾鏌ョ綉鍏崇殑鍦ㄧ嚎鐘舵��(缃戠粶鍙樻洿鏃惰Е鍙�) - this.CheckGatewayStatuByWIFI(); + //濡傛灉杩欎釜缃戝叧杩樻病鏈夌粦瀹氱殑璇濓紝鍒欏己鍒朵娇鐢ㄦ湰鍦拌繛鎺� + realWay.SendLocation("GwLinuxLocate_Respon", System.Text.Encoding.UTF8.GetBytes(jObject.ToString())); } } - - #endregion - - #region 鈻� 妫�鏌ョ綉鍏�(WIFI)_____________________ - - /// <summary> - /// 鍦╓IFI鐨勬潯浠朵笅锛屾鏌ョ綉鍏崇殑鍦ㄧ嚎鐘舵��(缃戠粶鍙樻洿鏃惰Е鍙�) - /// </summary> - private void CheckGatewayStatuByWIFI() - { - if (this.dicGateway.Count == 0) - { - //濡傛灉鏈湴閮芥病鏈夌綉鍏崇殑璇濓紝涓嶉渶瑕佸鐞� - return; - } - - HdlThreadLogic.Current.RunThread(() => - { - var dicStatu = this.GetNowOnlineStatuBeforeCheck(); - //绛変釜3绉掞紝鍑嗗涓�涓� - System.Threading.Thread.Sleep(3000); - if (nowGwConnectMode != GatewayConnectMode.WIFI) - { - //缃戠粶涓存椂鍙樻洿锛燂紵 - return; - } - - //浠庣綉鍏宠幏鍙栧叏閮ㄧ殑缃戝叧 - List<ZbGateway> list = this.GetAllGatewayFromGateway(); - foreach (var way in list) - { - string gwId = this.GetGatewayId(way); - if (this.dicGateway.ContainsKey(gwId) == true) - { - //鍒锋柊涓�涓嬬紦瀛� - this.dicGateway[gwId].GatewayOnlineFlage = way.GatewayOnlineFlage; - } - if (this.CheckGatewayOnlineByFlag(way) == true) - { - //缃戝叧鍦ㄧ嚎 - dicStatu[gwId] = true; - } - } - //灏嗗彉鍖栫殑缃戝叧鎺ㄩ�佸埌鐣岄潰涓� - this.PushGatewayOnlineStatuToForm(dicStatu); - }); - } - - #endregion - - #region 鈻� 妫�鏌ョ綉鍏�(4G)_______________________ - - /// <summary> - /// 鍦ㄨ繙绋嬬殑鏉′欢涓嬶紝妫�鏌ョ綉鍏崇殑鍦ㄧ嚎鐘舵��(缃戠粶鍙樻洿鏃惰Е鍙�) - /// </summary> - private void CheckGatewayStatuByRemote() - { - if (this.dicGateway.Count == 0) - { - //濡傛灉鏈湴閮芥病鏈夌綉鍏崇殑璇濓紝涓嶉渶瑕佸鐞� - return; - } - - HdlThreadLogic.Current.RunThread(() => - { - //鍏堣幏鍙栫幇鍦ㄥ叏閮ㄧ殑缃戝叧锛屽垵鏈熷�よ缃负涓嶅湪绾� - var dicStatu = this.GetNowOnlineStatuBeforeCheck(); - - //鑾峰彇浜戠涓婇潰鐨勭綉鍏� - Dictionary<string, GatewayResult> dicDbGateway = HdlGatewayLogic.Current.GetGateWayListFromDataBase(); - if (nowGwConnectMode != GatewayConnectMode.Remote || dicDbGateway == null) - { - //缃戠粶涓存椂鍙樻洿锛燂紵 - return; - } - - bool hadOnline = false; - lock (dicGateway) - { - foreach (var way in this.dicGateway.Values) - { - //寰幆澶勭悊鏈湴鍏ㄩ儴鐨勭綉鍏冲垪琛� - string gwId = this.GetGatewayId(way); - if (dicDbGateway.ContainsKey(gwId) == true//濡傛灉浜戠涓婇潰鏈夎繖涓綉鍏� - && dicDbGateway[gwId].MqttOnlineStatus == true//濡傛灉浜戠涓婇潰杩欎釜缃戝叧鏄湪绾跨殑 - ) - { - dicGateway[gwId].GatewayOnlineFlage = true; - //瀹冩槸鍦ㄧ嚎鐨� - dicStatu[gwId] = true; - hadOnline = true; - } - } - } - - //灏嗗彉鍖栫殑缃戝叧鎺ㄩ�佸埌鐣岄潰涓� - this.PushGatewayOnlineStatuToForm(dicStatu); - - //濡傛灉娌℃湁缃戝叧鍦ㄧ嚎 - if (hadOnline == false) - { - //杩滅▼杩炴帴瓒呮椂,娌℃湁缃戝叧鍦ㄧ嚎 - string msg = Language.StringByID(R.MyInternationalizationString.uRemoteTimeOutAndNotGatewaiOnline); - //this.ShowTipMsg(msg); - } - }); - } - - #endregion - - #region 鈻� 妫�鏌ョ綉鍏�(鏃犵綉缁�)___________________ - - /// <summary> - /// 鍦ㄨ繙绋嬬殑鏉′欢涓嬶紝妫�鏌ョ綉鍏崇殑鍦ㄧ嚎鐘舵��(缃戠粶鍙樻洿鏃惰Е鍙�) - /// </summary> - private void CheckGatewayStatuByNotNet() - { - //褰撳墠鏃犵綉缁滆繛鎺�,璇风‘璁ょ綉缁� - string msg = Language.StringByID(R.MyInternationalizationString.uNowIsDonotNetworkAndCheckNetwork); - this.ShowTipMsg(msg); - } - - #endregion - - #region 鈻� 缃戝叧鎺ㄩ�乢__________________________ - - /// <summary> - /// 灏嗗彉鍖栫殑缃戝叧鎺ㄩ�佸埌鐣岄潰涓� - /// </summary> - /// <param name="dicStatu"></param> - private void PushGatewayOnlineStatuToForm(Dictionary<string, bool> dicStatu) - { - List<ZbGateway> listChange = new List<ZbGateway>(); - List<bool> listChangeStatu = new List<bool>(); - foreach (string gwid in dicStatu.Keys) - { - //缃戝叧涓嶅锛岀洿鎺ユ帹閫�,涓嶅垽鏂槸鍚︽敼鍙樹簡 - ZbGateway zbGateway = this.GetLocalGateway(gwid); - if (zbGateway != null) - { - listChange.Add(zbGateway); - listChangeStatu.Add(dicStatu[gwid]); - - zbGateway.GatewayOnlineFlage = dicStatu[gwid]; - } - } - - if (listChange.Count == 0) - { - return; - } - //鑾峰彇褰撳墠鎺ュ彈鍦ㄧ嚎鐘舵�佹帹閫佺殑鐣岄潰 - var listForm = new List<CommonFormBase>(); - listForm.AddRange(UserCenterResourse.listGatewayOnlinePushForm); - if (listForm.Count > 0) - { - for (int i = 0; i < listChange.Count; i++) - { - foreach (var form in listForm) - { - form?.GatewayOnlinePush(listChange[i], listChangeStatu[i]); - } - } - } - } - - #endregion - - #region 鈻� 涓�鑸柟娉昣__________________________ - - /// <summary> - /// 璁剧疆瀛樺湪缃戝叧姝e湪鍗囩骇鐨勬爣璇� - /// </summary> - /// <param name="update">鏄惁鏈夌綉鍏冲湪鍗囩骇</param> - public void SetHadGatewayUpdateFlage(bool update) - { - this.hadGatewayUpdate = update; - } - - /// <summary> - /// 鍦ㄧ綉缁滆繛鎺ュ彉鏇翠箣鍚庯紝缃戝叧杩炴帴妫�娴嬩箣鍓嶏紝璁剧疆鍏ㄩ儴缃戝叧涓虹绾跨姸鎬�(浠ユ湰鍦扮綉鍏充负鏍囧噯) - /// </summary> - /// <returns></returns> - private Dictionary<string, bool> GetNowOnlineStatuBeforeCheck() - { - //鍏堣幏鍙栫幇鍦ㄥ叏閮ㄧ殑缃戝叧 - List<ZbGateway> listOldGateway = this.GetAllGatewayFromGateway(); - var dicOldZb = new Dictionary<string, ZbGateway>(); - foreach (var zb in listOldGateway) - { - string gwID = this.GetGatewayId(zb); - dicOldZb[gwID] = zb; - } - - var dicStatu = new Dictionary<string, bool>(); - lock (dicGateway) - { - foreach (string gwId in this.dicGateway.Keys) - { - if (dicOldZb.ContainsKey(gwId) == true) - { - //鏍囪涓轰笉鍦ㄧ嚎 - this.SetGatewayNotOnLineFlag(dicOldZb[gwId]); - } - dicStatu[gwId] = false; - } - } - return dicStatu; - } - - #endregion #endregion @@ -1827,7 +1875,7 @@ bool canBreak = false; HdlThreadLogic.Current.RunThread(async () => { - List<string> list = new List<string>() { "NotSetAgain" }; + List<string> list = new List<string>() { "NotSetAgain", "NotCheck" }; //璁剧疆璁块棶鎺ュ彛鐨勫弬鏁� var pra = new GetGatewayPra(); @@ -1870,6 +1918,89 @@ #endregion + #region 鈻� 璁剧疆缃戝叧缁忕含搴____________________ + + /// <summary> + /// 璁剧疆缃戝叧缁忕含搴� + /// </summary> + /// <param name="gateway">缃戝叧瀵硅薄</param> + /// <param name="Longitude">缁忓害</param> + /// <param name="Latitude">缁村害</param> + /// <param name="mode">鏄剧ず閿欒</param> + /// <returns></returns> + public bool SetGatewaySite(ZbGateway gateway, double Longitude, double Latitude, ShowErrorMode mode) + { + ZbGateway realWay = null; + if (this.GetRealGateway(ref realWay, gateway) == false) + { + if (mode == ShowErrorMode.YES) + { + //閿欒:缃戝叧瀵硅薄涓㈠け + string msg = Language.StringByID(R.MyInternationalizationString.uErrorGatewayLostMsg); + this.ShowTipMsg(msg); + } + return false; + } + + int result = -1; + Action<string, string> action = (topic, message) => + { + var gatewayID = topic.Split('/')[0]; + if (topic == gatewayID + "/" + "Logic/SetSite_Respon") + { + var jobject = Newtonsoft.Json.Linq.JObject.Parse(message); + result = Convert.ToInt32(jobject["Data"]["Result"].ToString()); + } + }; + realWay.Actions += action; + //涓や綅灏忔暟 + Longitude = Math.Round(Longitude, 2); + Latitude = Math.Round(Latitude, 2); + + int intLongitude = Convert.ToInt32(Longitude.ToString().Replace(".", string.Empty)); + int intLatitude = Convert.ToInt32(Latitude.ToString().Replace(".", string.Empty)); + + var jObject = new Newtonsoft.Json.Linq.JObject { { "Cluster_ID", 0 }, { "Command", 2013 } }; + var data = new Newtonsoft.Json.Linq.JObject { { "Longitude", intLongitude }, { "Latitude", intLatitude } }; + jObject.Add("Data", data); + if (this.IsGatewayExist(gateway) == true) + { + realWay.Send("Logic/SetSite", jObject.ToString()); + } + else + { + //濡傛灉杩欎釜缃戝叧杩樻病鏈夌粦瀹氱殑璇濓紝鍒欏己鍒朵娇鐢ㄦ湰鍦拌繛鎺� + realWay.SendLocation("Logic/SetSite", System.Text.Encoding.UTF8.GetBytes(jObject.ToString())); + } + + int TimeOut = 0; + while (result == -1 && TimeOut < 30) + { + System.Threading.Thread.Sleep(100); + TimeOut++; + } + + realWay.Actions -= action; + if (result != 0) + { + if (mode == ShowErrorMode.YES) + { + //璁剧疆缃戝叧缁忕含搴﹀け璐� + string msg = Language.StringByID(R.MyInternationalizationString.uSetGatewaySiteFail); + if (result == -1) + { + msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, null, "鍥炲瓒呮椂"); + } + this.ShowTipMsg(msg); + } + return false; + } + + return true; + } + + #endregion + #region 鈻� 瑙g粦浜戠缃戝叧_______________________ /// <summary> @@ -1883,7 +2014,7 @@ //鑾峰彇鎺у埗涓讳汉璐﹀彿鐨凾oken Pra.LoginAccessToken = UserCenterLogic.GetConnectMainToken(); - List<string> listNotShowError = new List<string>() { "NoExist", "NoBind", "NoRecord" }; + List<string> listNotShowError = new List<string>() { "NoExist", "NoBind", "NoRecord", "NotSetAgain" }; bool result = await UserCenterLogic.GetResultStatuByRequestHttps("App/ReleaseGatewayToHome", true, Pra, listNotShowError); if (result == false) @@ -1903,7 +2034,7 @@ /// <param name="zbGateway"></param> public void BackupGatewayIdOnNotNetwork(ZbGateway zbGateway) { - var strId = HdlGatewayLogic.Current.GetGatewayId(zbGateway); + var strId = zbGateway.GwId; if (listBackupGwId.Contains(strId) == false) { listBackupGwId.Add(strId); @@ -1974,211 +2105,334 @@ #endregion - #region 鈻� 涓婁紶璁惧澶囦唤鍒扮綉鍏砡________________ + #region 鈻� 鍙戦�佺綉鍏冲懡浠ょ粰缃戝叧_________________ /// <summary> - /// 涓婁紶璁惧澶囦唤鍒扮綉鍏�(鏈�濂戒笉瑕佸幓鐞嗗畠鐨勮繑鍥炵粨鏋�) + /// 鍙戦�佹暟鎹埌缃戝叧锛屽苟鎺ュ彈缃戝叧杩斿洖鐨勬暟鎹�(ReceiptData涓鸿繑鍥炲��) /// </summary> - /// <param name="device">璁惧瀵硅薄</param> - /// <param name="backupEnum">澶囦唤绫诲瀷</param> - /// <param name="upLaodData">澶囦唤鐨勬暟鎹�</param> - /// <returns></returns> - public async Task<bool> UpLoadDeviceBackupDataToGateway(CommonDevice device, GatewayBackupEnum backupEnum, object upLaodData) + /// <param name="gateway">缃戝叧瀵硅薄</param> + /// <param name="sendTopic">鍙戦�佺殑涓婚</param> + /// <param name="sendData">闇�瑕佸彂閫佺殑鏁版嵁 JObject.ToString()鐨勪笢瑗�</param> + /// <param name="receiptTopic">鎸囧畾鎺ユ敹鍝釜涓婚</param> + /// <param name="waitTime">瓒呮椂鏃堕棿(绉�)</param> + /// <returns>缃戝叧杩斿洖鐨勬暟鎹�</returns> + public ReceiptGatewayResult SendJobjectDataToGateway(ZbGateway gateway, string sendTopic, string sendData, string receiptTopic, int waitTime = 5) { - ZbGateway realWay = null; - if (HdlGatewayLogic.Current.GetRealGateway(ref realWay, device.CurrentGateWayId) == false) + var reResult = new ReceiptGatewayResult(); + + ZbGateway myGateway = null; + if (this.GetRealGateway(ref myGateway, gateway) == false) { - //娌℃湁鎵惧埌鐪熷疄鐗╃悊缃戝叧 - return false; + //鑾峰彇缃戝叧瀵硅薄澶辫触 + reResult.ErrorMsg = Language.StringByID(R.MyInternationalizationString.uGetGatewayTagartFail); + reResult.ErrorMsgDiv = -1; + return reResult; } - string fileName = device.FilePath + ((int)backupEnum).ToString().PadLeft(5, '0'); - //鍒涘缓鏂囦欢瀵硅薄 - var result = await realWay.CreateFileAsync(fileName); - if (result == null || result.Result != 0) + //缃戝叧ID + string gatewayID = gateway.GwId; + //閿欒涓婚 + string errorTopic = gatewayID + "/" + "Error_Respon"; + //妫�娴嬪璞$殑涓婚 + string checkTopic = gatewayID + "/" + receiptTopic; + + Action<string, string> receiptAction = (topic, message) => { - return false; - } - //鍙戦�佹暟鎹祦 - var data = Newtonsoft.Json.JsonConvert.SerializeObject(upLaodData); - var byteData = System.Text.Encoding.UTF8.GetBytes(data); - var result2 = await realWay.SendFileAsync(byteData); - if (result2 == null || result2.Result != 0) + var jobject = Newtonsoft.Json.Linq.JObject.Parse(message); + + //缃戝叧鍥炲閿欒 + if (topic == errorTopic) + { + var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString()); + reResult.ErrorMsg = HdlCheckLogic.Current.CheckCommonErrorCode(temp.Error); + } + //濡傛灉鏄寚瀹氱殑涓婚 + if (topic == checkTopic) + { + reResult.ReceiptData = jobject["Data"].ToString(); + } + }; + myGateway.Actions += receiptAction; + //鍙戦�佹暟鎹� + myGateway.Send(sendTopic, sendData); + + //瓒呮椂鏃堕棿 + int TimeOut = 0; + waitTime = 20 * waitTime; + while (reResult.ReceiptData == null && TimeOut < waitTime) { - return false; + //鍏ㄩ儴鎺ユ敹鎵嶉��鍑� + System.Threading.Thread.Sleep(50); + TimeOut++; } - return true; + myGateway.Actions -= receiptAction; + receiptAction = null; + if (reResult.ReceiptData == null) + { + reResult.ErrorMsgDiv = 0; + } + + return reResult; } #endregion - #region 鈻� 鎭㈠缃戝叧___________________________ + #region 鈻� 缃戝叧鐩戣___________________________ /// <summary> - /// 鎭㈠缃戝叧閰嶇疆 + /// 褰撳墠鐨勭綉缁滆繛鎺ユā寮� /// </summary> - /// <param name="zbGateway">缃戝叧瀵硅薄</param> - /// <param name="listGatewayFile">缃戝叧閲岄潰鎷ユ湁鐨勬枃浠�</param> - /// <param name="backDirectory">浜戠涓嬭浇鐨勫浠芥暟鎹殑鏂囦欢澶瑰悕瀛�</param> - /// <returns></returns> - public async Task<bool> RecoverGatewaySettion(ZbGateway zbGateway, List<string> listGatewayFile, string backDirectory) + private GatewayConnectMode nowGwConnectMode = GatewayConnectMode.None; + /// <summary> + /// 鏄惁瀛樺湪缃戝叧姝e湪鍗囩骇 + /// </summary> + private bool hadGatewayUpdate = false; + + /// <summary> + /// 褰撶綉鍏崇殑杩炴帴鏂瑰紡鏀瑰彉鏃�,璁板綍褰撳墠鐨勮繛鎺ユ柟寮� + /// </summary> + /// <param name="connectMode">缃戝叧鍙樻洿鍚庣殑杩炴帴鏂瑰紡</param> + public void CheckGatewayByConnectChanged(GatewayConnectMode connectMode) { - //鑾峰彇浠庝簯绔偅閲屽緱鏉ョ殑鍏ㄩ儴鏂囦欢 - var listBackFile = HdlAutoBackupLogic.GetFileFromDirectory(UserCenterLogic.CombinePath(backDirectory)); - //娣诲姞闄勫姞鎯呮姤:杩樺師璁惧閰嶇疆 - ProgressBar.SetAppendText(Language.StringByID(R.MyInternationalizationString.uRecoverDeviceSettion)); - ProgressBar.SetMaxValue(listBackFile.Count); - ProgressBar.Show(); - - var listSaveFile = new HashSet<string>(); - foreach (string fileName in listBackFile) - { - if (fileName.Length < 10 || fileName.StartsWith(Common.LocalDevice.deviceFirstName) == false) - { - //涓嶆槸璁惧澶囦唤鏂囦欢 - continue; - } - //鎭㈠璁惧閰嶇疆 - var result = await this.RecoverDeviceSettion(backDirectory, fileName); - if (result == -1) - { - ProgressBar.Close(); - return false; - } - if (result == 1 || result == 2) - { - listSaveFile.Add(fileName); - } - - ProgressBar.SetValue(1); - listGatewayFile.Remove(fileName); - } - //娣诲姞闄勫姞鎯呮姤:瑕嗙洊缃戝叧澶囦唤涓� - ProgressBar.SetAppendText(Language.StringByID(R.MyInternationalizationString.uGatewayBackupDataIsCovering)); - foreach (var file in listSaveFile) - { - //鍒涘缓鏂囦欢瀵硅薄 - var result = await zbGateway.CreateFileAsync(file); - if (result == null || result.Result != 0) - { - Application.RunOnMainThread(() => - { - //瑕嗙洊缃戝叧澶囦唤澶辫触 - string msg = Language.StringByID(R.MyInternationalizationString.uCoverGatewayBackupDataFail); - var control = new ShowMsgControl(ShowMsgType.Tip, msg); - control.Show(); - }); - ProgressBar.Close(); - return false; - } - //鍙戦�佹暟鎹祦 - var byteData = Shared.Common.Global.ReadFileByDirectory(backDirectory, file); - var result2 = await zbGateway.SendFileAsync(byteData); - if (result2 == null || result2.Result != 0) - { - Application.RunOnMainThread(() => - { - //瑕嗙洊缃戝叧澶囦唤澶辫触 - string msg = Language.StringByID(R.MyInternationalizationString.uCoverGatewayBackupDataFail); - var control = new ShowMsgControl(ShowMsgType.Tip, msg); - control.Show(); - }); - ProgressBar.Close(); - return false; - } - } - //鍒犻櫎澶氫綑鐨勬枃浠� - foreach (var deleteFile in listGatewayFile) - { - if (deleteFile.Length > 12) - { - string deviceFileName = deleteFile.Substring(5); - if (deviceFileName.StartsWith(Common.LocalDevice.deviceFirstName) == false) - { - //涓嶆槸璁惧鏂囦欢 - continue; - } - string[] strArry = deviceFileName.Split(new string[] { "_" }, StringSplitOptions.RemoveEmptyEntries); - if (strArry.Length < 4 || listSaveFile.Contains(deleteFile) == true) - { - //鎴戜篃涓嶇煡閬撳畠鏄粈涔堟枃浠�,鎴栬�呰繖涓枃浠舵槸瑕嗙洊鐨� - continue; - } - //杩欎釜鎴栬鍙互涓嶇悊浠� - var result = await zbGateway.DelFileOrDirAsync("/etc/hdlDat/" + deleteFile); - } - } - ProgressBar.Close(); - - return true; + this.nowGwConnectMode = connectMode; } /// <summary> - /// 鎭㈠璁惧閰嶇疆 + /// 寮�鍚娴嬬綉鍏冲湪绾跨姸鎬佺殑绾跨▼(姝ゆ柟娉曟槸缁欒澶囧垪琛ㄧ晫闈㈢敤鐨�) /// </summary> - /// <param name="backDirectory">浜戠涓嬭浇鐨勫浠芥暟鎹殑鏂囦欢澶瑰悕瀛�</param> - /// <param name="backFileName">缃戝叧鐨勮澶囧浠藉悕瀛�</param> - /// <returns></returns> - private async Task<int> RecoverDeviceSettion(string backDirectory, string backFileName) + /// <param name="frameLayout">鐣岄潰瀵硅薄</param> + public void StartCheckGatewayOnlineThread(EditorCommonForm frameLayout) { - string deviceFileName = backFileName.Substring(0, backFileName.Length - 5); - string[] strArry = deviceFileName.Split(new string[] { "_" }, StringSplitOptions.RemoveEmptyEntries); - if (strArry.Length < 4) + HdlThreadLogic.Current.RunThread(() => { - //鎴戜篃涓嶇煡閬撳畠鏄粈涔堟枃浠� - return 0; + int waitCount = 0; + //濡傛灉浣忓畢ID鍙樻洿浜�,鍒欎笉鍐嶅鐞� + while (frameLayout.Parent != null && Config.Instance.HomeId != string.Empty) + { + System.Threading.Thread.Sleep(1000); + if (this.hadGatewayUpdate == true) + { + //缃戝叧姝e湪鍗囩骇,涓嶉渶瑕佹搷浣� + continue; + } + + waitCount++; + if (this.nowGwConnectMode == GatewayConnectMode.Remote) + { + //杩滅▼姣�20绉掓娴嬩竴娆� + if (waitCount < 20) { continue; } + } + else if (this.nowGwConnectMode == GatewayConnectMode.WIFI) + { + //灞�鍩熺綉姣�5绉掓娴嬩竴娆� + if (waitCount < 5) { continue; } + } + waitCount = 0; + + //鑾峰彇鍓嶅洖缃戝叧鐨勫湪绾跨姸鎬� + Dictionary<string, bool> dicOldOnline = this.GetOldGatewayOnlineStatu(); + if (dicOldOnline == null) + { + //鍒欎笉澶勭悊 + continue; + } + //鍙互鍙�4G + if (this.nowGwConnectMode == GatewayConnectMode.Remote) + { + //鍦ㄨ繙绋嬬殑鏉′欢涓嬶紝妫�鏌ョ綉鍏崇殑鍦ㄧ嚎鐘舵�� + this.CheckGatewayStatuByRemote(dicOldOnline); + } + //WIFI + else if (this.nowGwConnectMode == GatewayConnectMode.WIFI) + { + //鍦╓IFI鐨勬潯浠朵笅锛屾鏌ョ綉鍏崇殑鍦ㄧ嚎鐘舵�� + this.CheckGatewayStatuByWIFI(dicOldOnline); + } + } + }, ShowErrorMode.NO); + } + + /// <summary> + /// 鍦╓IFI鐨勬潯浠朵笅锛屾鏌ョ綉鍏崇殑鍦ㄧ嚎鐘舵�� + /// </summary> + private void CheckGatewayStatuByWIFI(Dictionary<string, bool> dicOldOnline) + { + //浠庣綉鍏宠幏鍙栧叏閮ㄧ殑缃戝叧 + List<ZbGateway> list = this.GetAllGatewayFromGateway(); + foreach (var way in list) + { + //灏嗘爣璇嗙疆涓篺alse + way.GatewayOnlineFlage = false; } - var device = Common.LocalDevice.Current.GetDevice(strArry[2], Convert.ToInt32(strArry[3])); - if (device == null) + //绛変釜2绉� + System.Threading.Thread.Sleep(2000); + + //2020.05.25杩藉姞:姝や綇瀹呮槸鍚︽嫢鏈夌綉鍏冲湪绾� + var hadGwOnline = false; + foreach (var way in list) { - //杩欎釜璁惧涓嶈浜� - return 2; + if (dicOldOnline.ContainsKey(way.GwId) == true) + { + if (way.GatewayOnlineFlage == true) + { + //鏈変竴涓綉鍏冲湪绾�,鍗冲湪绾� + hadGwOnline = true; + break; + } + } } - var byteData = Shared.Common.Global.ReadFileByDirectory(backDirectory, backFileName); - var backType = (GatewayBackupEnum)Convert.ToInt32(backFileName.Substring(backFileName.Length - 5, 5)); + foreach (var way in list) + { + string gwId = way.GwId; + if (dicOldOnline.ContainsKey(gwId) == true) + { + //缃戝叧涔熶笉澶�,鐩存帴鎺ㄩ�佸惂 + this.PushGatewayOnlineStatuToForm(gwId, way.GatewayOnlineFlage, hadGwOnline); + } + else + { + //娌℃湁鍖呭惈,榛樿涓篺alse + this.PushGatewayOnlineStatuToForm(gwId, false, hadGwOnline); + } + } + } - bool result = true; - if (backType == GatewayBackupEnum.AMac鍚嶇О) + /// <summary> + /// 鍦ㄨ繙绋嬬殑鏉′欢涓嬶紝妫�鏌ョ綉鍏崇殑鍦ㄧ嚎鐘舵�� + /// </summary> + private void CheckGatewayStatuByRemote(Dictionary<string, bool> dicOldOnline) + { + //鑾峰彇浜戠涓婇潰鐨勭綉鍏� + Dictionary<string, GatewayResult> dicDbGateway = HdlGatewayLogic.Current.GetGateWayListFromDataBase(); + if (dicDbGateway == null) { - var recoverData = Newtonsoft.Json.JsonConvert.DeserializeObject<string>(System.Text.Encoding.UTF8.GetString(byteData)); - result = await Common.LocalDevice.Current.ReMacName(new List<CommonDevice>() { device }, recoverData); + //濡傛灉缃戠粶涓嶉��,鍒欎篃寰�涓嬭蛋 + dicDbGateway = new Dictionary<string, GatewayResult>(); } - else if (backType == GatewayBackupEnum.A绔偣鍚嶇О) + + //2020.05.25杩藉姞:姝や綇瀹呮槸鍚︽嫢鏈夌綉鍏冲湪绾� + var hadGwOnline = false; + foreach (var gwId in dicOldOnline.Keys) { - var recoverData = Newtonsoft.Json.JsonConvert.DeserializeObject<string>(System.Text.Encoding.UTF8.GetString(byteData)); - result = await Common.LocalDevice.Current.ReName(device, recoverData); + //濡傛灉浜戠涓婇潰鏈夎繖涓綉鍏� + if (dicDbGateway.ContainsKey(gwId) == true + && dicDbGateway[gwId].MqttOnlineStatus == true) + { + //鏈変竴涓綉鍏冲湪绾�,鍗冲湪绾� + hadGwOnline = true; + break; + } } - else if (backType == GatewayBackupEnum.APir鐏厜閰嶇疆) + + foreach (var gwId in dicOldOnline.Keys) { - var recoverData = Newtonsoft.Json.JsonConvert.DeserializeObject<IASZone.ConfigureParamates>(System.Text.Encoding.UTF8.GetString(byteData)); - result = await HdlPirSensorLogic.Current.SetPirSensorLightSettion((IASZone)device, recoverData); + //濡傛灉浜戠涓婇潰鏈夎繖涓綉鍏� + if (dicDbGateway.ContainsKey(gwId) == true) + { + //缃戝叧涔熶笉澶�,鐩存帴鎺ㄩ�� + this.PushGatewayOnlineStatuToForm(gwId, dicDbGateway[gwId].MqttOnlineStatus, hadGwOnline); + } + else + { + //浜戠涓嶅寘鍚殑,褰撲笉鍦ㄧ嚎澶勭悊 + this.PushGatewayOnlineStatuToForm(gwId, false, hadGwOnline); + } } - else if (backType == GatewayBackupEnum.A骞叉帴鐐归鑹茶皟鑺�) + } + + /// <summary> + /// 鑾峰彇鍓嶅洖缃戝叧鐨勫湪绾跨姸鎬� + /// </summary> + /// <returns></returns> + private Dictionary<string, bool> GetOldGatewayOnlineStatu() + { + if (this.dicGateway.Count == 0) { - var recoverData = Newtonsoft.Json.JsonConvert.DeserializeObject<Panel.KeyColorData>(System.Text.Encoding.UTF8.GetString(byteData)); - result = await HdlPanelLogic.Current.SetPanelEpointColorInfo((Panel)device, recoverData); + //娌℃湁缃戝叧,鍒欎笉澶勭悊 + return null; } - else if (backType == GatewayBackupEnum.A骞叉帴鐐逛寒搴﹁皟鑺�) + + try { - var recoverData = Newtonsoft.Json.JsonConvert.DeserializeObject<Newtonsoft.Json.Linq.JObject>(System.Text.Encoding.UTF8.GetString(byteData)); - int directionsLevel = Convert.ToInt32(recoverData["directionsLevel"]); - int backlightLevel = Convert.ToInt32(recoverData["backlightLevel"]); - result = await HdlPanelLogic.Current.SetDeviceLightSettion((Panel)device, directionsLevel, backlightLevel); + var dicOldOnline = new Dictionary<string, bool>(); + //濡傛灉鍦ㄥ惊鐜殑杩囩▼涓�,鍔ㄤ簡閲岄潰鐨勪笢瑗�,鎶ラ敊鍒欎笉鐞嗗畠,涓嬩竴鍥炲悎 + foreach (var zbway in this.dicGateway.Values) + { + //鑾峰彇鍓嶅洖鐨勫湪绾跨姸鎬� + dicOldOnline[zbway.GwId] = zbway.GatewayOnlineFlage; + } + return dicOldOnline; } - else if (backType == GatewayBackupEnum.A骞叉帴鐐硅妭鑳芥ā寮�) + catch { return null; } + } + + /// <summary> + /// 灏嗗彉鍖栫殑缃戝叧鎺ㄩ�佸埌鐣岄潰涓� + /// </summary> + /// <param name="gwId"></param> + /// <param name="online"></param> + /// <param name="hadGwOnline">2020.05.25杩藉姞:姝や綇瀹呮槸鍚︽嫢鏈夌綉鍏冲湪绾�</param> + private void PushGatewayOnlineStatuToForm(string gwId, bool online, bool hadGwOnline) + { + try { - var recoverData = Newtonsoft.Json.JsonConvert.DeserializeObject<Newtonsoft.Json.Linq.JObject>(System.Text.Encoding.UTF8.GetString(byteData)); - bool modeEnable = Convert.ToBoolean(recoverData["modeEnable"]); - int modeTime = Convert.ToInt32(recoverData["modeTime"]); - int level = Convert.ToInt32(recoverData["level"]); - result = await HdlPanelLogic.Current.SetDeviceEnergyConservationMode((Panel)device, modeEnable, modeTime, level); + for (int i = 0; i < UserCenterResourse.listActionFormId.Count; i++) + { + string formId = UserCenterResourse.listActionFormId[i]; + if (UserCenterResourse.DicActionForm.ContainsKey(formId) == false) + { + continue; + } + //缃戝叧鍦ㄧ嚎鎺ㄩ�� + var zbway = this.GetLocalGateway(gwId); + if (zbway != null) + { + //鍒囨崲浣忓畢鏃�,杩欎釜涓滆タ鏈夊彲鑳芥槸null + zbway.GatewayOnlineFlage = online; + UserCenterResourse.DicActionForm[formId]?.GatewayOnlinePush(zbway, online, hadGwOnline); + } + } } - else if (backType == GatewayBackupEnum.A骞叉帴鐐圭鏈夊睘鎬�) + catch { } + } + + /// <summary> + /// 璁剧疆瀛樺湪缃戝叧姝e湪鍗囩骇鐨勬爣璇� + /// </summary> + /// <param name="update">鏄惁鏈夌綉鍏冲湪鍗囩骇</param> + public void SetHadGatewayUpdateFlage(bool update) + { + this.hadGatewayUpdate = update; + } + + #endregion + + #region 鈻� 涓�鑸柟娉昣__________________________ + + /// <summary> + /// 鏄剧ず閿欒淇℃伅绐楀彛 + /// </summary> + /// <param name="msg"></param> + private void ShowErrorMsg(string msg) + { + Application.RunOnMainThread(() => { - var recoverData = Newtonsoft.Json.JsonConvert.DeserializeObject<int>(System.Text.Encoding.UTF8.GetString(byteData)); - result = await HdlPanelLogic.Current.EditorDryContactFunction((Panel)device, recoverData); - } - return result == true ? 1 : -1; + var contr = new ShowMsgControl(ShowMsgType.Error, msg); + contr.Show(); + }); + } + + /// <summary> + /// 鏄剧ずTip淇℃伅绐楀彛 + /// </summary> + /// <param name="msg"></param> + private void ShowTipMsg(string msg) + { + Application.RunOnMainThread(() => + { + var contr = new ShowMsgControl(ShowMsgType.Tip, msg); + contr.Show(); + }); } #endregion -- Gitblit v1.8.0