From 3a26f6025130dcaae4aa82ea19b16ad902450eb8 Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期四, 28 十一月 2019 11:43:47 +0800
Subject: [PATCH] 合并全部代码完成

---
 ZigbeeApp/Home.Ios/AppDelegate.cs                                                                   |    1 
 ZigbeeApp/GateWay.Droid/Assets/Language.ini                                                         |    7 
 ZigbeeApp/GateWay.Droid/Resources/Resource.designer.cs                                              |   65 
 ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/9.jpg                                                |    0 
 ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonLayout.cs                                  |  355 +-
 ZigbeeApp/Home.Ios/Resources/Phone/RoomIcon/5.JPG                                                   |    0 
 ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/LockAddDevice.cs                                  |   37 
 ZigbeeApp/Shared/Common/DeviceUI.cs                                                                 |   24 
 ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/0.jpg                                                |    0 
 ZigbeeApp/Shared/Phone/Device/Category/Category.cs                                                  |  341 --
 ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/4.jpg                                                  |    0 
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/TextInputControls/DialogInputControl.cs       |  101 
 ZigbeeApp/Shared/Phone/UserCenter/DoorLock/EntryStatusPage.cs                                       |    1 
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/FrameLayoutControls/FrameLayoutControl.cs     |   30 
 ZigbeeApp/Shared/Phone/Device/Light/PlugControl.cs                                                  |    8 
 ZigbeeApp/Shared/Phone/ZigBee/Device/ZbGateway.cs                                                   |  270 +
 ZigbeeApp/Shared/DLL/Android/Shared.Droid.HDLWidget.dll                                             |    0 
 ZigbeeApp/Shared/Phone/UserCenter/DoorLock/TemporaryPassword.cs                                     |   18 
 ZigbeeApp/Shared/Phone/Device/CommonForm/DeviceDetailInfo.cs                                        |    2 
 ZigbeeApp/Shared/Phone/UserView/UserPage.cs                                                         |   18 
 ZigbeeApp/GateWay.Droid/Assets/Phone/Item/AutoBackup.png                                            |    0 
 ZigbeeApp/Shared/Phone/Device/Category/CategorySceneSelectImgByLocal.cs                             |    7 
 ZigbeeApp/Shared/Phone/Device/Category/SelectScene.cs                                               |   16 
 ZigbeeApp/Shared/Phone/Device/Light/LightControl.cs                                                 |    8 
 ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/LockLogicCommunalPage.cs                          |    1 
 ZigbeeApp/Shared/Phone/Device/Room/RoomManagement.cs                                                |   17 
 ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/2.jpg                                                |    0 
 ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/6.jpg                                                  |    0 
 ZigbeeApp/Shared/Phone/UserCenter/SharedContent/AddNewSharedContentForm.cs                          |   12 
 ZigbeeApp/Shared/Phone/ZigBee/Device/AC.cs                                                          |   13 
 ZigbeeApp/Shared/DLL/IOS/Shared.IOS.TBL.dll                                                         |    0 
 ZigbeeApp/Shared/Phone/Device/Logic/LogicDevicePage.cs                                              |   36 
 ZigbeeApp/Shared/Phone/Device/Light/AirSwitchControl.cs                                             |   10 
 ZigbeeApp/Shared/Phone/Device/Room/AddRoomSelectPicByLocal.cs                                       |    5 
 ZigbeeApp/Shared/Phone/Device/Account/AccountRegister.cs                                            |    2 
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayLogic.cs                               |    4 
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Form/PswSecondarySecurityForm.cs                       |   18 
 ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WiredGatewaySearchForm.cs                             |    2 
 ZigbeeApp/Home.Ios/Resources/Phone/Scene/Delaying.png                                               |    0 
 ZigbeeApp/Shared/Phone/ZigBee/Device/Scene.cs                                                       |  106 
 ZigbeeApp/Shared/Phone/ZigBee/Common/Application.cs                                                 |   14 
 ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/NewGateWayMenuSelectForm.cs                           |    4 
 ZigbeeApp/Shared/Phone/Device/Logic/LogicCommunalPage.cs                                            |   24 
 ZigbeeApp/Home.Ios/Resources/Phone/AC/AC_TIP.png                                                    |    0 
 ZigbeeApp/Shared/DLL/Android/Shared.Droid.dll                                                       |    0 
 ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/5.jpg                                                |    0 
 ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/8.jpg                                                  |    0 
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/SafeguardLogControl.cs       |    4 
 ZigbeeApp/Shared/Phone/UserCenter/DoorLock/FunctionSetting.cs                                       |  160 
 ZigbeeApp/Home.Ios/Info.plist                                                                       |    1 
 ZigbeeApp/Shared/Phone/Device/Room/EditRoom.cs                                                      |   18 
 ZigbeeApp/Shared/Phone/UserCenter/UserMain/MessageManagementForm.cs                                 |   26 
 ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserManagement.cs                                        |   22 
 ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MemberManagement.cs                                      |   25 
 ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs                                      |   68 
 ZigbeeApp/Shared/DLL/Android/Shared.Droid.Smartrefresh.dll                                          |    0 
 ZigbeeApp/Shared/Phone/Device/Account/PhoneEmailForm.cs                                             |   10 
 ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/BindTargetsPage.cs                                    |  974 ++++----
 ZigbeeApp/Shared/Phone/Device/CommonForm/LeftIconButtonRow.cs                                       |    4 
 ZigbeeApp/Shared/Shared.projitems                                                                   |    6 
 ZigbeeApp/Shared/Phone/Device/Account/AccountLogin.cs                                               |    2 
 ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/AddScenePage.cs                                       |    4 
 ZigbeeApp/Shared/Phone/Device/Logic/DeviceStateCondition.cs                                         |   36 
 ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/7.jpg                                                |    0 
 ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/1.jpg                                                  |    0 
 ZigbeeApp/Shared/Phone/Device/CommonForm/SceneCategoryView.cs                                       |  357 +++
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/TopRightMenuControl.cs       |    4 
 ZigbeeApp/Shared/Phone/Device/Logic/DelayTime.cs                                                    |    4 
 ZigbeeApp/Shared/Phone/Device/Category/SelectDevice.cs                                              |   28 
 ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs                                                     |  219 -
 ZigbeeApp/Shared/Phone/ZigBee/Device/BindObj.cs                                                     |   50 
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlAutoBackupLogic.cs                            |   33 
 ZigbeeApp/Shared/Phone/Device/Logic/TimePoint.cs                                                    |   13 
 ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/8.jpg                                                |    0 
 ZigbeeApp/Shared/DLL/IOS/Shared.IOS.dll                                                             |    0 
 ZigbeeApp/GateWay.Droid/GateWay.Droid.csproj                                                        |   46 
 ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/3.jpg                                                  |    0 
 ZigbeeApp/Shared/Common/CommonPage.cs                                                               |    9 
 ZigbeeApp/Shared/Phone/Device/Logic/Send.cs                                                         |    5 
 ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UndistributeDoorlockUserPage.cs                          |  344 --
 ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UnLockMethod.cs                                          | 1007 +++-----
 ZigbeeApp/Shared/Phone/UserCenter/UserMain/QRCodeForm.cs                                            |    2 
 ZigbeeApp/Shared/Phone/Device/AC/ACControl.cs                                                       |  108 
 ZigbeeApp/Shared/Common/SceneTargetDeviceUI.cs                                                      |    3 
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/ClickButtonControls/BottomRightClickButton.cs |  131 +
 ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/1.jpg                                                |    0 
 ZigbeeApp/Shared/Phone/Device/Category/SelectFloor.cs                                               |   16 
 ZigbeeApp/Shared/Common/SceneUI.cs                                                                  |    8 
 ZigbeeApp/GateWay.Droid/Assets/Phone/AC/AC_TIP.png                                                  |    0 
 ZigbeeApp/GateWay.Droid/Properties/AndroidManifest.xml                                              |    4 
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/SafetySensorStatuControl.cs  |    2 
 ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/3.jpg                                                |    0 
 ZigbeeApp/Home.Ios/Resources/Phone/Item/AutoBackup.png                                              |    0 
 ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/5.jpg                                                  |    0 
 ZigbeeApp/Shared/Phone/UserCenter/Residence/AddNewRoomForm.cs                                       |    2 
 ZigbeeApp/GateWay.Droid/Assets/Phone/Scene/Delaying.png                                             |    0 
 ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/4.jpg                                                |    0 
 ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/9.jpg                                                  |    0 
 ZigbeeApp/Home.Ios/Resources/Language.ini                                                           |    7 
 ZigbeeApp/Shared/Phone/Device/Curtain/RollerShadeControl.cs                                         |    9 
 ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MemberFrozenPage.cs                                      |   55 
 ZigbeeApp/Shared/Phone/UserCenter/DoorLock/FunctionSettingSub.cs                                    |   97 
 ZigbeeApp/Shared/Phone/ZigBee/Device/Enum.cs                                                        |    4 
 ZigbeeApp/Home.Ios/Home.IOS.csproj                                                                  |   18 
 ZigbeeApp/Shared/Phone/Device/Light/DimmableLightControl.cs                                         |    9 
 ZigbeeApp/Shared/Phone/Device/CommonForm/SceneMainView.cs                                           |  159 +
 ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/0.jpg                                                  |    0 
 ZigbeeApp/Shared/R.cs                                                                               |   22 
 ZigbeeApp/Shared/Phone/Device/Logic/TemplateDeviceCondition.cs                                      |   34 
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/ClickButtonControls/BottomLeftClickButton.cs  |  133 +
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/MessageControls/ShowMsgControl.cs             |  118 
 ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/AddCondition.cs                                   |   10 
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Form/PswGestureSecirityForm.cs                         |   18 
 ZigbeeApp/Shared/Phone/Device/Category/CategoryAddScene.cs                                          |    7 
 ZigbeeApp/GateWay.Droid/Assets/Phone/RoomIcon/0.JPG                                                 |    0 
 ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/7.jpg                                                  |    0 
 ZigbeeApp/Home.Ios/Resources/Phone/RoomIcon/0.JPG                                                   |    0 
 ZigbeeApp/Shared/Common/Device.cs                                                                   |   10 
 ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MasterManagementPage.cs                                  |   31 
 ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonInfo.cs                                    |    2 
 ZigbeeApp/Shared/Phone/UserCenter/HdlBackup/HdlAutoBackupForm.cs                                    |  137 +
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/UserCenterLogic.cs                               |   24 
 ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/6.jpg                                                |    0 
 ZigbeeApp/Shared/Phone/Device/Logic/AddLogicPage.cs                                                 |   37 
 ZigbeeApp/Shared/Phone/UserCenter/DoorLock/TimeSettignPage.cs                                       |   68 
 ZigbeeApp/Shared/Phone/Device/Light/OnOffControl.cs                                                 |    8 
 ZigbeeApp/GateWay.Droid/Assets/Phone/RoomIcon/5.JPG                                                 |    0 
 ZigbeeApp/Shared/Phone/Device/CommonForm/CommonFormResouce.cs                                       |   29 
 ZigbeeApp/Shared/Phone/UserCenter/SharedContent/LookSharedContentForm.cs                            |   10 
 ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/2.jpg                                                  |    0 
 ZigbeeApp/Shared/DLL/Android/Shared.Droid.TouchID.dll                                               |    0 
 /dev/null                                                                                           |  220 -
 ZigbeeApp/Shared/Phone/UserCenter/Residence/EditorRoomInforForm.cs                                  |    2 
 ZigbeeApp/Shared/Phone/UserCenter/Residence/LookRoomSettionForm.cs                                  |    6 
 ZigbeeApp/Shared/Phone/Device/Logic/TemplateDeviceAction.cs                                         |   35 
 ZigbeeApp/Shared/Common/House.cs                                                                    |   17 
 ZigbeeApp/Shared/Common/Room.cs                                                                     |   30 
 137 files changed, 3,645 insertions(+), 3,053 deletions(-)

diff --git a/ZigbeeApp/GateWay.Droid/Assets/Language.ini b/ZigbeeApp/GateWay.Droid/Assets/Language.ini
index d049587..8724e0e 100755
--- a/ZigbeeApp/GateWay.Droid/Assets/Language.ini
+++ b/ZigbeeApp/GateWay.Droid/Assets/Language.ini
@@ -225,6 +225,7 @@
 219=寮�閿佸け璐�
 220=瀵嗙爜鍙兘涓嶅瓨鍦紝灏濊瘯閲嶆柊楠岃瘉杩滅▼寮�閿佸瘑鐮�
 221=缁戝畾澶辫触锛岀粦瀹氬嚭鐜版湭鐭ラ敊璇�
+222=绂荤嚎鍦烘櫙
 
 548=鎻愰啋璁剧疆
 550=鏂板鐢ㄦ埛
@@ -685,6 +686,9 @@
 12107=绌烘皵寮�鍏�
 12108=褰╃伅
 12109=涓户鍣�
+12110=娓╁害浼犳劅鍣�
+12111=婀垮害浼犳劅鍣�
+12112=娓╂箍搴︿紶鎰熷櫒
 
 
 13100=鎴块棿鍒楄〃
@@ -736,6 +740,8 @@
 13146=榛樿鍥惧簱
 13147=鎷嶇収
 13148=鎴戠殑鐩稿唽
+13149=璇ュ満鏅鍦ㄥ欢鏃讹紝璇风◢鍚�
+
 
 13500=閫夋嫨鎽嗛
 13501=鑷姩
@@ -744,6 +750,7 @@
 13504=3鎸�
 13505=4鎸�
 13506=5鎸�
+13511=璇锋竻娲佹护缃�
 
 
 
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/AC/AC_TIP.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/AC/AC_TIP.png
new file mode 100755
index 0000000..85df850
--- /dev/null
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/AC/AC_TIP.png
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/Item/AutoBackup.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/Item/AutoBackup.png
new file mode 100755
index 0000000..9417f1a
--- /dev/null
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/Item/AutoBackup.png
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/RoomIcon/0.JPG b/ZigbeeApp/GateWay.Droid/Assets/Phone/RoomIcon/0.JPG
index 11acf8a..b073d45 100755
--- a/ZigbeeApp/GateWay.Droid/Assets/Phone/RoomIcon/0.JPG
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/RoomIcon/0.JPG
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/RoomIcon/5.JPG b/ZigbeeApp/GateWay.Droid/Assets/Phone/RoomIcon/5.JPG
new file mode 100755
index 0000000..11acf8a
--- /dev/null
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/RoomIcon/5.JPG
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/Scene/Delaying.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/Scene/Delaying.png
new file mode 100755
index 0000000..b5ff313
--- /dev/null
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/Scene/Delaying.png
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/0.jpg b/ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/0.jpg
new file mode 100755
index 0000000..138fcc0
--- /dev/null
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/0.jpg
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/1.jpg b/ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/1.jpg
new file mode 100755
index 0000000..2ca1843
--- /dev/null
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/1.jpg
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/1.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/1.png
deleted file mode 100755
index bde3463..0000000
--- a/ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/1.png
+++ /dev/null
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/2.jpg b/ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/2.jpg
new file mode 100755
index 0000000..110fd90
--- /dev/null
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/2.jpg
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/2.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/2.png
deleted file mode 100755
index e40bf4f..0000000
--- a/ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/2.png
+++ /dev/null
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/3.jpg b/ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/3.jpg
new file mode 100755
index 0000000..7c2eac6
--- /dev/null
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/3.jpg
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/3.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/3.png
deleted file mode 100755
index 928aa7c..0000000
--- a/ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/3.png
+++ /dev/null
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/4.jpg b/ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/4.jpg
new file mode 100755
index 0000000..7df2f14
--- /dev/null
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/4.jpg
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/4.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/4.png
deleted file mode 100755
index f495627..0000000
--- a/ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/4.png
+++ /dev/null
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/5.jpg b/ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/5.jpg
new file mode 100755
index 0000000..dbc3018
--- /dev/null
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/5.jpg
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/6.jpg b/ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/6.jpg
new file mode 100755
index 0000000..f9db5be
--- /dev/null
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/6.jpg
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/7.jpg b/ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/7.jpg
new file mode 100755
index 0000000..dc1e95e
--- /dev/null
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/7.jpg
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/8.jpg b/ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/8.jpg
new file mode 100755
index 0000000..c7b55c1
--- /dev/null
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/8.jpg
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/9.jpg b/ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/9.jpg
new file mode 100755
index 0000000..154c111
--- /dev/null
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/SceneIcon/9.jpg
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/GateWay.Droid.csproj b/ZigbeeApp/GateWay.Droid/GateWay.Droid.csproj
index c61bbce..9eacf47 100644
--- a/ZigbeeApp/GateWay.Droid/GateWay.Droid.csproj
+++ b/ZigbeeApp/GateWay.Droid/GateWay.Droid.csproj
@@ -537,10 +537,6 @@
     <AndroidAsset Include="Assets\Phone\Safeguard\ProtectionRemoveHomeSelected.png" />
     <AndroidAsset Include="Assets\Phone\Safeguard\WithdrawGarrison.png" />
     <AndroidAsset Include="Assets\Phone\Safeguard\WithdrawGarrisonSelected.png" />
-    <AndroidAsset Include="Assets\Phone\SceneIcon\1.png" />
-    <AndroidAsset Include="Assets\Phone\SceneIcon\2.png" />
-    <AndroidAsset Include="Assets\Phone\SceneIcon\3.png" />
-    <AndroidAsset Include="Assets\Phone\SceneIcon\4.png" />
   </ItemGroup>
   <ItemGroup>
     <AndroidAsset Include="Assets\Phone\Item\InputAccountIcon.png" />
@@ -1227,8 +1223,50 @@
     <AndroidAsset Include="Assets\Phone\RoomIcon\3.JPG" />
   </ItemGroup>
   <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\Item\AutoBackup.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\AC\AC_TIP.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\Scene\Delaying.png" />
+  </ItemGroup>
+  <ItemGroup>
     <AndroidAsset Include="Assets\Phone\RoomIcon\4.JPG" />
   </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\RoomIcon\5.JPG" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\SceneIcon\0.jpg" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\SceneIcon\1.jpg" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\SceneIcon\2.jpg" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\SceneIcon\3.jpg" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\SceneIcon\4.jpg" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\SceneIcon\5.jpg" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\SceneIcon\6.jpg" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\SceneIcon\7.jpg" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\SceneIcon\8.jpg" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\SceneIcon\9.jpg" />
+  </ItemGroup>
   <Import Project="..\Shared\Shared.projitems" Label="Shared" Condition="Exists('..\Shared\Shared.projitems')" />
   <Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
   <Import Project="..\packages\Xamarin.Android.Support.Annotations.26.0.2\build\MonoAndroid80\Xamarin.Android.Support.Annotations.targets" Condition="Exists('..\packages\Xamarin.Android.Support.Annotations.26.0.2\build\MonoAndroid80\Xamarin.Android.Support.Annotations.targets')" />
diff --git a/ZigbeeApp/GateWay.Droid/Properties/AndroidManifest.xml b/ZigbeeApp/GateWay.Droid/Properties/AndroidManifest.xml
index 3fc0938..af355b2 100644
--- a/ZigbeeApp/GateWay.Droid/Properties/AndroidManifest.xml
+++ b/ZigbeeApp/GateWay.Droid/Properties/AndroidManifest.xml
@@ -1,5 +1,5 @@
 锘�<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.hdl.home" android:versionCode="2019112201" android:installLocation="auto" android:versionName="1.0.19112201">
+<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.hdl.home" android:versionCode="2019112601" android:installLocation="auto" android:versionName="1.0.19112601">
 	<uses-sdk android:minSdkVersion="23" android:targetSdkVersion="26" />
 	<permission android:name="com.hdl.home.permission.JPUSH_MESSAGE" android:protectionLevel="signature" />
 	<uses-permission android:name="android.permission.WAKE_LOCK" />
@@ -165,6 +165,6 @@
 		<!--  </>鍊兼潵鑷紑鍙戣�呭钩鍙板彇寰楃殑AppKey-->
 		<!-- 鏋佸厜鎺ㄩ�佺粨鏉� -->
 		<!-- 璁剧疆楂樺痉鍦板浘key -->
-		<meta-data android:name="com.amap.api.v2.apikey" android:value="8be10ffb3e302c9a42dfa58110c5c6fb" />
+		<meta-data android:name="com.amap.api.v2.apikey" android:value="1f753413955012c9594c5df69eaa0aff" />
 	</application>
 </manifest>
\ No newline at end of file
diff --git a/ZigbeeApp/GateWay.Droid/Resources/Resource.designer.cs b/ZigbeeApp/GateWay.Droid/Resources/Resource.designer.cs
index 2f8a7a1..703272a 100644
--- a/ZigbeeApp/GateWay.Droid/Resources/Resource.designer.cs
+++ b/ZigbeeApp/GateWay.Droid/Resources/Resource.designer.cs
@@ -3439,97 +3439,100 @@
 			public const int gd_search_tip = 2131492902;
 			
 			// aapt resource value: 0x7F0C0027
-			public const int gd_setting = 2131492903;
+			public const int gd_select_distance = 2131492903;
 			
 			// aapt resource value: 0x7F0C0028
-			public const int hello = 2131492904;
+			public const int gd_setting = 2131492904;
 			
 			// aapt resource value: 0x7F0C0029
-			public const int not_recognized_fingerprint_hint = 2131492905;
+			public const int hello = 2131492905;
 			
 			// aapt resource value: 0x7F0C002A
-			public const int pickerview_cancel = 2131492906;
+			public const int not_recognized_fingerprint_hint = 2131492906;
 			
 			// aapt resource value: 0x7F0C002B
-			public const int pickerview_day = 2131492907;
+			public const int pickerview_cancel = 2131492907;
 			
 			// aapt resource value: 0x7F0C002C
-			public const int pickerview_hours = 2131492908;
+			public const int pickerview_day = 2131492908;
 			
 			// aapt resource value: 0x7F0C002D
-			public const int pickerview_minutes = 2131492909;
+			public const int pickerview_hours = 2131492909;
 			
 			// aapt resource value: 0x7F0C002E
-			public const int pickerview_month = 2131492910;
+			public const int pickerview_minutes = 2131492910;
 			
 			// aapt resource value: 0x7F0C002F
-			public const int pickerview_seconds = 2131492911;
+			public const int pickerview_month = 2131492911;
 			
 			// aapt resource value: 0x7F0C0030
-			public const int pickerview_submit = 2131492912;
+			public const int pickerview_seconds = 2131492912;
 			
 			// aapt resource value: 0x7F0C0031
-			public const int pickerview_year = 2131492913;
+			public const int pickerview_submit = 2131492913;
 			
 			// aapt resource value: 0x7F0C0032
-			public const int search_menu_title = 2131492914;
+			public const int pickerview_year = 2131492914;
 			
 			// aapt resource value: 0x7F0C0033
-			public const int srl_component_falsify = 2131492915;
+			public const int search_menu_title = 2131492915;
 			
 			// aapt resource value: 0x7F0C0034
-			public const int srl_content_empty = 2131492916;
+			public const int srl_component_falsify = 2131492916;
 			
 			// aapt resource value: 0x7F0C0035
-			public const int srl_footer_failed = 2131492917;
+			public const int srl_content_empty = 2131492917;
 			
 			// aapt resource value: 0x7F0C0036
-			public const int srl_footer_finish = 2131492918;
+			public const int srl_footer_failed = 2131492918;
 			
 			// aapt resource value: 0x7F0C0037
-			public const int srl_footer_loading = 2131492919;
+			public const int srl_footer_finish = 2131492919;
 			
 			// aapt resource value: 0x7F0C0038
-			public const int srl_footer_nothing = 2131492920;
+			public const int srl_footer_loading = 2131492920;
 			
 			// aapt resource value: 0x7F0C0039
-			public const int srl_footer_pulling = 2131492921;
+			public const int srl_footer_nothing = 2131492921;
 			
 			// aapt resource value: 0x7F0C003A
-			public const int srl_footer_refreshing = 2131492922;
+			public const int srl_footer_pulling = 2131492922;
 			
 			// aapt resource value: 0x7F0C003B
-			public const int srl_footer_release = 2131492923;
+			public const int srl_footer_refreshing = 2131492923;
 			
 			// aapt resource value: 0x7F0C003C
-			public const int srl_header_failed = 2131492924;
+			public const int srl_footer_release = 2131492924;
 			
 			// aapt resource value: 0x7F0C003D
-			public const int srl_header_finish = 2131492925;
+			public const int srl_header_failed = 2131492925;
 			
 			// aapt resource value: 0x7F0C003E
-			public const int srl_header_loading = 2131492926;
+			public const int srl_header_finish = 2131492926;
 			
 			// aapt resource value: 0x7F0C003F
-			public const int srl_header_pulling = 2131492927;
+			public const int srl_header_loading = 2131492927;
 			
 			// aapt resource value: 0x7F0C0040
-			public const int srl_header_refreshing = 2131492928;
+			public const int srl_header_pulling = 2131492928;
 			
 			// aapt resource value: 0x7F0C0041
-			public const int srl_header_release = 2131492929;
+			public const int srl_header_refreshing = 2131492929;
 			
 			// aapt resource value: 0x7F0C0042
-			public const int srl_header_secondary = 2131492930;
+			public const int srl_header_release = 2131492930;
 			
 			// aapt resource value: 0x7F0C0043
-			public const int srl_header_update = 2131492931;
+			public const int srl_header_secondary = 2131492931;
 			
 			// aapt resource value: 0x7F0C0044
-			public const int status_bar_notification_info_overflow = 2131492932;
+			public const int srl_header_update = 2131492932;
 			
 			// aapt resource value: 0x7F0C0045
-			public const int touch_fingerprint_sensor_hint = 2131492933;
+			public const int status_bar_notification_info_overflow = 2131492933;
+			
+			// aapt resource value: 0x7F0C0046
+			public const int touch_fingerprint_sensor_hint = 2131492934;
 			
 			static String()
 			{
diff --git a/ZigbeeApp/Home.Ios/AppDelegate.cs b/ZigbeeApp/Home.Ios/AppDelegate.cs
index 487a509..d9396e2 100644
--- a/ZigbeeApp/Home.Ios/AppDelegate.cs
+++ b/ZigbeeApp/Home.Ios/AppDelegate.cs
@@ -76,6 +76,7 @@
                 }
             }
             AppCenter.Start("0ca801a2-742b-42fb-ba10-7ba4391371aa", typeof(Analytics), typeof(Crashes));
+            GDMapKit.setGDApiKey("866fae25f336bc8d9a79b1d19267fffb");//楂樺痉鍦板浘key
             return true;
         }
 
diff --git a/ZigbeeApp/Home.Ios/Home.IOS.csproj b/ZigbeeApp/Home.Ios/Home.IOS.csproj
old mode 100755
new mode 100644
index ae9e623..6abbf03
--- a/ZigbeeApp/Home.Ios/Home.IOS.csproj
+++ b/ZigbeeApp/Home.Ios/Home.IOS.csproj
@@ -211,6 +211,7 @@
       <BundleResource Include="Resources\Phone\AC\Swing_1Selected.png" />
       <BundleResource Include="Resources\Phone\AC\Mode_Dry.png" />
       <BundleResource Include="Resources\Phone\AC\Group.png" />
+      <BundleResource Include="Resources\Phone\AC\AC_TIP.png" />
       <BundleResource Include="Resources\Phone\AC\Swing_2.png" />
       <BundleResource Include="Resources\Phone\AC\Swing_3.png" />
       <BundleResource Include="Resources\Phone\AC\Fan_Low.png" />
@@ -295,10 +296,16 @@
       <BundleResource Include="Resources\Phone\RollerShade\Open.png" />
       <BundleResource Include="Resources\Phone\RollerShade\CloseSelected.png" />
       <BundleResource Include="Resources\Phone\RollerShade\Close.png" />
-      <BundleResource Include="Resources\Phone\SceneIcon\4.png" />
-      <BundleResource Include="Resources\Phone\SceneIcon\2.png" />
-      <BundleResource Include="Resources\Phone\SceneIcon\3.png" />
-      <BundleResource Include="Resources\Phone\SceneIcon\1.png" />
+      <BundleResource Include="Resources\Phone\SceneIcon\8.jpg" />
+      <BundleResource Include="Resources\Phone\SceneIcon\9.jpg" />
+      <BundleResource Include="Resources\Phone\SceneIcon\4.jpg" />
+      <BundleResource Include="Resources\Phone\SceneIcon\5.jpg" />
+      <BundleResource Include="Resources\Phone\SceneIcon\7.jpg" />
+      <BundleResource Include="Resources\Phone\SceneIcon\6.jpg" />
+      <BundleResource Include="Resources\Phone\SceneIcon\2.jpg" />
+      <BundleResource Include="Resources\Phone\SceneIcon\3.jpg" />
+      <BundleResource Include="Resources\Phone\SceneIcon\1.jpg" />
+      <BundleResource Include="Resources\Phone\SceneIcon\0.jpg" />
       <BundleResource Include="Resources\Phone\BindPic\BindEmptyPic.png" />
       <BundleResource Include="Resources\Phone\BindPic\BindLeft.png" />
       <BundleResource Include="Resources\Phone\BindPic\BindAdd.png" />
@@ -428,6 +435,7 @@
       <BundleResource Include="Resources\Phone\Item\UnLockFail.png" />
       <BundleResource Include="Resources\Phone\Item\ProgressMsg.png" />
       <BundleResource Include="Resources\Phone\Item\BottomButtonGround.png" />
+      <BundleResource Include="Resources\Phone\Item\AutoBackup.png" />
       <BundleResource Include="Resources\Phone\Item\Category_FunctionBGSelected.png" />
       <BundleResource Include="Resources\Phone\Item\NoFunction.png" />
       <BundleResource Include="Resources\Phone\Item\DeleteIcon2.png" />
@@ -617,6 +625,7 @@
       <BundleResource Include="Resources\Phone\Floor\FloorSelected.png" />
       <BundleResource Include="Resources\Phone\Floor\Floor.png" />
       <BundleResource Include="Resources\Phone\RoomIcon\4.JPG" />
+      <BundleResource Include="Resources\Phone\RoomIcon\5.JPG" />
       <BundleResource Include="Resources\Phone\RoomIcon\2.JPG" />
       <BundleResource Include="Resources\Phone\RoomIcon\3.JPG" />
       <BundleResource Include="Resources\Phone\RoomIcon\1.JPG" />
@@ -635,6 +644,7 @@
       <BundleResource Include="Resources\Phone\Account\Logo_loginBG.png" />
       <BundleResource Include="Resources\Phone\Account\Back.png" />
       <BundleResource Include="Resources\Phone\Account\UnhidePwd.png" />
+      <BundleResource Include="Resources\Phone\Scene\Delaying.png" />
       <BundleResource Include="Resources\Phone\Scene\Selected.png" />
       <BundleResource Include="Resources\Phone\Scene\SceneIcon.png" />
       <BundleResource Include="Resources\Phone\FunctionIcon\17Icon.png" />
diff --git a/ZigbeeApp/Home.Ios/Info.plist b/ZigbeeApp/Home.Ios/Info.plist
index ee37aaa..1d769fe 100755
--- a/ZigbeeApp/Home.Ios/Info.plist
+++ b/ZigbeeApp/Home.Ios/Info.plist
@@ -51,6 +51,7 @@
 	<string>development</string>
 	<key>UIBackgroundModes</key>
 	<array>
+		<string>location</string>
 		<string>remote-notification</string>
 	</array>
 	<key>CFBundleShortVersionString</key>
diff --git a/ZigbeeApp/Home.Ios/Resources/Language.ini b/ZigbeeApp/Home.Ios/Resources/Language.ini
index d049587..8724e0e 100755
--- a/ZigbeeApp/Home.Ios/Resources/Language.ini
+++ b/ZigbeeApp/Home.Ios/Resources/Language.ini
@@ -225,6 +225,7 @@
 219=寮�閿佸け璐�
 220=瀵嗙爜鍙兘涓嶅瓨鍦紝灏濊瘯閲嶆柊楠岃瘉杩滅▼寮�閿佸瘑鐮�
 221=缁戝畾澶辫触锛岀粦瀹氬嚭鐜版湭鐭ラ敊璇�
+222=绂荤嚎鍦烘櫙
 
 548=鎻愰啋璁剧疆
 550=鏂板鐢ㄦ埛
@@ -685,6 +686,9 @@
 12107=绌烘皵寮�鍏�
 12108=褰╃伅
 12109=涓户鍣�
+12110=娓╁害浼犳劅鍣�
+12111=婀垮害浼犳劅鍣�
+12112=娓╂箍搴︿紶鎰熷櫒
 
 
 13100=鎴块棿鍒楄〃
@@ -736,6 +740,8 @@
 13146=榛樿鍥惧簱
 13147=鎷嶇収
 13148=鎴戠殑鐩稿唽
+13149=璇ュ満鏅鍦ㄥ欢鏃讹紝璇风◢鍚�
+
 
 13500=閫夋嫨鎽嗛
 13501=鑷姩
@@ -744,6 +750,7 @@
 13504=3鎸�
 13505=4鎸�
 13506=5鎸�
+13511=璇锋竻娲佹护缃�
 
 
 
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/AC/AC_TIP.png b/ZigbeeApp/Home.Ios/Resources/Phone/AC/AC_TIP.png
new file mode 100755
index 0000000..85df850
--- /dev/null
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/AC/AC_TIP.png
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/Item/AutoBackup.png b/ZigbeeApp/Home.Ios/Resources/Phone/Item/AutoBackup.png
new file mode 100755
index 0000000..9417f1a
--- /dev/null
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/Item/AutoBackup.png
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/RoomIcon/0.JPG b/ZigbeeApp/Home.Ios/Resources/Phone/RoomIcon/0.JPG
index 11acf8a..b073d45 100755
--- a/ZigbeeApp/Home.Ios/Resources/Phone/RoomIcon/0.JPG
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/RoomIcon/0.JPG
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/RoomIcon/5.JPG b/ZigbeeApp/Home.Ios/Resources/Phone/RoomIcon/5.JPG
new file mode 100755
index 0000000..11acf8a
--- /dev/null
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/RoomIcon/5.JPG
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/Scene/Delaying.png b/ZigbeeApp/Home.Ios/Resources/Phone/Scene/Delaying.png
new file mode 100755
index 0000000..b5ff313
--- /dev/null
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/Scene/Delaying.png
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/0.jpg b/ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/0.jpg
new file mode 100755
index 0000000..138fcc0
--- /dev/null
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/0.jpg
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/1.jpg b/ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/1.jpg
new file mode 100755
index 0000000..2ca1843
--- /dev/null
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/1.jpg
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/1.png b/ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/1.png
deleted file mode 100755
index bde3463..0000000
--- a/ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/1.png
+++ /dev/null
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/2.jpg b/ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/2.jpg
new file mode 100755
index 0000000..110fd90
--- /dev/null
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/2.jpg
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/2.png b/ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/2.png
deleted file mode 100755
index e40bf4f..0000000
--- a/ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/2.png
+++ /dev/null
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/3.jpg b/ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/3.jpg
new file mode 100755
index 0000000..7c2eac6
--- /dev/null
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/3.jpg
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/3.png b/ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/3.png
deleted file mode 100755
index 928aa7c..0000000
--- a/ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/3.png
+++ /dev/null
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/4.jpg b/ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/4.jpg
new file mode 100755
index 0000000..7df2f14
--- /dev/null
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/4.jpg
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/4.png b/ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/4.png
deleted file mode 100755
index f495627..0000000
--- a/ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/4.png
+++ /dev/null
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/5.jpg b/ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/5.jpg
new file mode 100755
index 0000000..dbc3018
--- /dev/null
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/5.jpg
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/6.jpg b/ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/6.jpg
new file mode 100755
index 0000000..f9db5be
--- /dev/null
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/6.jpg
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/7.jpg b/ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/7.jpg
new file mode 100755
index 0000000..dc1e95e
--- /dev/null
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/7.jpg
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/8.jpg b/ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/8.jpg
new file mode 100755
index 0000000..c7b55c1
--- /dev/null
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/8.jpg
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/9.jpg b/ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/9.jpg
new file mode 100755
index 0000000..154c111
--- /dev/null
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/SceneIcon/9.jpg
Binary files differ
diff --git a/ZigbeeApp/Shared/Common/CommonPage.cs b/ZigbeeApp/Shared/Common/CommonPage.cs
index 2ef9c2b..7a587d5 100755
--- a/ZigbeeApp/Shared/Common/CommonPage.cs
+++ b/ZigbeeApp/Shared/Common/CommonPage.cs
@@ -7,7 +7,7 @@
 using Shared.Phone.UserCenter.Abount;
 namespace Shared.Common
 {
-    public class CommonPage : FrameLayout
+    public class CommonPage : UIDrawerLayout
     {
         static CommonPage commonPage;
         public static CommonPage Instance
@@ -43,6 +43,11 @@
             Application.MainPage.AddChidren(Loading);
             //}
             Phone.UserView.HomePage.Instance.InitPage();
+
+            var roomList = new Shared.Phone.Device.Room.RoomManagement();
+           
+            Instance.AddLeftView(roomList);
+            roomList.Show();
         }
 
         public static string SoftTitle = "ZigBee";
@@ -57,7 +62,7 @@
         /// <summary>
         /// 鐗堟湰鍙�
         /// </summary>
-        public static string CodeIDString = "1.0.19112201";
+        public static string CodeIDString = "1.0.19112601";
         /// <summary>
         /// 娉ㄥ唽鏉ユ簮(0:HDL On 1:Zigbee)
         /// </summary>
diff --git a/ZigbeeApp/Shared/Common/Device.cs b/ZigbeeApp/Shared/Common/Device.cs
index b9086a3..7259cdb 100755
--- a/ZigbeeApp/Shared/Common/Device.cs
+++ b/ZigbeeApp/Shared/Common/Device.cs
@@ -1524,7 +1524,8 @@
         /// </summary>
         /// <param name="listDevice">闇�瑕佷繚瀛樼殑璁惧瀵硅薄</param>
         /// <param name="roomId">闇�瑕佷繚瀛樼殑鍝釜璁惧鐨勬埧闂碔D</param>
-        public void SaveRealDeviceRoomId(List<CommonDevice> listDevice, string roomId)
+        /// <param name="saveRoadDevice">濡傛灉鍙湁涓�涓洖璺�,鏄惁鎶婂洖璺殑鎴块棿涓�璧蜂慨鏀�</param>
+        public void SaveRealDeviceRoomId(List<CommonDevice> listDevice, string roomId, bool saveRoadDevice = true)
         {
             if (listDevice != null)
             {
@@ -1535,10 +1536,13 @@
             string fullName = UserCenterLogic.CombinePath(DirNameResourse.DeviceRoomIdFile);
             UserCenterLogic.SaveFileContent(fullName, this.dicDeviceRoomId);
 
+            //娣诲姞鑷姩澶囦唤
+            HdlAutoBackupLogic.AddOrEditorFile(DirNameResourse.DeviceRoomIdFile);
+
             //濡傛灉璁惧鍙湁涓�涓洖璺紝濡傛灉鏀瑰彉浜嗙湡瀹炶澶囧尯鍩燂紝鍒欏畠鐨勫洖璺殑鍖哄煙涔熶竴璧锋敼浜�
-            if (listDevice != null && listDevice.Count == 1)
+            if (saveRoadDevice == true && listDevice != null && listDevice.Count == 1)
             {
-                Common.Room.CurrentRoom.ChangedRoom(listDevice[0], roomId);
+                Common.Room.CurrentRoom.ChangedRoom(listDevice[0], roomId, false);
             }
         }
 
diff --git a/ZigbeeApp/Shared/Common/DeviceUI.cs b/ZigbeeApp/Shared/Common/DeviceUI.cs
index a796ccb..d3034cc 100755
--- a/ZigbeeApp/Shared/Common/DeviceUI.cs
+++ b/ZigbeeApp/Shared/Common/DeviceUI.cs
@@ -178,38 +178,42 @@
             {
                 case DeviceType.OnOffSwitch:
                     //鎺у埗闈㈡澘
-                    ImagePath= "Device/DryContact.png";
+                    ImagePath = "Device/DryContact.png";
                     break;
                 case DeviceType.OnOffOutput:
                     //缁х數鍣�
-                    ImagePath= "Device/Relay.png";
+                    ImagePath = "Device/Relay.png";
                     break;
                 case DeviceType.DimmableLight:
                     //璋冨厜鐏�
-                    ImagePath= "Device/DimmableLight.png";
+                    ImagePath = "Device/DimmableLight.png";
                     break;
                 case DeviceType.WindowCoveringDevice:
                     //绐楀笜
-                    ImagePath= "Device/Curtain.png";
+                    ImagePath = "Device/Curtain.png";
                     break;
                 case DeviceType.Thermostat:
                     //绌鸿皟
-                    ImagePath= "Device/AirConditioner.png";
+                    ImagePath = "Device/AirConditioner.png";
                     break;
                 case DeviceType.IASZone:
                     //浼犳劅鍣�
-                    ImagePath= "Device/Sensor.png";
+                    ImagePath = "Device/Sensor.png";
                     break;
                 case DeviceType.AirSwitch:
                     //绌烘皵寮�鍏�
-                    ImagePath= "Device/AirSwitch.png";
+                    ImagePath = "Device/AirSwitch.png";
                     break;
                 case DeviceType.Repeater:
                     //涓户鍣�
                     ImagePath = "Device/AirSwitch.png";
                     break;
+                case DeviceType.TemperatureSensor:
+                    //娓╂箍搴︿紶鎰熷櫒
+                    ImagePath = "Device/Sensor.png";
+                    break;
                 default:
-                    ImagePath= "Device/Relay.png";
+                    ImagePath = "Device/Relay.png";
                     break;
             }
             return ImagePath;
@@ -309,6 +313,10 @@
                     deviceTypeR = R.MyInternationalizationString.DoorLock;
                     break;
 
+                case DeviceType.TemperatureSensor:
+                    //娓╁害浼犳劅鍣�
+                    deviceTypeR = R.MyInternationalizationString.TemperatureAndHumiditySensor;
+                    break;
                 default:
                     deviceTypeR = R.MyInternationalizationString.UnknowDevice;
                     break;
diff --git a/ZigbeeApp/Shared/Common/House.cs b/ZigbeeApp/Shared/Common/House.cs
index d78cfa6..204d2a4 100755
--- a/ZigbeeApp/Shared/Common/House.cs
+++ b/ZigbeeApp/Shared/Common/House.cs
@@ -311,7 +311,7 @@
                                 house.Latitude = residence.Latitude;
                             }
                             Global.CreateHomeDirectory(residence.Id);
-                            house.Save();
+                            house.Save(false);
                         }
                         //鍖归厤褰撳墠浣忓畢
                         if (Config.Instance.HomeFilePathList.Find((obj) => obj == $"House_{Config.Instance.HomeId}.json") == null)
@@ -443,6 +443,21 @@
             }
             return null;
         }
+        /// <summary>
+        /// InitFloor
+        /// </summary>
+        public  void InitFloor()
+        {
+            if (Config.Instance.Home.FloorDics.Count > 0 && string.IsNullOrEmpty(CurrentFloorId))
+            {
+                foreach (var floor in Config.Instance.Home.FloorDics)
+                {
+                    CurrentFloorId = floor.Key;
+                    Save(false);
+                    return;
+                }
+            }
+        }
 
         #endregion
 
diff --git a/ZigbeeApp/Shared/Common/Room.cs b/ZigbeeApp/Shared/Common/Room.cs
index 2edf091..495100a 100755
--- a/ZigbeeApp/Shared/Common/Room.cs
+++ b/ZigbeeApp/Shared/Common/Room.cs
@@ -281,11 +281,11 @@
             {
                 //榛樿娣诲姞鍠滅埍鐨勬埧闂�--绂佹淇敼鎴块棿鍚�
                 var love = new Room { Name = Language.StringByID(R.MyInternationalizationString.Favorite), BackgroundImage = "RoomIcon/0.JPG", Id = LoveRoomId };
-                love.Save(true);
+                love.Save(false);
                 //娣诲姞鍒癶ouse 鎴块棿璺緞鍒楄〃
                 var currentHome = Config.Instance.Home;
                 currentHome.RoomFilePathList.Insert(0, love.FileName);
-                currentHome.Save();
+                currentHome.Save(false);
             }
             foreach (var roomFilePath in Config.Instance.Home.RoomFilePathList)
             {
@@ -298,8 +298,10 @@
                         room.Name = $"{room.Name}";
                     }
                     Lists.Add(room);
+                   
                 }
             }
+            Config.Instance.Home.InitFloor();
         }
 
         /// <summary>
@@ -416,8 +418,7 @@
             try
             {
                 var roomFile = Global.ReadFileByHomeId(roomFilePath);
-                var roomData = System.Text.Encoding.UTF8.GetString(roomFile);
-                var nowRoom = Newtonsoft.Json.JsonConvert.DeserializeObject<Room>(roomData);
+                var nowRoom = Newtonsoft.Json.JsonConvert.DeserializeObject<Room>(System.Text.Encoding.UTF8.GetString(roomFile));
 
                 if (null == nowRoom)
                 {
@@ -646,7 +647,8 @@
         /// </summary>
         /// <param name="device">璁惧瀵硅薄</param>
         /// <param name="roomId">鏂版埧闂碔d</param>
-        public void ChangedRoom(CommonDevice device, string roomId)
+        /// <param name="saveRealRoom">鏄惁淇敼鐪熷疄鐗╃悊璁惧鐨勬埧闂�,涓嶅嚭鎰忓,杩欎釜鍊奸粯璁や负true鍗冲彲</param>
+        public void ChangedRoom(CommonDevice device, string roomId, bool saveRealRoom = true)
         {
             //鎴块棿鏄惁淇敼
             if (this.IsRoomChanged(device, roomId) == false)
@@ -660,7 +662,7 @@
             var room = this.GetRoomById(roomId);
             if (room != null)
             {
-                room.AddDevice(device);
+                room.AddDevice(device, saveRealRoom);
             }
         }
 
@@ -749,7 +751,7 @@
         #region 鈼� 娣诲姞璁惧________________________
 
         /// <summary>
-        /// 娣诲姞璁惧
+        /// 娣诲姞璁惧(姝ゆ柟娉曠洰鍓嶅彧缁欍�愭垜鐨勫枩鐖便�戜娇鐢�)
         /// </summary>
         /// <param name="deviceUIFilePath">Device UIF ile path.</param>
         public void AddDevice(string deviceUIFilePath)
@@ -774,10 +776,11 @@
         }
 
         /// <summary>
-        /// 娣诲姞璁惧
+        /// 娣诲姞璁惧(姝ゆ柟娉曠洰鍓嶅彧缁橰oom閲岄潰浣跨敤)
         /// </summary>
         /// <param name="device">瑕佹坊鍔犵殑璁惧瀵硅薄</param>
-        public void AddDevice(CommonDevice device)
+        /// <param name="saveRealRoom">鏄惁淇敼鐪熷疄鐗╃悊璁惧鐨勬埧闂�,涓嶅嚭鎰忓,杩欎釜鍊奸粯璁や负true鍗冲彲</param>
+        public void AddDevice(CommonDevice device, bool saveRealRoom)
         {
             if (device == null)
             {
@@ -785,9 +788,6 @@
             }
             //璁惧淇℃伅淇濆瓨鍒版湰鍦�
             device.Save();
-
-            //娣诲姞鑷姩澶囦唤
-            HdlAutoBackupLogic.AddOrEditorFile(device.FilePath);
 
             var deviceUI = Common.LocalDevice.Current.GetDeviceUI(device);
             if (DeviceUIFilePathList.Contains(deviceUI.FileName) == false)
@@ -799,6 +799,11 @@
 
                 //娣诲姞鑷姩澶囦唤
                 HdlAutoBackupLogic.AddOrEditorFile(FileName);
+                if (saveRealRoom == true && LocalDevice.Current.GetDevicesCountByMac(device.DeviceAddr) == 1)
+                {
+                    //濡傛灉鍙湁涓�涓洖璺�,鍒欎慨鏀圭湡瀹炵墿鐞嗚澶囩殑鎴块棿
+                    LocalDevice.Current.SaveRealDeviceRoomId(new List<CommonDevice>() { device }, this.Id, false);
+                }
             }
         }
 
@@ -1195,7 +1200,6 @@
             Save();
             Global.DeleteFilebyHomeId(sceneUI.FileName);
             HdlAutoBackupLogic.DeleteFile(sceneUI.FileName);
-            HdlAutoBackupLogic.AddOrEditorFile(FileName);
         }
 
         #endregion
diff --git a/ZigbeeApp/Shared/Common/SceneTargetDeviceUI.cs b/ZigbeeApp/Shared/Common/SceneTargetDeviceUI.cs
index 15739d4..e61dadc 100755
--- a/ZigbeeApp/Shared/Common/SceneTargetDeviceUI.cs
+++ b/ZigbeeApp/Shared/Common/SceneTargetDeviceUI.cs
@@ -159,7 +159,7 @@
                     }
                     else if(taskListInfo.Data1==4 || taskListInfo.Data1==5)
                     {
-                        tempareture = $"{ taskListInfo.Data2} 鈩�";
+                        tempareture = $"{ taskListInfo.Data2/100} 鈩�";
                     }
                     else if (taskListInfo.Data1 == 6)
                     {
@@ -179,7 +179,6 @@
                 }
                 return $"{tempareture},{model},{wind}";
             }
-
             else
             {
                 return null;
diff --git a/ZigbeeApp/Shared/Common/SceneUI.cs b/ZigbeeApp/Shared/Common/SceneUI.cs
index 364b4bb..eee86e6 100755
--- a/ZigbeeApp/Shared/Common/SceneUI.cs
+++ b/ZigbeeApp/Shared/Common/SceneUI.cs
@@ -27,7 +27,7 @@
         /// <summary>
         /// 鍦烘櫙id
         /// </summary>
-        public int Id = int.MaxValue;
+        public int Id = -1;
 
         /// <summary>
         /// 鍦烘櫙鍚�
@@ -73,6 +73,12 @@
         /// </summary>
         [Newtonsoft.Json.JsonIgnore]
         public int SceneDelayTime = 0;
+
+        /// <summary>
+        /// 鍓╀綑瑙﹀彂鏃堕棿锛屽崟浣嶇
+        /// </summary>
+        [Newtonsoft.Json.JsonIgnore]
+        public int RemainTime;
 
         /// <summary>
         /// 鍦烘櫙鎵ц鐩爣
diff --git a/ZigbeeApp/Shared/DLL/Android/Shared.Droid.HDLWidget.dll b/ZigbeeApp/Shared/DLL/Android/Shared.Droid.HDLWidget.dll
index eca4ad3..8c539f3 100755
--- a/ZigbeeApp/Shared/DLL/Android/Shared.Droid.HDLWidget.dll
+++ b/ZigbeeApp/Shared/DLL/Android/Shared.Droid.HDLWidget.dll
Binary files differ
diff --git a/ZigbeeApp/Shared/DLL/Android/Shared.Droid.Smartrefresh.dll b/ZigbeeApp/Shared/DLL/Android/Shared.Droid.Smartrefresh.dll
index b93340f..41cbd1b 100755
--- a/ZigbeeApp/Shared/DLL/Android/Shared.Droid.Smartrefresh.dll
+++ b/ZigbeeApp/Shared/DLL/Android/Shared.Droid.Smartrefresh.dll
Binary files differ
diff --git a/ZigbeeApp/Shared/DLL/Android/Shared.Droid.TouchID.dll b/ZigbeeApp/Shared/DLL/Android/Shared.Droid.TouchID.dll
index 0fdaa8e..75af8f6 100755
--- a/ZigbeeApp/Shared/DLL/Android/Shared.Droid.TouchID.dll
+++ b/ZigbeeApp/Shared/DLL/Android/Shared.Droid.TouchID.dll
Binary files differ
diff --git a/ZigbeeApp/Shared/DLL/Android/Shared.Droid.dll b/ZigbeeApp/Shared/DLL/Android/Shared.Droid.dll
index 9f50f32..6199639 100755
--- a/ZigbeeApp/Shared/DLL/Android/Shared.Droid.dll
+++ b/ZigbeeApp/Shared/DLL/Android/Shared.Droid.dll
Binary files differ
diff --git a/ZigbeeApp/Shared/DLL/IOS/Shared.IOS.TBL.dll b/ZigbeeApp/Shared/DLL/IOS/Shared.IOS.TBL.dll
index ef7b82d..b287b75 100755
--- a/ZigbeeApp/Shared/DLL/IOS/Shared.IOS.TBL.dll
+++ b/ZigbeeApp/Shared/DLL/IOS/Shared.IOS.TBL.dll
Binary files differ
diff --git a/ZigbeeApp/Shared/DLL/IOS/Shared.IOS.dll b/ZigbeeApp/Shared/DLL/IOS/Shared.IOS.dll
index 94a7bb8..e646f69 100755
--- a/ZigbeeApp/Shared/DLL/IOS/Shared.IOS.dll
+++ b/ZigbeeApp/Shared/DLL/IOS/Shared.IOS.dll
Binary files differ
diff --git a/ZigbeeApp/Shared/Phone/Device/AC/ACControl.cs b/ZigbeeApp/Shared/Phone/Device/AC/ACControl.cs
index 394f0c2..d984867 100755
--- a/ZigbeeApp/Shared/Phone/Device/AC/ACControl.cs
+++ b/ZigbeeApp/Shared/Phone/Device/AC/ACControl.cs
@@ -112,7 +112,15 @@
         /// mArcScaleSeekBar
         /// </summary>
         private ArcScaleSeekBar mArcScaleSeekBar = new ArcScaleSeekBar { };
+        /// <summary>
+        /// 娓呮磥鐘舵��
+        /// </summary>
+        private LeftIconButtonRow cleanStatu;
 
+        /// <summary>
+        /// IsDrawerLockMode
+        /// </summary>
+        public bool IsDrawerLockMode;
         #endregion
 
         #region 鈼� 鎺ュ彛___________________________
@@ -230,6 +238,22 @@
                                         FanSwingModeBtn.IsSelected = true;
                                     }
                                     break;
+
+                                case 4097:
+                                    //杩囪檻缃戞竻娲楁爣蹇�:42
+                                    ac.CleanStatu = attriButeList[0].AttriButeData == 42;
+                                    cleanStatu.Visible = ac.CleanStatu;
+                                    break;
+
+                                case 4099:
+                                    var value = Convert.ToString(attriButeList[0].AttriButeData, 2).PadLeft(16, '0');
+                                    var modeStr = value.Substring(value.Length - 5, 5);
+                                    for (int j = 0; j < modeStr.Length; j++)
+                                    {
+                                        ac.listSupportMode[j] = Convert.ToInt32(modeStr[j]) == 49 ? 1 : 0;
+                                    }
+                                    break;
+
                             }
                         }
 
@@ -334,6 +358,7 @@
             BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor;
             ZigBee.Device.ZbGateway.StatusList.Add(this);
             HomePage.Instance.ScrollEnabled = false;
+
         }
 
         #endregion
@@ -350,6 +375,10 @@
             //action = null;
             RemoveUpdateControlDeviceStatuAction();
             HomePage.Instance.ScrollEnabled = true;
+            if (IsDrawerLockMode)
+            {
+                CommonPage.Instance.IsDrawerLockMode = false;
+            }
             base.RemoveFromParent();
         }
 
@@ -389,6 +418,8 @@
                     ac.ReadFanMode();
                     ac.ReadSystemMode();
                     ac.ReadSystemFansSwingMode();
+                    ac.ReadModeSupport();
+                    ac.ReadCleanStatu();
                 });
             }
             else
@@ -404,6 +435,8 @@
                     ac.ReadFanMode();
                     ac.ReadSystemMode();
                     ac.ReadSystemFansSwingMode();
+                    ac.ReadModeSupport();
+                    ac.ReadCleanStatu();
                 }
             }
 
@@ -417,9 +450,7 @@
                 collectionBtn.IsSelected = true;
             }
 
-
             BindEvent();
-
         }
 
         #endregion
@@ -439,7 +470,6 @@
                 RemoveFromParent();
             };
 
-
             var moreBtn = new Button
             {
                 X = Application.GetRealWidth(953),
@@ -451,7 +481,6 @@
             top.topView.AddChidren(moreBtn);
 
             moreBtn.MouseUpEventHandler += More;
-
         }
         /// <summary>
         /// AddBodyView
@@ -476,6 +505,11 @@
                 BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
             };
             bodyFrameLayout.AddChidren(itemView);
+
+            cleanStatu = new LeftIconButtonRow(400, 80, 0, 20);
+            itemView.AddChidren(cleanStatu);
+            cleanStatu.Init("AC/AC_TIP.png", "AC/AC_TIP.png", Language.StringByID(R.MyInternationalizationString.NeedCleanAC), false);
+            cleanStatu.Visible = false;
 
             collectionBtn = new Button()
             {
@@ -524,19 +558,16 @@
             itemView.AddChidren(mArcScaleSeekBar);
             mArcScaleSeekBar.OnStopTrackingTouchEvent += (sender, e) =>
             {
-                //cool  //dry
                 if (ac.currentSystemMode == 3 || ac.currentSystemMode == 8)
                 {
                     ac.currentCoolingSetpoint = e;
                     ac.SetCoolingTemperatureAsync(ac.currentCoolingSetpoint * 100);
                 }
-                //heat
                 else if (ac.currentSystemMode == 4)
                 {
                     ac.currentHeatingSetpoint = e;
                     ac.SetHeatingTemperatureAsync(ac.currentHeatingSetpoint * 100);
                 }
-                //auto
                 else if (ac.currentSystemMode == 1)
                 {
                     ac.currentAutoSetpoint = e;
@@ -544,7 +575,6 @@
                 }
             };
 
-            //褰撳墠妯″紡
             currentModeBtn = new Button()
             {
                 Y = Application.GetRealHeight(599),
@@ -555,7 +585,7 @@
                 Text = ACControlBase.GetModeNameByModeId(ac.currentSystemMode)
             };
             itemView.AddChidren(currentModeBtn);
-            //闄嶄綆娓╁害
+            
             reduceTemperatureBtn = new Button()
             {
                 X = Application.GetRealWidth(268),
@@ -566,7 +596,6 @@
             };
             itemView.AddChidren(reduceTemperatureBtn);
 
-            //娣诲姞娓╁害
             addTemperatureBtn = new Button()
             {
                 X = Application.GetRealWidth(628),
@@ -577,7 +606,6 @@
             };
             itemView.AddChidren(addTemperatureBtn);
 
-            //鎵
             FanSwingModeBtn = new Button()
             {
                 X = Application.GetRealWidth(156),
@@ -590,7 +618,6 @@
             };
             itemView.AddChidren(FanSwingModeBtn);
 
-            //妯″紡
             modeBtn = new Button()
             {
                 X = Application.GetRealWidth(346),
@@ -603,7 +630,6 @@
             };
             itemView.AddChidren(modeBtn);
 
-            //寮�鍏�
             switchBtn = new Button()
             {
                 X = Application.GetRealWidth(536),
@@ -616,7 +642,6 @@
             };
             itemView.AddChidren(switchBtn);
 
-            //椋庨��
             fanModeBtn = new Button()
             {
                 X = Application.GetRealWidth(729),
@@ -905,13 +930,13 @@
             };
             closeBGview.AddChidren(changeModeBG);
 
-            var changeModeFL = new FrameLayout()
+            var changeModeFL = new VerticalScrolViewLayout()
             {
                 X = Application.GetRealWidth(230),
                 Y = Application.GetRealHeight(450),
                 Height = Application.GetRealHeight(900),
                 Width = Application.GetRealWidth(modeItem_Width),
-                Radius = CommonPage.BigFormRadius,
+                Radius = CommonFormResouce.BigFormRadius,
                 BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor,
                 //BackgroundIagePath="AC/SelectedModeBG.png"
             };
@@ -935,7 +960,10 @@
                 Height = Application.GetRealHeight(modeItem_Height),
                 Tag = ZigBee.Device.AC.AcMode.Auto
             };
-            changeModeFL.AddChidren(mode_Auto);
+            if (ac.listSupportMode[4] == 1)
+            {
+                changeModeFL.AddChidren(mode_Auto);
+            }
             mode_Auto.Init("AC/Mode_Auto.png", "AC/Mode_AutoSelected.png", Language.StringByID(R.MyInternationalizationString.Mode_Auto));
 
             var mode_Cool = new CommonForm.ACLeftIconButtonRowLayout()
@@ -945,7 +973,10 @@
                 Height = Application.GetRealHeight(modeItem_Height),
                 Tag = ZigBee.Device.AC.AcMode.Cool
             };
-            changeModeFL.AddChidren(mode_Cool);
+            if (ac.listSupportMode[0] == 1)
+            {
+                changeModeFL.AddChidren(mode_Cool);
+            }
             mode_Cool.Init("AC/Mode_Cool.png", "AC/Mode_CoolSelected.png", Language.StringByID(R.MyInternationalizationString.Mode_Cool));
 
             var mode_Heat = new CommonForm.ACLeftIconButtonRowLayout()
@@ -955,7 +986,10 @@
                 Height = Application.GetRealHeight(modeItem_Height),
                 Tag = ZigBee.Device.AC.AcMode.Heat
             };
-            changeModeFL.AddChidren(mode_Heat);
+            if (ac.listSupportMode[1] == 1)
+            {
+                changeModeFL.AddChidren(mode_Heat);
+            }
             mode_Heat.Init("AC/Mode_Heat.png", "AC/Mode_HeatSelected.png", Language.StringByID(R.MyInternationalizationString.Mode_Heat));
 
             var mode_Dry = new CommonForm.ACLeftIconButtonRowLayout()
@@ -965,7 +999,10 @@
                 Height = Application.GetRealHeight(modeItem_Height),
                 Tag = ZigBee.Device.AC.AcMode.Dry
             };
-            changeModeFL.AddChidren(mode_Dry);
+            if (ac.listSupportMode[3] == 1)
+            {
+                changeModeFL.AddChidren(mode_Dry);
+            }
             mode_Dry.Init("AC/Mode_Dry.png", "AC/Mode_DrySelected.png", Language.StringByID(R.MyInternationalizationString.Mode_Dry));
 
             var mode_Fan = new CommonForm.ACLeftIconButtonRowLayout()
@@ -975,8 +1012,12 @@
                 Height = Application.GetRealHeight(modeItem_Height),
                 Tag = ZigBee.Device.AC.AcMode.FanOnly
             };
-            changeModeFL.AddChidren(mode_Fan);
+            if (ac.listSupportMode[2] == 1)
+            {
+                changeModeFL.AddChidren(mode_Fan);
+            }
             mode_Fan.Init("AC/Mode_Fan.png", "AC/Mode_FanSelected.png", Language.StringByID(R.MyInternationalizationString.Mode_FanOnly), false);
+
 
             mode_Auto.TitleButton.MouseUpEventHandler += ChangeMode_MouseUpEvent;
             mode_Auto.IconButton.MouseUpEventHandler += ChangeMode_MouseUpEvent;
@@ -1071,13 +1112,11 @@
             ac.currentSystemMode = (int)acMode;
             mArcScaleSeekBar.Progress = ACControlBase.GetCurrentModeTemperature(ac);
             ac.SetSystemModeAsync(acMode);
-
-
         }
 
         #endregion
 
-        #region 鈼� 鍒囨崲鎵___________________________
+        #region 鈼� 鍒囨崲鎵______________________
 
 
         /// <summary>
@@ -1270,7 +1309,6 @@
                 mode = ZigBee.Device.AC.FanSwingMode.Fifth;
             }
 
-
             ChangeFanSwing(mode);
         }
 
@@ -1310,7 +1348,6 @@
                 ACControlBase.ShowACIsCloseTip();
                 return;
             }
-            //cool  //dry
             if (ac.currentSystemMode == 3 || ac.currentSystemMode == 8)
             {
                 if (ac.currentCoolingSetpoint >= ACControlBase.Temperature_High)
@@ -1319,10 +1356,8 @@
                 }
                 ac.currentCoolingSetpoint += 1;
                 ac.SetCoolingTemperatureAsync(ac.currentCoolingSetpoint * 100);
-                //currentTemperatureBtn.Text = $"{ac.currentCoolingSetpoint} 掳C";
                 mArcScaleSeekBar.Progress = ac.currentCoolingSetpoint;
             }
-            //heat
             else if (ac.currentSystemMode == 4)
             {
                 if (ac.currentHeatingSetpoint >= ACControlBase.Temperature_High)
@@ -1331,10 +1366,8 @@
                 }
                 ac.currentHeatingSetpoint += 1;
                 ac.SetHeatingTemperatureAsync(ac.currentHeatingSetpoint * 100);
-                //currentTemperatureBtn.Text = $"{ac.currentHeatingSetpoint} 掳C";
                 mArcScaleSeekBar.Progress = ac.currentHeatingSetpoint;
             }
-            //auto
             else if (ac.currentSystemMode == 1)
             {
                 if (ac.currentAutoSetpoint >= ACControlBase.Temperature_High)
@@ -1343,10 +1376,8 @@
                 }
                 ac.currentAutoSetpoint += 1;
                 ac.SetAutoTemperatureAsync(ac.currentAutoSetpoint * 100);
-                //currentTemperatureBtn.Text = $"{ac.currentAutoSetpoint} 掳C";
                 mArcScaleSeekBar.Progress = ac.currentAutoSetpoint;
             }
-
         }
 
         #endregion
@@ -1365,7 +1396,6 @@
                 ACControlBase.ShowACIsCloseTip();
                 return;
             }
-            //cool //dry
             if (ac.currentSystemMode == 3 || ac.currentSystemMode == 8)
             {
                 if (ac.currentCoolingSetpoint <= ACControlBase.Temperature_Low)
@@ -1374,11 +1404,8 @@
                 }
                 ac.currentCoolingSetpoint -= 1;
                 ac.SetCoolingTemperatureAsync(ac.currentCoolingSetpoint * 100);
-
-                //currentTemperatureBtn.Text = $"{ac.currentCoolingSetpoint} 掳C";
                 mArcScaleSeekBar.Progress = ac.currentCoolingSetpoint;
             }
-            //heat
             else if (ac.currentSystemMode == 4)
             {
                 if (ac.currentHeatingSetpoint <= ACControlBase.Temperature_Low)
@@ -1387,11 +1414,8 @@
                 }
                 ac.currentHeatingSetpoint -= 1;
                 ac.SetHeatingTemperatureAsync(ac.currentHeatingSetpoint * 100);
-
-                //currentTemperatureBtn.Text = $"{ac.currentHeatingSetpoint} 掳C";
                 mArcScaleSeekBar.Progress = ac.currentHeatingSetpoint;
             }
-            //auto
             else if (ac.currentSystemMode == 1)
             {
                 if (ac.currentAutoSetpoint <= ACControlBase.Temperature_Low)
@@ -1400,11 +1424,8 @@
                 }
                 ac.currentAutoSetpoint -= 1;
                 ac.SetAutoTemperatureAsync(ac.currentAutoSetpoint * 100);
-
-                //currentTemperatureBtn.Text = $"{ac.currentAutoSetpoint} 掳C";
                 mArcScaleSeekBar.Progress = ac.currentAutoSetpoint;
             }
-
         }
 
         #endregion
@@ -1441,7 +1462,6 @@
         /// </summary>
         private void RemoveUpdateControlDeviceStatuAction()
         {
-            //绉婚櫎action
             if (zbGateway != null)
             {
                 zbGateway.ReportAction -= UpdateDeviceControllStatu;
@@ -1480,7 +1500,6 @@
         /// <param name="e">E.</param>
         private void Collection(object sender, MouseEventArgs e)
         {
-            //collection
             if (collectionBtn.IsSelected)
             {
                 Shared.Common.Room.Lists[0].DeleteDevice(device.FileName);
@@ -1505,7 +1524,6 @@
         private void BackToRoomHandler(object sender, MouseEventArgs mouseEventArgs)
         {
             //backToRoom
-
         }
 
         #endregion
diff --git a/ZigbeeApp/Shared/Phone/Device/Account/AccountLogin.cs b/ZigbeeApp/Shared/Phone/Device/Account/AccountLogin.cs
index 74d3d8c..76f8dad 100644
--- a/ZigbeeApp/Shared/Phone/Device/Account/AccountLogin.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Account/AccountLogin.cs
@@ -324,7 +324,7 @@
             }
             else
             {
-                Login(phoneRow.AccountET.Text.Trim(), pwdRow.PasswrodET.Text.Trim());
+                Login(emailRow.AccountET.Text.Trim(), pwdRow.PasswrodET.Text.Trim());
             }
 
         }
diff --git a/ZigbeeApp/Shared/Phone/Device/Account/AccountRegister.cs b/ZigbeeApp/Shared/Phone/Device/Account/AccountRegister.cs
index 815216b..6123f46 100755
--- a/ZigbeeApp/Shared/Phone/Device/Account/AccountRegister.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Account/AccountRegister.cs
@@ -208,7 +208,7 @@
         private void AddPhoneOrEmailFL(FrameLayout accountCodeFrameLayout, string phoneOrEmail)
         {
             accountCodeFrameLayout.RemoveAll();
-
+            account = string.Empty;
             if (phoneOrEmail == "Phone")
             {
                 phoneRow = new PhoneRowForm();
diff --git a/ZigbeeApp/Shared/Phone/Device/Account/PhoneEmailForm.cs b/ZigbeeApp/Shared/Phone/Device/Account/PhoneEmailForm.cs
index 194a6bb..48ea58b 100755
--- a/ZigbeeApp/Shared/Phone/Device/Account/PhoneEmailForm.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Account/PhoneEmailForm.cs
@@ -21,8 +21,6 @@
         /// </summary>
         private FrameLayout PhoneEmailFL;
 
-
-
         public PhoneEmailForm()
         {
         }
@@ -185,8 +183,6 @@
             };
             accountFL.AddChidren(accountLine);
         }
-
-
     }
 
     public class PhoneLoginRowForm : FrameLayout
@@ -251,8 +247,6 @@
             };
             accountFL.AddChidren(accountLine);
         }
-
-
     }
 
     public class EmailRowForm : FrameLayout
@@ -455,7 +449,7 @@
         /// VerificationCodeET
         /// </summary>
         public EditText VerificationCodeET;
-    
+
         /// <summary>
         /// Init
         /// </summary>
@@ -1120,8 +1114,6 @@
             t.Dispose();
             base.RemoveFromParent();
         }
-
     }
-
 
 }
diff --git a/ZigbeeApp/Shared/Phone/Device/Category/Category.cs b/ZigbeeApp/Shared/Phone/Device/Category/Category.cs
index ea4d439..777c8a8 100755
--- a/ZigbeeApp/Shared/Phone/Device/Category/Category.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Category/Category.cs
@@ -283,6 +283,20 @@
                                                 ac.currentSystemMode = attriButeList[0].AttriButeData;
                                                 ac.LastDateTime = DateTime.Now;
                                                 break;
+
+                                            case 4099:
+                                                var value = Convert.ToString(attriButeList[0].AttriButeData, 2).PadLeft(16, '0');
+                                                var modeStr = value.Substring(value.Length - 5, 5);
+                                                for (int j = 0; j < modeStr.Length; j++)
+                                                {
+                                                    ac.listSupportMode[j] = Convert.ToInt32(modeStr[j]) == 49 ? 1 : 0;
+                                                }
+                                                break;
+
+                                            case 4097:
+                                                //杩囪檻缃戞竻娲楁爣蹇�:42
+                                                ac.CleanStatu = attriButeList[0].AttriButeData == 42;
+                                                break;
                                         }
 
                                         var row = rowLayout.GetChildren(0) as CategoryFunctionRow;
@@ -384,12 +398,14 @@
                                     row.SetStatu(deviceUI.CommonDevice.IsOnline == 1);
                                     deviceUI.CommonDevice.LastDateTime = DateTime.Now;
                                     break;
+
                                 case DeviceType.AirSwitch:
                                     deviceUI.CommonDevice.IsOnline = common.IsOnline;
                                     var row1 = rowLayout.GetChildren(0) as CategoryFunctionRow;
                                     row1.SetStatu(deviceUI.CommonDevice.IsOnline == 1);
                                     deviceUI.CommonDevice.LastDateTime = DateTime.Now;
                                     break;
+
                                 case DeviceType.WindowCoveringDevice:
                                     deviceUI.CommonDevice.LastDateTime = DateTime.Now;
                                     deviceUI.CommonDevice.IsOnline = common.IsOnline;
@@ -403,6 +419,7 @@
                                     var row3 = rowLayout.GetChildren(0) as CategoryFunctionRow;
                                     row3.SetStatu(deviceUI.CommonDevice.IsOnline == 1);
                                     break;
+
                                 case DeviceType.Thermostat:
                                     deviceUI.CommonDevice.LastDateTime = DateTime.Now;
                                     deviceUI.CommonDevice.IsOnline = common.IsOnline;
@@ -608,9 +625,10 @@
             var floors = new SelectFloor ();
             AddChidren(floors);
             floors.Init(580,330,Direction.Right);
-            floors.FloorAction += (floorName) =>
+            floors.changeFloor = true;
+            floors.FloorAction += (floorId) =>
             {
-                floorBtn.Text = floorName;
+                floorBtn.Text = Config.Instance.Home.GetFloorNameById(floorId);
                 RefreshBodyView();
             };
         }
@@ -1071,6 +1089,7 @@
 
                             deviceRow.ClickBtn.MouseUpEventHandler += (send2, e2) =>
                             {
+
                                 var lightControl = new Phone.Device.Light.AirSwitchControl();
                                 UserView.HomePage.Instance.AddChidren(lightControl);
                                 UserView.HomePage.Instance.PageIndex += 1;
@@ -1219,6 +1238,8 @@
                                     ac.ReadFanMode();
                                     ac.ReadSystemMode();
                                     ac.ReadSystemFansSwingMode();
+                                    ac.ReadModeSupport();
+                                    ac.ReadCleanStatu();
                                 });
                             }
                             else
@@ -1234,12 +1255,14 @@
                                     ac.ReadFanMode();
                                     ac.ReadSystemMode();
                                     ac.ReadSystemFansSwingMode();
+                                    ac.ReadModeSupport();
+                                    ac.ReadCleanStatu();
                                 }
                             }
 
                             var deviceTypeRowLayout = new RowLayout()
                             {
-                                Height = Application.GetRealHeight(127 + 35),
+                                Height = Application.GetRealHeight(129 + 35),
                                 LineColor = ZigbeeColor.Current.GXCBackgroundColor,
                                 Tag = deviceUI
                             };
@@ -1337,7 +1360,6 @@
                                     rollerShade.ReadWcdCurrentPositionLiftPercentage();
                                 }
                             }
-
 
                             var deviceTypeRowLayout = new RowLayout()
                             {
@@ -1551,6 +1573,8 @@
                     BorderWidth = 1
                 };
                 row.AddChidren(roomBtn);
+                roomBtn.SetViewShadow(true,5);
+
                 if (room.IsLove)
                 {
                     roomBtn.IsSelected = true;
@@ -1564,7 +1588,7 @@
                     {
                         RefreshFunction(room);
                     }
-                   
+
                 }
                 roomBtn.MouseUpEventHandler += (sender, e) =>
                 {
@@ -1585,7 +1609,7 @@
                     }
                 };
             }
-            
+
         }
 
         #endregion
@@ -1613,244 +1637,15 @@
             }
             else
             {
-                var sceneScrolView = new VerticalScrolViewLayout
-                {
-                    //Y = Application.GetRealHeight(58)
-                };
+                var sceneScrolView = new VerticalScrolViewLayout { };
                 functionSceneBodyView.AddChidren(sceneScrolView);
                 foreach (var scene in sceneList)
                 {
-                    var sceneFL = new FrameLayout()
-                    {
-                        Height = Application.GetRealHeight(446),
-                        BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor,
-                        Tag = scene
-                    };
-                    sceneScrolView.AddChidren(sceneFL);
-                    var sceneRowLayout = new RowLayout
-                    {
-                        Y = Application.GetRealHeight(46),
-                        Height = Application.GetRealHeight(446 - 46),
-                        LineColor = ZigbeeColor.Current.GXCGrayBackgroundColor,
-                        Radius = CommonPage.BigFormRadius
-                    };
-                    sceneFL.AddChidren(sceneRowLayout);
-
-                    var sceneImg = new Button()
-                    {
-                        X = Application.GetRealWidth(179),
-                        Width = Application.GetRealWidth(844),
-                        Height = Application.GetRealHeight(400),
-                        UnSelectedImagePath = scene.IconPath,
-                        Radius = (uint)Application.GetRealHeight(17)
-                    };
-                    sceneRowLayout.AddChidren(sceneImg);
-
-                    var leftFL = new FrameLayout
-                    {
-                        X = Application.GetRealWidth(CommonFormResouce.X_Left),
-                        Y = Application.GetRealHeight(58),
-                        Width = Application.GetRealWidth(251),
-                        Height = Application.GetRealHeight(282),
-                        BackgroundColor = ZigbeeColor.Current.GXCBlackBackgroundColor2,
-                        Radius = (uint)Application.GetRealHeight(17)
-                    };
-                    sceneRowLayout.AddChidren(leftFL);
-
-                    var collectionBtn = new Button
-                    {
-                        X = Application.GetRealWidth(23),
-                        Y = Application.GetRealHeight(23),
-                        Width = Application.GetMinRealAverage(65),
-                        Height = Application.GetMinRealAverage(65),
-                        UnSelectedImagePath = "Item/Collection.png",
-                        SelectedImagePath = "Item/CollectionSelected.png",
-                        IsSelected = Common.Room.CurrentRoom.GetLoveRoom().SceneUIFilePathList.Contains(scene.FileName),
-                        Tag = scene
-                    };
-                    leftFL.AddChidren(collectionBtn);
-                    
-                    var sceneNameBtn = new Button()
-                    {
-                        Width = Application.GetRealWidth(176),
-                        Height = Application.GetRealHeight(150),
-                        TextColor = ZigbeeColor.Current.GXCTextWhiteColor,
-                        Text = scene.Name,
-                        Gravity = Gravity.Center,
-                        IsMoreLines = true
-                    };
-                    leftFL.AddChidren(sceneNameBtn);
-
-                    var collection = new Button
-                    {
-                        Tag=scene
-                    };
-                    leftFL.AddChidren(collection);
-                    collection.MouseUpEventHandler += (sender, e) =>
-                    {
-                        if (room.IsLove)
-                        {
-                            Common.Room.CurrentRoom.GetLoveRoom().DeleteScene(scene);
-                            sceneScrolView.RemoveViewByTag(collectionBtn.Tag);
-                        }
-                        else
-                        {
-                            collectionBtn.IsSelected = !collectionBtn.IsSelected;
-                            if (collectionBtn.IsSelected)
-                            {
-                                Common.Room.CurrentRoom.GetLoveRoom().AddScene(scene);
-                            }
-                            else
-                            {
-                                Common.Room.CurrentRoom.GetLoveRoom().DeleteScene(scene);
-                            }
-                        }
-                    };
-
-                    //瀹氭椂
-                    var delayBtn = new RowLayoutDeleteButton
-                    {
-                        TextID = R.MyInternationalizationString.Delay,
-                        Tag = scene.SceneDelayTime
-                    };
-                    sceneRowLayout.AddLeftView(delayBtn);
-
-                    //缂栬緫
-                    var settingBtn = new Device.CommonForm.RowLayoutEditButton()
-                    {
-                        TextID = R.MyInternationalizationString.Editor,
-                        Tag = scene.SceneDelayTime
-                    };
-                    //鍒犻櫎
-                    var deleteBtn = new Device.CommonForm.RowLayoutDeleteButton
-                    {
-                        Tag = scene
-                    };
-
-
-                    if(room.IsSharedRoom)
-                    {
-
-                    }
-                    else
-                    {
-                        if(room.IsLove)
-                        {
-                            sceneRowLayout.AddRightView(deleteBtn);
-                        }
-                        else
-                        {
-                            sceneRowLayout.AddRightView(settingBtn);
-                            sceneRowLayout.AddRightView(deleteBtn);
-                        }
-                    }
-
-
-                    //璋冪敤鍦烘櫙
-                    EventHandler<MouseEventArgs> sceneUpHandler = async (sender, e) =>
-                    {
-                        //1鎴愬姛 0澶辫触
-                        //鍚庨潰琛ヤ笂鐩稿叧鎻愮ず
-                        //瑕佸厛浠庣綉鍏宠鍙栧欢鏃舵槸鍚︽鍦ㄦ墽琛岋紝濡傛灉鏄繘琛屽�掕鏃讹紝涓嶅厑璁稿湪鐐瑰嚮
-                        var sceneOpenAllData = await ZigBee.Device.Scene.ControlSceneAsync(scene.Id, scene.SceneDelayTime);
-                        //涓荤綉鍏充笉鍦ㄧ嚎
-                        if (sceneOpenAllData == null)
-                        {
-                            //CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheMainGatewayIsNotOnLine);
-                            CommonPage.Instance.FailureToServer();
-                            return;
-                        }
-                        if (sceneOpenAllData.sceneOpenData == null)
-                        {
-                            CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.FailedPleaseTryAgain);
-                            return;
-                        }
-                        //鎴愬姛
-                        if (sceneOpenAllData.sceneOpenData.Result == 1)
-                        {
-
-                        }
-                        //澶辫触
-                        else
-                        {
-                            CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.FailedPleaseTryAgain);
-                            return;
-                        }
-                    };
-                    sceneImg.MouseUpEventHandler += sceneUpHandler;
-                    //鍒犻櫎鍦烘櫙
-                    EventHandler<MouseEventArgs> delEvent = (sender, e) =>
-                    {
-                        if(room.IsLove)
-                        {
-                            Shared.Common.Room.CurrentRoom.GetLoveRoom().DeleteScene(scene);
-                            sceneScrolView.RemoveViewByTag((sender as Button).Tag);
-                        }
-                        else
-                        {
-                            var tip = new CustomAlert { };
-                            AddChidren(tip);
-                            tip.Show(Language.StringByID(R.MyInternationalizationString.ConfirmDelete));
-
-                            //var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.ConfirmDelete), Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
-                            //alert.Show();
-                            tip.ResultEventHandler += async (e1) =>
-                            {
-                                if (e1)
-                                {
-                                    //0 绉婚櫎澶辫触 1 绉婚櫎鎴愬姛 2 娌℃湁璇ュ満鏅�
-                                    var removeSceneAllData = await ZigBee.Device.Scene.DeleteSceneAsync(scene.Id);
-                                    if (removeSceneAllData == null || removeSceneAllData.removeSceneData == null)
-                                    {
-                                        //CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheMainGatewayIsNotOnLine);
-                                        CommonPage.Instance.FailureToServer();
-                                        return;
-                                    }
-                                    //1鎴愬姛
-                                    if (removeSceneAllData.removeSceneData.Result == 1)
-                                    {
-                                        room.RemoveScene(scene);
-                                        //RefreshBodyView();
-                                        sceneScrolView.RemoveViewByTag((sender as Button).Tag);
-                                    }
-                                    //0 绉婚櫎澶辫触
-                                    else if (removeSceneAllData.removeSceneData.Result == 0)
-                                    {
-                                        CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.FailedPleaseTryAgain);
-                                        return;
-                                    }
-                                    //2 娌℃湁璇ュ満鏅�
-                                    else if (removeSceneAllData.removeSceneData.Result == 2)
-                                    {
-                                        room.RemoveScene(scene);
-                                        //RefreshBodyView();
-                                        sceneScrolView.RemoveViewByTag((sender as Button).Tag);
-                                        CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheSceneIsNull);
-                                        return;
-                                    }
-                                }
-                            };
-                        }
-                        
-                    };
-                    deleteBtn.MouseUpEventHandler += delEvent;
-                    //缂栬緫鍦烘櫙
-                    settingBtn.MouseUpEventHandler += (sender, e) =>
-                    {
-                        SceneUI.EditScene(scene, room);
-                    };
-                    //缂栬緫寤舵椂
-                    delayBtn.MouseUpEventHandler += (sender, e) =>
-                    {
-                        var timeSelect = new SelectTime();
-                        CommonPage.Instance.AddChidren(timeSelect);
-                        timeSelect.TempTime = scene.SceneDelayTime;
-                        timeSelect.Init();
-                        timeSelect.TimeAction = (t) =>
-                        {
-                            scene.SceneDelayTime = t;
-                        };
-                    };
+                    var sceneView = new SceneCategoryView(0, 0);
+                    sceneScrolView.AddChidren(sceneView);
+                    sceneView.Init(scene, room);
+                    sceneView.SetViewShadow(true);
+                    GetDelayScene(sceneScrolView);
                 }
             }
         }
@@ -1885,6 +1680,63 @@
         }
 
 
+        /// <summary>
+        /// GetDelayScene
+        /// </summary>
+        /// <param name="scrolViewLayout"></param>
+        private void GetDelayScene(VerticalScrolViewLayout scrolViewLayout)
+        {
+            new System.Threading.Thread(async () =>
+            {
+                var catDelaySceneResponseAllData = await Scene.CatDelaySceneAsync();
+                if (catDelaySceneResponseAllData == null)
+                {
+                    return;
+                }
+                var catDelaySceneResponseData = catDelaySceneResponseAllData.catDelaySceneResponseData;
+                if (catDelaySceneResponseData == null || catDelaySceneResponseData.DelayScenesList.Count == 0)
+                {
+                    return;
+                }
+                var delayList = catDelaySceneResponseData.DelayScenesList;
+
+                Application.RunOnMainThread(() =>
+                {
+                    for (int i = 0; scrolViewLayout != null && i < scrolViewLayout.ChildrenCount; i++)
+                    {
+                        var sceneView = scrolViewLayout.GetChildren(i) as SceneCategoryView;
+                        foreach (var delayScenesListResponseInfo in delayList)
+                        {
+                            if (delayScenesListResponseInfo.ScenesId == sceneView.scene.Id)
+                            {
+                                sceneView.scene.RemainTime = delayScenesListResponseInfo.RemainTime;
+                                new System.Threading.Thread(() =>
+                                {
+                                    while (sceneView.scene.RemainTime > 0)
+                                    {
+                                        System.Threading.Thread.Sleep(1000);
+                                        Application.RunOnMainThread(() =>
+                                        {
+                                            sceneView.SetTimeText(CommonFormResouce.GetTimeString(sceneView.scene.RemainTime));
+                                        });
+                                        sceneView.scene.RemainTime -= 1;
+                                    }
+                                    Application.RunOnMainThread(() =>
+                                    {
+                                        sceneView.SetTimeImage();
+                                    });
+                                })
+                                { IsBackground = true }.Start();
+
+                                break;
+                            }
+                        }
+                    }
+                });
+            })
+            { IsBackground = true }.Start();
+        }
+
         #endregion
 
         #region 鈼� 鑷姩鍖朹_________________________
@@ -1902,11 +1754,11 @@
                 Height = Application.GetRealHeight(170),
                 BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
                 X = Application.GetRealWidth(58),
-                Radius = (uint)Application.GetRealHeight(50),
+                //Radius = (uint)Application.GetRealHeight(50),
                 Y = Application.GetRealHeight(30),
             };
             functionSceneAutoBodyView.AddChidren(bjFrameLayout);
-
+            bjFrameLayout.SetCornerWithSameRadius(25, HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerBottomLeft);
             var sigBtn = new Button
             {
                 Width = Application.GetMinRealAverage(84),
@@ -1957,10 +1809,11 @@
                 Height = functionSceneAutoBodyView.Height - bjFrameLayout.Height - bjFrameLayout.Y - scenehorizontalScrol.Height - Application.GetRealHeight(30),
                 BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor,
                 X = Application.GetRealWidth(58),
-                Radius = (uint)Application.GetRealHeight(50),
+                //Radius = (uint)Application.GetRealHeight(50),
                 Y = scenehorizontalScrol.Bottom,
             };
             functionSceneAutoBodyView.AddChidren(logicScrolView);
+            logicScrolView.SetCornerWithSameRadius(20, HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerBottomLeft);
 
 
             recommendswitchBtn.MouseUpEventHandler += (sender, e) =>
diff --git a/ZigbeeApp/Shared/Phone/Device/Category/CategoryAddScene.cs b/ZigbeeApp/Shared/Phone/Device/Category/CategoryAddScene.cs
index 89af024..9763cd1 100755
--- a/ZigbeeApp/Shared/Phone/Device/Category/CategoryAddScene.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Category/CategoryAddScene.cs
@@ -151,7 +151,6 @@
                         targetRow.SetNameText(devNameText);
                         targetRow.SetZoneText(targetDevice.SceneUI.GetZone());
                     }
-                   
                     
                     var editBtn = new Button()
                     {
@@ -332,9 +331,10 @@
                 Gravity = Gravity.Center,
                 Radius = (uint)Application.GetMinRealAverage(CommonFormResouce.BigFormRadius),
                 //UnSelectedImagePath = ImagePath
-                UnSelectedImagePath = "SceneIcon/3.png"
+                UnSelectedImagePath = "SceneIcon/3.jpg"
             };
             imgFL.AddChidren(backGround);
+            backGround.SetViewShadow(true);
 
             var infoFL = new FrameLayout
             {
@@ -539,6 +539,7 @@
                     localPic.action = (imgPath) =>
                     {
                         IconPathType = 0;
+                        backGround.ImageBytes = null;
                         backGround.UnSelectedImagePath = imgPath;
                     };
                 };
@@ -1017,7 +1018,7 @@
                         try
                         {
                             var tradeTime = DateTime.Now.ToString("yyyyMMddHHmmss", DateTimeFormatInfo.InvariantInfo);
-                            var fileName = $"Scene_{tradeTime}";
+                            var fileName = $"SceneIcon_{tradeTime}.png";
                             string imgPath;
                             //鍥剧墖
                             if (IconPathType == 1 || IconPathType == 2)
diff --git a/ZigbeeApp/Shared/Phone/Device/Category/CategorySceneSelectImgByLocal.cs b/ZigbeeApp/Shared/Phone/Device/Category/CategorySceneSelectImgByLocal.cs
index d166540..9811dc5 100755
--- a/ZigbeeApp/Shared/Phone/Device/Category/CategorySceneSelectImgByLocal.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Category/CategorySceneSelectImgByLocal.cs
@@ -70,8 +70,8 @@
             };
             bodyFrameLayout.AddChidren(scrollView);
 
-            int k = 1;
-            for (int j = 0; j < 2; j++)
+            int k = 0;
+            for (int j = 0; j < 5; j++)
             {
                 var itemView = new FrameLayout()
                 {
@@ -86,9 +86,10 @@
                         Width=Application.GetMinRealAverage(467),
                         Height=Application.GetMinRealAverage(311),
                         Gravity=Gravity.CenterVertical,
-                        UnSelectedImagePath = $"SceneIcon/{k}.png",
+                        UnSelectedImagePath = $"SceneIcon/{k}.jpg",
                     };
                     itemView.AddChidren(icon);
+                    icon.SetViewShadow(true);
                     k++;
 
                     EventHandler<MouseEventArgs> selectIcon = (sender, e) =>
diff --git a/ZigbeeApp/Shared/Phone/Device/Category/SelectDevice.cs b/ZigbeeApp/Shared/Phone/Device/Category/SelectDevice.cs
index 682e1f0..9b92c37 100755
--- a/ZigbeeApp/Shared/Phone/Device/Category/SelectDevice.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Category/SelectDevice.cs
@@ -104,7 +104,7 @@
 
             AddBodyView();
 
-            RefreshBodyView();
+            RefreshBodyView(Config.Instance.Home.CurrentFloorId);
         }
 
 
@@ -162,10 +162,10 @@
             var floors = new SelectFloor();
             AddChidren(floors);
             floors.Init(580, 184, Direction.Right);
-            floors.FloorAction += (floorName) =>
+            floors.FloorAction += (floorId) =>
             {
-                floorBtn.Text = floorName;
-                RefreshBodyView();
+                floorBtn.Text = Config.Instance.Home.GetFloorNameById(floorId);
+                RefreshBodyView(floorId);
             };
         }
         /// <summary>
@@ -187,15 +187,15 @@
         /// <summary>
         /// RefreshBodyView
         /// </summary>
-        private void RefreshBodyView()
+        private void RefreshBodyView(string floorId)
         {
-            AddRoomView();
+            AddRoomView(floorId);
         }
 
         /// <summary>
         /// AddRoomView
         /// </summary>
-        private void AddRoomView()
+        private void AddRoomView(string floorId)
         {
             var roomFL = new HorizontalScrolViewLayout()
             {
@@ -216,7 +216,7 @@
             bodyFrameLayout.AddChidren(functionSceneBodyView);
 
             Button curBtn = new Button();
-            foreach (var room in Common.Room.CurrentRoom.GetRoomsByCurrentFloorIdAppendLoveRoom())
+            foreach (var room in Common.Room.CurrentRoom.GetRoomsByFloorIdAppendLoveRoom(floorId))
             {
                 var row = new FrameLayout()
                 {
@@ -463,6 +463,7 @@
                 Height = Application.GetRealHeight(530),
             };
             dialog.AddChidren(selectFL);
+            selectFL.Animate = Animate.DownToUp;
 
             var titleBG = new FrameLayout
             {
@@ -619,6 +620,7 @@
                 Height = Application.GetRealHeight(752),
             };
             dialog.AddChidren(selectFL);
+            selectFL.Animate = Animate.DownToUp;
 
             var titleBG = new FrameLayout
             {
@@ -784,6 +786,7 @@
                 Height = Application.GetRealHeight(752),
             };
             dialog.AddChidren(selectFL);
+            selectFL.Animate = Animate.DownToUp;
 
             var titleBG = new FrameLayout
             {
@@ -949,6 +952,7 @@
                 Height = Application.GetRealHeight(1106),
             };
             dialog.AddChidren(selectFL);
+            selectFL.Animate = Animate.DownToUp;
 
             var titleBG = new FrameLayout
             {
@@ -1074,13 +1078,15 @@
                         }
                         if (tasklist.Data1 == 4 || tasklist.Data1 == 5)
                         {
-                            tempId = open.temperatureList.IndexOf(tasklist.Data2);
+                            tempId = open.temperatureList.IndexOf(tasklist.Data2/100);
                         }
                     }
 
                     open.pickerView.setCurrentItems(tempId, modelId, fanid);
                 }
             }
+
+
 
             comfrimBtn.MouseUpEventHandler = (sender, e) =>
             {
@@ -1132,7 +1138,7 @@
                         {
                             TaskType = taskType,
                             Data1 = 4,
-                            Data2 = open.temperatureList[tempId]
+                            Data2 = open.temperatureList[tempId]*100
                         };
                         taskList.Add(taskInfo3);
 
@@ -1144,7 +1150,7 @@
                         {
                             TaskType = taskType,
                             Data1 = 5,
-                            Data2 = open.temperatureList[tempId]
+                            Data2 = open.temperatureList[tempId]*100
                         };
                         taskList.Add(taskInfo3);
                     }
diff --git a/ZigbeeApp/Shared/Phone/Device/Category/SelectFloor.cs b/ZigbeeApp/Shared/Phone/Device/Category/SelectFloor.cs
index 93f30a9..b0b9fc2 100755
--- a/ZigbeeApp/Shared/Phone/Device/Category/SelectFloor.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Category/SelectFloor.cs
@@ -9,6 +9,7 @@
 
         public Action<string> FloorAction;
 
+        public bool changeFloor;
 
         /// <summary>
 		/// Init
@@ -97,12 +98,21 @@
             frow.TitleButton.MouseUpEventHandler += SelectFloor_MouseUpEvent;
         }
 
+        /// <summary>
+        /// SelectFloor_MouseUpEvent
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="mouseEventArgs"></param>
         private void SelectFloor_MouseUpEvent(object sender,MouseEventArgs mouseEventArgs)
         {
             ((sender as Button).Parent as CommonForm.LeftIconButtonRow).IsSelected = true;
-            Config.Instance.Home.CurrentFloorId = (sender as Button).Tag.ToString();
-            Config.Instance.Home.Save();
-            FloorAction?.Invoke(Config.Instance.Home.GetCurrentFloorName);
+            if(changeFloor)
+            {
+                Config.Instance.Home.CurrentFloorId = (sender as Button).Tag.ToString();
+                Config.Instance.Home.Save();
+            }
+            
+            FloorAction?.Invoke((sender as Button).Tag.ToString());
             RemoveFromParent();
         }
     }
diff --git a/ZigbeeApp/Shared/Phone/Device/Category/SelectScene.cs b/ZigbeeApp/Shared/Phone/Device/Category/SelectScene.cs
index 65094ac..7b3c175 100755
--- a/ZigbeeApp/Shared/Phone/Device/Category/SelectScene.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Category/SelectScene.cs
@@ -66,7 +66,7 @@
 
             AddBodyView();
 
-            RefreshBodyView();
+            RefreshBodyView(Config.Instance.Home.CurrentFloorId);
         }
 
 
@@ -124,10 +124,10 @@
             var floors = new SelectFloor();
             AddChidren(floors);
             floors.Init(580, 184, Direction.Right);
-            floors.FloorAction += (floorName) =>
+            floors.FloorAction += (floorId) =>
             {
-                floorBtn.Text = floorName;
-                RefreshBodyView();
+                floorBtn.Text = Config.Instance.Home.GetFloorNameById(floorId);
+                RefreshBodyView(floorId);
             };
         }
         /// <summary>
@@ -161,15 +161,15 @@
         /// <summary>
         /// RefreshBodyView
         /// </summary>
-        private void RefreshBodyView()
+        private void RefreshBodyView(string floorId)
         {
-            AddRoomView();
+            AddRoomView(floorId);
         }
 
         /// <summary>
         /// AddRoomView
         /// </summary>
-        private void AddRoomView()
+        private void AddRoomView(string floorId)
         {
             var roomFL = new HorizontalScrolViewLayout()
             {
@@ -190,7 +190,7 @@
             bodyFrameLayout.AddChidren(functionSceneBodyView);
 
             Button curBtn = new Button();
-            foreach (var room in Common.Room.CurrentRoom.GetRoomsByCurrentFloorIdAppendLoveRoom())
+            foreach (var room in Common.Room.CurrentRoom.GetRoomsByFloorIdAppendLoveRoom(floorId))
             {
                 var row = new FrameLayout()
                 {
diff --git a/ZigbeeApp/Shared/Phone/Device/CommonForm/CommonFormResouce.cs b/ZigbeeApp/Shared/Phone/Device/CommonForm/CommonFormResouce.cs
index 624973a..85182b5 100755
--- a/ZigbeeApp/Shared/Phone/Device/CommonForm/CommonFormResouce.cs
+++ b/ZigbeeApp/Shared/Phone/Device/CommonForm/CommonFormResouce.cs
@@ -196,18 +196,22 @@
         /// <returns></returns>
         public static string GetTimeString(int second)
         {
-            string timeStr=string.Empty;
+            if (second == 0)
+            {
+                return null;
+            }
+            string timeStr = string.Empty;
             int hour = second / 3600;
             int minu = second % 3600 / 60;
             int sec = second % 60;
             if (hour > 0)
             {
                 timeStr += $"{hour}{Language.StringByID(R.MyInternationalizationString.Hour)}";
-                if (minu>0)
+                if (minu > 0)
                 {
                     timeStr += $"{minu}{Language.StringByID(R.MyInternationalizationString.Minute)}";
                 }
-                if(sec>0)
+                if (sec > 0)
                 {
                     timeStr += $"{sec}{Language.StringByID(R.MyInternationalizationString.Second)}";
                 }
@@ -216,7 +220,7 @@
             else if (minu > 0)
             {
                 timeStr += $"{minu}{Language.StringByID(R.MyInternationalizationString.Minute)}";
-                if(sec>0)
+                if (sec > 0)
                 {
                     timeStr += $"{sec}{Language.StringByID(R.MyInternationalizationString.Second)}";
                 }
@@ -227,6 +231,21 @@
                 return $"{sec}{Language.StringByID(R.MyInternationalizationString.Second)}";
             }
         }
-    }
 
+        /// <summary>
+        /// 鏄剧ず鎻愮ず
+        /// </summary>
+        /// <param name="r">The red component.</param>
+        public static void ShowTip(string msg)
+        {
+            Application.RunOnMainThread(() =>
+            {
+                var myTip = new Tip();
+                myTip.Direction = AMPopTipDirection.None;
+                myTip.CloseTime = 2;
+                myTip.Text = msg;
+                myTip.Show(Common.CommonPage.Instance);
+            });
+        }
+    }
 }
diff --git a/ZigbeeApp/Shared/Phone/Device/CommonForm/DeviceDetailInfo.cs b/ZigbeeApp/Shared/Phone/Device/CommonForm/DeviceDetailInfo.cs
index 72eb5ed..b992f88 100755
--- a/ZigbeeApp/Shared/Phone/Device/CommonForm/DeviceDetailInfo.cs
+++ b/ZigbeeApp/Shared/Phone/Device/CommonForm/DeviceDetailInfo.cs
@@ -162,6 +162,8 @@
                 BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
             };
             bodyFrameLayout.AddChidren(infoFL);
+            var rectCornerID = HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight;
+            infoFL.SetCornerWithSameRadius(Application.GetRealHeight(50), rectCornerID);
 
             var tipBtn = new Button
             {
diff --git a/ZigbeeApp/Shared/Phone/Device/CommonForm/LeftIconButtonRow.cs b/ZigbeeApp/Shared/Phone/Device/CommonForm/LeftIconButtonRow.cs
index 15e1e78..6ad3522 100755
--- a/ZigbeeApp/Shared/Phone/Device/CommonForm/LeftIconButtonRow.cs
+++ b/ZigbeeApp/Shared/Phone/Device/CommonForm/LeftIconButtonRow.cs
@@ -41,8 +41,10 @@
 
         #endregion
 
-        public LeftIconButtonRow(int width,int height)
+        public LeftIconButtonRow(int width,int height, int x = 0, int y = 0)
         {
+            X = x;
+            Y = y;
             Width = Application.GetRealWidth(width);
             Height = Application.GetRealHeight(height);
         }
diff --git a/ZigbeeApp/Shared/Phone/Device/CommonForm/SceneCategoryView.cs b/ZigbeeApp/Shared/Phone/Device/CommonForm/SceneCategoryView.cs
new file mode 100755
index 0000000..28e2981
--- /dev/null
+++ b/ZigbeeApp/Shared/Phone/Device/CommonForm/SceneCategoryView.cs
@@ -0,0 +1,357 @@
+锘縰sing System;
+using Shared.Common;
+namespace Shared.Phone.Device.CommonForm
+{
+    public class SceneCategoryView : FrameLayout
+    {
+        /// <summary>
+        /// scene
+        /// </summary>
+        public SceneUI scene;
+        /// <summary>
+        /// room
+        /// </summary>
+        public Shared.Common.Room room;
+        /// <summary>
+        /// delayTimeBtn
+        /// </summary>
+        private Button delayTimeBtn;
+        /// <summary>
+        /// delayImgBtn
+        /// </summary>
+        private Button delayImgBtn;
+        /// <summary>
+        /// sceneImg
+        /// </summary>
+        private Button sceneImg;
+
+        /// <summary>
+        /// SceneCategoryView
+        /// </summary>
+        /// <param name="x"></param>
+        /// <param name="y"></param>
+        public SceneCategoryView(int x, int y)
+        {
+            X = Application.GetRealWidth(x);
+            Y = Application.GetRealHeight(y);
+            Width = Application.GetRealWidth(1080);
+            Height = Application.GetRealHeight(446);
+            BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor;
+        }
+
+        /// <summary>
+        /// init
+        /// </summary>
+        public void Init(SceneUI sceneUI,Common.Room curRoom)
+        {
+            this.scene = sceneUI;
+            this.room = curRoom;
+
+            InitFrame();
+            InitStatu();
+        }
+
+        /// <summary>
+        /// InitFrame
+        /// </summary>
+        private void InitFrame()
+        {
+            var sceneRowLayout = new RowLayout
+            {
+                Y = Application.GetRealHeight(46),
+                Height = Application.GetRealHeight(446 - 46),
+                LineColor = ZigbeeColor.Current.GXCGrayBackgroundColor
+            };
+            AddChidren(sceneRowLayout);
+
+            sceneImg = new Button()
+            {
+                X = Application.GetRealWidth(179),
+                Width = Application.GetRealWidth(844),
+                Height = Application.GetRealHeight(400),
+                UnSelectedImagePath = scene.IconPath,
+                Radius = (uint)Application.GetRealHeight(17)
+            };
+            sceneRowLayout.AddChidren(sceneImg);
+
+            var leftFL = new FrameLayout
+            {
+                X = Application.GetRealWidth(CommonFormResouce.X_Left),
+                Y = Application.GetRealHeight(58),
+                Width = Application.GetRealWidth(251),
+                Height = Application.GetRealHeight(282),
+                BackgroundColor = ZigbeeColor.Current.GXCBlackBackgroundColor2,
+                Radius = (uint)Application.GetRealHeight(17)
+            };
+            sceneRowLayout.AddChidren(leftFL);
+
+            var collectionBtn = new Button
+            {
+                X = Application.GetRealWidth(23),
+                Y = Application.GetRealHeight(23),
+                Width = Application.GetMinRealAverage(65),
+                Height = Application.GetMinRealAverage(65),
+                UnSelectedImagePath = "Item/Collection.png",
+                SelectedImagePath = "Item/CollectionSelected.png",
+                IsSelected = Common.Room.CurrentRoom.GetLoveRoom().SceneUIFilePathList.Contains(scene.FileName),
+                Tag = scene
+            };
+            leftFL.AddChidren(collectionBtn);
+
+            var sceneNameBtn = new Button()
+            {
+                Width = Application.GetRealWidth(176),
+                Height = Application.GetRealHeight(150),
+                TextColor = ZigbeeColor.Current.GXCTextWhiteColor,
+                Text = scene.Name,
+                Gravity = Gravity.Center,
+                IsMoreLines = true
+            };
+            leftFL.AddChidren(sceneNameBtn);
+
+            var collection = new Button
+            {
+                Tag = scene
+            };
+            leftFL.AddChidren(collection);
+            collection.MouseUpEventHandler += (sender, e) =>
+            {
+                if (room.IsLove)
+                {
+                    Common.Room.CurrentRoom.GetLoveRoom().DeleteScene(scene);
+                    RemoveViewByTag(collectionBtn.Tag);
+                }
+                else
+                {
+                    collectionBtn.IsSelected = !collectionBtn.IsSelected;
+                    if (collectionBtn.IsSelected)
+                    {
+                        Common.Room.CurrentRoom.GetLoveRoom().AddScene(scene);
+                    }
+                    else
+                    {
+                        Common.Room.CurrentRoom.GetLoveRoom().DeleteScene(scene);
+                    }
+                }
+            };
+
+            delayTimeBtn = new Button
+            {
+                X = Application.GetRealWidth(780),
+                Y = Application.GetRealHeight(317),
+                Width = Application.GetRealWidth(200),
+                Height = Application.GetRealHeight(58),
+                Text = CommonFormResouce.GetTimeString(scene.SceneDelayTime),
+                TextAlignment = TextAlignment.CenterRight,
+                TextColor = ZigbeeColor.Current.GXCTextSelectedColor3
+            };
+            sceneRowLayout.AddChidren(delayTimeBtn);
+
+            delayImgBtn = new Button
+            {
+                X = Application.GetRealWidth(900),
+                Y = Application.GetRealHeight(30),
+                Width = Application.GetMinRealAverage(52),
+                Height = Application.GetMinRealAverage(52),
+                UnSelectedImagePath = "Scene/Delaying.png",
+                Visible=false
+            };
+            sceneRowLayout.AddChidren(delayImgBtn);
+
+            //瀹氭椂
+            var delayBtn = new RowLayoutDeleteButton
+            {
+                TextID = R.MyInternationalizationString.Delay,
+                Tag = scene.SceneDelayTime
+            };
+            sceneRowLayout.AddLeftView(delayBtn);
+            //缂栬緫
+            var settingBtn = new Device.CommonForm.RowLayoutEditButton()
+            {
+                TextID = R.MyInternationalizationString.Editor,
+                Tag = scene.SceneDelayTime
+            };
+            //鍒犻櫎
+            var deleteBtn = new Device.CommonForm.RowLayoutDeleteButton
+            {
+                Tag = scene
+            };
+
+            if (room.IsSharedRoom)
+            {
+
+            }
+            else
+            {
+                if (room.IsLove)
+                {
+                    sceneRowLayout.AddRightView(deleteBtn);
+                }
+                else
+                {
+                    sceneRowLayout.AddRightView(settingBtn);
+                    sceneRowLayout.AddRightView(deleteBtn);
+                }
+            }
+
+            //鍒犻櫎鍦烘櫙
+            EventHandler<MouseEventArgs> delEvent = (sender, e) =>
+            {
+                if (room.IsLove)
+                {
+                    Shared.Common.Room.CurrentRoom.GetLoveRoom().DeleteScene(scene);
+                    RemoveViewByTag((sender as Button).Tag);
+                }
+                else
+                {
+                    var tip = new CustomAlert { };
+                    AddChidren(tip);
+                    tip.Show(Language.StringByID(R.MyInternationalizationString.ConfirmDelete));
+
+                    tip.ResultEventHandler += async (e1) =>
+                    {
+                        if (e1)
+                        {
+                            //0 绉婚櫎澶辫触 1 绉婚櫎鎴愬姛 2 娌℃湁璇ュ満鏅�
+                            var removeSceneAllData = await ZigBee.Device.Scene.DeleteSceneAsync(scene.Id);
+                            if (removeSceneAllData == null || removeSceneAllData.removeSceneData == null)
+                            {
+                                CommonPage.Instance.FailureToServer();
+                                return;
+                            }
+                            //1鎴愬姛
+                            if (removeSceneAllData.removeSceneData.Result == 1)
+                            {
+                                room.RemoveScene(scene);
+                                //RefreshBodyView();
+                                RemoveViewByTag((sender as Button).Tag);
+                            }
+                            //0 绉婚櫎澶辫触
+                            else if (removeSceneAllData.removeSceneData.Result == 0)
+                            {
+                                CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.FailedPleaseTryAgain);
+                                return;
+                            }
+                            //2 娌℃湁璇ュ満鏅�
+                            else if (removeSceneAllData.removeSceneData.Result == 2)
+                            {
+                                room.RemoveScene(scene);
+                                //RefreshBodyView();
+                                RemoveViewByTag((sender as Button).Tag);
+                                CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheSceneIsNull);
+                                return;
+                            }
+                        }
+                    };
+                }
+            };
+            deleteBtn.MouseUpEventHandler += delEvent;
+            //缂栬緫鍦烘櫙
+            settingBtn.MouseUpEventHandler += (sender, e) =>
+            {
+                SceneUI.EditScene(scene, room);
+            };
+            //缂栬緫寤舵椂
+            delayBtn.MouseUpEventHandler += (sender, e) =>
+            {
+                if (scene.RemainTime > 0)
+                {
+                    CommonFormResouce.ShowTip(Language.StringByID(R.MyInternationalizationString.TheSceneIsDelaying));
+                    return;
+                }
+                var timeSelect = new SelectTime();
+                CommonPage.Instance.AddChidren(timeSelect);
+                timeSelect.TempTime = scene.SceneDelayTime;
+                timeSelect.Init();
+                timeSelect.TimeAction = (t) =>
+                {
+                    scene.SceneDelayTime = t;
+                    delayTimeBtn.Text = CommonFormResouce.GetTimeString(t);
+                };
+            };
+        }
+
+        /// <summary>
+        /// InitStatu
+        /// </summary>
+        private void InitStatu()
+        {
+            sceneImg.MouseUpEventHandler += SceneUpHandler;
+        }
+
+        /// <summary>
+        /// SceneUpHandler
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="args"></param>
+        private async void SceneUpHandler(object sender, MouseEventArgs args)
+        {
+            if (scene.RemainTime > 0 && scene.SceneDelayTime == 0)
+            {
+                CommonFormResouce.ShowTip(Language.StringByID(R.MyInternationalizationString.TheSceneIsDelaying));
+                return;
+            }
+            //1鎴愬姛 0澶辫触
+            //鍚庨潰琛ヤ笂鐩稿叧鎻愮ず
+            // Error鍙傛暟鍚箟
+            //<para>1锛氱綉鍏虫棤娉曡В鏋愬懡浠ゆ暟鎹��</para>
+            //<para>2锛氬崗璋冨櫒姝e湪鍗囩骇鎴栧浠�/鎭㈠鏁版嵁
+            //<para>3锛氭搷浣滆澶�/缁�/鍦烘櫙涓嶅瓨鍦�</para>
+            //<para>4锛氬叾浠栭敊璇�</para>
+            //<para>5锛氭暟鎹紶杈撻敊璇紙鍦ㄦ煇娆″鎴风鍚戠綉鍏冲彂閫佹暟鎹殑杩囩▼涓紝缃戝叧鍦ㄥ悎鐞嗘椂闂磋寖鍥村唴鎺ユ敹瀹㈡埛绔暟鎹笉瀹屾暣瀵艰嚧璇ラ敊璇彂鐢熴�傚瀹㈡埛绔悜缃戝叧涓�娆″彂閫�100涓瓧鑺傜殑鏁版嵁锛屼絾缃戝叧绛夊緟鎺ユ敹浜嗕竴绉掑彧鎺ユ敹浜�80涓瓧鑺傘�傚彂鐢熻閿欒锛岀綉鍏冲皢涓诲姩鍏抽棴瀹㈡埛绔繛鎺ワ級</para>
+            var sceneOpenAllData = await ZigBee.Device.Scene.ControlSceneAsync(scene.Id, scene.SceneDelayTime);
+
+            if (sceneOpenAllData == null || sceneOpenAllData.sceneOpenData == null)
+            {
+                return;
+            }
+            if (sceneOpenAllData.sceneOpenData.Result == 0)
+            {
+                if (sceneOpenAllData.errorResponData == null)
+                {
+                    return;
+                }
+                CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.ControlSceneFail);
+            }
+
+            scene.RemainTime = scene.SceneDelayTime;
+            scene.SceneDelayTime = 0;
+            new System.Threading.Thread(() =>
+            {
+                while (scene.RemainTime > 0)
+                {
+                    System.Threading.Thread.Sleep(1000);
+                    Application.RunOnMainThread(() =>
+                    {
+                        SetTimeText(CommonFormResouce.GetTimeString(scene.RemainTime));
+                    });
+                    scene.RemainTime -= 1;
+                }
+                Application.RunOnMainThread(() =>
+                {
+                    SetTimeImage();
+                });
+            })
+            { IsBackground = true }.Start();
+        }
+
+        /// <summary>
+        /// SetTimeText
+        /// </summary>
+        /// <param name="name"></param>
+        public void SetTimeText(string name)
+        {
+            delayImgBtn.Visible = true;
+            delayTimeBtn.Text = name;
+        }
+
+        /// <summary>
+        /// SetTimeImage
+        /// </summary>
+        public void SetTimeImage()
+        {
+            delayImgBtn.Visible = false;
+            delayTimeBtn.Text = string.Empty;
+        }
+    }
+}
diff --git a/ZigbeeApp/Shared/Phone/Device/CommonForm/SceneMainView.cs b/ZigbeeApp/Shared/Phone/Device/CommonForm/SceneMainView.cs
index 9318ae8..2c934c4 100755
--- a/ZigbeeApp/Shared/Phone/Device/CommonForm/SceneMainView.cs
+++ b/ZigbeeApp/Shared/Phone/Device/CommonForm/SceneMainView.cs
@@ -26,9 +26,17 @@
         /// </summary>
         private Button CardBG;
         /// <summary>
+        /// sceneBG
+        /// </summary>
+        public Button sceneBG;
+        /// <summary>
         /// v_Selected
         /// </summary>
         private bool v_Selected;
+        /// <summary>
+        /// scene
+        /// </summary>
+        public SceneUI scene;
 
         /// <summary>
         /// IsSelected
@@ -61,9 +69,20 @@
         /// <summary>
         /// init
         /// </summary>
-        public void Init()
+        public void Init(SceneUI sceneUI)
         {
-           
+            this.scene = sceneUI;
+
+            InitFrame();
+
+            InitStatu();
+        }
+
+        /// <summary>
+        /// InitFrame
+        /// </summary>
+        private void InitFrame()
+        {
             CardBG = new Button
             {
                 Width = Application.GetMinRealAverage(487),
@@ -82,7 +101,7 @@
             };
             AddChidren(SceneIcon);
 
-            var sceneBG = new Button
+            sceneBG = new Button
             {
                 Width = Application.GetMinRealAverage(487),
                 Height = Application.GetMinRealAverage(348),
@@ -99,7 +118,6 @@
                 Height = Application.GetMinRealAverage(63),
                 TextColor = ZigbeeColor.Current.GXCTextSelectedColor3,
                 TextAlignment = TextAlignment.CenterLeft,
-                Text="58s"
             };
             AddChidren(TimeButton);
 
@@ -123,12 +141,26 @@
                 TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                 SelectedTextColor = ZigbeeColor.Current.GXCTextSelectedColor,
                 TextAlignment = TextAlignment.CenterLeft,
-                Text="璧峰簥"
             };
             AddChidren(SceneNameButton);
-            
         }
 
+        /// <summary>
+        /// InitStatu
+        /// </summary>
+        private void InitStatu()
+        {
+            SetIimeByDelayTime(scene.SceneDelayTime);
+            SetSceneNameText(scene.Name);
+            SetIcon(scene.IconPath);
+            SetCollect(Common.Room.CurrentRoom.GetLoveRoom().SceneUIFilePathList.Contains(scene.FileName));
+
+            TimeButton.MouseUpEventHandler += SetTimeEvents;
+            CollectButton.MouseUpEventHandler += CollectionEvent;
+            SceneIcon.MouseUpEventHandler += SceneUpHandler;
+            sceneBG.MouseUpEventHandler += SceneUpHandler;
+            SceneNameButton.MouseUpEventHandler += SceneUpHandler;
+        }
 
         /// <summary>
         /// SetTimeText
@@ -151,6 +183,22 @@
             TimeButton.Height = Application.GetMinRealAverage(63);
             TimeButton.UnSelectedImagePath = "Item/Time.png";
             TimeButton.Text = string.Empty;
+        }
+
+        /// <summary>
+        /// SetIimeByDelayTime
+        /// </summary>
+        /// <param name="time"></param>
+        public void SetIimeByDelayTime(int time)
+        {
+            if (time > 0)
+            {
+                SetTimeText(CommonFormResouce.GetTimeString(time));
+            }
+            else
+            {
+                SetTimeImage();
+            }
         }
 
         /// <summary>
@@ -179,5 +227,104 @@
         {
             CollectButton.IsSelected = collect;
         }
+
+        /// <summary>
+        /// 璋冪敤鍦烘櫙
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="args"></param>
+        private async void SceneUpHandler(object sender, MouseEventArgs args)
+        {
+            if (scene.RemainTime > 0 && scene.SceneDelayTime == 0)
+            {
+                CommonFormResouce.ShowTip(Language.StringByID(R.MyInternationalizationString.TheSceneIsDelaying));
+                return;
+            }
+            //1鎴愬姛 0澶辫触
+            //鍚庨潰琛ヤ笂鐩稿叧鎻愮ず
+            // Error鍙傛暟鍚箟
+            //<para>1锛氱綉鍏虫棤娉曡В鏋愬懡浠ゆ暟鎹��</para>
+            //<para>2锛氬崗璋冨櫒姝e湪鍗囩骇鎴栧浠�/鎭㈠鏁版嵁
+            //<para>3锛氭搷浣滆澶�/缁�/鍦烘櫙涓嶅瓨鍦�</para>
+            //<para>4锛氬叾浠栭敊璇�</para>
+            //<para>5锛氭暟鎹紶杈撻敊璇紙鍦ㄦ煇娆″鎴风鍚戠綉鍏冲彂閫佹暟鎹殑杩囩▼涓紝缃戝叧鍦ㄥ悎鐞嗘椂闂磋寖鍥村唴鎺ユ敹瀹㈡埛绔暟鎹笉瀹屾暣瀵艰嚧璇ラ敊璇彂鐢熴�傚瀹㈡埛绔悜缃戝叧涓�娆″彂閫�100涓瓧鑺傜殑鏁版嵁锛屼絾缃戝叧绛夊緟鎺ユ敹浜嗕竴绉掑彧鎺ユ敹浜�80涓瓧鑺傘�傚彂鐢熻閿欒锛岀綉鍏冲皢涓诲姩鍏抽棴瀹㈡埛绔繛鎺ワ級</para>
+            var sceneOpenAllData = await ZigBee.Device.Scene.ControlSceneAsync(scene.Id, scene.SceneDelayTime);
+
+            if (sceneOpenAllData == null || sceneOpenAllData.sceneOpenData == null)
+            {
+                return;
+            }
+            if (sceneOpenAllData.sceneOpenData.Result == 0)
+            {
+                if (sceneOpenAllData.errorResponData == null)
+                {
+                    return;
+                }
+                CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.ControlSceneFail);
+            }
+
+            scene.RemainTime = scene.SceneDelayTime;
+            scene.SceneDelayTime = 0;
+            new System.Threading.Thread(() =>
+            {
+                while (scene.RemainTime > 0)
+                {
+                    System.Threading.Thread.Sleep(1000);
+                    Application.RunOnMainThread(() =>
+                    {
+                        SetTimeText(CommonFormResouce.GetTimeString(scene.RemainTime));
+                    });
+                    scene.RemainTime -= 1;
+                }
+                Application.RunOnMainThread(() =>
+                {
+                    SetTimeImage();
+                });
+            })
+            { IsBackground = true }.Start();
+        }
+
+        /// <summary>
+        /// 鏀惰棌
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="mouseEventArgs"></param>
+        private void  CollectionEvent(object sender,MouseEventArgs mouseEventArgs)
+        {
+            (sender as Button).IsSelected = !(sender as Button).IsSelected;
+            if ((sender as Button).IsSelected)
+            {
+                Shared.Common.Room.CurrentRoom.GetLoveRoom().AddScene(scene);
+            }
+            else
+            {
+                Shared.Common.Room.CurrentRoom.GetLoveRoom().RemoveScene(scene);
+            }
+            scene.Save();
+        }
+
+        /// <summary>
+        /// setTimeEvent
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="mouseEventArgs"></param>
+        private void SetTimeEvents(object sender, MouseEventArgs mouseEventArgs)
+        {
+            if (scene.RemainTime > 0)
+            {
+                CommonFormResouce.ShowTip(Language.StringByID(R.MyInternationalizationString.TheSceneIsDelaying));
+                return;
+            }
+            var timeSelect = new SelectTime();
+            CommonPage.Instance.AddChidren(timeSelect);
+            timeSelect.TempTime = scene.DelayTime;
+            timeSelect.Init();
+            timeSelect.TimeAction = (t) =>
+            {
+                scene.SceneDelayTime = t;
+                SetIimeByDelayTime(t);
+            };
+        }
+
     }
 }
diff --git a/ZigbeeApp/Shared/Phone/Device/Curtain/RollerShadeControl.cs b/ZigbeeApp/Shared/Phone/Device/Curtain/RollerShadeControl.cs
index 442628a..efbd1ec 100755
--- a/ZigbeeApp/Shared/Phone/Device/Curtain/RollerShadeControl.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Curtain/RollerShadeControl.cs
@@ -74,6 +74,11 @@
         /// </summary>
         private CurtainRollSeekBar curtainRollSeekBar = new CurtainRollSeekBar { };
 
+        /// <summary>
+        /// IsDrawerLockMode
+        /// </summary>
+        public bool IsDrawerLockMode;
+
         #endregion
 
         #region 鈼� 鎺ュ彛___________________________
@@ -232,6 +237,10 @@
             //action();
             //action = null;
             RemoveUpdateControlDeviceStatuAction();
+            if (IsDrawerLockMode)
+            {
+                CommonPage.Instance.IsDrawerLockMode = false;
+            }
             base.RemoveFromParent();
         }
 
diff --git a/ZigbeeApp/Shared/Phone/Device/Light/AirSwitchControl.cs b/ZigbeeApp/Shared/Phone/Device/Light/AirSwitchControl.cs
index a9a1676..b1115fc 100755
--- a/ZigbeeApp/Shared/Phone/Device/Light/AirSwitchControl.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Light/AirSwitchControl.cs
@@ -62,6 +62,11 @@
 
         private Button StatuBtn;
 
+        /// <summary>
+        /// IsDrawerLockMode
+        /// </summary>
+        public bool IsDrawerLockMode;
+
         #endregion
 
         #region 鈼� 鎺ュ彛__________________________
@@ -160,6 +165,10 @@
             //action();
             //action = null;
             RemoveUpdateControlDeviceStatuAction();
+            if (IsDrawerLockMode)
+            {
+                CommonPage.Instance.IsDrawerLockMode = false;
+            }
             base.RemoveFromParent();
         }
 
@@ -462,7 +471,6 @@
         /// <param name="e">E.</param>
         private void Collection(object sender, MouseEventArgs e)
         {
-            //collection
             if ((sender as Button).IsSelected)
             {
                 Shared.Common.Room.CurrentRoom.GetLoveRoom().DeleteDevice(device.FileName);
diff --git a/ZigbeeApp/Shared/Phone/Device/Light/DimmableLightControl.cs b/ZigbeeApp/Shared/Phone/Device/Light/DimmableLightControl.cs
index 5d57d60..4d99ecb 100755
--- a/ZigbeeApp/Shared/Phone/Device/Light/DimmableLightControl.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Light/DimmableLightControl.cs
@@ -61,6 +61,11 @@
         /// MaxLevel
         /// </summary>
         private const int MaxLevel = 254;
+
+        /// <summary>
+        /// IsDrawerLockMode
+        /// </summary>
+        public bool IsDrawerLockMode;
         #endregion
 
         #region 鈼� 鎺ュ彛__________________________
@@ -193,6 +198,10 @@
             UserView.HomePage.Instance.ScrollEnabled = true;
             //action();
             //action = null;
+            if (IsDrawerLockMode)
+            {
+                CommonPage.Instance.IsDrawerLockMode = false;
+            }
             base.RemoveFromParent();
         }
 
diff --git a/ZigbeeApp/Shared/Phone/Device/Light/LightControl.cs b/ZigbeeApp/Shared/Phone/Device/Light/LightControl.cs
index 4c19d06..790e4e2 100755
--- a/ZigbeeApp/Shared/Phone/Device/Light/LightControl.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Light/LightControl.cs
@@ -62,6 +62,10 @@
 
         private Button StatuBtn;
 
+        /// <summary>
+        /// IsDrawerLockMode
+        /// </summary>
+        public bool IsDrawerLockMode;
         #endregion
 
         #region 鈼� 鎺ュ彛__________________________
@@ -182,6 +186,10 @@
             ZbGateway.StatusList.Remove(this);
             //action();
             //action = null;
+            if (IsDrawerLockMode)
+            {
+                CommonPage.Instance.IsDrawerLockMode = false;
+            }
             RemoveUpdateControlDeviceStatuAction();
             base.RemoveFromParent();
         }
diff --git a/ZigbeeApp/Shared/Phone/Device/Light/LightControlForm.cs b/ZigbeeApp/Shared/Phone/Device/Light/LightControlForm.cs
deleted file mode 100755
index 40b9f75..0000000
--- a/ZigbeeApp/Shared/Phone/Device/Light/LightControlForm.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-锘縰sing System;
-using Shared.Common;
-namespace Shared.Phone.Device.Light
-{
-    public class LightControlForm : FrameLayout
-    {
-        //寮�鍏崇伅鎺у埗鐣岄潰
-        #region 鍙橀噺
-        public FrameLayout ItemView = null;
-        public FrameLayout LightView = null;
-        public Button CollectionBtn = null;
-        public Button LightIMG = null;
-        public Button LightName = null;
-        public Button SwitchBtn = null;
-        public Button RoomBtn = null;
-        public Button RoomName = null;
-        public Button MoreBtn = null;
-        #endregion
-        public void Show()
-        {
-
-        }
-    }
-}
diff --git a/ZigbeeApp/Shared/Phone/Device/Light/OnOffControl.cs b/ZigbeeApp/Shared/Phone/Device/Light/OnOffControl.cs
index 0049e42..ddadda0 100755
--- a/ZigbeeApp/Shared/Phone/Device/Light/OnOffControl.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Light/OnOffControl.cs
@@ -70,6 +70,10 @@
         /// </summary>
         private Button OffBtn;
 
+        /// <summary>
+        /// IsDrawerLockMode
+        /// </summary>
+        public bool IsDrawerLockMode;
         #endregion
 
         #region 鈼� 鎺ュ彛__________________________
@@ -191,6 +195,10 @@
             //action();
             //action = null;
             RemoveUpdateControlDeviceStatuAction();
+            if (IsDrawerLockMode)
+            {
+                CommonPage.Instance.IsDrawerLockMode = false;
+            }
             base.RemoveFromParent();
         }
 
diff --git a/ZigbeeApp/Shared/Phone/Device/Light/PlugControl.cs b/ZigbeeApp/Shared/Phone/Device/Light/PlugControl.cs
index 9cb132f..233725a 100755
--- a/ZigbeeApp/Shared/Phone/Device/Light/PlugControl.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Light/PlugControl.cs
@@ -63,6 +63,10 @@
 
         private Button StatuBtn;
 
+        /// <summary>
+        /// IsDrawerLockMode
+        /// </summary>
+        public bool IsDrawerLockMode;
         #endregion
 
         #region 鈼� 鎺ュ彛__________________________
@@ -184,6 +188,10 @@
             //action();
             //action = null;
             RemoveUpdateControlDeviceStatuAction();
+            if (IsDrawerLockMode)
+            {
+                CommonPage.Instance.IsDrawerLockMode = false;
+            }
             base.RemoveFromParent();
         }
 
diff --git a/ZigbeeApp/Shared/Phone/Device/Logic/AddLogicPage.cs b/ZigbeeApp/Shared/Phone/Device/Logic/AddLogicPage.cs
index 48ba5d5..8f89c08 100755
--- a/ZigbeeApp/Shared/Phone/Device/Logic/AddLogicPage.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Logic/AddLogicPage.cs
@@ -383,23 +383,17 @@
                 flMain.RemoveFromParent();
             };
 
-            var securityfra1 = new FrameLayout
-            {
-                Width = Application.GetRealWidth(1080),
-                Height = Application.GetRealHeight(100),
-                Y = Application.GetRealHeight(1920 - 100),
-                BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
-            };
-            flMain.AddChidren(securityfra1);
+          
             var securityfra = new FrameLayout
             {
                 Width = Application.GetRealWidth(1080),
                 Height = Application.GetRealHeight(690),
                 Y = Application.GetRealHeight(1920 - 690),
                 BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
-                Radius = (uint)Application.GetRealHeight(60),
+                //Radius = (uint)Application.GetRealHeight(60),
             };
             flMain.AddChidren(securityfra);
+            securityfra.SetCornerWithSameRadius(20, HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
             #region  -------鍙栨秷   瀹屾垚
             var timetype = new RowLayout
             {
@@ -726,24 +720,17 @@
                 flMain.RemoveFromParent();
             };
 
-            var Locationfra1 = new FrameLayout
-            {
-                Width = Application.GetRealWidth(1080),
-                Height = Application.GetRealHeight(100),
-                Y = Application.GetRealHeight(1920 - 100),
-                BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
-            };
-            flMain.AddChidren(Locationfra1);
+
             var Locationfra = new FrameLayout
             {
                 Width = Application.GetRealWidth(1080),
                 Height = Application.GetRealHeight(530),
                 Y = Application.GetRealHeight(1920 - 530),
                 BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
-                Radius = (uint)Application.GetRealHeight(60),
+                //Radius = (uint)Application.GetRealHeight(60),
             };
             flMain.AddChidren(Locationfra);
-
+            Locationfra.SetCornerWithSameRadius(20, HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
 
             #region  -------鍙栨秷   瀹屾垚
             var typeRow = new RowLayout
@@ -1013,14 +1000,7 @@
                 flMain.RemoveFromParent();
             };
 
-            var timetypeframelayout1 = new FrameLayout
-            {
-                Width = Application.GetRealWidth(1080),
-                Height = Application.GetRealHeight(100),
-                Y = Application.GetRealHeight(1920 - 100),
-                BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
-            };
-            flMain.AddChidren(timetypeframelayout1);
+           
 
             var timetypeframelayout = new FrameLayout
             {
@@ -1028,9 +1008,10 @@
                 Height = Application.GetRealHeight(530),
                 Y = Application.GetRealHeight(1920 - 530),
                 BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
-                Radius = (uint)Application.GetRealHeight(60),
+               // Radius = (uint)Application.GetRealHeight(60),
             };
             flMain.AddChidren(timetypeframelayout);
+            timetypeframelayout.SetCornerWithSameRadius(20,HDLUtils.RectCornerTopLeft|HDLUtils.RectCornerTopRight);
 
             #region  -------鍙栨秷   瀹屾垚
             var timetype = new RowLayout
diff --git a/ZigbeeApp/Shared/Phone/Device/Logic/DelayTime.cs b/ZigbeeApp/Shared/Phone/Device/Logic/DelayTime.cs
index b198905..4144117 100755
--- a/ZigbeeApp/Shared/Phone/Device/Logic/DelayTime.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Logic/DelayTime.cs
@@ -129,8 +129,8 @@
                 BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor,
             };
             middle.AddChidren(PickerViewfra);
-
-
+            PickerViewfra.SetCornerWithSameRadius(20, HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
+            
 
             var mUIPickerView = new UIPickerView
             {
diff --git a/ZigbeeApp/Shared/Phone/Device/Logic/DeviceStateCondition.cs b/ZigbeeApp/Shared/Phone/Device/Logic/DeviceStateCondition.cs
index 62e6cc9..092dc54 100755
--- a/ZigbeeApp/Shared/Phone/Device/Logic/DeviceStateCondition.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Logic/DeviceStateCondition.cs
@@ -23,7 +23,7 @@
         FrameLayout clickframeLayout = new FrameLayout();
         Button clickbutton = new Button();
         Button clicktextcolcrbutton = new Button();
-        HorizontalScrolViewLayout devicetypehorizontalScrol1;
+       
         public void Show()
         {
 
@@ -122,15 +122,6 @@
             };
             this.AddChidren(roomhorizontalScrol);
 
-            devicetypehorizontalScrol1 = new HorizontalScrolViewLayout()
-            {
-                Width = Application.GetRealWidth(1080 - 58 - 200),
-                Height = Application.GetRealHeight(280),
-                Y = roomhorizontalScrol.Bottom,
-                BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
-                X = Application.GetRealWidth(58 + 200),
-            };
-            this.AddChidren(devicetypehorizontalScrol1);
             ///璁惧绫诲瀷婊戝姩鎺т欢
             var devicetypehorizontalScrol = new HorizontalScrolViewLayout()
             {
@@ -139,19 +130,20 @@
                 Y = roomhorizontalScrol.Bottom,
                 BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
                 X = Application.GetRealWidth(58),
-                Radius = (uint)Application.GetRealHeight(50),
+               // Radius = (uint)Application.GetRealHeight(50),
 
             };
             this.AddChidren(devicetypehorizontalScrol);
+            devicetypehorizontalScrol.SetCornerWithSameRadius(20,HDLUtils.RectCornerBottomLeft);
 
             middle = new VerticalScrolViewLayout();
             middle.Y = devicetypehorizontalScrol.Bottom + Application.GetRealHeight(40);
             middle.Height = Application.GetRealHeight(1920 - 40) - devicetypehorizontalScrol.Bottom;
             middle.BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor;
             middle.X = Application.GetRealWidth(58);
-            middle.Radius = (uint)Application.GetRealHeight(50);
+            //middle.Radius = (uint)Application.GetRealHeight(50);
             this.AddChidren(middle);
-
+            middle.SetCornerWithSameRadius(20, HDLUtils.RectCornerTopLeft);
             ///鐩墠鏀寔鐨勮澶�
             var deviceTypeList = new List<DeviceType> {
                 DeviceType.IASZone,
@@ -352,13 +344,11 @@
                     if (list.Count == 0)
                     {
                         devicetypehorizontalScrol.Height = 0;
-                        devicetypehorizontalScrol1.Height = 0;
                         middle.Height = 0;
                     }
                     else
                     {
                         devicetypehorizontalScrol.Height = Application.GetRealHeight(280);
-                        devicetypehorizontalScrol1.Height = Application.GetRealHeight(280);
                         middle.Height = Application.GetRealHeight(1920 - 40) - devicetypehorizontalScrol.Bottom;
                     }
 
@@ -396,13 +386,11 @@
                     if (list.Count == 0)
                     {
                         devicetypehorizontalScrol.Height = 0;
-                        devicetypehorizontalScrol1.Height = 0;
                         middle.Height = 0;
                     }
                     else
                     {
                         devicetypehorizontalScrol.Height = Application.GetRealHeight(280);
-                        devicetypehorizontalScrol1.Height = Application.GetRealHeight(280);
                         middle.Height = Application.GetRealHeight(1920 - 40) - devicetypehorizontalScrol.Bottom;
                     }
 
@@ -606,7 +594,7 @@
                     Height = Application.GetRealHeight(112),
                     X = Application.GetRealWidth(58),
                     Y = Application.GetRealHeight(30 + 9),
-                    Radius = (uint)Application.GetRealHeight(56),
+                   // Radius = (uint)Application.GetRealHeight(56),
                     BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor,
                 };
                 deviceFramelayout.AddChidren(bjFramelayout);
@@ -735,15 +723,6 @@
                 flMain.RemoveFromParent();
             };
 
-            var devicefra1 = new FrameLayout
-            {
-                Width = Application.GetRealWidth(1080),
-                Height = Application.GetRealHeight(100),
-                Y = Application.GetRealHeight(1920 - 100),
-                BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
-            };
-            flMain.AddChidren(devicefra1);
-
             var devicefra = new FrameLayout
             {
 
@@ -751,9 +730,10 @@
                 Height = Application.GetRealHeight(530),
                 Y = Application.GetRealHeight(1920 - 530),
                 BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
-                Radius = (uint)Application.GetRealHeight(60),
+               // Radius = (uint)Application.GetRealHeight(60),
             };
             flMain.AddChidren(devicefra);
+            devicefra.SetCornerWithSameRadius(20, HDLUtils.RectCornerTopLeft|HDLUtils.RectCornerTopRight);
 
             #region  -------鍙栨秷   瀹屾垚
             var timetype = new RowLayout
diff --git a/ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/AddCondition.cs b/ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/AddCondition.cs
index 8d531a1..e3d24b5 100755
--- a/ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/AddCondition.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/AddCondition.cs
@@ -178,14 +178,7 @@
                 flMain.RemoveFromParent();
             };
 
-            var lockcolorfra = new FrameLayout
-            {
-                Width = Application.GetRealWidth(1080),
-                Height = Application.GetRealHeight(100),
-                Y = Application.GetRealHeight(1920 - 100),
-                BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
-            };
-            flMain.AddChidren(lockcolorfra);
+  
 
             var lockcolorfra1 = new FrameLayout
             {
@@ -197,6 +190,7 @@
                 Radius = (uint)Application.GetRealHeight(60),
             };
             flMain.AddChidren(lockcolorfra1);
+            lockcolorfra1.SetCornerWithSameRadius(20, HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
 
             #region  -------鍙栨秷   瀹屾垚
             var lockRow = new RowLayout
diff --git a/ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/LockAddDevice.cs b/ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/LockAddDevice.cs
index 6e377ee..52c85fb 100755
--- a/ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/LockAddDevice.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/LockAddDevice.cs
@@ -19,7 +19,6 @@
         Button roomTextButton = new Button();
         Button devicetypeButton = new Button();
         VerticalScrolViewLayout middle;
-        HorizontalScrolViewLayout devicetypehorizontalScrol1;
         FrameLayout clickframeLayout = new FrameLayout();
         Button clickbutton = new Button();
         Button clicktextcolcrbutton = new Button();
@@ -122,15 +121,7 @@
             this.AddChidren(roomhorizontalScrol);
 
 
-             devicetypehorizontalScrol1 = new HorizontalScrolViewLayout()
-            {
-                Width = Application.GetRealWidth(1080 - 58 - 200),
-                Height = Application.GetRealHeight(280),
-                Y = roomhorizontalScrol.Bottom,
-                BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
-                X = Application.GetRealWidth(58 + 200),
-            };
-            this.AddChidren(devicetypehorizontalScrol1);
+       
             ///璁惧绫诲瀷婊戝姩鎺т欢
             var devicetypehorizontalScrol = new HorizontalScrolViewLayout()
             {
@@ -139,18 +130,20 @@
                 Y = roomhorizontalScrol.Bottom,
                 BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
                 X = Application.GetRealWidth(58),
-                Radius = (uint)Application.GetRealHeight(50),
+               // Radius = (uint)Application.GetRealHeight(50),
 
             };
             this.AddChidren(devicetypehorizontalScrol);
+            devicetypehorizontalScrol.SetCornerWithSameRadius(20,HDLUtils.RectCornerBottomLeft);
 
             middle = new VerticalScrolViewLayout();
             middle.Y = devicetypehorizontalScrol.Bottom + Application.GetRealHeight(40);
             middle.Height = Application.GetRealHeight(1920 - 40) - devicetypehorizontalScrol.Bottom;
             middle.BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor;
             middle.X = Application.GetRealWidth(58);
-            middle.Radius = (uint)Application.GetRealHeight(50);
+            //middle.Radius = (uint)Application.GetRealHeight(50);
             this.AddChidren(middle);
+            middle.SetCornerWithSameRadius(20, HDLUtils.RectCornerTopLeft);
 
             ///鐩墠鏀寔鐨勮澶�
             List<DeviceType> deviceTypeList = new List<DeviceType> {
@@ -353,13 +346,13 @@
                     if (list.Count == 0)
                     {
                         devicetypehorizontalScrol.Height = 0;
-                        devicetypehorizontalScrol1.Height = 0;
+                        
                         middle.Height = 0;
                     }
                     else
                     {
                         devicetypehorizontalScrol.Height = Application.GetRealHeight(280);
-                        devicetypehorizontalScrol1.Height = Application.GetRealHeight(280);
+                       
                         middle.Height = Application.GetRealHeight(1920 - 40) - devicetypehorizontalScrol.Bottom;
                     }
                     AllDeviceTypeView(list, devicetypehorizontalScrol);
@@ -392,13 +385,13 @@
                     if (list.Count == 0)
                     {
                         devicetypehorizontalScrol.Height = 0;
-                        devicetypehorizontalScrol1.Height = 0;
+                       
                         middle.Height = 0;
                     }
                     else
                     {
                         devicetypehorizontalScrol.Height = Application.GetRealHeight(280);
-                        devicetypehorizontalScrol1.Height = Application.GetRealHeight(280);
+                       
                         middle.Height = Application.GetRealHeight(1920 - 40) - devicetypehorizontalScrol.Bottom;
                     }
                     AllDeviceTypeView(list, devicetypehorizontalScrol);
@@ -690,14 +683,7 @@
             {
                 flMain.RemoveFromParent();
             };
-            var devicefra1 = new FrameLayout
-            {
-                Width = Application.GetRealWidth(1080),
-                Height = Application.GetRealHeight(100),
-                Y = Application.GetRealHeight(1920 - 100),
-                BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
-            };
-            flMain.AddChidren(devicefra1);
+        
 
             var devicefra = new FrameLayout
             {
@@ -709,7 +695,7 @@
                 Radius = (uint)Application.GetRealHeight(60),
             };
             flMain.AddChidren(devicefra);
-
+            devicefra.SetCornerWithSameRadius(20, HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
             #region  -------鍙栨秷   瀹屾垚
             var timetype = new RowLayout
             {
@@ -1944,6 +1930,7 @@
                                         openBtnSelected.Visible = false;
                                         closeBtnSelected.Visible = true;
                                         pausePickerViewfra.Height = Application.GetRealHeight(600);
+                                        break;
                                     }
 
                                 }
diff --git a/ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/LockLogicCommunalPage.cs b/ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/LockLogicCommunalPage.cs
index 52f8b4a..e0a0496 100755
--- a/ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/LockLogicCommunalPage.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/LockLogicCommunalPage.cs
@@ -767,6 +767,7 @@
                                                         // devicestatus.Text = Language.StringByID(MyInternationalizationString.close);
 
                                                         ifclose = false;
+                                                        break;
                                                     }
                                                     else if (status["Data1"].ToString() == "1")
                                                     {
diff --git a/ZigbeeApp/Shared/Phone/Device/Logic/LogicCommunalPage.cs b/ZigbeeApp/Shared/Phone/Device/Logic/LogicCommunalPage.cs
index eb85316..419b95e 100755
--- a/ZigbeeApp/Shared/Phone/Device/Logic/LogicCommunalPage.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Logic/LogicCommunalPage.cs
@@ -83,7 +83,7 @@
 
             #endregion
 
-
+            
 
             var middle = new VerticalScrolViewLayout
             {
@@ -1156,7 +1156,7 @@
                                 {
                                     Y = Application.GetRealHeight(20),
                                     Height = Application.GetRealHeight(50),
-                                    Width = Application.GetRealWidth(450),
+                                    Width = Application.GetRealWidth(400),
                                     TextAlignment = TextAlignment.CenterLeft,
                                     Text = deviceinof.DeviceEpointName,
                                     TextColor = ZigbeeColor.Current.LogicTextBlackColor,
@@ -1168,7 +1168,7 @@
                                 var btnregionname = new Button
                                 {
                                     Y = btndevicename.Bottom + Application.GetRealHeight(10),
-                                    Width = Application.GetRealWidth(450),
+                                    Width = Application.GetRealWidth(400),
                                     TextAlignment = TextAlignment.CenterLeft,
                                     Height = Application.GetRealHeight(50),
                                     Text = "",//Language.StringByID(MyInternationalizationString.customroom),
@@ -1180,11 +1180,11 @@
                                 ///鏄剧ず璁惧鏉′欢鐘舵�佹帶浠�
                                 var devicestatus = new Button
                                 {
-                                    Width = Application.GetRealWidth(350),
+                                    Width = Application.GetRealWidth(400),
                                     Height = Application.GetRealHeight(130),
                                     Gravity = Gravity.CenterVertical,
                                     TextAlignment = TextAlignment.CenterRight,
-                                    X = Application.GetRealWidth(450),
+                                    X = Application.GetRealWidth(400),
                                     TextColor = ZigbeeColor.Current.LogicBtnCancelColor,
                                     TextSize = 14,
                                 };
@@ -1361,6 +1361,8 @@
                                                        // devicestatus.Text = Language.StringByID(MyInternationalizationString.close);
 
                                                         ifclose = false;
+                                                        //濡傛灉绌鸿皟鐘舵�佹槸鍏筹紱鐩存帴璺冲嚭for寰潖锛�
+                                                        break;
                                                     }
                                                     else if (status["Data1"].ToString() == "1")
                                                     {
@@ -1428,7 +1430,7 @@
                                                     //4---璁剧疆鍔犵儹搴︽暟;5---璁剧疆鍒跺喎銆侀櫎婀垮害鏁�;7---璁剧疆鑷姩搴︽暟
                                                     else if (status["Data1"] == "4" || status["Data1"] == "5" || status["Data1"] == "7")
                                                     {
-                                                        var s = int.Parse(status["Data2"]) /100;
+                                                        var s = int.Parse(status["Data2"]) / 100;
                                                         temperaturetext = s.ToString();
                                                     }
                                                     else if (status["Data1"] == "20")
@@ -2246,14 +2248,7 @@
                 flMain.RemoveFromParent();
             };
 
-            var timetypeframelayout1 = new FrameLayout
-            {
-                Width = Application.GetRealWidth(1080),
-                Height = Application.GetRealHeight(100),
-                Y = Application.GetRealHeight(1920 - 100),
-                BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
-            };
-            flMain.AddChidren(timetypeframelayout1);
+
             var framelayout = new FrameLayout
             {
                 Width = Application.GetRealWidth(1080),
@@ -2263,6 +2258,7 @@
                 Radius = (uint)Application.GetRealHeight(60),
             };
             flMain.AddChidren(framelayout);
+            framelayout.SetCornerWithSameRadius(20,HDLUtils.RectCornerTopLeft|HDLUtils.RectCornerTopRight);
 
             #region  -------鍙栨秷   瀹屾垚
             var timetype = new RowLayout
diff --git a/ZigbeeApp/Shared/Phone/Device/Logic/LogicDevicePage.cs b/ZigbeeApp/Shared/Phone/Device/Logic/LogicDevicePage.cs
index e7062c3..b23a780 100755
--- a/ZigbeeApp/Shared/Phone/Device/Logic/LogicDevicePage.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Logic/LogicDevicePage.cs
@@ -20,7 +20,6 @@
         Button roomTextButton = new Button();
         Button devicetypeButton = new Button();
         VerticalScrolViewLayout middle;
-        HorizontalScrolViewLayout devicetypehorizontalScrol1;
         FrameLayout clickframeLayout = new FrameLayout();
         Button clickbutton = new Button();
         Button clicktextcolcrbutton = new Button();
@@ -122,16 +121,6 @@
             };
             this.AddChidren(roomhorizontalScrol);
 
-
-             devicetypehorizontalScrol1 = new HorizontalScrolViewLayout()
-            {
-                Width = Application.GetRealWidth(1080 - 58-200),
-                Height = Application.GetRealHeight(280),
-                Y = roomhorizontalScrol.Bottom,
-                BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
-                X = Application.GetRealWidth(58+200),
-            };
-            this.AddChidren(devicetypehorizontalScrol1);
             ///璁惧绫诲瀷婊戝姩鎺т欢
             var devicetypehorizontalScrol = new HorizontalScrolViewLayout()
             {
@@ -140,18 +129,20 @@
                 Y = roomhorizontalScrol.Bottom,
                 BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
                 X = Application.GetRealWidth(58),
-                Radius = (uint)Application.GetRealHeight(50),
+               // Radius = (uint)Application.GetRealHeight(50),
 
             };
             this.AddChidren(devicetypehorizontalScrol);
+            devicetypehorizontalScrol.SetCornerWithSameRadius(20, HDLUtils.RectCornerBottomLeft);
 
             middle = new VerticalScrolViewLayout();
             middle.Y = devicetypehorizontalScrol.Bottom + Application.GetRealHeight(40);
             middle.Height = Application.GetRealHeight(1920 - 40) - devicetypehorizontalScrol.Bottom;
             middle.BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor;
             middle.X = Application.GetRealWidth(58);
-            middle.Radius = (uint)Application.GetRealHeight(50);
+            //middle.Radius = (uint)Application.GetRealHeight(50);
             this.AddChidren(middle);
+            middle.SetCornerWithSameRadius(20, HDLUtils.RectCornerTopLeft);
 
             ///鐩墠鏀寔鐨勮澶�
             List<DeviceType> deviceTypeList = new List<DeviceType> {
@@ -353,14 +344,12 @@
                     }
                     if (list.Count == 0)
                     {
-                        devicetypehorizontalScrol.Height = 0;
-                        devicetypehorizontalScrol1.Height = 0;
+                        devicetypehorizontalScrol.Height = 0; 
                         middle.Height = 0;
                     }
                     else
                     {
                         devicetypehorizontalScrol.Height = Application.GetRealHeight(280);
-                        devicetypehorizontalScrol1.Height = Application.GetRealHeight(280);
                         middle.Height = Application.GetRealHeight(1920 - 40) - devicetypehorizontalScrol.Bottom;
                     }
                     AllDeviceTypeView(list, devicetypehorizontalScrol);
@@ -393,13 +382,11 @@
                     if (list.Count == 0)
                     {
                         devicetypehorizontalScrol.Height = 0;
-                        devicetypehorizontalScrol1.Height = 0;
                         middle.Height = 0;
                     }
                     else
                     {
                         devicetypehorizontalScrol.Height = Application.GetRealHeight(280);
-                        devicetypehorizontalScrol1.Height = Application.GetRealHeight(280);
                         middle.Height = Application.GetRealHeight(1920 - 40) - devicetypehorizontalScrol.Bottom;
                     }
                     AllDeviceTypeView(list, devicetypehorizontalScrol);
@@ -693,14 +680,6 @@
             {
                 flMain.RemoveFromParent();
             };
-            var devicefra1 = new FrameLayout
-            {
-                Width = Application.GetRealWidth(1080),
-                Height = Application.GetRealHeight(100),
-                Y = Application.GetRealHeight(1920 - 100),
-                BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
-            };
-            flMain.AddChidren(devicefra1);
 
             var devicefra = new FrameLayout
             {
@@ -709,9 +688,10 @@
                 Height = Application.GetRealHeight(530 + 160),
                 Y = Application.GetRealHeight(1920 - 530 - 160),
                 BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
-                Radius = (uint)Application.GetRealHeight(60),
+                //Radius = (uint)Application.GetRealHeight(60),
             };
             flMain.AddChidren(devicefra);
+            devicefra.SetCornerWithSameRadius(20, HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
 
             #region  -------鍙栨秷   瀹屾垚
             var timetype = new RowLayout
@@ -1947,6 +1927,8 @@
                                         openBtnSelected.Visible = false;
                                         closeBtnSelected.Visible = true;
                                         pausePickerViewfra.Height = Application.GetRealHeight(600);
+                                        //濡傛灉绌鸿皟鐘舵�佹槸鍏筹紱鐩存帴璺冲嚭for寰潖锛�
+                                        break;
                                     }
 
                                 }
diff --git a/ZigbeeApp/Shared/Phone/Device/Logic/Send.cs b/ZigbeeApp/Shared/Phone/Device/Logic/Send.cs
index f6f67b8..15ca0f0 100755
--- a/ZigbeeApp/Shared/Phone/Device/Logic/Send.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Logic/Send.cs
@@ -857,8 +857,8 @@
         public static async System.Threading.Tasks.Task<string> ReadUserList(string doorlockMac)
         {
             string s = null;
-            var str = await WebClientAsync(0, CommonPage.RequestHttpsHost+"/App/GetHomePager");//涓嶅悓鍖哄煙鍩熷悕鍓嶇紑涓嶄竴鏍�
-           // var str = await WebClientAsync(0, "https://global.hdlcontrol.com/HangZhouHdlCloudApi/App/GetHomePager");
+            var str = await WebClientAsync(0, CommonPage.RequestHttpsHost + "/App/GetHomePager");//涓嶅悓鍖哄煙鍩熷悕鍓嶇紑涓嶄竴鏍�
+                                                                                                 // var str = await WebClientAsync(0, "https://global.hdlcontrol.com/HangZhouHdlCloudApi/App/GetHomePager");
             var jObject = JObject.Parse(str);
             if (jObject == null || jObject["StateCode"].ToString() != "Success")
             {
@@ -1071,5 +1071,6 @@
         /// </summary>
         public static UserCenter.MemberInfoRes UserMemberInfoRes = null;
         #endregion
+
     }
 }
diff --git a/ZigbeeApp/Shared/Phone/Device/Logic/TemplateDeviceAction.cs b/ZigbeeApp/Shared/Phone/Device/Logic/TemplateDeviceAction.cs
index f951387..2ea8539 100755
--- a/ZigbeeApp/Shared/Phone/Device/Logic/TemplateDeviceAction.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Logic/TemplateDeviceAction.cs
@@ -18,7 +18,6 @@
         Button roomTextButton = new Button();
         Button devicetypeButton = new Button();
         VerticalScrolViewLayout middle;
-        HorizontalScrolViewLayout devicetypehorizontalScrol1;
         FrameLayout clickframeLayout = new FrameLayout();
         Button clickbutton = new Button();
         Button clicktextcolcrbutton = new Button();
@@ -122,15 +121,6 @@
             this.AddChidren(roomhorizontalScrol);
 
 
-             devicetypehorizontalScrol1 = new HorizontalScrolViewLayout()
-            {
-                Width = Application.GetRealWidth(1080 - 58 - 200),
-                Height = Application.GetRealHeight(280),
-                Y = roomhorizontalScrol.Bottom,
-                BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
-                X = Application.GetRealWidth(58 + 200),
-            };
-            this.AddChidren(devicetypehorizontalScrol1);
             ///璁惧绫诲瀷婊戝姩鎺т欢
             var devicetypehorizontalScrol = new HorizontalScrolViewLayout()
             {
@@ -139,18 +129,20 @@
                 Y = roomhorizontalScrol.Bottom,
                 BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
                 X = Application.GetRealWidth(58),
-                Radius = (uint)Application.GetRealHeight(50),
+                //Radius = (uint)Application.GetRealHeight(50),
 
             };
             this.AddChidren(devicetypehorizontalScrol);
+            devicetypehorizontalScrol.SetCornerWithSameRadius(20, HDLUtils.RectCornerBottomLeft);
 
             middle = new VerticalScrolViewLayout();
             middle.Y = devicetypehorizontalScrol.Bottom + Application.GetRealHeight(40);
             middle.Height = Application.GetRealHeight(1920 - 40) - devicetypehorizontalScrol.Bottom;
             middle.BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor;
             middle.X = Application.GetRealWidth(58);
-            middle.Radius = (uint)Application.GetRealHeight(50);
+            //middle.Radius = (uint)Application.GetRealHeight(50);
             this.AddChidren(middle);
+            middle.SetCornerWithSameRadius(20, HDLUtils.RectCornerTopLeft);
 
             ///鐩墠鏀寔鐨勮澶�
             List<DeviceType> deviceTypeList = new List<DeviceType> {
@@ -349,13 +341,13 @@
                     if (list.Count == 0)
                     {
                         devicetypehorizontalScrol.Height = 0;
-                        devicetypehorizontalScrol1.Height = 0;
+                      
                         middle.Height = 0;
                     }
                     else
                     {
                         devicetypehorizontalScrol.Height = Application.GetRealHeight(280);
-                        devicetypehorizontalScrol1.Height = Application.GetRealHeight(280);
+                        
                         middle.Height = Application.GetRealHeight(1920 - 40) - devicetypehorizontalScrol.Bottom;
                     }
                     AllDeviceTypeView(list, devicetypehorizontalScrol);
@@ -388,13 +380,13 @@
                     if (list.Count == 0)
                     {
                         devicetypehorizontalScrol.Height = 0;
-                        devicetypehorizontalScrol1.Height = 0;
+                      
                         middle.Height = 0;
                     }
                     else
                     {
                         devicetypehorizontalScrol.Height = Application.GetRealHeight(280);
-                        devicetypehorizontalScrol1.Height = Application.GetRealHeight(280);
+                      
                         middle.Height = Application.GetRealHeight(1920 - 40) - devicetypehorizontalScrol.Bottom;
                     }
                     AllDeviceTypeView(list, devicetypehorizontalScrol);
@@ -688,14 +680,6 @@
             {
                 flMain.RemoveFromParent();
             };
-            var devicefra1 = new FrameLayout
-            {
-                Width = Application.GetRealWidth(1080),
-                Height = Application.GetRealHeight(100),
-                Y = Application.GetRealHeight(1920 - 100),
-                BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
-            };
-            flMain.AddChidren(devicefra1);
 
             var devicefra = new FrameLayout
             {
@@ -704,9 +688,10 @@
                 Height = Application.GetRealHeight(530 + 160),
                 Y = Application.GetRealHeight(1920 - 530 - 160),
                 BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
-                Radius = (uint)Application.GetRealHeight(60),
+               // Radius = (uint)Application.GetRealHeight(60),
             };
             flMain.AddChidren(devicefra);
+            devicefra.SetCornerWithSameRadius(20, HDLUtils.RectCornerTopLeft|HDLUtils.RectCornerTopRight);
 
             #region  -------鍙栨秷   瀹屾垚
             var timetype = new RowLayout
diff --git a/ZigbeeApp/Shared/Phone/Device/Logic/TemplateDeviceCondition.cs b/ZigbeeApp/Shared/Phone/Device/Logic/TemplateDeviceCondition.cs
index 5ca63f0..1a514ba 100755
--- a/ZigbeeApp/Shared/Phone/Device/Logic/TemplateDeviceCondition.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Logic/TemplateDeviceCondition.cs
@@ -19,7 +19,6 @@
         Button roomTextButton = new Button();
         Button devicetypeButton = new Button();
         VerticalScrolViewLayout middle;
-        HorizontalScrolViewLayout devicetypehorizontalScrol1;
         FrameLayout clickframeLayout = new FrameLayout();
         Button clickbutton = new Button();
         Button clicktextcolcrbutton = new Button();
@@ -121,15 +120,7 @@
             };
             this.AddChidren(roomhorizontalScrol);
 
-             devicetypehorizontalScrol1 = new HorizontalScrolViewLayout()
-            {
-                Width = Application.GetRealWidth(1080 - 58 - 200),
-                Height = Application.GetRealHeight(280),
-                Y = roomhorizontalScrol.Bottom,
-                BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
-                X = Application.GetRealWidth(58 + 200),
-            };
-            this.AddChidren(devicetypehorizontalScrol1);
+           
             ///璁惧绫诲瀷婊戝姩鎺т欢
             var devicetypehorizontalScrol = new HorizontalScrolViewLayout()
             {
@@ -138,18 +129,20 @@
                 Y = roomhorizontalScrol.Bottom,
                 BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
                 X = Application.GetRealWidth(58),
-                Radius = (uint)Application.GetRealHeight(50),
+                //Radius = (uint)Application.GetRealHeight(50),
 
             };
             this.AddChidren(devicetypehorizontalScrol);
+            devicetypehorizontalScrol.SetCornerWithSameRadius(20, HDLUtils.RectCornerBottomLeft);
 
             middle = new VerticalScrolViewLayout();
             middle.Y = devicetypehorizontalScrol.Bottom + Application.GetRealHeight(40);
             middle.Height = Application.GetRealHeight(1920 - 40) - devicetypehorizontalScrol.Bottom;
             middle.BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor;
             middle.X = Application.GetRealWidth(58);
-            middle.Radius = (uint)Application.GetRealHeight(50);
+           // middle.Radius = (uint)Application.GetRealHeight(50);
             this.AddChidren(middle);
+            middle.SetCornerWithSameRadius(20, HDLUtils.RectCornerTopLeft);
 
             ///鐩墠鏀寔鐨勮澶�
             var deviceTypeList = new List<DeviceType> {
@@ -349,13 +342,13 @@
                     if (list.Count == 0)
                     {
                         devicetypehorizontalScrol.Height = 0;
-                        devicetypehorizontalScrol1.Height = 0;
+                   
                         middle.Height = 0;
                     }
                     else
                     {
                         devicetypehorizontalScrol.Height = Application.GetRealHeight(280);
-                        devicetypehorizontalScrol1.Height = Application.GetRealHeight(280);
+                        
                         middle.Height = Application.GetRealHeight(1920 - 40) - devicetypehorizontalScrol.Bottom;
                     }
                     AllDeviceTypeView(list, devicetypehorizontalScrol);
@@ -391,13 +384,13 @@
                     if (list.Count == 0)
                     {
                         devicetypehorizontalScrol.Height = 0;
-                        devicetypehorizontalScrol1.Height = 0;
+                       
                         middle.Height = 0;
                     }
                     else
                     {
                         devicetypehorizontalScrol.Height = Application.GetRealHeight(280);
-                        devicetypehorizontalScrol1.Height = Application.GetRealHeight(280);
+                      
                         middle.Height = Application.GetRealHeight(1920 - 40) - devicetypehorizontalScrol.Bottom;
                     }
                     AllDeviceTypeView(list, devicetypehorizontalScrol);
@@ -722,14 +715,6 @@
 
             };
 
-            var devicefra1 = new FrameLayout
-            {
-                Width = Application.GetRealWidth(1080),
-                Height = Application.GetRealHeight(100),
-                Y = Application.GetRealHeight(1920 - 100),
-                BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
-            };
-            flMain.AddChidren(devicefra1);
 
             var devicefra = new FrameLayout
             {
@@ -741,6 +726,7 @@
                 Radius = (uint)Application.GetRealHeight(60),
             };
             flMain.AddChidren(devicefra);
+            devicefra.SetCornerWithSameRadius(20, HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
 
             #region  -------鍙栨秷   瀹屾垚
             var timetype = new RowLayout
diff --git a/ZigbeeApp/Shared/Phone/Device/Logic/TimePoint.cs b/ZigbeeApp/Shared/Phone/Device/Logic/TimePoint.cs
index d980f19..609c8b7 100755
--- a/ZigbeeApp/Shared/Phone/Device/Logic/TimePoint.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Logic/TimePoint.cs
@@ -600,24 +600,17 @@
                 flMain.RemoveFromParent();
             };
 
-            var fraview1 = new FrameLayout
-            {
-                Width = Application.GetRealWidth(1080),
-                Height = Application.GetRealHeight(100),
-                Y = Application.GetRealHeight(1920 - 100),
-                BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
-            };
-            flMain.AddChidren(fraview1);
-
+           
             var fraview = new FrameLayout
             {
                 Width = Application.GetRealWidth(1080),
                 Height = Application.GetRealHeight(850),
                 Y = Application.GetRealHeight(1920 - 850),
                 BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
-                Radius = (uint)Application.GetRealHeight(60),
+                //Radius = (uint)Application.GetRealHeight(60),
             };
             flMain.AddChidren(fraview);
+            fraview.SetCornerWithSameRadius(20, HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
 
             #region  -------鍙栨秷   瀹屾垚
             var timetype = new RowLayout
diff --git a/ZigbeeApp/Shared/Phone/Device/Room/AddRoomSelectPicByLocal.cs b/ZigbeeApp/Shared/Phone/Device/Room/AddRoomSelectPicByLocal.cs
index 70ab99a..c0d9db5 100755
--- a/ZigbeeApp/Shared/Phone/Device/Room/AddRoomSelectPicByLocal.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Room/AddRoomSelectPicByLocal.cs
@@ -51,8 +51,8 @@
             this.AddChidren(midFl);
 
 
-            int k = 1;
-            for (int j = 0; j < 2; j++)
+            int k = 0;
+            for (int j = 0; j < 3; j++)
             {
                 var itemView = new FrameLayout()
                 {
@@ -70,6 +70,7 @@
                         UnSelectedImagePath = $"RoomIcon/{k}.JPG",
                     };
                     itemView.AddChidren(icon);
+                    icon.SetViewShadow(true);
                     k++;
 
                     EventHandler<MouseEventArgs> selectIcon = (sender, e) =>
diff --git a/ZigbeeApp/Shared/Phone/Device/Room/EditRoom.cs b/ZigbeeApp/Shared/Phone/Device/Room/EditRoom.cs
index 2fc4517..21b0e95 100755
--- a/ZigbeeApp/Shared/Phone/Device/Room/EditRoom.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Room/EditRoom.cs
@@ -75,6 +75,7 @@
             HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice");
             HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice");
 
+            CommonPage.Instance.IsDrawerLockMode = false;
             base.RemoveFromParent();
         }
 
@@ -108,16 +109,6 @@
             };
             AddChidren(bodyFrameLayout);
 
-            var imgFL = new Button
-            {
-                Y = Application.GetRealHeight(60),
-                Width = Application.GetMinRealAverage(916),
-                Height = Application.GetMinRealAverage(487),
-                Gravity = Gravity.CenterHorizontal,
-                UnSelectedImagePath = "Room/Room_Rectangle.png"
-            };
-            bodyFrameLayout.AddChidren(imgFL);
-
             backGround = new Button()
             {
                 Y = Application.GetRealHeight(60),
@@ -128,6 +119,7 @@
                 UnSelectedImagePath = room.BackgroundImage
             };
             bodyFrameLayout.AddChidren(backGround);
+            backGround.SetViewShadow(true);
             backGround.MouseUpEventHandler += backGroundIMGHander;
 
             var infoFL = new FrameLayout
@@ -137,6 +129,8 @@
                 BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
             };
             bodyFrameLayout.AddChidren(infoFL);
+            var rectCornerID = HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight;
+            infoFL.SetCornerWithSameRadius(Application.GetRealHeight(50), rectCornerID);
 
             var infoEdit = new Button
             {
@@ -188,7 +182,6 @@
             var temperatureRow = new DeviceInfoRow(446);
             temperatureRow.Init();
             temperatureRow.SetTipTitle(R.MyInternationalizationString.Temperature);
-            temperatureRow.SetTitle("26.8鈩�");
             temperatureRow.NameText.TextAlignment = TextAlignment.CenterRight;
             infoFL.AddChidren(temperatureRow);
             temperatureRow.ClickBtn.MouseUpEventHandler += (sender, e) =>
@@ -300,7 +293,6 @@
             var humidityRow = new DeviceInfoRow(585);
             humidityRow.Init();
             humidityRow.SetTipTitle(R.MyInternationalizationString.Humidity);
-            humidityRow.SetTitle("66.5%");
             humidityRow.NameText.TextAlignment = TextAlignment.CenterRight;
             infoFL.AddChidren(humidityRow);
             humidityRow.ClickBtn.MouseUpEventHandler += (sender, e) =>
@@ -308,6 +300,7 @@
                 var tem = new RoomHumiditySetting { };
                 HomePage.Instance.AddChidren(tem);
                 HomePage.Instance.PageIndex += 1;
+                tem.tempDevice = Common.LocalDevice.Current.GetDevice(room.HumidityDevice);
                 tem.Show(room);
                 tem.selectDeviceAction = (selectTemp) =>
                 {
@@ -515,6 +508,7 @@
                 localPic.action = (imgPath) =>
                 {
                     IconPathType = 0;
+                    backGround.ImageBytes = null;
                     backGround.UnSelectedImagePath = imgPath;
                 };
             };
diff --git a/ZigbeeApp/Shared/Phone/Device/Room/RoomManagement.cs b/ZigbeeApp/Shared/Phone/Device/Room/RoomManagement.cs
index 2b19869..585f178 100755
--- a/ZigbeeApp/Shared/Phone/Device/Room/RoomManagement.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Room/RoomManagement.cs
@@ -18,13 +18,12 @@
 
         private Button floorBtn;
 
-        private FrameLayout itemView;
+        public FrameLayout itemView;
 
         #endregion
 
 
         public Action action;
-
 
         public override void RemoveFromParent()
         {
@@ -39,7 +38,7 @@
         {
             AddTop();
 
-            AddBodyView();
+            AddBodyView(Config.Instance.Home.CurrentFloorId);
         }
 
         #region Add____________________________________
@@ -55,7 +54,7 @@
             top.SetTopTitle(R.MyInternationalizationString.RoomList);
             top.backButton.MouseUpEventHandler += (sender, e) =>
             {
-                RemoveFromParent();
+                CommonPage.Instance.CloseLeftMenu();
             };
 
             floorBtn = new Button()
@@ -94,15 +93,17 @@
             var floors = new SelectFloor();
             AddChidren(floors);
             floors.Init(599, 161,Direction.Right);
-            floors.FloorAction += (floorName) =>
+            floors.FloorAction += (floorId) =>
             {
-                floorBtn.Text = floorName;
+                floorBtn.Text = Config.Instance.Home.GetFloorNameById(floorId);
+                AddBodyView(floorId);
             };
         }
+
         /// <summary>
         /// AddBodyView
         /// </summary>
-        public void AddBodyView()
+        public void AddBodyView(string floorId)
         {
             bodyFrameLayout = new FrameLayout()
             {
@@ -114,7 +115,7 @@
 
             var roomScrolView = new VerticalScrolViewLayout { };
             bodyFrameLayout.AddChidren(roomScrolView);
-            var roomList = Shared.Common.Room.Lists;
+            var roomList = Common.Room.CurrentRoom.GetRoomsByFloorId(floorId);
             for (int i = 0; i < roomList.Count+1; i++)
             {
                 int xx = 43 + i % 2 * (20 + 487);
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/ClickButtonControls/BottomLeftClickButton.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/ClickButtonControls/BottomLeftClickButton.cs
new file mode 100755
index 0000000..211dcdc
--- /dev/null
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/ClickButtonControls/BottomLeftClickButton.cs
@@ -0,0 +1,133 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Shared.Phone.UserCenter
+{
+    /// <summary>
+    /// 浣嶄簬宸︿笅瑙掔殑鍗曞嚮鎺т欢
+    /// </summary>
+    public class BottomLeftClickButton : FrameLayoutControl
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+#if Android
+        /// <summary>
+        /// 鎸夐挳(娌″垵濮嬪寲涔嬪墠,瀹冧负null)
+        /// </summary>
+        private NormalViewControl btnButton = null;
+        /// <summary>
+        /// 椤堕儴鍦嗚
+        /// </summary>
+        private NormalViewControl btnTopTemp = null;
+        /// <summary>
+        /// 宸︿笅瑙掑渾瑙�
+        /// </summary>
+        private NormalViewControl btnBomTemp = null;
+#endif
+#if iOS
+        /// <summary>
+        /// 鎸夐挳(娌″垵濮嬪寲涔嬪墠,瀹冧负null)
+        /// </summary>
+        private NormalClickButton btnButton = null;
+#endif
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 浣嶄簬宸︿笅瑙掔殑鍗曞嚮鎺т欢
+        /// </summary>
+        /// <param name="i_width">瀹藉害,鐪熷疄鍊�</param>
+        /// <param name="i_height">楂樺害,鐪熷疄鍊�</param>
+        /// <param name="i_radius">鍦嗚搴�(鍙瀹夊崜鏈夋晥)</param>
+        public BottomLeftClickButton(int i_width, int i_height, int i_radius = 8)
+        {
+            this.Height = i_height;
+            this.Width = i_width;
+            this.Gravity = Gravity.BottomLeft;
+
+#if Android
+            this.Radius = 8;
+#endif
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栨帶浠�
+        /// </summary>
+        /// <param name="i_text">鏂囨湰淇℃伅</param>
+        public void InitControl(string i_text)
+        {
+            uint i_backColor = 0xfff5f6fa;
+#if Android
+            this.BackgroundColor = i_backColor;
+            //鎶婁笂鍦嗚瑕嗙洊涓烘柟瑙�
+            this.btnTopTemp = new NormalViewControl(this.Width, Application.GetRealHeight(40), false);
+            btnTopTemp.BackgroundColor = i_backColor;
+            this.AddChidren(btnTopTemp, ChidrenBindMode.BindEventOnly);
+            //鎶婂彸涓嬪渾瑙掕鐩栦负鏂硅
+            this.btnBomTemp = new NormalViewControl(this.Width / 2, Application.GetRealHeight(40), false);
+            btnBomTemp.BackgroundColor = i_backColor;
+            btnBomTemp.Gravity = Gravity.BottomRight;
+            this.AddChidren(btnBomTemp, ChidrenBindMode.BindEventOnly);
+            //鍙栨秷鎸夐挳
+            this.btnButton = new NormalViewControl(this.Width - Application.GetRealWidth(10), Application.GetRealHeight(60), false);
+            btnButton.Gravity = Gravity.Center;
+            btnButton.TextColor = UserCenterColor.Current.TextGrayColor1;
+            btnButton.Text = i_text;
+            btnButton.TextAlignment = TextAlignment.Center;
+            btnButton.BackgroundColor = i_backColor;
+            this.AddChidren(btnButton, ChidrenBindMode.BindEventOnly);
+
+            //閲嶅啓鎺т欢鐐瑰嚮鐘舵��
+            this.SelectStatuEvent += (statu) =>
+            {
+                if (statu == true)
+                {
+                    this.BackgroundColor = UserCenterColor.Current.ButtonClickStatuColor;
+                    btnTopTemp.BackgroundColor = UserCenterColor.Current.ButtonClickStatuColor;
+                    btnBomTemp.BackgroundColor = UserCenterColor.Current.ButtonClickStatuColor;
+                    btnButton.BackgroundColor = UserCenterColor.Current.ButtonClickStatuColor;
+                }
+                else
+                {
+                    this.BackgroundColor = i_backColor;
+                    btnTopTemp.BackgroundColor = i_backColor;
+                    btnBomTemp.BackgroundColor = i_backColor;
+                    btnButton.BackgroundColor = i_backColor;
+                }
+            };
+#endif
+#if iOS
+            //鍙栨秷鎸夐挳
+            this.btnButton = new NormalClickButton(this.Width, this.Height, false);
+            btnButton.Gravity = Gravity.BottomLeft;
+            btnButton.TextColor = UserCenterColor.Current.TextGrayColor1;
+            btnButton.Text = i_text;
+            btnButton.TextAlignment = TextAlignment.Center;
+            btnButton.BackgroundColor = i_backColor;
+            btnButton.oldBackgroundColor = i_backColor;
+            this.AddChidren(btnButton, ChidrenBindMode.BindEventOnly);
+#endif
+        }
+
+        #endregion
+
+        #region 鈻� 涓�鑸柟娉昣__________________________
+
+        /// <summary>
+        /// 璁剧疆鎸夐挳鐨勬枃鏈俊鎭�
+        /// </summary>
+        /// <param name="txtValue"></param>
+        public void SetButtonText(string txtValue)
+        {
+            if (this.btnButton != null)
+            {
+                this.btnButton.Text = txtValue;
+            }
+        }
+
+        #endregion
+    }
+}
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/ClickButtonControls/BottomRightClickButton.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/ClickButtonControls/BottomRightClickButton.cs
new file mode 100755
index 0000000..3dddb62
--- /dev/null
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/ClickButtonControls/BottomRightClickButton.cs
@@ -0,0 +1,131 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Shared.Phone.UserCenter
+{
+    /// <summary>
+    /// 浣嶄簬鍙充笅瑙掔殑鍗曞嚮鎺т欢
+    /// </summary>
+    public class BottomRightClickButton : FrameLayoutControl
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+#if Android
+        /// <summary>
+        /// 鎸夐挳(娌″垵濮嬪寲涔嬪墠,瀹冧负null)
+        /// </summary>
+        private NormalViewControl btnConfirm = null;
+        /// <summary>
+        /// 椤堕儴鍦嗚
+        /// </summary>
+        private NormalViewControl btnTopTemp = null;
+        /// <summary>
+        /// 宸︿笅瑙掑渾瑙�
+        /// </summary>
+        private NormalViewControl btnBomTemp = null;
+#endif
+#if iOS
+        /// <summary>
+        /// 鎸夐挳(娌″垵濮嬪寲涔嬪墠,瀹冧负null)
+        /// </summary>
+        private NormalClickButton btnConfirm = null;
+#endif
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 浣嶄簬鍙充笅瑙掔殑鍗曞嚮鎺т欢
+        /// </summary>
+        /// <param name="i_width">瀹藉害,鐪熷疄鍊�</param>
+        /// <param name="i_height">楂樺害,鐪熷疄鍊�</param>
+        /// <param name="i_radius">鍦嗚搴�(鍙瀹夊崜鏈夋晥)</param>
+        public BottomRightClickButton(int i_width, int i_height, int i_radius = 8)
+        {
+            this.Height = i_height;
+            this.Width = i_width;
+            this.Gravity = Gravity.BottomRight;
+
+#if Android
+            this.Radius = 8;
+#endif
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栨帶浠�
+        /// </summary>
+        /// <param name="i_text">鏂囨湰淇℃伅</param>
+        public void InitControl(string i_text)
+        {
+#if Android
+            this.BackgroundColor = UserCenterColor.Current.ClickButtonDefultColor;
+            //鎶婁笂鍦嗚瑕嗙洊涓烘柟瑙�
+            this.btnTopTemp = new NormalViewControl(this.Width, Application.GetRealHeight(40), false);
+            btnTopTemp.BackgroundColor = UserCenterColor.Current.ClickButtonDefultColor;
+            this.AddChidren(btnTopTemp, ChidrenBindMode.BindEventOnly);
+            //鎶婂乏涓嬪渾瑙掕鐩栦负鏂硅
+            this.btnBomTemp = new NormalViewControl(this.Width / 2, Application.GetRealHeight(40), false);
+            btnBomTemp.BackgroundColor = UserCenterColor.Current.ClickButtonDefultColor;
+            btnBomTemp.Gravity = Gravity.BottomLeft;
+            this.AddChidren(btnBomTemp, ChidrenBindMode.BindEventOnly);
+            //纭鎸夐挳
+            this.btnConfirm = new NormalViewControl(this.Width - Application.GetRealWidth(10), Application.GetRealHeight(60), false);
+            btnConfirm.Gravity = Gravity.Center;
+            btnConfirm.TextColor = UserCenterColor.Current.White;
+            btnConfirm.Text = i_text;
+            btnConfirm.TextAlignment = TextAlignment.Center;
+            this.AddChidren(btnConfirm, ChidrenBindMode.BindEventOnly);
+
+            //閲嶅啓鎺т欢鐐瑰嚮鐘舵��
+            this.SelectStatuEvent += (statu) =>
+            {
+                if (statu == true)
+                {
+                    this.BackgroundColor = UserCenterColor.Current.ButtonClickStatuColor;
+                    btnTopTemp.BackgroundColor = UserCenterColor.Current.ButtonClickStatuColor;
+                    btnBomTemp.BackgroundColor = UserCenterColor.Current.ButtonClickStatuColor;
+                    btnConfirm.BackgroundColor = UserCenterColor.Current.ButtonClickStatuColor;
+                }
+                else
+                {
+                    this.BackgroundColor = UserCenterColor.Current.ClickButtonDefultColor;
+                    btnTopTemp.BackgroundColor = UserCenterColor.Current.ClickButtonDefultColor;
+                    btnBomTemp.BackgroundColor = UserCenterColor.Current.ClickButtonDefultColor;
+                    btnConfirm.BackgroundColor = UserCenterColor.Current.ClickButtonDefultColor;
+                }
+            };
+#endif
+#if iOS
+            //纭鎸夐挳
+            this.btnConfirm = new NormalClickButton(this.Width, this.Height, false);
+            btnConfirm.Gravity = Gravity.BottomRight;
+            btnConfirm.TextColor = UserCenterColor.Current.White;
+            btnConfirm.Text = i_text;
+            btnConfirm.TextAlignment = TextAlignment.Center;
+            btnConfirm.BackgroundColor = UserCenterColor.Current.ClickButtonDefultColor;
+            btnConfirm.oldBackgroundColor = UserCenterColor.Current.ClickButtonDefultColor;
+            this.AddChidren(btnConfirm, ChidrenBindMode.BindEventOnly);
+#endif
+        }
+
+        #endregion
+
+        #region 鈻� 涓�鑸柟娉昣__________________________
+
+        /// <summary>
+        /// 璁剧疆鎸夐挳鐨勬枃鏈俊鎭�
+        /// </summary>
+        /// <param name="txtValue"></param>
+        public void SetButtonText(string txtValue)
+        {
+            if (this.btnConfirm != null)
+            {
+                this.btnConfirm.Text = txtValue;
+            }
+        }
+
+        #endregion
+    }
+}
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/CutPictureControl.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/CutPictureControl.cs
deleted file mode 100755
index db5ff74..0000000
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/CutPictureControl.cs
+++ /dev/null
@@ -1,220 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace Shared.Phone.UserCenter
-{
-    /// <summary>
-    /// 涓�涓兘澶熻繘琛岃鍓浘鐗囩殑鎺т欢
-    /// </summary>
-    public class CutPictureControl : ImageView
-    {
-        #region 鈻� 鍙橀噺澹版槑___________________________
-
-        /// <summary>
-        /// 閫夋嫨鍥剧墖鐨勪簨浠�
-        /// </summary>
-        public Action<string> SelectPictrueEvent = null;
-
-        #endregion
-
-        #region 鈻� 鍒濆鍖朹____________________________
-
-        /// <summary>
-        /// 涓�涓兘澶熻繘琛岃鍓浘鐗囩殑鎺т欢
-        /// </summary>
-        /// <param name="saveFullFileName">淇濆瓨瑁佸壀鍥剧墖鐨勬枃浠跺悕(鍏ㄨ矾寰�)</param>
-        /// <param name="i_Width">瀹藉害</param>
-        /// <param name="i_Height">楂樺害</param>
-        /// <param name="real">鏄惁璁$畻鐪熷疄鍊�</param>
-        public CutPictureControl(string saveFullFileName, int i_Width, int i_Height, bool real = true)
-        {
-            if (real == true)
-            {
-                i_Width = Application.GetMinRealAverage(i_Width);
-                i_Height = Application.GetMinRealAverage(i_Height);
-            }
-            this.Height = i_Height;
-            this.Width = i_Width;
-
-            this.MouseUpEventHandler += (sender, e) =>
-            {
-                //鏄剧ず鑾峰彇鍥剧墖鏉ユ簮鐨勬柟寮�
-                this.ShowGetPictrueWayMenu(saveFullFileName);
-            };
-        }
-
-        #endregion
-
-        #region 鈻� 鏄剧ず鑾峰彇鍥剧墖鏉ユ簮鐨勬柟寮廮____________
-
-        /// <summary>
-        /// 鏄剧ず鑾峰彇鍥剧墖鏉ユ簮鐨勬柟寮�
-        /// </summary>
-        /// <param name="saveFullFileName">淇濆瓨瑁佸壀鍥剧墖鐨勬枃浠跺悕(鍏ㄨ矾寰�)</param>
-        private void ShowGetPictrueWayMenu(string saveFullFileName)
-        {
-            //鑷畾涔夎彍鍗曟帶浠�
-            var form = new PictrueWayMenuControl();
-            form.AddForm();
-            form.SelectPictrueEvent += (selectPic) =>
-            {
-                try
-                {
-                    if (System.IO.File.Exists(saveFullFileName) == true)
-                    {
-                        System.IO.File.Delete(saveFullFileName);
-                    }
-                    //绉诲姩鏂囦欢
-                    System.IO.File.Move(selectPic, saveFullFileName);
-
-                    //鏀瑰彉鍥剧墖
-                    this.ImagePath = saveFullFileName;
-                    //璋冪敤鍥炶皟鍑芥暟
-                    this.SelectPictrueEvent?.Invoke(saveFullFileName);
-                }
-                catch (Exception ex)
-                {
-                    //鍑虹幇鏈煡閿欒
-                    var alert = new ShowMsgControl(ShowMsgType.Error, Language.StringByID(R.MyInternationalizationString.uUnKnownError));
-                    alert.Show();
-                    //Log
-                    HdlLogLogic.Current.WriteLog(ex);
-                }
-            };
-        }
-
-        #endregion
-
-        #region 鈻� 鎺т欢鎽ф瘉___________________________
-
-        /// <summary>
-        /// 鎺т欢鎽ф瘉
-        /// </summary>
-        public override void RemoveFromParent()
-        {
-            this.SelectPictrueEvent = null;
-
-            base.RemoveFromParent();
-        }
-
-        #endregion
-
-        #region 鈻� 鑿滃崟鎺т欢___________________________
-
-        /// <summary>
-        /// 鑿滃崟鎺т欢
-        /// </summary>
-        private class PictrueWayMenuControl : DialogCommonForm
-        {
-            #region 鈻� 鍙橀噺澹版槑___________________________
-
-            /// <summary>
-            /// 閫夋嫨鍥剧墖鐨勪簨浠�
-            /// </summary>
-            public Action<string> SelectPictrueEvent = null;
-
-            #endregion
-
-            #region 鈻� 鍒濆鍖朹____________________________
-
-            /// <summary>
-            /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
-            /// </summary>
-            public void ShowForm()
-            {
-                var frameBack1 = new FrameLayoutControl();
-                frameBack1.UseClickStatu = false;
-                frameBack1.Y = Application.GetRealHeight(1420);
-                frameBack1.Gravity = Gravity.CenterHorizontal;
-                frameBack1.RadiusEx = 12;
-                frameBack1.Width = Application.GetRealWidth(1034);
-                frameBack1.Height = Application.GetRealHeight(300);
-                frameBack1.BackgroundColor = UserCenterColor.Current.White;
-                bodyFrameLayout.AddChidren(frameBack1);
-
-                //鎷嶇収
-                var btnTakePhone = new NormalViewControl(900, 156, true);
-                btnTakePhone.Gravity = Gravity.CenterHorizontal;
-                btnTakePhone.TextAlignment = TextAlignment.Center;
-                btnTakePhone.TextColor = 0xff0075ff;
-                btnTakePhone.TextSize = 17;
-                btnTakePhone.TextID = R.MyInternationalizationString.uTakePictrue;
-                frameBack1.AddChidren(btnTakePhone, ChidrenBindMode.NotBind);
-                btnTakePhone.ButtonClickEvent += (sender, e) =>
-                {
-                    //鍏抽棴鐣岄潰
-                    this.CloseForm();
-                    //閫氳繃鐩告満鎷嶇収瑁佸壀
-                    CropImage.TakePicture((imagePath) =>
-                    {
-                        if (string.IsNullOrEmpty(imagePath) == false)
-                        {
-                            //璋冪敤鍥炶皟鍑芥暟
-                            this.SelectPictrueEvent(imagePath);
-                        }
-                        this.SelectPictrueEvent = null;
-                    }, "HdlPicture");
-                };
-
-                //绾�
-                var btnLine = new NormalViewControl(frameBack1.Width, ControlCommonResourse.BottomLineHeight, false);
-                btnLine.BackgroundColor = UserCenterColor.Current.ButtomLine;
-                btnLine.Y = btnTakePhone.Bottom;
-                frameBack1.AddChidren(btnLine, ChidrenBindMode.NotBind);
-                //浠庣浉鍐屼腑閫夋嫨
-                var btnAlbum = new NormalViewControl(900, 144, true);
-                btnAlbum.Y = btnLine.Bottom;
-                btnAlbum.Gravity = Gravity.CenterHorizontal;
-                btnAlbum.TextAlignment = TextAlignment.Center;
-                btnAlbum.TextColor = 0xff0075ff;
-                btnAlbum.TextSize = 17;
-                btnAlbum.TextID = R.MyInternationalizationString.uGetPictrueFromAlbum;
-                frameBack1.AddChidren(btnAlbum, ChidrenBindMode.NotBind);
-                btnAlbum.ButtonClickEvent += (sender, e) =>
-                {
-                    //鍏抽棴鐣岄潰
-                    this.CloseForm();
-                    //浠庣浉鍐岄�夋嫨鍥剧墖瑁佸壀
-                    CropImage.SelectPicture((imagePath) =>
-                    {
-                        if (string.IsNullOrEmpty(imagePath) == false)
-                        {
-                            //璋冪敤鍥炶皟鍑芥暟
-                            this.SelectPictrueEvent(imagePath);
-                        }
-                        this.SelectPictrueEvent = null;
-                    }, "HdlPicture");
-                };
-
-                var frameBack2 = new FrameLayoutControl();
-                frameBack2.UseClickStatu = false;
-                frameBack2.Y = frameBack1.Bottom + Application.GetRealHeight(23);
-                frameBack2.Gravity = Gravity.CenterHorizontal;
-                frameBack2.RadiusEx = 12;
-                frameBack2.Width = Application.GetRealWidth(1034);
-                frameBack2.Height = Application.GetRealHeight(156);
-                frameBack2.BackgroundColor = UserCenterColor.Current.White;
-                bodyFrameLayout.AddChidren(frameBack2);
-                //鍙栨秷
-                var btnCancel = new NormalViewControl(900, 156, true);
-                btnCancel.Gravity = Gravity.CenterHorizontal;
-                btnCancel.TextAlignment = TextAlignment.Center;
-                btnCancel.TextColor = 0xff0075ff;
-                btnCancel.TextSize = 17;
-                btnCancel.TextID = R.MyInternationalizationString.uCancel;
-                frameBack2.AddChidren(btnCancel, ChidrenBindMode.NotBind);
-                btnCancel.ButtonClickEvent += (sender, e) =>
-                {
-                    this.SelectPictrueEvent = null;
-                    //鍏抽棴鐣岄潰
-                    this.CloseForm();
-                };
-            }
-
-            #endregion
-        }
-
-        #endregion
-    }
-}
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/SafeguardLogControl.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/SafeguardLogControl.cs
index 4e3a521..475f0e6 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/SafeguardLogControl.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/SafeguardLogControl.cs
@@ -325,8 +325,8 @@
             }
             rowFrame.AddChidren(btnMsg);
             //鏃堕棿锛氭椂鍒嗙
-            var btnTime = new NormalViewControl(176, 58, true);
-            btnTime.X = Application.GetRealWidth(772);
+            var btnTime = new NormalViewControl(190, 58, true);
+            btnTime.X = Application.GetRealWidth(758);
             btnTime.TextColor = UserCenterColor.Current.TextGrayColor3;
             btnTime.TextAlignment = TextAlignment.CenterRight;
             btnTime.Text = alarmInfo.Time;
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/SafetySensorStatuControl.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/SafetySensorStatuControl.cs
index bed3e57..f19dd48 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/SafetySensorStatuControl.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/SafetySensorStatuControl.cs
@@ -65,7 +65,7 @@
             btnStatu.TextID = R.MyInternationalizationString.uStatu;
             this.AddChidren(btnStatu);
             //绾�
-            var btnLine = new NormalViewControl(Application.GetRealWidth(876), 2, false);
+            var btnLine = new NormalViewControl(Application.GetRealWidth(876), ControlCommonResourse.BottomLineHeight, false);
             btnLine.BackgroundColor = UserCenterColor.Current.ButtomLine;
             btnLine.X = Application.GetRealWidth(46);
             btnLine.Y = Application.GetRealHeight(104);
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/TopRightMenuControl.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/TopRightMenuControl.cs
index fece7db..9c87f0d 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/TopRightMenuControl.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/TopRightMenuControl.cs
@@ -67,14 +67,14 @@
             //鏈�澶ф樉绀�5涓�
             int rowCount = this.RowCount > 5 ? 5 : this.RowCount;
             //妗屽竷
-            var frameTable = new FrameLayoutControl(false);
+            var frameTable = new FrameLayout();
             frameTable.X = Application.GetRealWidth(662 - (RowWidth - 395));
             frameTable.Y = Application.GetRealHeight(158 + 15 + 1);
             frameTable.Width = Application.GetRealWidth(RowWidth);
             frameTable.Height = Application.GetRealHeight(RowHeight * rowCount);
             frameTable.BackgroundColor = UserCenterColor.Current.White;
             frameTable.BorderColor = UserCenterColor.Current.Transparent;
-            frameTable.RadiusEx = 6;
+            frameTable.Radius = 6;
             this.AddChidren(frameTable);
 
             if (titleText != null)
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/FrameLayoutControls/FrameLayoutControl.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/FrameLayoutControls/FrameLayoutControl.cs
index c30210e..e4f7202 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/FrameLayoutControls/FrameLayoutControl.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/FrameLayoutControls/FrameLayoutControl.cs
@@ -24,6 +24,10 @@
         /// </summary>
         public bool UseClickStatu = true;
         /// <summary>
+        /// 鑳藉惁鐐瑰嚮
+        /// </summary>
+        public bool CanClick = true;
+        /// <summary>
         /// 鍘熸潵鐨勮儗鏅壊
         /// </summary>
         private uint oldBackColor = 0;
@@ -35,17 +39,6 @@
         /// 瀛愭帶浠禮杞村亸绉婚噺(鍏遍�氬畾涔夎�屽凡)
         /// </summary>
         public int chidrenYaxis = 0;
-
-        /// <summary>
-        /// 鍦嗚搴�(瀹夊崜鍜孖OS鎴栬闇�瑕侀缂栬瘧)
-        /// </summary>
-        public uint RadiusEx
-        {
-            set
-            {
-                this.Radius = value;
-            }
-        }
 
         #endregion
 
@@ -61,14 +54,6 @@
 
             this.MouseUpEventHandler += ChildrenUpEvent;
             this.MouseDownEventHandler += ChildrenDownEvent;
-        }
-
-        /// <summary>
-        /// 鍋氭垚涓�涓櫘閫氱殑FrameLayout鎺т欢
-        /// </summary>
-        /// <param name="flage">娌″暐鐢ㄧ殑涓滆タ</param>
-        public FrameLayoutControl(bool flage)
-        {
         }
 
         #endregion
@@ -215,7 +200,7 @@
         /// <param name="e">E.</param>
         private void ChildrenDownEvent(object sender, MouseEventArgs e)
         {
-            if (this.UseClickStatu == false)
+            if (this.UseClickStatu == false|| this.CanClick == false)
             {
                 return;
             }
@@ -229,6 +214,11 @@
         /// <param name="e">E.</param>
         private void ChildrenUpEvent(object sender, MouseEventArgs e)
         {
+            if (this.CanClick == false)
+            {
+                //涓嶅厑璁哥偣鍑�
+                return;
+            }
             if (sender is FrameLayoutControl)
             {
                 //LOG鍑哄姏
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/MessageControls/ShowMsgControl.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/MessageControls/ShowMsgControl.cs
index 377f528..f1d9bc5 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/MessageControls/ShowMsgControl.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/MessageControls/ShowMsgControl.cs
@@ -155,105 +155,28 @@
         /// <param name="frameBack"></param>
         private void InitBottomConfirmButton(FrameLayout frameMain, FrameLayout frameBack)
         {
-            //鍙栨秷
-            var frameCancel = new FrameLayoutControl();
-            frameCancel.Height = Application.GetRealHeight(127);
-            frameCancel.Width = Application.GetRealWidth(396);
-            frameCancel.Gravity = Gravity.BottomLeft;
-            frameCancel.Radius = 8;
-            frameCancel.BackgroundColor = 0xfff5f6fa;
-            frameBack.AddChidren(frameCancel);
-            //鎶婁笂鍦嗚瑕嗙洊涓烘柟瑙�
-            var btnTopTemp1 = new NormalViewControl(frameCancel.Width, Application.GetRealHeight(40), false);
-            btnTopTemp1.BackgroundColor = 0xfff5f6fa;
-            frameCancel.AddChidren(btnTopTemp1, ChidrenBindMode.BindEventOnly);
-            //鎶婂彸涓嬪渾瑙掕鐩栦负鏂硅
-            var btnBomTemp1 = new NormalViewControl(frameCancel.Width / 2, Application.GetRealHeight(40), false);
-            btnBomTemp1.BackgroundColor = 0xfff5f6fa;
-            btnBomTemp1.Gravity = Gravity.BottomRight;
-            frameCancel.AddChidren(btnBomTemp1, ChidrenBindMode.BindEventOnly);
             //鍙栨秷鎸夐挳
-            var btnCancel = new NormalViewControl(frameCancel.Width - Application.GetRealWidth(10), Application.GetRealHeight(60), false);
-            btnCancel.Gravity = Gravity.Center;
-            btnCancel.TextColor = UserCenterColor.Current.TextGrayColor1;
-            btnCancel.TextID = R.MyInternationalizationString.uCancel;
-            btnCancel.TextAlignment = TextAlignment.Center;
-            btnCancel.BackgroundColor = 0xfff5f6fa;
-            frameCancel.AddChidren(btnCancel, ChidrenBindMode.BindEventOnly);
-            frameCancel.ButtonClickEvent += (sender, e) =>
+            var btnCancel = new BottomLeftClickButton(Application.GetRealWidth(396), Application.GetRealHeight(127));
+            frameBack.AddChidren(btnCancel);
+            btnCancel.InitControl(Language.StringByID(R.MyInternationalizationString.uCancel));
+            btnCancel.ButtonClickEvent += (sender, e) =>
             {
                 //绉婚櫎鐣岄潰
                 frameMain.RemoveFromParent();
                 this.ConfirmClickEvent = null;
             };
-            //閲嶅啓鎺т欢鐐瑰嚮鐘舵��
-            frameCancel.SelectStatuEvent += (statu) =>
-            {
-                if (statu == true)
-                {
-                    frameCancel.BackgroundColor = UserCenterColor.Current.ButtonClickStatuColor;
-                    btnTopTemp1.BackgroundColor = UserCenterColor.Current.ButtonClickStatuColor;
-                    btnBomTemp1.BackgroundColor = UserCenterColor.Current.ButtonClickStatuColor;
-                    btnCancel.BackgroundColor = UserCenterColor.Current.ButtonClickStatuColor;
-                }
-                else
-                {
-                    frameCancel.BackgroundColor = 0xfff5f6fa;
-                    btnTopTemp1.BackgroundColor = 0xfff5f6fa;
-                    btnBomTemp1.BackgroundColor = 0xfff5f6fa;
-                    btnCancel.BackgroundColor = 0xfff5f6fa;
-                }
-            };
 
-            //纭
-            var frameConfirm = new FrameLayoutControl();
-            frameConfirm.Height = Application.GetRealHeight(127);
-            frameConfirm.Width = Application.GetRealWidth(396);
-            frameConfirm.Gravity = Gravity.BottomRight;
-            frameConfirm.Radius = 8;
-            frameConfirm.BackgroundColor = UserCenterColor.Current.ClickButtonDefultColor;
-            frameBack.AddChidren(frameConfirm);
-            //鎶婁笂鍦嗚瑕嗙洊涓烘柟瑙�
-            var btnTopTemp2 = new NormalViewControl(frameConfirm.Width, Application.GetRealHeight(40), false);
-            btnTopTemp2.BackgroundColor = UserCenterColor.Current.ClickButtonDefultColor;
-            frameConfirm.AddChidren(btnTopTemp2, ChidrenBindMode.BindEventOnly);
-            //鎶婂乏涓嬪渾瑙掕鐩栦负鏂硅
-            var btnBomTemp2 = new NormalViewControl(frameConfirm.Width / 2, Application.GetRealHeight(40), false);
-            btnBomTemp2.BackgroundColor = UserCenterColor.Current.ClickButtonDefultColor;
-            btnBomTemp2.Gravity = Gravity.BottomLeft;
-            frameConfirm.AddChidren(btnBomTemp2, ChidrenBindMode.BindEventOnly);
-            //纭鎸夐挳
-            var btnConfirm = new NormalViewControl(frameConfirm.Width - Application.GetRealWidth(10), Application.GetRealHeight(60), false);
-            btnConfirm.Gravity = Gravity.Center;
-            btnConfirm.TextColor = UserCenterColor.Current.White;
-            btnConfirm.Text = buttonOkText;
-            btnConfirm.TextAlignment = TextAlignment.Center;
-            frameConfirm.AddChidren(btnConfirm, ChidrenBindMode.BindEventOnly);
-            frameConfirm.ButtonClickEvent += (sender, e) =>
+            //纭畾鎸夐挳
+            var btnConfirm = new BottomRightClickButton(frameBack.Width - btnCancel.Width, btnCancel.Height);
+            frameBack.AddChidren(btnConfirm);
+            btnConfirm.InitControl(buttonOkText);
+            btnConfirm.ButtonClickEvent += (sender, e) =>
             {
                 //绉婚櫎鐣岄潰
                 frameMain.RemoveFromParent();
                 //鍥炶皟鍑芥暟
                 this.ConfirmClickEvent?.Invoke();
                 this.ConfirmClickEvent = null;
-            };
-            //閲嶅啓鎺т欢鐐瑰嚮鐘舵��
-            frameConfirm.SelectStatuEvent += (statu) =>
-            {
-                if (statu == true)
-                {
-                    frameConfirm.BackgroundColor = UserCenterColor.Current.ButtonClickStatuColor;
-                    btnTopTemp2.BackgroundColor = UserCenterColor.Current.ButtonClickStatuColor;
-                    btnBomTemp2.BackgroundColor = UserCenterColor.Current.ButtonClickStatuColor;
-                    btnConfirm.BackgroundColor = UserCenterColor.Current.ButtonClickStatuColor;
-                }
-                else
-                {
-                    frameConfirm.BackgroundColor = UserCenterColor.Current.ClickButtonDefultColor;
-                    btnTopTemp2.BackgroundColor = UserCenterColor.Current.ClickButtonDefultColor;
-                    btnBomTemp2.BackgroundColor = UserCenterColor.Current.ClickButtonDefultColor;
-                    btnConfirm.BackgroundColor = UserCenterColor.Current.ClickButtonDefultColor;
-                }
             };
         }
 
@@ -264,11 +187,12 @@
         /// <param name="frameBack"></param>
         private void InitBottomNormalButton(FrameLayout frameMain, FrameLayout frameBack)
         {
+#if Android
             //纭
             var frameConfirm = new FrameLayoutControl();
             frameConfirm.Height = Application.GetRealHeight(127);
             frameConfirm.Width = frameBack.Width;
-            frameConfirm.Y = Application.GetRealHeight(351);
+            frameConfirm.Gravity = Gravity.BottomCenter;
             frameConfirm.Radius = 8;
             frameConfirm.BackgroundColor = UserCenterColor.Current.ClickButtonDefultColor;
             frameBack.AddChidren(frameConfirm);
@@ -307,6 +231,26 @@
                     btnConfirm.BackgroundColor = UserCenterColor.Current.ClickButtonDefultColor;
                 }
             };
+#endif
+#if iOS
+            //纭鎸夐挳
+            var btnConfirm = new NormalClickButton(frameBack.Width, Application.GetRealHeight(127), false);
+            btnConfirm.Gravity = Gravity.BottomCenter;
+            btnConfirm.TextColor = UserCenterColor.Current.White;
+            btnConfirm.Text = buttonOkText;
+            btnConfirm.TextAlignment = TextAlignment.Center;
+            btnConfirm.BackgroundColor = UserCenterColor.Current.ClickButtonDefultColor;
+            btnConfirm.oldBackgroundColor = UserCenterColor.Current.ClickButtonDefultColor;
+            frameBack.AddChidren(btnConfirm);
+            btnConfirm.ButtonClickEvent += (sender, e) =>
+            {
+                //绉婚櫎鐣岄潰
+                frameMain.RemoveFromParent();
+                //鍥炶皟鍑芥暟
+                this.ConfirmClickEvent?.Invoke();
+                this.ConfirmClickEvent = null;
+            };
+#endif
         }
 
         #endregion
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/TextInputControls/DialogInputControl.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/TextInputControls/DialogInputControl.cs
index ee36947..5f89c79 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/TextInputControls/DialogInputControl.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/TextInputControls/DialogInputControl.cs
@@ -36,11 +36,11 @@
         /// <summary>
         /// 鍙栨秷鎸夐挳
         /// </summary>
-        private NormalViewControl btnCancel = null;
+        private BottomLeftClickButton btnCancel = null;
         /// <summary>
         /// 纭鎸夐挳
         /// </summary>
-        private NormalViewControl btnConfirm = null;
+        private BottomRightClickButton btnConfirm = null;
 
         #endregion
 
@@ -95,79 +95,20 @@
             frameText.AddChidren(txtInput);
 
             //鍙栨秷
-            var frameCancel = new FrameLayoutControl();
-            frameCancel.Height = Application.GetRealHeight(127);
-            frameCancel.Width = Application.GetRealWidth(396);
-            frameCancel.Gravity = Gravity.BottomLeft;
-            frameCancel.Radius = 8;
-            frameCancel.BackgroundColor = 0xfff5f6fa;
-            frameBack.AddChidren(frameCancel);
-            //鎶婁笂鍦嗚瑕嗙洊涓烘柟瑙�
-            var btnTopTemp1 = new NormalViewControl(frameCancel.Width, Application.GetRealHeight(40), false);
-            btnTopTemp1.BackgroundColor = 0xfff5f6fa;
-            frameCancel.AddChidren(btnTopTemp1, ChidrenBindMode.BindEventOnly);
-            //鎶婂彸涓嬪渾瑙掕鐩栦负鏂硅
-            var btnBomTemp1 = new NormalViewControl(frameCancel.Width / 2, Application.GetRealHeight(40), false);
-            btnBomTemp1.BackgroundColor = 0xfff5f6fa;
-            btnBomTemp1.Gravity = Gravity.BottomRight;
-            frameCancel.AddChidren(btnBomTemp1, ChidrenBindMode.BindEventOnly);
-            //鍙栨秷鎸夐挳
-            this.btnCancel = new NormalViewControl(frameCancel.Width - Application.GetRealWidth(10), Application.GetRealHeight(60), false);
-            btnCancel.Gravity = Gravity.Center;
-            btnCancel.TextColor = UserCenterColor.Current.TextGrayColor1;
-            btnCancel.TextID = R.MyInternationalizationString.uCancel;
-            btnCancel.TextAlignment = TextAlignment.Center;
-            btnCancel.BackgroundColor = 0xfff5f6fa;
-            frameCancel.AddChidren(btnCancel, ChidrenBindMode.BindEventOnly);
-            frameCancel.ButtonClickEvent += (sender, e) =>
+            this.btnCancel = new BottomLeftClickButton(Application.GetRealWidth(396), Application.GetRealHeight(127));
+            frameBack.AddChidren(btnCancel);
+            btnCancel.InitControl(Language.StringByID(R.MyInternationalizationString.uCancel));
+            btnCancel.ButtonClickEvent += (sender, e) =>
             {
                 //绉婚櫎鐣岄潰
                 this.CloseDialog();
             };
-            //閲嶅啓鎺т欢鐐瑰嚮鐘舵��
-            frameCancel.SelectStatuEvent += (statu) =>
-            {
-                if (statu == true)
-                {
-                    frameCancel.BackgroundColor = UserCenterColor.Current.ButtonClickStatuColor;
-                    btnTopTemp1.BackgroundColor = UserCenterColor.Current.ButtonClickStatuColor;
-                    btnBomTemp1.BackgroundColor = UserCenterColor.Current.ButtonClickStatuColor;
-                    btnCancel.BackgroundColor = UserCenterColor.Current.ButtonClickStatuColor;
-                }
-                else
-                {
-                    frameCancel.BackgroundColor = 0xfff5f6fa;
-                    btnTopTemp1.BackgroundColor = 0xfff5f6fa;
-                    btnBomTemp1.BackgroundColor = 0xfff5f6fa;
-                    btnCancel.BackgroundColor = 0xfff5f6fa;
-                }
-            };
 
             //纭
-            var frameConfirm = new FrameLayoutControl();
-            frameConfirm.Height = Application.GetRealHeight(127);
-            frameConfirm.Width = Application.GetRealWidth(396);
-            frameConfirm.Gravity = Gravity.BottomRight;
-            frameConfirm.Radius = 8;
-            frameConfirm.BackgroundColor = UserCenterColor.Current.ClickButtonDefultColor;
-            frameBack.AddChidren(frameConfirm);
-            //鎶婁笂鍦嗚瑕嗙洊涓烘柟瑙�
-            var btnTopTemp2 = new NormalViewControl(frameConfirm.Width, Application.GetRealHeight(40), false);
-            btnTopTemp2.BackgroundColor = UserCenterColor.Current.ClickButtonDefultColor;
-            frameConfirm.AddChidren(btnTopTemp2, ChidrenBindMode.BindEventOnly);
-            //鎶婂乏涓嬪渾瑙掕鐩栦负鏂硅
-            var btnBomTemp2 = new NormalViewControl(frameConfirm.Width / 2, Application.GetRealHeight(40), false);
-            btnBomTemp2.BackgroundColor = UserCenterColor.Current.ClickButtonDefultColor;
-            btnBomTemp2.Gravity = Gravity.BottomLeft;
-            frameConfirm.AddChidren(btnBomTemp2, ChidrenBindMode.BindEventOnly);
-            //纭鎸夐挳
-            this.btnConfirm = new NormalViewControl(frameConfirm.Width - Application.GetRealWidth(10), Application.GetRealHeight(60), false);
-            btnConfirm.Gravity = Gravity.Center;
-            btnConfirm.TextColor = UserCenterColor.Current.White;
-            btnConfirm.TextID = R.MyInternationalizationString.OkMsg;
-            btnConfirm.TextAlignment = TextAlignment.Center;
-            frameConfirm.AddChidren(btnConfirm, ChidrenBindMode.BindEventOnly);
-            frameConfirm.ButtonClickEvent += (sender, e) =>
+            this.btnConfirm = new BottomRightClickButton(frameBack.Width - btnCancel.Width, btnCancel.Height);
+            frameBack.AddChidren(btnConfirm);
+            btnConfirm.InitControl(Language.StringByID(R.MyInternationalizationString.OkMsg));
+            btnConfirm.ButtonClickEvent += (sender, e) =>
             {
                 if (this.Text == string.Empty && string.IsNullOrEmpty(this.txtInput.PlaceholderText) == false)
                 {
@@ -177,24 +118,6 @@
                 }
                 //鍥炶皟鍑芥暟
                 this.ComfirmClickEvent?.Invoke(this.Text);
-            };
-            //閲嶅啓鎺т欢鐐瑰嚮鐘舵��
-            frameConfirm.SelectStatuEvent += (statu) =>
-            {
-                if (statu == true)
-                {
-                    frameConfirm.BackgroundColor = UserCenterColor.Current.ButtonClickStatuColor;
-                    btnTopTemp2.BackgroundColor = UserCenterColor.Current.ButtonClickStatuColor;
-                    btnBomTemp2.BackgroundColor = UserCenterColor.Current.ButtonClickStatuColor;
-                    btnConfirm.BackgroundColor = UserCenterColor.Current.ButtonClickStatuColor;
-                }
-                else
-                {
-                    frameConfirm.BackgroundColor = UserCenterColor.Current.ClickButtonDefultColor;
-                    btnTopTemp2.BackgroundColor = UserCenterColor.Current.ClickButtonDefultColor;
-                    btnBomTemp2.BackgroundColor = UserCenterColor.Current.ClickButtonDefultColor;
-                    btnConfirm.BackgroundColor = UserCenterColor.Current.ClickButtonDefultColor;
-                }
             };
         }
 
@@ -229,7 +152,7 @@
         /// <param name="txtValue"></param>
         public void SetCancelButtonText(string txtValue)
         {
-            this.btnCancel.Text = txtValue;
+            this.btnCancel.SetButtonText(txtValue);
         }
 
         /// <summary>
@@ -238,7 +161,7 @@
         /// <param name="txtValue"></param>
         public void SetOkButtonText(string txtValue)
         {
-            this.btnConfirm.Text = txtValue;
+            this.btnConfirm.SetButtonText(txtValue);
         }
 
         /// <summary>
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Form/PswGestureSecirityForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Form/PswGestureSecirityForm.cs
index 62aa0e3..e002904 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Form/PswGestureSecirityForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Form/PswGestureSecirityForm.cs
@@ -43,7 +43,7 @@
             frameBack.Width = Application.GetRealWidth(965);
             frameBack.Height = Application.GetRealHeight(1486);
             frameBack.BackgroundColor = UserCenterColor.Current.White;
-            frameBack.Radius = 6;
+            frameBack.Radius = 8;
             bodyFrameLayout.AddChidren(frameBack);
 
             //鎵嬪娍楠岃瘉鎺т欢
@@ -83,13 +83,9 @@
             };
 
             //Touch ID寮�閿�
-            var btnTouch = new NormalClickButton(frameBack.Width / 2, Application.GetRealHeight(127));
-            btnTouch.BackgroundColor = 0xfff5f6fa;
-            btnTouch.oldBackgroundColor = 0xfff5f6fa;
-            btnTouch.Gravity = Gravity.BottomLeft;
-            btnTouch.Text = i_TouchText;
-            btnTouch.TextColor = UserCenterColor.Current.TextColor1;
+            var btnTouch = new BottomLeftClickButton(frameBack.Width / 2, Application.GetRealHeight(127));
             frameBack.AddChidren(btnTouch);
+            btnTouch.InitControl(i_TouchText);
             if (UserCenterResourse.Option.FingerprintAuthentication == false)
             {
                 //娌℃湁鍚敤Touch ID
@@ -143,13 +139,9 @@
             };
 
             //瀵嗙爜寮�閿�
-            var btnPsw = new NormalClickButton(frameBack.Width / 2, Application.GetRealHeight(127));
-            btnPsw.BackgroundColor = 0xff232323;
-            btnPsw.oldBackgroundColor = 0xfff5f6fa;
-            btnPsw.Text = i_PasswordText;
-            btnPsw.TextColor = UserCenterColor.Current.White;
-            btnPsw.Gravity = Gravity.BottomRight;
+            var btnPsw = new BottomRightClickButton(frameBack.Width - btnTouch.Width, btnTouch.Height);
             frameBack.AddChidren(btnPsw);
+            btnPsw.InitControl(i_PasswordText);
             if (string.IsNullOrEmpty(UserCenterResourse.Option.PswAuthentication) == true)
             {
                 //娌℃湁鍚敤瀵嗙爜寮�閿�
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Form/PswSecondarySecurityForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Form/PswSecondarySecurityForm.cs
index 3764cf8..e626f06 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Form/PswSecondarySecurityForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Form/PswSecondarySecurityForm.cs
@@ -43,7 +43,7 @@
             frameBack.Width = Application.GetRealWidth(965);
             frameBack.Height = Application.GetRealHeight(1711);
             frameBack.BackgroundColor = UserCenterColor.Current.White;
-            frameBack.Radius = 6;
+            frameBack.Radius = 8;
             bodyFrameLayout.AddChidren(frameBack);
 
             //瀵嗙爜杈撳叆鎺т欢
@@ -86,13 +86,9 @@
             };
 
             //鎵嬪娍寮�閿�
-            var btnGesture = new NormalClickButton(frameBack.Width / 2, Application.GetRealHeight(127));
-            btnGesture.oldBackgroundColor = 0xfff5f6fa;
-            btnGesture.BackgroundColor = 0xfff5f6fa;
-            btnGesture.Text = i_GestureText;
-            btnGesture.TextColor = UserCenterColor.Current.TextColor1;
-            btnGesture.Gravity = Gravity.BottomLeft;
+            var btnGesture = new BottomLeftClickButton(frameBack.Width / 2, Application.GetRealHeight(127));
             frameBack.AddChidren(btnGesture);
+            btnGesture.InitControl(i_GestureText);
             if (string.IsNullOrEmpty(UserCenterResourse.Option.GestureAuthentication) == true)
             {
                 //娌℃湁鍚敤鎵嬪娍寮�閿�
@@ -106,13 +102,9 @@
             };
 
             //Touch ID寮�閿�
-            var btnTouch = new NormalClickButton(frameBack.Width / 2, Application.GetRealHeight(127));
-            btnTouch.BackgroundColor = 0xff232323;
-            btnTouch.oldBackgroundColor = 0xff232323;
-            btnTouch.Text = i_TouchText;
-            btnTouch.TextColor = UserCenterColor.Current.White;
-            btnTouch.Gravity = Gravity.BottomRight;
+            var btnTouch = new BottomRightClickButton(frameBack.Width - btnGesture.Width, btnGesture.Height);
             frameBack.AddChidren(btnTouch);
+            btnTouch.InitControl(i_TouchText);
             if (UserCenterResourse.Option.FingerprintAuthentication == false)
             {
                 //娌℃湁鍚敤Touch ID
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlAutoBackupLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlAutoBackupLogic.cs
index 30d17aa..9b0a56a 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlAutoBackupLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlAutoBackupLogic.cs
@@ -503,11 +503,11 @@
             string fullName = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.AutoBackupNotPromptedFile);
             if (System.IO.File.Exists(fullName) == false)
             {
-                //Application.RunOnMainThread(() =>
-                //{
-                //    var form = new HdlBackup.HdlAutoBackupSettionForm();
-                //    form.AddForm();
-                //});
+                HdlThreadLogic.Current.RunMain(() =>
+                {
+                    var form = new HdlBackup.HdlAutoBackupForm();
+                    form.AddForm();
+                });
                 return;
             }
             BackupNotPrompted info = null;
@@ -520,12 +520,12 @@
             }
             if (info.Day == 0)
             {
-                //Application.RunOnMainThread(() =>
-                //{
-                //    var form = new HdlBackup.HdlAutoBackupSettionForm();
-                //    form.AddForm();
-                //});
-                //return;
+                HdlThreadLogic.Current.RunMain(() =>
+                {
+                    var form = new HdlBackup.HdlAutoBackupForm();
+                    form.AddForm();
+                });
+                return;
             }
 
             DateTime oldTime = Convert.ToDateTime(info.OldDay);
@@ -533,11 +533,12 @@
             //鏃堕棿宸茬粡瓒呰繃
             if (intDay > info.Day)
             {
-                //Application.RunOnMainThread(() =>
-                //{
-                //    var form = new HdlBackup.HdlAutoBackupSettionForm();
-                //    form.AddForm();
-                //});
+                HdlThreadLogic.Current.RunMain(() =>
+                {
+                    var form = new HdlBackup.HdlAutoBackupForm();
+                    form.AddForm();
+                });
+                return;
             }
         }
 
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayLogic.cs
index 59676ec..660ebbc 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayLogic.cs
@@ -707,7 +707,7 @@
             //绉婚櫎
             ZbGateway.GateWayList.RemoveAll((obj) => this.GetGatewayId(obj) == zbGatewayID);
             //鏂紑mqtt杩炴帴
-            realWay.DisConnect("GD");
+            realWay.DisConnectLocalMqttClient("GD");
 
             return true;
         }
@@ -1556,7 +1556,7 @@
             //鏈�鍚庡啀鏂紑mqtt杩炴帴
             for (int i = 0; i < list.Count; i++)
             {
-                list[i].DisConnect("G");
+                list[i].DisConnectLocalMqttClient("G");
             }
             list.Clear();
         }
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/UserCenterLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/UserCenterLogic.cs
index 92abd67..7baafdd 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/UserCenterLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/UserCenterLogic.cs
@@ -520,7 +520,7 @@
             Config.Instance.Home.IsOthreShare = isOthreShare;
             Config.Instance.Home.AccountType = accountType;
             Config.Instance.Home.MainUserDistributedMark = mainMark;
-            Config.Instance.Home.Save();
+            Config.Instance.Home.Save(false);
 
             //鍒锋柊鏈湴缃戝叧鏂囦欢
             HdlGatewayLogic.Current.ReFreshByLocal();
@@ -622,7 +622,8 @@
                 HdlGatewayLogic.Current.ClearAllRealGateway();
                 try
                 {
-                    ZigBee.Device.ZbGateway.DisRemoteMqttClientConnect();
+                    //鏂紑杩滅▼Mqtt杩炴帴
+                    ZigBee.Device.ZbGateway.DisConnectRemoteMqttClient();
                 }
                 catch { }
 
@@ -790,6 +791,13 @@
             if (Common.Config.Instance.HomeId != UserCenterResourse.Option.OldHomeStringId
                 || Common.Config.Instance.Account != UserCenterResourse.Option.OldAccountId)
             {
+                try
+                {
+                    //鏂紑杩滅▼Mqtt杩炴帴
+                    ZigBee.Device.ZbGateway.DisConnectRemoteMqttClient();
+                }
+                catch { }
+
                 //娑堟伅璁板綍閲嶆柊璇诲彇鍙婃娴�
                 ControlCommonResourse.ReadMessageAgain = true;
                 //鍔犺浇璐﹀彿閰嶇疆淇℃伅
@@ -844,11 +852,11 @@
                 HdlGatewayLogic.Current.RefreshAppOldSelectGatewayId();
 
                 //0:宸茬粡鍚屾杩囷紝涓嶉渶瑕佸悓姝�,杩欎釜鏃跺�欓渶瑕佹彁绀哄浠�
-                //if (result == 0)
-                //{
-                //    //寮�鍚嚜鍔ㄥ浠芥彁绀�
-                //    HdlAutoBackupLogic.ShowAutoBackupPromptedForm();
-                //}
+                if (result == 0)
+                {
+                    //寮�鍚嚜鍔ㄥ浠芥彁绀�
+                    HdlAutoBackupLogic.ShowAutoBackupPromptedForm();
+                }
             }
             //APP缂撳瓨鍔犺浇瀹屾垚
             UserCenterResourse.Option.AppCanSignout = true;
@@ -929,7 +937,7 @@
                     newHouse.IsOthreShare = house.IsOthreShare;
                     newHouse.AccountType = house.AccountType;
                     newHouse.MainUserDistributedMark = house.MainUserDistributedMark;
-                    newHouse.Save();
+                    newHouse.Save(false);
                 }
             }
             if (string.IsNullOrEmpty(userInfo.UserName) == true)
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/AddScenePage.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/AddScenePage.cs
index 5943cbb..e6e56e9 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/AddScenePage.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/AddScenePage.cs
@@ -207,7 +207,7 @@
                                 myTip.CloseTime = 2;
                                 myTip.Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime);
                                 myTip.Show(Common.CommonPage.Instance);
-                             });
+                            });
                         }
                     }
 
@@ -537,7 +537,7 @@
                     Y = Application.GetMinRealAverage(46),
                     Width = Application.GetMinRealAverage(81),
                     Height = Application.GetMinRealAverage(81),
-                    UnSelectedImagePath = "SceneIcon/4.png",// scene.IconPath,
+                    UnSelectedImagePath = scene.IconPath,
                 };
                 rowLayout.AddChidren(devicePic);
 
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/BindTargetsPage.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/BindTargetsPage.cs
index d48b821..9b61629 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/BindTargetsPage.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/BindTargetsPage.cs
@@ -1,4 +1,5 @@
 锘縰sing System;
+using System.Collections;
 using System.Collections.Generic;
 using Shared.Common;
 using ZigBee.Device;
@@ -32,18 +33,132 @@
         }
 
         #region 鈼� 鍙橀噺鐢虫槑__________________________
-        ZigBee.Device.Panel currentKey;
-        VerticalScrolViewLayout midVerticalScrolViewLayout;//鏄剧ず琚粦瀹氳澶囨垨鍦烘櫙鐨剉iew
-        VerticalScrolViewLayout topMidVerticalScrolViewLayout;//鏄剧ず褰撳墠妯″紡view
-        int currentClusterID = 0;//褰撳墠绨嘔D
+        ZigBee.Device.Panel currentKey;//褰撳墠鎸夐敭瀵硅薄
+        VerticalRefreshLayout midVerticalRefreshLayout;//鏄剧ず琚粦瀹氳澶囨垨鍦烘櫙鐨剉iew
+        FrameLayout topFrameLayout;//鏄剧ず褰撳墠妯″紡view
+        int currentClusterID = 0;//鎸夐敭褰撳墠绨嘔D
+        Button entryStatusPic;
+        Button btnPicTip;
         Action<List<BindListResponseObj>> action;//鎸夐敭缁戝畾琛ㄩ�氱煡
-        public static System.Collections.Generic.List<CommonDevice> localDeviceList = new System.Collections.Generic.List<CommonDevice>();//鏈湴璁惧鍒楄〃
-        public static System.Collections.Generic.List<SceneUI> scList = new System.Collections.Generic.List<SceneUI> { };//鏈湴鍦烘櫙鍒楄〃
-        Action<List<BindListResponseObj>> devicBindAction;
+        Action<List<BindListResponseObj>> devicBindAction;//璁惧琚粦瀹氶�氱煡
+        private System.Collections.Generic.List<CommonDevice> localDeviceList = new System.Collections.Generic.List<CommonDevice>();//鏈湴璁惧鍒楄〃
+        private System.Collections.Generic.List<SceneUI> scList = new System.Collections.Generic.List<SceneUI> { };//鏈湴鍦烘櫙鍒楄〃       
         #endregion
 
+        //鍒濆鍖栨寜閿暟鎹�
+        private void InitListInfo()
+        {
+            System.Threading.Tasks.Task.Run(async () =>
+            {
+                try
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                    });
+                    localDeviceList.Clear();
+                    scList.Clear();
+                    //鑾峰彇鏈湴璁惧鍒楄〃
+                    foreach (var dev in Shared.Common.LocalDevice.Current.listAllDevice)
+                    {
+                        localDeviceList.Add(dev);
+                    }
+                    //鑾峰彇鏈湴鍦烘櫙鍒楄〃
+                    scList = Shared.Common.Room.AllRoomSceneUIList;
+
+                    #region 璇诲彇闈㈡澘褰撳墠妯″紡
+                    //璇诲彇鎸夐敭褰撳墠妯″紡
+                    var tempDeata = await currentKey.ReadPanelConfigureInfoAsync();
+                    if (tempDeata != null && tempDeata.deviceStatusReportData != null)
+                    {
+                        currentClusterID = tempDeata.deviceStatusReportData.CluterID;
+                        foreach (var attr in tempDeata.deviceStatusReportData.AttriBute)
+                        {
+                            currentKey.panelMode = attr.AttriButeData;
+                            currentKey.ReSave();
+                            //璇诲彇鎸夐敭褰撳墠缁戝畾鐩爣
+                            var getBindList = await currentKey.GetDeviceBindAsync();
+                            var bindDeviceListTemp = new System.Collections.Generic.List<BindListResponseObj> { };
+                            var bindSceneListTemp = new System.Collections.Generic.List<BindListResponseObj> { };
+                            if (getBindList != null && getBindList.getAllBindResponseData != null)
+                            {
+                                foreach (var b in getBindList.getAllBindResponseData.BindList)
+                                {
+                                    if (b.BindCluster == currentClusterID)
+                                    {
+                                        if (b.BindCluster == 6)
+                                        {
+
+                                            if (b.BindType == 2)
+                                            {
+                                                bindSceneListTemp.Add(b);
+                                            }
+                                            else
+                                            {
+                                                bindDeviceListTemp.Add(b);
+                                            }
+                                        }
+                                        else
+                                        {
+                                            currentKey.bindList.Add(b);
+                                        }
+                                    }
+                                }
+                            }
+                            else
+                            {
+                                Application.RunOnMainThread(() =>
+                                {
+                                    new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+                                });
+                            }
+
+                            if (currentKey.panelMode == 1)
+                            {
+                                currentKey.bindList = bindSceneListTemp;
+                                currentKey.currentKeySelectModeText = Language.StringByID(R.MyInternationalizationString.AddScene);
+                            }
+                            else if (currentKey.panelMode == 100 || currentKey.panelMode == 101 || currentKey.panelMode == 102)
+                            {
+                                currentKey.bindList = bindDeviceListTemp;
+                                currentKey.currentKeySelectModeText = Language.StringByID(R.MyInternationalizationString.AddSwitch);
+                            }
+                            else if (currentKey.panelMode == 200 || currentKey.panelMode == 201 || currentKey.panelMode == 202 || currentKey.panelMode == 203 || currentKey.panelMode == 204 || currentKey.panelMode == 205)
+                            {
+                                currentKey.currentKeySelectModeText = Language.StringByID(R.MyInternationalizationString.AddDimmer);
+                            }
+                            else if (currentKey.panelMode == 300 || currentKey.panelMode == 301 || currentKey.panelMode == 302 || currentKey.panelMode == 303 || currentKey.panelMode == 304)
+                            {
+                                currentKey.currentKeySelectModeText = Language.StringByID(R.MyInternationalizationString.AddCurtain);
+                            }
+                        }
+                        #endregion
+                    }
+                    else
+                    {
+                        Application.RunOnMainThread(() =>
+                        {
+                            new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+                        });
+                    }
+                }
+                catch { }
+                finally
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        RefreshList();
+                        CommonPage.Loading.Hide();
+                    });
+                }
+            });
+        }
+
+        /// <summary>
+        /// 鎸夐敭缁戝畾椤垫樉绀�
+        /// </summary>
         public void Show()
         {
+            #region TopFrameLayout
             this.TopFrameLayout(this, Language.StringByID(R.MyInternationalizationString.AddBindTargets));
             EventHandler<MouseEventArgs> eHandlerBack = (sender, e) =>
             {
@@ -67,6 +182,9 @@
                 UnSelectedImagePath = "BindPic/BindAdd.png",
             };
             btnAddFrameLayout.AddChidren(btnBindAdd);
+            #endregion
+
+            #region eHandlerAdd
             EventHandler<MouseEventArgs> eHandlerAdd = (sender, e) =>
             {
                 if (currentKey.bindList.Count != 0)
@@ -142,144 +260,33 @@
             };
             btnBindAdd.MouseDownEventHandler += eHandlerAdd;
             btnAddFrameLayout.MouseDownEventHandler += eHandlerAdd;
-            MidFrameLayoutContent();
+            #endregion
+            CommonPage.Loading.Start("");
+            InitListInfo();
+
         }
 
-        async void MidFrameLayoutContent()
+        void middleFrameLayout()
         {
-            try
+            topFrameLayout = new FrameLayout
             {
-                localDeviceList.Clear();
-                scList.Clear();
-                foreach (var dev in Shared.Common.LocalDevice.Current.listAllDevice)
-                {
-                    localDeviceList.Add(dev);
-                }
-                scList = Shared.Common.Room.AllRoomSceneUIList;
-            }
-            catch { }
+                Height = Application.GetMinRealAverage(0),
+                BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite,
+            };
+            this.midFrameLayout.AddChidren(topFrameLayout);
 
-            try
+            #region BindEmptyPic UI 
+            entryStatusPic = new Button
             {
-                CommonPage.Loading.Start("");
-                #region 鏁版嵁澶勭悊
-                var tempDeata = await currentKey.ReadPanelConfigureInfoAsync();
-
-                if (tempDeata != null && tempDeata.deviceStatusReportData != null)
-                {
-                    currentClusterID = tempDeata.deviceStatusReportData.CluterID;
-
-                    foreach (var attr in tempDeata.deviceStatusReportData.AttriBute)
-                    {
-                        currentKey.panelMode = attr.AttriButeData;
-                        currentKey.ReSave();
-                        var getBindList = await currentKey.GetDeviceBindAsync();
-
-                        var bindDeviceListTemp = new System.Collections.Generic.List<BindListResponseObj> { };
-                        var bindSceneListTemp = new System.Collections.Generic.List<BindListResponseObj> { };
-                        if (getBindList != null && getBindList.getAllBindResponseData != null)
-                        {
-                            foreach (var b in getBindList.getAllBindResponseData.BindList)
-                            {
-                                if (b.BindCluster == currentClusterID)
-                                {
-                                    if (b.BindCluster == 6)
-                                    {
-
-                                        if (b.BindType == 2)
-                                        {
-                                            bindSceneListTemp.Add(b);
-                                        }
-                                        else
-                                        {
-                                            bindDeviceListTemp.Add(b);
-                                        }
-                                    }
-                                    else
-                                    {
-                                        currentKey.bindList.Add(b);
-                                    }
-                                }
-                            }
-                        }
-                        else
-                        {
-                            var btn = new Button()
-                            {
-                                Gravity = Gravity.Center,
-                            };
-                            this.midFrameLayout.AddChidren(btn);
-                            Application.RunOnMainThread(() =>
-                            {
-                                new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btn);
-                            });
-                        }
-
-                        if (currentKey.panelMode == 1)
-                        {
-                            currentKey.bindList = bindSceneListTemp;
-                            currentKey.currentKeySelectModeText = Language.StringByID(R.MyInternationalizationString.AddScene);
-                        }
-                        else if (currentKey.panelMode == 100 || currentKey.panelMode == 101 || currentKey.panelMode == 102)
-                        {
-                            currentKey.bindList = bindDeviceListTemp;
-                            currentKey.currentKeySelectModeText = Language.StringByID(R.MyInternationalizationString.AddSwitch);
-                        }
-                        else if (currentKey.panelMode == 200 || currentKey.panelMode == 201 || currentKey.panelMode == 202 || currentKey.panelMode == 203 || currentKey.panelMode == 204 || currentKey.panelMode == 205)
-                        {
-                            currentKey.currentKeySelectModeText = Language.StringByID(R.MyInternationalizationString.AddDimmer);
-                        }
-                        else if (currentKey.panelMode == 300 || currentKey.panelMode == 301 || currentKey.panelMode == 302 || currentKey.panelMode == 303 || currentKey.panelMode == 304)
-                        {
-                            currentKey.currentKeySelectModeText = Language.StringByID(R.MyInternationalizationString.AddCurtain);
-                        }
-                    }
-                    #endregion 
-                }
-                else
-                {
-                    Application.RunOnMainThread(() =>
-                    {
-                        var btn = new Button()
-                        {
-                            Gravity = Gravity.Center,
-                        };
-                        this.midFrameLayout.AddChidren(btn);
-                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btn);
-                    });
-                }
-            }
-            catch
-            { }
-            finally
-            {
-                RefreshList();
-                CommonPage.Loading.Hide();
-            }
-        }
-
-        /// <summary>
-        /// 鎸夐敭缁戝畾鍦烘櫙琛ㄦ樉绀�
-        /// </summary>
-        /// <param name="gateway">Gateway.</param>
-        /// <param name="key">Key.</param>
-        async void RefreshList()
-        {
-            #region BindEmptyPic UI
-            this.midFrameLayout.RemoveAll();
-
-            var entryStatusPic = new Button
-            {
-                X = Application.GetRealWidth(164),
-                Y = Application.GetRealHeight(492),
+                X = Application.GetRealWidth(213),
+                Y = Application.GetRealHeight(418),
                 UnSelectedImagePath = "BindPic/BindEmptyPic.png",
                 Visible = false,
             };
             this.midFrameLayout.AddChidren(entryStatusPic);
 
-            var btnPicTip = new Button
+            btnPicTip = new Button
             {
-                X = Application.GetRealWidth(432),
                 Y = Application.GetRealHeight(1020),
                 Text = Language.StringByID(R.MyInternationalizationString.NoControlTargets),
                 TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
@@ -287,31 +294,45 @@
                 Visible = false,
             };
             this.midFrameLayout.AddChidren(btnPicTip);
+            #endregion
 
-            topMidVerticalScrolViewLayout = new VerticalScrolViewLayout
+            midVerticalRefreshLayout = new VerticalRefreshLayout()
+            {
+            };
+            this.midFrameLayout.AddChidren(midVerticalRefreshLayout);
+            midVerticalRefreshLayout.BeginHeaderRefreshingAction += () =>
+            {
+                midVerticalRefreshLayout.BeginHeaderRefreshing();
+                InitListInfo();
+                midVerticalRefreshLayout.EndHeaderRefreshing();
+            };
+        }
+
+        /// <summary>
+        /// 鎸夐敭缁戝畾琛ㄦ樉绀�
+        /// </summary> 
+        async void RefreshList()
+        {
+            this.midFrameLayout.RemoveAll();
+            middleFrameLayout();
+            midVerticalRefreshLayout.RemoveAll();
+
+            var frameLayoutRow = new FrameLayout()
             {
                 Height = Application.GetMinRealAverage(0),
                 BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite,
-
             };
-            this.midFrameLayout.AddChidren(topMidVerticalScrolViewLayout);
+            midVerticalRefreshLayout.AddChidren(frameLayoutRow);
 
-            midVerticalScrolViewLayout = new VerticalScrolViewLayout()
-            {
-                BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite,
-            };
-            this.midFrameLayout.AddChidren(midVerticalScrolViewLayout);
-            midVerticalScrolViewLayout.RemoveAll();
-            #endregion
-
+            #region 鏁版嵁澶勭悊 
             if (currentKey.bindList.Count == 0)
             {
-                entryStatusPic.Height = Application.GetRealHeight(435);
-                entryStatusPic.Width = Application.GetRealWidth(757);
+                entryStatusPic.Height = Application.GetRealHeight(556);
+                entryStatusPic.Width = Application.GetRealWidth(654);
                 btnPicTip.Height = Application.GetRealHeight(49);
-                midVerticalScrolViewLayout.Height = 0;
                 btnPicTip.Visible = true;
                 entryStatusPic.Visible = true;
+                midVerticalRefreshLayout.Height = Application.GetRealHeight(0);
             }
             else
             {
@@ -320,62 +341,84 @@
                 btnPicTip.Height = Application.GetRealHeight(0);
                 btnPicTip.Visible = false;
                 entryStatusPic.Visible = false;
-                topMidVerticalScrolViewLayout.Height = Application.GetRealHeight(170);
-                midVerticalScrolViewLayout.Y = topMidVerticalScrolViewLayout.Bottom;
-                midVerticalScrolViewLayout.Height = this.midFrameLayout.Height;
-                BackgroundColor = Shared.Common.ZigbeeColor.Current.XMMidFrameLayout;
-
                 if (currentKey.panelMode == 1)
                 {
-                    topMidVerticalScrolViewLayout.Height = Application.GetRealHeight(0);
-                    midVerticalScrolViewLayout.Y = Application.GetRealHeight(0);
+                    topFrameLayout.Height = Application.GetRealHeight(0);
+                    midVerticalRefreshLayout.Y = Application.GetRealHeight(0);
                 }
-
-                if (currentKey.panelMode != 1)
+                else
                 {
+                    topFrameLayout.Height = Application.GetRealHeight(150);
+                    midVerticalRefreshLayout.Y = Application.GetRealHeight(150);
                     BindModeDisplay();
                 }
+                int curIndex = 0;
                 for (int i = 0; i < currentKey.bindList.Count; i++)
                 {
+                    curIndex = i;
+                    var bindDevice = currentKey.bindList[i];
+                    SceneUI curSceneUI = null;
+                    bool isExistScene = false;
+
                     var rowLayout = new RowLayout()
                     {
-                        Height = Application.GetRealHeight(170),
+                        Height = Application.GetRealHeight(150),
+                        X = Application.GetRealWidth(58),
+                        Y = curIndex * Application.GetRealHeight(150),
+                        Width = Application.GetRealWidth(965),
+                        LineColor = Shared.Common.ZigbeeColor.Current.XMRowLine,
                     };
-                    midVerticalScrolViewLayout.AddChidren(rowLayout);
+                    frameLayoutRow.AddChidren(rowLayout);
 
-                    #region 缁戝畾琛║I鏄撅紙鏃犳暟鎹鐞嗭級 
-                    var bindDevice = currentKey.bindList[i];
+                    #region 缁戝畾琛║I鏄撅紙鏃犳暟鎹鐞嗭級  
                     var devicePic = new Button()
                     {
-                        X = Application.GetRealWidth(50),
-                        Width = Application.GetMinRealAverage(110),
-                        Height = Application.GetMinRealAverage(110),
-                        Gravity = Gravity.CenterVertical,
+                        Y = Application.GetRealHeight(35),
+                        Width = Application.GetMinRealAverage(81),
+                        Height = Application.GetMinRealAverage(81),
                     };
                     rowLayout.AddChidren(devicePic);
 
                     var btnBindName = new Button()
                     {
-                        Width = Application.GetRealWidth(500 - 120),
-                        X = devicePic.Right + Application.GetRealWidth(20),
-                        TextColor = Shared.Common.ZigbeeColor.Current.TextBlack,
+                        Width = Application.GetRealWidth(1080 - 173),
+                        Height = Application.GetRealHeight(60),
+                        X = Application.GetRealWidth(173 - 58),
+                        Y = Application.GetRealHeight(20),
+                        TextSize = 14,
+                        TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
                         TextAlignment = TextAlignment.CenterLeft,
                     };
                     rowLayout.AddChidren(btnBindName);
 
+                    var btnFloorRoomName = new Button()
+                    {
+                        Width = Application.GetRealWidth(1080 - 173),
+                        Height = Application.GetRealHeight(49),
+                        X = Application.GetRealWidth(173 - 58),
+                        Y = Application.GetRealHeight(81),
+                        TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
+                        TextSize = 14,
+                        TextAlignment = TextAlignment.CenterLeft,
+                    };
+                    rowLayout.AddChidren(btnFloorRoomName);
+
                     var btnDel = new Button()
                     {
                         TextColor = Shared.Common.ZigbeeColor.Current.GXCTextWhiteColor,
-                        X = btnBindName.Right,
+                        Width = Application.GetRealWidth(184),
                         TextID = R.MyInternationalizationString.DelBindDevice,
                         BackgroundColor = Shared.Common.ZigbeeColor.Current.DelRowLayout,
                     };
                     rowLayout.AddRightView(btnDel);
                     #endregion
 
-                    #region 缁戝畾鏁版嵁澶勭悊 
-                    bool isExistScene = false;
-
+                    #region 缁戝畾鏁版嵁澶勭悊
+                    int currentIndex = i;
+                    if (currentIndex == currentKey.bindList.Count - 1)
+                    {
+                        rowLayout.LineColor = Shared.Common.ZigbeeColor.Current.XMWhite;
+                    }
                     foreach (var sc in currentKey.bindList)
                     {
                         if (sc.BindType == 2)
@@ -383,19 +426,26 @@
                             isExistScene = true;
                         }
                     }
-
                     if (isExistScene)
                     {
-                        devicePic.UnSelectedImagePath = "SceneIcon/4.png";
-                        devicePic.Width = Application.GetMinRealAverage(110);
-
-                        if (bindDevice.ESName == "")
+                        curSceneUI = Room.CurrentRoom.GetSceneUIBySceneId(bindDevice.BindScenesId);
+                        if (curSceneUI == null)
                         {
-                            btnBindName.Text = Language.StringByID(R.MyInternationalizationString.Unknown) + Language.StringByID(R.MyInternationalizationString.Scence) + "ID" + bindDevice.BindScenesId.ToString();
+                            devicePic.UnSelectedImagePath = "Scene/SceneIcon.png";
+                            if (string.IsNullOrEmpty(bindDevice.ESName))
+                            {
+                                btnBindName.Text = Language.StringByID(R.MyInternationalizationString.OffLineScene) + "_" + "ID" + "_" + bindDevice.BindScenesId.ToString();
+                            }
+                            else
+                            {
+                                btnBindName.Text = Language.StringByID(R.MyInternationalizationString.OffLineScene) + "_" + bindDevice.ESName;
+                            }
                         }
                         else
                         {
-                            btnBindName.Text = bindDevice.ESName;
+                            devicePic.UnSelectedImagePath = curSceneUI.IconPath;
+                            btnBindName.Text = curSceneUI.Name;
+                            btnFloorRoomName.Text = curSceneUI.GetZone();
                         }
                     }
                     else
@@ -406,6 +456,15 @@
                             var tempDev = localDeviceList.Find(obj => obj.DeviceAddr == bindDevice.BindMacAddr && obj.DeviceEpoint == bindDevice.BindEpoint);
                             if (tempDev != null)
                             {
+                                //鑾峰彇璁惧鎵�灞炴埧闂�
+                                var tempDevRoom = Common.Room.CurrentRoom.GetRoomByDevice(tempDev);
+                                //鑾峰彇璁惧鎵�鍦ㄦゼ灞�
+                                var tempDevFloorId = tempDevRoom.FloorId;
+                                //鑾峰彇妤煎眰鐨勫悕瀛�
+                                var tempDevRoomName = tempDevRoom.Name;
+                                //鑾峰彇妤煎眰鐨勫悕瀛�
+                                var tempDevFloorName = Common.Config.Instance.Home.GetFloorNameById(tempDevFloorId);
+                                btnFloorRoomName.Text = tempDevFloorName + "," + tempDevRoomName;
                                 var deviceUi = Common.LocalDevice.Current.GetDeviceUI(tempDev);
                                 devicePic.UnSelectedImagePath = deviceUi.IconPath;
                                 devicePic.Width = Application.GetRealWidth(110);
@@ -437,7 +496,9 @@
                     };
                     #endregion
                 }
+                frameLayoutRow.Height = currentKey.bindList.Count * Application.GetRealHeight(150);
             }
+            #endregion
         }
 
         /// <summary>
@@ -445,28 +506,32 @@
         /// </summary>
         public void BindModeDisplay()
         {
+            #region modeRowLayout
             var modeRowLayout = new RowLayout()
             {
-                Height = Application.GetRealHeight(170),
+                Height = Application.GetRealHeight(150),
+                X = Application.GetRealWidth(58),
+                Width = Application.GetRealWidth(965),
+                LineColor = Shared.Common.ZigbeeColor.Current.XMRowLine,
             };
-            topMidVerticalScrolViewLayout.AddChidren(modeRowLayout);
+            topFrameLayout.AddChidren(modeRowLayout);
 
             var btnKeyMode = new Button
             {
-                X = Application.GetRealWidth(58),
                 Y = Application.GetRealHeight(63),
-                Width = Application.GetMinRealAverage(300),
+                Width = Application.GetMinRealAverage(294),
                 Height = Application.GetMinRealAverage(58),
                 Text = Language.StringByID(R.MyInternationalizationString.keyMode),
                 TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
+                TextAlignment = TextAlignment.CenterLeft,
             };
             modeRowLayout.AddChidren(btnKeyMode);
 
             var btnKeyModeTip = new Button
             {
-                X = Application.GetRealWidth(1080 - 55 - 651),
+                X = Application.GetRealWidth(374 - 58),
                 Y = Application.GetRealHeight(63),
-                Width = Application.GetMinRealAverage(651),
+                Width = Application.GetMinRealAverage(615),
                 Height = Application.GetMinRealAverage(58),
                 TextAlignment = TextAlignment.CenterRight,
                 TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
@@ -475,12 +540,15 @@
 
             var btnDel = new Button()
             {
+                Width = Application.GetMinRealAverage(184),
                 TextColor = Shared.Common.ZigbeeColor.Current.GXCTextWhiteColor,
                 TextID = R.MyInternationalizationString.DelBindDevice,
                 BackgroundColor = Shared.Common.ZigbeeColor.Current.DelRowLayout,
             };
             modeRowLayout.AddRightView(btnDel);
+            #endregion
 
+            #region 褰撳墠妯″紡鏂囨湰鏄剧ず
             switch (currentKey.panelMode)
             {
                 case 100:
@@ -488,27 +556,21 @@
                     break;
                 case 101:
                     btnKeyModeTip.TextID = R.MyInternationalizationString.OnOffoFF;
-
                     break;
                 case 102:
                     btnKeyModeTip.TextID = R.MyInternationalizationString.OnOffOnOff;
-
                     break;
                 case 200:
                     btnKeyModeTip.TextID = R.MyInternationalizationString.DimmerMode1;
-
                     break;
                 case 201:
                     btnKeyModeTip.TextID = R.MyInternationalizationString.DimmerMode2;
-
                     break;
                 case 203:
                     btnKeyModeTip.TextID = R.MyInternationalizationString.DimmerMode3;
-
                     break;
                 case 204:
                     btnKeyModeTip.TextID = R.MyInternationalizationString.DimmerMode4;
-
                     break;
                 case 205:
                     btnKeyModeTip.TextID = R.MyInternationalizationString.DimmerMode5;
@@ -518,22 +580,20 @@
                     break;
                 case 301:
                     btnKeyModeTip.TextID = R.MyInternationalizationString.WcdDown;
-
                     break;
                 case 302:
                     btnKeyModeTip.TextID = R.MyInternationalizationString.WcdStop;
-
                     break;
                 case 303:
                     btnKeyModeTip.TextID = R.MyInternationalizationString.WcdUpStop;
-
                     break;
                 case 304:
                     btnKeyModeTip.TextID = R.MyInternationalizationString.WcdDownStop;
-
                     break;
             }
+            #endregion
 
+            //涓�閿竻闄ゆ寜閿簨浠�
             btnDel.MouseUpEventHandler += async (sender, e) =>
             {
                 bool isDelSuccess = false;
@@ -585,7 +645,6 @@
                     }
                     CommonPage.Loading.Hide();
                 }
-
             };
         }
 
@@ -595,9 +654,7 @@
         void SideslipFramelayout()
         {
             #region UI
-            var dialog = new Dialog
-            {
-            };
+            var dialog = new Dialog { };
             dialog.Show();
 
             var flMain = new FrameLayout { BackgroundColor = 0x00000000 };
@@ -625,11 +682,11 @@
             sidelipFrameLayout.AddChidren(sidelipVerticalScrolViewLayout);
             #endregion
 
-            #region  rowView
             Button oldbuttonText = null;
             string oldKeySelectModeText = currentKey.currentKeySelectModeText;
             for (var i = 0; i < 4; i++)
             {
+                #region  rowView
                 var rowView = new FrameLayout()
                 {
                     Height = Application.GetRealHeight(150),
@@ -680,259 +737,7 @@
                 }
                 #endregion
 
-                EventHandler<MouseEventArgs> eHandler = (sender, e) =>
-               {
-                   if (!btnMethodText.IsSelected)
-                   {
-                       if (oldbuttonText != null)
-                       {
-                           oldbuttonText.TextColor = Shared.Common.ZigbeeColor.Current.XMGray3;
-                       }
-                       oldbuttonText = btnMethodText;
-                       currentKey.currentKeySelectModeText = btnMethodText.Text;
-                       oldbuttonText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
-                   }
-                   if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddScene))
-                   {
-                       if (currentKey.bindList.Count != 0)
-                       {
-                           var bindSc = currentKey.bindList.Find(obj => (obj.BindType == 2));
-                           if (bindSc != null)
-                           {
-                               var alert = new Alert(Language.StringByID(R.MyInternationalizationString.Tip), Language.StringByID(R.MyInternationalizationString.DelLocalBindListThenAddAgain),
-                                                             Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
-                               alert.Show();
-
-                               alert.ResultEventHandler += async (s1, e1) =>
-                               {
-                                   if (e1)
-                                   {
-                                       var result = await RemoveTargets(bindSc, line2);
-                                       if (result == 0)
-                                       {
-                                           var addScenePage = new Shared.Phone.UserCenter.DeviceBind.AddScenePage(currentKey);
-                                           Shared.Phone.UserView.HomePage.Instance.AddChidren(addScenePage);
-                                           Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
-                                           addScenePage.Show();
-
-                                           Action<List<BindListResponseObj>> action = (obj) =>
-                                           {
-                                               currentKey.bindList = obj;
-                                               RefreshList();
-                                           };
-                                           addScenePage.action += action;
-                                           dialog.Close();
-                                       }
-                                       else
-                                       {
-                                           currentKey.currentKeySelectModeText = oldKeySelectModeText;
-                                           dialog.Close();
-                                       }
-                                   }
-                                   else
-                                   {
-                                       currentKey.currentKeySelectModeText = oldKeySelectModeText;
-                                       dialog.Close();
-                                   }
-                               };
-                           }
-                       }
-                       else
-                       {
-                           var addScenePage = new Shared.Phone.UserCenter.DeviceBind.AddScenePage(currentKey);
-                           Shared.Phone.UserView.HomePage.Instance.AddChidren(addScenePage);
-                           Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
-                           addScenePage.Show();
-
-                           Action<List<BindListResponseObj>> action = (obj) =>
-                           {
-                               currentKey.bindList = obj;
-                               RefreshList();
-                           };
-                           addScenePage.action += action;
-                           dialog.Close();
-                       }
-                   }
-                   if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddSwitch))
-                   {
-                       if (currentKey.bindList.Count != 0)
-                       {
-                           var bindSc = currentKey.bindList.Find(obj => (obj.BindType == 2));
-                           if (bindSc != null)
-                           {
-                               var alert = new Alert(Language.StringByID(R.MyInternationalizationString.Tip), Language.StringByID(R.MyInternationalizationString.DelLocalBindListThenAddAgain1),
-                                                             Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
-                               alert.Show();
-
-                               alert.ResultEventHandler += async (s1, e1) =>
-                               {
-                                   if (e1)
-                                   {
-                                       var result = await RemoveTargets(bindSc, line2);
-                                       if (result == 0)
-                                       {
-                                           var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.AddDevicePage(currentKey, "AddSwitch");
-                                           Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
-                                           Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
-                                           addDevicePage.Show();
-
-                                           Action<List<BindListResponseObj>> action = (obj) =>
-                                           {
-                                               currentKey.bindList = obj;
-                                               RefreshList();
-                                           };
-                                           addDevicePage.actionAddDevicePage += action;
-                                           dialog.Close();
-                                       }
-                                       else
-                                       {
-                                           currentKey.currentKeySelectModeText = oldKeySelectModeText;
-                                           dialog.Close();
-                                       }
-                                   }
-                                   else
-                                   {
-                                       currentKey.currentKeySelectModeText = oldKeySelectModeText;
-                                       dialog.Close();
-                                   }
-                               };
-                           }
-                       }
-                       else
-                       {
-                           var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.AddDevicePage(currentKey, "AddSwitch");
-                           Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
-                           Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
-                           addDevicePage.Show();
-
-                           Action<List<BindListResponseObj>> action = (obj) =>
-                           {
-                               currentKey.bindList = obj;
-                               RefreshList();
-                           };
-                           addDevicePage.actionAddDevicePage += action;
-                           dialog.Close();
-                       }
-                   }
-                   if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddDimmer))
-                   {
-                       if (currentKey.bindList.Count != 0)
-                       {
-                           var bindSc = currentKey.bindList.Find(obj => (obj.BindType == 2));
-                           if (bindSc != null)
-                           {
-                               var alert = new Alert(Language.StringByID(R.MyInternationalizationString.Tip), Language.StringByID(R.MyInternationalizationString.DelLocalBindListThenAddAgain2),
-                                                          Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
-                               alert.Show();
-
-                               alert.ResultEventHandler += async (s1, e1) =>
-                               {
-                                   if (e1)
-                                   {
-                                       var result = await RemoveTargets(bindSc, line2);
-                                       if (result == 0)
-                                       {
-                                           var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.AddDevicePage(currentKey, "AddDimmer");
-                                           Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
-                                           Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
-                                           addDevicePage.Show();
-
-                                           Action<List<BindListResponseObj>> action = (obj) =>
-                                           {
-                                               currentKey.bindList = obj;
-                                               RefreshList();
-                                           };
-                                           addDevicePage.actionAddDevicePage += action;
-                                           dialog.Close();
-                                       }
-                                       else
-                                       {
-                                           currentKey.currentKeySelectModeText = oldKeySelectModeText;
-                                           dialog.Close();
-                                       }
-                                   }
-                                   else
-                                   {
-                                       currentKey.currentKeySelectModeText = oldKeySelectModeText;
-                                       dialog.Close();
-                                   }
-                               };
-                           }
-                       }
-                       else
-                       {
-                           var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.AddDevicePage(currentKey, "AddDimmer");
-                           Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
-                           Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
-                           addDevicePage.Show();
-
-                           Action<List<BindListResponseObj>> action = (obj) =>
-                           {
-                               currentKey.bindList = obj;
-                               RefreshList();
-                           };
-                           addDevicePage.actionAddDevicePage += action;
-                           dialog.Close();
-                       }
-
-
-                   }
-                   if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddCurtain))
-                   {
-                       if (currentKey.bindList.Count != 0)
-                       {
-                           var bindSc = currentKey.bindList.Find(obj => (obj.BindType == 2));
-                           if (bindSc != null)
-                           {
-                               var alert = new Alert(Language.StringByID(R.MyInternationalizationString.Tip), Language.StringByID(R.MyInternationalizationString.DelLocalBindListThenAddAgain3),
-                                                                                         Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
-                               alert.Show();
-
-                               alert.ResultEventHandler += async (s1, e1) =>
-                               {
-                                   if (e1)
-                                   {
-                                       var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.AddDevicePage(currentKey, "AddCurtain");
-                                       Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
-                                       Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
-                                       addDevicePage.Show();
-
-                                       Action<List<BindListResponseObj>> action = (obj) =>
-                                       {
-                                           currentKey.bindList = obj;
-                                           RefreshList();
-                                       };
-                                       addDevicePage.actionAddDevicePage += action;
-                                       dialog.Close();
-                                   }
-                                   else
-                                   {
-                                       currentKey.currentKeySelectModeText = oldKeySelectModeText;
-                                       dialog.Close();
-                                   }
-                               };
-                           }
-                       }
-                       else
-                       {
-                           var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.AddDevicePage(currentKey, "AddCurtain");
-                           Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
-                           Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
-                           addDevicePage.Show();
-
-                           Action<List<BindListResponseObj>> action = (obj) =>
-                           {
-                               currentKey.bindList = obj;
-                               RefreshList();
-                           };
-                           addDevicePage.actionAddDevicePage += action;
-                           dialog.Close();
-                       }
-                   }
-               };
-                btnMethodText.MouseUpEventHandler += eHandler;
-                rowView.MouseUpEventHandler += eHandler;
-
+                #region 鏁版嵁澶勭悊
                 switch (i)
                 {
                     case 0:
@@ -946,6 +751,7 @@
                         break;
                     case 3:
                         btnMethodText.Text = Language.StringByID(R.MyInternationalizationString.AddCurtain);
+                        line2.Visible = false;
                         break;
                 }
 
@@ -969,9 +775,270 @@
                     btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
                     oldbuttonText = btnMethodText;
                 }
+                #endregion
+
+                //绫诲瀷浜嬩欢閫変腑澶勭悊
+                EventHandler<MouseEventArgs> eHandler = (sender, e) =>
+                {
+                    if (!btnMethodText.IsSelected)
+                    {
+                        if (oldbuttonText != null)
+                        {
+                            oldbuttonText.TextColor = Shared.Common.ZigbeeColor.Current.XMGray3;
+                        }
+                        oldbuttonText = btnMethodText;
+                        currentKey.currentKeySelectModeText = btnMethodText.Text;
+                        oldbuttonText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                    }
+                    if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddScene))
+                    {
+                        if (currentKey.bindList.Count != 0)
+                        {
+                            var bindSc = currentKey.bindList.Find(obj => (obj.BindType == 2));
+                            if (bindSc != null)
+                            {
+                                var alert = new Alert(Language.StringByID(R.MyInternationalizationString.Tip), Language.StringByID(R.MyInternationalizationString.DelLocalBindListThenAddAgain),
+                                                              Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
+                                alert.Show();
+
+                                alert.ResultEventHandler += async (s1, e1) =>
+                                {
+                                    if (e1)
+                                    {
+                                        var result = await RemoveTargets(bindSc, line2);
+                                        if (result == 0)
+                                        {
+                                            var addScenePage = new Shared.Phone.UserCenter.DeviceBind.AddScenePage(currentKey);
+                                            Shared.Phone.UserView.HomePage.Instance.AddChidren(addScenePage);
+                                            Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
+                                            addScenePage.Show();
+
+                                            Action<List<BindListResponseObj>> action = (obj) =>
+                                            {
+                                                currentKey.bindList = obj;
+                                                RefreshList();
+                                            };
+                                            addScenePage.action += action;
+                                            dialog.Close();
+                                        }
+                                        else
+                                        {
+                                            currentKey.currentKeySelectModeText = oldKeySelectModeText;
+                                            dialog.Close();
+                                        }
+                                    }
+                                    else
+                                    {
+                                        currentKey.currentKeySelectModeText = oldKeySelectModeText;
+                                        dialog.Close();
+                                    }
+                                };
+                            }
+                        }
+                        else
+                        {
+                            var addScenePage = new Shared.Phone.UserCenter.DeviceBind.AddScenePage(currentKey);
+                            Shared.Phone.UserView.HomePage.Instance.AddChidren(addScenePage);
+                            Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
+                            addScenePage.Show();
+
+                            Action<List<BindListResponseObj>> action = (obj) =>
+                            {
+                                currentKey.bindList = obj;
+                                RefreshList();
+                            };
+                            addScenePage.action += action;
+                            dialog.Close();
+                        }
+                    }
+                    if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddSwitch))
+                    {
+                        if (currentKey.bindList.Count != 0)
+                        {
+                            var bindSc = currentKey.bindList.Find(obj => (obj.BindType == 2));
+                            if (bindSc != null)
+                            {
+                                var alert = new Alert(Language.StringByID(R.MyInternationalizationString.Tip), Language.StringByID(R.MyInternationalizationString.DelLocalBindListThenAddAgain1),
+                                                              Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
+                                alert.Show();
+
+                                alert.ResultEventHandler += async (s1, e1) =>
+                                {
+                                    if (e1)
+                                    {
+                                        var result = await RemoveTargets(bindSc, line2);
+                                        if (result == 0)
+                                        {
+                                            var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.AddDevicePage(currentKey, "AddSwitch");
+                                            Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
+                                            Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
+                                            addDevicePage.Show();
+
+                                            Action<List<BindListResponseObj>> action = (obj) =>
+                                            {
+                                                currentKey.bindList = obj;
+                                                RefreshList();
+                                            };
+                                            addDevicePage.actionAddDevicePage += action;
+                                            dialog.Close();
+                                        }
+                                        else
+                                        {
+                                            currentKey.currentKeySelectModeText = oldKeySelectModeText;
+                                            dialog.Close();
+                                        }
+                                    }
+                                    else
+                                    {
+                                        currentKey.currentKeySelectModeText = oldKeySelectModeText;
+                                        dialog.Close();
+                                    }
+                                };
+                            }
+                        }
+                        else
+                        {
+                            var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.AddDevicePage(currentKey, "AddSwitch");
+                            Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
+                            Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
+                            addDevicePage.Show();
+
+                            Action<List<BindListResponseObj>> action = (obj) =>
+                            {
+                                currentKey.bindList = obj;
+                                RefreshList();
+                            };
+                            addDevicePage.actionAddDevicePage += action;
+                            dialog.Close();
+                        }
+                    }
+                    if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddDimmer))
+                    {
+                        if (currentKey.bindList.Count != 0)
+                        {
+                            var bindSc = currentKey.bindList.Find(obj => (obj.BindType == 2));
+                            if (bindSc != null)
+                            {
+                                var alert = new Alert(Language.StringByID(R.MyInternationalizationString.Tip), Language.StringByID(R.MyInternationalizationString.DelLocalBindListThenAddAgain2),
+                                                           Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
+                                alert.Show();
+
+                                alert.ResultEventHandler += async (s1, e1) =>
+                                {
+                                    if (e1)
+                                    {
+                                        var result = await RemoveTargets(bindSc, line2);
+                                        if (result == 0)
+                                        {
+                                            var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.AddDevicePage(currentKey, "AddDimmer");
+                                            Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
+                                            Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
+                                            addDevicePage.Show();
+
+                                            Action<List<BindListResponseObj>> action = (obj) =>
+                                            {
+                                                currentKey.bindList = obj;
+                                                RefreshList();
+                                            };
+                                            addDevicePage.actionAddDevicePage += action;
+                                            dialog.Close();
+                                        }
+                                        else
+                                        {
+                                            currentKey.currentKeySelectModeText = oldKeySelectModeText;
+                                            dialog.Close();
+                                        }
+                                    }
+                                    else
+                                    {
+                                        currentKey.currentKeySelectModeText = oldKeySelectModeText;
+                                        dialog.Close();
+                                    }
+                                };
+                            }
+                        }
+                        else
+                        {
+                            var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.AddDevicePage(currentKey, "AddDimmer");
+                            Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
+                            Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
+                            addDevicePage.Show();
+
+                            Action<List<BindListResponseObj>> action = (obj) =>
+                            {
+                                currentKey.bindList = obj;
+                                RefreshList();
+                            };
+                            addDevicePage.actionAddDevicePage += action;
+                            dialog.Close();
+                        }
+
+
+                    }
+                    if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddCurtain))
+                    {
+                        if (currentKey.bindList.Count != 0)
+                        {
+                            var bindSc = currentKey.bindList.Find(obj => (obj.BindType == 2));
+                            if (bindSc != null)
+                            {
+                                var alert = new Alert(Language.StringByID(R.MyInternationalizationString.Tip), Language.StringByID(R.MyInternationalizationString.DelLocalBindListThenAddAgain3),
+                                                                                          Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
+                                alert.Show();
+
+                                alert.ResultEventHandler += async (s1, e1) =>
+                                {
+                                    if (e1)
+                                    {
+                                        var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.AddDevicePage(currentKey, "AddCurtain");
+                                        Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
+                                        Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
+                                        addDevicePage.Show();
+
+                                        Action<List<BindListResponseObj>> action = (obj) =>
+                                        {
+                                            currentKey.bindList = obj;
+                                            RefreshList();
+                                        };
+                                        addDevicePage.actionAddDevicePage += action;
+                                        dialog.Close();
+                                    }
+                                    else
+                                    {
+                                        currentKey.currentKeySelectModeText = oldKeySelectModeText;
+                                        dialog.Close();
+                                    }
+                                };
+                            }
+                        }
+                        else
+                        {
+                            var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.AddDevicePage(currentKey, "AddCurtain");
+                            Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
+                            Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
+                            addDevicePage.Show();
+
+                            Action<List<BindListResponseObj>> action = (obj) =>
+                            {
+                                currentKey.bindList = obj;
+                                RefreshList();
+                            };
+                            addDevicePage.actionAddDevicePage += action;
+                            dialog.Close();
+                        }
+                    }
+                };
+                btnMethodText.MouseUpEventHandler += eHandler;
+                rowView.MouseUpEventHandler += eHandler;
             }
         }
 
+        /// <summary>
+        /// 鍒犻櫎褰撳墠鐩爣鏂规硶
+        /// </summary>
+        /// <param name="bindDevice"></param>
+        /// <param name="btnDel"></param>
+        /// <returns></returns>
         async System.Threading.Tasks.Task<int> RemoveTargets(BindListResponseObj bindDevice, Button btnDel)
         {
             var delDevice = new DelDeviceBindData();
@@ -1069,10 +1136,8 @@
                                 }
                                 break;
                             case 4:
-
                                 if (delResult.removeBindResultResponseData != null)
                                 {
-
                                     if (delResult.removeBindResultResponseData.Result == 0)
                                     {
                                         currentKey.bindList.Remove(bindDevice);
@@ -1100,7 +1165,6 @@
             {
                 CommonPage.Loading.Hide();
             }
-
             return -1;
         }
 
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonInfo.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonInfo.cs
index 2d57e62..e1c92a4 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonInfo.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonInfo.cs
@@ -115,7 +115,6 @@
         {
             return await System.Threading.Tasks.Task.Run((Func<System.Threading.Tasks.Task<Dictionary<int, LocaDoorLockObj>>>)(async () =>
             {
-                doorLock.localDoorLockUserList.Clear();
                 //1銆佽鍙栭棬閿佷俊鎭�
                 var getDoorLockInfo = await doorLock.GetDoorlockUserInfoAsync();
 
@@ -134,6 +133,7 @@
                 // 鐢ㄦ埛淇℃伅澶勭悊
                 if (getDoorLockInfo != null && getDoorLockInfo.doorLockUserDetailData != null)
                 {
+                    doorLock.localDoorLockUserList.Clear();
                     var dataList = getDoorLockInfo.doorLockUserDetailData.UserObjList;
                     foreach (var doorData in dataList)
                     {
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonLayout.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonLayout.cs
index 6457f60..e2bcbed 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonLayout.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonLayout.cs
@@ -14,7 +14,6 @@
         #region 鈼� 鍙橀噺鐢虫槑__________________________
         public FrameLayout topFrameLayout = new FrameLayout { Height = Application.GetRealHeight(184), BackgroundColor = ZigbeeColor.Current.XMTopFrameLayout };
         public FrameLayout midFrameLayout = new FrameLayout { Height = Application.GetRealHeight(1921 - 184), BackgroundColor = ZigbeeColor.Current.XMMidFrameLayout };
-
         #region 鈼� 搴曢儴鏈夊渾瑙掑竷灞�__________________________
         public FrameLayout shadowRadiusFrameLayout = new FrameLayout { BackgroundColor = 0x0f000000 };
         public FrameLayout bottomRadiusFrameLayout1 = new FrameLayout()
@@ -70,6 +69,16 @@
         };
         #endregion
 
+        /// <summary> 
+        /// 鈼� 涓儴鍒锋柊甯冨眬__________________________
+        /// </summary>
+        //public VerticalRefreshLayout midVerticalScrolViewLayout = new VerticalRefreshLayout()
+        //{
+        //};
+
+        /// <summary>
+        /// 鈼� 鏍囬鏍忓竷灞�__________________________
+        /// </summary>
         public FrameLayout titleFrameLayout = new FrameLayout
         {
             Y = Application.GetRealHeight(92),
@@ -97,7 +106,7 @@
             Y = Application.GetRealHeight(98),
             UnSelectedImagePath = "DoorLock/Left.png",
         };
-  
+
         /// <summary>
         /// 鏍囬涓嬬嚎
         /// </summary>
@@ -107,6 +116,7 @@
             Height = 1,
             BackgroundColor = Shared.Common.ZigbeeColor.Current.XMTitleLine,
         };
+
 
         /// <summary>
         /// 寮圭獥鍙栨秷鎸夐敭
@@ -144,7 +154,6 @@
             };
             titleFrameLayout.AddChidren(title);
             btnBackFrameLayout.AddChidren(btnBack);
-            //this.midFrameLayout.AddChidren(this.btnTip);
         }
         /// <summary>
         /// 闂ㄩ攣涓儴甯冨眬
@@ -402,7 +411,7 @@
         /// <param name="action">浜屾楠岃瘉鐨勭粨鏋滄垚鍔熷悗鐨勯�氱煡</param>
         /// <param name="progressButton">闂ㄩ攣寮�鎴栧叧鏃惰繘搴︽樉绀�</param>
         /// <param name="btnDoorLockPic">闂ㄩ攣鍥剧墖寮�/鍏虫樉绀�</param>
-        public void RemoteUnlockRequest(ZigBee.Device.DoorLock doorLock, Action action, Button progressButton = null, Button btnDoorLockPic = null, Button btnStatus = null)
+        public void RemoteUnlockRequest(ZigBee.Device.DoorLock doorLock, Action action, Button progressButton = null, Button btnDoorLockPic = null, Button btnStatus = null, Button btnDoorLockTitle = null)
         {
             if (doorLock.RemoteUnlockPassword == "")
             {
@@ -425,18 +434,41 @@
                 {
                     if (UserCenterResourse.UserInfo.AuthorityNo == 1)
                     {
-                        var userDoorLockPage = new Shared.Phone.UserCenter.DoorLock.FunctionSetting(doorLock);
-                        Shared.Phone.UserView.HomePage.Instance.AddChidren(userDoorLockPage);
+                        var functionSetting = new Shared.Phone.UserCenter.DoorLock.FunctionSetting(doorLock);
+                        Shared.Phone.UserView.HomePage.Instance.AddChidren(functionSetting);
                         Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
-                        userDoorLockPage.Show();
+                        functionSetting.Show();
+                        functionSetting.devicNameAction += (deviceRename) =>
+                        {
+                            if (!string.IsNullOrEmpty(deviceRename))
+                            {
+                                if (btnDoorLockTitle != null)
+                                {
+                                    btnDoorLockTitle.Text = deviceRename;
+                                }
+                            }
+                        };
                         dialog.Close();
                     }
                     else
                     {
-                        var userDoorLockPage = new Shared.Phone.UserCenter.DoorLock.FunctionSettingSub(doorLock);
-                        Shared.Phone.UserView.HomePage.Instance.AddChidren(userDoorLockPage);
+                        var functionSettingSub = new Shared.Phone.UserCenter.DoorLock.FunctionSettingSub(doorLock);
+                        Shared.Phone.UserView.HomePage.Instance.AddChidren(functionSettingSub);
                         Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
-                        userDoorLockPage.Show();
+                        functionSettingSub.Show();
+                        functionSettingSub.devicNameAction += (deviceRename) =>
+                        {
+                            if (!string.IsNullOrEmpty(deviceRename))
+                            {
+                                if (!string.IsNullOrEmpty(deviceRename))
+                                {
+                                    if (btnDoorLockTitle != null)
+                                    {
+                                        btnDoorLockTitle.Text = deviceRename;
+                                    }
+                                }
+                            }
+                        };
                         dialog.Close();
                     }
                 };
@@ -505,175 +537,196 @@
             };
             doorDialog3.dialogBtnConfirm.MouseUpEventHandler += (sender1, e1) =>
             {
-                action = async () =>
+                action = () =>
                 {
-                    //System.Threading.Tasks.Task.Run(async () =>
-                    //{
-                    Application.RunOnMainThread(() => { CommonPage.Loading.Start("Loading..."); });
-                    try
+                    System.Threading.Tasks.Task.Run(async () =>
                     {
-                        //杩滅▼寮�閿�
-                        if (progressButton != null)
-                        {
-                            progressButton.Y = Application.GetRealHeight(10);
-                        }
-                        if (btnDoorLockPic != null)
-                        {
-                            btnDoorLockPic.IsSelected = true;
-                        }
-                        if (btnStatus != null)
+                        Application.RunOnMainThread(() => { CommonPage.Loading.Start("Loading..."); });
+                        try
                         {
                             Application.RunOnMainThread(() =>
                             {
-                                btnStatus.Text = Language.StringByID(R.MyInternationalizationString.Opening);
+                                if (progressButton != null)
+                                {
+                                    progressButton.Y = Application.GetRealHeight(10);
+                                }
+                                if (btnDoorLockPic != null)
+                                {
+                                    btnDoorLockPic.IsSelected = true;
+                                }
+                                if (btnStatus != null)
+                                {
+                                    btnStatus.Text = Language.StringByID(R.MyInternationalizationString.Opening);
+
+                                }
                             });
-                        }
-                        var remoteControlResult = await doorLock.RemoteControlAsync(doorLock.RemoteUnlockPassword);
-                        //寮�閿佹垚鍔燂紝杩斿洖榛樿鍝嶅簲
-                        if (remoteControlResult != null && remoteControlResult.responseData != null)
-                        {
-                            if (remoteControlResult.responseData.status == 0)
+                            //杩滅▼寮�閿� 
+                            var remoteControlResult = await doorLock.RemoteControlAsync(doorLock.RemoteUnlockPassword);
+                            //寮�閿佹垚鍔燂紝杩斿洖榛樿鍝嶅簲
+                            if (remoteControlResult != null && remoteControlResult.responseData != null)
                             {
-                                ZigBee.Device.DoorLock.failedCount = 3;
-                                if (progressButton != null)
+                                if (remoteControlResult.responseData.status == 0)
                                 {
-                                    progressButton.Y = Application.GetRealHeight(347);
-                                }
-                                if (btnDoorLockPic != null)
-                                {
-                                    btnDoorLockPic.IsSelected = false;
-                                }
-
-                                btnStatus.Text = Language.StringByID(R.MyInternationalizationString.DoorLockOpen);
-                                new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.UnlockSuccess), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show((View)sender1);
-                                //Application.RunOnMainThread(() =>
-                                //{
-                                //    if (btnStatus != null)
-                                //    {
-                                //        btnStatus.Text = Language.StringByID(R.MyInternationalizationString.DoorLockOpen);
-                                //        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.UnlockSuccess), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show((View)sender1);
-                                //    }
-                                //});
-                                System.Threading.Thread.Sleep(5000);
-                            }
-                            else
-                            {
-                                if (progressButton != null)
-                                {
-                                    progressButton.Y = Application.GetRealHeight(347);
-                                }
-                                if (btnDoorLockPic != null)
-                                {
-                                    btnDoorLockPic.IsSelected = false;
-                                }
-                                Application.RunOnMainThread(() =>
-                                {
-                                    if (btnStatus != null)
+                                    ZigBee.Device.DoorLock.failedCount = 3;
+                                    Application.RunOnMainThread(() =>
                                     {
-                                        btnStatus.Text = Language.StringByID(R.MyInternationalizationString.CLose);
-                                    }
-                                });
-                                new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.UnlockFailed), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show((View)sender1);
-                            }
-                        }
-                        else if (remoteControlResult != null && remoteControlResult.IsPawDispear == true)
-                        {
-                            ZigBee.Device.DoorLock.failedCount--;
-                            if (ZigBee.Device.DoorLock.failedCount != 0)
-                            {
-                                if (progressButton != null)
-                                {
-                                    progressButton.Y = Application.GetRealHeight(347);
-                                }
-                                if (btnDoorLockPic != null)
-                                {
-                                    btnDoorLockPic.IsSelected = false;
-                                }
-                                Application.RunOnMainThread(() =>
-                                {
-                                    if (btnStatus != null)
-                                    {
-                                        btnStatus.Text = Language.StringByID(R.MyInternationalizationString.CLose);
-                                    }
-                                });
-                                new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.UnlockFailed), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show((View)sender1);
-                            }
-                            else
-                            {
-                                if (progressButton != null)
-                                {
-                                    progressButton.Y = Application.GetRealHeight(347);
-                                }
-                                if (btnDoorLockPic != null)
-                                {
-                                    btnDoorLockPic.IsSelected = false;
-                                }
-                                Application.RunOnMainThread(() =>
-                                {
-                                    if (btnStatus != null)
-                                    {
-                                        btnStatus.Text = Language.StringByID(R.MyInternationalizationString.CLose);
-                                    }
-                                    new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.DoorlockPasswordDispear), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show((View)sender1);
-                                    CommonPage.Loading.Hide();
-                                    doorLock.RemoteUnlockPassword = "";
-                                });
-                                dialog3.Close();
-
-                                if (UserCenterResourse.UserInfo.AuthorityNo == 1)
-                                {
-                                    var userDoorLockPage = new Shared.Phone.UserCenter.DoorLock.FunctionSetting(doorLock);
-                                    Shared.Phone.UserView.HomePage.Instance.AddChidren(userDoorLockPage);
-                                    Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
-                                    userDoorLockPage.Show();
-
+                                        if (progressButton != null)
+                                        {
+                                            progressButton.Y = Application.GetRealHeight(347);
+                                        }
+                                        if (btnDoorLockPic != null)
+                                        {
+                                            btnDoorLockPic.IsSelected = false;
+                                        }
+                                        if (btnStatus != null)
+                                        {
+                                            btnStatus.Text = Language.StringByID(R.MyInternationalizationString.DoorLockOpen);
+                                            new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.UnlockSuccess), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show((View)sender1);
+                                        }
+                                    });
+                                    System.Threading.Thread.Sleep(5000);
                                 }
                                 else
                                 {
-                                    var userDoorLockPage = new Shared.Phone.UserCenter.DoorLock.FunctionSettingSub(doorLock);
-                                    Shared.Phone.UserView.HomePage.Instance.AddChidren(userDoorLockPage);
-                                    Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
-                                    userDoorLockPage.Show();
+                                    Application.RunOnMainThread(() =>
+                                    {
+                                        if (progressButton != null)
+                                        {
+                                            progressButton.Y = Application.GetRealHeight(347);
+                                        }
+                                        if (btnDoorLockPic != null)
+                                        {
+                                            btnDoorLockPic.IsSelected = false;
+                                        }
+                                        if (btnStatus != null)
+                                        {
+                                            btnStatus.Text = Language.StringByID(R.MyInternationalizationString.CLose);
+                                        }
+                                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.UnlockFailed), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show((View)sender1);
+                                    });
                                 }
                             }
+                            else if (remoteControlResult != null && remoteControlResult.IsPawDispear == true)
+                            {
+                                ZigBee.Device.DoorLock.failedCount--;
+                                if (ZigBee.Device.DoorLock.failedCount != 0)
+                                {
+                                    Application.RunOnMainThread(() =>
+                                    {
+                                        if (progressButton != null)
+                                        {
+                                            progressButton.Y = Application.GetRealHeight(347);
+                                        }
+                                        if (btnDoorLockPic != null)
+                                        {
+                                            btnDoorLockPic.IsSelected = false;
+                                        }
+                                        if (btnStatus != null)
+                                        {
+                                            btnStatus.Text = Language.StringByID(R.MyInternationalizationString.CLose);
+                                        }
+                                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.UnlockFailed), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show((View)sender1);
+                                    });
+                                }
+                                else
+                                {
+                                    Application.RunOnMainThread(() =>
+                                    {
+                                        if (progressButton != null)
+                                        {
+                                            progressButton.Y = Application.GetRealHeight(347);
+                                        }
+                                        if (btnDoorLockPic != null)
+                                        {
+                                            btnDoorLockPic.IsSelected = false;
+                                        }
+                                        if (btnStatus != null)
+                                        {
+                                            btnStatus.Text = Language.StringByID(R.MyInternationalizationString.CLose);
+                                        }
+                                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.DoorlockPasswordDispear), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show((View)sender1);
+                                        CommonPage.Loading.Hide();
+                                        doorLock.RemoteUnlockPassword = "";
+                                        dialog3.Close();
+                                        if (UserCenterResourse.UserInfo.AuthorityNo == 1)
+                                        {
+                                            var functionSetting = new Shared.Phone.UserCenter.DoorLock.FunctionSetting(doorLock);
+                                            Shared.Phone.UserView.HomePage.Instance.AddChidren(functionSetting);
+                                            Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
+                                            functionSetting.Show();
+                                            functionSetting.devicNameAction += (deviceRename) =>
+                                            {
+                                                if (!string.IsNullOrEmpty(deviceRename))
+                                                {
+                                                    if (btnDoorLockTitle != null)
+                                                    {
+                                                        btnDoorLockTitle.Text = deviceRename;
+                                                    }
+                                                }
+                                            };
+                                        }
+                                        else
+                                        {
+                                            var functionSettingSub = new Shared.Phone.UserCenter.DoorLock.FunctionSettingSub(doorLock);
+                                            Shared.Phone.UserView.HomePage.Instance.AddChidren(functionSettingSub);
+                                            Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
+                                            functionSettingSub.Show();
+                                            functionSettingSub.devicNameAction += (deviceRename) =>
+                                            {
+                                                if (!string.IsNullOrEmpty(deviceRename))
+                                                {
+                                                    if (!string.IsNullOrEmpty(deviceRename))
+                                                    {
+                                                        if (btnDoorLockTitle != null)
+                                                        {
+                                                            btnDoorLockTitle.Text = deviceRename;
+                                                        }
+                                                    }
+                                                }
+                                            };
+                                        }
+                                    });
+                                }
+                            }
+                            else
+                            {
+                                Application.RunOnMainThread(() =>
+                                {
+                                    if (progressButton != null)
+                                    {
+                                        progressButton.Y = Application.GetRealHeight(347);
+                                    }
+                                    if (btnDoorLockPic != null)
+                                    {
+                                        btnDoorLockPic.IsSelected = false;
+                                    }
+                                    if (btnStatus != null)
+                                    {
+                                        btnStatus.Text = Language.StringByID(R.MyInternationalizationString.CLose);
+                                    }
+                                    new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show((View)sender1);
+                                });
+                            }
                         }
-                        else
+                        catch { }
+                        finally
                         {
-                            if (progressButton != null)
-                            {
-                                progressButton.Y = Application.GetRealHeight(347);
-                            }
-                            if (btnDoorLockPic != null)
-                            {
-                                btnDoorLockPic.IsSelected = false;
-                            }
                             Application.RunOnMainThread(() =>
                             {
                                 if (btnStatus != null)
                                 {
                                     btnStatus.Text = Language.StringByID(R.MyInternationalizationString.CLose);
                                 }
-                                new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show((View)sender1);
+                                CommonPage.Loading.Hide();
                             });
                         }
-                    }
-                    catch { }
-                    finally
-                    {
-                        Application.RunOnMainThread(() =>
-                        {
-                            if (btnStatus != null)
-                            {
-                                btnStatus.Text = Language.StringByID(R.MyInternationalizationString.CLose);
-                            }
-                            CommonPage.Loading.Hide();
-                        });
-                    }
-                    //});
+                    });
                 };
                 HdlCheckLogic.Current.CheckSecondarySecurity(action);
                 dialog3.Close();
             };
         }
+        // 鑾峰彇鍒板埌鍚嶇О鏇存敼鍥炶皟閫氱煡
+        public Action<string> devicNameSecAction;
     }
 }
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/EntryStatusPage.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/EntryStatusPage.cs
index 0a1e075..d8c9401 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/EntryStatusPage.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/EntryStatusPage.cs
@@ -267,6 +267,7 @@
 
                                                  if (form is UnLockMethod)
                                                  {
+                                                     doorLock.currentUserDisplayMethod = "";
                                                      ((UnLockMethod)form).RefreshList();
                                                      break;
                                                  }
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/FunctionSetting.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/FunctionSetting.cs
index cef7875..a25457b 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/FunctionSetting.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/FunctionSetting.cs
@@ -39,6 +39,7 @@
         Action action;
         string modifyDeviceName = "";
         bool IsModifyName = true;
+        public Action<string> devicNameAction;
         #endregion
 
         /// <summary>
@@ -62,7 +63,6 @@
 
         public void MidFrameLayoutContent()
         {
-
             var MidTopFrameLayout = new FrameLayout()
             {
                 X = Application.GetRealWidth(449),
@@ -166,47 +166,49 @@
                     btnNextFrameLayout.Width = btnNext.Width = Application.GetRealWidth(789 - 58);
                     btnNextFrameLayout.X = Application.GetRealWidth(233);
                     btnNext.Text = doorLock.DeviceName;
-                    var btnDeviceNameEditText = new Button()
+                    var btnDeviceNameEditText = new EditText()
                     {
-                        Width = Application.GetRealWidth(789 - 58),
-                        Height = Application.GetRealHeight(58),
                         X = Application.GetRealWidth(46),
+                        Width = Application.GetRealWidth(731),
+                        Height = Application.GetRealHeight(58),
+                        TextColor = ZigbeeColor.Current.XMGray3,
+                        PlaceholderTextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor2,
                         TextAlignment = TextAlignment.CenterLeft,
-                        TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
-                        Text = doorLock.DeviceName
+                        Text = string.IsNullOrEmpty(doorLock.DeviceName) ? Language.StringByID(R.MyInternationalizationString.UNKnown) : doorLock.DeviceName,
                     };
                     btnNextFrameLayout.AddChidren(btnDeviceNameEditText);
-                    //btnDeviceNameEditText.TextChangeEventHandler += (sender, e) =>
-                    //{
-                    //    modifyDeviceName = btnDeviceNameEditText.Text;
-                    //};
-                    //Action<Shared.View> actionEdit = async (obj) =>
-                    // {
-                    //     try
-                    //     {
-                    //         Application.RunOnMainThread(() => { CommonPage.Loading.Start("Loading..."); });
-                    //         var doorLockDeviceList = new List<CommonDevice> { };
-                    //         doorLockDeviceList.Add(doorLock);
-                    //         var result = await Common.LocalDevice.Current.ReMacName(doorLockDeviceList, btnDeviceNameEditText.Text);
-                    //         if (result)
-                    //         {
-                    //             IsModifyName = false;
-                    //         }
-                    //         else
-                    //         {
-                    //             IsModifyName = true;
-                    //         }
-                    //     }
-                    //     catch { }
-                    //     finally
-                    //     {
-                    //         Application.RunOnMainThread(() =>
-                    //         {
-                    //             CommonPage.Loading.Hide();
-                    //         });
-                    //     }
-                    // };
-                    // btnDeviceNameEditText.EditorEnterAction += actionEdit;
+
+                    btnDeviceNameEditText.TextChangeEventHandler += (sender, e) =>
+                    {
+                        modifyDeviceName = btnDeviceNameEditText.Text;
+                    };
+                    Action<Shared.View> actionEdit = async (obj) =>
+                     {
+                         try
+                         {
+                             Application.RunOnMainThread(() => { CommonPage.Loading.Start("Loading..."); });
+                             var doorLockDeviceList = new List<CommonDevice> { };
+                             doorLockDeviceList.Add(doorLock);
+                             var result = await Common.LocalDevice.Current.ReMacName(doorLockDeviceList, btnDeviceNameEditText.Text);
+                             if (result)
+                             {
+                                 IsModifyName = false;
+                             }
+                             else
+                             {
+                                 IsModifyName = true;
+                             }
+                         }
+                         catch { }
+                         finally
+                         {
+                             Application.RunOnMainThread(() =>
+                             {
+                                 CommonPage.Loading.Hide();
+                             });
+                         }
+                     };
+                    btnDeviceNameEditText.EditorEnterAction += actionEdit;
 
                     btnLine.Visible = true;
                     btnLine.Y = Application.GetRealHeight(303);
@@ -380,43 +382,53 @@
             }
 
             //淇濆瓨
-            //var btnFinifh = new Button()
-            //{
-            //    Width = Application.GetRealWidth(907),
-            //    Height = Application.GetRealHeight(127),
-            //    Y = Application.GetRealHeight(1472),
-            //    Gravity = Gravity.CenterHorizontal,
-            //    Radius = (uint)Application.GetRealHeight(127) / 2,
-            //    TextID = R.MyInternationalizationString.Save,
-            //    BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack,
-            //    TextColor = Shared.Common.ZigbeeColor.Current.XMWhite,
-            //    TextSize = 16,
-            //};
-            //this.midFrameLayout.AddChidren(btnFinifh);
-            //btnFinish.MouseUpEventHandler += (sender, e) =>
-            //{
-            //    System.Threading.Tasks.Task.Run(async () =>
-            //    {
-            //        Application.RunOnMainThread(() => { CommonPage.Loading.Start("Loading..."); });
-            //        try
-            //        {
-            //            if (IsModifyName)
-            //            {
-            //                var doorLockDeviceList = new List<CommonDevice> { };
-            //                doorLockDeviceList.Add(doorLock);
-            //                await Common.LocalDevice.Current.ReMacName(doorLockDeviceList, modifyDeviceName);
-            //            }
-            //        }
-            //        catch { }
-            //        finally
-            //        {
-            //            Application.RunOnMainThread(() =>
-            //            {
-            //                CommonPage.Loading.Hide();
-            //            });
-            //        }
-            //    });
-            //};
+            var btnFinifh = new Button()
+            {
+                Width = Application.GetRealWidth(907),
+                Height = Application.GetRealHeight(127),
+                Y = Application.GetRealHeight(1472),
+                Gravity = Gravity.CenterHorizontal,
+                Radius = (uint)Application.GetRealHeight(127) / 2,
+                TextID = R.MyInternationalizationString.Save,
+                BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack,
+                TextColor = Shared.Common.ZigbeeColor.Current.XMWhite,
+                TextSize = 16,
+            };
+            this.midFrameLayout.AddChidren(btnFinifh);
+            btnFinifh.MouseUpEventHandler += (sender, e) =>
+            {
+                System.Threading.Tasks.Task.Run(async () =>
+                {
+                    Application.RunOnMainThread(() => { CommonPage.Loading.Start("Loading..."); });
+                    try
+                    {
+                        if (IsModifyName)
+                        {
+                            var doorLockDeviceList = new List<CommonDevice> { };
+                            doorLockDeviceList.Add(doorLock);
+                            var result = await Common.LocalDevice.Current.ReMacName(doorLockDeviceList, modifyDeviceName);
+                            if (result)
+                            {
+                                if (devicNameAction != null)
+                                {
+                                    devicNameAction(modifyDeviceName);
+                                }
+                            }
+                        }
+                    }
+                    catch (Exception ex)
+                    {
+                        var mess = ex.Message;
+                    }
+                    finally
+                    {
+                        Application.RunOnMainThread(() =>
+                        {
+                            CommonPage.Loading.Hide();
+                        });
+                    }
+                });
+            };
         }
 
         #region 鈼� 鎺ュ彛瀹炵幇__________________________
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/FunctionSettingSub.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/FunctionSettingSub.cs
index 39efc60..03a5d1a 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/FunctionSettingSub.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/FunctionSettingSub.cs
@@ -20,6 +20,9 @@
 
         #region 鈼� 鍙橀噺鐢虫槑__________________________
         ZigBee.Device.DoorLock doorLock;
+        public Action<string> devicNameAction;
+        bool IsModifyName = true;
+        string modifyDeviceName = "";
         #endregion
 
         /// <summary>
@@ -142,12 +145,54 @@
                 if (i == 0)
                 {
                     bottomRowLayout.Y = Application.GetRealHeight(220);
-                    btnName.Text = Language.StringByID(R.MyInternationalizationString.DeviceRemarkXm) + ":";
+                    btnName.Text = Language.StringByID(R.MyInternationalizationString.DeviceRemarkXm);
                     btnNextFrameLayout.Width = btnNext.Width = Application.GetRealWidth(789 - 58);
                     btnNextFrameLayout.X = Application.GetRealWidth(233);
-                    btnNext.TextAlignment = TextAlignment.CenterLeft;
-                    btnNext.TextColor = Shared.Common.ZigbeeColor.Current.XMGray3;
                     btnNext.Text = doorLock.DeviceName;
+                    var btnDeviceNameEditText = new EditText()
+                    {
+                        X = Application.GetRealWidth(46),
+                        Width = Application.GetRealWidth(731),
+                        Height = Application.GetRealHeight(58),
+                        TextColor = ZigbeeColor.Current.XMGray3,
+                        PlaceholderTextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor2,
+                        TextAlignment = TextAlignment.CenterLeft,
+                        Text = string.IsNullOrEmpty(doorLock.DeviceName) ? Language.StringByID(R.MyInternationalizationString.UNKnown) : doorLock.DeviceName,
+                    };
+                    btnNextFrameLayout.AddChidren(btnDeviceNameEditText);
+
+                    btnDeviceNameEditText.TextChangeEventHandler += (sender, e) =>
+                    {
+                        modifyDeviceName = btnDeviceNameEditText.Text;
+                    };
+                    Action<Shared.View> actionEdit = async (obj) =>
+                    {
+                        try
+                        {
+                            Application.RunOnMainThread(() => { CommonPage.Loading.Start("Loading..."); });
+                            var doorLockDeviceList = new List<CommonDevice> { };
+                            doorLockDeviceList.Add(doorLock);
+                            var result = await Common.LocalDevice.Current.ReMacName(doorLockDeviceList, btnDeviceNameEditText.Text);
+                            if (result)
+                            {
+                                IsModifyName = false;
+                            }
+                            else
+                            {
+                                IsModifyName = true;
+                            }
+                        }
+                        catch { }
+                        finally
+                        {
+                            Application.RunOnMainThread(() =>
+                            {
+                                CommonPage.Loading.Hide();
+                            });
+                        }
+                    };
+                    btnDeviceNameEditText.EditorEnterAction += actionEdit;
+
                     btnLine.Visible = true;
                     btnLine.Y = Application.GetRealHeight(303);
                 }
@@ -248,6 +293,52 @@
                 btnNextFrameLayout.MouseDownEventHandler += eHandler;
                 #endregion
             }
+
+            //淇濆瓨
+            var btnFinifh = new Button()
+            {
+                Width = Application.GetRealWidth(907),
+                Height = Application.GetRealHeight(127),
+                Y = Application.GetRealHeight(1472),
+                Gravity = Gravity.CenterHorizontal,
+                Radius = (uint)Application.GetRealHeight(127) / 2,
+                TextID = R.MyInternationalizationString.Save,
+                BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack,
+                TextColor = Shared.Common.ZigbeeColor.Current.XMWhite,
+                TextSize = 16,
+            };
+            this.midFrameLayout.AddChidren(btnFinifh);
+            btnFinifh.MouseUpEventHandler += (sender, e) =>
+            {
+                System.Threading.Tasks.Task.Run(async () =>
+                {
+                    Application.RunOnMainThread(() => { CommonPage.Loading.Start("Loading..."); });
+                    try
+                    {
+                        if (IsModifyName)
+                        {
+                            var doorLockDeviceList = new List<CommonDevice> { };
+                            doorLockDeviceList.Add(doorLock);
+                            var result = await Common.LocalDevice.Current.ReMacName(doorLockDeviceList, modifyDeviceName);
+                            if (result)
+                            {
+                                if (devicNameAction != null)
+                                {
+                                    devicNameAction(modifyDeviceName);
+                                }
+                            }
+                        }
+                    }
+                    catch { }
+                    finally
+                    {
+                        Application.RunOnMainThread(() =>
+                        {
+                            CommonPage.Loading.Hide();
+                        });
+                    }
+                });
+            };
         }
 
         #region 鈼� 鎺ュ彛瀹炵幇__________________________
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MasterManagementPage.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MasterManagementPage.cs
index 4c30a38..1d333f0 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MasterManagementPage.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MasterManagementPage.cs
@@ -21,27 +21,6 @@
         Shared.Phone.UserCenter.MemberInfoRes accountObj;
         #endregion
 
-        void ReadDoorLockUserInfo()
-        {
-            System.Threading.Tasks.Task.Run(async () =>
-            {
-                Application.RunOnMainThread(() => { CommonPage.Loading.Start("Loading..."); });
-                try
-                {
-                    //await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetLocaDoorLocklist(doorLock, accountObj);
-                }
-                catch { }
-                finally
-                {
-                    Application.RunOnMainThread(() =>
-                    {
-                        MidFrameLayoutContent();
-                        CommonPage.Loading.Hide();
-                    });
-                }
-            });
-        }
-
         /// <summary>
         /// UI鏄剧ず 
         /// </summary>
@@ -65,15 +44,21 @@
             this.btnBack.MouseUpEventHandler += eHandlerBack;
             this.btnBackFrameLayout.MouseUpEventHandler += eHandlerBack;
             this.MidFrameLayout(this);
-            ReadDoorLockUserInfo();
+            MidFrameLayoutContent();
         }
 
         public void MidFrameLayoutContent()
         {
-            var bodyView = new VerticalScrolViewLayout()
+            var bodyView = new VerticalRefreshLayout()
             {
             };
             this.midFrameLayout.AddChidren(bodyView);
+            bodyView.BeginHeaderRefreshingAction += async () =>
+             {
+                 bodyView.BeginHeaderRefreshing();
+                 await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockAllAcountUserlist(doorLock);
+                 bodyView.EndHeaderRefreshing();
+             };
 
             for (int i = 0; i < 2; i++)
             {
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MemberFrozenPage.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MemberFrozenPage.cs
index c5f73f9..3d801e6 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MemberFrozenPage.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MemberFrozenPage.cs
@@ -21,8 +21,29 @@
         #region 鈼� 鍙橀噺鐢虫槑__________________________
         ZigBee.Device.DoorLock doorLock;
         Shared.Phone.UserCenter.MemberInfoRes curAccountObj;
-        VerticalScrolViewLayout bodyView;
+        VerticalRefreshLayout bodyView;
         #endregion
+
+        void ReadDoorLockUserInfo()
+        {
+            System.Threading.Tasks.Task.Run(async () =>
+            {
+                try
+                {
+                    var list = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockAllAcountUserlist(doorLock);
+                    var result = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockOperateAccess(doorLock, curAccountObj.SubAccountDistributedMark);
+                    var result1 = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockUnlockAccess(doorLock, curAccountObj.SubAccountDistributedMark);
+                }
+                catch { }
+                finally
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        MidRefresh();
+                    });
+                }
+            });
+        }
 
         /// <summary>
         /// UI鏄剧ず 
@@ -48,12 +69,17 @@
             this.btnBackFrameLayout.MouseUpEventHandler += eHandlerBack;
             this.MidFrameLayout(this);
 
-            bodyView = new VerticalScrolViewLayout()
+            bodyView = new VerticalRefreshLayout()
             {
             };
             this.midFrameLayout.AddChidren(bodyView);
-
-            ReadDoorLockUserInfo();
+            bodyView.BeginHeaderRefreshingAction += () =>
+            {
+                bodyView.BeginHeaderRefreshing();
+                ReadDoorLockUserInfo();
+                bodyView.EndHeaderRefreshing();
+            };
+            MidRefresh();
         }
 
         public async void MidRefresh()
@@ -746,27 +772,6 @@
                     MidRefresh();
                 }
             };
-        }
-
-        void ReadDoorLockUserInfo()
-        {
-            System.Threading.Tasks.Task.Run(async () =>
-            {
-                Application.RunOnMainThread(() => { CommonPage.Loading.Start("Loading..."); });
-                try
-                {
-                    //await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetLocaDoorLocklist(doorLock, curAccountObj);
-                }
-                catch { }
-                finally
-                {
-                    Application.RunOnMainThread(() =>
-                    {
-                        MidRefresh();
-                        CommonPage.Loading.Hide();
-                    });
-                }
-            });
         }
 
         #region 鈼� 鎺ュ彛瀹炵幇__________________________
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MemberManagement.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MemberManagement.cs
index f0de9bc..66cccba 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MemberManagement.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MemberManagement.cs
@@ -19,6 +19,21 @@
 
         #endregion
 
+        void ReadDoorLockUserInfo()
+        {
+            System.Threading.Tasks.Task.Run(async () =>
+            {
+                try
+                {
+                    var list = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockAllAcountUserlist(doorLock);
+                }
+                catch { }
+                finally
+                {
+                }
+            });
+        }
+
         /// <summary>
         /// UI鏄剧ず 
         /// </summary>
@@ -39,11 +54,16 @@
 
         public void MidFrameLayoutContent()
         {
-            var bodyView = new VerticalScrolViewLayout()
+            var bodyView = new VerticalRefreshLayout()
             {
             };
             this.midFrameLayout.AddChidren(bodyView);
-
+            bodyView.BeginHeaderRefreshingAction += () =>
+            {
+                bodyView.BeginHeaderRefreshing();
+                ReadDoorLockUserInfo();
+                bodyView.EndHeaderRefreshing();
+            };
             for (int i = 0; i < 3; i++)
             {
                 var RowView = new FrameLayout()
@@ -61,7 +81,6 @@
                     TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
                     TextAlignment = TextAlignment.CenterLeft,
                     TextSize = 14,
-                    Text = "Krafty",
                 };
                 RowView.AddChidren(btnMemberName);
 
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/TemporaryPassword.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/TemporaryPassword.cs
index 22e94a7..0987e21 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/TemporaryPassword.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/TemporaryPassword.cs
@@ -428,6 +428,15 @@
                     {
                         if (curIndex == 0)
                         {
+                            if (string.IsNullOrEmpty(doorLock.LocalTempPassword))
+                            {
+                                //璇�"鐐瑰嚮鐢熸垚"涓存椂瀵嗙爜锛�
+                                Application.RunOnMainThread(() =>
+                                {
+                                    new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.SetTempPasswordTip1), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnFinifh);
+                                });
+                                return;
+                            }
                             var tempPage = new Shared.Phone.UserCenter.DoorLock.TimeSettignPage(doorLock, "ValidTime");
                             Shared.Phone.UserView.HomePage.Instance.AddChidren(tempPage);
                             Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
@@ -439,6 +448,15 @@
                         }
                         if (curIndex == 1)
                         {
+                            if (string.IsNullOrEmpty(doorLock.LocalTempPassword))
+                            {
+                                //璇�"鐐瑰嚮鐢熸垚"涓存椂瀵嗙爜锛�
+                                Application.RunOnMainThread(() =>
+                                {
+                                    new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.SetTempPasswordTip1), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnFinifh);
+                                });
+                                return;
+                            }
                             var tempPage = new Shared.Phone.UserCenter.DoorLock.TimeSettignPage(doorLock, "InValidTime");
                             Shared.Phone.UserView.HomePage.Instance.AddChidren(tempPage);
                             Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/TimeSettignPage.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/TimeSettignPage.cs
index 496c79a..b65da79 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/TimeSettignPage.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/TimeSettignPage.cs
@@ -29,6 +29,7 @@
                                 CurentDoorLockTime = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetLocalTime(dataReport.AttriButeData);
                                 Application.RunOnMainThread(() =>
                                 {
+                                    waitGetDoorLockTime = DateTime.MaxValue;
                                     textDisplayDate.Text = CurentDoorLockTime.Year + Language.StringByID(R.MyInternationalizationString.Year) + CurentDoorLockTime.Month + Language.StringByID(R.MyInternationalizationString.Month) + CurentDoorLockTime.Day + Language.StringByID(R.MyInternationalizationString.Day);
                                     if (CurentDoorLockTime.Minute < 10)
                                     {
@@ -38,6 +39,7 @@
                                     {
                                         textDisplayTime.Text = CurentDoorLockTime.Hour + ":" + CurentDoorLockTime.Minute;
                                     }
+                                    CommonPage.Loading.Hide();
                                 });
                             }
                         }
@@ -71,6 +73,7 @@
         int curMin = 0;
         int curSec = 0;
         public Action timeSetAction;
+        DateTime waitGetDoorLockTime = DateTime.MaxValue;
         #endregion
 
         /// <summary>
@@ -114,12 +117,23 @@
         {
             if (setTimeType == "DoorLockTime")
             {
+                CommonPage.Loading.Start("");
                 // 鍙湁閲嶆柊鍚姩鏃朵細鎱紝鐒跺悗鍏朵粬鏃跺埢閮芥槸鏈夊�肩殑
                 new System.Threading.Thread(() =>
                 {
                     while (this.Parent != null)
                     {
+                        if (DateTime.Now > waitGetDoorLockTime)
+                        {
+                            Application.RunOnMainThread(() =>
+                            {
+                                new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(CommonPage.Instance);
+                                CommonPage.Loading.Hide();
+                            });
+                        }
                         //璇婚棬閿佹椂闂�
+                        //绛夊緟10绉掞紝娌℃湁鏀跺埌鎻愮ず瓒呮椂閫�鍑�
+                        waitGetDoorLockTime = DateTime.Now.AddSeconds(+5);
                         doorLock.ReadAttri(ZigBee.Device.Cluster_ID.DoorLock, ZigBee.Device.AttriButeId.DoorLock);
                         System.Threading.Thread.Sleep(5 * 1000);
                     }
@@ -187,11 +201,6 @@
                 };
                 MidTopFrameLayout.AddChidren(btnLine);
 
-                if (setTimeType != "DoorLockTime")
-                {
-                    textDisplayDateFrameLayout.Width = 0;
-                }
-
                 if (i == 0)
                 {
                     btnDateTime.Y = textDisplayDateFrameLayout.Y = btnNextFrameLayout.Y = Application.GetRealHeight(50);
@@ -205,11 +214,18 @@
                         Text = "_" + Language.StringByID(R.MyInternationalizationString.Year) + "_" + Language.StringByID(R.MyInternationalizationString.Month) + "_" + Language.StringByID(R.MyInternationalizationString.Day),
                     };
                     textDisplayDateFrameLayout.AddChidren(textDisplayDate);
-                    //textDisplayDateFrameLayout.Y = btnNextFrameLayout.Y = btnDateTime.Y;
 
                     if (setTimeType != "DoorLockTime")
                     {
                         btnDateTime.Text = Language.StringByID(R.MyInternationalizationString.Date);
+                        if (setTimeType == "ValidTime")
+                        {
+                            textDisplayDate.Text = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateMonth + Language.StringByID(R.MyInternationalizationString.Month) + Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateDay + Language.StringByID(R.MyInternationalizationString.Day);
+                        }
+                        else if (setTimeType == "InValidTime")
+                        {
+                            textDisplayDate.Text = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateMonth + Language.StringByID(R.MyInternationalizationString.Month) + Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateDay + Language.StringByID(R.MyInternationalizationString.Day);
+                        }
                     }
                     else
                     {
@@ -229,11 +245,32 @@
                         Text = "00:00",
                     };
                     textDisplayDateFrameLayout.AddChidren(textDisplayTime);
-                    //textDisplayDateFrameLayout.Y = btnNextFrameLayout.Y = btnDateTime.Y;
 
                     if (setTimeType != "DoorLockTime")
                     {
                         btnDateTime.Text = Language.StringByID(R.MyInternationalizationString.Time);
+                        if (setTimeType == "ValidTime")
+                        {
+                            if (Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateMinute < 10)
+                            {
+                                textDisplayTime.Text = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateHour + ":" + "0" + Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateMinute;
+                            }
+                            else
+                            {
+                                textDisplayTime.Text = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateHour + ":" + Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateMinute;
+                            }
+                        }
+                        else if (setTimeType == "InValidTime")
+                        {
+                            if (Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateMinute < 10)
+                            {
+                                textDisplayTime.Text = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateHour + ":" + "0" + Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateMinute;
+                            }
+                            else
+                            {
+                                textDisplayTime.Text = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateHour + ":" + Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateMinute;
+                            }
+                        }
                     }
                     else
                     {
@@ -282,7 +319,7 @@
                         {
                             mList2.Add(m.ToString());
                         }
-                        for (int d = 1; d < days; d++)
+                        for (int d = 1; d < days + 1; d++)
                         {
                             mList3.Add(d.ToString());
                         }
@@ -336,6 +373,7 @@
                                     timeSetAction();
                                 }
                                 this.shadowRadiusFrameLayout.RemoveFromParent();
+                                MidFrameLayoutContent();
                             };
                         }
                         else
@@ -438,7 +476,6 @@
                                 mList2.Add(m.ToString());
                             }
                         }
-                        // mUIPickerView.setNPicker(mList1, mList2, new List<string> { });
                         mUIPickerView.setNPicker(mList1, mList2, null);
                         mUIPickerView.setCurrentItems(dtNow.Hour, dtNow.Minute, 0);
                         if (CurentDoorLockTime != null)
@@ -508,6 +545,7 @@
                                     timeSetAction();
                                 }
                                 this.shadowRadiusFrameLayout.RemoveFromParent();
+                                MidFrameLayoutContent();
                             };
                         }
                     }
@@ -562,10 +600,14 @@
                 this.shadowRadiusFrameLayout.RemoveFromParent();
             };
 
-            //绛夊緟浠庨棬閿佷笂闈㈠姞杞藉嚭鐨勬椂闂�
-            //System.Threading.Thread.Sleep(1500);
-            //CommonPage.Loading.Hide();
-
+            if (setTimeType == "DoorLockTime")
+            {
+                if (CurentDoorLockTime != null && CurentDoorLockTime.Year != 1)
+                {
+                    waitGetDoorLockTime = DateTime.MaxValue;
+                    CommonPage.Loading.Hide();
+                }
+            }
         }
 
         #region 鈼� 鎺ュ彛瀹炵幇__________________________
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UnLockMethod.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UnLockMethod.cs
index d9ad3be..b5c8250 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UnLockMethod.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UnLockMethod.cs
@@ -47,20 +47,20 @@
 
         #region 鈼� 鍙橀噺鐢虫槑__________________________
         ZigBee.Device.DoorLock doorLock;
-        VerticalScrolViewLayout bodyView;
+        VerticalRefreshLayout bodyView;
         Button currentMethod;// 褰撳墠閫夋嫨鐨勬柟寮�
         Shared.Phone.UserCenter.MemberInfoRes curAccountObj;
         Button entryStatusPic;
         Button btnPicTip;
         Button btnPicTip1;
         bool isSecondDel;
+        FrameLayout blankFrameLayout;
         #endregion
 
         void ReadDoorLockUserInfo()
         {
             System.Threading.Tasks.Task.Run(async () =>
             {
-                Application.RunOnMainThread(() => { CommonPage.Loading.Start("Loading..."); });
                 try
                 {
                     var list = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockAllAcountUserlist(doorLock);
@@ -78,7 +78,8 @@
                 {
                     Application.RunOnMainThread(() =>
                     {
-                        RefreshList();
+                        // 绫诲瀷鍖哄垎 
+                        TypeRefresh();
                         CommonPage.Loading.Hide();
                     });
                 }
@@ -90,6 +91,7 @@
         /// </summary>
         public void Show()
         {
+            doorLock.currentUserDisplayMethod = "";
             this.TopFrameLayout(this, Language.StringByID(R.MyInternationalizationString.LockMethod));
             this.btnTitleLine.Visible = false;
             EventHandler<MouseEventArgs> eHandlerBack = (sender, e) =>
@@ -141,11 +143,22 @@
             {
                 btnAddFrameLayout.Width = Application.GetRealWidth(72);
             }
-            MidFrameLayoutContent();
+
+            if (doorLock.IsFailedToGetDoorLockInfo[curAccountObj.SubAccountDistributedMark] == true)
+            {
+                CommonPage.Loading.Start("Loading...");
+                ReadDoorLockUserInfo();
+            }
+            else
+            {
+                MidFrameLayoutContent();
+                RefreshList();
+            }
         }
         //涓儴甯冨眬
         void MidFrameLayoutContent()
         {
+            #region 寮�閿佹柟寮廢I
             var midTopFrameLayout = new FrameLayout()
             {
                 Height = Application.GetRealHeight(115),
@@ -160,11 +173,31 @@
                 Y = Application.GetRealHeight(35),
                 X = Application.GetRealWidth(812 - 100),
                 TextAlignment = TextAlignment.CenterRight,
-                Text = Language.StringByID(R.MyInternationalizationString.AllMethod),
                 TextColor = Shared.Common.ZigbeeColor.Current.XMTopTitleText,
                 TextSize = 12,
             };
             midTopFrameLayout.AddChidren(btnAllMethod);
+            // 绫诲瀷鍖哄垎 
+            if (doorLock.currentUserDisplayMethod == Language.StringByID(R.MyInternationalizationString.AllMethod))
+            {
+                btnAllMethod.Text = Language.StringByID(R.MyInternationalizationString.AllMethod);
+            }
+            else if (doorLock.currentUserDisplayMethod == Language.StringByID(R.MyInternationalizationString.PasswordUnlock))
+            {
+                btnAllMethod.Text = Language.StringByID(R.MyInternationalizationString.PasswordUnlock);
+            }
+            else if (doorLock.currentUserDisplayMethod == Language.StringByID(R.MyInternationalizationString.FingerprintUnlock))
+            {
+                btnAllMethod.Text = Language.StringByID(R.MyInternationalizationString.FingerprintUnlock);
+            }
+            else if (doorLock.currentUserDisplayMethod == Language.StringByID(R.MyInternationalizationString.ProximithCardUnlock))
+            {
+                btnAllMethod.Text = Language.StringByID(R.MyInternationalizationString.ProximithCardUnlock);
+            }
+            else
+            {
+                btnAllMethod.Text = Language.StringByID(R.MyInternationalizationString.AllMethod);
+            }
 
             var btnNext = new Button()
             {
@@ -177,41 +210,10 @@
             };
             midTopFrameLayout.AddChidren(btnNext);
 
-            entryStatusPic = new Button
+            btnNext.MouseUpEventHandler += (sender, e) =>
             {
-                X = Application.GetRealWidth(164),
-                Y = Application.GetRealHeight(492),
-                Height = Application.GetRealHeight(435),
-                Width = Application.GetRealWidth(757),
-                Visible = false,
-                UnSelectedImagePath = "DoorLock/UnLockBlankPic.png",
+                SideslipFramelayout();
             };
-            this.midFrameLayout.AddChidren(entryStatusPic);
-
-            btnPicTip = new Button
-            {
-                X = Application.GetRealWidth(397),
-                Y = Application.GetRealHeight(1143 - 184),
-                Height = Application.GetRealHeight(98 / 2),
-                Text = Language.StringByID(R.MyInternationalizationString.NoPasswordInformation),
-                TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
-                Gravity = Gravity.CenterHorizontal,
-                Visible = false,
-            };
-            this.midFrameLayout.AddChidren(btnPicTip);
-
-            btnPicTip1 = new Button
-            {
-                X = Application.GetRealWidth(397),
-                Y = btnPicTip.Bottom,
-                Height = Application.GetRealHeight(98 / 2),
-                Text = Language.StringByID(R.MyInternationalizationString.NoPasswordInformation1),
-                TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
-                Gravity = Gravity.CenterHorizontal,
-                Visible = false,
-            };
-            this.midFrameLayout.AddChidren(btnPicTip1);
-
             var btnLine = new Button
             {
                 Y = midTopFrameLayout.Bottom,
@@ -219,26 +221,63 @@
                 BackgroundColor = Shared.Common.ZigbeeColor.Current.XMTitleLine,
             };
             this.midFrameLayout.AddChidren(btnLine);
+            #endregion
 
-            bodyView = new VerticalScrolViewLayout()
+            bodyView = new VerticalRefreshLayout()
             {
                 Y = btnLine.Bottom,
-                BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite,
+                Height = Application.GetRealHeight(1921 - 184 - 116),
             };
             this.midFrameLayout.AddChidren(bodyView);
-
-            btnNext.MouseUpEventHandler += (sender, e) =>
+            bodyView.BeginHeaderRefreshingAction += () =>
             {
-                SideslipFramelayout();
-            };
-            if (doorLock.IsFailedToGetDoorLockInfo[curAccountObj.SubAccountDistributedMark] == true)
-            {
+                bodyView.BeginHeaderRefreshing();
                 ReadDoorLockUserInfo();
-            }
-            else
+                bodyView.EndHeaderRefreshing();
+            };
+            BlankPicUI();
+        }
+
+        void BlankPicUI()
+        {
+            blankFrameLayout = new FrameLayout
             {
-                RefreshList();
-            }
+            };
+            bodyView.AddChidren(blankFrameLayout);
+
+            entryStatusPic = new Button
+            {
+                X = Application.GetRealWidth(164),
+                Y = Application.GetRealHeight(377),
+                Height = Application.GetRealHeight(435),
+                Width = Application.GetRealHeight(757),
+                Visible = false,
+                UnSelectedImagePath = "DoorLock/UnLockBlankPic.png",
+            };
+            blankFrameLayout.AddChidren(entryStatusPic);
+
+            btnPicTip = new Button
+            {
+                X = Application.GetRealWidth(397),
+                Text = Language.StringByID(R.MyInternationalizationString.NoPasswordInformation),
+                TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
+                Gravity = Gravity.CenterHorizontal,
+                Visible = false,
+                Y = Application.GetRealHeight(844),
+            };
+            blankFrameLayout.AddChidren(btnPicTip);
+
+            btnPicTip1 = new Button
+            {
+                X = Application.GetRealWidth(397),
+                Y = btnPicTip.Bottom,
+                Text = Language.StringByID(R.MyInternationalizationString.NoPasswordInformation1),
+                TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
+                Gravity = Gravity.CenterHorizontal,
+                Visible = false,
+                BackgroundColor = 0xff00ff00,
+            };
+            blankFrameLayout.AddChidren(btnPicTip1);
         }
 
         /// <summary>
@@ -246,16 +285,12 @@
         /// </summary>
         /// <param name="gateway"></param>
         /// <param name="key"></param>
-        public void RefreshList()
+        public void RefreshList(int unlockMethod = -1)
         {
-            if (doorLock.IsFailedToGetDoorLockInfo[curAccountObj.SubAccountDistributedMark] == true)
-            {
-                new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
-                return;
-            }
             bodyView.RemoveAll();
+            this.midFrameLayout.RemoveAll();
+            MidFrameLayoutContent();
             var curAccountDoorLockUserList = new Dictionary<int, ZigBee.Device.DoorLock.LocaDoorLockObj>();
-
             foreach (var curUserId in doorLock.localDoorLockUserList.Keys)
             {
                 var curDoorLockUser = doorLock.localDoorLockUserList[curUserId];
@@ -275,306 +310,352 @@
                 entryStatusPic.Visible = true;
                 btnPicTip.Visible = true;
                 btnPicTip1.Visible = true;
+                blankFrameLayout.Visible = true;
+                entryStatusPic.Height = Application.GetRealHeight(435);
+                entryStatusPic.Width = Application.GetRealHeight(757);
+                btnPicTip.Height = Application.GetRealHeight(98 / 2);
+                btnPicTip1.Height = Application.GetRealHeight(98 / 2);
+                blankFrameLayout.Height = bodyView.Height;
             }
             else
             {
                 entryStatusPic.Visible = false;
                 btnPicTip.Visible = false;
                 btnPicTip1.Visible = false;
-            }
-            if (curAccountDoorLockUserList.Keys.Count == 0)
-            {
-                return;
-            }
-            bodyView.Height = curAccountDoorLockUserList.Keys.Count * Application.GetRealHeight(127 + 23);
-            int i = 0;
-            foreach (var curUserId in curAccountDoorLockUserList.Keys)
-            {
-                var curDoorLockUser = curAccountDoorLockUserList[curUserId];
-                #region UI
-                var rowFrameLayout = new RowLayout()
+                blankFrameLayout.Visible = false;
+                entryStatusPic.Height = Application.GetRealHeight(0);
+                entryStatusPic.Width = Application.GetRealHeight(0);
+                btnPicTip.Height = Application.GetRealHeight(0);
+                btnPicTip1.Height = Application.GetRealHeight(0);
+                blankFrameLayout.Height = Application.GetRealHeight(0);
+                var frameLayoutRow = new FrameLayout()
                 {
-                    Height = Application.GetRealHeight(127 + 23),
-                    X = Application.GetRealWidth(58),
-                    Width = Application.GetRealWidth(965),
-                    LineColor = Shared.Common.ZigbeeColor.Current.XMRowLine,
+                    Height = Application.GetMinRealAverage(0),
                     BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite,
                 };
-                bodyView.AddChidren(rowFrameLayout);
+                bodyView.AddChidren(frameLayoutRow);
+                int i = 0;
+                foreach (var curUserId in curAccountDoorLockUserList.Keys)
+                {
+                    var curDoorLockUser = curAccountDoorLockUserList[curUserId];
+                    switch (unlockMethod)
+                    {
+                        case 0:
+                            if (curDoorLockUser.UnlockType != unlockMethod)
+                            {
+                                continue;
+                            }
+                            break;
+                        case 3:
+                            if (curDoorLockUser.UnlockType != unlockMethod)
+                            {
+                                continue;
+                            }
+                            break;
+                        case 15:
+                            if (curDoorLockUser.UnlockType != unlockMethod)
+                            {
+                                continue;
+                            }
+                            break;
+                        default:
+                            break;
+                    }
 
-                var btnPicFrameLayout = new FrameLayout()
-                {
-                    Width = Application.GetRealWidth(81),
-                    Height = Application.GetRealHeight(81),
-                    X = Application.GetRealWidth(40),
-                    Y = Application.GetRealHeight(49),
-                };
-                rowFrameLayout.AddChidren(btnPicFrameLayout);
+                    #region UI
+                    var rowFrameLayout = new RowLayout()
+                    {
+                        Height = Application.GetRealHeight(127 + 23),
+                        X = Application.GetRealWidth(58),
+                        Y = i * Application.GetRealHeight(150),
+                        Width = Application.GetRealWidth(965),
+                        LineColor = Shared.Common.ZigbeeColor.Current.XMRowLine,
+                        BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite,
+                    };
+                    frameLayoutRow.AddChidren(rowFrameLayout);
 
-                var btnPic = new Button()
-                {
-                    Width = Application.GetRealWidth(84),
-                    Height = Application.GetRealHeight(84),
-                    UnSelectedImagePath = "DoorLock/DoorLockUserPic.png",
-                };
-                btnPicFrameLayout.AddChidren(btnPic);
+                    var btnPicFrameLayout = new FrameLayout()
+                    {
+                        Width = Application.GetRealWidth(81),
+                        Height = Application.GetRealHeight(81),
+                        X = Application.GetRealWidth(40),
+                        Y = Application.GetRealHeight(49),
+                    };
+                    rowFrameLayout.AddChidren(btnPicFrameLayout);
 
-                var btnDoorlockUser = new EditText()
-                {
-                    Width = Application.GetRealWidth(1080 - 173),
-                    Height = Application.GetRealHeight(60),
-                    X = Application.GetRealWidth(173),
-                    Y = Application.GetRealHeight(35),
-                    TextSize = 14,
-                    PlaceholderTextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
-                    TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
-                    TextAlignment = TextAlignment.CenterLeft,
-                };
-                rowFrameLayout.AddChidren(btnDoorlockUser);
+                    var btnPic = new Button()
+                    {
+                        Width = Application.GetRealWidth(84),
+                        Height = Application.GetRealHeight(84),
+                        UnSelectedImagePath = "DoorLock/DoorLockUserPic.png",
+                    };
+                    btnPicFrameLayout.AddChidren(btnPic);
 
-                var btnMember = new Button()
-                {
-                    Width = Application.GetRealWidth(1080 - 173),
-                    Height = Application.GetRealHeight(49),
-                    X = Application.GetRealWidth(173),
-                    Y = Application.GetRealHeight(95),
-                    TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
-                    TextSize = 14,
-                    TextAlignment = TextAlignment.CenterLeft,
-                };
-                rowFrameLayout.AddChidren(btnMember);
+                    var btnDoorlockUser = new EditText()
+                    {
+                        Width = Application.GetRealWidth(1080 - 173),
+                        Height = Application.GetRealHeight(60),
+                        X = Application.GetRealWidth(173),
+                        Y = Application.GetRealHeight(35),
+                        TextSize = 14,
+                        PlaceholderTextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
+                        TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
+                        TextAlignment = TextAlignment.CenterLeft,
+                    };
+                    rowFrameLayout.AddChidren(btnDoorlockUser);
 
-                var btnDel = new Button()
-                {
-                    Width = Application.GetRealWidth(1080 - 173),
-                    Height = Application.GetRealHeight(49),
-                    X = Application.GetRealWidth(173),
-                    Y = Application.GetRealHeight(95),
-                    Text = Language.StringByID(R.MyInternationalizationString.DelBindDevice),
-                    TextColor = Shared.Common.ZigbeeColor.Current.XMWhite,
-                    TextSize = 12,
-                    TextAlignment = TextAlignment.Center,
-                    BackgroundColor = Shared.Common.ZigbeeColor.Current.XMDel,
-                };
-                rowFrameLayout.AddRightView(btnDel);
-                #endregion 
-                #region 鏁版嵁澶勭悊
-                int currentIndex = i;
-                if (currentIndex == curAccountDoorLockUserList.Keys.Count - 1)
-                {
-                    rowFrameLayout.LineColor = Shared.Common.ZigbeeColor.Current.XMWhite;
-                }
+                    var btnMember = new Button()
+                    {
+                        Width = Application.GetRealWidth(1080 - 173),
+                        Height = Application.GetRealHeight(49),
+                        X = Application.GetRealWidth(173),
+                        Y = Application.GetRealHeight(95),
+                        TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
+                        TextSize = 14,
+                        TextAlignment = TextAlignment.CenterLeft,
+                    };
+                    rowFrameLayout.AddChidren(btnMember);
 
-                switch (curDoorLockUser.UnlockType)
-                {
-                    case 0:
-                        if (curDoorLockUser.UserName != "" && curDoorLockUser.UserName != null)
-                        {
-                            btnDoorlockUser.Text = curDoorLockUser.UserName;
-                        }
-                        else
-                        {
-                            btnDoorlockUser.Text = Language.StringByID(R.MyInternationalizationString.Password) + "ID" + curDoorLockUser.UserID;
-                        }
-                        break;
-                    case 3:
-                        if (curDoorLockUser.UserName != "" && curDoorLockUser.UserName != null)
-                        {
-                            btnDoorlockUser.Text = curDoorLockUser.UserName;
-                        }
-                        else
-                        {
-                            btnDoorlockUser.Text = Language.StringByID(R.MyInternationalizationString.IcCard) + "ID" + curDoorLockUser.UserID;
-                        }
-                        break;
-                    case 15:
-                        if (curDoorLockUser.UserName != "" && curDoorLockUser.UserName != null)
-                        {
-                            btnDoorlockUser.Text = curDoorLockUser.UserName;
-                        }
-                        else
-                        {
-                            btnDoorlockUser.Text = Language.StringByID(R.MyInternationalizationString.Fingerprint) + "ID" + +curDoorLockUser.UserID;
-                        }
-                        break;
-                }
+                    var btnDel = new Button()
+                    {
+                        Width = Application.GetRealWidth(184),
+                        Text = Language.StringByID(R.MyInternationalizationString.DelBindDevice),
+                        TextColor = Shared.Common.ZigbeeColor.Current.XMWhite,
+                        TextSize = 12,
+                        TextAlignment = TextAlignment.Center,
+                        BackgroundColor = Shared.Common.ZigbeeColor.Current.XMDel,
+                    };
+                    rowFrameLayout.AddRightView(btnDel);
+                    #endregion
 
-                if (curAccountObj.UserName == "" || curAccountObj.UserName == null)
-                {
-                    btnMember.Text = curAccountObj.Account;
-                }
-                else
-                {
-                    btnMember.Text = curAccountObj.UserName;
-                }
+                    #region 鏁版嵁澶勭悊
+                    int currentIndex = i;
+                    if (currentIndex == curAccountDoorLockUserList.Keys.Count - 1)
+                    {
+                        rowFrameLayout.LineColor = Shared.Common.ZigbeeColor.Current.XMWhite;
+                    }
 
-                Action<Shared.View> action = async (obj) =>
-                 {
-                     var refreshDoorLockData = new ZigBee.Device.DoorLock.RefreshDoorLockData();
-                     if (UserCenterResourse.UserInfo.AuthorityNo != 1)
+                    switch (curDoorLockUser.UnlockType)
+                    {
+                        case 0:
+                            if (curDoorLockUser.UserName != "" && curDoorLockUser.UserName != null)
+                            {
+                                btnDoorlockUser.Text = curDoorLockUser.UserName;
+                            }
+                            else
+                            {
+                                btnDoorlockUser.Text = Language.StringByID(R.MyInternationalizationString.Password) + "ID" + curDoorLockUser.UserID;
+                            }
+                            break;
+                        case 3:
+                            if (curDoorLockUser.UserName != "" && curDoorLockUser.UserName != null)
+                            {
+                                btnDoorlockUser.Text = curDoorLockUser.UserName;
+                            }
+                            else
+                            {
+                                btnDoorlockUser.Text = Language.StringByID(R.MyInternationalizationString.IcCard) + "ID" + curDoorLockUser.UserID;
+                            }
+                            break;
+                        case 15:
+                            if (curDoorLockUser.UserName != "" && curDoorLockUser.UserName != null)
+                            {
+                                btnDoorlockUser.Text = curDoorLockUser.UserName;
+                            }
+                            else
+                            {
+                                btnDoorlockUser.Text = Language.StringByID(R.MyInternationalizationString.Fingerprint) + "ID" + +curDoorLockUser.UserID;
+                            }
+                            break;
+                    }
+
+                    if (curAccountObj.UserName == "" || curAccountObj.UserName == null)
+                    {
+                        btnMember.Text = curAccountObj.Account;
+                    }
+                    else
+                    {
+                        btnMember.Text = curAccountObj.UserName;
+                    }
+
+                    Action<Shared.View> action = async (obj) =>
                      {
-                         refreshDoorLockData.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
-                         refreshDoorLockData.IsOtherAccountCtrl = true;
-                     }
-                     if (doorLock.DeviceAddr != null)
-                     {
-                         refreshDoorLockData.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
-                     }
-                     refreshDoorLockData.OpenLockMode = curDoorLockUser.UnlockType;
-                     refreshDoorLockData.DoorLockLocalUserId = curDoorLockUser.UserID.ToString();
-                     refreshDoorLockData.PrimaryId = curDoorLockUser.PrimaryId;
-                     refreshDoorLockData.UserIdRemarks = btnDoorlockUser.Text;
-                     var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/UpdateDoorLock", refreshDoorLockData);
-                     if (result != null)
-                     {
-                         if (result.StateCode == "Success")
+                         var refreshDoorLockData = new ZigBee.Device.DoorLock.RefreshDoorLockData();
+                         if (UserCenterResourse.UserInfo.AuthorityNo != 1)
                          {
-                             if (doorLock.localDoorLockUserList.ContainsKey(curDoorLockUser.UserID))
+                             refreshDoorLockData.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
+                             refreshDoorLockData.IsOtherAccountCtrl = true;
+                         }
+                         if (doorLock.DeviceAddr != null)
+                         {
+                             refreshDoorLockData.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
+                         }
+                         refreshDoorLockData.OpenLockMode = curDoorLockUser.UnlockType;
+                         refreshDoorLockData.DoorLockLocalUserId = curDoorLockUser.UserID.ToString();
+                         refreshDoorLockData.PrimaryId = curDoorLockUser.PrimaryId;
+                         refreshDoorLockData.UserIdRemarks = btnDoorlockUser.Text;
+                         var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/UpdateDoorLock", refreshDoorLockData);
+                         if (result != null)
+                         {
+                             if (result.StateCode == "Success")
                              {
-                                 doorLock.localDoorLockUserList.Remove(curDoorLockUser.UserID);
-                                 var localDoorLockObj = new ZigBee.Device.DoorLock.LocaDoorLockObj() { };
-                                 localDoorLockObj.UserID = curDoorLockUser.UserID;
-                                 localDoorLockObj.UnlockType = curDoorLockUser.UnlockType;
-                                 localDoorLockObj.EntryTime = curDoorLockUser.EntryTime;
-                                 localDoorLockObj.UserName = refreshDoorLockData.UserIdRemarks;
-                                 localDoorLockObj.ConnectedAccount = curAccountObj.SubAccountDistributedMark;
-                                 doorLock.localDoorLockUserList.Add(curDoorLockUser.UserID, localDoorLockObj);
-                                 RefreshList();
+                                 if (doorLock.localDoorLockUserList.ContainsKey(curDoorLockUser.UserID))
+                                 {
+                                     doorLock.localDoorLockUserList.Remove(curDoorLockUser.UserID);
+                                     var localDoorLockObj = new ZigBee.Device.DoorLock.LocaDoorLockObj() { };
+                                     localDoorLockObj.UserID = curDoorLockUser.UserID;
+                                     localDoorLockObj.UnlockType = curDoorLockUser.UnlockType;
+                                     localDoorLockObj.EntryTime = curDoorLockUser.EntryTime;
+                                     localDoorLockObj.UserName = refreshDoorLockData.UserIdRemarks;
+                                     localDoorLockObj.ConnectedAccount = curAccountObj.SubAccountDistributedMark;
+                                     doorLock.localDoorLockUserList.Add(curDoorLockUser.UserID, localDoorLockObj);
+                                     TypeRefresh();
+                                 }
+                             }
+                             else
+                             {
+                                 new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.ModigfyFailed), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnDoorlockUser);
                              }
                          }
                          else
                          {
-                             new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.ModigfyFailed), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnDoorlockUser);
+                             new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnDoorlockUser);
                          }
-                     }
-                     else
-                     {
-                         new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnDoorlockUser);
-                     }
-                 };
-                btnDoorlockUser.EditorEnterAction += action;
+                     };
+                    btnDoorlockUser.EditorEnterAction += action;
 
-                btnDel.MouseUpEventHandler += (sender, e) =>
-                {
-                    var alert = new Alert(Language.StringByID(R.MyInternationalizationString.Tip), Language.StringByID(R.MyInternationalizationString.SureToDelUnlockMethod),
-                                                  Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
-                    alert.Show();
-                    alert.ResultEventHandler += async (sender1, e1) =>
+                    btnDel.MouseUpEventHandler += (sender, e) =>
                     {
-                        if (e1)
+                        var alert = new Alert(Language.StringByID(R.MyInternationalizationString.Tip), Language.StringByID(R.MyInternationalizationString.SureToDelUnlockMethod),
+                                                      Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
+                        alert.Show();
+                        alert.ResultEventHandler += async (sender1, e1) =>
                         {
-                            var passData = doorLock.SetUserAccessData(curDoorLockUser.UserID, ZigBee.Device.DoorLock.AccessType.DelCurrentUser);
-                            var resultData = await doorLock.DefaultControlAsync(passData);
-                            if (resultData != null && resultData.defaultControlResponseData != null)
+                            if (e1)
                             {
-                                if (resultData.defaultControlResponseData.status == 0 || resultData.defaultControlResponseData.status == 2)
+                                try
                                 {
-                                    var deleteDoorLockData = new ZigBee.Device.DoorLock.DeleteDoorLockData();
-                                    if (UserCenterResourse.UserInfo.AuthorityNo != 1)
+                                    CommonPage.Loading.Start("");
+                                    var passData = doorLock.SetUserAccessData(curDoorLockUser.UserID, ZigBee.Device.DoorLock.AccessType.DelCurrentUser);
+                                    var resultData = await doorLock.DefaultControlAsync(passData);
+                                    if (resultData != null && resultData.defaultControlResponseData != null)
                                     {
-                                        deleteDoorLockData.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
-                                        deleteDoorLockData.IsOtherAccountCtrl = true;
-                                    }
-                                    if (doorLock.DeviceAddr != null)
-                                    {
-                                        deleteDoorLockData.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
-                                    }
-                                    deleteDoorLockData.DoorLockLocalUserId = curDoorLockUser.UserID.ToString();
-                                    deleteDoorLockData.PrimaryId = curDoorLockUser.PrimaryId;
-                                    deleteDoorLockData.DelDoorLockDelType = 2;
-                                    var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/DelDoorLock", deleteDoorLockData);
-                                    if (result != null)
-                                    {
-                                        if (result.StateCode == "Success")
+                                        if (resultData.defaultControlResponseData.status == 0 || resultData.defaultControlResponseData.status == 2)
                                         {
-                                            isSecondDel = false;
-                                            if (doorLock.localDoorLockUserList.ContainsKey(curDoorLockUser.UserID))
+                                            var deleteDoorLockData = new ZigBee.Device.DoorLock.DeleteDoorLockData();
+                                            if (UserCenterResourse.UserInfo.AuthorityNo != 1)
                                             {
-                                                doorLock.localDoorLockAccountList.Remove(curDoorLockUser.ConnectedAccount);
-                                                var localDoorLockObj = new ZigBee.Device.DoorLock.LocaDoorLockObj() { };
-                                                localDoorLockObj.UserID = curDoorLockUser.UserID;
-                                                doorLock.localDoorLockUserList.Remove(curUserId);
-                                                doorLock.ReSave();
-                                                RefreshList();
+                                                deleteDoorLockData.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
+                                                deleteDoorLockData.IsOtherAccountCtrl = true;
                                             }
-                                        }
-                                        else
-                                        {
-                                            //寮�鍏冲浘鏍�
-                                            new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.RemoveFailed), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnDoorlockUser);
-                                        }
-                                    }
-                                    else
-                                    {
-                                        isSecondDel = true;
-                                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnDoorlockUser);
-                                    }
-                                }
-                                else
-                                {
-                                    if (isSecondDel)
-                                    {
-                                        var deleteDoorLockData = new ZigBee.Device.DoorLock.DeleteDoorLockData();
-                                        if (UserCenterResourse.UserInfo.AuthorityNo != 1)
-                                        {
-                                            deleteDoorLockData.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
-                                            deleteDoorLockData.IsOtherAccountCtrl = true;
-                                        }
-                                        if (doorLock.DeviceAddr != null)
-                                        {
-                                            deleteDoorLockData.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
-                                        }
-                                        deleteDoorLockData.DoorLockLocalUserId = curDoorLockUser.UserID.ToString();
-                                        deleteDoorLockData.PrimaryId = curDoorLockUser.PrimaryId;
-                                        deleteDoorLockData.DelDoorLockDelType = 2;
-                                        var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/DelDoorLock", deleteDoorLockData);
-                                        if (result != null)
-                                        {
-                                            if (result.StateCode == "Success")
+                                            if (doorLock.DeviceAddr != null)
                                             {
-                                                isSecondDel = false;
-                                                if (doorLock.localDoorLockUserList.ContainsKey(curDoorLockUser.UserID))
+                                                deleteDoorLockData.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
+                                            }
+                                            deleteDoorLockData.DoorLockLocalUserId = curDoorLockUser.UserID.ToString();
+                                            deleteDoorLockData.PrimaryId = curDoorLockUser.PrimaryId;
+                                            deleteDoorLockData.DelDoorLockDelType = 2;
+                                            var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/DelDoorLock", deleteDoorLockData);
+                                            if (result != null)
+                                            {
+                                                if (result.StateCode == "Success")
                                                 {
-                                                    doorLock.localDoorLockUserList.Remove(curDoorLockUser.UserID);
-                                                    var localDoorLockObj = new ZigBee.Device.DoorLock.LocaDoorLockObj() { };
-                                                    localDoorLockObj.UserID = curDoorLockUser.UserID;
-                                                    doorLock.localDoorLockUserList.Remove(curUserId);
-                                                    RefreshList();
+                                                    isSecondDel = false;
+                                                    if (doorLock.localDoorLockUserList.ContainsKey(curDoorLockUser.UserID))
+                                                    {
+                                                        doorLock.localDoorLockAccountList.Remove(curDoorLockUser.ConnectedAccount);
+                                                        var localDoorLockObj = new ZigBee.Device.DoorLock.LocaDoorLockObj() { };
+                                                        localDoorLockObj.UserID = curDoorLockUser.UserID;
+                                                        doorLock.localDoorLockUserList.Remove(curUserId);
+                                                        doorLock.ReSave();
+                                                        TypeRefresh();
+                                                    }
+                                                }
+                                                else
+                                                {
+                                                    //寮�鍏冲浘鏍�
+                                                    new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.RemoveFailed), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnDoorlockUser);
                                                 }
                                             }
                                             else
                                             {
-                                                new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.RemoveFailed), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnDoorlockUser);
+                                                isSecondDel = true;
+                                                new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnDoorlockUser);
                                             }
                                         }
                                         else
                                         {
-                                            isSecondDel = true;
-                                            new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnDoorlockUser);
+                                            if (isSecondDel)
+                                            {
+                                                var deleteDoorLockData = new ZigBee.Device.DoorLock.DeleteDoorLockData();
+                                                if (UserCenterResourse.UserInfo.AuthorityNo != 1)
+                                                {
+                                                    deleteDoorLockData.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
+                                                    deleteDoorLockData.IsOtherAccountCtrl = true;
+                                                }
+                                                if (doorLock.DeviceAddr != null)
+                                                {
+                                                    deleteDoorLockData.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
+                                                }
+                                                deleteDoorLockData.DoorLockLocalUserId = curDoorLockUser.UserID.ToString();
+                                                deleteDoorLockData.PrimaryId = curDoorLockUser.PrimaryId;
+                                                deleteDoorLockData.DelDoorLockDelType = 2;
+                                                var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/DelDoorLock", deleteDoorLockData);
+                                                if (result != null)
+                                                {
+                                                    if (result.StateCode == "Success")
+                                                    {
+                                                        isSecondDel = false;
+                                                        if (doorLock.localDoorLockUserList.ContainsKey(curDoorLockUser.UserID))
+                                                        {
+                                                            doorLock.localDoorLockUserList.Remove(curDoorLockUser.UserID);
+                                                            var localDoorLockObj = new ZigBee.Device.DoorLock.LocaDoorLockObj() { };
+                                                            localDoorLockObj.UserID = curDoorLockUser.UserID;
+                                                            doorLock.localDoorLockUserList.Remove(curUserId);
+                                                            TypeRefresh();
+                                                        }
+                                                    }
+                                                    else
+                                                    {
+                                                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.RemoveFailed), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnDoorlockUser);
+                                                    }
+                                                }
+                                                else
+                                                {
+                                                    isSecondDel = true;
+                                                    new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnDoorlockUser);
+                                                }
+                                            }
+                                            else
+                                            {
+                                                if (curDoorLockUser.UserID < 10)
+                                                {
+                                                    new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.OnlyBeDeletedOnTheDevice), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnDoorlockUser);
+                                                }
+                                                else
+                                                {
+                                                    new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.RemoveFailed), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnDoorlockUser);
+                                                }
+                                            }
                                         }
                                     }
                                     else
                                     {
-                                        if (curDoorLockUser.UserID < 10)
-                                        {
-                                            new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.OnlyBeDeletedOnTheDevice), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnDoorlockUser);
-                                        }
-                                        else
-                                        {
-                                            new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.RemoveFailed), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnDoorlockUser);
-                                        }
+                                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(btnDel);
                                     }
                                 }
+                                catch { }
+                                finally
+                                {
+                                    CommonPage.Loading.Hide();
+                                }
                             }
-                            else
-                            {
-                                new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(btnDel);
-                            }
-                        }
+                        };
                     };
-                };
-                #endregion
-                i++;
+                    #endregion
+                    i++;
+                }
+                frameLayoutRow.Height = i * Application.GetRealHeight(150);
             }
         }
 
@@ -655,26 +736,10 @@
                         oldbutton = btnAllMethod;
                         oldbuttonText = btnMethodText;
                         doorLock.currentUserDisplayMethod = btnMethodText.Text;
+                        doorLock.ReSave();
                         btnAllMethod.IsSelected = true;
                         oldbuttonText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
-
-                        // 绫诲瀷鍖哄垎 
-                        if (doorLock.currentUserDisplayMethod == Language.StringByID(R.MyInternationalizationString.AllMethod))
-                        {
-                            RefreshList();
-                        }
-                        if (doorLock.currentUserDisplayMethod == Language.StringByID(R.MyInternationalizationString.PasswordUnlock))
-                        {
-                            DisplayByType(0);
-                        }
-                        if (doorLock.currentUserDisplayMethod == Language.StringByID(R.MyInternationalizationString.FingerprintUnlock))
-                        {
-                            DisplayByType(15);
-                        }
-                        if (doorLock.currentUserDisplayMethod == Language.StringByID(R.MyInternationalizationString.ProximithCardUnlock))
-                        {
-                            DisplayByType(3);
-                        }
+                        TypeRefresh();
                     }
                     dialog.Close();
                 };
@@ -706,6 +771,13 @@
                         break;
                 }
 
+                if (doorLock.currentUserDisplayMethod == "" && i == 0)
+                {
+                    btnAllMethod.IsSelected = true;
+                    btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                    oldbutton = btnAllMethod;
+                    oldbuttonText = btnMethodText;
+                }
                 if (doorLock.currentUserDisplayMethod == Language.StringByID(R.MyInternationalizationString.AllMethod) && i == 0)
                 {
                     btnAllMethod.IsSelected = true;
@@ -737,290 +809,25 @@
             }
         }
 
-        /// <summary>
-        /// 閫氳繃绫诲瀷绛涢�夋樉绀�
-        /// </summary>
-        public void DisplayByType(int unlockMethod)
+        //绫诲瀷鍖哄垎 
+        void TypeRefresh()
         {
-            bodyView.RemoveAll();
-            var curAccountDoorLockUserList = new Dictionary<int, ZigBee.Device.DoorLock.LocaDoorLockObj>();
-
-            foreach (var curUserId in doorLock.localDoorLockUserList.Keys)
+            if (doorLock.currentUserDisplayMethod == Language.StringByID(R.MyInternationalizationString.PasswordUnlock))
             {
-                var curDoorLockUser = doorLock.localDoorLockUserList[curUserId];
-
-                if (curDoorLockUser.ConnectedAccount == "" || curDoorLockUser.ConnectedAccount != curAccountObj.SubAccountDistributedMark)
-                {
-                    continue;
-                }
-                else
-                {
-                    curAccountDoorLockUserList.Add(curDoorLockUser.UserID, curDoorLockUser);
-                }
+                RefreshList(0);
             }
-
-            if (curAccountDoorLockUserList.Count == 0)
+            else if (doorLock.currentUserDisplayMethod == Language.StringByID(R.MyInternationalizationString.FingerprintUnlock))
             {
-                entryStatusPic.Visible = true;
-                btnPicTip.Visible = true;
-                btnPicTip1.Visible = true;
+                RefreshList(15);
+            }
+            else if (doorLock.currentUserDisplayMethod == Language.StringByID(R.MyInternationalizationString.ProximithCardUnlock))
+            {
+                RefreshList(3);
             }
             else
             {
-                entryStatusPic.Visible = false;
-                btnPicTip.Visible = false;
-                btnPicTip1.Visible = false;
+                RefreshList();
             }
-            if (curAccountDoorLockUserList.Keys.Count == 0)
-            {
-                return;
-            }
-            int i = 0;
-            foreach (var curUserId in curAccountDoorLockUserList.Keys)
-            {
-                var curDoorLockUser = curAccountDoorLockUserList[curUserId];
-                if (curDoorLockUser.UnlockType != unlockMethod)
-                {
-                    continue;
-                }
-                #region UI
-                var rowFrameLayout = new RowLayout()
-                {
-                    Height = Application.GetRealHeight(127 + 23),
-                    X = Application.GetRealWidth(58),
-                    Width = Application.GetRealWidth(965),
-                    LineColor = Shared.Common.ZigbeeColor.Current.XMRowLine,
-                };
-                bodyView.AddChidren(rowFrameLayout);
-
-                var btnPicFrameLayout = new FrameLayout()
-                {
-                    Width = Application.GetRealWidth(81),
-                    Height = Application.GetRealHeight(81),
-                    X = Application.GetRealWidth(40),
-                    Y = Application.GetRealHeight(49),
-                };
-                rowFrameLayout.AddChidren(btnPicFrameLayout);
-
-                var btnPic = new Button()
-                {
-                    Width = Application.GetRealWidth(84),
-                    Height = Application.GetRealHeight(84),
-                    UnSelectedImagePath = "DoorLock/DoorLockUserPic.png",
-                };
-                btnPicFrameLayout.AddChidren(btnPic);
-
-                var btnDoorlockUser = new EditText()
-                {
-                    Width = Application.GetRealWidth(1080 - 173),
-                    Height = Application.GetRealHeight(60),
-                    X = Application.GetRealWidth(173),
-                    Y = Application.GetRealHeight(35),
-                    TextSize = 14,
-                    PlaceholderTextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
-                    TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
-                    TextAlignment = TextAlignment.CenterLeft,
-                };
-                rowFrameLayout.AddChidren(btnDoorlockUser);
-
-                var btnMember = new Button()
-                {
-                    Width = Application.GetRealWidth(1080 - 173),
-                    Height = Application.GetRealHeight(49),
-                    X = Application.GetRealWidth(173),
-                    Y = Application.GetRealHeight(95),
-                    TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
-                    TextSize = 14,
-                    TextAlignment = TextAlignment.CenterLeft,
-                };
-                rowFrameLayout.AddChidren(btnMember);
-
-                var btnDel = new Button()
-                {
-                    Width = Application.GetRealWidth(1080 - 173),
-                    Height = Application.GetRealHeight(49),
-                    X = Application.GetRealWidth(173),
-                    Y = Application.GetRealHeight(95),
-                    Text = Language.StringByID(R.MyInternationalizationString.DelBindDevice),
-                    TextColor = Shared.Common.ZigbeeColor.Current.XMWhite,
-                    TextSize = 12,
-                    TextAlignment = TextAlignment.Center,
-                    BackgroundColor = Shared.Common.ZigbeeColor.Current.XMDel,
-                };
-                rowFrameLayout.AddRightView(btnDel);
-                #endregion 
-                #region 鏁版嵁澶勭悊
-                int currentIndex = i;
-                if (currentIndex == curAccountDoorLockUserList.Keys.Count - 1)
-                {
-                    rowFrameLayout.LineColor = Shared.Common.ZigbeeColor.Current.XMWhite;
-                }
-                switch (curDoorLockUser.UnlockType)
-                {
-                    case 0:
-                        if (curDoorLockUser.UserName != "" && curDoorLockUser.UserName != null)
-                        {
-                            btnDoorlockUser.Text = curDoorLockUser.UserName;
-                        }
-                        else
-                        {
-                            btnDoorlockUser.Text = Language.StringByID(R.MyInternationalizationString.Password) + "ID" + curDoorLockUser.UserID;
-                        }
-                        break;
-                    case 3:
-                        if (curDoorLockUser.UserName != "" && curDoorLockUser.UserName != null)
-                        {
-                            btnDoorlockUser.Text = curDoorLockUser.UserName;
-                        }
-                        else
-                        {
-                            btnDoorlockUser.Text = Language.StringByID(R.MyInternationalizationString.IcCard) + "ID" + curDoorLockUser.UserID;
-                        }
-                        break;
-                    case 15:
-                        if (curDoorLockUser.UserName != "" && curDoorLockUser.UserName != null)
-                        {
-                            btnDoorlockUser.Text = curDoorLockUser.UserName;
-                        }
-                        else
-                        {
-                            btnDoorlockUser.Text = Language.StringByID(R.MyInternationalizationString.Fingerprint) + "ID" + +curDoorLockUser.UserID;
-                        }
-                        break;
-                }
-
-                if (curAccountObj.UserName == "" || curAccountObj.UserName == null)
-                {
-                    btnMember.Text = curAccountObj.Account;
-                }
-                else
-                {
-                    btnMember.Text = curAccountObj.UserName;
-                }
-
-                Action<Shared.View> action = async (obj) =>
-                {
-                    var refreshDoorLockData = new ZigBee.Device.DoorLock.RefreshDoorLockData();
-                    if (UserCenterResourse.UserInfo.AuthorityNo != 1)
-                    {
-                        refreshDoorLockData.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
-                        refreshDoorLockData.IsOtherAccountCtrl = true;
-                    }
-                    if (doorLock.DeviceAddr != null)
-                    {
-                        refreshDoorLockData.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
-                    }
-                    refreshDoorLockData.OpenLockMode = curDoorLockUser.UnlockType;
-                    refreshDoorLockData.DoorLockLocalUserId = curDoorLockUser.UserID.ToString();
-                    refreshDoorLockData.PrimaryId = curDoorLockUser.PrimaryId;
-                    refreshDoorLockData.UserIdRemarks = btnDoorlockUser.Text;
-                    var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/UpdateDoorLock", refreshDoorLockData);
-                    if (result != null)
-                    {
-                        if (result.StateCode == "Success")
-                        {
-                            if (doorLock.localDoorLockUserList.ContainsKey(curDoorLockUser.UserID))
-                            {
-                                doorLock.localDoorLockUserList.Remove(curDoorLockUser.UserID);
-                                var localDoorLockObj = new ZigBee.Device.DoorLock.LocaDoorLockObj() { };
-                                localDoorLockObj.UserID = curDoorLockUser.UserID;
-                                localDoorLockObj.UnlockType = curDoorLockUser.UnlockType;
-                                localDoorLockObj.EntryTime = curDoorLockUser.EntryTime;
-                                localDoorLockObj.UserName = refreshDoorLockData.UserIdRemarks;
-                                localDoorLockObj.ConnectedAccount = curAccountObj.SubAccountDistributedMark;
-                                doorLock.localDoorLockUserList.Add(curDoorLockUser.UserID, localDoorLockObj);
-                                RefreshList();
-                            }
-                        }
-                        else
-                        {
-                            new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.ModigfyFailed), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnDoorlockUser);
-                        }
-                    }
-                    else
-                    {
-                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnDoorlockUser);
-                    }
-                };
-                btnDoorlockUser.EditorEnterAction += action;
-
-                btnDel.MouseUpEventHandler += (sender, e) =>
-                {
-                    var alert = new Alert(Language.StringByID(R.MyInternationalizationString.Tip), Language.StringByID(R.MyInternationalizationString.SureToDelUnlockMethod),
-                                                  Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
-                    alert.Show();
-                    alert.ResultEventHandler += async (sender1, e1) =>
-                    {
-                        if (e1)
-                        {
-                            var passData = doorLock.SetUserAccessData(curDoorLockUser.UserID, ZigBee.Device.DoorLock.AccessType.DelCurrentUser);
-                            var resultData = await doorLock.DefaultControlAsync(passData);
-                            if (resultData != null && resultData.defaultControlResponseData != null)
-                            {
-                                if (resultData.defaultControlResponseData.status == 0)
-                                {
-                                    var deleteDoorLockData = new ZigBee.Device.DoorLock.DeleteDoorLockData();
-                                    if (UserCenterResourse.UserInfo.AuthorityNo != 1)
-                                    {
-                                        deleteDoorLockData.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
-                                        deleteDoorLockData.IsOtherAccountCtrl = true;
-                                    }
-                                    if (doorLock.DeviceAddr != null)
-                                    {
-                                        deleteDoorLockData.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
-                                    }
-                                    deleteDoorLockData.DoorLockLocalUserId = curDoorLockUser.UserID.ToString();
-                                    deleteDoorLockData.PrimaryId = curDoorLockUser.PrimaryId;
-                                    deleteDoorLockData.DelDoorLockDelType = 2;
-                                    var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/DelDoorLock", deleteDoorLockData);
-                                    if (result != null)
-                                    {
-                                        if (result.StateCode == "Success")
-                                        {
-                                            if (doorLock.localDoorLockUserList.ContainsKey(curDoorLockUser.UserID))
-                                            {
-                                                doorLock.localDoorLockUserList.Remove(curDoorLockUser.UserID);
-                                                var localDoorLockObj = new ZigBee.Device.DoorLock.LocaDoorLockObj() { };
-                                                localDoorLockObj.UserID = curDoorLockUser.UserID;
-                                                doorLock.localDoorLockUserList.Remove(curUserId);
-                                                RefreshList();
-                                            }
-                                        }
-                                        else
-                                        {
-                                            if (curDoorLockUser.UserID < 10)
-                                            {
-                                                new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.OnlyBeDeletedOnTheDevice), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnDoorlockUser);
-                                            }
-                                            else
-                                            {
-                                                new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.RemoveFailed), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnDoorlockUser);
-                                            }
-                                        }
-                                    }
-                                    else
-                                    {
-                                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnDoorlockUser);
-                                    }
-                                }
-                                else
-                                {
-                                    new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.RemoveFailed), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(btnDel);
-                                }
-
-                            }
-                            else
-                            {
-                                new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(btnDel);
-                            }
-                        }
-                    };
-                };
-                #endregion
-                i++;
-            }
-
-            bodyView.Height = i * Application.GetRealHeight(127 + 23);
         }
 
         /// <summary>
@@ -1031,8 +838,6 @@
             ZbGateway.StatusList.Remove(this);
             base.RemoveFromParent();
         }
-
-
 
         public void Changed(CommonDevice common)
         {
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UndistributeDoorlockUserPage.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UndistributeDoorlockUserPage.cs
index 78144d0..a0f8318 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UndistributeDoorlockUserPage.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UndistributeDoorlockUserPage.cs
@@ -22,131 +22,26 @@
         FrameLayout bottomFrameLayout;
         string currentType = string.Empty;
         List<Shared.Phone.UserCenter.MemberInfoRes> localAccountList;
-        VerticalScrolViewLayout bodyView;
+        VerticalRefreshLayout bodyView;
+        Dictionary<int, DoorLockCommonInfo.LocaDoorLockObj> oldLocalDoorLockUserList = new Dictionary<int, DoorLockCommonInfo.LocaDoorLockObj>();
         #endregion
 
         void ReadDoorLockUserInfo()
         {
             System.Threading.Tasks.Task.Run(async () =>
             {
-                Application.RunOnMainThread(() => { CommonPage.Loading.Start("Loading..."); });
                 try
                 {
-                    //await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetLocaDoorLocklist(doorLock, curAccountObj);
                     var list = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockAllAcountUserlist(doorLock);
-                }
-                catch { }
-                finally
-                {
-                    Application.RunOnMainThread(() =>
+                    if (oldLocalDoorLockUserList.Count != 0)
                     {
-                        RefreshList();
-                        CommonPage.Loading.Hide();
-                    });
-                }
-            });
-        }
-
-        void ReadDoorLockUserInfo1()
-        {
-            System.Threading.Tasks.Task.Run(async () =>
-            {
-                Application.RunOnMainThread(() => { CommonPage.Loading.Start("Loading..."); });
-                try
-                {
-                    var getDoorLockInfo = await doorLock.GetDoorlockUserInfoAsync();
-                    if (getDoorLockInfo != null && getDoorLockInfo.doorLockUserDetailData != null)
-                    {
-                        var dataList = getDoorLockInfo.doorLockUserDetailData.UserObjList;
-                        foreach (var doorData in dataList)
+                        if (list.Count == 0)
                         {
-                            var localDoorLockObj1 = new ZigBee.Device.DoorLock.LocaDoorLockObj()
+                            Application.RunOnMainThread(() =>
                             {
-                                UserID = doorData.UserId,
-                                UnlockType = doorData.UserType
-                            };
-                            if ((doorLock.localDoorLockUserList.ContainsKey(localDoorLockObj1.UserID)) == false)
-                            {
-                                doorLock.localDoorLockUserList.Add(localDoorLockObj1.UserID, localDoorLockObj1);
-                            }
+                                new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+                            });
                         }
-
-                        //  璇诲彇浜戠闂ㄩ攣璁惧涓殑淇℃伅
-                        var localDoorLockObj = new ZigBee.Device.DoorLock.GetDoorLockData() { };
-
-                        foreach (var curAccountObj in doorLock.localAllAccountList)
-                        {
-                            if (UserCenterResourse.UserInfo.AuthorityNo != 1)
-                            {
-                                localDoorLockObj.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
-                                localDoorLockObj.IsOtherAccountCtrl = true;
-                            }
-                            localDoorLockObj.CloudAccountId = curAccountObj.SubAccountDistributedMark;
-                            if (doorLock.DeviceAddr != null)
-                            {
-                                localDoorLockObj.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
-                            }
-                            var getDoorLockInfoList = await ZigBee.Device.DoorLock.GetDoorLockInfoFromServer("DoorLock/GetDoorLockPager", localDoorLockObj);
-                            if (getDoorLockInfoList != null)
-                            {
-                                foreach (var curDoorLockUser in getDoorLockInfoList.PageData)
-                                {
-                                    if (curDoorLockUser.DoorLockLocalUserId == null || curDoorLockUser.DoorLockLocalUserId == "")
-                                    {
-                                        continue;
-                                    }
-                                    if (doorLock.localDoorLockUserList.ContainsKey(int.Parse(curDoorLockUser.DoorLockLocalUserId)))
-                                    {
-                                        var doorLockObj = new ZigBee.Device.DoorLock.LocaDoorLockObj() { };
-                                        doorLockObj.UserID = int.Parse(curDoorLockUser.DoorLockLocalUserId);
-                                        doorLockObj.UnlockType = curDoorLockUser.OpenLockMode;
-                                        doorLockObj.PrimaryId = curDoorLockUser.Id;
-                                        doorLockObj.EntryTime = curDoorLockUser.EntryTime;
-                                        doorLockObj.UserName = curDoorLockUser.UserIdRemarks;
-                                        doorLockObj.ConnectedAccount = curDoorLockUser.CloudAccountId;
-                                        doorLock.localDoorLockUserList[int.Parse(curDoorLockUser.DoorLockLocalUserId)] = doorLockObj;
-                                    }
-                                    else
-                                    {
-                                        if (curDoorLockUser.DoorLockLocalUserId != null)
-                                        {
-                                            //闂ㄩ攣涓病鏈夛紝浜戠鏈夌敤鎴稩D锛屽悗鍙板垹闄や簯绔繖浜汭D
-                                            var deleteDoorLockData = new ZigBee.Device.DoorLock.DeleteDoorLockData();
-                                            if (UserCenterResourse.UserInfo.AuthorityNo != 1)
-                                            {
-                                                deleteDoorLockData.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
-                                                deleteDoorLockData.IsOtherAccountCtrl = true;
-                                            }
-                                            if (doorLock.DeviceAddr != null)
-                                            {
-                                                deleteDoorLockData.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
-                                            }
-                                            deleteDoorLockData.DoorLockLocalUserId = curDoorLockUser.DoorLockLocalUserId;
-                                            deleteDoorLockData.PrimaryId = curDoorLockUser.Id;
-                                            deleteDoorLockData.DelDoorLockDelType = 2;
-                                            var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/DelDoorLock", deleteDoorLockData);
-                                            int i = 0;
-                                        }
-                                    }
-                                }
-                            }
-                            else
-                            {
-                                Application.RunOnMainThread(() =>
-                                {
-                                    new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
-                                    return;
-                                });
-                            }
-                        }
-                    }
-                    else
-                    {
-                        //鏁版嵁濡傛灉鍦ㄩ棬閿佷笂闈㈡槸绌虹殑鏃跺�欙紝鏁版嵁涔熸槸娌℃湁鐨�
-                        Application.RunOnMainThread(() =>
-                        {
-                            new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
-                        });
                     }
                 }
                 catch { }
@@ -154,7 +49,7 @@
                 {
                     Application.RunOnMainThread(() =>
                     {
-                        MidFrameLayoutContent();
+                        TypeRefresh();
                         CommonPage.Loading.Hide();
                     });
                 }
@@ -166,6 +61,7 @@
         /// </summary>
         public void Show()
         {
+            doorLock.currentUserDisplayMethod = "";
             this.TopFrameLayout(this, Language.StringByID(R.MyInternationalizationString.UndistributedUnlockMethod));
             this.btnTitleLine.Visible = false;
             EventHandler<MouseEventArgs> eHandlerBack = (sender, e) =>
@@ -178,9 +74,13 @@
             MidFrameLayoutContent();
             if (doorLock.localDoorLockUserList.Count == 0)
             {
+                CommonPage.Loading.Start("Loading...");
                 ReadDoorLockUserInfo();
             }
-            RefreshList();
+            else
+            {
+                RefreshList();
+            }
         }
 
         public void MidFrameLayoutContent()
@@ -199,11 +99,31 @@
                 Y = Application.GetRealHeight(35),
                 X = Application.GetRealWidth(812 - 100),
                 TextAlignment = TextAlignment.CenterRight,
-                Text = Language.StringByID(R.MyInternationalizationString.AllMethod),
                 TextColor = Shared.Common.ZigbeeColor.Current.XMTopTitleText,
                 TextSize = 12,
             };
             midTopFrameLayout.AddChidren(btnAllMethod);
+            // 绫诲瀷鍖哄垎 
+            if (doorLock.currentUserDisplayMethod == Language.StringByID(R.MyInternationalizationString.AllMethod))
+            {
+                btnAllMethod.Text = Language.StringByID(R.MyInternationalizationString.AllMethod);
+            }
+            else if (doorLock.currentUserDisplayMethod == Language.StringByID(R.MyInternationalizationString.PasswordUnlock))
+            {
+                btnAllMethod.Text = Language.StringByID(R.MyInternationalizationString.PasswordUnlock);
+            }
+            else if (doorLock.currentUserDisplayMethod == Language.StringByID(R.MyInternationalizationString.FingerprintUnlock))
+            {
+                btnAllMethod.Text = Language.StringByID(R.MyInternationalizationString.FingerprintUnlock);
+            }
+            else if (doorLock.currentUserDisplayMethod == Language.StringByID(R.MyInternationalizationString.ProximithCardUnlock))
+            {
+                btnAllMethod.Text = Language.StringByID(R.MyInternationalizationString.ProximithCardUnlock);
+            }
+            else
+            {
+                btnAllMethod.Text = Language.StringByID(R.MyInternationalizationString.AllMethod);
+            }
 
             var btnNext = new Button()
             {
@@ -228,16 +148,24 @@
             };
             this.midFrameLayout.AddChidren(btnLine);
 
-            bodyView = new VerticalScrolViewLayout()
+            bodyView = new VerticalRefreshLayout()
             {
-                Y = midTopFrameLayout.Bottom,
+                Y = btnLine.Bottom,
                 Height = Application.GetRealHeight(1921 - 184 - 115 - 1),
             };
             this.midFrameLayout.AddChidren(bodyView);
+            bodyView.BeginHeaderRefreshingAction += () =>
+            {
+                bodyView.BeginHeaderRefreshing();
+                ReadDoorLockUserInfo();
+                bodyView.EndHeaderRefreshing();
+            };
         }
 
-        void RefreshList()
+        void RefreshList(int unlockMethod = -1)
         {
+            this.midFrameLayout.RemoveAll();
+            MidFrameLayoutContent();
             bodyView.RemoveAll();
             var curLocalDoorLockUserList = new Dictionary<int, DoorLockCommonInfo.LocaDoorLockObj>();
 
@@ -258,7 +186,31 @@
             int i = 0;
             foreach (var curUserId in curLocalDoorLockUserList.Keys)
             {
+                oldLocalDoorLockUserList = curLocalDoorLockUserList;
                 var curDoorLockUser = curLocalDoorLockUserList[curUserId];
+                switch (unlockMethod)
+                {
+                    case 0:
+                        if (curDoorLockUser.UnlockType != unlockMethod)
+                        {
+                            continue;
+                        }
+                        break;
+                    case 3:
+                        if (curDoorLockUser.UnlockType != unlockMethod)
+                        {
+                            continue;
+                        }
+                        break;
+                    case 15:
+                        if (curDoorLockUser.UnlockType != unlockMethod)
+                        {
+                            continue;
+                        }
+                        break;
+                    default:
+                        break;
+                }
                 var rowFrameLayout = new FrameLayout()
                 {
                     Height = Application.GetRealHeight(127 + 23),
@@ -628,7 +580,7 @@
                             var d = uList.Find((value) => { return value == curDoorLockUser.UserID; });
                             if (d != null)
                             {
-                                RefreshList();
+                                TypeRefresh();
                                 flMain.RemoveFromParent();
                                 bottomFrameLayout.RemoveAll();
                             }
@@ -733,24 +685,7 @@
                         doorLock.currentUserDisplayMethod = btnMethodText.Text;
                         btnAllMethod.IsSelected = true;
                         oldbuttonText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
-
-                        // 绫诲瀷鍖哄垎
-                        if (doorLock.currentUserDisplayMethod == Language.StringByID(R.MyInternationalizationString.AllMethod))
-                        {
-                            RefreshList();
-                        }
-                        if (doorLock.currentUserDisplayMethod == Language.StringByID(R.MyInternationalizationString.PasswordUnlock))
-                        {
-                            DisplayByType(0);
-                        }
-                        if (doorLock.currentUserDisplayMethod == Language.StringByID(R.MyInternationalizationString.FingerprintUnlock))
-                        {
-                            DisplayByType(15);
-                        }
-                        if (doorLock.currentUserDisplayMethod == Language.StringByID(R.MyInternationalizationString.ProximithCardUnlock))
-                        {
-                            DisplayByType(3);
-                        }
+                        TypeRefresh();
                     }
                     dialog.Close();
                 };
@@ -782,6 +717,13 @@
                         break;
                 }
 
+                if (doorLock.currentUserDisplayMethod == "" && i == 0)
+                {
+                    btnAllMethod.IsSelected = true;
+                    btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                    oldbutton = btnAllMethod;
+                    oldbuttonText = btnMethodText;
+                }
                 if (doorLock.currentUserDisplayMethod == Language.StringByID(R.MyInternationalizationString.AllMethod) && i == 0)
                 {
                     btnAllMethod.IsSelected = true;
@@ -813,124 +755,24 @@
             }
         }
 
-        // 閫氳繃绫诲瀷绛涢�夋樉绀�
-        void DisplayByType(int unlockMethod)
+        //绫诲瀷鍖哄垎 
+        void TypeRefresh()
         {
-            bodyView.RemoveAll();
-
-            var curLocalDoorLockUserList = new Dictionary<int, DoorLockCommonInfo.LocaDoorLockObj>();
-
-            foreach (var curUserId in doorLock.localDoorLockUserList.Keys)
+            if (doorLock.currentUserDisplayMethod == Language.StringByID(R.MyInternationalizationString.PasswordUnlock))
             {
-                var curDoorLockUser = doorLock.localDoorLockUserList[curUserId];
-                if (curDoorLockUser.ConnectedAccount != "" || curDoorLockUser.UnlockType != unlockMethod)
-                {
-                    continue;
-                }
-                curLocalDoorLockUserList.Add(curUserId, curDoorLockUser);
+                RefreshList(0);
             }
-
-            int i = 0;
-            foreach (var curUserId in curLocalDoorLockUserList.Keys)
+            else if (doorLock.currentUserDisplayMethod == Language.StringByID(R.MyInternationalizationString.FingerprintUnlock))
             {
-                var curDoorLockUser = curLocalDoorLockUserList[curUserId];
-
-                var rowFrameLayout = new FrameLayout()
-                {
-                    Height = Application.GetRealHeight(150),
-                    BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite,
-                };
-                bodyView.AddChidren(rowFrameLayout);
-
-                var btnDistributeUnlockIconFrameLayout = new FrameLayout()
-                {
-                    Height = Application.GetRealHeight(84),
-                    Width = Application.GetRealWidth(84),
-                    X = Application.GetRealWidth(58),
-                    Y = Application.GetRealHeight(43),
-                };
-                rowFrameLayout.AddChidren(btnDistributeUnlockIconFrameLayout);
-
-                var btnDistributeUnlockIcon = new Button()
-                {
-                    Height = Application.GetRealHeight(84),
-                    Width = Application.GetRealWidth(84),
-                    UnSelectedImagePath = "DoorLock/DistributeUnlockIcon.png",
-                };
-                btnDistributeUnlockIconFrameLayout.AddChidren(btnDistributeUnlockIcon);
-
-                var btnText = new Button()
-                {
-                    X = Application.GetRealWidth(176),
-                    Width = Application.GetRealWidth(300),
-                    Height = Application.GetRealHeight(300),
-                    TextAlignment = TextAlignment.CenterLeft,
-                    TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
-                    Gravity = Gravity.CenterVertical,
-                };
-                rowFrameLayout.AddChidren(btnText);
-
-                var line2 = new Button()
-                {
-                    Y = rowFrameLayout.Height - 1,
-                    X = Application.GetRealWidth(58),
-                    Width = Application.GetRealWidth(965),
-                    Height = 1,
-                    BackgroundColor = Shared.Common.ZigbeeColor.Current.XMRowLine,
-                };
-                rowFrameLayout.AddChidren(line2);
-
-                #region 鏁版嵁澶勭悊
-                int currentIndex = i;
-                if (currentIndex == curLocalDoorLockUserList.Keys.Count - 1)
-                {
-                    line2.Visible = false;
-                }
-
-                switch (curDoorLockUser.UnlockType)
-                {
-                    case 0:
-                        if (curDoorLockUser.UserName != "")
-                        {
-                            btnText.Text = curDoorLockUser.UserName;
-                        }
-                        else
-                        {
-                            btnText.Text = Language.StringByID(R.MyInternationalizationString.Password) + "ID" + curDoorLockUser.UserID;
-                        }
-                        break;
-                    case 3:
-                        if (curDoorLockUser.UserName != "")
-                        {
-                            btnText.Text = curDoorLockUser.UserName;
-                        }
-                        else
-                        {
-                            btnText.Text = Language.StringByID(R.MyInternationalizationString.IcCard) + "ID" + curDoorLockUser.UserID;
-                        }
-                        break;
-                    case 15:
-                        if (curDoorLockUser.UserName != "")
-                        {
-                            btnText.Text = curDoorLockUser.UserName;
-                        }
-                        else
-                        {
-                            btnText.Text = Language.StringByID(R.MyInternationalizationString.Fingerprint) + "ID" + +curDoorLockUser.UserID;
-                        }
-                        break;
-                }
-
-                EventHandler<MouseEventArgs> eHandler = (sender, e) =>
-                {
-                    MatchUsersFrameLayout(curDoorLockUser);
-                };
-                btnDistributeUnlockIcon.MouseUpEventHandler += eHandler;
-                btnDistributeUnlockIconFrameLayout.MouseUpEventHandler += eHandler;
-                rowFrameLayout.MouseUpEventHandler += eHandler;
-                btnText.MouseUpEventHandler += eHandler;
-                #endregion
-                i++;
+                RefreshList(15);
+            }
+            else if (doorLock.currentUserDisplayMethod == Language.StringByID(R.MyInternationalizationString.ProximithCardUnlock))
+            {
+                RefreshList(3);
+            }
+            else
+            {
+                RefreshList();
             }
         }
         #region 鈼� 鎺ュ彛瀹炵幇__________________________
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs
index 504a952..675be01 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs
@@ -22,6 +22,7 @@
         Shared.Common.Room currentRoom;
         DeviceUI deviceUI;
         Action action;
+        Button btnDoorLockTitle;
         #endregion
 
         /// <summary>
@@ -29,7 +30,7 @@
         /// </summary>
         public void Show()
         {
-            this.TopFrameLayout(this, Language.StringByID(R.MyInternationalizationString.DoorLock));
+            this.TopFrameLayout(this, "");
 
             EventHandler<MouseEventArgs> eHandlerBack = (sender, e) =>
             {
@@ -37,8 +38,8 @@
             };
             this.btnBack.MouseUpEventHandler += eHandlerBack;
             this.btnBackFrameLayout.MouseUpEventHandler += eHandlerBack;
-            this.MidFrameLayout(this);
 
+            this.MidFrameLayout(this);
             var btnShare = new Button
             {
                 X = Application.GetRealWidth(850 - 116),
@@ -67,27 +68,40 @@
             {
                 if (UserCenterResourse.UserInfo.AuthorityNo == 1)
                 {
-                    var userDoorLockPage = new Shared.Phone.UserCenter.DoorLock.FunctionSetting(doorLock);
-                    Shared.Phone.UserView.HomePage.Instance.AddChidren(userDoorLockPage);
+                    var functionSetting = new Shared.Phone.UserCenter.DoorLock.FunctionSetting(doorLock);
+                    Shared.Phone.UserView.HomePage.Instance.AddChidren(functionSetting);
                     Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
-                    userDoorLockPage.Show();
+                    functionSetting.Show();
+                    functionSetting.devicNameAction += (deviceRename) =>
+                    {
+                        if (!string.IsNullOrEmpty(deviceRename))
+                        {
+                            btnDoorLockTitle.Text = deviceRename;
+                            //鏀规埧闂�
+                            Shared.Common.Room.CurrentRoom.ChangedRoom(deviceUI.CommonDevice, currentRoom.Id);
+                            deviceUI.CommonDevice.ReSave();
+                        }
+                    };
                 }
                 else
                 {
-                    var userDoorLockPage = new Shared.Phone.UserCenter.DoorLock.FunctionSettingSub(doorLock);
-                    Shared.Phone.UserView.HomePage.Instance.AddChidren(userDoorLockPage);
+                    var functionSettingSub = new Shared.Phone.UserCenter.DoorLock.FunctionSettingSub(doorLock);
+                    Shared.Phone.UserView.HomePage.Instance.AddChidren(functionSettingSub);
                     Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
-                    userDoorLockPage.Show();
+                    functionSettingSub.Show();
+                    functionSettingSub.devicNameAction += (deviceRename) =>
+                    {
+                        if (!string.IsNullOrEmpty(deviceRename))
+                        {
+                            btnDoorLockTitle.Text = deviceRename;
+                        }
+                    };
                 }
             };
 
             btnShare.MouseDownEventHandler += (sender, e) =>
             {
-                var doorLock = new ZigBee.Device.DoorLock();
-                var memberManagement = new Shared.Phone.UserCenter.DoorLock.MemberManagement(doorLock);
-                Shared.Phone.UserView.HomePage.Instance.AddChidren(memberManagement);
-                Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
-                memberManagement.Show();
+
             };
 
             MidFrameLayoutContent();
@@ -106,14 +120,14 @@
             };
             this.midFrameLayout.AddChidren(midTopFrameLayout);
 
-            var btnDoorLockTitle = new Button()
+            btnDoorLockTitle = new Button()
             {
                 Width = Application.GetRealWidth(250),
                 Height = Application.GetRealHeight(60),
                 X = Application.GetRealWidth(372),
                 Y = Application.GetRealHeight(46),
                 TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
-                Text = Language.StringByID(R.MyInternationalizationString.SmartDoorLock),
+                Text = string.IsNullOrEmpty(doorLock.DeviceName) ? Language.StringByID(R.MyInternationalizationString.UNKnown) : doorLock.DeviceName,
                 TextSize = 15,
                 TextAlignment = TextAlignment.Center,
             };
@@ -315,7 +329,17 @@
                          var result1 = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockUnlockAccess(doorLock, Shared.Common.Config.Instance.Guid);
                          if (result1 == true)
                          {
-                             RemoteUnlockRequest(doorLock, action, progressButton, btnDoorLockPic, btnStatus);
+                             RemoteUnlockRequest(doorLock, action, progressButton, btnDoorLockPic, btnStatus, btnDoorLockTitle);
+                             devicNameSecAction += (deviceRename) =>
+                             {
+                                 if (!string.IsNullOrEmpty(deviceRename))
+                                 {
+                                     btnDoorLockTitle.Text = deviceRename;
+                                     //鏀规埧闂�
+                                     Shared.Common.Room.CurrentRoom.ChangedRoom(deviceUI.CommonDevice, currentRoom.Id);
+                                     deviceUI.CommonDevice.ReSave();
+                                 }
+                             };
                          }
                          else
                          {
@@ -329,7 +353,17 @@
                  }
                  else
                  {
-                     RemoteUnlockRequest(doorLock, action, progressButton, btnDoorLockPic, btnStatus);
+                     RemoteUnlockRequest(doorLock, action, progressButton, btnDoorLockPic, btnStatus, btnDoorLockTitle);
+                     devicNameSecAction += (deviceRename) =>
+                     {
+                         if (!string.IsNullOrEmpty(deviceRename))
+                         {
+                             btnDoorLockTitle.Text = deviceRename;
+                             //鏀规埧闂�
+                             Shared.Common.Room.CurrentRoom.ChangedRoom(deviceUI.CommonDevice, currentRoom.Id);
+                             deviceUI.CommonDevice.ReSave();
+                         }
+                     };
                  }
              };
             openFrameLayout.MouseUpEventHandler += hander1;
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserManagement.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserManagement.cs
index a34d257..0e978d9 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserManagement.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserManagement.cs
@@ -31,14 +31,17 @@
 
         #region 鈼� 鍙橀噺鐢虫槑__________________________
         ZigBee.Device.DoorLock doorLock;
-        VerticalScrolViewLayout midVerticalScrolViewLayout;
+        VerticalRefreshLayout midVerticalScrolViewLayout;
         #endregion
 
+        /// <summary>
+        /// 鏁版嵁鍒锋柊
+        /// </summary>
         void ReadAccountDoorLockInfoList()
         {
             System.Threading.Tasks.Task.Run(async () =>
             {
-                Application.RunOnMainThread(() => { CommonPage.Loading.Start("Loading..."); });
+                //Application.RunOnMainThread(() => {; });
                 try
                 {
                     var localAccountListTemp = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.LocalAccountList();
@@ -88,6 +91,9 @@
             });
         }
 
+        /// <summary>
+        /// 鏄剧ず鐣岄潰
+        /// </summary>
         public void Show()
         {
             this.TopFrameLayout(this, Language.StringByID(R.MyInternationalizationString.UserManagement));
@@ -141,13 +147,23 @@
             btnAddFrameLayout.MouseDownEventHandler += eHandler;
             btnUndistributeText.MouseDownEventHandler += eHandler;
             btnUndistributeIcon.MouseDownEventHandler += eHandler;
-            midVerticalScrolViewLayout = new VerticalScrolViewLayout()
+            midVerticalScrolViewLayout = new VerticalRefreshLayout()
             {
             };
             this.midFrameLayout.AddChidren(midVerticalScrolViewLayout);
+            midVerticalScrolViewLayout.BeginHeaderRefreshingAction += () =>
+            {
+                midVerticalScrolViewLayout.BeginHeaderRefreshing();
+
+                midVerticalScrolViewLayout.EndHeaderRefreshing();
+            };
+            CommonPage.Loading.Start("Loading...");
             ReadAccountDoorLockInfoList();
         }
 
+        /// <summary>
+        /// 涓儴甯冨眬鏄剧ず
+        /// </summary>
         async void MidFrameLayoutContent()
         {
             midVerticalScrolViewLayout.RemoveAll();
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/NewGateWayMenuSelectForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/NewGateWayMenuSelectForm.cs
index b9c9a7f..649569b 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/NewGateWayMenuSelectForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/NewGateWayMenuSelectForm.cs
@@ -87,7 +87,7 @@
                 frameBack1.UseClickStatu = false;
                 frameBack1.Y = Application.GetRealHeight(1420);
                 frameBack1.Gravity = Gravity.CenterHorizontal;
-                frameBack1.RadiusEx = 12;
+                frameBack1.Radius = 12;
                 frameBack1.Width = Application.GetRealWidth(1034);
                 frameBack1.Height = Application.GetRealHeight(300);
                 frameBack1.BackgroundColor = UserCenterColor.Current.White;
@@ -135,7 +135,7 @@
                 frameBack2.UseClickStatu = false;
                 frameBack2.Y = frameBack1.Bottom + Application.GetRealHeight(23);
                 frameBack2.Gravity = Gravity.CenterHorizontal;
-                frameBack2.RadiusEx = 12;
+                frameBack2.Radius = 12;
                 frameBack2.Width = Application.GetRealWidth(1034);
                 frameBack2.Height = Application.GetRealHeight(156);
                 frameBack2.BackgroundColor = UserCenterColor.Current.White;
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WiredGatewaySearchForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WiredGatewaySearchForm.cs
index 241a3f1..89680e3 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WiredGatewaySearchForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WiredGatewaySearchForm.cs
@@ -429,7 +429,7 @@
                 foreach (var way in list)
                 {
                     ZbGateway.GateWayList.RemoveAll((obj) => HdlGatewayLogic.Current.GetGatewayId(obj) == HdlGatewayLogic.Current.GetGatewayId(way));
-                    way.DisConnect("Search");
+                    way.DisConnectLocalMqttClient("Search");
                 }
             }
             if (UserCenterResourse.listActionFormId.Contains("UserMainForm") == false)
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/HdlBackup/HdlAutoBackupForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/HdlBackup/HdlAutoBackupForm.cs
new file mode 100755
index 0000000..8fc2aaf
--- /dev/null
+++ b/ZigbeeApp/Shared/Phone/UserCenter/HdlBackup/HdlAutoBackupForm.cs
@@ -0,0 +1,137 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Shared.Phone.UserCenter.HdlBackup
+{
+    /// <summary>
+    /// 鑷姩澶囦唤鐨勭晫闈�
+    /// </summary>
+    public class HdlAutoBackupForm : EditorCommonForm
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
+        /// </summary>
+        public void ShowForm()
+        {
+            //鍒濆鍖栦腑閮ㄤ俊鎭�
+            this.InitMiddleFrame();
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栦腑閮ㄤ俊鎭�
+        /// </summary>
+        private void InitMiddleFrame()
+        {
+            //娓呯┖bodyFrame
+            this.ClearBodyFrame();
+
+            //body鍗犲畬鏁翠釜灞忓箷
+            bodyFrameLayout.Y = 0;
+            bodyFrameLayout.Height = ControlCommonResourse.TopMenuFrameHeight + ControlCommonResourse.TopFrameHeight
+                + ControlCommonResourse.BodyFrameHeight;
+
+            var btnPic = new NormalViewControl(991, 438, true);
+            btnPic.UnSelectedImagePath = "Item/AutoBackup.png";
+            btnPic.Y = Application.GetRealHeight(374);
+            bodyFrameLayout.AddChidren(btnPic);
+
+            //鑷姩澶囦唤
+            var btnAuto = new NormalViewControl(400, 85, true);
+            btnAuto.Y = Application.GetRealHeight(876);
+            btnAuto.Gravity = Gravity.CenterHorizontal;
+            btnAuto.TextID = R.MyInternationalizationString.uAutoBackup;
+            btnAuto.TextSize = 20;
+            btnAuto.TextAlignment = TextAlignment.Center;
+            bodyFrameLayout.AddChidren(btnAuto);
+
+            //妫�娴嬪埌鏁版嵁鏇存柊锛屾槸鍚﹂渶瑕佸浠�
+            var btnMsg = new NormalViewControl(bodyFrameLayout.Width, Application.GetRealHeight(60), false);
+            btnMsg.Y = btnAuto.Bottom + Application.GetRealHeight(23);
+            btnMsg.TextID = R.MyInternationalizationString.uIsHadNotBackupDataOnScan;
+            btnMsg.TextAlignment = TextAlignment.Center;
+            btnMsg.TextColor = UserCenterColor.Current.TextGrayColor1;
+            bodyFrameLayout.AddChidren(btnMsg);
+
+            //绔嬪嵆澶囦唤(鎺ㄨ崘)
+            var frameback = new FrameLayoutControl();
+            frameback.UseClickStatu = false;
+            frameback.Y = Application.GetRealHeight(1201);
+            frameback.Gravity = Gravity.CenterHorizontal;
+            frameback.Width = Application.GetRealWidth(746);
+            frameback.Height = Application.GetRealHeight(184);
+            frameback.BackgroundImagePath = "Item/BottomButtonGround.png";
+            bodyFrameLayout.AddChidren(frameback);
+            var btnBackup = new NormalViewControl(400, 65, true);
+            btnBackup.TextColor = UserCenterColor.Current.White;
+            btnBackup.TextSize = 16;
+            btnBackup.Y = Application.GetRealHeight(49);
+            btnBackup.Gravity = Gravity.CenterHorizontal;
+            btnBackup.TextAlignment = TextAlignment.Center;
+            btnBackup.Text = Language.StringByID(R.MyInternationalizationString.uImmediatelyBackup) + "(" + Language.StringByID(R.MyInternationalizationString.uRecommendation) + ")";
+            frameback.AddChidren(btnBackup, ChidrenBindMode.BindEventOnly);
+            frameback.ButtonClickEvent += (sender, e) =>
+            {
+                HdlThreadLogic.Current.RunThread(() =>
+                {
+                    //涓婁紶鏁版嵁
+                    this.UpLoadBackupInfo();
+                });
+            };
+
+            //鏆備笉鎻愰啋
+            var btnRemind = new NormalViewControl(688, 127, true);
+            btnRemind.Y = frameback.Bottom + Application.GetRealHeight(52);
+            btnRemind.Gravity = Gravity.CenterHorizontal;
+            btnRemind.Radius = (uint)Application.GetRealHeight(127) / 2;
+            btnRemind.BorderWidth = 1;
+            btnRemind.BorderColor = UserCenterColor.Current.TextOrangeColor;
+            btnRemind.TextAlignment = TextAlignment.Center;
+            btnRemind.TextSize = 16;
+            btnRemind.TextColor = UserCenterColor.Current.TextGrayColor3;
+            btnRemind.TextID = R.MyInternationalizationString.uTemporaryStopRemind;
+            bodyFrameLayout.AddChidren(btnRemind);
+            btnRemind.ButtonClickEvent += (sender, e) =>
+            {
+                HdlAutoBackupLogic.SaveBackupNotPrompted(false, 1);
+                this.CloseForm();
+            };
+        }
+
+        #endregion
+
+        #region 鈻� 涓婁紶鏁版嵁___________________________
+
+        /// <summary>
+        /// 涓婁紶鏁版嵁
+        /// </summary>
+        private async void UpLoadBackupInfo()
+        {
+            int result = await HdlAutoBackupLogic.DoUpLoadAutoBackupData();
+            if (result == -1)
+            {
+                //鏂囦欢涓婁紶澶辫触
+                string msg = Language.StringByID(R.MyInternationalizationString.uFileUpLoadFail);
+                this.ShowMassage(ShowMsgType.Error, msg);
+
+                return;
+            }
+            //鏁版嵁鎴愬姛涓婁紶鍒版湇鍔″櫒
+            string msg2 = Language.StringByID(R.MyInternationalizationString.uSynchronizeDataToServiceSuccessMsg);
+            this.ShowMassage(ShowMsgType.Tip, msg2);
+
+            Application.RunOnMainThread(() =>
+            {
+                this.CloseForm();
+            });
+        }
+
+        #endregion
+    }
+}
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Residence/AddNewRoomForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Residence/AddNewRoomForm.cs
index dcebeec..e06b16b 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Residence/AddNewRoomForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Residence/AddNewRoomForm.cs
@@ -59,7 +59,7 @@
             btnPic.Width = Application.GetMinRealAverage(887);
             btnPic.Height = Application.GetMinRealAverage(444);
             btnPic.Gravity = Gravity.CenterHorizontal;
-            btnPic.Radius = 17;
+            btnPic.Radius = 8;
             btnPic.ImagePath = "RoomIcon/0.JPG";
             bodyFrameLayout.AddChidren(btnPic);
             btnPic.MouseUpEventHandler += (sender, e) =>
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Residence/EditorRoomInforForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Residence/EditorRoomInforForm.cs
index 685a2ac..6f68a33 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Residence/EditorRoomInforForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Residence/EditorRoomInforForm.cs
@@ -64,7 +64,7 @@
             btnPic.Width = Application.GetMinRealAverage(887);
             btnPic.Height = Application.GetMinRealAverage(444);
             btnPic.Gravity = Gravity.CenterHorizontal;
-            btnPic.Radius = 17;
+            btnPic.Radius = 8;
             btnPic.ImagePath = this.editorRoom.BackgroundImage;
             bodyFrameLayout.AddChidren(btnPic);
             btnPic.MouseUpEventHandler += (sender, e) =>
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Residence/LookRoomSettionForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Residence/LookRoomSettionForm.cs
index 1246bf1..299fbba 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Residence/LookRoomSettionForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Residence/LookRoomSettionForm.cs
@@ -195,14 +195,14 @@
                     btnPic.Width = Application.GetRealWidth(844);
                     btnPic.Height = Application.GetRealHeight(420);
                     btnPic.ImagePath = data.IconPath;
-                    btnPic.Radius = 17;
+                    btnPic.Radius = 8;
                     frameContr.AddChidren(btnPic);
 
                     var btnName = new NormalViewControl(251, 282, true);
                     btnName.X = ControlCommonResourse.XXLeft;
-                    btnName.Gravity = Gravity.CenterVertical;
+                    btnName.Y = Application.GetRealHeight(58);
                     btnName.BackgroundColor = 0xff333333;
-                    btnName.Radius = 17;
+                    btnName.Radius = 8;
                     btnName.Text = data.Name;
                     btnName.TextSize = 15;
                     btnName.TextColor = UserCenterColor.Current.White;
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/SharedContent/AddNewSharedContentForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/SharedContent/AddNewSharedContentForm.cs
index 5cf9e10..ae87a7d 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/SharedContent/AddNewSharedContentForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/SharedContent/AddNewSharedContentForm.cs
@@ -207,14 +207,14 @@
                     btnPic.Width = Application.GetRealWidth(844);
                     btnPic.Height = Application.GetRealHeight(420);
                     btnPic.ImagePath = data.IconPath;
-                    btnPic.Radius = 17;
-                    frameContr.AddChidren(btnPic);
+                    btnPic.Radius = 8;
+                    frameContr.AddChidren(btnPic, ChidrenBindMode.BindEventOnly);
 
                     var btnName = new NormalViewControl(251, 282, true);
                     btnName.X = ControlCommonResourse.XXLeft;
-                    btnName.Gravity = Gravity.CenterVertical;
+                    btnName.Y = Application.GetRealHeight(58);
                     btnName.BackgroundColor = 0xff333333;
-                    btnName.Radius = 17;
+                    btnName.Radius = 8;
                     btnName.Text = data.Name;
                     btnName.TextSize = 15;
                     btnName.TextColor = UserCenterColor.Current.White;
@@ -279,13 +279,13 @@
                 }
                 else
                 {
-                    var frameBack = new FrameLayoutControl(false);
+                    var frameBack = new FrameLayout();
                     frameBack.X = ControlCommonResourse.XXLeft;
                     frameBack.Y = Application.GetRealHeight(178);
                     frameBack.BackgroundColor = UserCenterColor.Current.White;
                     frameBack.Width = bodyFrameLayout.Width;
                     frameBack.Height = Application.GetRealHeight(1650);
-                    frameBack.RadiusEx = 20;
+                    frameBack.Radius = 20;
                     frameDeviceTable.AddChidren(frameBack);
 
                     var listView = new VerticalListControl(23);
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/SharedContent/LookSharedContentForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/SharedContent/LookSharedContentForm.cs
index b42621a..0d30915 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/SharedContent/LookSharedContentForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/SharedContent/LookSharedContentForm.cs
@@ -190,14 +190,14 @@
                     btnPic.Width = Application.GetRealWidth(844);
                     btnPic.Height = Application.GetRealHeight(420);
                     btnPic.ImagePath = data.IconPath;
-                    btnPic.Radius = 17;
+                    btnPic.Radius = 8;
                     frameContr.AddChidren(btnPic);
 
                     var btnName = new NormalViewControl(251, 282, true);
                     btnName.X = ControlCommonResourse.XXLeft;
-                    btnName.Gravity = Gravity.CenterVertical;
+                    btnName.Y = Application.GetRealHeight(58);
                     btnName.BackgroundColor = 0xff333333;
-                    btnName.Radius = 17;
+                    btnName.Radius = 8;
                     btnName.Text = data.Name;
                     btnName.TextSize = 15;
                     btnName.TextColor = UserCenterColor.Current.White;
@@ -264,13 +264,13 @@
                 }
                 else
                 {
-                    var frameBack = new FrameLayoutControl(false);
+                    var frameBack = new FrameLayout();
                     frameBack.X = ControlCommonResourse.XXLeft;
                     frameBack.Y = Application.GetRealHeight(178);
                     frameBack.BackgroundColor = UserCenterColor.Current.White;
                     frameBack.Width = bodyFrameLayout.Width;
                     frameBack.Height = Application.GetRealHeight(1650);
-                    frameBack.RadiusEx = 20;
+                    frameBack.Radius = 20;
                     frameDeviceTable.AddChidren(frameBack);
 
                     var listView = new VerticalListControl(23);
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/UserMain/MessageManagementForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/UserMain/MessageManagementForm.cs
index cb25261..bd4329d 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/UserMain/MessageManagementForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/UserMain/MessageManagementForm.cs
@@ -276,9 +276,12 @@
         /// <param name="strId"></param>
         private async System.Threading.Tasks.Task<bool> SetTickIsRead(string strId)
         {
-            var pra = new { Id = strId };
-            await UserCenterLogic.GetResultStatuByRequestHttps("ZigbeeUsers/TickIsRead", true, pra);
-            return true;
+            string strUrl = "ZigbeeUsers/TickIsRead?Id=" + strId;
+            var result = await Common.CommonPage.Instance.DoRequestZigbeeHttpsInterface(strUrl, null, Common.Config.Instance.Token, "GET");
+            var revertObj = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.ResponseEntity.ResponsePack>(Encoding.UTF8.GetString(result));
+            //妫�娴嬫槸鍚﹀瓨鍦ㄩ敊璇俊鎭�
+            var falge = UserCenterLogic.CheckNotEorrorMsg(revertObj, "ZigbeeUsers/TickIsRead", null, null);
+            return falge;
         }
 
         /// <summary>
@@ -335,9 +338,18 @@
         /// <param name="rowContr"></param>
         private async System.Threading.Tasks.Task<bool> DeleteMsg(string strId, FrameListControl frameList, RowLayoutControl rowContr)
         {
-            var pra = new { Id = strId };
-            var result = await UserCenterLogic.GetResultStatuByRequestHttps("ZigbeeUsers/DeletePushMessage", true, pra);
-            if (result == true && frameList != null)
+            string strUrl = "ZigbeeUsers/DeletePushMessage?Id=" + strId;
+
+            var result = await Common.CommonPage.Instance.DoRequestZigbeeHttpsInterface(strUrl, null, Common.Config.Instance.Token, "GET");
+            if (result == null)
+            {
+                return UserCenterLogic.CheckNotEorrorMsg(null, "ZigbeeUsers/DeletePushMessage", null, null);
+            }
+            var revertObj = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.ResponseEntity.ResponsePack>(Encoding.UTF8.GetString(result));
+            //妫�娴嬫槸鍚﹀瓨鍦ㄩ敊璇俊鎭�
+            var falge = UserCenterLogic.CheckNotEorrorMsg(revertObj, "ZigbeeUsers/DeletePushMessage", null, null);
+
+            if (falge == true && frameList != null)
             {
                 HdlThreadLogic.Current.RunMain(() =>
                 {
@@ -347,7 +359,7 @@
                     this.AdjustControlLocation(frameList, rowContr);
                 });
             }
-            return result;
+            return falge;
         }
 
         /// <summary>
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/UserMain/QRCodeForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/UserMain/QRCodeForm.cs
index 543e0e4..0746732 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/UserMain/QRCodeForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/UserMain/QRCodeForm.cs
@@ -25,7 +25,7 @@
         /// </summary>
         private void InitMiddleFrame()
         {
-            uint roundHeigth = (uint)Application.GetMinRealAverage(6);
+            uint roundHeigth = 6;
 
             //鑳屾櫙妗�
             var frameBack = new FrameLayout();
diff --git a/ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs b/ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs
index 1d8f197..24a92c3 100755
--- a/ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs
+++ b/ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs
@@ -5,6 +5,7 @@
 using ZigBee.Device;
 using Shared.Phone.Device.CommonForm;
 using Shared.Phone.UserCenter.DoorLock;
+using System.Timers;
 
 namespace Shared.Phone.UserView
 {
@@ -78,6 +79,14 @@
         /// floorBtn
         /// </summary>
         private Button floorBtn;
+        /// <summary>
+        /// timeDic
+        /// </summary>
+        private Dictionary<string, Timer> timerDic = new Dictionary<string, Timer> { };
+        /// <summary>
+        /// sceneScrolView
+        /// </summary>
+        private VerticalScrolViewLayout sceneScrolView ;
         #endregion
 
         #region 鈼� 鎺ュ彛____________________________
@@ -250,6 +259,15 @@
                                                 //姝ゅ睘鎬ф弿杩版亽娓╄澶囨澶勪簬鍝妯″紡
                                                 ac.currentSystemMode = attriButeList[0].AttriButeData;
                                                 ac.LastDateTime = DateTime.Now;
+                                                break;
+
+                                            case 4099:
+                                                var value = Convert.ToString(attriButeList[0].AttriButeData, 2).PadLeft(16, '0');
+                                                var modeStr = value.Substring(value.Length - 5, 5);
+                                                for (int j = 0; j < modeStr.Length; j++)
+                                                {
+                                                    ac.listSupportMode[j] = Convert.ToInt32(modeStr[j]) == 49 ? 1 : 0;
+                                                }
                                                 break;
                                         }
                                         (rowFL.GetChildren(0) as FunctionMainView).IsSelected = ac.currentSystemMode != 0;
@@ -605,10 +623,7 @@
             //娑堟伅
             messageBtn.MouseUpEventHandler += (send, e) =>
             {
-                var roomList = new Shared.Phone.Device.Room.RoomManagement();
-                HomePage.Instance.AddChidren(roomList);
-                HomePage.Instance.PageIndex += 1;
-                roomList.Show();
+               
             };
 
             #endregion
@@ -667,6 +682,7 @@
 
                     roomListBtn.MouseUpEventHandler += (send, e) =>
                     {
+                        CommonPage.Instance.IsDrawerLockMode = true;
                         var editRoom = new Device.Room.EditRoom();
                         HomePage.Instance.AddChidren(editRoom);
                         HomePage.Instance.PageIndex += 1;
@@ -677,8 +693,6 @@
                         };
                     };
                 }
-
-
 
                 var functionSceneView = new FrameLayout()
                 {
@@ -788,9 +802,10 @@
             var floorFL = new Phone.Device.Category.SelectFloor();
             AddChidren(floorFL);
             floorFL.Init(35, 153);
-            floorFL.FloorAction = (floorName) =>
+            floorFL.changeFloor = true;
+            floorFL.FloorAction = (floorId) =>
             {
-                floorBtn.Text = floorName;
+                floorBtn.Text = Config.Instance.Home.GetFloorNameById(floorId);
                 Show();
             };
         }
@@ -970,21 +985,6 @@
                         deviceVerticalScrolViewLayout.AddChidren(itemView);
                     }
 
-                    //鍒犻櫎璁惧
-                    EventHandler<MouseEventArgs> delEvent = (sender, e) =>
-                    {
-                        var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.ConfirmDelete), Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
-                        alert.Show();
-                        alert.ResultEventHandler += (send1, e1) =>
-                        {
-                            if (e1)
-                            {
-                                Room.CurrentRoom.DeleteDevice(device.FileName);
-                                //RefreshBodyView();
-                                deviceVerticalScrolViewLayout.RemoveViewByTag((sender as Button).Tag);
-                            }
-                        };
-                    };
                     //鏀惰棌
                     EventHandler<MouseEventArgs> collectionEvent = (sender, e) =>
                     {
@@ -1098,6 +1098,7 @@
 
                         lightView.CardBG.MouseUpEventHandler += (sender, e) =>
                         {
+                            CommonPage.Instance.IsDrawerLockMode = true;
                             var rollerShadeControl = new Phone.Device.Curtain.RollerShadeControl();
                             UserView.HomePage.Instance.AddChidren(rollerShadeControl);
                             UserView.HomePage.Instance.PageIndex += 1;
@@ -1214,6 +1215,7 @@
 
                         lightView.CardBG.MouseUpEventHandler += (sender, e) =>
                         {
+                            CommonPage.Instance.IsDrawerLockMode = true;
                             if (device.CommonDevice.DfunctionType == DeviceFunctionType.A寮�鍏�)
                             {
                                 var lightControl = new Phone.Device.Light.OnOffControl();
@@ -1340,6 +1342,7 @@
 
                         lightView.CardBG.MouseUpEventHandler += (sender, e) =>
                         {
+                            CommonPage.Instance.IsDrawerLockMode = true;
                             var lightControl = new Phone.Device.Light.AirSwitchControl();
                             UserView.HomePage.Instance.AddChidren(lightControl);
                             UserView.HomePage.Instance.PageIndex += 1;
@@ -1372,6 +1375,7 @@
                                 ac.ReadFanMode();
                                 ac.ReadSystemMode();
                                 ac.ReadSystemFansSwingMode();
+                                ac.ReadModeSupport();
                             });
                         }
                         else
@@ -1387,6 +1391,7 @@
                                 ac.ReadFanMode();
                                 ac.ReadSystemMode();
                                 ac.ReadSystemFansSwingMode();
+                                ac.ReadModeSupport();
                             }
                         }
                         var lightView = new FunctionMainView(xx, yy);
@@ -1457,6 +1462,7 @@
 
                         lightView.CardBG.MouseUpEventHandler += (sender, e) =>
                         {
+                            CommonPage.Instance.IsDrawerLockMode = true;
                             var lightControl = new Phone.Device.AC.ACControl();
                             UserView.HomePage.Instance.AddChidren(lightControl);
                             UserView.HomePage.Instance.PageIndex += 1;
@@ -1572,6 +1578,7 @@
 
                         lightView.CardBG.MouseUpEventHandler += (sender, e) =>
                         {
+                            CommonPage.Instance.IsDrawerLockMode = true;
                             var dimmableLightControl = new Phone.Device.Light.DimmableLightControl();
                             UserView.HomePage.Instance.AddChidren(dimmableLightControl);
                             UserView.HomePage.Instance.PageIndex += 1;
@@ -1626,6 +1633,7 @@
 
                         lightView.CardBG.MouseUpEventHandler += (sender, e) =>
                         {
+                            CommonPage.Instance.IsDrawerLockMode = true;
                             var userDoorLockPage = new UserDoorLockPage(Room.CurrentRoom, device);
                             HomePage.Instance.AddChidren(userDoorLockPage);
                             HomePage.Instance.PageIndex += 1;
@@ -1707,7 +1715,7 @@
             }
             else
             {
-                var sceneScrolView = new VerticalScrolViewLayout { };
+                sceneScrolView = new VerticalScrolViewLayout { };
                 functionSceneBodyView.AddChidren(sceneScrolView);
                 for (int i = 0; i < sceneList.Count; i++)
                 {
@@ -1731,108 +1739,73 @@
 
                     var sceneView = new SceneMainView(xx, yy);
                     itemView.AddChidren(sceneView);
-                    sceneView.Init();
-                    sceneView.SetSceneNameText(scene.Name);
-                    sceneView.SetIcon($"SceneIcon/{i}.png");
-                    sceneView.SetCollect(Common.Room.CurrentRoom.GetLoveRoom().SceneUIFilePathList.Contains(scene.FileName));
-
-                    if (scene.SceneDelayTime == 0)
-                    {
-                        sceneView.SetTimeImage();
-                    }
-                    else
-                    {
-                        sceneView.SetTimeText(CommonFormResouce.GetTimeString(scene.SceneDelayTime));
-                    }
-
-                    sceneView.TimeButton.MouseUpEventHandler += (sender, e) =>
-                    {
-                        var timeSelect = new SelectTime();
-                        CommonPage.Instance.AddChidren(timeSelect);
-                        timeSelect.TempTime = scene.DelayTime;
-                        timeSelect.Init();
-                        timeSelect.TimeAction = (t) =>
-                        {
-                            scene.SceneDelayTime = t;
-                            if (t > 0)
-                            {
-                                sceneView.SetTimeText(CommonFormResouce.GetTimeString(scene.SceneDelayTime));
-                            }
-                            else
-                            {
-                                sceneView.SetTimeImage();
-                            }
-                        };
-
-                    };
-
-                    //璋冪敤鍦烘櫙
-                    EventHandler<MouseEventArgs> sceneUpHandler = async (sender, e) =>
-                    {
-                        //1鎴愬姛 0澶辫触
-                        //鍚庨潰琛ヤ笂鐩稿叧鎻愮ず
-                        // Error鍙傛暟鍚箟
-                        //<para>1锛氱綉鍏虫棤娉曡В鏋愬懡浠ゆ暟鎹��</para>
-                        //<para>2锛氬崗璋冨櫒姝e湪鍗囩骇鎴栧浠�/鎭㈠鏁版嵁
-                        //<para>3锛氭搷浣滆澶�/缁�/鍦烘櫙涓嶅瓨鍦�</para>
-                        //<para>4锛氬叾浠栭敊璇�</para>
-                        //<para>5锛氭暟鎹紶杈撻敊璇紙鍦ㄦ煇娆″鎴风鍚戠綉鍏冲彂閫佹暟鎹殑杩囩▼涓紝缃戝叧鍦ㄥ悎鐞嗘椂闂磋寖鍥村唴鎺ユ敹瀹㈡埛绔暟鎹笉瀹屾暣瀵艰嚧璇ラ敊璇彂鐢熴�傚瀹㈡埛绔悜缃戝叧涓�娆″彂閫�100涓瓧鑺傜殑鏁版嵁锛屼絾缃戝叧绛夊緟鎺ユ敹浜嗕竴绉掑彧鎺ユ敹浜�80涓瓧鑺傘�傚彂鐢熻閿欒锛岀綉鍏冲皢涓诲姩鍏抽棴瀹㈡埛绔繛鎺ワ級</para>
-                        var sceneOpenAllData = await ZigBee.Device.Scene.ControlSceneAsync(scene.Id, scene.SceneDelayTime);
-                        if (sceneOpenAllData == null || sceneOpenAllData.sceneOpenData == null)
-                        {
-                            return;
-                        }
-                        if (sceneOpenAllData.sceneOpenData.Result == 0)
-                        {
-                            if (sceneOpenAllData.errorResponData == null)
-                            {
-                                return;
-                            }
-                            CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.ControlSceneFail);
-                        }
-                    };
-                    //鏀惰棌
-                    EventHandler<MouseEventArgs> collectionEvent = (sender, e) =>
-                    {
-                        (sender as Button).IsSelected = !(sender as Button).IsSelected;
-                        if ((sender as Button).IsSelected)
-                        {
-                            //scene.IsCollected = true;
-                            Room.CurrentRoom.GetLoveRoom().AddScene(scene);
-                        }
-                        else
-                        {
-                            //scene.IsCollected = false;
-                            Room.CurrentRoom.GetLoveRoom().RemoveScene(scene);
-                        }
-                        scene.Save();
-
-                        //if ((sender as Button).IsSelected)
-                        //{
-                        //    scene.Collect(false);
-                        //    (sender as Button).IsSelected = false;
-                        //}
-                        //else
-                        //{
-                        //    scene.Collect(true);
-                        //    (sender as Button).IsSelected = true;
-                        //}
-                        //scene.Save();
-                        //if (Room.CurrentRoom.IsLove)
-                        //{
-                        //    RefreshBodyView();
-                        //}
-
-                    };
-
-                    sceneView.CollectButton.MouseUpEventHandler += collectionEvent;
-                    sceneView.MouseUpEventHandler += sceneUpHandler;
-                    sceneView.SceneIcon.MouseUpEventHandler += sceneUpHandler;
-                    sceneView.SceneNameButton.MouseUpEventHandler += sceneUpHandler;
-
+                    sceneView.Init(scene);
                 }
+                GetDelayScene(sceneScrolView);
             }
+        }
 
+        /// <summary>
+        /// GetDelayScene
+        /// </summary>
+        /// <param name="scrolViewLayout"></param>
+        private void GetDelayScene(VerticalScrolViewLayout scrolViewLayout)
+        {
+            new System.Threading.Thread(async () =>
+            {
+                var catDelaySceneResponseAllData = await Scene.CatDelaySceneAsync();
+                if (catDelaySceneResponseAllData == null)
+                {
+                    return;
+                }
+                var catDelaySceneResponseData = catDelaySceneResponseAllData.catDelaySceneResponseData;
+                if (catDelaySceneResponseData == null || catDelaySceneResponseData.DelayScenesList.Count == 0)
+                {
+                    return;
+                }
+                var delayList = catDelaySceneResponseData.DelayScenesList;
+
+                Application.RunOnMainThread(() =>
+                {
+                    for (int i = 0; scrolViewLayout != null && i < scrolViewLayout.ChildrenCount; i++)
+                    {
+                        var iView = scrolViewLayout.GetChildren(i) as FrameLayout;
+                        for (int j = 0; iView != null && j < iView.ChildrenCount; j++)
+                        {
+                            var sceneView = iView.GetChildren(j) as SceneMainView;
+                            foreach (var delayScenesListResponseInfo in delayList)
+                            {
+                                if (delayScenesListResponseInfo.ScenesId == sceneView.scene.Id)
+                                {
+                                    var times = delayScenesListResponseInfo.RemainTime;
+                                    sceneView.scene.RemainTime = times;
+                                    new System.Threading.Thread(() =>
+                                    {
+                                        while (times > 0)
+                                        {
+                                            System.Threading.Thread.Sleep(1000);
+                                            Application.RunOnMainThread(() =>
+                                            {
+                                                sceneView.SetTimeText(CommonFormResouce.GetTimeString(times));
+                                            });
+                                            times -= 1;
+                                        }
+                                        Application.RunOnMainThread(() =>
+                                        {
+                                            sceneView.SetTimeImage();
+                                        });
+                                    })
+                                    { IsBackground = true }.Start();
+
+                                    break;
+                                }
+                            }
+
+                        }
+                    }
+                });
+            })
+            { IsBackground = true }.Start();
         }
 
         #endregion
diff --git a/ZigbeeApp/Shared/Phone/UserView/UserPage.cs b/ZigbeeApp/Shared/Phone/UserView/UserPage.cs
index 8ffd033..68d4804 100755
--- a/ZigbeeApp/Shared/Phone/UserView/UserPage.cs
+++ b/ZigbeeApp/Shared/Phone/UserView/UserPage.cs
@@ -187,6 +187,18 @@
                                         ac.currentSystemMode = attriButeList[0].AttriButeData;
                                         ac.LastDateTime = DateTime.Now;
                                         break;
+                                    case 4099:
+                                        var value = Convert.ToString(attriButeList[0].AttriButeData, 2).PadLeft(16, '0');
+                                        var modeStr = value.Substring(value.Length - 5, 5);
+                                        for (int j = 0; j < modeStr.Length; j++)
+                                        {
+                                            ac.listSupportMode[j] = Convert.ToInt32(modeStr[j]) == 49 ? 1 : 0;
+                                        }
+                                        break;
+
+                                    case 4097:
+                                        ac.CleanStatu = attriButeList[0].AttriButeData == 42;
+                                        break;
                                 }
                             }
 
@@ -477,15 +489,18 @@
             if (sender == Instance.homePageIMG || sender == Instance.homePageName)
             {
                 //涓婚〉
+                CommonPage.Instance.IsDrawerLockMode = false;
                 Instance.homePageName.IsSelected = true;
                 Instance.homePageIMG.IsSelected = true;
                 var home = new UserHomeView { };
                 Instance.BodyView.AddChidren(home);
                 home.Show();
+                
             }
             else if (sender == Instance.categoryIMG || sender==Instance.categoryName)
             {
                 //鍒嗙被
+                CommonPage.Instance.IsDrawerLockMode = true;
                 Instance.categoryName.IsSelected = true;
                 Instance.categoryIMG.IsSelected = true;
                 var category = new Phone.Device.Category.Category { };
@@ -494,7 +509,8 @@
             }
             else if (sender == Instance.settingIMG || sender==Instance.settingName)
             {
-                 //涓汉涓績
+                //涓汉涓績
+                CommonPage.Instance.IsDrawerLockMode = true;
                 Instance.settingName.IsSelected = true;
                 Instance.settingIMG.IsSelected = true;
                 var form = new UserCenter.UserMain.UserMainForm();
diff --git a/ZigbeeApp/Shared/Phone/ZigBee/Common/Application.cs b/ZigbeeApp/Shared/Phone/ZigBee/Common/Application.cs
index f4c69b6..93698ba 100755
--- a/ZigbeeApp/Shared/Phone/ZigBee/Common/Application.cs
+++ b/ZigbeeApp/Shared/Phone/ZigBee/Common/Application.cs
@@ -65,7 +65,7 @@
                             //鏈�鍚庡啀鏂紑mqtt杩炴帴
                             for (int i = 0; i < list.Count; i++)
                             {
-                                list[i].DisConnect("1");
+                                list[i].DisConnectLocalMqttClient("1");
                             }
                             list.Clear();
                             oldHomeID = Shared.Common.Config.Instance.HomeId;
@@ -111,6 +111,10 @@
                         else
                         {
                             ZbGateway.IsRemote = true;
+                            for (int i = 0; i < ZbGateway.GateWayList.Count; i++)
+                            {
+                                 ZbGateway.GateWayList[i].DisConnectLocalMqttClient("1");
+                            }
                         }
 
                         searchCount--;
@@ -208,8 +212,8 @@
                                     var gateWay = ZbGateway.GateWayList.Find(obj => obj.getGatewayBaseInfo != null && obj.getGatewayBaseInfo.gwID == zbGateWay.getGatewayBaseInfo.gwID);
                                     if (gateWay == null)
                                     {
-                                        await zbGateWay.StartLocalMqtt(ipAddress);
                                         ZbGateway.GateWayList.Add(zbGateWay);
+                                        await zbGateWay.StartLocalMqtt(ipAddress);
                                         NewGateWayAction?.Invoke(zbGateWay);
                                     }
                                     else
@@ -219,11 +223,11 @@
                                         gateWay.GatewayOnlineFlage = true;
                                         if (gateWay.getGatewayBaseInfo.IpAddress != ipAddress)
                                         {
-                                            gateWay.DisConnect("2");
+                                            await gateWay.DisConnectLocalMqttClient("2");
                                             ZbGateway.GateWayList.Remove(gateWay);
                                             gateWay = zbGateWay;
-                                            await zbGateWay.StartLocalMqtt(ipAddress);
                                             ZbGateway.GateWayList.Add(gateWay);
+                                            await zbGateWay.StartLocalMqtt(ipAddress);
                                         }
                                         else
                                         {
@@ -270,7 +274,7 @@
                     try
                     {
                         //瀹氭椂妫�娴嬭繙绋嬭繛鎺ユ儏鍐�
-                        await ZbGateway.StartCloudMqtt(); 
+                        await ZbGateway.StartRemoteMqtt(); 
                         if (!ZbGateway.IsRemote)
                         {
                             System.Threading.Thread.Sleep(500);
diff --git a/ZigbeeApp/Shared/Phone/ZigBee/Device/AC.cs b/ZigbeeApp/Shared/Phone/ZigBee/Device/AC.cs
index bcaec98..b70e603 100755
--- a/ZigbeeApp/Shared/Phone/ZigBee/Device/AC.cs
+++ b/ZigbeeApp/Shared/Phone/ZigBee/Device/AC.cs
@@ -98,6 +98,11 @@
         public int[] listSupportMode = new int[5] { 0, 0, 0, 0, 0 };
 
         /// <summary>
+        /// 杩囨护缃戞竻娲楃姸鎬�
+        /// </summary>
+        public bool CleanStatu = false;
+
+        /// <summary>
         /// 鑾峰彇褰撳墠瀹ゅ唴娓╁害.
         /// <para>AttriButeId=0 (鍏堣皟鐢ㄥ彂鐜板睘鎬ф帴鍙o紝鏌ョ湅璁惧鏄惁鏀寔璇ユ帴鍙g殑灞炴�э級</para>
         /// </summary>
@@ -179,6 +184,14 @@
         }
 
         /// <summary>
+        /// 杩囨护缃戞竻娲楃姸鎬�
+        /// </summary>
+        public void ReadCleanStatu()
+        {
+            ReadAttri(Device.Cluster_ID.Thermostat, AttriButeId.CleanStatu);
+        }
+
+        /// <summary>
         /// 鎵妯″紡
         /// </summary>
         public enum FanSwingMode
diff --git a/ZigbeeApp/Shared/Phone/ZigBee/Device/BindObj.cs b/ZigbeeApp/Shared/Phone/ZigBee/Device/BindObj.cs
index 51ae471..4953b41 100755
--- a/ZigbeeApp/Shared/Phone/ZigBee/Device/BindObj.cs
+++ b/ZigbeeApp/Shared/Phone/ZigBee/Device/BindObj.cs
@@ -13,7 +13,6 @@
         /// </summary>
         public async System.Threading.Tasks.Task<AddedDeviceBindResponseAllData> AddDeviceBindAsync(AddBindData addBindData)
         {
-
             return await System.Threading.Tasks.Task.Run(async () =>
             {
                 var result = new AddedDeviceBindResponseAllData();
@@ -91,9 +90,9 @@
                             {
                                 var dInfo = new JObject{
                             { "BindMacAddr",bindInfo.BindMacAddr},
-                         { "BindEpoint", bindInfo.BindEpoint} ,
-                         { "BindCluster", bindInfo.BindCluster} ,
-                         { "BindType",bindInfo.BindType}
+                            { "BindEpoint", bindInfo.BindEpoint} ,
+                            { "BindCluster", bindInfo.BindCluster} ,
+                            { "BindType",bindInfo.BindType}
                             };
                                 bindList.Add(dInfo);
                             }
@@ -101,15 +100,15 @@
                             {
                                 var dInfo = new JObject{
                              { "BindCluster", bindInfo.BindCluster} ,
-                         { "BindType",bindInfo.BindType},
-                         { "BindScenesId", bindInfo.BindScenesId}
+                             { "BindType",bindInfo.BindType},
+                             { "BindScenesId", bindInfo.BindScenesId}
                             };
                                 bindList.Add(dInfo);
                             }
                         }
                         var data = new JObject{
-                    {"BindName",addBindData.BindName},
-                    { "BindList", bindList }
+                            {"BindName",addBindData.BindName},
+                             { "BindList", bindList }
                     };
                         jObject.Add("Data", data);
                         //ZbGateway.MainGateWay.CurrentGateWayId = ZbGateway.MainGateWay.getGatewayBaseInfo?.gwID;
@@ -128,7 +127,21 @@
                     {
                         continue;
                     }
-                    if (0 < result.addedDeviceBindResponseData.BindList.FindAll((obj) => obj.BindType == 0 && obj.Result == 2).Count)
+                    if (0 < result.addedDeviceBindResponseData.BindList.FindAll((obj) => obj.BindType == 0 && obj.Result == 1).Count)
+                    {
+                        if (result.addBindResultResponseData != null)
+                        {
+                            break;
+                        }
+                    }
+                    else if (0 < result.addedDeviceBindResponseData.BindList.FindAll((obj) => obj.BindType == 0 && obj.Result == 2).Count)
+                    {
+                        if (result.addBindResultResponseData != null)
+                        {
+                            break;
+                        }
+                    }
+                    else if (0 < result.addedDeviceBindResponseData.BindList.FindAll((obj) => obj.BindType == 0 && obj.Result == 3).Count)
                     {
                         if (result.addBindResultResponseData != null)
                         {
@@ -406,7 +419,6 @@
                 }
                 catch { }
 
-
                 var dateTime = DateTime.Now;
                 while ((DateTime.Now - dateTime).TotalMilliseconds < WaitReceiveDataTime)
                 {
@@ -415,7 +427,21 @@
                     {
                         continue;
                     }
-                    if (0 < responseData.delDeviceBindResponseData.RemoveBindList.FindAll((obj) => obj.BindType == 0 && obj.Result == 3).Count)
+                    if (0 < responseData.delDeviceBindResponseData.RemoveBindList.FindAll((obj) => obj.BindType == 0 && obj.Result == 1).Count)
+                    {
+                        if (responseData.removeBindResultResponseData != null)
+                        {
+                            break;
+                        }
+                    }
+                    else if (0 < responseData.delDeviceBindResponseData.RemoveBindList.FindAll((obj) => obj.BindType == 0 && obj.Result == 3).Count)
+                    {
+                        if (responseData.removeBindResultResponseData != null)
+                        {
+                            break;
+                        }
+                    }
+                    else if (0 < responseData.delDeviceBindResponseData.RemoveBindList.FindAll((obj) => obj.BindType == 0 && obj.Result == 4).Count)
                     {
                         if (responseData.removeBindResultResponseData != null)
                         {
@@ -427,14 +453,12 @@
                         break;
                     }
                 }
-
                 if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime)
                 {
                     responseData.errorMessageBase = "鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔";
                 }
                 mainGateway.Actions -= action;
                 System.Console.WriteLine("DeviceBind/DelBind_Actions 閫�鍑�" + System.DateTime.Now.ToString());
-
                 return responseData;
             });
         }
diff --git a/ZigbeeApp/Shared/Phone/ZigBee/Device/Enum.cs b/ZigbeeApp/Shared/Phone/ZigBee/Device/Enum.cs
index b9c7dd7..79b5835 100755
--- a/ZigbeeApp/Shared/Phone/ZigBee/Device/Enum.cs
+++ b/ZigbeeApp/Shared/Phone/ZigBee/Device/Enum.cs
@@ -264,6 +264,10 @@
         /// 绌鸿皟鎽嗛
         /// </summary>
         FanSwing = 4096,
+        /// <summary>
+        /// 杩囪檻缃戞竻娲楁爣蹇�:42
+        /// </summary>
+        CleanStatu = 4097,
 
         #endregion
 
diff --git a/ZigbeeApp/Shared/Phone/ZigBee/Device/Scene.cs b/ZigbeeApp/Shared/Phone/ZigBee/Device/Scene.cs
index 1f9530c..267baa4 100755
--- a/ZigbeeApp/Shared/Phone/ZigBee/Device/Scene.cs
+++ b/ZigbeeApp/Shared/Phone/ZigBee/Device/Scene.cs
@@ -55,11 +55,11 @@
         {
             /// <summary>
             /// Error鍙傛暟鍚箟
-            ///<para>1锛氱綉鍏虫棤娉曡В鏋愬懡浠ゆ暟鎹��</para> 
+            ///<para>1锛氱綉鍏虫棤娉曡В鏋愬懡浠ゆ暟鎹��</para>
             ///<para>2锛氬崗璋冨櫒姝e湪鍗囩骇鎴栧浠�/鎭㈠鏁版嵁
-            ///<para>3锛氭搷浣滆澶�/缁�/鍦烘櫙涓嶅瓨鍦�</para> 
-            ///<para>4锛氬叾浠栭敊璇�</para> 
-            ///<para>5锛氭暟鎹紶杈撻敊璇紙鍦ㄦ煇娆″鎴风鍚戠綉鍏冲彂閫佹暟鎹殑杩囩▼涓紝缃戝叧鍦ㄥ悎鐞嗘椂闂磋寖鍥村唴鎺ユ敹瀹㈡埛绔暟鎹笉瀹屾暣瀵艰嚧璇ラ敊璇彂鐢熴�傚瀹㈡埛绔悜缃戝叧涓�娆″彂閫�100涓瓧鑺傜殑鏁版嵁锛屼絾缃戝叧绛夊緟鎺ユ敹浜嗕竴绉掑彧鎺ユ敹浜�80涓瓧鑺傘�傚彂鐢熻閿欒锛岀綉鍏冲皢涓诲姩鍏抽棴瀹㈡埛绔繛鎺ワ級</para> 
+            ///<para>3锛氭搷浣滆澶�/缁�/鍦烘櫙涓嶅瓨鍦�</para>
+            ///<para>4锛氬叾浠栭敊璇�</para>
+            ///<para>5锛氭暟鎹紶杈撻敊璇紙鍦ㄦ煇娆″鎴风鍚戠綉鍏冲彂閫佹暟鎹殑杩囩▼涓紝缃戝叧鍦ㄥ悎鐞嗘椂闂磋寖鍥村唴鎺ユ敹瀹㈡埛绔暟鎹笉瀹屾暣瀵艰嚧璇ラ敊璇彂鐢熴�傚瀹㈡埛绔悜缃戝叧涓�娆″彂閫�100涓瓧鑺傜殑鏁版嵁锛屼絾缃戝叧绛夊緟鎺ユ敹浜嗕竴绉掑彧鎺ユ敹浜�80涓瓧鑺傘�傚彂鐢熻閿欒锛岀綉鍏冲皢涓诲姩鍏抽棴瀹㈡埛绔繛鎺ワ級</para>
             /// </summary>
             public int Error;
         }
@@ -142,17 +142,17 @@
         /// <para>sceneName:鍙栬鍦烘櫙鐨勫悕瀛�</para>
         /// </summary>
         public static async System.Threading.Tasks.Task<GetSceneIdAllData> GetSceneNewIdAsync(string sceneName)
-        { 
+        {
             return await System.Threading.Tasks.Task.Run(async () =>
             {
                 GetSceneIdAllData d = null;
                 var mainGateway = ZbGateway.MainGateWay;
                 if (mainGateway == null)
                 {
-                    d = new GetSceneIdAllData {errorMessageBase = "褰撳墠娌℃湁涓荤綉鍏�" }; 
+                    d = new GetSceneIdAllData {errorMessageBase = "褰撳墠娌℃湁涓荤綉鍏�" };
                     return d;
                 }
- 
+
                 Action<string, string> action = (topic, message) =>
                 {
                     var gatewayID = topic.Split('/')[0];
@@ -222,7 +222,7 @@
                 if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime)
                 {
                      d = new GetSceneIdAllData { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" };
- 
+
                 }
                 mainGateway.Actions -= action;
                 System.Console.WriteLine("Scene/GetNewId_Actions 閫�鍑�" + System.DateTime.Now.ToString());
@@ -282,7 +282,7 @@
         ///鑾峰彇涓�涓満鏅殑鎵�鏈変俊鎭� .
         ///</summary>
         public static async System.Threading.Tasks.Task<GetSceneAllData> GetSceneAllInfoAsync()
-        { 
+        {
             return await System.Threading.Tasks.Task.Run(async () => {
                 GetSceneAllData d = null;
                 var mainGateway = ZbGateway.MainGateWay;
@@ -310,7 +310,7 @@
                         {
                             d = new GetSceneAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error)};
                         }
-                    } 
+                    }
 
                     if (topic == gatewayID + "/" + "Scene/GetAllInfo_Respon")
                     {
@@ -396,7 +396,7 @@
         /// 鑾峰彇鎵�鏈夊満鏅殑鎵�鏈変俊鎭�
         /// </summary>
         [System.Serializable]
-        public class GetSceneAllInfo:CommonDevice 
+        public class GetSceneAllInfo:CommonDevice
         {
             /// <summary>
             ///鍦烘櫙鎬绘暟
@@ -486,7 +486,7 @@
 
 
 
-            
+
 
         }
         /// <summary>
@@ -497,17 +497,17 @@
         {
             /// <summary>
             /// 浠诲姟绫诲瀷銆�
-            ///<para>1锛氬紑鍏� 锛堣澶囧叿鏈夊紑鍏冲姛鑳芥椂鍙敤锛�</para> 
-            ///<para>3锛氫寒搴﹁皟鏁达紙璁惧鍏锋湁浜害璋冭妭鍔熻兘鏃跺彲鐢級</para> 
-            ///<para>4锛氶鑹茶皟鏁� 锛堣澶囧叿鏈夐鑹茶皟鑺傚姛鑳芥椂鍙敤锛�</para> 
-            ///<para>5锛氭亽娓╁櫒锛堣澶囧叿鏈夋亽娓╁櫒鍔熻兘鏃跺彲鐢級</para> 
-            ///<para>6: 绐楀笜璁惧锛堣澶囧叿鏈夌獥甯樺姛鑳芥椂鍙敤锛�</para> 
-            ///<para>7锛氳澶噄dentify璇嗗埆銆�</para> 
-            ///<para>8锛氬紑鍏虫姤璀︽ā寮�  </para> 
+            ///<para>1锛氬紑鍏� 锛堣澶囧叿鏈夊紑鍏冲姛鑳芥椂鍙敤锛�</para>
+            ///<para>3锛氫寒搴﹁皟鏁达紙璁惧鍏锋湁浜害璋冭妭鍔熻兘鏃跺彲鐢級</para>
+            ///<para>4锛氶鑹茶皟鏁� 锛堣澶囧叿鏈夐鑹茶皟鑺傚姛鑳芥椂鍙敤锛�</para>
+            ///<para>5锛氭亽娓╁櫒锛堣澶囧叿鏈夋亽娓╁櫒鍔熻兘鏃跺彲鐢級</para>
+            ///<para>6: 绐楀笜璁惧锛堣澶囧叿鏈夌獥甯樺姛鑳芥椂鍙敤锛�</para>
+            ///<para>7锛氳澶噄dentify璇嗗埆銆�</para>
+            ///<para>8锛氬紑鍏虫姤璀︽ā寮�  </para>
             ///<para>9锛歴quawk command</para>
             ///</summary>
             public int TaskType;
-            /// <summary> 
+            /// <summary>
             /// Data1鍙栧��
             /// <para>寮�鍏� :Data1锛堟暟鍊硷級: 0鍏�/1寮�</para>
             ///<para>浜害璋冩暣 Data1锛堟暟鍊硷級锛氫寒搴﹀��</para>
@@ -520,16 +520,16 @@
             /// </summary>
             public int Data1;
             /// <summary>
-            /// Data2鍙栧�� 
+            /// Data2鍙栧��
             /// <para>寮�鍏� Data2锛堟暟鍊硷級: 0</para>
             /// <para>浜害璋冩暣 Data2锛堟暟鍊硷級: 0</para>
             /// <para>棰滆壊璋冩暣 Data2锛堟暟鍊硷級锛氶ケ鍜屽害 </para>
-            ///<para> 鎭掓俯鍣―ata2鏁板�煎涓嬶細  
+            ///<para> 鎭掓俯鍣―ata2鏁板�煎涓嬶細
             /// 銆愬綋Data1=0|1|2鏃讹紝Data2涓鸿鍙樺寲鐨勫害鏁帮紝鍗曚綅锛�0.1鈩� 銆傘��
             ///銆愯嫢Data1=3锛孌ata2涓鸿璁惧畾鐨勭┖璋冩ā寮忥紙0-9锛夛紝0锛歰ff锛�1锛歛uto锛�3锛歝ool锛� 4锛歨eat 锛�5锛歟mergency heating, 6锛歱recooling锛�7锛歠an only 锛�8锛歞ry锛�9锛歴leep銆傘��
             ///銆愯嫢Data1=4|5锛孌ata2涓哄姞鐑垨鍒跺喎搴︽暟锛屽崟浣�0.01鎽勬皬搴︺�傘��
             ///銆愯嫢Data1=6锛孌ata2涓鸿璁惧畾鐨勯鎵囨ā寮忥紙0-6锛夛紝0锛歰ff锛�1锛歭ow锛�2锛歮edium锛�3锛歨igh锛�4锛歰n锛�5锛歛uto锛�6锛歴mart銆� </para>
-            ///<para>绐楀笜璁惧锛孌ata2鏁板�煎涓� 
+            ///<para>绐楀笜璁惧锛孌ata2鏁板�煎涓�
             ///銆愬綋Data1=4鎴�7锛孌ata2涓鸿皟鏁寸殑楂樺害鎴栧�炬枩瑙掑害 鍊炬枩瑙掑害鍗曚綅涓�0.1掳銆戙��
             ///銆愬綋Data1=5 鎴� 8锛孌ata2涓虹櫨鍒嗘瘮锛�0-100琛ㄧず0%-100%銆�</para>
             ///<para>璁惧identify璇嗗埆銆侱ata2锛堟暟鍊硷級: 0 </para>
@@ -746,7 +746,7 @@
         /// 鍦烘櫙鍒楄〃涓殑鍏蜂綋淇℃伅
         /// </summary>
         [System.Serializable]
-        public class ScenesListInfo:CommonDevice 
+        public class ScenesListInfo:CommonDevice
         {
             /// <summary>
             /// 鍦烘櫙ID
@@ -772,7 +772,7 @@
         ///鑾峰彇褰撳墠鍦烘櫙涓殑璁惧鍒楄〃淇℃伅
         /// </summary>
         public static async System.Threading.Tasks.Task<GetSceneDeviceListAllInfo> GetSceneDeviceListAsync(int scenesId)
-        { 
+        {
             return await System.Threading.Tasks.Task.Run(async () =>
             {
                 GetSceneDeviceListAllInfo d = null;
@@ -806,7 +806,7 @@
                     {
                         var sceneTemp = new Scene() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), GateWayId = mainGateway.getGatewayBaseInfo.gwID };
                         sceneTemp.sceneGetDeviceListObj = Newtonsoft.Json.JsonConvert.DeserializeObject<GetSceneDeviceListInfo>(jobject["Data"].ToString());
- 
+
                         if (sceneTemp.sceneGetDeviceListObj == null)
                         {
                             d = new GetSceneDeviceListAllInfo { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" };
@@ -822,7 +822,7 @@
                             {
                                 sDev.DeviceList = sceneTemp.sceneGetDeviceListObj.DeviceList;
                             }
- 
+
                             d = new GetSceneDeviceListAllInfo { getSceneDeviceListInfo = sceneTemp.sceneGetDeviceListObj };
                             System.Console.WriteLine($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}");
 
@@ -839,13 +839,13 @@
                     mainGateway.Send(("Scene/GetDeviceList"),System.Text.Encoding.UTF8.GetBytes(jObject.ToString()));
                 }
                 catch { }
-               
+
                 var dateTime = DateTime.Now;
                 while ((DateTime.Now - dateTime).TotalMilliseconds < WaitReceiveDataTime)
                 {
- 
+
                     await System.Threading.Tasks.Task.Delay(10);
- 
+
                     if (d != null)
                     {
                          break;
@@ -901,7 +901,7 @@
             ///鍦烘櫙ID
             /// </summary>
             public int ScenesId;
- 
+
             /// <summary>
             ///鍦烘櫙鏄惁澶勪簬寮�鍚姸鎬�
             ///0锛氬満鏅病鏈夊紑鍚�
@@ -926,12 +926,12 @@
         /// <summary>
         /// 娣诲姞鐩爣鍒扮綉鍏冲埌鍦烘櫙涓��
         /// <para>杩斿洖缁撴灉Result 1 鍔犲叆鎴愬姛</para>
-        /// <para>杩斿洖缁撴灉Result 0 鍔犲叆澶辫触</para> 
+        /// <para>杩斿洖缁撴灉Result 0 鍔犲叆澶辫触</para>
         /// </summary>
         /// <returns>The scene member.</returns>
         /// <param name="scenesId">Scenes identifier.</param>
         public static async System.Threading.Tasks.Task<AddSceneMemberResponseAllData> AddSceneMemberAsync(AddSceneMemberData sceneMemberData)
-        { 
+        {
             return await System.Threading.Tasks.Task.Run(async () =>
             {
                 AddSceneMemberResponseAllData d = null;
@@ -1083,7 +1083,7 @@
         }
 
         /// <summary>
-        /// 鑾峰彇鍦烘櫙涓坊鍔犵殑鎴愬憳 
+        /// 鑾峰彇鍦烘櫙涓坊鍔犵殑鎴愬憳
         /// </summary>
         public AddSceneMemberResponseData addSceneMemberData;
         /// <summary>
@@ -1126,7 +1126,7 @@
             public string DeviceAddr;
 
             /// <summary>
-            /// 璁惧绔彛鍙� 
+            /// 璁惧绔彛鍙�
             /// </summary>
             public int Epoint;
 
@@ -1184,7 +1184,7 @@
             /// </summary>
             public string DeviceAddr;
             /// <summary>
-            /// 璁惧绔彛鍙� 
+            /// 璁惧绔彛鍙�
             /// <para>Type=0鏃跺瓨鍦�</para>
             /// </summary>
             public int Epoint;
@@ -1196,16 +1196,16 @@
         }
         #endregion
 
-        #region 浠庣綉鍏崇殑鍦烘櫙涓Щ闄よ澶� 
+        #region 浠庣綉鍏崇殑鍦烘櫙涓Щ闄よ澶�
         /// <summary>
         /// 浠庣綉鍏崇殑鍦烘櫙涓Щ闄よ澶�.
         /// <para>杩斿洖缁撴灉Result/RemoveResult 1锛氱Щ闄ゅけ璐ワ紝鎴愬憳涓嶅瓨鍦ㄥ満鏅腑</para>
-        /// <para>杩斿洖缁撴灉Result/RemoveResult 0锛氱Щ闄ゆ垚鍔熻触</para> 
+        /// <para>杩斿洖缁撴灉Result/RemoveResult 0锛氱Щ闄ゆ垚鍔熻触</para>
         /// </summary>
         /// <returns>The scene member.</returns>
         /// <param name="scenesId">Scenes identifier.</param>
         public static async System.Threading.Tasks.Task<RemoveSceneMemberResponseAllData> RemoveSceneMemberAsync(SceneRemoveMemberData sceneRemoveMemberData)
-        { 
+        {
             return await System.Threading.Tasks.Task.Run(async () =>
             {
                 RemoveSceneMemberResponseAllData d = null;
@@ -1303,7 +1303,7 @@
                     }
                 }
                 catch{}
- 
+
                 var dateTime = DateTime.Now;
                 while ((DateTime.Now - dateTime).TotalMilliseconds < WaitReceiveDataTime)
                 {
@@ -1473,14 +1473,14 @@
             /// </summary>
             public int ElseScenesId;
         }
-        #endregion   
+        #endregion
 
         #region  淇敼鍦烘櫙鍚嶇О
         ///<summary >
         /// 淇敼鍦烘櫙鍚嶇О.
         /// </summary>
         public static async System.Threading.Tasks.Task<SceneRenameResponseAllData> RenameSceneAsync(int scenesId, string scenesName)
-        { 
+        {
             return await System.Threading.Tasks.Task.Run(async () =>
             {
                 SceneRenameResponseAllData d = null;
@@ -1536,7 +1536,7 @@
                     mainGateway.Send(("Scene/Rename"),System.Text.Encoding.UTF8.GetBytes(jObject.ToString()));
                 }
                 catch {}
-              
+
                 var dateTime = DateTime.Now;
                 while ((DateTime.Now - dateTime).TotalMilliseconds < WaitReceiveDataTime)
                 {
@@ -1620,7 +1620,7 @@
         ///<para>杩斿洖缁撴灉 2 娌℃湁璇ュ満鏅�</para>
         /// </summary>
         public static async System.Threading.Tasks.Task<RemoveSceneAllData> DeleteSceneAsync(int scenesId)
-        { 
+        {
             return await System.Threading.Tasks.Task.Run(async () =>
             {
                 RemoveSceneAllData d =null;
@@ -1686,7 +1686,7 @@
                     mainGateway.Send(("Scene/Remove"),jObject.ToString());
                 }
                 catch {}
-               
+
                 var dateTime = DateTime.Now;
                 while ((DateTime.Now - dateTime).TotalMilliseconds < WaitReceiveDataTime)
                 {
@@ -1762,7 +1762,7 @@
         /// <para>DelayTime:寤舵椂鎵ц鏃堕棿锛屽崟浣嶇</para>
         /// </summary>
         public static async System.Threading.Tasks.Task<SceneOpenAllData> ControlSceneAsync(int ScenesId,int delayTime)
-        { 
+        {
             return await System.Threading.Tasks.Task.Run(async () =>
             {
                 SceneOpenAllData d = null;
@@ -1817,7 +1817,7 @@
                     mainGateway.Send(("Scene/Open"),System.Text.Encoding.UTF8.GetBytes(jObject.ToString()));
                 }
                 catch {}
-               
+
                 var dateTime = DateTime.Now;
                 while ((DateTime.Now - dateTime).TotalMilliseconds < WaitReceiveDataTime )
                 {
@@ -1895,7 +1895,7 @@
         }
         #endregion
 
-        #region 鏌ョ湅姝e湪寤舵椂鐨勫満鏅� 
+        #region 鏌ョ湅姝e湪寤舵椂鐨勫満鏅�
         /// <summary>
         /// 鏌ョ湅姝e湪寤舵椂鐨勫満鏅�.
         /// </summary>
@@ -1970,7 +1970,7 @@
                 return d;
             });
         }
-       
+
         /// <summary>
         ///  鏌ョ湅姝e湪寤舵椂鐨勫満鏅俊鎭俊鎭弽棣�,缃戝叧鍙嶉淇℃伅
         /// </summary>
@@ -2005,9 +2005,9 @@
         /// </summary>
         [System.Serializable]
         public class CatDelaySceneResponseData
-        { 
+        {
             /// <summary>
-            /// 姝e湪寤舵椂鎵ц鐨勫満鏅� 
+            /// 姝e湪寤舵椂鎵ц鐨勫満鏅�
             /// </summary>
             public List<DelayScenesListResponseInfo> DelayScenesList = new List<DelayScenesListResponseInfo>();
         }
@@ -2032,7 +2032,7 @@
             /// </summary>
             public int RemainTime;
         }
-        #endregion 
+        #endregion
 
         ///<summary >
         /// 鍦烘櫙琚牬鍧忓弽棣�
@@ -2216,4 +2216,4 @@
         //    gateway.Send(("Scene/Open"), Common.SecuritySet.Encryption((jobject.ToString())));
         //}
     }
-}
\ No newline at end of file
+}
diff --git a/ZigbeeApp/Shared/Phone/ZigBee/Device/ZbGateway.cs b/ZigbeeApp/Shared/Phone/ZigBee/Device/ZbGateway.cs
index 48fbf24..8c1ef41 100755
--- a/ZigbeeApp/Shared/Phone/ZigBee/Device/ZbGateway.cs
+++ b/ZigbeeApp/Shared/Phone/ZigBee/Device/ZbGateway.cs
@@ -3090,27 +3090,46 @@
         /// </summary>
         IMqttClient localMqttClient = new MqttFactory().CreateMqttClient();
         bool localMqttIsConnecting;
+        public bool localIsConnected;
         /// <summary>
         /// 鎵嬫満鏍囪瘑
         /// </summary>
         static Guid currentGuid = Guid.NewGuid();
 
+        public async System.Threading.Tasks.Task SendAesKey()
+        {
+            if (PubKey != null)
+            {
+                IsEncry = false;
+                var rsaString = ZigBee.Common.SecuritySet.RSAEncrypt(PubKey, Password);
+                var resultVerityfy = await SendAesKeyAsync(rsaString);
+                if (resultVerityfy == null)
+                {
+                    resultVerityfy = await SendAesKeyAsync(rsaString);
+                }
+
+                if (resultVerityfy != null && resultVerityfy.Result == 0)
+                {
+                    IsEncry = true;
+                }
+            }
+        }
+
         public async System.Threading.Tasks.Task StartLocalMqtt(string brokerName)
-        {
+        {
+            if (localMqttIsConnecting
+                       || !Shared.Common.Config.Instance.IsLogin
+                       || Shared.Common.Config.Instance.HomeId == ""
+                       || localIsConnected)
+            {
+                return;
+            }
             await System.Threading.Tasks.Task.Factory.StartNew(async () =>
             {
                 try
                 {
                     lock (localMqttClient)
                     {
-                        if (localMqttIsConnecting
-                        || !Shared.Common.Config.Instance.IsLogin
-                        || Shared.Common.Config.Instance.HomeId == ""
-                        || localMqttClient.IsConnected)
-                        {
-                            return;
-                        }
-
                         //琛ㄧず鍚庨潰灏嗚繘琛岃繛鎺�
                         localMqttIsConnecting = true;
 
@@ -3129,10 +3148,11 @@
 
                         if (localMqttClient.DisconnectedHandler == null)
                         {
-                            localMqttClient.UseDisconnectedHandler((e) =>
-                            {
-                                IsEncry = false;
+                            localMqttClient.UseDisconnectedHandler(async (e) =>
+                            {
                                 DebugPrintLog($" 鏈湴杩炴帴鏂紑_缃戝叧IP:{brokerName}_缃戝叧鏄惁鍔�:{IsEncry}");
+                                await DisConnectLocalMqttClient("StartLocalMqtt.DisconnectedHandler");
+                                //await StartLocalMqtt("ReConnect");
                             });
                         }
                         if (localMqttClient.ConnectedHandler == null)
@@ -3141,33 +3161,44 @@
                             {
                                 DebugPrintLog($" 鏈湴杩炴帴鎴愬姛_缃戝叧IP:{brokerName}_缃戝叧鏄惁鍔�:{IsEncry}_褰撳墠瀵嗙爜:{Password}");
                                 IsRemote = false;
-                                if (PubKey != null)
-                                {
-                                    var rsaString = ZigBee.Common.SecuritySet.RSAEncrypt(PubKey, Password);
-                                    var resultVerityfy = await SendAesKeyAsync(rsaString);
-                                    if (resultVerityfy == null)
-                                    {
-                                        resultVerityfy = await SendAesKeyAsync(rsaString);
-                                    }
-                                    if (resultVerityfy != null && resultVerityfy.Result == 0)
-                                    {
-                                        IsEncry = true;
-                                    }
-                                }
                                 Shared.Phone.UserCenter.HdlGatewayLogic.Current.CheckGatewayByConnectChanged(Shared.Phone.UserCenter.GatewayConnectMode.WIFI);
-                                System.Console.WriteLine($"褰撳墠鏄綉鍏砏i-Fi鍦ㄩ�氳_{System.DateTime.Now.ToString()}");
                             });
-                        }
-                    }
-
-                    var options = new MQTTnet.Client.Options.MqttClientOptionsBuilder()
-                                   .WithClientId(currentGuid.ToString())
-               .WithTcpServer(brokerName, 1883)
-               .WithKeepAlivePeriod(TimeSpan.FromSeconds(20))
-               .WithCleanSession()
-               .WithCredentials("", "")
-               .Build();
-                    await localMqttClient.ConnectAsync(options, CancellationToken.None);
+                        }
+
+                        var dateTime = DateTime.Now;
+
+                        new System.Threading.Thread(async () =>
+                        {
+                            try
+                            {
+                                if (localMqttClient.Options == null)
+                                {
+                                    var options = new MQTTnet.Client.Options.MqttClientOptionsBuilder().WithClientId(currentGuid.ToString())
+                       .WithTcpServer(brokerName, 1883)
+                       .WithKeepAlivePeriod(TimeSpan.FromSeconds(20))
+                       .WithCleanSession()
+                        .WithCommunicationTimeout(TimeSpan.FromSeconds(4))
+                       .WithCredentials("", "")
+                       .Build();
+                                    await localMqttClient.ConnectAsync(options, CancellationToken.None);
+                                }
+                                else
+                                {
+                                    await DisConnectLocalMqttClient("StartLocalMqtt");
+                                    await localMqttClient.ReconnectAsync();
+                                }
+                                localIsConnected = true;
+                                await SendAesKey();
+                            }
+                            catch { }
+                            dateTime = DateTime.MinValue;
+                        })
+                        { IsBackground = true }.Start();
+                        while (dateTime != DateTime.MinValue)
+                        {
+                            System.Threading.Thread.Sleep(100);
+                        }
+                    }
                 }
                 catch (Exception ex)
                 {
@@ -3279,6 +3310,7 @@
         /// 杩滅▼MqttClient
         /// </summary>
         public static IMqttClient RemoteMqttClient= new MqttFactory().CreateMqttClient();
+        static bool remoteIsConnected; 
         private int IsLogin = 0;
         [Newtonsoft.Json.JsonIgnore]
         static Action actionTemp;
@@ -3288,22 +3320,21 @@
         /// </summary>
         /// <returns>The start.</returns>
         /// <param name="brokerName">Broker name.</param>
-        public static async System.Threading.Tasks.Task StartCloudMqtt()
-        {
+        public static async System.Threading.Tasks.Task StartRemoteMqtt()
+        {
+            if (remoteMqttIsConnecting
+                       || !Shared.Common.Config.Instance.IsLogin
+                       || Shared.Common.Config.Instance.HomeId == ""
+                       || remoteIsConnected)
+            {
+                return;
+            }
             await System.Threading.Tasks.Task.Factory.StartNew(async () =>
             {
                 try
                 {
                     lock (RemoteMqttClient)
                     {
-                        if (remoteMqttIsConnecting
-                        || !Shared.Common.Config.Instance.IsLogin
-                        || Shared.Common.Config.Instance.HomeId == ""
-                        || RemoteMqttClient.IsConnected)
-                        {
-                            return;
-                        }
-
                         //琛ㄧず鍚庨潰灏嗚繘琛岃繛鎺�
                         remoteMqttIsConnecting = true;
 
@@ -3323,9 +3354,11 @@
 
                         if (RemoteMqttClient.DisconnectedHandler == null)
                         {
-                            RemoteMqttClient.UseDisconnectedHandler((e) =>
+                            RemoteMqttClient.UseDisconnectedHandler(async (e) =>
                             {
                                 DebugPrintLog($"杩滅▼杩炴帴鏂紑");
+                                await DisConnectRemoteMqttClient("StartRemoteMqtt.DisconnectedHandler");
+                                await StartRemoteMqtt();
                             });
                         }
                         if (RemoteMqttClient.ConnectedHandler == null)
@@ -3406,18 +3439,20 @@
 
                                 var connEmqDomainPorts = connEmqDomainPort.Replace("//", "").Split(':');
                                 var domain = connEmqDomainPorts[1];
-                                var port = connEmqDomainPorts[2];
-
-
-                                var options = new MQTTnet.Client.Options.MqttClientOptionsBuilder()
-                                    .WithClientId(connEmqClientId)
-                .WithTcpServer(domain, int.Parse(port))
-                .WithCredentials(connEmqUserName, connEmqPwd)
-                .WithKeepAlivePeriod(TimeSpan.FromSeconds(20))
-                .WithCleanSession()
-                .Build();
-                                await RemoteMqttClient.ConnectAsync(options);
-                                
+                                var port = connEmqDomainPorts[2];
+
+                                var options = new MQTTnet.Client.Options.MqttClientOptionsBuilder()
+                               .WithClientId(connEmqClientId)
+           .WithTcpServer(domain, int.Parse(port))
+           .WithCredentials(connEmqUserName, connEmqPwd)
+           .WithKeepAlivePeriod(TimeSpan.FromSeconds(20))
+           .WithCleanSession()
+           .WithCommunicationTimeout(TimeSpan.FromSeconds(6))
+           .Build();
+                                await DisConnectRemoteMqttClient("StartRemoteMqtt");
+                                await RemoteMqttClient.ConnectAsync(options, CancellationToken.None);
+
+                                remoteIsConnected = true;
                             }
                         }
                     }
@@ -3438,28 +3473,40 @@
         /// <summary>
         /// 鏂紑鏈嶅姟鍣ㄨ繛鎺�
         /// </summary>
-        public async System.Threading.Tasks.Task DisConnect(string s)
+        public async System.Threading.Tasks.Task DisConnectLocalMqttClient(string s)
         {
             try
             {
-                DebugPrintLog($"涓诲姩鏂紑_{s}");
-                if (localMqttClient.IsConnected == true)
+                if (localIsConnected)
                 {
-                    await localMqttClient.DisconnectAsync();
-                }
+                    localIsConnected = false;
+                    DebugPrintLog($"Local涓诲姩鏂紑_{s}");
+                    await localMqttClient.DisconnectAsync(new MQTTnet.Client.Disconnecting.MqttClientDisconnectOptions {  }, CancellationToken.None);
+                }
             }
             catch (Exception ex)
             {
-                DebugPrintLog($"鏂紑閫氳杩炴帴鍑哄紓甯�:{ex.Message}");
+                DebugPrintLog($"Local鏂紑閫氳杩炴帴鍑哄紓甯�:{ex.Message}");
             }
         }
 
         /// <summary>
         /// 鏂紑杩滅▼Mqtt鐨勯摼鎺�
         /// </summary>
-        public static void DisRemoteMqttClientConnect()
+        public static async System.Threading.Tasks.Task DisConnectRemoteMqttClient(string s="")
         {
-            RemoteMqttClient.DisconnectAsync();
+            try
+            {
+                if (remoteIsConnected)
+                {
+                    remoteIsConnected = false;
+                    DebugPrintLog($"Remote涓诲姩鏂紑_{s}");
+                    await RemoteMqttClient.DisconnectAsync(new MQTTnet.Client.Disconnecting.MqttClientDisconnectOptions { }, CancellationToken.None);
+                }
+            }
+            catch(Exception e) { 
+                DebugPrintLog($"Remote鏂紑閫氳杩炴帴鍑哄紓甯�:{e.Message}");
+            }
         }
 
         #endregion
@@ -3492,35 +3539,35 @@
         /// </summary>
         async System.Threading.Tasks.Task SendRemoteMsg(string topicName, byte[] message, bool retain = false)
         {
-            if (this.getGatewayBaseInfo?.gwID == null || !GateWayBaseInfomations.ContainsKey(this.getGatewayBaseInfo?.gwID))
-            {
-                return;
-            }
-            var gateWayBaseInfomation = GateWayBaseInfomations[this.getGatewayBaseInfo?.gwID];
-            ////(1)鐢熸垚[鐢ㄦ埛鍚�:瀵嗙爜]
-            //var userNameAndPwdStr = string.Concat(Shared.Common.Config.Instance.Guid, RemoteOperatorConsts.CAP_NUMBER, Shared.Common.Config.Instance.MD5PWD);
-            //DebugPrintLog($"userNameAndPwdStr锛歿userNameAndPwdStr} ");
-
-            ////(2)灏�(1)杞垚Base64瀛楃涓�,鐢熸垚鏍煎紡[Base64(鐢ㄦ埛鍚�:瀵嗙爜)]
-            //var userNameAndPwdStrBaseSexFour = Convert.ToBase64String(ZigBee.Common.CommonInfo.EncodingUTF8.GetBytes(userNameAndPwdStr));
-
-            ////(3)灏�(2)缁х画鐢熸垚鏍煎紡[Base64(鐢ㄦ埛鍚�:瀵嗙爜):Timestamp]
-            //var userNameAndPwdStrBaseSexFourAndTimestamp = string.Concat(userNameAndPwdStrBaseSexFour, RemoteOperatorConsts.CAP_NUMBER, CurrentTimeStamp.ToString());
-
-            ////[Zigbee.Buspro]App/id(甯愬彿Id)/Base64(DES[Base64(鐢ㄦ埛鍚�:瀵嗙爜):Timestamp ]/缃戝叧鍞竴Id/杞彂缁欑綉鍏崇殑涓婚/XX/XX
-            ////(4)鐢熸垚涓婃姤涓婚锛屼富棰樻ā寮忛渶瑕佷负  /ZigbeeApp/id(涓诲瓙璋冭瘯甯愬彿Id)/Base64(DES[Base64(鐢ㄦ埛鍚�:瀵嗙爜):Timestamp ]/缃戝叧鍞竴Id/topicName "000204022022"   GateWayId  000204022022
-            //var reportTopic = string.Format("/{0}/{1}/{2}/{3}/{4}", RemoteOperatorConsts.ZIGBEE_APP_STARTS_WITH, Shared.Common.Config.Instance.Guid, userNameAndPwdStrBaseSexFourAndTimestamp, this.getGatewayBaseInfo?.gwID, topicName);
-
-            ////鏂囦欢娴佷笉鐢ㄥ姞瀵�
-            //var topicEncStr = ZigBee.Common.SecuritySet.AesEncrypt(System.Text.Encoding.UTF8.GetBytes(reportTopic), gateWayBaseInfomation.AesKey);
-            //topicEncStr = topicEncStr.Replace("/", "[[$-MQTT_TILT_SYMBOL_REPLACE-$]]").Replace("+", "[[$-MQTT_PLUS_SYMBOL_REPLACE-$]]");
-            //message = System.Text.Encoding.UTF8.GetBytes(SecuritySet.AesEncrypt(message, gateWayBaseInfomation.AesKey));
-            message = SecuritySet.AesEncryptBytes(message, gateWayBaseInfomation.AesKey);
-            var topicEncStr = $"/ClientToZigbeeGateWay/{gateWayBaseInfomation.MacMark}/Common/{topicName}";
-            //(6)鏋勫缓Mqtt闇�瑕佸彂甯冪殑鏁版嵁鍖�,鍙戝竷缁欎簯绔殑MqttBroker
-            if (RemoteMqttClient.IsConnected)
-            {
-                await RemoteMqttClient.PublishAsync(new MqttApplicationMessage { Topic = topicEncStr, Payload = message, QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce });
+            try
+            {
+                if (this.getGatewayBaseInfo?.gwID == null || !GateWayBaseInfomations.ContainsKey(this.getGatewayBaseInfo?.gwID))
+                {
+                    return;
+                }
+                var gateWayBaseInfomation = GateWayBaseInfomations[this.getGatewayBaseInfo?.gwID];
+                message = SecuritySet.AesEncryptBytes(message, gateWayBaseInfomation.AesKey);
+                var topicEncStr = $"/ClientToZigbeeGateWay/{gateWayBaseInfomation.MacMark}/Common/{topicName}";
+                //(6)鏋勫缓Mqtt闇�瑕佸彂甯冪殑鏁版嵁鍖�,鍙戝竷缁欎簯绔殑MqttBroker
+                if (remoteIsConnected)
+                {
+                    try
+                    {
+                        await RemoteMqttClient.PublishAsync(new MqttApplicationMessage { Topic = topicEncStr, Payload = message, QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce });
+                    }
+                    catch (Exception e)
+                    {
+                        await DisConnectRemoteMqttClient(e.Message);
+                        await StartRemoteMqtt();
+                        if (remoteIsConnected)
+                        {
+                            await RemoteMqttClient.PublishAsync(new MqttApplicationMessage { Topic = topicEncStr, Payload = message, QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce });
+                        }
+                    }
+                }
+            }
+            catch
+            {
             }
         }
 
@@ -3547,12 +3594,8 @@
                 }
                 else
                 {
-                    DebugPrintLog($"灞�鍩熺綉鈥斺�斿彂閫佸埌缃戝叧鐨勪富棰�:{topic}_鍙戦�佸埌缃戝叧鐨勬暟鎹�:{System.Text.Encoding.UTF8.GetString(message)}_褰撳墠缃戝叧{CurrentGateWayId}");
-                    if (!localMqttClient.IsConnected)
-                    {
-                        await StartLocalMqtt(getGatewayBaseInfo.IpAddress);
-                    }
-
+                    DebugPrintLog($"灞�鍩熺綉鈥斺�斿彂閫佸埌缃戝叧鐨勪富棰�:{topic}_鍙戦�佸埌缃戝叧鐨勬暟鎹�:{System.Text.Encoding.UTF8.GetString(message)}_褰撳墠缃戝叧{CurrentGateWayId} 鏄惁鍔犲瘑:{IsEncry}");
+
                     if (IsEncry)
                     {
                         //鏂囦欢娴佷笉鐢ㄥ姞瀵�
@@ -3561,11 +3604,24 @@
                             topic = ZigBee.Common.SecuritySet.AesEncrypt(System.Text.Encoding.UTF8.GetBytes(topic), Password);
                             topic = topic.Replace("/", "[[$-MQTT_TILT_SYMBOL_REPLACE-$]]").Replace("+", "[[$-MQTT_PLUS_SYMBOL_REPLACE-$]]");
                             message = System.Text.Encoding.UTF8.GetBytes(SecuritySet.AesEncrypt(message, password));
-                            DebugPrintLog($"灞�鍩熺綉鈥斺�斿彂閫佸埌缃戝叧鐨勪富棰橈紙绉樻枃锛�:{topic}_褰撳墠绉橀挜{Password}_鍙戦�佸埌缃戝叧鐨勬暟鎹紙绉樻枃锛�:{System.Text.Encoding.UTF8.GetString(message)}_褰撳墠缃戝叧{CurrentGateWayId}_{System.DateTime.Now.ToString()}");
                         }
-                    }
-                    
-                    await localMqttClient.PublishAsync(new MqttApplicationMessage { Topic = topic, Payload = message, QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce, Retain = retain });
+                    }
+                    if (localIsConnected)
+                    {
+                        try
+                        {
+                            await localMqttClient.PublishAsync(new MqttApplicationMessage { Topic = topic, Payload = message, QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce, Retain = retain });
+                        }
+                        catch(Exception e)
+                        {
+                            await DisConnectLocalMqttClient(e.Message);
+                            await StartLocalMqtt("ReConnect");
+                            if (localIsConnected)
+                            {
+                                await localMqttClient.PublishAsync(new MqttApplicationMessage { Topic = topic, Payload = message, QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce, Retain = retain });
+                            }
+                        }
+                    }
                 }
             }
             catch (Exception ex)
diff --git a/ZigbeeApp/Shared/R.cs b/ZigbeeApp/Shared/R.cs
index 4ad36c0..826ff6b 100755
--- a/ZigbeeApp/Shared/R.cs
+++ b/ZigbeeApp/Shared/R.cs
@@ -306,6 +306,7 @@
         public readonly static int UnlockFailed = 219;
         public readonly static int DoorlockPasswordDispear = 220;
         public readonly static int BindUnknownError = 221;
+        public readonly static int OffLineScene = 222;
 
         public readonly static int RemindSetting = 548;
         public readonly static int AddNewUser = 650;
@@ -879,6 +880,18 @@
         /// 涓户鍣�
         /// </summary>
         public const int Repeater = 12109;
+        /// <summary>
+        /// 娓╁害浼犳劅鍣�
+        /// </summary>
+        public const int TemperatureSensor = 12110;
+        /// <summary>
+        /// 婀垮害浼犳劅鍣�
+        /// </summary>
+        public const int HumiditySensor = 12111;
+        /// <summary>
+        /// 娓╂箍搴︿紶鎰熷櫒
+        /// </summary>
+        public const int TemperatureAndHumiditySensor = 12112;
 
         #endregion
 
@@ -1084,6 +1097,10 @@
         /// 鎴戠殑鐩稿唽
         /// </summary>
         public const int MyAblums = 13148;
+        /// <summary>
+        /// 璇ュ満鏅鍦ㄥ欢鏃讹紝璇风◢鍚�
+        /// </summary>
+        public const int TheSceneIsDelaying = 13149;
 
         /// <summary>
         /// 閫夋嫨鎽嗛
@@ -1113,6 +1130,11 @@
         /// 5鎸�
         /// </summary>
         public const int Swing_Fifth = 13506;
+        /// <summary>
+        /// 璇锋竻娲佹护缃�
+        /// </summary>
+        public const int NeedCleanAC = 13511;
+
 
 
         #endregion
diff --git a/ZigbeeApp/Shared/Shared.projitems b/ZigbeeApp/Shared/Shared.projitems
index 958cc7a..35d1714 100755
--- a/ZigbeeApp/Shared/Shared.projitems
+++ b/ZigbeeApp/Shared/Shared.projitems
@@ -57,6 +57,7 @@
     <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\CommonForm\RoomNoNameMainView.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\CommonForm\RowLayoutDeleteButton.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\CommonForm\RowLayoutEditButton.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\CommonForm\SceneCategoryView.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\CommonForm\SceneMainView.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\CommonForm\SceneTargetFunctionRow.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\CommonForm\SceneTargetTimeRow.cs" />
@@ -72,7 +73,6 @@
     <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\Light\AirSwitchControl.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\Light\DimmableLightControl.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\Light\LightControl.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\Light\LightControlForm.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\Light\OnOffControl.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\Light\PlugControl.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\Logic\AddLogicPage.cs" />
@@ -118,8 +118,9 @@
     <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\Room\UnallocatedRoom.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\Abount\AbountForm.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\CommonBase\Common\AccountOption.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\CommonBase\Controls\ClickButtonControls\BottomLeftClickButton.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\CommonBase\Controls\ClickButtonControls\BottomRightClickButton.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\CommonBase\Controls\CompoundControls\BelongAreaControl.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\CommonBase\Controls\CompoundControls\CutPictureControl.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\CommonBase\Controls\CompoundControls\ProgressFormBar.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\CommonBase\Controls\CompoundControls\PswGestureInputControl.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\CommonBase\Controls\CompoundControls\InformationEditorControl.cs" />
@@ -201,6 +202,7 @@
     <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\Gateway\Update\GatewayCoordinatorInfoForm.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\Gateway\Update\GatewayFirmwareUpdateForm.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\Gateway\Update\GatewayVirtualDriveInfoForm.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\HdlBackup\HdlAutoBackupForm.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\HdlBackup\HdlBackupListForm.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\Member\MemberNotEsixtForm.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\Password\CheckNewPhoneForm.cs" />

--
Gitblit v1.8.0