From f500e14c0a994487070380c50c85e0929cbc8e63 Mon Sep 17 00:00:00 2001 From: JLChen <551775569@qq.com> Date: 星期二, 05 一月 2021 10:48:04 +0800 Subject: [PATCH] 2021-01-05 1.更新 --- Crabtree/SmartHome/UI/SimpleControl/Phone/Guide/GuideAddGateway.cs | 306 ++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 255 insertions(+), 51 deletions(-) diff --git a/Crabtree/SmartHome/UI/SimpleControl/Phone/Guide/GuideAddGateway.cs b/Crabtree/SmartHome/UI/SimpleControl/Phone/Guide/GuideAddGateway.cs index 5345188..f08fd6d 100644 --- a/Crabtree/SmartHome/UI/SimpleControl/Phone/Guide/GuideAddGateway.cs +++ b/Crabtree/SmartHome/UI/SimpleControl/Phone/Guide/GuideAddGateway.cs @@ -26,7 +26,7 @@ /// <summary> /// 淇敼缃戝叧澶囨敞 /// </summary> - static void ResetGatewayName (GatewayBase gatewayBase,Button nameButton1) + static void ResetGatewayName (GatewayBase gatewayBase, Button nameButton1) { Dialog dialog = new Dialog (); @@ -62,7 +62,7 @@ Height = Application.GetRealHeight (80), TextAlignment = TextAlignment.CenterLeft, TextColor = SkinStyle.Current.TextColor, - Text = "Gateway Name : " + Text = "Gateway Name : " }; bodyView.AddChidren (btnZoneName); @@ -136,6 +136,9 @@ public void ShowPage (RegionInfoRes home) { + ////2020-01-14 绗竴娆¤繘鍏ラ〉闈㈤粯璁� + //UserConfig.Instance.IsLocalEncrypt = false; + addedList = new List<Common> (); inView = this; #region 鏍囬 @@ -148,7 +151,7 @@ var title = new Button () { TextAlignment = TextAlignment.Center, - Text = home.RegionName, + Text = home.Name, TextColor = SkinStyle.Current.TextColor1, TextSize = 19, }; @@ -177,6 +180,8 @@ }; topView.AddChidren (back); back.MouseUpEventHandler += (sender, e) => { + //閲嶇疆涓哄姞瀵嗘ā寮� + UserConfig.Instance.IsLocalEncrypt = true; (Parent as PageLayout).PageIndex -= 1; }; @@ -256,14 +261,17 @@ var delAlert = new Alert ("", "If you delete gateway, you will not able to control the devices. Still you want to delete the gateway?", "No", "Yes"); delAlert.Show (); - delAlert.ResultEventHandler += ( sender1, e1) => { + delAlert.ResultEventHandler += (sender1, e1) => { if (e1) { var delFile = IO.FileUtils.ReadFiles ().FindAll ((w) => { return (w.Split ('_') [0] == "Equipment") && (w.Split ('_') [2] == common.SubnetID.ToString ()); }); for (int k = 0; k < delFile.Count; k++) { - if (delFile [k].Contains (DeviceType.OnePortWirelessFR.ToString ()) || delFile [k].Contains (DeviceType.OnePortBus.ToString ()) || - delFile [k].Contains (DeviceType.RCU.ToString ()) || delFile [k].Contains (DeviceType.SuperWireless.ToString ())) { + if (delFile [k].Contains (DeviceType.OnePortWirelessFR.ToString ()) + || delFile [k].Contains (DeviceType.OnePortMqttFR.ToString ()) + || delFile [k].Contains (DeviceType.OnePortBus.ToString ()) + || delFile [k].Contains (DeviceType.RCU.ToString ()) + || delFile [k].Contains (DeviceType.SuperWireless.ToString ())) { continue; } IO.FileUtils.DeleteFile (delFile [k]); @@ -291,32 +299,11 @@ bool goNext = false; System.Threading.Tasks.Task.Run (() => { try { - if (common.Type == DeviceType.OnePortWirelessFR) { - var bingResidenceIdBytes = Control.ControlBytesSendHasReturn (Command.Read_APP_Data_STORE_1D5C_CMD, common.SubnetID, common.DeviceID, new byte [] { }); - if (bingResidenceIdBytes == null) { - Application.RunOnMainThread (() => { - new Alert ("", "No response from gateway. Please make sure the gateway is online and its firmware is up to date.", Language.StringByID (R.MyInternationalizationString.Close)).Show (); - }); - } - int bingResideceId = 0; - for (int i = 0; i < bingResidenceIdBytes.Length; i++) { - bingResideceId += (int)(bingResidenceIdBytes [i] * Math.Pow (256, 3 - i)); - } - if (bingResideceId != UserConfig.Instance.CurrentRegion.RegionID && bingResideceId != 0) { -//#if DEBUG -// Control.ControlBytesSendHasReturn (Command.Write_APP_Data_STORE_1D5E_CMD, common.SubnetID, common.DeviceID, new byte [] { 0, 0, 0, 0 }); -//#endif - Application.RunOnMainThread (() => { - new Alert ("", "This gateway has been bound to a residence, please reset it before binding to another residence.", Language.StringByID (R.MyInternationalizationString.Close)).Show (); - }); - } else { - goNext = true; - } - } else { - goNext = true; - } + + goNext = CheckIfGoNext (common); + } catch (Exception ex) { - Console.WriteLine (ex.Message); + Utlis.WriteLine (ex.Message); } finally { Application.RunOnMainThread (() => { MainPage.Loading.Hide (); @@ -325,18 +312,20 @@ CommonPage.FindGatewayChilrenIPAddress = common.IPAddress; inThisView = false; if (inView != null) { - Console.WriteLine ("inView != null"); + Utlis.WriteLine ("inView != null"); var deviceListView = new GuideSettingGateway (common); (inView.Parent as PageLayout).AddChidren (deviceListView); deviceListView.ShowPage (); (inView.Parent as PageLayout).PageIndex = (inView.Parent as PageLayout).ChildrenCount - 1; } else { - Console.WriteLine ("inView == null"); + Utlis.WriteLine ("inView == null"); UserHomePage.FrameLayoutMain.AddChidren (UserMiddle.guidePageView); var guide = new GuideAddResidence (); UserMiddle.guidePageView.AddChidren (guide); - guide.ShowHomeList (); + guide.ShowHomeView (); UserMiddle.guidePageView.PageIndex = 0; + //閲嶇疆涓哄姞瀵嗘ā寮� + UserConfig.Instance.IsLocalEncrypt = true; } } }); @@ -351,13 +340,21 @@ }; } } + + + + static bool inThisView = false; - Alert checkInternetAlert = new Alert ("", "Your phone in not connected to WIFI network, please connet", "Close", "Search again"); - Alert confirmAlert = new Alert ("", "Please make sure gateway is powered up and comect to WiFi router.", "Close", "Search again"); - Alert confirmAlert1 = new Alert ("", "If not all the gateways are in the list,you can search again.", "Close", "Search again"); + //Alert checkInternetAlert = new Alert ("", "Your phone in not connected to WIFI network, please connet", "Close", "Search again"); + //Alert confirmAlert = new Alert ("", "Please make sure gateway is powered up and comect to WiFi router.", "Close", "Search again"); + //Alert confirmAlert1 = new Alert ("", "If not all the gateways are in the list,you can search again.", "Close", "Search again"); + //Alert wrongPasswordAlert = new Alert ("", ErrorCode.GatewayPasswordError, "Close", "Search again"); + void SearchGatewayList () { if (UserConfig.Instance.internetStatus == 0 || UserConfig.Instance.internetStatus == 1) { + Alert checkInternetAlert = new Alert ("", ErrorCode.NotConnectedToWIFI, "Close", "Search again"); + checkInternetAlert.Show (); checkInternetAlert.ResultEventHandler += (dsss, eee) => { @@ -375,13 +372,17 @@ MainPage.Loading.Start ("Searching for gateway..."); }); #region 鎼滅储璁惧 + ////2020-01-14 榛樿鏄庢枃寮�濮嬫悳绱� + UserConfig.Instance.IsLocalEncrypt = false; + UserConfig.Instance.EncryptedPasswordCorrect = true; + CommonPage.LocalPhoneFindDevice = true; CommonPage.RandomHigh = (byte)new Random ().Next (255); CommonPage.RandomLow = (byte)new Random ().Next (255); CommonPage.GateWayList.Clear (); CommonPage.FindGateway = true; //濡傛灉涓ゆ閮芥病鏈夋暟鎹弽棣堬紝灏变笉璇诲彇 - int readCount = 2; + int readCount = 3; while (0 < readCount) { readCount--; System.IO.MemoryStream ms = new System.IO.MemoryStream (); @@ -402,7 +403,7 @@ } Control control = new Control (); - Console.WriteLine ("缁勬挱鎼滅储缃戝叧锛屾悳绱㈠湴鍧�鏄�:" + CommonPage.EndPoint.ToString () + " " + CommonPage.GateWayList.Count); + Utlis.WriteLine ("缁勬挱鎼滅储缃戝叧锛屾悳绱㈠湴鍧�鏄�:" + CommonPage.EndPoint.ToString () + " " + CommonPage.GateWayList.Count); control.Send (new Target () { IPEndPoint = CommonPage.EndPoint, Command = Command.ReadGateway, @@ -411,7 +412,7 @@ AddData = ms.ToArray () }, SendCount.Zero, false); - Console.WriteLine ("骞挎挱鎼滅储缃戝叧锛屾悳绱㈠湴鍧�鏄�:" + new Net.NetWiFi ().BroadcastIpAddress.ToString () + " " + CommonPage.GateWayList.Count); + Utlis.WriteLine ("骞挎挱鎼滅储缃戝叧锛屾悳绱㈠湴鍧�鏄�:" + new Net.NetWiFi ().BroadcastIpAddress.ToString () + " " + CommonPage.GateWayList.Count); control.Send (new Target () { IPEndPoint = new System.Net.IPEndPoint (new Net.NetWiFi ().BroadcastIpAddress, 6000), Command = Command.ReadGateway, @@ -423,7 +424,7 @@ System.Threading.Thread.Sleep (800); //濡傛灉鏁伴噺涓嶇浉绛夛紝灏遍噸缃鏁� if (tempCount != CommonPage.GateWayList.Count) { - readCount = 2; + readCount = 3; } } CommonPage.FindGateway = false; @@ -431,23 +432,21 @@ CommonPage.LocalPhoneFindDevice = false; #endregion } catch (Exception ex) { - Console.WriteLine (ex.ToString ()); + Utlis.WriteLine (ex.ToString ()); } finally { Application.RunOnMainThread (() => { if (CommonPage.GateWayList.Count == 0) { MainPage.Loading.Hide (); if (this != null && this.Parent != null) { - confirmAlert.Show (); - confirmAlert.ResultEventHandler += (ddf, ddd) => { - MainPage.Loading.Hide (); - if (ddd) { - SearchGatewayList (); - } - }; + ShowConfirmAlert (); + + } } else { if (this != null && this.Parent != null) { - if (inThisView){// this.Parent.GetChildren (this.Parent.ChildrenCount - 1) == this) { + if (inThisView) {// this.Parent.GetChildren (this.Parent.ChildrenCount - 1) == this) { + Alert confirmAlert1 = new Alert ("", ErrorCode.IfAllTheGatewaysAreNotInTheList, "Close", "Search again"); + confirmAlert1.Show (); confirmAlert1.ResultEventHandler += (ddf, ddd) => { MainPage.Loading.Hide (); @@ -460,7 +459,212 @@ } }); } - }) { IsBackground=true}.Start(); + }) { IsBackground = true }.Start (); + } + + /// <summary> + /// 鎻愮ず + /// Please make sure gateway is powered up and comect to WiFi router. + /// 鎴栬�� + /// + /// </summary> + static void ShowConfirmAlert () { + if (UserConfig.Instance.IsLocalEncrypt) { + //瀵嗙爜妫�楠屾纭� + if (UserConfig.Instance.EncryptedPasswordCorrect) { + Alert confirmAlert = new Alert ("", ErrorCode.MakeSureGatewayIsPoweredUp, "Close", "Search again"); + confirmAlert.Show (); + confirmAlert.ResultEventHandler += (ddf, ddd) => { + MainPage.Loading.Hide (); + if (ddd) { + inView.SearchGatewayList (); + } + }; + } else { + Alert wrongPasswordAlert = new Alert ("", ErrorCode.GatewayPasswordError, "Close", "Search again"); + wrongPasswordAlert.Show (); + wrongPasswordAlert.ResultEventHandler += (ddf, ddd) => { + MainPage.Loading.Hide (); + if (ddd) { + inView.SearchGatewayList (); + } + }; + + } + } else { + Alert confirmAlert = new Alert ("", ErrorCode.MakeSureGatewayIsPoweredUp, "Close", "Search again"); + confirmAlert.Show (); + confirmAlert.ResultEventHandler += (ddf, ddd) => { + MainPage.Loading.Hide (); + if (ddd) { + inView.SearchGatewayList (); + } + }; + + } + + + } + + + //static byte [] AseKeyBytes; + /// <summary> + /// 淇敼缃戝叧鏈湴鍔犲瘑 + /// </summary> + /// <param name="gatewayDeicve"></param> + /// <param name="isEncrypt"></param> + /// <returns></returns> + static bool SetGateWayLocalEncryption (GatewayBase gatewayDeicve, bool isEncrypt = true) + { + if (UserConfig.Instance.CurrentRegion == null) return false; + + byte [] AseKeyBytes = UserConfig.Instance.GenerateLocalEncryptionKey (); + byte [] sendBytes = new byte [17]; + sendBytes [0] = isEncrypt ? (byte)1 : (byte)0; //0:涓嶅姞瀵� 1:鍔犲瘑 + Array.Copy (AseKeyBytes, 0, sendBytes, 1, 16); + byte [] backBytes = Control.ControlBytesSendHasReturn (Command.SetGateWayLocalEncryption, gatewayDeicve.SubnetID, gatewayDeicve.DeviceID, sendBytes); + return CheckIsSuccessfulWithBytes (backBytes); + } + + /// <summary> + /// 鍒ゆ柇鏄惁淇鎴愬姛 F8 = 鎴愬姛锛� F5=澶辫触 + /// </summary> + /// <param name="backBytes"></param> + /// <returns></returns> + static bool CheckIsSuccessfulWithBytes (byte [] backBytes, string errorStr = "Modify gateway configuration failed,please try again!") + { + if (backBytes == null) { + Application.RunOnMainThread (() => { + new Alert ("", ErrorCode.GatewayNoResponse, + Language.StringByID (R.MyInternationalizationString.Close)).Show (); + }); + return false; + } else if (backBytes [0] == 0xF8) {//F8 = 鎴愬姛锛� F5=澶辫触 + return true; + } else { + Application.RunOnMainThread (() => { + new Alert ("", errorStr, + Language.StringByID (R.MyInternationalizationString.Close)).Show (); + }); + return false; + } + } + + + /// <summary> + /// CheckIfGoNext + /// </summary> + /// <returns></returns> + static bool CheckIfGoNext (GatewayBase common) + { + bool goNext = false; + if (common.Type == DeviceType.OnePortWirelessFR || common.Type == DeviceType.OnePortMqttFR) { + goNext = CheckIfGoNextMqttGateway (common); + } else { + goNext = true; + } + return goNext; + } + + /// <summary> + /// CheckIfGoNextMqttGateway + /// </summary> + /// <returns></returns> + static bool CheckIfGoNextMqttGateway (GatewayBase common) + { + Application.RunOnMainThread (() => { + MainPage.Loading.Start ("Please wait..."); + }); + + bool goNext = false; + //if (!UserConfig.Instance.IsLocalEncrypt) { + // //濡傛灉娌″姞瀵嗭紝璧颁慨鏀瑰姞瀵嗘柟娉� + // var result = SetGateWayLocalEncryption (common); + // if (!result) { + // MainPage.LoadingHide (); + // return result;//淇敼澶辫触 杩斿洖goNext false + // } + // //淇敼鎴愬姛,璁剧疆鏈湴涓哄姞瀵嗘柟寮� + // UserConfig.Instance.IsLocalEncrypt = true; + // //string aseKeyStr = CommonPage.MyEncodingUTF8.GetString (AseKeyBytes); + // //UserConfig.Instance.LocalEncryptKey = aseKeyStr; + // Utlis.WriteLine ($"============>LocalEncryptKey 鍔犲瘑鎴愬姛Key涓猴細{UserConfig.Instance.LocalEncryptKey}"); + //} + + var backBytes = Control.ControlBytesSendHasReturn (Command.Read_APP_Data_STORE_1D5C_CMD, common.SubnetID, common.DeviceID, new byte [] { }); + + if (backBytes == null) { + Application.RunOnMainThread (() => { + new Alert ("", "No response from gateway. Please make sure the gateway is online and its firmware is up to date.", Language.StringByID (R.MyInternationalizationString.Close)).Show (); + }); + + } + + if (backBytes.Length >= 37) { + //******************浣忓畢ID string绫诲瀷************* + bool enable = backBytes [0] == 0 ? false : true; + //杩斿洖浣忓畢ID 杞负string绫诲瀷 + string backIDStr = CommonPage.MyEncodingGB2312.GetString (backBytes, 1, 36).Trim ('\0'); + backIDStr = backIDStr.Replace ("每", ""); + //2020-01-12 + backIDStr = backIDStr.Replace ("\0", ""); + if (enable || backIDStr == UserConfig.Instance.CurrentRegion.Id || string.IsNullOrEmpty (backIDStr)) { + + + if (!UserConfig.Instance.IsLocalEncrypt) { + //濡傛灉娌″姞瀵嗭紝璧颁慨鏀瑰姞瀵嗘柟娉� + var result = SetGateWayLocalEncryption (common); + if (!result) { + Application.RunOnMainThread (() => { + MainPage.Loading.Hide (); + new Alert ("", "Encryption gateway failed, please try again.", Language.StringByID (R.MyInternationalizationString.Close)).Show (); + + }); + + return result;//淇敼澶辫触 杩斿洖goNext false + } + //淇敼鎴愬姛,璁剧疆鏈湴涓哄姞瀵嗘柟寮� + UserConfig.Instance.IsLocalEncrypt = true; + //Utlis.WriteLine ($"============>LocalEncryptKey 鍔犲瘑鎴愬姛Key涓猴細{UserConfig.Instance.LocalEncryptKey}"); + } + goNext = true; + + } else { + UnableToBindGatewayAlertShow (); + } + } else { + Application.RunOnMainThread (() => { + new Alert ("", ErrorCode.GatewayVersionLow, Language.StringByID (R.MyInternationalizationString.Close)).Show (); + }); + } + MainPage.LoadingHide (); + return goNext; + + } + + + static void UnableToBindGatewayAlertShow () + { + if (inView == null) + return; + Application.RunOnMainThread (() => { + + //if (this != null && this.Parent != null) { + var alter = new Alert ("", ErrorCode.UnableToBindGateway, Language.StringByID (R.MyInternationalizationString.Close)); + alter.ResultEventHandler += (sender1, e1) => { + if (e1) { + if (inView == null) + return; + //閲嶇疆涓哄姞瀵嗘ā寮� + UserConfig.Instance.IsLocalEncrypt = true; + (inView.Parent as PageLayout).PageIndex -= 1; + } + }; + alter.Show (); + //} + + }); + } } } \ No newline at end of file -- Gitblit v1.8.0