From eb3a71699bcf371db801165e3af65951b1292706 Mon Sep 17 00:00:00 2001
From: wei <kaede@kaededeMacBook-Air.local>
Date: 星期四, 24 十二月 2020 15:10:05 +0800
Subject: [PATCH] 20201224-3

---
 HDL-ON_Android/Assets/Language.ini                      |    1 
 HDL_ON/Common/ApiUtlis.cs                               |   88 +++++-----
 HDL_ON/Entity/DB_ResidenceData.cs                       |    2 
 HDL_ON/DAL/DriverLayer/Control_Udp.cs                   |    4 
 HDL_ON/DAL/Mqtt/MqttClient.cs                           |   40 ++--
 HDL-ON_iOS/Resources/Language.ini                       |    1 
 HDL_ON/Common/HDLCommon.cs                              |    4 
 HDL_ON/UI/UI2/2-Classification/ClassificationPageBLL.cs |  125 ++++++++++-----
 HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs    |   10 +
 HDL_ON/Common/R.cs                                      |    1 
 HDL_ON/DAL/Server/HttpServerRequest.cs                  |   23 +-
 HDL_ON/DAL/DriverLayer/Packet.cs                        |    8 +
 HDL_ON/UI/UI2/FuntionControlView/AC/ACPageBLL.cs        |    4 
 .vs/HDL_APP_Project/xs/UserPrefs.xml                    |   57 ++----
 HDL_ON/DAL/DriverLayer/Control.cs                       |   76 +++++++--
 HDL_ON/UI/UI1-Login/LoginPage.cs                        |    2 
 16 files changed, 262 insertions(+), 184 deletions(-)

diff --git a/.vs/HDL_APP_Project/xs/UserPrefs.xml b/.vs/HDL_APP_Project/xs/UserPrefs.xml
index 9034e6f..2783466 100644
--- a/.vs/HDL_APP_Project/xs/UserPrefs.xml
+++ b/.vs/HDL_APP_Project/xs/UserPrefs.xml
@@ -1,48 +1,29 @@
 锘�<Properties StartupConfiguration="{D998E133-F0DD-4760-BE3C-461632F54DA4}|Default">
-  <MonoDevelop.Ide.ItemProperties.HDL-ON__iOS PreferredExecutionTarget="MonoDevelop.IPhone.IPhoneSimulatorTarget.94B44E9C-E1BC-4BF7-812E-FC71E9B623B2" />
-  <MonoDevelop.Ide.Workbench ActiveDocument="HDL_ON/Entity/FunctionList.cs">
+  <MonoDevelop.Ide.ItemProperties.HDL-ON__iOS PreferredExecutionTarget="MonoDevelop.IPhone.IPhoneDeviceTarget.00008020-000404163432002E" />
+  <MonoDevelop.Ide.Workbench ActiveDocument="HDL-ON_iOS/Info.plist">
     <Files>
-      <File FileName="HDL_ON/Common/ApiUtlis.cs" Line="220" Column="73" />
-      <File FileName="HDL_ON/UI/UI2/1-HomePage/HomePage.cs" Line="922" Column="1" />
-      <File FileName="HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs" Line="111" Column="123" />
-      <File FileName="HDL_ON/UI/UI2/2-Classification/FunctionControlZoneBLL.cs" Line="91" Column="22" />
-      <File FileName="HDL_ON/Entity/Function/Function.cs" Line="612" Column="29" />
-      <File FileName="HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs" Line="90" Column="1" />
-      <File FileName="HDL_ON/DAL/DriverLayer/Control.cs" Line="621" Column="1" />
-      <File FileName="HDL_ON/Entity/Function/Light.cs" Line="206" Column="10" />
-      <File FileName="HDL_ON/Entity/FunctionList.cs" Line="197" Column="22" />
+      <File FileName="HDL_ON/DAL/Mqtt/MqttClient.cs" Line="330" Column="54" />
+      <File FileName="HDL_ON/DAL/DriverLayer/Control.cs" Line="261" Column="55" />
+      <File FileName="HDL_ON/DAL/DriverLayer/Packet.cs" Line="81" Column="8" />
+      <File FileName="HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs" Line="599" Column="53" />
+      <File FileName="HDL_ON/UI/UI2/2-Classification/ClassificationPageBLL.cs" Line="416" Column="79" />
+      <File FileName="HDL_ON/Entity/Function/Function.cs" Line="498" Column="41" />
+      <File FileName="HDL_ON/Common/ApiUtlis.cs" Line="246" Column="16" />
+      <File FileName="HDL_ON/DAL/DriverLayer/Control_Udp.cs" Line="147" Column="33" />
+      <File FileName="HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs" Line="549" Column="30" />
+      <File FileName="HDL-ON_iOS/Info.plist" />
     </Files>
     <Pads>
       <Pad Id="ProjectPad">
         <State name="__root__">
           <Node name="HDL_APP_Project" expanded="True">
-            <Node name="HDL_ON" expanded="True">
-              <Node name="Common" expanded="True" />
-              <Node name="DAL" expanded="True">
-                <Node name="DriverLayer" expanded="True" />
-                <Node name="Mqtt" expanded="True" />
-                <Node name="Server" expanded="True" />
-              </Node>
-              <Node name="Entity" expanded="True">
-                <Node name="Function" expanded="True" />
-                <Node name="FunctionList.cs" selected="True" />
-              </Node>
-              <Node name="UI" expanded="True">
-                <Node name="UI2" expanded="True">
-                  <Node name="1-HomePage" expanded="True" />
-                  <Node name="2-Classification" expanded="True" />
-                  <Node name="3-Intelligence" expanded="True">
-                    <Node name="Scene" expanded="True" />
-                  </Node>
-                  <Node name="FuntionControlView" expanded="True">
-                    <Node name="AC" expanded="True" />
-                    <Node name="Light" expanded="True" />
-                  </Node>
-                </Node>
-              </Node>
+            <Node name="HDL-ON_Android" expanded="True">
+              <Node name="Assets" expanded="True" />
             </Node>
-            <Node name="HDL-ON_Android" expanded="True" />
-            <Node name="HDL-ON_iOS" expanded="True" />
+            <Node name="HDL-ON_iOS" expanded="True">
+              <Node name="Resources" expanded="True" />
+              <Node name="Info.plist" selected="True" />
+            </Node>
           </Node>
         </State>
       </Pad>
@@ -64,7 +45,7 @@
     <String>Shared.Droid.TouchID/Shared.Droid.TouchID.csproj</String>
     <String>Shared.IOS/Shared.IOS.csproj</String>
   </DisabledProjects>
-  <MonoDevelop.Ide.Workspace ActiveConfiguration="Debug" />
+  <MonoDevelop.Ide.Workspace ActiveConfiguration="Release|iPhone" />
   <MonoDevelop.Ide.ItemProperties.HDL-ON__Android PreferredExecutionTarget="Android.SelectDevice" />
   <MonoDevelop.Ide.DebuggingService.Breakpoints>
     <BreakpointStore>
diff --git a/HDL-ON_Android/Assets/Language.ini b/HDL-ON_Android/Assets/Language.ini
index 096fae2..93fb679 100644
--- a/HDL-ON_Android/Assets/Language.ini
+++ b/HDL-ON_Android/Assets/Language.ini
@@ -399,6 +399,7 @@
 377=鍏ㄥ畢鍖哄煙
 378=鍙樺寲鏃堕棿
 379=鍙樺寲閫熷害
+380=姝ゅ鍔熻兘鏆傛湭寮�鏀撅綖
 400=娆㈣繋鍥炲
 401=浜岀淮鐮佸け鏁堬紝璇烽噸璇�
 402=閲嶈瘯
diff --git a/HDL-ON_iOS/Resources/Language.ini b/HDL-ON_iOS/Resources/Language.ini
index 096fae2..93fb679 100644
--- a/HDL-ON_iOS/Resources/Language.ini
+++ b/HDL-ON_iOS/Resources/Language.ini
@@ -399,6 +399,7 @@
 377=鍏ㄥ畢鍖哄煙
 378=鍙樺寲鏃堕棿
 379=鍙樺寲閫熷害
+380=姝ゅ鍔熻兘鏆傛湭寮�鏀撅綖
 400=娆㈣繋鍥炲
 401=浜岀淮鐮佸け鏁堬紝璇烽噸璇�
 402=閲嶈瘯
diff --git a/HDL_ON/Common/ApiUtlis.cs b/HDL_ON/Common/ApiUtlis.cs
index 8b144ce..c29314c 100644
--- a/HDL_ON/Common/ApiUtlis.cs
+++ b/HDL_ON/Common/ApiUtlis.cs
@@ -159,38 +159,36 @@
                         {
                             deviceList = new DevcieApiPack();
                         }
-                        {
                             if (FunctionList.List.GetDeviceFunctionList().Count > 0)
                             {
-                                for (int i = 0; i < FunctionList.List.GetDeviceFunctionList().Count;)
+                            for (int i = 0; i < FunctionList.List.GetDeviceFunctionList().Count;)
+                            {
+                                var localFunction = FunctionList.List.GetDeviceFunctionList()[i];
+                                if (localFunction.functionCategory == FunctionCategory.Music)
                                 {
-                                    var localFunction = FunctionList.List.GetDeviceFunctionList()[i];
-                                    if (localFunction.functionCategory == FunctionCategory.Music)
+                                    i++;
+                                    continue;
+                                }
+                                var newFunction = deviceList.list.Find((obj) => obj.deviceId == localFunction.deviceId);
+                                if (newFunction == null)//濡傛灉浜戠鏈�鏂版暟鎹病鏈夎鏉℃暟鎹紝鍒欐湰鍦伴渶瑕佸垹鎺夎鏁版嵁璁板綍
+                                {
+                                    FunctionList.List.DeleteFunction(localFunction);
+                                }
+                                else
+                                {
+                                    MainPage.Log($"deviceType:{localFunction.spk} local:{localFunction.modifyTime} server:{newFunction.modifyTime}");
+                                    i++;
+                                    if (localFunction.modifyTime != newFunction.modifyTime)
                                     {
-                                        i++;
-                                        continue;
+                                        //鍙紭鍖�
+                                        localFunction.name = newFunction.name;
+                                        localFunction.collect = newFunction.collect;
+                                        localFunction.modifyTime = newFunction.modifyTime;
+                                        localFunction.roomIds = newFunction.roomIds;
+                                        localFunction.bus = newFunction.bus;
+                                        localFunction.SaveFunctionFile();
                                     }
-                                    var newFunction = deviceList.list.Find((obj) => obj.deviceId == localFunction.deviceId);
-                                    if (newFunction == null)//濡傛灉浜戠鏈�鏂版暟鎹病鏈夎鏉℃暟鎹紝鍒欐湰鍦伴渶瑕佸垹鎺夎鏁版嵁璁板綍
-                                    {
-                                        FunctionList.List.DeleteFunction(localFunction);
-                                    }
-                                    else
-                                    {
-                                        MainPage.Log($"deviceType:{localFunction.spk} local:{localFunction.modifyTime} server:{newFunction.modifyTime}");
-                                        i++;
-                                        if (localFunction.modifyTime != newFunction.modifyTime)
-                                        {
-                                            //鍙紭鍖�
-                                            localFunction.name = newFunction.name;
-                                            localFunction.collect = newFunction.collect;
-                                            localFunction.modifyTime = newFunction.modifyTime;
-                                            localFunction.roomIds = newFunction.roomIds;
-                                            localFunction.bus = newFunction.bus;
-                                            localFunction.SaveFunctionFile();
-                                        }
-                                        deviceList.list.Remove(newFunction);//鎿嶄綔瀹岀殑鏁版嵁娓呯悊鎺夛紝鍓╀笅鐨勫氨鏄柊澧炵殑鍔熻兘
-                                    }
+                                    deviceList.list.Remove(newFunction);//鎿嶄綔瀹岀殑鏁版嵁娓呯悊鎺夛紝鍓╀笅鐨勫氨鏄柊澧炵殑鍔熻兘
                                 }
                             }
                             //澶勭悊鍓╀笅鐨勬柊澧炲姛鑳�
@@ -217,6 +215,7 @@
                         if (sceneList == null)
                         {
                             sceneList = new List<Scene>();
+                        }
                             for (int i = 0; i < FunctionList.List.scenes.Count;)
                             {
                                 var localScene = FunctionList.List.scenes[i];
@@ -226,29 +225,28 @@
                                     continue;
                                 }
                                 var newScene = sceneList.Find((obj) => obj.userSceneId == localScene.userSceneId);
-                                if (newScene == null)//濡傛灉浜戠鏈�鏂版暟鎹病鏈夎鏉℃暟鎹紝鍒欐湰鍦伴渶瑕佸垹鎺夎鏁版嵁璁板綍
+                            if (newScene == null)//濡傛灉浜戠鏈�鏂版暟鎹病鏈夎鏉℃暟鎹紝鍒欐湰鍦伴渶瑕佸垹鎺夎鏁版嵁璁板綍
+                            {
+                                FunctionList.List.DeleteScene(localScene, false);
+                            }
+                            else
+                            {
+                                i++;
+                                if (localScene.modifyTime != newScene.modifyTime)
                                 {
-                                    FunctionList.List.DeleteScene(localScene, false);
+                                    localScene.name = newScene.name;
+                                    localScene.collect = newScene.collect;
+                                    localScene.modifyTime = newScene.modifyTime;
+                                    localScene.roomIds = newScene.roomIds;
+                                    localScene.SaveSceneFile();
                                 }
-                                else
-                                {
-                                    i++;
-                                    if (localScene.modifyTime != newScene.modifyTime)
-                                    {
-                                        localScene.name = newScene.name;
-                                        localScene.collect = newScene.collect;
-                                        localScene.modifyTime = newScene.modifyTime;
-                                        localScene.roomIds = newScene.roomIds;
-                                        localScene.SaveSceneFile();
-                                    }
-                                    sceneList.Remove(newScene);//鎿嶄綔瀹岀殑鏁版嵁娓呯悊鎺夛紝鍓╀笅鐨勫氨鏄柊澧炵殑鍔熻兘
-                                }
+                                sceneList.Remove(newScene);//鎿嶄綔瀹岀殑鏁版嵁娓呯悊鎺夛紝鍓╀笅鐨勫氨鏄柊澧炵殑鍔熻兘
                             }
                             //澶勭悊鍓╀笅鐨勬柊澧炲姛鑳�
-                            foreach (var newScene in sceneList)
+                            foreach (var tempScene in sceneList)
                             {
-                                newScene.SaveSceneFile();
-                                FunctionList.List.scenes.Add(newScene);
+                                tempScene.SaveSceneFile();
+                                FunctionList.List.scenes.Add(tempScene);
                             }
                         }
                         //濡傛灉鏄竴绔彛闇�瑕佹彁鍓嶄笅杞藉満鏅暟鎹紝鍚﹀垯鎺у埗涓嶄簡涓�绔彛鍦烘櫙
diff --git a/HDL_ON/Common/HDLCommon.cs b/HDL_ON/Common/HDLCommon.cs
index 31e2c5f..4238f09 100644
--- a/HDL_ON/Common/HDLCommon.cs
+++ b/HDL_ON/Common/HDLCommon.cs
@@ -302,9 +302,9 @@
             //璐﹀彿鍦ㄥ埆澶勭櫥闄嗭紝琚涪涓嬬嚎 璺宠浆鍒扮櫥褰曢〉闈�
             new Alert(Language.StringByID(StringId.Tip), Language.StringByID(StringId.LoggedOnOtherDevices), Language.StringByID(StringId.Close)).Show();
 
-#if DEBUG
+//#if DEBUG
             return;
-#endif
+//#endif
 
             Logout();
         }
diff --git a/HDL_ON/Common/R.cs b/HDL_ON/Common/R.cs
index e1987e7..7997ebc 100644
--- a/HDL_ON/Common/R.cs
+++ b/HDL_ON/Common/R.cs
@@ -12,6 +12,7 @@
         public const int Retry = 402;
         public const int QRCodeIsInvalid = 401;
         public const int WellComBackHome = 400;
+        public const int FunctionNotOpen = 380;
         public const int FadeSpeed = 379;
         public const int FadeTime = 378;
         public const int WholeZone = 377;
diff --git a/HDL_ON/DAL/DriverLayer/Control.cs b/HDL_ON/DAL/DriverLayer/Control.cs
index a894698..861a54d 100644
--- a/HDL_ON/DAL/DriverLayer/Control.cs
+++ b/HDL_ON/DAL/DriverLayer/Control.cs
@@ -82,11 +82,23 @@
             {
                 if (_gatewayOnline != value)
                 {
-                    _gatewayOnline = value;
-                    //淇敼涓婚〉杩炴帴鐘舵��
-                    UI.HomePage.LoadEvent_CheckLinkStatus();
-                    if (value)
+                    if(value)
                     {
+                        if (IsRemote)//濡傛灉鏄繙绋�
+                        {
+                            if (!DB_ResidenceData.Instance.HomeGateway.gatewayStatus)//杩滅▼鎯呭喌涓嬶紝缃戝叧鏈摼鎺ユ湇鍔″櫒涓嶈兘淇敼涓婚〉缃戝叧鐘舵��
+                            {
+                                new System.Threading.Thread(() => {
+                                    System.Threading.Thread.Sleep(3000);
+                                    var pm = new DAL.Server.HttpServerRequest();
+                                    pm.GetGatewayInfo();
+                                }) { IsBackground = true }.Start();
+                                return;
+                            }
+                        }
+                        _gatewayOnline = value;
+                        //淇敼涓婚〉杩炴帴鐘舵��
+                        HomePage.LoadEvent_CheckLinkStatus();
                         MainPage.Log($"缃戝叧鍦ㄧ嚎锛屽埛鏂拌澶囩姸鎬�");
                         new System.Threading.Thread(() =>
                         {
@@ -94,6 +106,12 @@
                             FunctionList.List.ReadAllFunctionStatus();
                         })
                         { IsBackground = true, Priority = System.Threading.ThreadPriority.AboveNormal }.Start();
+                    }
+                    else
+                    {
+                        _gatewayOnline = value;
+                        //淇敼涓婚〉杩炴帴鐘舵��
+                        HomePage.LoadEvent_CheckLinkStatus();
                     }
                 }
             }
@@ -103,23 +121,10 @@
         /// </summary>
         public string GatewayId = "";
 
-        bool _isRemote = false;
         /// <summary>
         /// 鏄惁涓鸿繙绋嬭繛鎺�
         /// </summary>
-        public bool IsRemote
-        {
-            get
-            {
-                return _isRemote;
-            }
-            set
-            {
-                _isRemote = value;
-                //淇敼涓婚〉杩炴帴鐘舵��
-                HomePage.LoadEvent_CheckLinkStatus();
-            }
-        }
+        public bool IsRemote = false;
         /// <summary>
         /// 閫氳鍦板潃IP
         /// </summary>
@@ -183,7 +188,9 @@
         /// </summary>
         public void SearchLoaclGateway()
         {
-            MainPage.Log($"鎼滅储鏈湴缃戝叧鍒楄〃锛岀綉鍏崇被鍨�:{DB_ResidenceData.Instance.GatewayType}");
+            var ggg = DB_ResidenceData.Instance.GatewayType == 0 ? "涓�绔彛" : "A缃戝叧";
+            var ggg1 = MainPage.InternetStatus == 1 ? "4G" : "wifi";
+            MainPage.Log($"鎼滅储缃戝叧鍒楄〃锛岀綉鍏崇被鍨�:{ggg};缃戠粶绫诲瀷:{ggg1}");
             if (MainPage.InternetStatus == 0)
             {
                 Ins.GatewayOnline = false;
@@ -328,6 +335,35 @@
                     MainPage.Log($"鍙戦�丠DL-Link鏁版嵁:{functionControlDataJson}");
                 }
             }
+        }
+        /// <summary>
+        /// 鍏ㄥ紑鍏ㄥ叧鍔熻兘
+        /// </summary>
+        public void SwtichFunctions(bool open,List<Function> functions)
+        {
+            var count = 0;
+            var logString = open ? "鎵撳紑" : "鍏抽棴";
+            List<ApiAlinkControlActionObj> actionObjs = new List<ApiAlinkControlActionObj>();
+            Dictionary<string, string> d = new Dictionary<string, string>();
+            d.Add(FunctionAttributeKey.OnOff, open ? "on" : "off");
+            var pm = new DAL.Server.HttpServerRequest();
+            foreach (var temp in functions)
+            {
+                logString += temp.spk + ":" + temp.sid;
+                var apiControlData = temp.GetApiControlData(d);
+                actionObjs.Add(apiControlData);
+                count++;
+                if (count > 9)
+                {
+                    var result = pm.ControlDevice(actionObjs);
+                    actionObjs = new List<ApiAlinkControlActionObj>();
+                    count = 0;
+                    MainPage.Log(logString);
+                    logString = "";
+                }
+            }
+            var pack = pm.ControlDevice(actionObjs);
+            MainPage.Log(logString);
         }
 
         public void SendApiReadCommand(List<string> functionIds)
@@ -500,7 +536,7 @@
                     var device = Newtonsoft.Json.JsonConvert.DeserializeObject<DeviceModule>(bodyJObj.objects.ToString());
                     if (device.device_mac == DB_ResidenceData.Instance.residenceGatewayMAC)
                     {
-                        //鏈湴鎼滅储缃戝叧鎴愬姛
+                        MainPage.Log("鏈湴鎼滅储缃戝叧鎴愬姛");
                         Control.Ins.IsSearchLocalGatewaySuccessful = true;
                         Ins.GatewayOnline = true;
                         if (!string.IsNullOrEmpty(device.gatewayId))
diff --git a/HDL_ON/DAL/DriverLayer/Control_Udp.cs b/HDL_ON/DAL/DriverLayer/Control_Udp.cs
index e5bda32..d3e11b0 100644
--- a/HDL_ON/DAL/DriverLayer/Control_Udp.cs
+++ b/HDL_ON/DAL/DriverLayer/Control_Udp.cs
@@ -158,6 +158,10 @@
         {
             foreach (var f in scene.functions)
             {
+                if(f.localFunction == null)
+                {
+                    continue;
+                }
                 switch (f.localFunction.functionType)
                 {
                     case FunctionType.Curtain:
diff --git a/HDL_ON/DAL/DriverLayer/Packet.cs b/HDL_ON/DAL/DriverLayer/Packet.cs
index 6164b0e..a1d7c74 100644
--- a/HDL_ON/DAL/DriverLayer/Packet.cs
+++ b/HDL_ON/DAL/DriverLayer/Packet.cs
@@ -91,6 +91,14 @@
                 }
                 //澶勭悊鎺ユ敹鍒扮殑鏁版嵁
                 UdpPacket_DataProcessing(subnetID, deviceID, command, usefulBytes);
+#if DEBUG
+                string ddd = "";
+                foreach(var bb in usefulBytes)
+                {
+                    ddd += bb + ",";
+                }
+                MainPage.Log(ddd);
+#endif
                 //澶勭悊鏄惁瑕侀噸鍙戞暟鎹�
                 ManagerReceive(subnetID, deviceID, command, usefulBytes);
             }
diff --git a/HDL_ON/DAL/Mqtt/MqttClient.cs b/HDL_ON/DAL/Mqtt/MqttClient.cs
index 1ecf619..fb5d3b5 100644
--- a/HDL_ON/DAL/Mqtt/MqttClient.cs
+++ b/HDL_ON/DAL/Mqtt/MqttClient.cs
@@ -186,9 +186,14 @@
                         Topic = $"/user/{MqttInfoConfig.Current.HomeGatewayInfo.gatewayId}/app/thing/property/send",
                         QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce
                     };
+                    var topicBusStatus = new MqttTopicFilter()
+                    {
+                        Topic = $"/BusGateWayToClient/MacMask/Common",
+                        QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce
+                    };
 
                     Utlis.WriteLine("寮�濮嬭闃咃紒");
-                    var result = await RemoteMqttClient.SubscribeAsync(new MqttTopicFilter[] { topicFilterBusGateWayToClient, topicFilterPush2 , topicAlinkStatus });
+                    var result = await RemoteMqttClient.SubscribeAsync(new MqttTopicFilter[] { topicFilterBusGateWayToClient, topicFilterPush2, topicAlinkStatus, topicBusStatus });
                     if (result.Items[0].ResultCode == MQTTnet.Client.Subscribing.MqttClientSubscribeResultCode.GrantedQoS0)
                     {
                         isSubscribeSuccess = true;
@@ -269,7 +274,6 @@
                                 }
                                 else
                                 {
-                                    MainPage.Log($"mqtt data");
                                     SetGatewayOnlineResetCheck();
                                     var bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, DB_ResidenceData.Instance.HomeGateway.aesKey);
                                     
@@ -286,10 +290,19 @@
                                         {
                                             packet.Bytes = e.ApplicationMessage.Payload;
                                         }
+#if DEBUG
+                                        string ddd = "";
+                                        foreach (var bb in packet.Bytes)
+                                        {
+                                            ddd += bb + ",";
+                                        }
+                                        MainPage.Log($"mqtt bus data:{ddd}");
+#endif
                                         packet.Manager();
                                     }
                                     else
                                     {
+                                        MainPage.Log($"mqtt A-Link data");
                                         //A鍗忚鏁版嵁澶勭悊
                                         var revString = Encoding.UTF8.GetString(bytes);
                                         Control.Ins.UpdataFunctionStatus(revString,null);
@@ -312,25 +325,9 @@
                     //(3)ConnectedHandler
                     if (RemoteMqttClient.ConnectedHandler == null)
                     {
-                        RemoteMqttClient.UseConnectedHandler(async (e) => {
-                            if (DB_ResidenceData.Instance.HomeGateway.gatewayStatus)
-                            {
-                                Control.Ins.GatewayOnline = true;
-                            }
-                            else
-                            {
-                                //new System.Threading.Thread(() => {
-                                //    while(true)
-                                //    {
-                                //        System.Threading.Thread.Sleep(1000);
-                                //        if (DB_ResidenceData.Instance.HomeGateway.GatewayOnline)
-                                //        {
-                                //            Control.Ins.GatewayOnline = true;
-                                //            break;
-                                //        }
-                                //    }
-                                //}) { IsBackground = true }.Start();
-                            }
+                        RemoteMqttClient.UseConnectedHandler(async (e) =>
+                        {
+                            Control.Ins.GatewayOnline = true;
                             IfNeedReadAllDeviceStatus = true;
                             Utlis.WriteLine($"============>Mqtt杩滅▼杩炴帴鎴愬姛");
                             SendPushSignOut();
@@ -655,7 +652,6 @@
         /// 鏄惁闇�瑕佽鍙栦竴娆℃墍鏈夎澶囩姸鎬�
         /// </summary>
         static bool IfNeedReadAllDeviceStatus = true;
-        //public static bool IsGatewayOnline = true;
 
         /// <summary>
         /// 璁剧疆缃戝叧鍦ㄧ嚎鏍囧織锛屽苟閲嶇疆CheckGateway鍙傛暟
diff --git a/HDL_ON/DAL/Server/HttpServerRequest.cs b/HDL_ON/DAL/Server/HttpServerRequest.cs
index cebeda9..5b5b29c 100644
--- a/HDL_ON/DAL/Server/HttpServerRequest.cs
+++ b/HDL_ON/DAL/Server/HttpServerRequest.cs
@@ -571,15 +571,14 @@
                             if (mHomeGatewayRes.Count > 0)
                             {
                                 DB_ResidenceData.Instance.HomeGateway = mHomeGatewayRes[0];
-                                if (mHomeGatewayRes[0].gatewayStatus)
-                                {
-                                    //DriverLayer.Control.Ins.IsRemote = true;
-                                    DriverLayer.Control.Ins.GatewayOnline = true;
-                                }
-                                else
-                                {
-                                    DriverLayer.Control.Ins.GatewayOnline = false;
-                                }
+                                //if (mHomeGatewayRes[0].gatewayStatus)
+                                //{
+                                //    DriverLayer.Control.Ins.GatewayOnline = true;
+                                //}
+                                //else
+                                //{
+                                //    DriverLayer.Control.Ins.GatewayOnline = false;
+                                //}
                                 DB_ResidenceData.Instance.SaveResidenceData();
                                 return revertObj.Code;
                             }
@@ -615,8 +614,10 @@
                 var mHomeGatewayRes = Newtonsoft.Json.JsonConvert.DeserializeObject<HomeGatewayInfo>(revertObj.Data.ToString());
                 if (mHomeGatewayRes != null)
                 {
-                    DB_ResidenceData.Instance.HomeGateway = mHomeGatewayRes;
-                    DB_ResidenceData.Instance.SaveResidenceData();
+                    if(mHomeGatewayRes.gatewayStatus)
+                    {
+                        DriverLayer.Control.Ins.GatewayOnline = true;
+                    }
                 }
             }
             return revertObj.Code;
diff --git a/HDL_ON/Entity/DB_ResidenceData.cs b/HDL_ON/Entity/DB_ResidenceData.cs
index 8017fc0..8553884 100644
--- a/HDL_ON/Entity/DB_ResidenceData.cs
+++ b/HDL_ON/Entity/DB_ResidenceData.cs
@@ -274,7 +274,6 @@
         /// <returns></returns>
         static byte[] ReadResidenceInfo()
         {
-                MainPage.Log("get file Instance ");
             var fileName = "DB_ResidenceData";
             FileStream fs = null;
             try
@@ -302,7 +301,6 @@
             }
             finally
             {
-                MainPage.Log("get file  ");
                 try
                 {
                     if (fs != null)
diff --git a/HDL_ON/UI/UI1-Login/LoginPage.cs b/HDL_ON/UI/UI1-Login/LoginPage.cs
index eaf1b96..c8a7857 100644
--- a/HDL_ON/UI/UI1-Login/LoginPage.cs
+++ b/HDL_ON/UI/UI1-Login/LoginPage.cs
@@ -193,7 +193,7 @@
             {
                 if (b)
                 {
-                    etAccount.Text = "13697499568";// "18824864143";//"464027401@qq.com"; //"2791308028@qq.com";//13697499568 
+                    etAccount.Text = "18824864143";// "18824864143";//"464027401@qq.com"; //"2791308028@qq.com";//13697499568 
                 }
                 else
                 {
diff --git a/HDL_ON/UI/UI2/2-Classification/ClassificationPageBLL.cs b/HDL_ON/UI/UI2/2-Classification/ClassificationPageBLL.cs
index 7f604b2..aa5e367 100644
--- a/HDL_ON/UI/UI2/2-Classification/ClassificationPageBLL.cs
+++ b/HDL_ON/UI/UI2/2-Classification/ClassificationPageBLL.cs
@@ -345,48 +345,91 @@
                 {
                     try
                     {
-                        switch (functionCategory)
+                        if (DB_ResidenceData.Instance.GatewayType == 0 && !Control.Ins.IsRemote)
                         {
-                            case ShowFunction.AC:
-                                foreach (var f in FunctionList.List.aCs)
-                                {
-                                    f.trait_on_off.curValue = onoff;
-                                    Dictionary<string, string> d = new Dictionary<string, string>();
-                                    d.Add(FunctionAttributeKey.OnOff, f.trait_on_off.curValue.ToString());
-                                    Control.Ins.SendWriteCommand(f, d);
-                                    System.Threading.Thread.Sleep(100);
-                                }
-                                break;
-                            case ShowFunction.FloorHeating:
-                                foreach (var f in FunctionList.List.floorHeatings)
-                                {
-                                    f.trait_on_off.curValue = onoff;
-                                    Dictionary<string, string> d = new Dictionary<string, string>();
-                                    d.Add(FunctionAttributeKey.OnOff, f.trait_on_off.curValue.ToString());
-                                    Control.Ins.SendWriteCommand(f, d);
-                                    System.Threading.Thread.Sleep(100);
-                                }
-                                break;
-                            case ShowFunction.Light:
-                                foreach (var f in FunctionList.List.lights)
-                                {
-                                    f.trait_on_off.curValue = onoff;
-                                    Dictionary<string, string> d = new Dictionary<string, string>();
-                                    d.Add(FunctionAttributeKey.OnOff, f.trait_on_off.curValue.ToString());
-                                    Control.Ins.SendWriteCommand(f, d);
-                                    System.Threading.Thread.Sleep(100);
-                                }
-                                break;
-                            case ShowFunction.Electric:
-                                foreach (var f in FunctionList.List.electricals)
-                                {
-                                    f.trait_on_off.curValue = onoff;
-                                    Dictionary<string, string> d = new Dictionary<string, string>();
-                                    d.Add(FunctionAttributeKey.OnOff, f.trait_on_off.curValue.ToString());
-                                    Control.Ins.SendWriteCommand(f, d);
-                                    System.Threading.Thread.Sleep(100);
-                                }
-                                break;
+                            switch (functionCategory)
+                            {
+                                case ShowFunction.AC:
+                                    foreach (var f in FunctionList.List.aCs)
+                                    {
+                                        f.trait_on_off.curValue = onoff;
+                                        Dictionary<string, string> d = new Dictionary<string, string>();
+                                        d.Add(FunctionAttributeKey.OnOff, f.trait_on_off.curValue.ToString());
+                                        Control.Ins.SendWriteCommand(f, d);
+                                        System.Threading.Thread.Sleep(100);
+                                    }
+                                    break;
+                                case ShowFunction.FloorHeating:
+                                    foreach (var f in FunctionList.List.floorHeatings)
+                                    {
+                                        f.trait_on_off.curValue = onoff;
+                                        Dictionary<string, string> d = new Dictionary<string, string>();
+                                        d.Add(FunctionAttributeKey.OnOff, f.trait_on_off.curValue.ToString());
+                                        Control.Ins.SendWriteCommand(f, d);
+                                        System.Threading.Thread.Sleep(100);
+                                    }
+                                    break;
+                                case ShowFunction.Light:
+                                    foreach (var f in FunctionList.List.lights)
+                                    {
+                                        f.trait_on_off.curValue = onoff;
+                                        Dictionary<string, string> d = new Dictionary<string, string>();
+                                        d.Add(FunctionAttributeKey.OnOff, f.trait_on_off.curValue.ToString());
+                                        Control.Ins.SendWriteCommand(f, d);
+                                        System.Threading.Thread.Sleep(100);
+                                    }
+                                    break;
+                                case ShowFunction.Electric:
+                                    foreach (var f in FunctionList.List.electricals)
+                                    {
+                                        f.trait_on_off.curValue = onoff;
+                                        Dictionary<string, string> d = new Dictionary<string, string>();
+                                        d.Add(FunctionAttributeKey.OnOff, f.trait_on_off.curValue.ToString());
+                                        Control.Ins.SendWriteCommand(f, d);
+                                        System.Threading.Thread.Sleep(100);
+                                    }
+                                    break;
+                            }
+                        }
+                        else
+                        {
+                            switch (functionCategory)
+                            {
+                                case ShowFunction.AC:
+                                    List<Function> acList = new List<Function>();
+                                    foreach(var f in FunctionList.List.aCs)
+                                    {
+                                        acList.Add(f);
+                                    }
+                                    Control.Ins.SwtichFunctions(onoff == "on", acList);
+                                    break;
+                                case ShowFunction.FloorHeating:
+                                    List<Function> fhList = new List<Function>();
+                                    foreach (var f in FunctionList.List.floorHeatings)
+                                    {
+                                        fhList.Add(f);
+                                    }
+                                    Control.Ins.SwtichFunctions(onoff == "on", fhList);
+                                    break;
+                                case ShowFunction.Light:
+                                    List<Function> lightList = new List<Function>();
+                                    foreach (var f in FunctionList.List.lights)
+                                    {
+                                        lightList.Add(f);
+                                    }
+                                    Control.Ins.SwtichFunctions(onoff == "on", lightList);
+                                    break;
+                                case ShowFunction.Electric:
+                                    List<Function> eleList = new List<Function>();
+                                    foreach (var f in FunctionList.List.electricals)
+                                    {
+                                        eleList.Add(f);
+                                    }
+                                    Control.Ins.SwtichFunctions(onoff == "on", eleList);
+                                    break;
+                            }
+
+
                         }
                     }
                     catch (Exception ex)
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs
old mode 100755
new mode 100644
index 4d22aef..171cae5
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs
@@ -336,6 +336,7 @@
             userTypeView.AddChidren(btnUserTypeName);
             #endregion
             #region 浣忓畢绠$悊
+          
             if (!DB_ResidenceData.Instance.CurrentRegion.IsOthreShare)
             {
                 #region ---浣忓畢绠$悊鍖哄煙
@@ -524,6 +525,15 @@
             }
             else
             {
+                residenceInfoView.AddChidren(new Button()
+                {
+                    Y = Application.GetRealHeight(20),
+                    TextAlignment = TextAlignment.Center,
+                    TextSize = CSS_FontSize.TextFontSize,
+                    TextColor = CSS_Color.FirstLevelTitleColor,
+                    TextID = StringId.FunctionNotOpen,
+                });
+
                 #region F3闃舵
                 #region ---瀹夋斁鍖哄煙
                 //residenceArmView = new FrameLayout()
diff --git a/HDL_ON/UI/UI2/FuntionControlView/AC/ACPageBLL.cs b/HDL_ON/UI/UI2/FuntionControlView/AC/ACPageBLL.cs
index c8ca8aa..24a50b7 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/AC/ACPageBLL.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/AC/ACPageBLL.cs
@@ -38,7 +38,7 @@
                     bodyView.btnWindSpeed.UnSelectedImagePath = uAc.curFanImage;
                     if(uAc.trait_on_off.curValue.ToString() == "on")
                     {
-                        bodyView.arcBar.IsOffline = true;
+                        bodyView.arcBar.IsOffline = false;
                         bodyView.btnSwitch.IsSelected = true;
                         bodyView.arcBar.ThumbImagePath = "FunctionIcon/AC/DiyThumbIconOn.png";
                         if (uAc.trait_mode.curValue.ToString() == "fan")
@@ -52,7 +52,7 @@
                     }
                     else
                     {
-                        bodyView.arcBar.IsOffline = false;
+                        bodyView.arcBar.IsOffline = true;
                         bodyView.btnSwitch.IsSelected = false;
                         bodyView.arcBar.IsClickable = false;
                         bodyView.arcBar.ThumbImagePath = "FunctionIcon/AC/DiyThumbIcon.png";

--
Gitblit v1.8.0