From 965290476c027deb96891cde1095d9a100581a6b Mon Sep 17 00:00:00 2001
From: JLChen <551775569@qq.com>
Date: 星期四, 20 二月 2020 09:13:32 +0800
Subject: [PATCH] 2020-02-20 1.优化更新。

---
 Crabtree/SmartHome/UI/SimpleControl/MqttCommon.cs |   81 ++++++++++++++++++++++++++++++++++++++--
 1 files changed, 77 insertions(+), 4 deletions(-)

diff --git a/Crabtree/SmartHome/UI/SimpleControl/MqttCommon.cs b/Crabtree/SmartHome/UI/SimpleControl/MqttCommon.cs
index c01deed..b949444 100644
--- a/Crabtree/SmartHome/UI/SimpleControl/MqttCommon.cs
+++ b/Crabtree/SmartHome/UI/SimpleControl/MqttCommon.cs
@@ -21,6 +21,7 @@
         static string checkGatewayTopicBase64 = "";
         static RemoteMACInfo CurRemoteMACInfo = null;
         static MqttInfo mMqttInfo = null;
+        public static bool IsGatewayOnline = true;
 
         /// <summary>
         /// 鎵嬫満鏍囪瘑
@@ -97,7 +98,15 @@
                         QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce
                     };
 
-                    var topicFilters = new TopicFilter [] { topicFilterCommon, topicFilterGateWayInfoChange, topicFilterNotifySqueeze };
+                    //缃戝叧鎺夌嚎涓婚
+                    var topicFilterNotifyGateWayOffline = new TopicFilter () {
+                        Topic = $"/BusGateWayToClient/{CurRemoteMACInfo.macMark}/NotifyGateWayOffline",
+                        QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce
+                    };
+
+                    
+
+                    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;
@@ -121,6 +130,10 @@
                     System.Console.WriteLine ($"============>MqttRemote涓诲姩鏂紑_{s}");
                     //await RemoteMqttClient.DisconnectAsync(new MQTTnet.Client.Disconnecting.MqttClientDisconnectOptions { }, CancellationToken.None);
                     await RemoteMqttClient.DisconnectAsync ();
+                    if (CommonPage.IsRemote) {
+                        Utlis.ShowAppLinkStatus (AppLinkStatus.CloudUnlink);
+                    }
+                   
                 }
             } catch (Exception e) {
                 System.Console.WriteLine ($"============>MqttRemote鏂紑閫氳杩炴帴鍑哄紓甯�:{e.Message}");
@@ -178,6 +191,8 @@
                                     //2020-01-11 淇敼璁㈤槄涓婚鍦板潃
                                     if (aesDecryptTopic == $"/BusGateWayToClient/{CurRemoteMACInfo.macMark}/NotifyBusGateWayInfoChange") {//缃戝叧涓婄嚎锛岄渶瑕佹洿鏂癮eskey                                                                                                                     //----绗簩姝ワ細璇诲彇璐﹀彿涓嬮潰鐨勭綉鍏冲垪琛�
                                         await ReceiveNotifyBusGateWayInfoChange ();
+                                    } else if (aesDecryptTopic == $"/BusGateWayToClient/{CurRemoteMACInfo.macMark}/NotifyGateWayOffline") {//缃戝叧鎺夌嚎                                                                                                                    //----绗簩姝ワ細璇诲彇璐﹀彿涓嬮潰鐨勭綉鍏冲垪琛�
+                                        ReceiveNotifyGateWayOffline ();
                                     } else if (aesDecryptTopic == $"/BusGateWayToClient/{mMqttInfo.connEmqClientId}/Push/NotifySqueeze") {//璁㈤槄鎸や笅绾块棶棰�
                                         await ReceiveNotifySqueezeAsync (aesDecryptPayload);
                                     }else if (aesDecryptTopic == $"/BusGateWayToClient/{CurRemoteMACInfo.macMark}/Common/CheckGateway") {
@@ -250,20 +265,39 @@
                         }
                         if (RemoteMqttClient.ConnectedHandler == null) {
                             RemoteMqttClient.UseConnectedHandler (async (e) => {
+                                IfNeedReadAllDeviceStatus = true;
 
-                                Shared.SimpleControl.Phone.UserMiddle.ReadAllDeviceStatus ();
+
                                 System.Console.WriteLine ($"============>Mqtt杩滅▼杩炴帴鎴愬姛");
                                 if (CommonPage.IsRemote) {
                                     Utlis.ShowAppLinkStatus (AppLinkStatus.CloudLink);
                                 }
 
                                 if (CurRemoteMACInfo != null) {
-                                    if (CurRemoteMACInfo.isValid == "InValid") {
+                                    IsGatewayOnline = CurRemoteMACInfo.isValid != "InValid";
+                                    if (!IsGatewayOnline) {
+                                        //缃戝叧涓嶅湪绾�
+                                        if (CommonPage.IsRemote) {
+                                            Utlis.ShowAppLinkStatus (AppLinkStatus.CloudOffline);
+                                        }
                                         MainPage.AddTip ("Remote failed,gateway offline");
                                     } else {
+                                        //缃戝叧鍦ㄧ嚎
+
+                                        //閲嶆柊涓�娆℃墍鏈夎澶囩姸鎬�
+                                        IfNeedReadAllDeviceStatus = false;
+                                        Shared.SimpleControl.Phone.UserMiddle.ReadAllDeviceStatus ();
+                                        //
                                         MqttRemoteSend (new byte [] { 0 }, 3);
                                     }
+
+                                    //if (CurRemoteMACInfo.isValid == "InValid") {
+                                    //    MainPage.AddTip ("Remote failed,gateway offline");
+                                    //} else {
+                                    //    MqttRemoteSend (new byte [] { 0 }, 3);
+                                    //}
                                 }
+
 
                             });
                         }
@@ -488,12 +522,33 @@
 
            
         }
-
+        /// <summary>
+        /// 鏄惁闇�瑕佽鍙栦竴娆℃墍鏈夎澶囩姸鎬�
+        /// </summary>
+        static bool IfNeedReadAllDeviceStatus = true;
         /// <summary>
         /// 鏀跺埌缃戝叧涓婄嚎娑堟伅
         /// </summary>
         static async Task ReceiveNotifyBusGateWayInfoChange ()
         {
+            System.Console.WriteLine ("============>Mqtt 缃戝叧涓婄嚎");
+            IsGatewayOnline = true;
+            if (CommonPage.IsRemote) {
+
+                if (MainPage.WiFiStatus != "CrabtreeAdd/CloudLink.png") {
+                    Utlis.ShowAppLinkStatus (AppLinkStatus.CloudLink);
+                }
+//#if DEBUG
+                MainPage.AddTip ("Gateway login online");
+//#endif
+                if (IfNeedReadAllDeviceStatus) {
+                    IfNeedReadAllDeviceStatus = false;
+                    Shared.SimpleControl.Phone.UserMiddle.ReadAllDeviceStatus ();
+                }
+
+
+            }
+
             //褰撳墠浣忓畢涓嶆槸鍒嗕韩鏉�
             if (!UserConfig.Instance.CurrentRegion.IsOthreShare) {
 
@@ -513,6 +568,24 @@
             }
 
         }
+        /// <summary>
+        /// 鏀跺埌缃戝叧鎺夌嚎淇℃伅
+        /// </summary>
+        static void ReceiveNotifyGateWayOffline ()
+        {
+            System.Console.WriteLine ("============>Mqtt GateWayOffline");
+            IsGatewayOnline = false;
+            if (CommonPage.IsRemote) {
+                Utlis.ShowAppLinkStatus (AppLinkStatus.CloudOffline);
+                MainPage.AddTip ("Remote failed,gateway offline");
+                //if (MainPage.WiFiStatus != "CrabtreeAdd/CloudUnlink.png") {
+                //    Utlis.ShowAppLinkStatus (AppLinkStatus.CloudUnlink);
+                //}
+
+            }
+        }
+
+        
 
         /// <summary>
         /// 鏀跺埌鎸や笅绾挎帹閫�

--
Gitblit v1.8.0