From bbc74a6dae2e90a811b2507c5896fe89aa29ccc0 Mon Sep 17 00:00:00 2001 From: 陈嘉乐 <cjl@hdlchina.com.cn> Date: 星期三, 08 一月 2020 11:30:46 +0800 Subject: [PATCH] 2020-01-08 1.替换新服务器接口。 --- Crabtree/SmartHome/UI/SimpleControl/Phone/Guide/GuideSettingGateway.cs | 221 +++++++++++++++++++++++++++++++++--------------------- 1 files changed, 135 insertions(+), 86 deletions(-) diff --git a/Crabtree/SmartHome/UI/SimpleControl/Phone/Guide/GuideSettingGateway.cs b/Crabtree/SmartHome/UI/SimpleControl/Phone/Guide/GuideSettingGateway.cs index 74791eb..2b4e0ac 100644 --- a/Crabtree/SmartHome/UI/SimpleControl/Phone/Guide/GuideSettingGateway.cs +++ b/Crabtree/SmartHome/UI/SimpleControl/Phone/Guide/GuideSettingGateway.cs @@ -15,6 +15,7 @@ static Loading myLoading; bool isReBind = false; static List<Common> addedCommon; + static bool needRefresh; public GuideSettingGateway (GatewayBase gd) { gatewayDeicve = gd as GatewayBase; @@ -34,6 +35,10 @@ myLoading.Hide (); btnCloseLoading.RemoveFromParent (); WirelessConfig (new byte [] { 1 });//close + if (needRefresh) { + needRefresh = false; + SearchDeviceList (); + } }); }; @@ -127,7 +132,7 @@ bottomView.AddChidren (btnAssignRoom); btnAssignRoom.MouseUpEventHandler += (sender, e) => { //bodyView.RemoveAll (); - + btnAssignRoomAction (); }; SearchDeviceList (); @@ -139,7 +144,7 @@ void btnAssignRoomAction () { if (gatewayDeicve.Type == DeviceType.OnePortMqttFR) { - + Console.WriteLine ("Assign OnePortMqttFR锛孒DL MQTT"); //RemoteSetting (); RemoteSettingWithHDLMQTT (); @@ -151,7 +156,7 @@ } - + /// <summary> /// 寮�鍏虫棤绾块厤缃� @@ -478,23 +483,24 @@ //} if (config) { - System.Threading.Tasks.Task.Factory.StartNew (() => { - try { - byte bigClass = common.BigClass; - byte minClass = common.MinClass; - int count = common.LoopCount; - for (int k = 1, j = 0; k <= count; k++) { - if (Control.ControlBytesSendHasReturn (Command.ReadDeviceLoopInfo, common.SubnetID, common.DeviceID, new byte [] { bigClass, minClass, (byte)k }) == null) { - j++; - //杩炵画涓ゆ璇诲彇涓嶅埌鏁版嵁鍒欒烦鍑鸿寰幆 - if (j == 2 && k == 2) - break; - } - } - } catch (Exception ex) { - Console.WriteLine ("Cinfig Read Device Loop Info " + ex.Message); - } - }); + needRefresh = true; + //System.Threading.Tasks.Task.Factory.StartNew (() => { + // try { + // byte bigClass = common.BigClass; + // byte minClass = common.MinClass; + // int count = common.LoopCount; + // for (int k = 1, j = 0; k <= count; k++) { + // if (Control.ControlBytesSendHasReturn (Command.ReadDeviceLoopInfo, common.SubnetID, common.DeviceID, new byte [] { bigClass, minClass, (byte)k }) == null) { + // j++; + // //杩炵画涓ゆ璇诲彇涓嶅埌鏁版嵁鍒欒烦鍑鸿寰幆 + // if (j == 2 && k == 2) + // break; + // } + // } + // } catch (Exception ex) { + // Console.WriteLine ("Cinfig Read Device Loop Info " + ex.Message); + // } + //}); } #endregion @@ -604,7 +610,7 @@ //var currentRegionIdBytes = Utlis.IntToByteArray (UserConfig.Instance.CurrentRegion.RegionID); - byte [] RegionIDBytes = CommonPage.MyEncodingGB2312.GetBytes (UserConfig.Instance.CurrentRegion.RegionID.ToString()); + byte [] RegionIDBytes = CommonPage.MyEncodingGB2312.GetBytes (UserConfig.Instance.CurrentRegion.Id.ToString ()); var currentRegionIdBytes = new byte [4]; Array.Copy (RegionIDBytes, 0, currentRegionIdBytes, 0, 4 < RegionIDBytes.Length ? 4 : RegionIDBytes.Length); @@ -614,7 +620,7 @@ gatewayDeicve.Remote_GroupName = MainPage.LoginUser.AccountString;//UserConfig.Instance.CurrentRegion.RegionName; gatewayDeicve.Remote_ProjectName = gatewayDeicve.MAC.Replace (".", "");//UserConfig.Instance.CurrentRegion.RegionName; gatewayDeicve.Remote_UserName = "Admin"; - gatewayDeicve.Remote_Password = "c" + MainPage.LoginUser.MasterID; + gatewayDeicve.Remote_Password = "c" + MainPage.LoginUser.ID; byte [] ggn = new byte [20]; byte [] b1 = CommonPage.MyEncodingGB2312.GetBytes (gatewayDeicve.Remote_GroupName); gatewayDeicve.Remote_GroupName = CommonPage.MyEncodingGB2312.GetString (b1); @@ -689,45 +695,7 @@ return; } } - Application.RunOnMainThread (() => { - MainPage.Loading.Start ("Gateway setting succeeded锛宒ata up.Please wait..."); - }); - IO.FileUtils.SaveEquipmentMessage (gatewayDeicve); - var gatewayMAC = gatewayDeicve.MAC.Replace (".", ""); - var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (new EditMACByHomeId { RegionID = UserConfig.Instance.CurrentRegion.RegionID, MAC = gatewayMAC, IsReBind = true }); - var respone = MainPage.RequestHttps ("EditMACByHomeId", requestJson); - if (respone.StateCode != "SUCCESS") { - Application.RunOnMainThread (() => { - new Alert ("", "Communication abnormality,gateway failed to bind residence!", Language.StringByID (R.MyInternationalizationString.Close)).Show (); - if (MainPage.LoginUser.AccountString == "464027401@qq.com") { - new Alert (respone.StateCode, respone.ErrorInfo, Language.StringByID (R.MyInternationalizationString.Close)).Show (); - } - }); - return; - } - var gatewayListObj = new GatewayListObj (); - var gatewayListJson = Newtonsoft.Json.JsonConvert.SerializeObject (gatewayListObj); - var gatewayListRevertObj = MainPage.RequestHttps ("GatewayList", gatewayListJson); - if (gatewayListRevertObj.StateCode == "SUCCESS") { - var responseGatewayDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<List<GatewayRes>> (gatewayListRevertObj.ResponseData.ToString ()); - if (responseGatewayDataObj.Count > 0) { - UserConfig.Instance.GatewayList.Clear (); - UserConfig.Instance.GatewayList.AddRange (responseGatewayDataObj); - UserConfig.Instance.GatewayMAC = gatewayDeicve.MAC; - UserConfig.Instance.SaveUserConfig (); - MainPage.LoginUser.LastTime = DateTime.Now; - Application.RunOnMainThread (() => { - UserMiddle.Init (true); - }); - } else { - Application.RunOnMainThread (() => { - new Alert ("", "Communication abnormality,gateway failed to bind residence.Please try again.", Language.StringByID (R.MyInternationalizationString.Close)).Show (); - if (MainPage.LoginUser.AccountString == "464027401@qq.com") { - new Alert ("22:" + respone.StateCode, respone.ErrorInfo, Language.StringByID (R.MyInternationalizationString.Close)).Show (); - } - }); - } - } + BindGateways (); } } catch (Exception ex) { Console.WriteLine (ex.Message); @@ -744,6 +712,8 @@ }); //Room.InitAllRoom (); } + + /// <summary> /// 杩滅▼閰嶇疆 HDL MQTT妯″紡 @@ -763,7 +733,7 @@ gatewayDeicve.Remote_GroupName = MainPage.LoginUser.AccountString;//UserConfig.Instance.CurrentRegion.RegionName; gatewayDeicve.Remote_ProjectName = gatewayDeicve.MAC.Replace (".", "");//UserConfig.Instance.CurrentRegion.RegionName; gatewayDeicve.Remote_UserName = "Admin"; - gatewayDeicve.Remote_Password = "c" + MainPage.LoginUser.MasterID; + gatewayDeicve.Remote_Password = "c" + MainPage.LoginUser.ID; //gatewayDeicve.Remote_Password = "85521566"; byte [] ggn = new byte [20]; byte [] b1 = CommonPage.MyEncodingGB2312.GetBytes (gatewayDeicve.Remote_GroupName); @@ -803,7 +773,7 @@ //3.鍐欓厤缃垚鍔熷悗涓嬩竴姝ユ搷浣� GatewaySettingSucceeded (); } - + @@ -828,15 +798,15 @@ /// </summary> /// <param name="adminBytes"></param> /// <returns></returns> - bool SetGateWayAdminInfo (byte[] adminBytes) { + bool SetGateWayAdminInfo (byte [] adminBytes) { byte [] name = CommonPage.MyEncodingGB2312.GetBytes (MainPage.LoginUser.AccountString); byte [] backBytes; if (adminBytes != null && adminBytes.Length >= 73) {//杩斿洖鏁版嵁姝e父,鍙慨鏀硅处鍙蜂俊鎭� Array.Copy (name, 0, adminBytes, 0, 36 < name.Length ? 36 : name.Length); backBytes = Control.ControlBytesSendHasReturn (Command.SetGateWayAdminInfo, gatewayDeicve.SubnetID, gatewayDeicve.DeviceID, adminBytes); - + } else { - byte [] currentRegionIdBytes = CommonPage.MyEncodingGB2312.GetBytes (UserConfig.Instance.CurrentRegion.RegionID.ToString()); + byte [] currentRegionIdBytes = CommonPage.MyEncodingGB2312.GetBytes (UserConfig.Instance.CurrentRegion.Id.ToString ()); //byte [] currentRegionIdBytes = CommonPage.MyEncodingGB2312.GetBytes (UserConfig.Instance.CurrentRegion.RegionID); //var currentRegionIdBytes = Utlis.IntToByteArray (UserConfig.Instance.CurrentRegion.RegionID); adminBytes = new byte [73]; @@ -844,7 +814,7 @@ Array.Copy (name, 0, adminBytes, 0, 36 < name.Length ? 36 : name.Length); Array.Copy (currentRegionIdBytes, 0, adminBytes, 37, 36 < currentRegionIdBytes.Length ? 36 : currentRegionIdBytes.Length); backBytes = Control.ControlBytesSendHasReturn (Command.SetGateWayAdminInfo, gatewayDeicve.SubnetID, gatewayDeicve.DeviceID, adminBytes); - + } return CheckIsSuccessfulWithBytes (backBytes); } @@ -858,7 +828,7 @@ { byte [] name = CommonPage.MyEncodingGB2312.GetBytes (MainPage.LoginUser.AccountString); //byte [] currentRegionIdBytes = CommonPage.MyEncodingGB2312.GetBytes (UserConfig.Instance.CurrentRegion.RegionID); - byte [] currentRegionIdBytes = CommonPage.MyEncodingGB2312.GetBytes (UserConfig.Instance.CurrentRegion.RegionID.ToString()); + byte [] currentRegionIdBytes = CommonPage.MyEncodingGB2312.GetBytes (UserConfig.Instance.CurrentRegion.Id.ToString ()); //var currentRegionIdBytes = Utlis.IntToByteArray (UserConfig.Instance.CurrentRegion.RegionID); byte [] adminBytes = new byte [73]; adminBytes [36] = 1;//浣忓畢鏍囧織浣� @@ -1037,9 +1007,9 @@ if (gatewayDeicve.Type == DeviceType.OnePortMqttFR) { //var currentRegionIdBytes = Utlis.IntToByteArray (UserConfig.Instance.CurrentRegion.RegionID); //byte [] currentRegionIdBytes = CommonPage.MyEncodingGB2312.GetBytes (UserConfig.Instance.CurrentRegion.RegionID); - byte [] currentRegionIdBytes = CommonPage.MyEncodingGB2312.GetBytes (UserConfig.Instance.CurrentRegion.RegionID.ToString()); - byte [] sendBytes = new byte [32]; - Array.Copy (currentRegionIdBytes, 0, sendBytes, 2, 32 < currentRegionIdBytes.Length ? 32 : currentRegionIdBytes.Length); + byte [] currentRegionIdBytes = CommonPage.MyEncodingGB2312.GetBytes (UserConfig.Instance.CurrentRegion.Id.ToString ()); + byte [] sendBytes = new byte [36]; + Array.Copy (currentRegionIdBytes, 0, sendBytes, 2, 36 < currentRegionIdBytes.Length ? 36 : currentRegionIdBytes.Length); //var currentRegionIdBytes = Utlis.IntToByteArray (UserConfig.Instance.CurrentRegion.RegionID); var bindReginIdStatus = Control.ControlBytesSendHasReturn (Command.Write_APP_Data_STORE_1D5E_CMD, gatewayDeicve.SubnetID, gatewayDeicve.DeviceID, sendBytes); @@ -1057,28 +1027,81 @@ } } + BindGateways (); + + + } + + /// <summary> + /// Gateway setting succeeded锛宒ata up.Please wait... + /// </summary> + void BindGateways (){ Application.RunOnMainThread (() => { MainPage.Loading.Start ("Gateway setting succeeded锛宒ata up.Please wait..."); }); IO.FileUtils.SaveEquipmentMessage (gatewayDeicve); var gatewayMAC = gatewayDeicve.MAC.Replace (".", ""); - var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (new EditMACByHomeId { RegionID = UserConfig.Instance.CurrentRegion.RegionID, MAC = gatewayMAC, IsReBind = true }); - var respone = MainPage.RequestHttps ("EditMACByHomeId", requestJson); - if (respone.StateCode != "SUCCESS") { - Application.RunOnMainThread (() => { - new Alert ("", "Communication abnormality,gateway failed to bind residence!", Language.StringByID (R.MyInternationalizationString.Close)).Show (); - if (MainPage.LoginUser.AccountString == "464027401@qq.com") { - new Alert (respone.StateCode, respone.ErrorInfo, Language.StringByID (R.MyInternationalizationString.Close)).Show (); - } - }); - return; + var oldMac = ""; + if (UserConfig.Instance.CheckHomeGateways () && !string.IsNullOrEmpty (UserConfig.Instance.CurrentRegion.HomeGateways [0].GatewayUniqueId)) { + //淇敼MAC鎺ュ彛 + oldMac = UserConfig.Instance.CurrentRegion.HomeGateways [0].GatewayUniqueId; + var mUpdateMacObj = new UpdateMacObj () { + LoginAccessToken = MainPage.LoginUser.LoginTokenString, + HomeId = UserConfig.Instance.CurrentRegion.Id, + NewMac = gatewayMAC, + OldMac = oldMac + }; + var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (mUpdateMacObj); + + //var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (new EditMACByHomeId { RegionID = UserConfig.Instance.CurrentRegion.Id, MAC = gatewayMAC, IsReBind = true }); + var respone = MainPage.RequestHttps (API.UpdateMac, requestJson); + if (respone.StateCode.ToUpper () != "SUCCESS") { + Application.RunOnMainThread (() => { + new Alert ("", "Communication abnormality,gateway failed to bind residence!", Language.StringByID (R.MyInternationalizationString.Close)).Show (); + if (MainPage.LoginUser.AccountString == "464027401@qq.com") { + new Alert (respone.StateCode, respone.ErrorInfo, Language.StringByID (R.MyInternationalizationString.Close)).Show (); + } + }); + return; + } + GetAllBindGatewarysPagger (); + } else { + //璧版柊缁戝畾鎺ュ彛 + var mBindMacObj = new BindGatewayToHomeObj () { + LoginAccessToken = MainPage.LoginUser.LoginTokenString, + HomeId = UserConfig.Instance.CurrentRegion.Id, + + }; + mBindMacObj.BindGateways.Add (gatewayMAC); + + var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (mBindMacObj); + + //var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (new EditMACByHomeId { RegionID = UserConfig.Instance.CurrentRegion.Id, MAC = gatewayMAC, IsReBind = true }); + var respone = MainPage.RequestHttps (API.BindGatewayToHome, requestJson); + if (respone.StateCode.ToUpper () != "SUCCESS" && respone.StateCode != "BindGatewaysExists") { + Application.RunOnMainThread (() => { + new Alert ("", "Communication abnormality,gateway failed to bind residence!", Language.StringByID (R.MyInternationalizationString.Close)).Show (); + if (MainPage.LoginUser.AccountString == "464027401@qq.com") { + new Alert (respone.StateCode, respone.ErrorInfo, Language.StringByID (R.MyInternationalizationString.Close)).Show (); + } + }); + return; + } + GetAllBindGatewarysPagger (); + } - var gatewayListObj = new GatewayListObj (); + + } + + void GetAllBindGatewarysPagger () { + var gatewayListObj = new GetAllBindGatewarysPaggerObj (); + gatewayListObj.ReqDto.LoginAccessToken = MainPage.LoginUser.LoginTokenString; var gatewayListJson = Newtonsoft.Json.JsonConvert.SerializeObject (gatewayListObj); - var gatewayListRevertObj = MainPage.RequestHttps ("GatewayList", gatewayListJson); - if (gatewayListRevertObj.StateCode == "SUCCESS") { - var responseGatewayDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<List<GatewayRes>> (gatewayListRevertObj.ResponseData.ToString ()); + var gatewayListRevertObj = MainPage.RequestHttps (API.GetAllBindGatewarysPagger, gatewayListJson); + if (gatewayListRevertObj.StateCode.ToUpper () == "SUCCESS") { + var mGateRes = Newtonsoft.Json.JsonConvert.DeserializeObject<AllBindGatewarysPaggerRes> (gatewayListRevertObj.ResponseData.ToString ()); + var responseGatewayDataObj = mGateRes.PageData; if (responseGatewayDataObj.Count > 0) { UserConfig.Instance.GatewayList.Clear (); UserConfig.Instance.GatewayList.AddRange (responseGatewayDataObj); @@ -1092,11 +1115,37 @@ Application.RunOnMainThread (() => { new Alert ("", "Communication abnormality,gateway failed to bind residence.Please try again.", Language.StringByID (R.MyInternationalizationString.Close)).Show (); if (MainPage.LoginUser.AccountString == "464027401@qq.com") { - new Alert ("22:" + respone.StateCode, respone.ErrorInfo, Language.StringByID (R.MyInternationalizationString.Close)).Show (); + new Alert ("22:" + gatewayListRevertObj.StateCode, gatewayListRevertObj.ErrorInfo, Language.StringByID (R.MyInternationalizationString.Close)).Show (); } }); } + } else { + + ShowGetAllBindGatewarysPaggerErrorInfo (gatewayListRevertObj.StateCode); } } + + /// <summary> + /// + /// </summary> + /// <param name="stateCodeStr"></param> + void ShowGetAllBindGatewarysPaggerErrorInfo (string stateCodeStr) + { + string mes = ""; + //2020-01-06 寰呰ˉ鍏� + if (stateCodeStr == ErrorCode.NetworkError) { + mes = ErrorCode.NetworkError; + } else { + mes = ErrorCode.OperationFailed + ErrorCode.Reason + stateCodeStr; + + } + if (!string.IsNullOrEmpty (mes)) { + Application.RunOnMainThread (() => { + new Alert ("", mes, Language.StringByID (R.MyInternationalizationString.Close)).Show (); + }); + } + + + } } } \ No newline at end of file -- Gitblit v1.8.0