| | |
| | | public static async System.Threading.Tasks.Task StartCloudMqtt () |
| | | { |
| | | |
| | | Application.RunOnMainThread (() => { |
| | | if (5 < (DateTime.Now - dateTime).TotalSeconds) { |
| | | return; |
| | | } |
| | | //MainPage.Loading.Start (Language.StringByID (Shared.SimpleControl.R.MyInternationalizationString.Connecting)); |
| | | dateTime = DateTime.Now; |
| | | }); |
| | | //Application.RunOnMainThread (() => { |
| | | // if (5 < (DateTime.Now - dateTime).TotalSeconds) { |
| | | // return; |
| | | // } |
| | | // //MainPage.Loading.Start (Language.StringByID (Shared.SimpleControl.R.MyInternationalizationString.Connecting)); |
| | | // dateTime = DateTime.Now; |
| | | //}); |
| | | if (!MainPage.LoginUser.IsLogin) { |
| | | return; |
| | | } |
| | |
| | | //Console.WriteLine ("Topic={0}", aesDecryptTopic); |
| | | |
| | | if (aesDecryptTopic == $"NotifyBusGateWayInfoChagne/{CurRemoteMACInfo.md5_mac_string}") {//网关上线,需要更新aeskey |
| | | //----第二步:读取账号下面的网关列表 |
| | | Console.WriteLine ("网关上线,需要更新aeskey"); |
| | | //----第二步:读取账号下面的网关列表 |
| | | 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 = MainPage.RequestHttps ("", Newtonsoft.Json.JsonConvert.SerializeObject (gatewayListRequestPar),gatewayListUrl); |
| | | var gatewayListRequestResult_Obj = Newtonsoft.Json.JsonConvert.DeserializeObject<MqttRemoteInfo> (gatewayListRequestResult.ResponseData.ToString ()); |
| | | if (gatewayListRequestResult_Obj != null && gatewayListRequestResult_Obj.pageData.Count > 0) { |
| | | CurRemoteMACInfo.aesKey = gatewayListRequestResult_Obj.pageData [0].aesKey; |
| | |
| | | //}); |
| | | Shared.SimpleControl.Phone.UserMiddle.ReadAllDeviceStatus (); |
| | | System.Console.WriteLine ($"远程连接成功"); |
| | | |
| | | Utlis.ShowAppLinkStatus (AppLinkStatus.CloudLink); |
| | | if (CommonPage.IsRemote) { |
| | | Utlis.ShowAppLinkStatus (AppLinkStatus.CloudLink); |
| | | } |
| | | |
| | | //MainPage.WiFiStatus = "CrabtreeAdd/CloudLink.png"; |
| | | //UserMiddle.btnLinkStatus.UnSelectedImagePath = MainPage.WiFiStatus; |
| | |
| | | //断开后重新链接需要重新登录获取连接的密码 |
| | | var requestObj = new LoginObj () { Account = MainPage.LoginUser.AccountString.ToLower (), Password = MainPage.LoginUser.Password }; |
| | | var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj); |
| | | var tempResult = MainPage.RequestHttps (API.Login, requestJson, false); |
| | | var tempResult = MainPage.RequestHttps (API.Login, requestJson); |
| | | if (tempResult == null) { |
| | | Application.RunOnMainThread (() => { |
| | | MainPage.Loading.Hide (); |
| | |
| | | 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); |
| | | var revertObj3 = MainPage.RequestHttps (API.GetSingleHomeGatewayPagger, requestJson3, urlHead); |
| | | if (revertObj3.StateCode.ToUpper() == "SUCCESS") { |
| | | var infoResult = Newtonsoft.Json.JsonConvert.DeserializeObject<GetGatewayResult> (revertObj3.ResponseData.ToString ()); |
| | | var gatewayList = infoResult.PageData; |
| | |
| | | //--第一步:获取mqtt链接参数 |
| | | 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); |
| | | var mqttInfoRequestResult = MainPage.RequestHttps ("", Newtonsoft.Json.JsonConvert.SerializeObject (mqttInfoRequestPar), mqttInfoUrl); |
| | | if (mqttInfoRequestResult != null && mqttInfoRequestResult.ResponseData != null) { |
| | | var mqttInfoRequestResult_Obj = Newtonsoft.Json.JsonConvert.DeserializeObject<MqttInfo> (mqttInfoRequestResult.ResponseData.ToString ()); |
| | | if (mqttInfoRequestResult_Obj != null) { |
| | |
| | | //----第二步:读取账号下面的网关列表 |
| | | 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 = MainPage.RequestHttps ("", Newtonsoft.Json.JsonConvert.SerializeObject (gatewayListRequestPar), gatewayListUrl); |
| | | var gatewayListRequestResult_Obj = Newtonsoft.Json.JsonConvert.DeserializeObject<MqttRemoteInfo> (gatewayListRequestResult.ResponseData.ToString ()); |
| | | //--找出是否存在匹配当前住宅的mac,存在再进行远程。 |
| | | if (UserConfig.Instance.CheckHomeGateways ()) { |
| | |
| | | } |
| | | //base64加密 |
| | | var m = new MqttApplicationMessage { Topic = topicName, Payload = messageSend, Retain = false, QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce }; |
| | | if (remoteIsConnected) { |
| | | //if (remoteIsConnected) { |
| | | try { |
| | | await RemoteMqttClient.PublishAsync (m); |
| | | } catch (Exception e) { |
| | |
| | | await RemoteMqttClient.PublishAsync (m); |
| | | } |
| | | } |
| | | } |
| | | //} |
| | | break; |
| | | case 1: |
| | | topicName = $"/BusGateWayToClient/{CurRemoteMACInfo.macMark}/Common/#"; |
| | | if (remoteIsConnected) { |
| | | //if (remoteIsConnected) { |
| | | try { |
| | | await RemoteMqttClient.SubscribeAsync (topicName); |
| | | } catch (Exception e) { |
| | |
| | | await RemoteMqttClient.SubscribeAsync (topicName); |
| | | } |
| | | } |
| | | } |
| | | // } |
| | | break; |
| | | case 2: |
| | | var macStr = CurRemoteMACInfo.mac.ToUpper (); |
| | |
| | | } |
| | | |
| | | topicName = $"/NotifyBusGateWayInfoChagne/{CurRemoteMACInfo.md5_mac_string}"; |
| | | if (remoteIsConnected) { |
| | | //if (remoteIsConnected) { |
| | | try { |
| | | await RemoteMqttClient.SubscribeAsync (topicName); |
| | | } catch (Exception e) { |
| | |
| | | await RemoteMqttClient.SubscribeAsync (topicName); |
| | | } |
| | | } |
| | | } |
| | | //} |
| | | break; |
| | | |
| | | case 3: |
| | |
| | | |
| | | } |
| | | } |
| | | */ |
| | | */ |