| | |
| | | |
| | | if (aesDecryptTopic == $"NotifyBusGateWayInfoChagne/{CurRemoteMACInfo.md5_mac_string}") {//网关上线,需要更新aeskey |
| | | //----第二步:读取账号下面的网关列表 |
| | | var gatewayListUrl = $"{MainPage.RequestHttpsHost}/Center/Center/GetGatewayPagger"; //App、Buspro软件登录后获取网关列表 http 请求 |
| | | var gatewayListUrl = $"{MainPage.RequestHttpsHostMqtt}/Center/Center/GetGatewayPagger"; //App、Buspro软件登录后获取网关列表 http 请求 |
| | | var gatewayListRequestPar = new RemoteRequestParameters () { Mac = CurRemoteMACInfo.mac, LoginAccessToken = mqttRequestParToken, RequestVersion = "RequestVersion1", RequestProtocolType = 0, RequestSource = 1 }; |
| | | var gatewayListRequestResult = MainPage.RequestHttps ("", Newtonsoft.Json.JsonConvert.SerializeObject (gatewayListRequestPar), false, false, gatewayListUrl); |
| | | var gatewayListRequestResult_Obj = Newtonsoft.Json.JsonConvert.DeserializeObject<MqttRemoteInfo> (gatewayListRequestResult.ResponseData.ToString ()); |
| | |
| | | //}); |
| | | break; |
| | | case "Success": |
| | | MainPage.AddTip (UserConfig.Instance.CurrentRegion.RegionName + ":" + Language.StringByID (Shared.SimpleControl.R.MyInternationalizationString.LinkSuccess)); |
| | | MainPage.AddTip (UserConfig.Instance.CurrentRegion.Name + ":" + Language.StringByID (Shared.SimpleControl.R.MyInternationalizationString.LinkSuccess)); |
| | | MainPage.WiFiStatus = "CrabtreeAdd/CloudLink.png"; |
| | | break; |
| | | default: |
| | |
| | | //}); |
| | | Shared.SimpleControl.Phone.UserMiddle.ReadAllDeviceStatus (); |
| | | System.Console.WriteLine ($"远程连接成功"); |
| | | MainPage.WiFiStatus = "CrabtreeAdd/CloudLink.png"; |
| | | UserMiddle.btnLinkStatus.UnSelectedImagePath = MainPage.WiFiStatus; |
| | | |
| | | Utlis.ShowAppLinkStatus (AppLinkStatus.CloudLink); |
| | | |
| | | //MainPage.WiFiStatus = "CrabtreeAdd/CloudLink.png"; |
| | | //UserMiddle.btnLinkStatus.UnSelectedImagePath = MainPage.WiFiStatus; |
| | | if (CurRemoteMACInfo != null) { |
| | | if (CurRemoteMACInfo.isValid == "InValid") { |
| | | MainPage.AddTip ("Remote failed,gateway offline"); |
| | |
| | | try { |
| | | try { |
| | | //断开后重新链接需要重新登录获取连接的密码 |
| | | var requestObj = new LoginObj () { Account = MainPage.LoginUser.AccountString.ToLower (), Password = MainPage.LoginUser.Password, Company = MainPage.SoftSmsType }; |
| | | var requestObj = new LoginObj () { Account = MainPage.LoginUser.AccountString.ToLower (), Password = MainPage.LoginUser.Password }; |
| | | var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj); |
| | | var tempResult = MainPage.RequestHttps ("Login", requestJson, false); |
| | | var tempResult = MainPage.RequestHttps (API.Login, requestJson, false); |
| | | if (tempResult == null) { |
| | | Application.RunOnMainThread (() => { |
| | | MainPage.Loading.Hide (); |
| | |
| | | return; |
| | | } |
| | | |
| | | var requestObj3 = new GatewayByRegionListObj () { RegionID = UserConfig.Instance.CurrentRegion.RegionID }; |
| | | 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; |
| | | |
| | | //var requestObj3 = new GatewayByRegionListObj () { RegionID = UserConfig.Instance.CurrentRegion.Id }; |
| | | var requestJson3 = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj3); |
| | | var revertObj3 = MainPage.RequestHttps ("GatewayByRegionList", requestJson3, true, false); |
| | | if (revertObj3.StateCode == "SUCCESS") { |
| | | var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<List<GatewayRes>> (revertObj3.ResponseData.ToString ()); |
| | | var gatewayList = responseDataObj; |
| | | var revertObj3 = MainPage.RequestHttps (API.GetSingleHomeGatewayPagger, requestJson3); |
| | | if (revertObj3.StateCode.ToUpper() == "SUCCESS") { |
| | | var infoResult = Newtonsoft.Json.JsonConvert.DeserializeObject<GetGatewayResult> (revertObj3.ResponseData.ToString ()); |
| | | var gatewayList = infoResult.PageData; |
| | | if (gatewayList != null && gatewayList.Count > 0) { |
| | | UserConfig.Instance.CurrentRegion.MAC = gatewayList [0].MAC; |
| | | UserConfig.Instance.SaveUserConfig (); |
| | | Console.WriteLine ("Remote mqtt get Region MAC : " + gatewayList [0].MAC); |
| | | if (UserConfig.Instance.CheckHomeGateways ()) { |
| | | UserConfig.Instance.CurrentRegion.HomeGateways [0].GatewayUniqueId = gatewayList [0].GatewayUniqueId; |
| | | UserConfig.Instance.SaveUserConfig (); |
| | | Console.WriteLine ("Remote mqtt get Region MAC : " + gatewayList [0].GatewayUniqueId); |
| | | } |
| | | } |
| | | } else { |
| | | //提示错误 |
| | | //GetSingleHomeGatewayPagger |
| | | } |
| | | |
| | | if (tempResult == null) { |
| | |
| | | } |
| | | try { |
| | | //--第一步:获取mqtt链接参数 |
| | | var mqttInfoUrl = $"{MainPage.RequestHttpsHost}/Center/Center/GetConnMqttInfo";//获取连接远程云端Emq Mqtt 服务器连接信息 |
| | | var mqttInfoRequestPar = new RemoteRequestParameters () { LoginAccessToken = mqttRequestParToken, RequestVersion = MainPage.CodeIDString, RequestProtocolType = 0, RequestSource = 1 }; |
| | | var mqttInfoUrl = $"{MainPage.RequestHttpsHostMqtt}/Center/Center/GetConnMqttInfo";//获取连接远程云端Emq Mqtt 服务器连接信息 |
| | | var mqttInfoRequestPar = new RemoteRequestParameters () { LoginAccessToken = mqttRequestParToken, RequestVersion = MainPage.RequestVersion, RequestProtocolType = 0, RequestSource = 1 }; |
| | | var mqttInfoRequestResult = MainPage.RequestHttps ("", Newtonsoft.Json.JsonConvert.SerializeObject (mqttInfoRequestPar), false, false, mqttInfoUrl); |
| | | if (mqttInfoRequestResult != null && mqttInfoRequestResult.ResponseData != null) { |
| | | var mqttInfoRequestResult_Obj = Newtonsoft.Json.JsonConvert.DeserializeObject<MqttInfo> (mqttInfoRequestResult.ResponseData.ToString ()); |
| | |
| | | username = mqttInfoRequestResult_Obj.connEmqUserName; |
| | | passwordRemote = mqttInfoRequestResult_Obj.connEmqPwd; |
| | | //----第二步:读取账号下面的网关列表 |
| | | var gatewayListUrl = $"{MainPage.RequestHttpsHost}/Center/Center/GetGatewayPagger"; //App、Buspro软件登录后获取网关列表 http 请求 |
| | | var gatewayListUrl = $"{MainPage.RequestHttpsHostMqtt}/Center/Center/GetGatewayPagger"; //App、Buspro软件登录后获取网关列表 http 请求 |
| | | var gatewayListRequestPar = new RemoteRequestParameters () { LoginAccessToken = mqttRequestParToken, RequestVersion = "RequestVersion1", RequestProtocolType = 0, RequestSource = 1 }; |
| | | var gatewayListRequestResult = MainPage.RequestHttps ("", Newtonsoft.Json.JsonConvert.SerializeObject (gatewayListRequestPar), false, false, gatewayListUrl); |
| | | var gatewayListRequestResult_Obj = Newtonsoft.Json.JsonConvert.DeserializeObject<MqttRemoteInfo> (gatewayListRequestResult.ResponseData.ToString ()); |
| | | //--找出是否存在匹配当前住宅的mac,存在再进行远程。 |
| | | CurRemoteMACInfo = gatewayListRequestResult_Obj.pageData.Find ((obj) => obj.mac == UserConfig.Instance.CurrentRegion.MAC); |
| | | CurRemoteMACInfo = gatewayListRequestResult_Obj.pageData [0]; |
| | | if (CurRemoteMACInfo != null) { |
| | | CurRemoteMACInfo.LoginAccessToken = mqttRequestPar.Token; |
| | | mqttEncryptKey = CurRemoteMACInfo.aesKey; |
| | | var options1 = new MQTTnet.Client.Options.MqttClientOptionsBuilder () |
| | | .WithClientId (clientId) |
| | | .WithTcpServer (url.Split (':') [1].Substring ("//".Length), int.Parse (url.Split (':') [2])) |
| | | .WithCredentials (username, passwordRemote) |
| | | .WithCleanSession () |
| | | .WithCommunicationTimeout (new TimeSpan (0, 0, 20)) |
| | | .Build (); |
| | | if (UserConfig.Instance.CheckHomeGateways ()) { |
| | | CurRemoteMACInfo = gatewayListRequestResult_Obj.pageData.Find ((obj) => obj.mac == UserConfig.Instance.CurrentRegion.HomeGateways[0].GatewayUniqueId); |
| | | CurRemoteMACInfo = gatewayListRequestResult_Obj.pageData [0]; |
| | | if (CurRemoteMACInfo != null) { |
| | | CurRemoteMACInfo.LoginAccessToken = mqttRequestPar.Token; |
| | | mqttEncryptKey = CurRemoteMACInfo.aesKey; |
| | | var options1 = new MQTTnet.Client.Options.MqttClientOptionsBuilder () |
| | | .WithClientId (clientId) |
| | | .WithTcpServer (url.Split (':') [1].Substring ("//".Length), int.Parse (url.Split (':') [2])) |
| | | .WithCredentials (username, passwordRemote) |
| | | .WithCleanSession () |
| | | .WithCommunicationTimeout (new TimeSpan (0, 0, 20)) |
| | | .Build (); |
| | | |
| | | await DisConnectRemoteMqttClient ("StartRemoteMqtt"); |
| | | await RemoteMqttClient.ConnectAsync (options1); |
| | | remoteIsConnected = true; |
| | | await MqttRemoteSend (new byte [] { 0 }, 1); |
| | | await MqttRemoteSend (new byte [] { 0 }, 2); |
| | | await DisConnectRemoteMqttClient ("StartRemoteMqtt"); |
| | | await RemoteMqttClient.ConnectAsync (options1); |
| | | remoteIsConnected = true; |
| | | await MqttRemoteSend (new byte [] { 0 }, 1); |
| | | await MqttRemoteSend (new byte [] { 0 }, 2); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | |
| | | var requestObj3 = new GatewayByRegionListObj () { RegionID = UserConfig.Instance.CurrentRegion.RegionID }; |
| | | var requestJson3 = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj3); |
| | | var revertObj3 = MainPage.RequestHttps ("GatewayByRegionList", requestJson3, true, false); |
| | | if (revertObj3.StateCode == "SUCCESS") { |
| | | if (revertObj3.StateCode.ToUpper() == "SUCCESS") { |
| | | var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<List<GatewayRes>> (revertObj3.ResponseData.ToString ()); |
| | | var gatewayList = responseDataObj; |
| | | if (gatewayList != null && gatewayList.Count > 0) { |