From ac2ee45fadc64fe840bbba6264df3ca4622adb15 Mon Sep 17 00:00:00 2001 From: JLChen <551775569@qq.com> Date: 星期日, 12 一月 2020 16:06:13 +0800 Subject: [PATCH] 2020-01-12 1.优化修改。 --- Crabtree/SmartHome/UI/SimpleControl/MqttCommon.cs | 197 ++++++++++++++++++++++++++++--------------------- 1 files changed, 113 insertions(+), 84 deletions(-) diff --git a/Crabtree/SmartHome/UI/SimpleControl/MqttCommon.cs b/Crabtree/SmartHome/UI/SimpleControl/MqttCommon.cs index 41c2b3f..175d451 100644 --- a/Crabtree/SmartHome/UI/SimpleControl/MqttCommon.cs +++ b/Crabtree/SmartHome/UI/SimpleControl/MqttCommon.cs @@ -68,13 +68,13 @@ 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; } @@ -101,13 +101,17 @@ } var aesDecryptTopic = e.ApplicationMessage.Topic; var aesDecryptPayload = e.ApplicationMessage.Payload; - //Console.WriteLine ("Topic={0}", aesDecryptTopic); + Console.WriteLine ("Topic={0}", aesDecryptTopic); - if (aesDecryptTopic == $"NotifyBusGateWayInfoChagne/{CurRemoteMACInfo.md5_mac_string}") {//缃戝叧涓婄嚎锛岄渶瑕佹洿鏂癮eskey - //----绗簩姝ワ細璇诲彇璐﹀彿涓嬮潰鐨勭綉鍏冲垪琛� - var gatewayListUrl = @"https://developer.hdlcontrol.com/Center/Center/GetGatewayPagger"; //App銆丅uspro杞欢鐧诲綍鍚庤幏鍙栫綉鍏冲垪琛� http 璇锋眰 + + //if (aesDecryptTopic == $"NotifyBusGateWayInfoChagne/{CurRemoteMACInfo.md5_mac_string}") {//缃戝叧涓婄嚎锛岄渶瑕佹洿鏂癮eskey + //2020-01-11 淇敼璁㈤槄涓婚鍦板潃 + if (aesDecryptTopic == $"BusGateWayToClient/{CurRemoteMACInfo.macMark}/NotifyGateWayInfoChange") {//缃戝叧涓婄嚎锛岄渶瑕佹洿鏂癮eskey + Console.WriteLine ("缃戝叧涓婄嚎锛岄渶瑕佹洿鏂癮eskey"); + //----绗簩姝ワ細璇诲彇璐﹀彿涓嬮潰鐨勭綉鍏冲垪琛� + var gatewayListUrl = $"{MainPage.RequestHttpsHostMqtt}/Center/Center/GetGatewayPagger"; //App銆丅uspro杞欢鐧诲綍鍚庤幏鍙栫綉鍏冲垪琛� 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; @@ -116,6 +120,7 @@ } if (aesDecryptTopic == $"/BusGateWayToClient/{CurRemoteMACInfo.macMark}/Common/CheckGateway") { + MainPage.WiFiStatus = "CrabtreeAdd/CloudUnlink.png"; // = $"/ClientToBusGateWay/{CurRemoteMACInfo.macMark}/Common/OldON"; var ss = CommonPage.MyEncodingUTF8.GetString (aesDecryptPayload); var obj = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponsePack> (ss); @@ -127,34 +132,35 @@ case "NoOnline": case "NetworkAnomaly"://涓嶅湪绾� MainPage.AddTip ("Gateway offline"); - Application.RunOnMainThread (() => { - Shared.SimpleControl.Phone.UserMiddle.LinkStatusTip.BackgroundColor = SkinStyle.Current.DelColor; - }); + //Application.RunOnMainThread (() => { + // Shared.SimpleControl.Phone.UserMiddle.LinkStatusTip.BackgroundColor = SkinStyle.Current.DelColor; + //}); break; case "NoRecord"://MAC涓嶆纭� MainPage.AddTip (Language.StringByID (Shared.SimpleControl.R.MyInternationalizationString.MACError)); - Application.RunOnMainThread (() => { - Shared.SimpleControl.Phone.UserMiddle.LinkStatusTip.BackgroundColor = SkinStyle.Current.DelColor; - }); + //Application.RunOnMainThread (() => { + // Shared.SimpleControl.Phone.UserMiddle.LinkStatusTip.BackgroundColor = SkinStyle.Current.DelColor; + //}); 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: MainPage.AddTip (Language.StringByID (Shared.SimpleControl.R.MyInternationalizationString.LinkLoser)); - Application.RunOnMainThread (() => { - Shared.SimpleControl.Phone.UserMiddle.LinkStatusTip.BackgroundColor = SkinStyle.Current.DelColor; - }); + //Application.RunOnMainThread (() => { + // Shared.SimpleControl.Phone.UserMiddle.LinkStatusTip.BackgroundColor = SkinStyle.Current.DelColor; + //}); break; } + Application.RunOnMainThread (() => { + UserMiddle.btnLinkStatus.UnSelectedImagePath = MainPage.WiFiStatus; + }); } else { if (!string.IsNullOrEmpty (mqttEncryptKey)) { - aesDecryptTopic = Shared.Securitys.EncryptionService.AesDecryptTopic (e.ApplicationMessage.Topic, mqttEncryptKey); aesDecryptPayload = Shared.Securitys.EncryptionService.AesDecryptPayload (e.ApplicationMessage.Payload, mqttEncryptKey); - } else { - aesDecryptTopic = e.ApplicationMessage.Topic; - aesDecryptPayload = e.ApplicationMessage.Payload; } + } var packet = new Packet (); packet.Bytes = aesDecryptPayload; @@ -172,7 +178,7 @@ if (CommonPage.IsRemote) { Application.RunOnMainThread (() => { MainPage.Loading.Hide (); - Shared.SimpleControl.Phone.UserMiddle.LinkStatusTip.BackgroundColor = SkinStyle.Current.DelColor; + //Shared.SimpleControl.Phone.UserMiddle.LinkStatusTip.BackgroundColor = SkinStyle.Current.DelColor; }); } } else { @@ -182,19 +188,23 @@ } if (RemoteMqttClient.ConnectedHandler == null) { RemoteMqttClient.UseConnectedHandler (async (e) => { - Shared.Application.RunOnMainThread (() => { - Shared.SimpleControl.Phone.UserMiddle.LinkStatusTip.BackgroundColor = 0xAA69E64A; - }); + //Shared.Application.RunOnMainThread (() => { + // Shared.SimpleControl.Phone.UserMiddle.LinkStatusTip.BackgroundColor = 0xAA69E64A; + //}); Shared.SimpleControl.Phone.UserMiddle.ReadAllDeviceStatus (); System.Console.WriteLine ($"杩滅▼杩炴帴鎴愬姛"); - MainPage.WiFiStatus = "CrabtreeAdd/CloudLink.png"; - UserMiddle.btnLinkStatus.UnSelectedImagePath = MainPage.WiFiStatus; + if (CommonPage.IsRemote) { + 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"); Application.RunOnMainThread (() => { MainPage.Loading.Hide (); - Shared.SimpleControl.Phone.UserMiddle.LinkStatusTip.BackgroundColor = SkinStyle.Current.DelColor; + //Shared.SimpleControl.Phone.UserMiddle.LinkStatusTip.BackgroundColor = SkinStyle.Current.DelColor; }); } else { MqttRemoteSend (new byte [] { 0 }, 3); @@ -215,13 +225,13 @@ 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); if (tempResult == null) { Application.RunOnMainThread (() => { MainPage.Loading.Hide (); - Shared.SimpleControl.Phone.UserMiddle.LinkStatusTip.BackgroundColor = SkinStyle.Current.DelColor; + //Shared.SimpleControl.Phone.UserMiddle.LinkStatusTip.BackgroundColor = SkinStyle.Current.DelColor; }); return; } @@ -240,33 +250,43 @@ 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 = 10; + 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 ("GatewayByRegionList", requestJson3, true, false); - if (revertObj3.StateCode == "SUCCESS") { - var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<List<GatewayRes>> (revertObj3.ResponseData.ToString ()); - var gatewayList = responseDataObj; - 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); - } + 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); + } else { + //鎻愮ず閿欒 + //GetSingleHomeGatewayPagger } if (tempResult == null) { Application.RunOnMainThread (() => { MainPage.Loading.Hide (); - Shared.SimpleControl.Phone.UserMiddle.LinkStatusTip.BackgroundColor = SkinStyle.Current.DelColor; + //Shared.SimpleControl.Phone.UserMiddle.LinkStatusTip.BackgroundColor = SkinStyle.Current.DelColor; }); return; } - //--绗竴姝ワ細鑾峰彇mqtt閾炬帴鍙傛暟 - var mqttInfoUrl = @"https://developer.hdlcontrol.com/Center/Center/GetConnMqttInfo";//鑾峰彇杩炴帴杩滅▼浜戠Emq Mqtt 鏈嶅姟鍣ㄨ繛鎺ヤ俊鎭� - var mqttInfoRequestPar = new RemoteRequestParameters () { LoginAccessToken = mqttRequestParToken, RequestVersion = MainPage.CodeIDString, RequestProtocolType = 0, RequestSource = 1 }; - var mqttInfoRequestResult = MainPage.RequestHttps ("", Newtonsoft.Json.JsonConvert.SerializeObject (mqttInfoRequestPar), false, false, mqttInfoUrl); - - if (mqttInfoRequestResult != null && mqttInfoRequestResult.ResponseData != null) { - try { + try { + //--绗竴姝ワ細鑾峰彇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), mqttInfoUrl); + if (mqttInfoRequestResult != null && mqttInfoRequestResult.ResponseData != null) { var mqttInfoRequestResult_Obj = Newtonsoft.Json.JsonConvert.DeserializeObject<MqttInfo> (mqttInfoRequestResult.ResponseData.ToString ()); if (mqttInfoRequestResult_Obj != null) { url = mqttInfoRequestResult_Obj.connEmqDomainPort; @@ -274,31 +294,38 @@ username = mqttInfoRequestResult_Obj.connEmqUserName; passwordRemote = mqttInfoRequestResult_Obj.connEmqPwd; //----绗簩姝ワ細璇诲彇璐﹀彿涓嬮潰鐨勭綉鍏冲垪琛� - var gatewayListUrl = @"https://developer.hdlcontrol.com/Center/Center/GetGatewayPagger"; //App銆丅uspro杞欢鐧诲綍鍚庤幏鍙栫綉鍏冲垪琛� http 璇锋眰 + var gatewayListUrl = $"{MainPage.RequestHttpsHostMqtt}/Center/Center/GetGatewayPagger"; //App銆丅uspro杞欢鐧诲綍鍚庤幏鍙栫綉鍏冲垪琛� 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 ()); //--鎵惧嚭鏄惁瀛樺湪鍖归厤褰撳墠浣忓畢鐨刴ac锛屽瓨鍦ㄥ啀杩涜杩滅▼銆� - CurRemoteMACInfo = gatewayListRequestResult_Obj.pageData.Find ((obj) => obj.mac == UserConfig.Instance.CurrentRegion.MAC); - 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); + } } + } - } catch { } + + } + } catch (Exception ex) { + Console.WriteLine (ex.Message); } } catch (Exception ex) { System.Console.WriteLine ("============>" + ex.Message); @@ -306,7 +333,7 @@ //MainPage.Loading.Hide (); //isConnecting = false.ToString (); - Shared.SimpleControl.Phone.UserMiddle.LinkStatusTip.BackgroundColor = SkinStyle.Current.DelColor; + //Shared.SimpleControl.Phone.UserMiddle.LinkStatusTip.BackgroundColor = SkinStyle.Current.DelColor; #if DEBUG Alert a = new Alert (remoteMqttIsConnecting.ToString (), ex.Message, "Close"); a.Show (); @@ -348,7 +375,7 @@ } //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) { @@ -358,11 +385,11 @@ await RemoteMqttClient.PublishAsync (m); } } - } + //} break; case 1: topicName = $"/BusGateWayToClient/{CurRemoteMACInfo.macMark}/Common/#"; - if (remoteIsConnected) { + //if (remoteIsConnected) { try { await RemoteMqttClient.SubscribeAsync (topicName); } catch (Exception e) { @@ -372,7 +399,7 @@ await RemoteMqttClient.SubscribeAsync (topicName); } } - } + // } break; case 2: var macStr = CurRemoteMACInfo.mac.ToUpper (); @@ -389,9 +416,11 @@ CurRemoteMACInfo.md5_mac_string = builder.ToString ().ToUpper (); } - topicName = $"/NotifyBusGateWayInfoChagne/{CurRemoteMACInfo.md5_mac_string}"; - if (remoteIsConnected) { - try { + //topicName = $"/NotifyBusGateWayInfoChagne/{CurRemoteMACInfo.md5_mac_string}"; + //2020-01-11 淇敼璁㈤槄涓婚鍦板潃 + topicName = $"BusGateWayToClient/{CurRemoteMACInfo.macMark}/NotifyGateWayInfoChange"; + //if (remoteIsConnected) { + try { await RemoteMqttClient.SubscribeAsync (topicName); } catch (Exception e) { await DisConnectRemoteMqttClient (e.Message); @@ -400,7 +429,7 @@ await RemoteMqttClient.SubscribeAsync (topicName); } } - } + //} break; case 3: @@ -690,7 +719,7 @@ 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) { @@ -1089,4 +1118,4 @@ } } -*/ \ No newline at end of file +*/ -- Gitblit v1.8.0