From 9299395475a27a1da2d7e5d3b61c9346738b3153 Mon Sep 17 00:00:00 2001 From: wxr <464027401@qq.com> Date: 星期三, 22 六月 2022 14:42:04 +0800 Subject: [PATCH] 备份 --- Crabtree/SmartHome/UI/SimpleControl/Phone/Register/MigrationServer.cs | 293 +++++++++++++++++++++++++++++++++++++++------------------- 1 files changed, 197 insertions(+), 96 deletions(-) diff --git a/Crabtree/SmartHome/UI/SimpleControl/Phone/Register/MigrationServer.cs b/Crabtree/SmartHome/UI/SimpleControl/Phone/Register/MigrationServer.cs index ae319a3..19d329c 100644 --- a/Crabtree/SmartHome/UI/SimpleControl/Phone/Register/MigrationServer.cs +++ b/Crabtree/SmartHome/UI/SimpleControl/Phone/Register/MigrationServer.cs @@ -6,6 +6,11 @@ namespace Shared.SimpleControl.Phone { + public class DeviceSecret + { + public string deviceSecret; + } + public class MigrationServer { /// <summary> @@ -13,8 +18,8 @@ /// </summary> private bool finish = false; - //private string SeverAddr = "https://bahrain-gateway.hdlcontrol.com"; - private string SeverAddr = "https://test-gz.hdlcontrol.com"; + private string SeverAddr = "https://bahrain-gateway.hdlcontrol.com"; + //private string SeverAddr = "https://test-gz.hdlcontrol.com"; FrameLayout contentView; @@ -157,6 +162,8 @@ } #if DEBUG + + //SetGateWayMqttUrlAddress (1, 0); //WriteSecretKey (1, 0, new byte [] {1,1,2,3,2,3,4,5,2,3,5,6 }); //CheckGateway (); @@ -331,7 +338,8 @@ var requestJson = HttpUtil.GetSignRequestJson (dic); //var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (dic); - var revertObj = MainPage.RequestHttps ("/smart-open/third/device/authByMac", requestJson, false, false, SeverAddr); + var revertObj = MainPage.RequestHttps ("/home-wisdom/program/device/secret/applyDeviceSecret", requestJson, false, false, SeverAddr); + //var revertObj = MainPage.RequestHttps ("/smart-open/third/device/authByMac", requestJson, false, false, SeverAddr); if (revertObj.code == "0") { return revertObj.data.ToString (); } else { } @@ -342,16 +350,15 @@ /// 杩佺Щ澶囦唤 /// </summary> /// <param name="newHomeId"></param> - /// <param name="newUserId"></param> /// <returns></returns> - private string moveFolder2New (string newHomeId,string newUserId) + private string moveFolder2New (string newHomeId) { Dictionary<string, object> dic = new Dictionary<string, object> (); dic.Add ("backupDataType", "HDL_ON"); dic.Add ("homeId",newHomeId); dic.Add ("userId",newUserId); dic.Add ("backupClassify", "USER_DEFINED_BACKUP"); - dic.Add ("folderName", "杩佺Щ澶囦唤" + DateTime.Now.ToString ()); + dic.Add ("folderName", "MigrateBackup" + DateTime.Now.ToString ()); dic.Add ("tenantId", "202106"); var requestJson = HttpUtil.GetSignRequestJson (dic); var revertObj = MainPage.RequestHttps ("/home-wisdom/data/move/folder/save", requestJson, false, false, SeverAddr); @@ -362,15 +369,11 @@ return resultObj.id; } } - Application.RunOnMainThread (() => { - btnTipTitle.Text = "澶囦唤杩佺Щ澶辫触."; - btnTipTitle.TextColor = SkinStyle.Current.DelColor; - }); return ""; } - private string MoveFile2New(string newHomeId, string newUserId,string backupId) + private string MoveFile2New(string newHomeId,string backupId) { Dictionary<string, object> dic = new Dictionary<string, object> (); dic.Add ("backupId", backupId);//1534728347497418754//1534728860322385922 @@ -397,8 +400,6 @@ if(fileObjs.Count > 9) { if (!dic.ContainsKey ("list")) { dic.Add ("list", fileObjs); - //} else { - // dic ["list"] = fileObjs; } var json = HttpUtil.GetSignRequestJson (dic); var revertObj_foreach = MainPage.RequestHttps ("/home-wisdom/data/move/file/save", json, false, false, SeverAddr); @@ -425,25 +426,87 @@ return ""; } /// <summary> - /// 鏍囪2.0骞冲彴鏁版嵁 + /// 鑾峰彇瀹氭椂鍣ㄥ垪琛� + /// </summary> + /// <param name="newHomeId"></param> + private List<BackupFileObj> GetTimer (string newHomeId) + { + var requestObj = new Timer () { RegionID = UserConfig.Instance.CurrentRegion.RegionID }; + var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj); + var revertObj = MainPage.RequestHttps ("GetTimerList", requestJson); + if (revertObj.StateCode == "SUCCESS") { + var timers = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Timer>> (revertObj.ResponseData.ToString ()); + if(timers.Count > 0) { + List<BackupFileObj> backups = new List<BackupFileObj> (); + foreach (var timer in timers) { + var timerContent = System.Text.Encoding.UTF8.GetBytes (Newtonsoft.Json.JsonConvert.SerializeObject (timer)); + BackupFileObj backupFileObj = new BackupFileObj () { + fileName = timer.TimerName, + content = timerContent + }; + backups.Add (backupFileObj); + } + return backups; + } + } else { + return null; + } + return new List<BackupFileObj> (); + } + + /// <summary> + /// 瀹氭椂鍣ㄥ浠� /// </summary> /// <returns></returns> - private bool Mark(string newHomeId) + private string BackupSchedule (string newHomeId, List<BackupFileObj> backups) { Dictionary<string, object> dic = new Dictionary<string, object> (); + dic.Add ("backupDataType", "HDL_ON"); dic.Add ("homeId", newHomeId); - dic.Add ("mark", false); + dic.Add ("userId", newUserId); + dic.Add ("backupClassify", "CUSTOM_PROJECT_BACKUP"); + dic.Add ("folderName", "ScheduleBackup" + DateTime.Now.ToString ()); + dic.Add ("tenantId", "202106"); var requestJson = HttpUtil.GetSignRequestJson (dic); - var revertObj = MainPage.RequestHttps ("/home-wisdom/app/home/markVoice", requestJson, false, false, SeverAddr); + var revertObj = MainPage.RequestHttps ("/home-wisdom/data/move/folder/save", requestJson, false, false, SeverAddr); if (revertObj != null) { - if(revertObj.code == "0") { - if(revertObj.data.ToString() == "true") { - return true; - } + if (revertObj.code == "0") { + var resultObj = Newtonsoft.Json.JsonConvert.DeserializeObject<FolderObj> (revertObj.data.ToString ()); + var ddd = MoveTimerFileData (newHomeId,resultObj.id, backups); + return ddd; } } - return false; + return ""; } + + /// <summary> + /// 淇濆瓨瀹氭椂鍣ㄦ暟鎹� + /// </summary> + /// <param name="newHomeId"></param> + /// <param name="backupId"></param> + /// <param name="fileObjs"></param> + /// <returns></returns> + private string MoveTimerFileData (string newHomeId, string backupId, List<BackupFileObj> fileObjs) + { + Dictionary<string, object> dic = new Dictionary<string, object> (); + dic.Add ("backupId", backupId); + dic.Add ("homeId", newHomeId); + dic.Add ("userId", newUserId); + dic.Add ("backupClassify", "CUSTOM_PROJECT_BACKUP"); + dic.Add ("tenantId", "202106"); + dic.Add ("list", fileObjs); + + var requestJson = HttpUtil.GetSignRequestJson (dic); + var revertObj = MainPage.RequestHttps ("/home-wisdom/data/move/file/save", requestJson, false, false, SeverAddr); + if (revertObj != null) { + if (revertObj.code == "0") { + return "true"; + } + } + return ""; + } + + #endregion @@ -470,6 +533,8 @@ GatewayBase common = null; string gateWayString = ""; if (gateWayList.Count > 0) { + + foreach (var gatewayFileName in gateWayList) { var tempStrings = gatewayFileName.Split ('_'); if (tempStrings [1].ToString () == DeviceType.OnePortBus.ToString () || tempStrings [1].ToString () == DeviceType.RCU.ToString () || @@ -498,7 +563,7 @@ int result = -99; - if (visionString.Contains( "Ind_V03.01U_2021/07/12")) {//FW_MCIP-L1_RF.01_V03.01_210712_STM32F107VCT6_U2_india_beta") { + if (visionString.Contains("Ind_V03.01U_2021/07/12")) { Application.RunOnMainThread (() => { btnTipMsg.Text = "Gateway firmware has been upgraded, initializing gateway."; btnTipMsg.TextColor = SkinStyle.Current.TextColor; @@ -520,8 +585,6 @@ arrayTemp [1] = Convert.ToByte ((upgradeData.Count & 0xFF0000) >> 16); arrayTemp [2] = Convert.ToByte ((upgradeData.Count & 0xFF00) >> 8); arrayTemp [3] = Convert.ToByte (upgradeData.Count & 0xFF); - //涓㈠け娆℃暟 - int lostCount = 0; while (true) { var ub = MainPage.GatewayStatus.Split ("_"); @@ -550,31 +613,6 @@ }); break; } - - - //if (result == -1) { - // if (lostCount > 3) { - // Application.RunOnMainThread (() => { - // btnTipMsg.Text = "缃戝叧鍗囩骇澶辫触锛岃閲嶈瘯."; - // loading.Hide (); - // }); - // return; - // } - //} else if (result == -2) { - // if (lostCount > 3) { - // Application.RunOnMainThread (() => { - // btnTipMsg.Text = "缃戝叧鏃犲搷搴斻��"; - // loading.Hide (); - // }); - // return; - // } - //} else if (result == 999999) { - // Application.RunOnMainThread (() => { - // btnTipMsg.Text = "缃戝叧鍗囩骇鎴愬姛.姝e湪鍒濆鍖栫綉鍏�"; - // btnTipMsg.TextColor = SkinStyle.Current.TextColor; - // }); - // break; - //} else { if (upgradeData.Count >= result) { var listPack = upgradeData [result-1];// @@ -608,14 +646,19 @@ initialBytes [11] = 0x00; //鍒濆鍖栫綉鍏冲懡浠ゅ彂閫� InitializationGateway (common.SubnetID, common.DeviceID, initialBytes); + int initiaIndex = 0; while (true) { if (MainPage.GatewayStatus != "Initialization_complete") { System.Threading.Thread.Sleep (100); - } else { + } else if (initiaIndex == 0) { Application.RunOnMainThread (() => { btnTipMsg.Text = "Successfully initialized the gateway. Opening the gateway remote configuration."; btnTipMsg.TextColor = SkinStyle.Current.TextColor; }); + break; + } + initiaIndex++; + if(initiaIndex > 200) { break; } } @@ -630,6 +673,7 @@ Application.RunOnMainThread (() => { btnTipMsg.Text = "Gateway remote opening failed. Please try again."; btnTipMsg.TextColor = SkinStyle.Current.DelColor; + loading.Hide (); }); return; } @@ -663,15 +707,9 @@ btnTipMsg.TextColor = SkinStyle.Current.TextColor; } + //鍐欏叆homeId - var homeIdSendBytes = new byte [73]; - var homeIdByte = new byte [36]; - var homeStrs = newHomeId;// UserConfig.Instance.CurrentRegion.RegionID.ToString ();//闇�瑕佷娇鐢ㄦ柊骞冲彴鐢熸垚鐨刪omeId - for (int i = 0; i < UserConfig.Instance.CurrentRegion.RegionID.ToString ().Length; i++) { - homeIdByte [i] = Convert.ToByte (homeStrs [i].ToString (), 16); - } - Array.Copy (homeIdByte, homeIdSendBytes, homeIdByte.Length); - var writeHomeIdResult = WriteHomeId (common.SubnetID, common.DeviceID, homeIdSendBytes); + var writeHomeIdResult = SetGateWayAdminInfo (common.SubnetID, newHomeId); if (writeHomeIdResult) { Application.RunOnMainThread (() => { btnTipMsg.Text = "The gateway home information is configured successfully, and the Internet access key is being obtained."; @@ -681,6 +719,8 @@ Application.RunOnMainThread (() => { btnTipMsg.Text = "Gateway home information configuration failed. Please try again."; btnTipMsg.TextColor = SkinStyle.Current.DelColor; + loading.Hide (); + return; }); } //鑾峰彇涓婄綉绉橀挜 @@ -691,13 +731,17 @@ btnTipMsg.Text = "The Internet access key was obtained successfully. It is being written."; btnTipMsg.TextColor = SkinStyle.Current.TextColor; }); - var secretkeySendBytes = new byte [netKet.Length + 1]; - var secretkeyByte = new byte [netKet.Length]; - for (int i = 0; i < netKet.Length; i++) { - secretkeyByte [i] = Convert.ToByte (netKet [i].ToString (), 16); - } - Array.Copy (secretkeyByte, 0, secretkeySendBytes, 1, secretkeyByte.Length); + var deviceSecret = Newtonsoft.Json.JsonConvert.DeserializeObject<DeviceSecret> (netKet); + var secretkeyByte = Encoding.UTF8.GetBytes (deviceSecret.deviceSecret); + var secretkeySendBytes = new byte [secretkeyByte.Length + 1]; secretkeySendBytes [0] = 1; + Array.Copy (secretkeyByte, 0, secretkeySendBytes, 1, secretkeyByte.Length); + //for (int i = 0; i < netKet.Length; i++) { + // secretkeyByte [i] = Convert.ToByte (netKet [i].ToString (), 16); + //} + //Array.Copy (secretkeyByte, 0, secretkeySendBytes, 1, secretkeyByte.Length); + //secretkeySendBytes [0] = 1; + System.Threading.Thread.Sleep (10000); //鍐欏叆涓婄綉绉橀挜 var writeSecretKeyResult = WriteSecretKey (common.SubnetID, common.DeviceID, secretkeySendBytes); if (writeSecretKeyResult) { @@ -708,6 +752,7 @@ Application.RunOnMainThread (() => { btnTipMsg.Text = "Failed to write Internet secret key. Please try again."; btnTipMsg.TextColor = SkinStyle.Current.DelColor; + loading.Hide (); return; }); } @@ -715,6 +760,7 @@ Application.RunOnMainThread (() => { btnTipMsg.Text = "Failed to obtain the Internet secret key. Please try again."; btnTipMsg.TextColor = SkinStyle.Current.DelColor; + return; }); } //鍐欏叆mqtt鍩熷悕淇℃伅 @@ -737,10 +783,36 @@ return; } //鍒涘缓杩佺Щ澶囦唤鏂囦欢澶� - var backId = moveFolder2New (newHomeId, newUserId); + var backId = moveFolder2New (newHomeId); //杩佺Щ澶囦唤鏂囦欢 - var moveFileResult = MoveFile2New (newHomeId, newUserId, backId); + var moveFileResult = MoveFile2New (newHomeId, backId); if (moveFileResult == "true") { + Application.RunOnMainThread (() => { + btnTipMsg.Text = "Migration backup succeeded, migrating Schedule data."; + btnTipMsg.TextColor = SkinStyle.Current.TextColor; + }); + //杩佺Щ瀹氭椂鍣� + var timerList = GetTimer (newHomeId); + if (timerList == null) { + Application.RunOnMainThread (() => { + btnTipMsg.Text = "Schedule migration failed. Please try again."; + btnTipMsg.TextColor = SkinStyle.Current.DelColor; + loading.Hide (); + return; + }); + } else { + if (timerList.Count > 0) { + var backupTimerResult = BackupSchedule (newHomeId, timerList); + if (string.IsNullOrEmpty (backupTimerResult)) { + btnTipMsg.Text = "Schedule migration failed.. Please try again."; + btnTipMsg.TextColor = SkinStyle.Current.DelColor; + loading.Hide (); + return; + } + } + } + + //鏍囪娴佺▼瀹屾垚 //var markResult = Mark (newHomeId); //if (markResult) { @@ -790,7 +862,8 @@ { byte [] buffer = new byte [1024]; List<List<byte>> upgradeData = new List<List<byte>> (); - System.IO.Stream stream = Application.Activity.Assets.Open ("FW_MCIP-L1_RF.01_V03.01_210712_STM32F107VCT6_U2_india_beta.bin"); + System.IO.Stream stream = Application.Activity.Assets.Open ("india_beta.bin"); + //System.IO.Stream stream = Application.Activity.Assets.Open ("india_test.bin"); int length = 0; try { while ((length = stream.Read (buffer, 0, buffer.Length)) != 0) { @@ -854,38 +927,37 @@ var sendByte = new byte [67]; sendByte [0] = 4; var result = Control.ControlBytesSendHasReturn (Command.SetGateWayModelInfo, subnetId, deviceId, sendByte); - if (result == null) { - - } else { - if(result.Length>0 && result[0] == 248) { - return true; - } + if (result != null) { + return true; } return false; } - /// <summary> - /// 鍐欏叆homeId - /// </summary> - /// <param name="subnetId"></param> - /// <param name="deviceId"></param> - /// <param name="sendByets"></param> - private bool WriteHomeId (byte subnetId, byte deviceId, byte [] sendByets) - { - var result = Control.ControlBytesSendHasReturn (Command.WriteHomeId, subnetId, deviceId, sendByets); - if (result == null) - return false; - if (result.Length == 3) { - if (result [2] == 0xF8) { - return true; - } - } else if (result.Length == 1) { - if (result [0] == 0xF8) { - return true; - } - } - return false; - } + ///// <summary> + ///// 鍐欏叆homeId + ///// </summary> + ///// <param name="subnetId"></param> + ///// <param name="deviceId"></param> + ///// <param name="sendByets"></param> + //private bool WriteHomeId (byte subnetId, byte deviceId, byte [] sendByets) + //{ + // //var result = Control.ControlBytesSendHasReturn (Command.WriteHomeId, subnetId, deviceId, sendByets); + // //if (result == null) + // // return false; + // //if (result.Length == 3) { + // // if (result [2] == 0xF8) { + // // return true; + // // } + // //} else if (result.Length == 1) { + // // if (result [0] == 0xF8) { + // // return true; + // // } + // //} + // //return false; + + // return SetGateWayAdminInfo (subnetId, homeId); + + //} /// <summary> @@ -956,5 +1028,34 @@ //return CheckIsSuccessfulWithBytes (backBytes, "Failed to modify gateway remote address!"); } + /// <summary> + /// 淇敼绠$悊鍛樹俊鎭� + /// </summary> + /// <param name="adminBytes"></param> + /// <returns></returns> + private bool SetGateWayAdminInfo (byte subnetId,string homeId) + { + //byte [] name = CommonPage.MyEncodingGB2312.GetBytes (MainPage.LoginUser.AccountString); + byte [] currentRegionIdBytes = CommonPage.MyEncodingGB2312.GetBytes (homeId); + byte [] adminBytes = new byte [73]; + adminBytes [36] = 1;//浣忓畢鏍囧織浣� + Array.Copy (currentRegionIdBytes, 0, adminBytes, 37, 36 < currentRegionIdBytes.Length ? 36 : currentRegionIdBytes.Length); + + byte [] result = Control.ControlBytesSendHasReturn (Command.WriteHomeId, subnetId, 0, adminBytes); + if (result == null) + return false; + if (result.Length == 3) { + if (result [2] == 0xF8) { + return true; + } + } else if (result.Length == 1) { + if (result [0] == 0xF8) { + return true; + } + } + return false; + } + } + } -- Gitblit v1.8.0