| | |
| | | { |
| | | public class GuideSettingGateway : FrameLayout |
| | | { |
| | | |
| | | static byte TYPEStandardMQTT = 5; |
| | | static byte TYPEHdlMQTT = 4; |
| | | static GuideSettingGateway curView; |
| | |
| | | static Loading myLoading; |
| | | bool isReBind = false; |
| | | static List<Common> addedCommon; |
| | | static bool needRefresh; |
| | | public GuideSettingGateway (GatewayBase gd) |
| | | { |
| | | gatewayDeicve = gd as GatewayBase; |
| | |
| | | myLoading.Hide (); |
| | | btnCloseLoading.RemoveFromParent (); |
| | | WirelessConfig (new byte [] { 1 });//close |
| | | if (needRefresh) { |
| | | needRefresh = false; |
| | | SearchDeviceList (); |
| | | } |
| | | }); |
| | | }; |
| | | |
| | |
| | | bottomView.AddChidren (btnAssignRoom); |
| | | btnAssignRoom.MouseUpEventHandler += (sender, e) => { |
| | | //bodyView.RemoveAll (); |
| | | |
| | | |
| | | btnAssignRoomAction (); |
| | | }; |
| | | SearchDeviceList (); |
| | |
| | | void btnAssignRoomAction () |
| | | { |
| | | if (gatewayDeicve.Type == DeviceType.OnePortMqttFR) { |
| | | |
| | | Console.WriteLine ("Assign OnePortMqttFR,HDL MQTT"); |
| | | |
| | | Utlis.WriteLine ("Assign OnePortMqttFR,HDL MQTT"); |
| | | //RemoteSetting (); |
| | | RemoteSettingWithHDLMQTT (); |
| | | } else { |
| | | Console.WriteLine ("Assign OnePortWirelessFR"); |
| | | Utlis.WriteLine ("Assign OnePortWirelessFR"); |
| | | RemoteSettingWithOldDevice (); |
| | | //RemoteSettingWithMQTT (); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// 开关无线配置 |
| | |
| | | if (common.Type == DeviceType.MusicModel) |
| | | continue; |
| | | if (common.isMixBox) { |
| | | Console.WriteLine ("IsMixBox"); |
| | | Utlis.WriteLine ("IsMixBox"); |
| | | continue; |
| | | } |
| | | countDevcie++; |
| | |
| | | } |
| | | if (Control.ControlBytesSendHasReturn (Command.ReadDeviceLoopInfo, common.SubnetID, common.DeviceID, new byte [] { bigClass, minClass, (byte)k }) == null) { |
| | | j++; |
| | | //连续两次读取不到数据则跳出该循环 |
| | | //连续两次读取不到数据则跳出该循环,代表设备离线2020-01-11 |
| | | if (j == 2 && k == 2) |
| | | break; |
| | | } else { |
| | |
| | | this.AddChidren (myLoading); |
| | | //myLoading.Start ("点击屏幕关闭配频模式"); |
| | | myLoading.Start ("Searching, Please touch the here to exit the searching mode."); |
| | | //myLoading.Start ("Waiting for new device, Please touch the here to exit the waiting mode."); |
| | | |
| | | this.AddChidren (btnCloseLoading); |
| | | } |
| | | }); |
| | |
| | | btnDelDevice.Parent.RemoveFromParent (); |
| | | }); |
| | | } catch (Exception ex) { |
| | | Console.WriteLine (ex.Message); |
| | | Utlis.WriteLine (ex.Message); |
| | | } finally { |
| | | Application.RunOnMainThread (() => { |
| | | MainPage.Loading.Hide (); |
| | |
| | | //} |
| | | |
| | | 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) { |
| | | // Utlis.WriteLine ("Cinfig Read Device Loop Info " + ex.Message); |
| | | // } |
| | | //}); |
| | | } |
| | | |
| | | #endregion |
| | |
| | | //这里搜索设备,直到完成就退出 |
| | | readDevice (); |
| | | } catch (Exception ex) { |
| | | Console.WriteLine (ex.Message); |
| | | Utlis.WriteLine (ex.Message); |
| | | } |
| | | Application.RunOnMainThread (action); |
| | | }) { IsBackground = true }.Start (); |
| | | } |
| | | |
| | | ///// <summary> |
| | | ///// 2020-02-11 |
| | | ///// 搜索重复次数 由4次增加为6次 |
| | | ///// </summary> |
| | | //static readonly int READ_COUNT = 6; |
| | | /// <summary> |
| | | /// 读取设备 |
| | | /// </summary> |
| | |
| | | CommonPage.DeviceList.Clear (); |
| | | CommonPage.searchTotal = 0; |
| | | //如果两次都没有数据反馈,就不读取 |
| | | int readCount = 4; |
| | | //2020 - 02 - 11搜索重复次数 由4次增加为6次 |
| | | int readCount = 6; |
| | | while (0 < readCount) { |
| | | readCount--; |
| | | var ms = new System.IO.MemoryStream (); |
| | |
| | | ms.WriteByte (common.SubnetID); |
| | | ms.WriteByte (common.DeviceID); |
| | | } |
| | | Console.WriteLine ("搜索非网关设备,网络地址是:" + CommonPage.EndPoint.ToString ()); |
| | | Utlis.WriteLine ("搜索非网关设备,网络地址是:" + CommonPage.EndPoint.ToString ()); |
| | | var control = new Control (); |
| | | control.Send (new Target () { |
| | | IPEndPoint = CommonPage.EndPoint, |
| | |
| | | System.Threading.Thread.Sleep (1000); |
| | | //如果数量不相等,就重置次数 |
| | | if (tempCount != CommonPage.DeviceList.Count) { |
| | | readCount = 4; |
| | | readCount = 6; |
| | | } |
| | | } |
| | | CommonPage.DeviceList = CommonPage.DeviceList.FindAll ((obj) => { return obj != null && obj.SubnetID == gatewayDeicve.SubnetID; }); |
| | |
| | | |
| | | //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); |
| | | |
| | |
| | | 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); |
| | |
| | | var mobytes = Control.ControlBytesSendHasReturn (Command.SetGateWayModelInternetInfo, gatewayDeicve.SubnetID, gatewayDeicve.DeviceID, serverIPBytes); |
| | | if (mobytes == null) { |
| | | Application.RunOnMainThread (() => { |
| | | new Alert ("", Language.StringByID (R.MyInternationalizationString.TipEquipmentNotOnline), |
| | | new Alert ("", ErrorCode.GatewayNoResponse, |
| | | Language.StringByID (R.MyInternationalizationString.Close)).Show (); |
| | | }); |
| | | } else if (mobytes [0] == 0xF5) { |
| | |
| | | var bindReginIdStatus = Control.ControlBytesSendHasReturn (Command.Write_APP_Data_STORE_1D5E_CMD, gatewayDeicve.SubnetID, gatewayDeicve.DeviceID, currentRegionIdBytes); |
| | | if (bindReginIdStatus == null) { |
| | | Application.RunOnMainThread (() => { |
| | | new Alert ("", Language.StringByID (R.MyInternationalizationString.TipEquipmentNotOnline), Language.StringByID (R.MyInternationalizationString.Close)).Show (); |
| | | new Alert ("", ErrorCode.GatewayNoResponse, Language.StringByID (R.MyInternationalizationString.Close)).Show (); |
| | | }); |
| | | return; |
| | | } else if (bindReginIdStatus [0] != 0xF8) { |
| | |
| | | return; |
| | | } |
| | | } |
| | | Application.RunOnMainThread (() => { |
| | | MainPage.Loading.Start ("Gateway setting succeeded,data 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 (); |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | BindGatewaysNew (); |
| | | } |
| | | } catch (Exception ex) { |
| | | Console.WriteLine (ex.Message); |
| | | Utlis.WriteLine (ex.Message); |
| | | Application.RunOnMainThread (() => { |
| | | new Alert ("", Language.StringByID (R.MyInternationalizationString.OperationFailed), Language.StringByID (R.MyInternationalizationString.Close)).Show (); |
| | | }); |
| | |
| | | }); |
| | | //Room.InitAllRoom (); |
| | | } |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// 远程配置 HDL MQTT模式 |
| | |
| | | byte [] gatewayBytes = null; |
| | | string [] strServerIP = (MainPage.SeviceIP).Split ('.'); |
| | | string [] strServerIP1 = (MainPage.SeviceIP).Split ('.'); |
| | | MainPage.Loading.Start ("Configuring device..."); |
| | | MainPage.Loading.Start ("Configuring gateway..."); |
| | | System.Threading.Tasks.Task.Run (() => { |
| | | try { |
| | | |
| | | //读取一端口交换机、无线网关的配置信息 |
| | | gatewayBytes = Control.ControlBytesSendHasReturn (Command.ReadGateWayModelInfo, gatewayDeicve.SubnetID, gatewayDeicve.DeviceID, new byte [] { }); |
| | | |
| | | 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 = "85521566"; |
| | | byte [] ggn = new byte [20]; |
| | | byte [] b1 = CommonPage.MyEncodingGB2312.GetBytes (gatewayDeicve.Remote_GroupName); |
| | | gatewayDeicve.Remote_GroupName = CommonPage.MyEncodingGB2312.GetString (b1); |
| | | Array.Copy (b1, 0, ggn, 0, 20 < b1.Length ? 20 : b1.Length); |
| | | |
| | | byte [] gpn = new byte [20]; |
| | | byte [] b2 = CommonPage.MyEncodingGB2312.GetBytes (gatewayDeicve.Remote_ProjectName); |
| | | Array.Copy (b2, 0, gpn, 0, 20 < b2.Length ? 20 : b2.Length); |
| | | |
| | | byte [] gun = new byte [8]; |
| | | byte [] b3 = CommonPage.MyEncodingGB2312.GetBytes (gatewayDeicve.Remote_UserName); |
| | | Array.Copy (b3, 0, gun, 0, 8 < b3.Length ? 8 : b3.Length); |
| | | |
| | | byte [] gpw = new byte [8]; |
| | | byte [] b4 = CommonPage.MyEncodingGB2312.GetBytes (gatewayDeicve.Remote_Password); |
| | | Array.Copy (b4, 0, gpw, 0, 8 < b4.Length ? 8 : b4.Length); |
| | | |
| | | |
| | | gatewayBytes [0] = TYPEHdlMQTT;//HDL MQTT |
| | | Array.Copy (ggn, 0, gatewayBytes, 1, 20); |
| | | Array.Copy (gpn, 0, gatewayBytes, 21, 20); |
| | | Array.Copy (gun, 0, gatewayBytes, 41, 8); |
| | | Array.Copy (gpw, 0, gatewayBytes, 49, 8); |
| | | //1.修改用户名信息 |
| | | Control.ControlBytesSend (Command.SetGateWayModelInfo, gatewayDeicve.SubnetID, gatewayDeicve.DeviceID, gatewayBytes); |
| | | ////2.读取一次管理信息 |
| | | //byte [] adminBytes = Control.ControlBytesSendHasReturn (Command.ReadGateWayAdminInfo, gatewayDeicve.SubnetID, gatewayDeicve.DeviceID, new byte [] { }); |
| | | ////3.修改管理信息 |
| | | //if (SetGateWayAdminInfo (adminBytes)) { |
| | | // //4.写配置成功后下一步操作 |
| | | // GatewaySettingSucceeded (); |
| | | ////读取一端口交换机、无线网关的配置信息 |
| | | //gatewayBytes = Control.ControlBytesSendHasReturn (Command.ReadGateWayModelInfo, gatewayDeicve.SubnetID, gatewayDeicve.DeviceID, new byte [] { }); |
| | | //if (gatewayBytes == null) { |
| | | // //读取一端口交换机、无线网关的配置信息失败 |
| | | // new Alert ("", "Read gateway configuration failed!", "Close").Show (); |
| | | // return; |
| | | //} |
| | | |
| | | //2.修改管理信息 |
| | | if (SetGateWayAdminInfo ()) { |
| | | //3.写配置成功后下一步操作 |
| | | GatewaySettingSucceeded (); |
| | | |
| | | //1.修改用户名信息 和修改连接模式 |
| | | if (SetGateWayModelInfo()) { |
| | | //2.修改管理信息 |
| | | if (SetGateWayAdminInfo ()) { |
| | | //3.写配置成功后下一步操作 |
| | | GatewaySettingSucceeded (); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | } catch (Exception ex) { |
| | | Console.WriteLine (ex.Message); |
| | | Utlis.WriteLine (ex.Message); |
| | | Application.RunOnMainThread (() => { |
| | | new Alert ("", Language.StringByID (R.MyInternationalizationString.OperationFailed), Language.StringByID (R.MyInternationalizationString.Close)).Show (); |
| | | //修改网关连接模式失败 |
| | | new Alert ("", "Failed to modify gateway connection mode!", Language.StringByID (R.MyInternationalizationString.Close)).Show (); |
| | | }); |
| | | bool canRemove = false; |
| | | } finally { |
| | |
| | | //Room.InitAllRoom (); |
| | | } |
| | | |
| | | bool SetGateWayModelInfo () { |
| | | byte [] gatewayBytes = new byte [60]; |
| | | 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.ID; |
| | | //gatewayDeicve.Remote_Password = "85521566"; |
| | | byte [] ggn = new byte [20]; |
| | | byte [] b1 = CommonPage.MyEncodingGB2312.GetBytes (gatewayDeicve.Remote_GroupName); |
| | | gatewayDeicve.Remote_GroupName = CommonPage.MyEncodingGB2312.GetString (b1); |
| | | Array.Copy (b1, 0, ggn, 0, 20 < b1.Length ? 20 : b1.Length); |
| | | |
| | | byte [] gpn = new byte [20]; |
| | | byte [] b2 = CommonPage.MyEncodingGB2312.GetBytes (gatewayDeicve.Remote_ProjectName); |
| | | Array.Copy (b2, 0, gpn, 0, 20 < b2.Length ? 20 : b2.Length); |
| | | |
| | | byte [] gun = new byte [8]; |
| | | byte [] b3 = CommonPage.MyEncodingGB2312.GetBytes (gatewayDeicve.Remote_UserName); |
| | | Array.Copy (b3, 0, gun, 0, 8 < b3.Length ? 8 : b3.Length); |
| | | |
| | | byte [] gpw = new byte [8]; |
| | | byte [] b4 = CommonPage.MyEncodingGB2312.GetBytes (gatewayDeicve.Remote_Password); |
| | | Array.Copy (b4, 0, gpw, 0, 8 < b4.Length ? 8 : b4.Length); |
| | | |
| | | |
| | | gatewayBytes [0] = TYPEHdlMQTT;//HDL MQTT |
| | | Array.Copy (ggn, 0, gatewayBytes, 1, 20); |
| | | Array.Copy (gpn, 0, gatewayBytes, 21, 20); |
| | | Array.Copy (gun, 0, gatewayBytes, 41, 8); |
| | | Array.Copy (gpw, 0, gatewayBytes, 49, 8); |
| | | byte [] backBytes = Control.ControlBytesSendHasReturn (Command.SetGateWayModelInfo, gatewayDeicve.SubnetID, gatewayDeicve.DeviceID, gatewayBytes); |
| | | return CheckIsSuccessfulWithBytes (backBytes, "Failed to modify gateway connection mode."); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 修改管理员信息 |
| | | /// </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) {//返回数据正常,只修改账号信息 |
| | | 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]; |
| | |
| | | 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); |
| | | } |
| | |
| | | { |
| | | 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;//住宅标志位 |
| | |
| | | |
| | | byte [] backBytes = Control.ControlBytesSendHasReturn (Command.SetGateWayAdminInfo, gatewayDeicve.SubnetID, gatewayDeicve.DeviceID, adminBytes); |
| | | |
| | | return CheckIsSuccessfulWithBytes (backBytes); |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 远程配置 Standard MQTT模式 |
| | | /// </summary> |
| | | void RemoteSettingWithStandardMQTT () |
| | | { |
| | | byte [] gatewayBytes = null; |
| | | string [] strServerIP = (MainPage.SeviceIP).Split ('.'); |
| | | string [] strServerIP1 = (MainPage.SeviceIP).Split ('.'); |
| | | MainPage.Loading.Start ("Configuring device..."); |
| | | System.Threading.Tasks.Task.Run (() => { |
| | | try { |
| | | |
| | | //读取一端口交换机、无线网关的配置信息 |
| | | gatewayBytes = Control.ControlBytesSendHasReturn (Command.ReadGateWayModelInfo, gatewayDeicve.SubnetID, gatewayDeicve.DeviceID, new byte [] { }); |
| | | //连接类型配置为5 Standard MQTT模式 |
| | | gatewayBytes [0] = TYPEStandardMQTT;//Standard MQTT |
| | | Control.ControlBytesSend (Command.SetGateWayModelInfo, gatewayDeicve.SubnetID, gatewayDeicve.DeviceID, gatewayBytes); |
| | | //1.修改URL |
| | | //2.修改读取客户端ID,用户名,密码 |
| | | //3.修改AES加密 |
| | | //4.修改主题 |
| | | |
| | | //1.修改URL |
| | | if (SetGateWayURL ("https://developer.hdlcontrol.com/api/")) { |
| | | //2.修改客户端ID,用户名,密码 |
| | | if (SetGateWayClientIDUsernamePassword ("85521566", "Admin", "85521566")) { |
| | | //3.修改AES加密 |
| | | if (SetGateWayAESEncryption (true, "85521566")) { |
| | | //4.1修改订阅主题 |
| | | if (SetGateWayTopic ("SubscribeTopic")) { |
| | | //4.2修改发布主题 |
| | | if (SetGateWayTopic ("PublishTopic", true)) { |
| | | //5.写配置成功后下一步操作 |
| | | GatewaySettingSucceeded (); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | } catch (Exception ex) { |
| | | Console.WriteLine (ex.Message); |
| | | Application.RunOnMainThread (() => { |
| | | new Alert ("", Language.StringByID (R.MyInternationalizationString.OperationFailed), Language.StringByID (R.MyInternationalizationString.Close)).Show (); |
| | | }); |
| | | bool canRemove = false; |
| | | } finally { |
| | | Application.RunOnMainThread (() => { |
| | | MainPage.Loading.Hide (); |
| | | //this.RemoveAll (); |
| | | }); |
| | | } |
| | | }); |
| | | //Room.InitAllRoom (); |
| | | return CheckIsSuccessfulWithBytes (backBytes, "Failed to modify gateway administrator information!"); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// </summary> |
| | | /// <param name="backBytes"></param> |
| | | /// <returns></returns> |
| | | private bool CheckIsSuccessfulWithBytes (byte [] backBytes) |
| | | private bool CheckIsSuccessfulWithBytes (byte [] backBytes, string errorStr = "Modify gateway configuration failed!") |
| | | { |
| | | if (backBytes == null) { |
| | | Application.RunOnMainThread (() => { |
| | | new Alert ("", Language.StringByID (R.MyInternationalizationString.TipEquipmentNotOnline), |
| | | new Alert ("", ErrorCode.GatewayNoResponse, |
| | | Language.StringByID (R.MyInternationalizationString.Close)).Show (); |
| | | }); |
| | | return false; |
| | |
| | | return true; |
| | | } else { |
| | | Application.RunOnMainThread (() => { |
| | | new Alert ("", Language.StringByID (R.MyInternationalizationString.OperationFailed), |
| | | new Alert ("", errorStr, |
| | | Language.StringByID (R.MyInternationalizationString.Close)).Show (); |
| | | }); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 修改URL |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | bool SetGateWayURL (string urlStr = "", int pointID = 1883) |
| | | { |
| | | byte [] sendBytes = new byte [63]; |
| | | byte [] url = CommonPage.MyEncodingGB2312.GetBytes (urlStr); |
| | | Array.Copy (url, 0, sendBytes, 1, 60 < url.Length ? 60 : url.Length); |
| | | sendBytes [0] = GuideSettingGateway.TYPEStandardMQTT; |
| | | sendBytes [61] = Convert.ToByte (pointID / 256); |
| | | sendBytes [62] = Convert.ToByte (pointID % 256); |
| | | var backBytes = Control.ControlBytesSendHasReturn (Command.SetGateWayURL, gatewayDeicve.SubnetID, gatewayDeicve.DeviceID, sendBytes); |
| | | |
| | | return CheckIsSuccessfulWithBytes (backBytes); |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 修改客户端ID,用户名,密码 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | bool SetGateWayClientIDUsernamePassword (string clientIDStr = "", string usernameStr = "", string passwordStr = "") |
| | | { |
| | | |
| | | byte [] userInfoBytes = new byte [64]; |
| | | byte [] clientID = CommonPage.MyEncodingGB2312.GetBytes (clientIDStr); |
| | | Array.Copy (clientID, 0, userInfoBytes, 0, 32 < clientID.Length ? 32 : clientID.Length); |
| | | byte [] username = CommonPage.MyEncodingGB2312.GetBytes (usernameStr); |
| | | Array.Copy (username, 0, userInfoBytes, 32, 16 < username.Length ? 16 : username.Length); |
| | | byte [] password = CommonPage.MyEncodingGB2312.GetBytes (passwordStr); |
| | | Array.Copy (password, 0, userInfoBytes, 48, 16 < password.Length ? 16 : password.Length); |
| | | var setUserInfoBytes = Control.ControlBytesSendHasReturn (Command.SetGateWayClientIDUsernamePassword, gatewayDeicve.SubnetID, gatewayDeicve.DeviceID, userInfoBytes); |
| | | |
| | | return CheckIsSuccessfulWithBytes (setUserInfoBytes); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 修改AES加密 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | bool SetGateWayAESEncryption (bool enable = false, string passwordStr = "") |
| | | { |
| | | byte [] sendBytes = new byte [17]; |
| | | sendBytes [0] = enable ? (byte)1 : (byte)0; //0:不使能 1 - 255:使能 |
| | | byte [] password = CommonPage.MyEncodingGB2312.GetBytes (passwordStr); |
| | | Array.Copy (password, 0, sendBytes, 1, 16 < password.Length ? 16 : password.Length); |
| | | var backBytes = Control.ControlBytesSendHasReturn (Command.SetGateWayAESEncryption, gatewayDeicve.SubnetID, gatewayDeicve.DeviceID, sendBytes); |
| | | |
| | | return CheckIsSuccessfulWithBytes (backBytes); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 修改主题 |
| | | /// </summary> |
| | | /// <param name="bPublish">是否为发布主题</param> |
| | | /// <param name="bDefault">是否默认</param> |
| | | /// <returns></returns> |
| | | bool SetGateWayTopic (string topicInfoStr = "", bool bPublish = false, bool bDefault = false) |
| | | { |
| | | byte [] sendBytes = new byte [50]; |
| | | sendBytes [0] = bPublish ? (byte)2 : (byte)1; //1:订阅 2:发布 |
| | | sendBytes [1] = bDefault ? (byte)0 : (byte)1; //1:非默认 0:默认 |
| | | |
| | | byte [] topicInfo = CommonPage.MyEncodingGB2312.GetBytes (topicInfoStr); |
| | | Array.Copy (topicInfo, 0, sendBytes, 2, 48 < topicInfo.Length ? 48 : topicInfo.Length); |
| | | var backBytes = Control.ControlBytesSendHasReturn (Command.SetGateWayTopic, gatewayDeicve.SubnetID, gatewayDeicve.DeviceID, sendBytes); |
| | | |
| | | if (backBytes != null && backBytes.Length >= 2) { |
| | | if (backBytes [0] == sendBytes [0] && backBytes [1] == sendBytes [1]) { |
| | | return true; |
| | | } |
| | | } |
| | | return CheckIsSuccessfulWithBytes (backBytes); |
| | | } |
| | | |
| | | |
| | |
| | | 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, 0, 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); |
| | | if (bindReginIdStatus == null) { |
| | | Application.RunOnMainThread (() => { |
| | | new Alert ("", Language.StringByID (R.MyInternationalizationString.TipEquipmentNotOnline), Language.StringByID (R.MyInternationalizationString.Close)).Show (); |
| | | new Alert ("", ErrorCode.GatewayNoResponse, Language.StringByID (R.MyInternationalizationString.Close)).Show (); |
| | | }); |
| | | return; |
| | | } else if (bindReginIdStatus [0] != 0xF8) { |
| | |
| | | } |
| | | } |
| | | |
| | | BindGatewaysNew (); |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// Gateway setting succeeded,data up.Please wait... |
| | | /// 绑定Mac(印度版) |
| | | /// </summary> |
| | | void BindGatewaysNew () |
| | | { |
| | | Application.RunOnMainThread (() => { |
| | | MainPage.Loading.Start ("Gateway setting succeeded,data up.Please wait..."); |
| | | MainPage.Loading.Start ("Gateway setting succeeded,data 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") { |
| | | |
| | | //走新更新绑定接口 |
| | | var mBindMacObj = new BindMacObj () { |
| | | LoginAccessToken = MainPage.LoginUser.LoginTokenString, |
| | | HomeId = UserConfig.Instance.CurrentRegion.Id, |
| | | MAC = gatewayMAC |
| | | |
| | | }; |
| | | |
| | | string urlHead = MainPage.RequestHttpsHost; |
| | | if (mBindMacObj.IsOtherAccountCtrl) { |
| | | urlHead = UserConfig.Instance.MasterAccountRequestBaseUrl; |
| | | mBindMacObj.LoginAccessToken = UserConfig.Instance.MasterAccountToken; |
| | | } |
| | | |
| | | |
| | | 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.BindMac, requestJson, urlHead); |
| | | if (respone.StateCode.ToUpper () != "SUCCESS") { |
| | | GetNowHomeGatewayAfterBindMacFailed ();//2020-01-11 |
| | | Application.RunOnMainThread (() => { |
| | | new Alert ("", "Communication abnormality,gateway failed to bind residence!", Language.StringByID (R.MyInternationalizationString.Close)).Show (); |
| | | new Alert ("", $"Failed to bind Mac address! {ErrorCode.Reason }{respone.StateCode}", 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 (); |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | //GetNowHomeGateway (); |
| | | AddMacToUserConfig (gatewayMAC); |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 修改切换本地住宅 网关 |
| | | /// </summary> |
| | | void AddMacToUserConfig (string gatewayMAC) |
| | | { |
| | | |
| | | UserConfig.Instance.GatewayMAC = gatewayMAC; |
| | | UserConfig.Instance.SaveUserConfig (); |
| | | MainPage.LoginUser.LastTime = DateTime.Now; |
| | | Application.RunOnMainThread (() => { |
| | | bodyView.RemoveAll (); |
| | | //MainPage.WiFiStatus = "CrabtreeAdd/WiFi.png"; |
| | | UserMiddle.Init (true); |
| | | MainPage.WiFiStatus = "CrabtreeAdd/WiFi.png"; |
| | | UserMiddle.btnLinkStatus.UnSelectedImagePath = MainPage.WiFiStatus; |
| | | }); |
| | | |
| | | //Utlis.ShowAppLinkStatus (AppLinkStatus.WiFi); |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | ///// <summary> |
| | | ///// Gateway setting succeeded,data up.Please wait... |
| | | ///// </summary> |
| | | //void BindGateways () |
| | | //{ |
| | | |
| | | // Application.RunOnMainThread (() => { |
| | | // MainPage.Loading.Start ("Gateway setting succeeded,data up.Please wait..."); |
| | | // }); |
| | | // IO.FileUtils.SaveEquipmentMessage (gatewayDeicve); |
| | | // var gatewayMAC = gatewayDeicve.MAC.Replace (".", ""); |
| | | // var oldMac = ""; |
| | | // //2020-01-11 |
| | | // if (UserConfig.Instance.CheckHomeGatewaysNotEmpty ()) { |
| | | // //当前住宅存在Mac 修改MAC接口 |
| | | // oldMac = UserConfig.Instance.CurrentRegion.HomeGateways [0].GatewayUniqueId; |
| | | // if (oldMac == gatewayMAC) {//和绑定mac一致,不用修改 |
| | | // AddMacToUserConfig (gatewayMAC); |
| | | // return; |
| | | // } |
| | | |
| | | // var mUpdateMacObj = new UpdateMacObj () { |
| | | // LoginAccessToken = MainPage.LoginUser.LoginTokenString, |
| | | // HomeId = UserConfig.Instance.CurrentRegion.Id, |
| | | // NewMac = gatewayMAC, |
| | | // OldMac = oldMac |
| | | // }; |
| | | // string urlHead = MainPage.RequestHttpsHost; |
| | | // if (mUpdateMacObj.IsOtherAccountCtrl) { |
| | | // urlHead = UserConfig.Instance.MasterAccountRequestBaseUrl; |
| | | // mUpdateMacObj.LoginAccessToken = UserConfig.Instance.MasterAccountToken; |
| | | // } |
| | | |
| | | // 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, urlHead); |
| | | // if (respone.StateCode.ToUpper () != "SUCCESS") { |
| | | // GetNowHomeGatewayAfterBindMacFailed ();//2020-01-11 |
| | | // Application.RunOnMainThread (() => { |
| | | // new Alert ("", "Failed to update Mac address, gateway binding failed!", 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; |
| | | // } |
| | | // //GetNowHomeGateway (); |
| | | // AddMacToUserConfig (gatewayMAC); |
| | | // } else { |
| | | // //走新绑定接口 |
| | | // var mBindMacObj = new BindGatewayToHomeObj () { |
| | | // LoginAccessToken = MainPage.LoginUser.LoginTokenString, |
| | | // HomeId = UserConfig.Instance.CurrentRegion.Id, |
| | | |
| | | // }; |
| | | // mBindMacObj.BindGateways.Add (gatewayMAC); |
| | | // string urlHead = MainPage.RequestHttpsHost; |
| | | // if (mBindMacObj.IsOtherAccountCtrl) { |
| | | // urlHead = UserConfig.Instance.MasterAccountRequestBaseUrl; |
| | | // mBindMacObj.LoginAccessToken = UserConfig.Instance.MasterAccountToken; |
| | | // } |
| | | |
| | | |
| | | // 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, urlHead); |
| | | // if (respone.StateCode.ToUpper () != "SUCCESS" && respone.StateCode != "BindGatewaysExists") { |
| | | // GetNowHomeGatewayAfterBindMacFailed ();//2020-01-11 |
| | | // Application.RunOnMainThread (() => { |
| | | // new Alert ("", "Failed to bind Mac address, gateway binding failed!", 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; |
| | | // } |
| | | // //GetNowHomeGateway (); |
| | | // AddMacToUserConfig (gatewayMAC); |
| | | // } |
| | | |
| | | //} |
| | | |
| | | |
| | | /// <summary> |
| | | /// 绑定失败之后,查询刷新一次当前住宅 网关列表 |
| | | /// 2020-01-11 |
| | | /// </summary> |
| | | void GetNowHomeGatewayAfterBindMacFailed () |
| | | { |
| | | |
| | | var requestObj3 = new GetSingleHomeGatewayPaggerObj (); |
| | | requestObj3.ReqDto.LoginAccessToken = MainPage.LoginUser.LoginTokenString; |
| | | requestObj3.ReqDto.HomeId = UserConfig.Instance.CurrentRegion.Id; |
| | | requestObj3.ReqDto.PageSetting.Page = 1; |
| | | requestObj3.ReqDto.PageSetting.PageSize = 10; |
| | | string urlHead = MainPage.RequestHttpsHost; |
| | | if (requestObj3.IsOtherAccountCtrl) { |
| | | urlHead = UserConfig.Instance.MasterAccountRequestBaseUrl; |
| | | requestObj3.ReqDto.LoginAccessToken = UserConfig.Instance.MasterAccountToken; |
| | | } |
| | | |
| | | var requestJson3 = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj3); |
| | | var revertObj3 = MainPage.RequestHttps (API.GetSingleHomeGatewayPagger, requestJson3, urlHead); |
| | | if (revertObj3.StateCode.ToUpper () == "SUCCESS") { |
| | | var infoResult = Newtonsoft.Json.JsonConvert.DeserializeObject<GetGatewayResult> (revertObj3.ResponseData.ToString ()); |
| | | //2020-01-11 |
| | | UserConfig.Instance.SetNowHomeGateways (infoResult.PageData); |
| | | |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | ///// <summary> |
| | | ///// 查询当前住宅 网关列表 |
| | | ///// </summary> |
| | | //void GetNowHomeGateway () |
| | | //{ |
| | | |
| | | // var requestObj3 = new GetSingleHomeGatewayPaggerObj (); |
| | | // requestObj3.ReqDto.LoginAccessToken = MainPage.LoginUser.LoginTokenString; |
| | | // requestObj3.ReqDto.HomeId = UserConfig.Instance.CurrentRegion.Id; |
| | | // requestObj3.ReqDto.PageSetting.Page = 1; |
| | | // requestObj3.ReqDto.PageSetting.PageSize = 999; |
| | | // string urlHead = MainPage.RequestHttpsHost; |
| | | // if (requestObj3.IsOtherAccountCtrl) { |
| | | // urlHead = UserConfig.Instance.MasterAccountRequestBaseUrl; |
| | | // requestObj3.ReqDto.LoginAccessToken = UserConfig.Instance.MasterAccountToken; |
| | | // } |
| | | |
| | | |
| | | // //var requestObj3 = new GatewayByRegionListObj () { RegionID = UserConfig.Instance.CurrentRegion.Id }; |
| | | // var requestJson3 = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj3); |
| | | // var revertObj3 = MainPage.RequestHttps (API.GetSingleHomeGatewayPagger, requestJson3, urlHead); |
| | | // if (revertObj3.StateCode.ToUpper () == "SUCCESS") { |
| | | // var infoResult = Newtonsoft.Json.JsonConvert.DeserializeObject<GetGatewayResult> (revertObj3.ResponseData.ToString ()); |
| | | // var responseGatewayDataObj = infoResult.PageData; |
| | | // if (responseGatewayDataObj != null && 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 (() => { |
| | | // bodyView.RemoveAll (); |
| | | // UserMiddle.Init (true); |
| | | // }); |
| | | // } else { |
| | | // Application.RunOnMainThread (() => { |
| | | // new Alert ("", "Query gateway failed, gateway failed to bind residence.Please try again.", Language.StringByID (R.MyInternationalizationString.Close)).Show (); |
| | | // if (MainPage.LoginUser.AccountString == "464027401@qq.com") { |
| | | // new Alert ("22:" + revertObj3.StateCode, revertObj3.ErrorInfo, Language.StringByID (R.MyInternationalizationString.Close)).Show (); |
| | | // } |
| | | // }); |
| | | // } |
| | | // } else { |
| | | |
| | | // Application.RunOnMainThread (() => { |
| | | // new Alert ("", "Query gateway failed, gateway failed to bind residence.Please try again.", Language.StringByID (R.MyInternationalizationString.Close)).Show (); |
| | | // if (MainPage.LoginUser.AccountString == "464027401@qq.com") { |
| | | // new Alert ("22:" + revertObj3.StateCode, revertObj3.ErrorInfo, Language.StringByID (R.MyInternationalizationString.Close)).Show (); |
| | | // } |
| | | // }); |
| | | // } |
| | | |
| | | |
| | | //} |
| | | |
| | | |
| | | |
| | | |
| | | ///// <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 (); |
| | | // }); |
| | | // } |
| | | |
| | | |
| | | //} |
| | | |
| | | //*****************StandardMQTT 配置方式 目前用不上***************** |
| | | ///// <summary> |
| | | ///// 远程配置 Standard MQTT模式 |
| | | ///// </summary> |
| | | //void RemoteSettingWithStandardMQTT () |
| | | //{ |
| | | // byte [] gatewayBytes = null; |
| | | // string [] strServerIP = (MainPage.SeviceIP).Split ('.'); |
| | | // string [] strServerIP1 = (MainPage.SeviceIP).Split ('.'); |
| | | // MainPage.Loading.Start ("Configuring device..."); |
| | | // System.Threading.Tasks.Task.Run (() => { |
| | | // try { |
| | | |
| | | // //读取一端口交换机、无线网关的配置信息 |
| | | // gatewayBytes = Control.ControlBytesSendHasReturn (Command.ReadGateWayModelInfo, gatewayDeicve.SubnetID, gatewayDeicve.DeviceID, new byte [] { }); |
| | | // //连接类型配置为5 Standard MQTT模式 |
| | | // gatewayBytes [0] = TYPEStandardMQTT;//Standard MQTT |
| | | // Control.ControlBytesSend (Command.SetGateWayModelInfo, gatewayDeicve.SubnetID, gatewayDeicve.DeviceID, gatewayBytes); |
| | | // //1.修改URL |
| | | // //2.修改读取客户端ID,用户名,密码 |
| | | // //3.修改AES加密 |
| | | // //4.修改主题 |
| | | |
| | | // //1.修改URL |
| | | // if (SetGateWayURL ("https://developer.hdlcontrol.com/api/")) { |
| | | // //2.修改客户端ID,用户名,密码 |
| | | // if (SetGateWayClientIDUsernamePassword ("85521566", "Admin", "85521566")) { |
| | | // //3.修改AES加密 |
| | | // if (SetGateWayAESEncryption (true, "85521566")) { |
| | | // //4.1修改订阅主题 |
| | | // if (SetGateWayTopic ("SubscribeTopic")) { |
| | | // //4.2修改发布主题 |
| | | // if (SetGateWayTopic ("PublishTopic", true)) { |
| | | // //5.写配置成功后下一步操作 |
| | | // GatewaySettingSucceeded (); |
| | | // } |
| | | // } |
| | | // } |
| | | // } |
| | | // } |
| | | |
| | | // } catch (Exception ex) { |
| | | // Utlis.WriteLine (ex.Message); |
| | | // Application.RunOnMainThread (() => { |
| | | // new Alert ("", Language.StringByID (R.MyInternationalizationString.OperationFailed), Language.StringByID (R.MyInternationalizationString.Close)).Show (); |
| | | // }); |
| | | // bool canRemove = false; |
| | | // } finally { |
| | | // Application.RunOnMainThread (() => { |
| | | // MainPage.Loading.Hide (); |
| | | // //this.RemoveAll (); |
| | | // }); |
| | | // } |
| | | // }); |
| | | // //Room.InitAllRoom (); |
| | | //} |
| | | |
| | | |
| | | |
| | | ///// <summary> |
| | | ///// 修改URL |
| | | ///// </summary> |
| | | ///// <returns></returns> |
| | | //bool SetGateWayURL (string urlStr = "", int pointID = 1883) |
| | | //{ |
| | | // byte [] sendBytes = new byte [63]; |
| | | // byte [] url = CommonPage.MyEncodingGB2312.GetBytes (urlStr); |
| | | // Array.Copy (url, 0, sendBytes, 1, 60 < url.Length ? 60 : url.Length); |
| | | // sendBytes [0] = GuideSettingGateway.TYPEStandardMQTT; |
| | | // sendBytes [61] = Convert.ToByte (pointID / 256); |
| | | // sendBytes [62] = Convert.ToByte (pointID % 256); |
| | | // var backBytes = Control.ControlBytesSendHasReturn (Command.SetGateWayURL, gatewayDeicve.SubnetID, gatewayDeicve.DeviceID, sendBytes); |
| | | |
| | | // return CheckIsSuccessfulWithBytes (backBytes); |
| | | //} |
| | | |
| | | |
| | | ///// <summary> |
| | | ///// 修改客户端ID,用户名,密码 |
| | | ///// </summary> |
| | | ///// <returns></returns> |
| | | //bool SetGateWayClientIDUsernamePassword (string clientIDStr = "", string usernameStr = "", string passwordStr = "") |
| | | //{ |
| | | |
| | | // byte [] userInfoBytes = new byte [64]; |
| | | // byte [] clientID = CommonPage.MyEncodingGB2312.GetBytes (clientIDStr); |
| | | // Array.Copy (clientID, 0, userInfoBytes, 0, 32 < clientID.Length ? 32 : clientID.Length); |
| | | // byte [] username = CommonPage.MyEncodingGB2312.GetBytes (usernameStr); |
| | | // Array.Copy (username, 0, userInfoBytes, 32, 16 < username.Length ? 16 : username.Length); |
| | | // byte [] password = CommonPage.MyEncodingGB2312.GetBytes (passwordStr); |
| | | // Array.Copy (password, 0, userInfoBytes, 48, 16 < password.Length ? 16 : password.Length); |
| | | // var setUserInfoBytes = Control.ControlBytesSendHasReturn (Command.SetGateWayClientIDUsernamePassword, gatewayDeicve.SubnetID, gatewayDeicve.DeviceID, userInfoBytes); |
| | | |
| | | // return CheckIsSuccessfulWithBytes (setUserInfoBytes); |
| | | //} |
| | | |
| | | ///// <summary> |
| | | ///// 修改AES加密 |
| | | ///// </summary> |
| | | ///// <returns></returns> |
| | | //bool SetGateWayAESEncryption (bool enable = false, string passwordStr = "") |
| | | //{ |
| | | // byte [] sendBytes = new byte [17]; |
| | | // sendBytes [0] = enable ? (byte)1 : (byte)0; //0:不使能 1 - 255:使能 |
| | | // byte [] password = CommonPage.MyEncodingGB2312.GetBytes (passwordStr); |
| | | // Array.Copy (password, 0, sendBytes, 1, 16 < password.Length ? 16 : password.Length); |
| | | // var backBytes = Control.ControlBytesSendHasReturn (Command.SetGateWayAESEncryption, gatewayDeicve.SubnetID, gatewayDeicve.DeviceID, sendBytes); |
| | | |
| | | // return CheckIsSuccessfulWithBytes (backBytes); |
| | | //} |
| | | |
| | | ///// <summary> |
| | | ///// 修改主题 |
| | | ///// </summary> |
| | | ///// <param name="bPublish">是否为发布主题</param> |
| | | ///// <param name="bDefault">是否默认</param> |
| | | ///// <returns></returns> |
| | | //bool SetGateWayTopic (string topicInfoStr = "", bool bPublish = false, bool bDefault = false) |
| | | //{ |
| | | // byte [] sendBytes = new byte [50]; |
| | | // sendBytes [0] = bPublish ? (byte)2 : (byte)1; //1:订阅 2:发布 |
| | | // sendBytes [1] = bDefault ? (byte)0 : (byte)1; //1:非默认 0:默认 |
| | | |
| | | // byte [] topicInfo = CommonPage.MyEncodingGB2312.GetBytes (topicInfoStr); |
| | | // Array.Copy (topicInfo, 0, sendBytes, 2, 48 < topicInfo.Length ? 48 : topicInfo.Length); |
| | | // var backBytes = Control.ControlBytesSendHasReturn (Command.SetGateWayTopic, gatewayDeicve.SubnetID, gatewayDeicve.DeviceID, sendBytes); |
| | | |
| | | // if (backBytes != null && backBytes.Length >= 2) { |
| | | // if (backBytes [0] == sendBytes [0] && backBytes [1] == sendBytes [1]) { |
| | | // return true; |
| | | // } |
| | | // } |
| | | // return CheckIsSuccessfulWithBytes (backBytes); |
| | | //} |
| | | |
| | | } |
| | | } |