From fef8136ca77f03dc4fb8988da94dcaf9dcabc9e0 Mon Sep 17 00:00:00 2001
From: JLChen <551775569@qq.com>
Date: 星期三, 22 四月 2020 19:09:54 +0800
Subject: [PATCH] 2020-04-22 1.增加远程连接过程提示,请求参数合并到一个接口。

---
 Crabtree/SmartHome/UI/SimpleControl/MqttCommon.cs |  462 ++++++++++++++++++++++++---------------------------------
 1 files changed, 192 insertions(+), 270 deletions(-)

diff --git a/Crabtree/SmartHome/UI/SimpleControl/MqttCommon.cs b/Crabtree/SmartHome/UI/SimpleControl/MqttCommon.cs
index f580d57..0774a26 100644
--- a/Crabtree/SmartHome/UI/SimpleControl/MqttCommon.cs
+++ b/Crabtree/SmartHome/UI/SimpleControl/MqttCommon.cs
@@ -108,18 +108,17 @@
                     };
 
                     
-
                     var topicFilters = new TopicFilter [] { topicFilterCommon, topicFilterGateWayInfoChange, topicFilterNotifySqueeze, topicFilterNotifyGateWayOffline };
                     var result = await RemoteMqttClient.SubscribeAsync (topicFilters);
                     if (result.Items [0].ResultCode == MQTTnet.Client.Subscribing.MqttClientSubscribeResultCode.GrantedQoS2) {
                         isSubscribeTopicSuccess = true;
                     }
                 }
-            } catch (Exception e) {
-               
+            } catch (Exception ex) {
+
+              
             }
         }
-
 
 
         /// <summary>
@@ -149,9 +148,6 @@
         /// 鎺ㄩ�佹爣璇�
         /// </summary>
         static string PushSignStr = System.DateTime.Now.Ticks.ToString ();
-
-
-
 
 
         /// <summary>
@@ -224,16 +220,6 @@
                             Utlis.WriteLine ($"============>Mqtt杩滅▼杩炴帴鏂紑");
                             isSubscribeTopicSuccess = false;
                             await DisConnectRemoteMqttClient ("StartRemoteMqtt.DisconnectedHandler");
-                            //await StartRemoteMqtt();
-                            //if (thisShowTip) {
-                            //    if (CommonPage.IsRemote) {
-                            //        Application.RunOnMainThread (() => {
-                            //            MainPage.Loading.Hide ();
-                            //        });
-                            //    }
-                            //} else {
-                            //    thisShowTip = true;
-                            //}
                         });
                     }
                     if (RemoteMqttClient.ConnectedHandler == null) {
@@ -258,9 +244,7 @@
                                     MainPage.AddTip ("Remote failed,gateway offline");
                                 } else {
                                     //Remote Connection Succeeded
-
                                     //缃戝叧鍦ㄧ嚎
-
                                     //閲嶆柊涓�娆℃墍鏈夎澶囩姸鎬�
                                     IfNeedReadAllDeviceStatus = false;
                                     Shared.SimpleControl.Phone.UserMiddle.ReadAllDeviceStatus ();
@@ -271,81 +255,21 @@
                                         MainPage.AddTip (Language.StringByID (Shared.SimpleControl.R.MyInternationalizationString.LinkSuccess));
                                     }
                                 }
-
-                                //if (CurRemoteMACInfo.isValid == "InValid") {
-                                //    MainPage.AddTip ("Remote failed,gateway offline");
-                                //} else {
-                                //    MqttRemoteSend (new byte [] { 0 }, 3);
-                                //}
                             }
-
-
                         });
                     }
                     #endregion
                     //}
-                    //姝e湪鑾峰彇杩炴帴鍙傛暟..."
+                    //鎻愮ず姝e湪鑾峰彇杩炴帴鍙傛暟..."
                     ShowStartTip ();
-
                     mqttRequestParToken = MainPage.LoginUser.LoginTokenString;
-                    //--绗竴姝ワ細鑾峰彇mqtt閾炬帴鍙傛暟
-                    var mqttInfoRequestResult = new ResponsePack () { StateCode = "" };
                     //--鍒ゆ柇鏄綋鍓嶆槸鍚﹀垎浜殑浣忓畢
                     if (!UserConfig.Instance.CurrentRegion.IsOthreShare) {
-                        var mqttInfoUrl = $"{MainPage.RequestHttpsHost}/EmqMqtt/GetConnMqttInfo";//鑾峰彇杩炴帴杩滅▼浜戠Emq Mqtt 鏈嶅姟鍣ㄨ繛鎺ヤ俊鎭�
-                        var mqttInfoRequestPar = new GetConnMqttInfoObj () {
-                            LoginAccessToken = mqttRequestParToken,
-                            PlatformStr = "L1",
-                            PublishPayloadJsonStr = PushSignStr,
-                        };
-                        mqttInfoRequestResult = MainPage.RequestHttps ("", Newtonsoft.Json.JsonConvert.SerializeObject (mqttInfoRequestPar), mqttInfoUrl);
-                        if (mqttInfoRequestResult != null && mqttInfoRequestResult.ResponseData != null) {
-                            var mqttInfoRequestResult_info = Newtonsoft.Json.JsonConvert.DeserializeObject<MqttInfo> (mqttInfoRequestResult.ResponseData.ToString ());
-                            if (mqttInfoRequestResult_info != null) {
-                                mMqttInfo = mqttInfoRequestResult_info;
-                                //----绗簩姝ワ細璇诲彇璐﹀彿涓嬮潰鐨勭綉鍏冲垪琛�
-                                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), gatewayListUrl);
-                                var gatewayListRequestResult_Obj = Newtonsoft.Json.JsonConvert.DeserializeObject<MqttRemoteInfo> (gatewayListRequestResult.ResponseData.ToString ());
-                                //--鎵惧嚭鏄惁瀛樺湪鍖归厤褰撳墠浣忓畢鐨刴ac锛屽瓨鍦ㄥ啀杩涜杩滅▼銆�
-                                if (UserConfig.Instance.CheckHomeGatewaysNotEmpty ()) {
-                                    CurRemoteMACInfo = gatewayListRequestResult_Obj.pageData.Find ((obj) => obj.mac == UserConfig.Instance.CurrentRegion.HomeGateways [0].GatewayUniqueId);
-                                    //CurRemoteMACInfo = gatewayListRequestResult_Obj.pageData [0];
-                                    await MQTTConnectAsync ();
-
-                                } else {
-                                    Utlis.WriteLine ("============>Mqtt 鍙栨秷杩炴帴锛屽綋鍓嶄綇瀹呮病缁戝畾缃戝叧");
-                                }
-
-                            } else {
-                                Utlis.WriteLine ("============>Mqtt GetGatewayPagger 澶辫触");
-                            }
-
-                        } else {
-                            Utlis.WriteLine ("============>Mqtt GetInfo 澶辫触");
-                        }
+                        //涓昏处鍙疯幏鍙朚QTT 杩滅▼閾炬帴淇℃伅锛屽苟杩炴帴
+                        await GetMqttInfoAndMQTTConnectAsync ();
                     } else {
                         //濡傛灉鏄垎浜繃鏉ョ殑浣忓畢 璧颁笅闈㈡祦绋�
-                        var mqttInfoRequestPar = new ShareMemberConnMqttInfoObj () {
-                            LoginAccessToken = mqttRequestParToken,
-                            PlatformStr = "L1",
-                            PublishPayloadJsonStr = PushSignStr,
-                            MainUserDistributedMark = UserConfig.Instance.CurrentRegion.MainUserDistributedMark,
-                            HomeId = UserConfig.Instance.CurrentRegion.Id
-                        };
-                        mqttInfoRequestResult = MainPage.RequestHttps (API.ShareMemberConnMqttInfo, Newtonsoft.Json.JsonConvert.SerializeObject (mqttInfoRequestPar));
-                        //--绗竴姝ワ細鑾峰彇mqtt閾炬帴鍙傛暟
-                        if (mqttInfoRequestResult != null && mqttInfoRequestResult.ResponseData != null) {
-                            var mqttInfoRequestResult_info = Newtonsoft.Json.JsonConvert.DeserializeObject<MqttInfo> (mqttInfoRequestResult.ResponseData.ToString ());
-                            if (mqttInfoRequestResult_info != null) {
-                                mMqttInfo = mqttInfoRequestResult_info;
-                                //--绗簩姝ワ細鑾峰彇褰撳墠浣忓垎浜畢缃戝叧淇℃伅骞惰繛鎺QTT
-                                await GetSingleHomeGatewayPaggerAndMQTTConnectAsync ();
-
-                            }
-
-                        }
+                        await GetShareMqttInfoAndMQTTConnectAsync ();
                     }
 
                 } catch (Exception ex) {
@@ -358,45 +282,159 @@
         }
 
         /// <summary>
+        /// 涓昏处鍙疯幏鍙朚QTT 杩滅▼閾炬帴淇℃伅锛屽苟杩炴帴
+        /// </summary>
+        /// <returns></returns>
+        static async Task GetMqttInfoAndMQTTConnectAsync ()
+        {
+            var mqttInfoRequestPar = new GetConnMqttInfoObj () {
+                LoginAccessToken = MainPage.LoginUser.LoginTokenString,
+                PlatformStr = "L1",
+                PublishPayloadJsonStr = PushSignStr,
+                Mac = UserConfig.Instance.GatewayMAC,
+            };
+            //----绗竴姝ワ細鑾峰彇mqtt閾炬帴鍙傛暟
+            var mqttInfoRequestResult = MainPage.RequestHttps (API.GetConnMqttInfo, Newtonsoft.Json.JsonConvert.SerializeObject (mqttInfoRequestPar));
+
+            if (mqttInfoRequestResult != null && mqttInfoRequestResult.ResponseData != null) {
+                try {
+                    var mqttInfoRequestResult_Obj = Newtonsoft.Json.JsonConvert.DeserializeObject<MqttInfo> (mqttInfoRequestResult.ResponseData.ToString ());
+
+                    if (mqttInfoRequestResult_Obj != null) {
+                        mMqttInfo = mqttInfoRequestResult_Obj;
+                        string url = mqttInfoRequestResult_Obj.connEmqDomainPort;
+                        string clientId = mqttInfoRequestResult_Obj.connEmqClientId;
+                        string username = mqttInfoRequestResult_Obj.connEmqUserName;
+                        string passwordRemote = mqttInfoRequestResult_Obj.connEmqPwd;
+                        if (mqttInfoRequestResult_Obj.AccountAllGateways != null && mqttInfoRequestResult_Obj.AccountAllGateways.Count > 0) {
+                            //----绗簩姝ユ壘鍑烘槸鍚﹀瓨鍦ㄥ尮閰嶅綋鍓嶄綇瀹呯殑mac锛屽瓨鍦ㄥ啀杩涜杩滅▼銆�
+                            CurRemoteMACInfo = mqttInfoRequestResult_Obj.AccountAllGateways.Find ((obj) => obj.mac == UserConfig.Instance.GatewayMAC);
+                            if (CurRemoteMACInfo != null) {
+                                CurRemoteMACInfo.LoginAccessToken = MainPage.LoginUser.LoginTokenString;
+                                CurRemoteMACInfo.clientId = clientId;
+                                //----绗笁姝� 寮�濮嬭繛鎺�
+                                await MQTTConnectAsync ();
+                            } else {
+                                Utlis.WriteLine ("============>Mqtt CurRemoteMACInfo null");
+                            }
+                        }
+
+                    } else {
+                        Utlis.WriteLine ("============>Mqtt mqttInfoRequestResult_Obj null");
+                    }
+                } catch { }
+            } else {
+                Utlis.WriteLine ("============>Mqtt GetInfo 澶辫触");
+            }
+
+        }
+
+        /// <summary>
+        /// 瀛愯处鍙疯幏鍙朚QTT 杩滅▼閾炬帴淇℃伅锛屽苟杩炴帴
+        /// </summary>
+        /// <returns></returns>
+        static async Task GetShareMqttInfoAndMQTTConnectAsync ()
+        {
+            var mqttInfoRequestPar = new ShareMemberConnMqttInfoObj () {
+                LoginAccessToken = mqttRequestParToken,
+                PlatformStr = "L1",
+                PublishPayloadJsonStr = PushSignStr,
+                MainUserDistributedMark = UserConfig.Instance.CurrentRegion.MainUserDistributedMark,
+                HomeId = UserConfig.Instance.CurrentRegion.Id
+            };
+            var mqttInfoRequestResult = MainPage.RequestHttps (API.ShareMemberConnMqttInfo, Newtonsoft.Json.JsonConvert.SerializeObject (mqttInfoRequestPar));
+            //--绗竴姝ワ細鑾峰彇mqtt閾炬帴鍙傛暟
+            if (mqttInfoRequestResult != null && mqttInfoRequestResult.ResponseData != null) {
+                var mqttInfoRequestResult_info = Newtonsoft.Json.JsonConvert.DeserializeObject<MqttInfo> (mqttInfoRequestResult.ResponseData.ToString ());
+                if (mqttInfoRequestResult_info != null) {
+                    mMqttInfo = mqttInfoRequestResult_info;
+                    //--绗簩姝ワ細鑾峰彇褰撳墠浣忓垎浜畢缃戝叧淇℃伅骞惰繛鎺QTT
+                    await GetSingleHomeGatewayPaggerAndMQTTConnectAsync ();
+                }
+            }
+        }
+
+        /// <summary>
         /// 杩炴帴MQTT
         /// </summary>
         static async Task MQTTConnectAsync ()
         {
-
             if (CurRemoteMACInfo != null && mMqttInfo != null) {
+
+             
+                //鑾峰彇鍙傛暟鎴愬姛锛屽紑濮嬭繛鎺�...
                 MainPage.AddTip ("Successfully obtained parameters, starting to connect...");
+                //try {
+                //    var url = mMqttInfo.connEmqDomainPort;
+                //    var clientId = mMqttInfo.connEmqClientId;
+                //    var username = mMqttInfo.connEmqUserName;
+                //    var passwordRemote = mMqttInfo.connEmqPwd;
+                //    CurRemoteMACInfo.clientId = clientId;
+                //    CurRemoteMACInfo.LoginAccessToken = MainPage.LoginUser.LoginTokenString;
+                //    mqttEncryptKey = CurRemoteMACInfo.isNewBusproGateway ? CurRemoteMACInfo.aesKey : "";
+                //    //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;
+                //    IsDisConnectingWithSendCatch = false;
+                //} catch (Exception ex) {
+                //    Console.WriteLine ("Connect error: " + ex.Message);
+                //}
 
-                var url = mMqttInfo.connEmqDomainPort;
-                var clientId = mMqttInfo.connEmqClientId;
-                var username = mMqttInfo.connEmqUserName;
-                var passwordRemote = mMqttInfo.connEmqPwd;
+                string mes = "";
+                try {
 
-                CurRemoteMACInfo.LoginAccessToken = MainPage.LoginUser.LoginTokenString;
-                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 ();
+                    var url = mMqttInfo.connEmqDomainPort;
+                    var clientId = mMqttInfo.connEmqClientId;
+                    var username = mMqttInfo.connEmqUserName;
+                    var passwordRemote = mMqttInfo.connEmqPwd;
 
-                await DisConnectRemoteMqttClient ("StartRemoteMqtt");
-                await RemoteMqttClient.ConnectAsync (options1);
-                remoteIsConnected = true;
-                IsDisConnectingWithSendCatch = false;
-                //await MqttRemoteSend (new byte [] { 0 }, 1);
-                //await MqttRemoteSend (new byte [] { 0 }, 2);
-                //await MqttRemoteSend (new byte [] { 0 }, 4);
+                    mes = "step1.Set Data";
+                    CurRemoteMACInfo.LoginAccessToken = MainPage.LoginUser.LoginTokenString;
+                    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 ();
+
+                    mes = "step2.DisConnect";
+                    await DisConnectRemoteMqttClient ("StartRemoteMqtt");
+                    //MainPage.AddTip ("Start to connect...");
+                    mes = "step3.Start to connect";
+                    await RemoteMqttClient.ConnectAsync (options1);
+                    mes = "step4.Connected Success";
+                    remoteIsConnected = true;
+                    IsDisConnectingWithSendCatch = false;
+
+                    //MainPage.AddTip ("Connection succeeded!");
+                    //await MqttRemoteSend (new byte [] { 0 }, 1);
+                    //await MqttRemoteSend (new byte [] { 0 }, 2);
+                    //await MqttRemoteSend (new byte [] { 0 }, 4);
+
+                } catch (Exception ex) {
+                    mes = ex.Message;
+                    //options1 寮傚父鎻愮ず
+                    //Console.WriteLine("Connect error: " + ex.Message);
+                    //MainPage.ShowAlertOnMainThread ("Connect error: " + ex.Message);
+                } finally {
+                    MainPage.ShowAlertOnMainThread ("finally: " + mes);
+                    //MainPage.AddTip ("finally: " + mes);
+                }
 
             }
         }
 
-
-//        571=Starting remote connection mode...
-//572=Getting remote connection parameters...
-//573=Successfully obtained parameters, starting to connect...
         /// <summary>
         /// 浠庡紑濮嬪埌杩炴帴鎴愬姛锛屽彧鎻愮ず1娆�
         /// </summary>
@@ -412,68 +450,7 @@
                     MainPage.AddTip ("Getting remote connection parameters...");
                 }
             }
-
         }
-
-        ///// <summary>
-        ///// 
-        ///// </summary>
-        ///// <param name="message">闄勫姞鏁版嵁鍖�</param>
-        ///// <param name="optionType">鎿嶄綔绫诲瀷锛�0=缃戝叧鎺у埗锛�1=璁㈤槄缃戝叧鏁版嵁;2=璁㈤槄缃戝叧涓婄嚎鏁版嵁;3=璁㈤槄缃戝叧鏄惁鍦ㄧ嚎涓婚  4=璁㈤槄鎸や笅绾夸富棰� </param>
-        ///// <returns></returns>
-        //public static async Task MqttRemoteSend (byte [] message, int optionType = 0)
-        //{
-        //    try {
-        //        if (!remoteIsConnected) {
-        //            Utlis.WriteLine ($"============>Mqtt 鏈繛鎺� 鍙栨秷鍙戦��");
-        //            return;
-        //        }
-
-        //        var topicName = @"/" + MainPage.LoginUser.AccountString.ToLower () + @"/" + UserConfig.Instance.GatewayMAC.Replace (".", "") + @"/" + currentGuid;
-        //        switch (optionType) {
-        //        case 0:
-        //            var messageSend = message;
-        //            if (string.IsNullOrEmpty (mqttEncryptKey)) {
-        //                topicName = $"/ClientToBusGateWay/{CurRemoteMACInfo.macMark}/Common/OldON";
-        //            } else {
-        //                topicName = $"/ClientToBusGateWay/{CurRemoteMACInfo.macMark}/Common/NewON";
-        //                messageSend = Shared.Securitys.EncryptionService.AesEncryptPayload (message, mqttEncryptKey);
-        //            }
-        //            //base64鍔犲瘑
-        //            var m = new MqttApplicationMessage { Topic = topicName, Payload = messageSend, Retain = false, QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce };
-        //            //if (remoteIsConnected) {
-        //            try {
-        //                RemoteMqttClient.PublishAsync (m);
-        //            } catch (Exception e) {
-        //                //await DisConnectRemoteMqttClient (e.Message);
-        //                //await StartCloudMqtt ();
-        //                //if (remoteIsConnected) {
-        //                //    RemoteMqttClient.PublishAsync (m);
-        //                //}
-        //            }
-        //            //}
-        //            break;
-        //        case 3:
-        //            topicName = $"/ClientToBusGateWay/{CurRemoteMACInfo.macMark}/Common/CheckGateway";
-
-        //            var m1 = new MqttApplicationMessage { Topic = topicName, Retain = false, QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce };
-
-        //            try {
-        //                Utlis.WriteLine ("CheckGateway");
-        //                RemoteMqttClient.PublishAsync (m1);
-        //            } catch (Exception e) {
-        //                Utlis.WriteLine ($"CheckGateway Fail:{e.Message}");
-        //                //await DisConnectRemoteMqttClient (e.Message);
-        //                //await StartCloudMqtt ();
-        //            }
-        //            break;
-        //        }
-
-
-        //    } catch (Exception e) {
-
-        //    }
-        //}
 
         /// <summary>
         /// 
@@ -518,8 +495,6 @@
         /// SendCatch 鍚庢墽琛屼竴娆℃柇寮�鎿嶄綔
         /// </summary>
         static bool IsDisConnectingWithSendCatch = false;
-
-     
 
         /// <summary>
         /// 鍒嗕韩浣忓畢 鑾峰彇褰撳墠浣忓畢缃戝叧淇℃伅骞朵笖杩炴帴MQTT 鎴栬�呭埛鏂�  
@@ -600,25 +575,8 @@
                     Shared.SimpleControl.Phone.UserMiddle.ReadAllDeviceStatus ();
                 }
             }
-
-            //褰撳墠浣忓畢涓嶆槸鍒嗕韩鏉�
-            if (!UserConfig.Instance.CurrentRegion.IsOthreShare) {
-
-                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), gatewayListUrl);
-                var gatewayListRequestResult_Obj = Newtonsoft.Json.JsonConvert.DeserializeObject<MqttRemoteInfo> (gatewayListRequestResult.ResponseData.ToString ());
-                if (gatewayListRequestResult_Obj != null && gatewayListRequestResult_Obj.pageData.Count > 0) {
-                    var mData = gatewayListRequestResult_Obj.pageData.Find ((obj) => obj.mac == UserConfig.Instance.CurrentRegion.HomeGateways [0].GatewayUniqueId);
-                    if (mData != null) {
-                        CurRemoteMACInfo.aesKey = mData.aesKey;
-                        mqttEncryptKey = CurRemoteMACInfo.aesKey;
-                    }
-                }
-            } else {
-                GetSingleHomeGatewayPaggerAndMQTTConnectAsync (false);
-            }
-
+            //璇锋眰鍒锋柊涓�娆� 缃戝叧鍔犲瘑Key
+            await GetSingleHomeGatewayPaggerAndMQTTConnectAsync (false);
         }
         /// <summary>
         /// 鏀跺埌缃戝叧鎺夌嚎淇℃伅
@@ -660,48 +618,48 @@
 
         //}
 
-        /// <summary>
-        /// 瀹氭椂妫�娴嬬綉鍏虫槸鍚﹀湪绾�
-        /// 1.绾跨▼浼戠湢闂撮殧5s
-        /// 2.鍙戦�丆heckGateway闂撮殧涓�9S锛屾敹鍒颁富棰樺埛鏂拌鏃堕棿锛岄噸缃彂閫佹鏁�
-        /// 3.鍙戦�佹鏁板埌杈�3娆′互涓婏紝鍒欏垽瀹氱綉鍏充负绂荤嚎鐘舵��
-        /// </summary>
-        /// <returns></returns>
-        static void InitCheckGateway ()
-        {
-            new System.Threading.Thread (async () => {
-                while (true) {
-                    try {
+//        /// <summary>
+//        /// 瀹氭椂妫�娴嬬綉鍏虫槸鍚﹀湪绾�
+//        /// 1.绾跨▼浼戠湢闂撮殧5s
+//        /// 2.鍙戦�丆heckGateway闂撮殧涓�9S锛屾敹鍒颁富棰樺埛鏂拌鏃堕棿锛岄噸缃彂閫佹鏁�
+//        /// 3.鍙戦�佹鏁板埌杈�3娆′互涓婏紝鍒欏垽瀹氱綉鍏充负绂荤嚎鐘舵��
+//        /// </summary>
+//        /// <returns></returns>
+//        static void InitCheckGateway ()
+//        {
+//            new System.Threading.Thread (async () => {
+//                while (true) {
+//                    try {
 
-                        if (CommonPage.IsRemote && remoteIsConnected) {
-                            if (CheckGatewayCount >= 3) {
-                                //杩炵画3娆℃病鍥炲锛屽垽瀹氱綉鍏宠秴鏃�
-                                if (MainPage.WiFiStatus == "CrabtreeAdd/CloudLink.png") {
-                                    //IsGatewayOnline = false;
-                                    Utlis.ShowAppLinkStatus (AppLinkStatus.CloudOffline);
-                                    MainPage.AddTip ("Gateway offline!");
-                                }
-                            }
+//                        if (CommonPage.IsRemote && remoteIsConnected) {
+//                            if (CheckGatewayCount >= 3) {
+//                                //杩炵画3娆℃病鍥炲锛屽垽瀹氱綉鍏宠秴鏃�
+//                                if (MainPage.WiFiStatus == "CrabtreeAdd/CloudLink.png") {
+//                                    //IsGatewayOnline = false;
+//                                    Utlis.ShowAppLinkStatus (AppLinkStatus.CloudOffline);
+//                                    MainPage.AddTip ("Gateway offline!");
+//                                }
+//                            }
 
-                            if (mCheckGatewayTime.AddSeconds (10).Ticks <= System.DateTime.Now.Ticks) {
-                                mCheckGatewayTime = DateTime.Now;
-                                //CheckGateway
-                                MqttRemoteSend (new byte [] { }, 3);
-                                CheckGatewayCount++;
-#if DEBUG
-                                Utlis.WriteLine ("CheckGateway");
-#endif
+//                            if (mCheckGatewayTime.AddSeconds (10).Ticks <= System.DateTime.Now.Ticks) {
+//                                mCheckGatewayTime = DateTime.Now;
+//                                //CheckGateway
+//                                MqttRemoteSend (new byte [] { }, 3);
+//                                CheckGatewayCount++;
+//#if DEBUG
+//                                Utlis.WriteLine ("CheckGateway");
+//#endif
 
 
-                            }
-                        }
+//                            }
+//                        }
 
-                        System.Threading.Thread.Sleep (5500);
-                    } catch { }
+//                        System.Threading.Thread.Sleep (5500);
+//                    } catch { }
 
-                }
-            }) { IsBackground = true }.Start ();
-        }
+//                }
+//            }) { IsBackground = true }.Start ();
+//        }
 
        
         /// <summary>
@@ -710,49 +668,8 @@
         static void ReceiveCheckGatewayTopic () {
             //Utlis.WriteLine ("============>Mqtt CheckGateway缃戝叧鍥炲");
             SetGatewayOnlineResetCheck ();
-          
-
-            //鏃х綉鍏虫柟娉�
-            //MainPage.WiFiStatus = "CrabtreeAdd/CloudUnlink.png";
-            //// = $"/ClientToBusGateWay/{CurRemoteMACInfo.macMark}/Common/OldON";
-            //var ss = CommonPage.MyEncodingUTF8.GetString (aesDecryptPayload);
-            //var obj = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponsePack> (ss);
-            //if (obj == null) {
-            //    return;
-            //}
-            //switch (obj.StateCode) {
-            //case "HDLUdpDataForwardServerMqttClientNoOnLine":
-            //case "NoOnline":
-            //case "NetworkAnomaly"://涓嶅湪绾�
-            //    MainPage.AddTip ("Gateway offline");
-            //    //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;
-            //    //});
-            //    break;
-            //case "Success":
-            //    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;
-            //    //});
-            //    break;
-            //}
-            //Application.RunOnMainThread (() => {
-            //    UserMiddle.btnLinkStatus.UnSelectedImagePath = MainPage.WiFiStatus;
-            //});
         }
         
-
-
         /// <summary>
         /// 鏀跺埌鎸や笅绾挎帹閫�
         /// </summary>
@@ -761,7 +678,6 @@
             Utlis.WriteLine ($"============>MqttNotifySqueeze: {ErrorCode.LoginInAnotherDevice}");
             var mMes = CommonPage.MyEncodingUTF8.GetString (mes);
             if (mMes == PushSignStr) return;//鏄嚜宸辩殑鐧诲綍鎺ㄩ�佷笉澶勭悊
-
 
             CommonPage.IsRemote = false;
 
@@ -779,7 +695,6 @@
             MainPage.ShowAlertOnMainThread (ErrorCode.LoginInAnotherDevice);
 
             Application.RunOnMainThread (() => {
-               
                 MainPage.WiFiStatus = "CrabtreeAdd/WiFi.png";
                 UserMiddle.btnLinkStatus.UnSelectedImagePath = MainPage.WiFiStatus;
                 new AccountLogin ().Show ();
@@ -792,7 +707,6 @@
 
 public class ShareMemberConnMqttInfoObj : GetConnMqttInfoObj
 {
-
     /// <summary>
     /// 涓讳汉鐢ㄦ埛Id 
     /// </summary>
@@ -819,6 +733,10 @@
     /// 
     /// </summary>
     public string PublishPayloadJsonStr = "";
+    /// <summary>
+    /// Mac
+    /// </summary>
+    public string Mac = "";
 }
 
 public class RemoteRequestParameters
@@ -852,6 +770,8 @@
     public string connEmqClientId;
     public string connEmqUserName;
     public string connEmqPwd;
+
+    public List<RemoteMACInfo> AccountAllGateways;
 }
 
 public class RemoteMACInfo
@@ -865,6 +785,8 @@
     public string projectName;
     public string userName;
 
+    public string clientId;
+
     //app鑷畾涔夋暟鎹�
     public string md5_mac_string;
     public string LoginAccessToken;

--
Gitblit v1.8.0