From 3dcbd186c42c598c0c08d1cd37034cf2baa09e54 Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期一, 30 十二月 2019 15:47:51 +0800
Subject: [PATCH] 合并了代码

---
 ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonLayout.cs                                          |   30 
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayReceiveLogic.cs                                |   42 
 ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/SensorInfrared.png                                            |    0 
 ZigbeeApp/Home.Ios/Resources/Phone/Item/RightNext.png                                                       |    0 
 ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/CurtainSiphonate.png                                          |    0 
 ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/RelayThreeLoad.png                                            |    0 
 ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceMacInfoEditorForm.cs                                         |  155 
 ZigbeeApp/Shared/Phone/Device/CommonForm/FunctionMainView.cs                                                |   10 
 ZigbeeApp/Shared/Phone/UserCenter/Device/PirSensor/PirSensorBindTargetSettionForm.cs                        |    6 
 ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/SensorCarbonMonoxide.png                                      |    0 
 ZigbeeApp/Shared/Phone/UserCenter/Device/AirConditioner/IndoorUnitSettionForm.cs                            |    2 
 ZigbeeApp/Shared/Phone/Device/Light/PlugControl.cs                                                          |   13 
 ZigbeeApp/Shared/Phone/ZigBee/Device/ZbGateway.cs                                                           |   10 
 ZigbeeApp/Shared/Phone/UserCenter/Guide/GuideForm1.cs                                                       |   92 
 ZigbeeApp/GateWay.Droid/Assets/Phone/Item/RightNext.png                                                     |    0 
 ZigbeeApp/Shared/DLL/Android/Shared.Droid.HDLWidget.dll                                                     |    0 
 ZigbeeApp/Shared/Phone/Device/CommonForm/SelectSceneRow.cs                                                  |    7 
 ZigbeeApp/Shared/Phone/UserCenter/DoorLock/TemporaryPassword.cs                                             |   15 
 ZigbeeApp/Shared/Phone/Device/CommonForm/DeviceDetailInfo.cs                                                |   10 
 ZigbeeApp/Shared/Phone/Device/Category/SelectScene.cs                                                       |   60 
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/BaseCommonControl/Base/ButtonBase.cs                  |   39 
 ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/LockLogicCommunalPage.cs                                  |   89 
 ZigbeeApp/Shared/Phone/Device/Room/RoomManagement.cs                                                        |   44 
 ZigbeeApp/Shared/Phone/Device/Account/AccountLoginByCode.cs                                                 |  213 
 ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/CurtainAutoOpen.png                                         |    0 
 ZigbeeApp/Home.Ios/Resources/Phone/Item/SafetyShortcut.png                                                  |    0 
 ZigbeeApp/Shared/Phone/UserCenter/SharedContent/AddNewSharedContentForm.cs                                  |    3 
 ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/SensorDoorWindow.png                                        |    0 
 ZigbeeApp/Shared/Phone/UserCenter/Residence/ResidenceManagementForm.cs                                      |    2 
 ZigbeeApp/Shared/Phone/Device/CommonForm/SelectSceneStatuRow.cs                                             |    7 
 ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WiredGatewayDirectionForm.cs                                  |    2 
 ZigbeeApp/Home.Ios/Resources/Phone/Room/IconSelectedBackground.png                                          |    0 
 ZigbeeApp/Shared/Phone/UserCenter/Gateway/Manage/GatewayInfoEditorForm.cs                                   |    2 
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/DeviceControls/GatewayRowControl.cs                   |    2 
 ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/ButtonPanelFourNotPower.png                                 |    0 
 ZigbeeApp/Shared/Phone/Device/CommonForm/DeviceInfoRow.cs                                                   |    8 
 ZigbeeApp/Shared/Phone/UserCenter/Gateway/Manage/GatewayListForm.cs                                         |   16 
 ZigbeeApp/Shared/Phone/Device/Account/AccountRegister.cs                                                    |   15 
 ZigbeeApp/Shared/Phone/Device/Logic/TemplatePage.cs                                                         |   77 
 ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WirelessApDirection2Form.cs                                   |    2 
 ZigbeeApp/Home.Ios/Resources/Phone/Guide/LeftIcon.png                                                       |    0 
 ZigbeeApp/GateWay.Droid/Assets/Phone/Item/LogicMsgIcon.png                                                  |    0 
 ZigbeeApp/Home.Ios/Resources/Phone/Guide/Finger.png                                                         |    0 
 ZigbeeApp/GateWay.Droid/ZXing/ZXingOverlayView.cs                                                           |  118 
 ZigbeeApp/GateWay.Droid/Resources/drawable/Icon.png                                                         |    0 
 ZigbeeApp/Shared/DLL/Android/Shared.Droid.dll                                                               |    0 
 ZigbeeApp/Home.Ios/Resources/Phone/Item/SceneMsgIcon.png                                                    |    0 
 ZigbeeApp/Shared/Phone/UserCenter/DoorLock/FunctionSetting.cs                                               |   71 
 ZigbeeApp/Shared/Phone/Device/Room/EditRoom.cs                                                              |  325 
 ZigbeeApp/GateWay.Droid/Assets/Phone/Guide/RightIcon.png                                                    |    0 
 ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/SensorTemperatrueHumidity.png                                 |    0 
 ZigbeeApp/Shared/Phone/UserCenter/Gateway/Update/GatewayFirmwareUpdateForm.cs                               |    2 
 ZigbeeApp/Shared/Phone/ZigBee/Device/Panel.cs                                                               | 1102 ----
 ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/BindTargetsPage.cs                                            |  572 +-
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/ListViewLayoutControls/VerticalFrameRefreshControl.cs |   59 
 ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/CommonDevice.png                                              |    0 
 ZigbeeApp/Shared/Phone/Device/Account/AccountLogin.cs                                                       |   23 
 ZigbeeApp/GateWay.Droid/Assets/Phone/Guide/Finger.png                                                       |    0 
 ZigbeeApp/GateWay.Droid/Assets/Phone/Center/MainBack1.png                                                   |    0 
 ZigbeeApp/Home.Ios/Resources/Phone/Item/SafetyShortcut_background.png                                       |    0 
 ZigbeeApp/Home.Ios/Resources/Phone/Item/SafetyShortcut_itemSelected.png                                     |    0 
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Common/UserCenterCommon.cs                                     |  133 
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/TopRightMenuControl.cs               |   51 
 ZigbeeApp/Shared/Phone/Device/Logic/DelayTime.cs                                                            |    1 
 ZigbeeApp/Shared/Phone/UserCenter/Guide/GuideMainForm.cs                                                    |   79 
 ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs                                                             |  157 
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlAutoBackupLogic.cs                                    |    4 
 ZigbeeApp/GateWay.Droid/Assets/Phone/Room/IconSelectedBackground.png                                        |    0 
 ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/LockLogicList.cs                                          |   37 
 ZigbeeApp/Shared/Phone/UserCenter/Member/MemberManagementForm.cs                                            |    8 
 ZigbeeApp/Shared/DLL/IOS/Shared.IOS.dll                                                                     |    0 
 ZigbeeApp/Shared/Phone/Device/CommonForm/SelectDeviceWithSeekBarRow.cs                                      |   10 
 ZigbeeApp/GateWay.Droid/Assets/Phone/Center/MainBack2.png                                                   |    0 
 ZigbeeApp/Shared/Phone/Device/Room/RoomTemperatureSetting.cs                                                |   16 
 ZigbeeApp/GateWay.Droid/GateWay.Droid.csproj                                                                |   73 
 ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/SensorFire.png                                                |    0 
 ZigbeeApp/Shared/Common/CommonPage.cs                                                                       |    2 
 ZigbeeApp/Home.Ios/Resources/Phone/Guide/Arrows1.png                                                        |    0 
 ZigbeeApp/Shared/Phone/Device/Logic/Send.cs                                                                 |  233 
 ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UndistributeDoorlockUserPage.cs                                  |   35 
 ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WirelessUdpDirectionForm.cs                                   |    2 
 ZigbeeApp/Shared/Phone/UserCenter/HideOption/HideOptionMainForm.cs                                          |    2 
 ZigbeeApp/GateWay.Droid/Application.cs                                                                      |   71 
 ZigbeeApp/Shared/Phone/UserCenter/Gateway/Manage/GatewayProductInfoForm.cs                                  |   17 
 ZigbeeApp/Shared/Phone/Device/CommonForm/FunctionRow.cs                                                     |   10 
 ZigbeeApp/GateWay.Droid/Properties/AndroidManifest.xml                                                      |    2 
 ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/ButtonPanelFour.png                                         |    0 
 ZigbeeApp/Home.Ios/mono_crash.f3dbef0b0.0.json                                                              |  741 +++
 ZigbeeApp/Home.Ios/Resources/Phone/Item/Next.png                                                            |    0 
 ZigbeeApp/GateWay.Droid/Resources/drawable/Loading.png                                                      |    0 
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayBackupLogic.cs                                 |    5 
 ZigbeeApp/GateWay.Droid/Assets/Phone/Guide/Arrows1.png                                                      |    0 
 ZigbeeApp/GateWay.Droid/Assets/Phone/Gateway/RealGateway.png                                                |    0 
 ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceAddSuccessForm.cs                                            |   51 
 ZigbeeApp/Shared/Phone/Device/CommonForm/CategoryFunctionForWinRow.cs                                       |   14 
 ZigbeeApp/Shared/Phone/UserCenter/Device/PirSensor/PirSensorDimmingModeForm.cs                              |  180 
 ZigbeeApp/Shared/Phone/Device/Curtain/RollerShadeControl.cs                                                 |   61 
 ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MemberFrozenPage.cs                                              | 1055 ++--
 ZigbeeApp/GateWay.Droid/Assets/Phone/Item/SafetyShortcut_item.png                                           |    0 
 ZigbeeApp/Shared/Phone/UserCenter/DoorLock/FunctionSettingSub.cs                                            |   70 
 ZigbeeApp/Home.Ios/Home.IOS.csproj                                                                          |   26 
 ZigbeeApp/Shared/Phone/Device/CommonForm/SceneMainView.cs                                                   |    2 
 ZigbeeApp/Shared/R.cs                                                                                       |  189 
 ZigbeeApp/Shared/Phone/Device/CommonForm/RoomButton.cs                                                      |  151 
 ZigbeeApp/Shared/Phone/UserView/SafetyShortcutControl.cs                                                    |  264 +
 ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/ButtonPanelTwo.png                                          |    0 
 ZigbeeApp/Shared/Common/Logic.cs                                                                            |    2 
 ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/AddCondition.cs                                           |  269 
 ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/Repeater.png                                                  |    0 
 ZigbeeApp/Home.Ios/Resources/Phone/Guide/RightIcon.png                                                      |    0 
 ZigbeeApp/Home.Ios/Resources/Phone/Item/ProgressBubbles.png                                                 |    0 
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/DeviceControls/DeviceInfoIconControl.cs               |    4 
 ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceHistoryFirmwareVersionForm.cs                                |    2 
 ZigbeeApp/Shared/Phone/Device/Category/CategoryAddScene.cs                                                  |  854 +++
 ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/AirSwitchCloudContr.png                                     |    0 
 ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MasterManagementPage.cs                                          |    2 
 ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonInfo.cs                                            |   14 
 ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/SensorTemperatrueHumidity.png                               |    0 
 ZigbeeApp/Shared/Phone/UserCenter/DoorLock/TimeSettignPage.cs                                               |  143 
 ZigbeeApp/Shared/Phone/Device/CommonForm/CommonFormResouce.cs                                               |    4 
 ZigbeeApp/Shared/Phone/UserCenter/Member/MemberListForm.cs                                                  |    7 
 ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/SensorFire.png                                              |    0 
 ZigbeeApp/Shared/Phone/Device/CommonForm/TopFrameLayout.cs                                                  |    5 
 ZigbeeApp/Shared/Phone/UserCenter/SharedContent/LookSharedContentForm.cs                                    |    3 
 ZigbeeApp/Shared/Phone/UserCenter/Device/Curtain/SiphonateDirectionAndLimitSettionForm.cs                   |    2 
 ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/RelayThreeLoad.png                                          |    0 
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlACZbGatewayUpdateLogic.cs                             |   25 
 ZigbeeApp/Shared/Phone/UserCenter/Residence/LookRoomSettionForm.cs                                          |    5 
 ZigbeeApp/Shared/Phone/UserCenter/SharedContent/AddNewSharedListRoomForm.cs                                 |    2 
 ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFunctionSettionForm.cs                                  |    2 
 ZigbeeApp/Shared/Phone/UserCenter/Safety/SafetyManagementMainForm.cs                                        |    4 
 ZigbeeApp/Shared/Phone/Device/CommonForm/CompleteButton.cs                                                  |    2 
 ZigbeeApp/Shared/Common/Room.cs                                                                             |   65 
 ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WirelessApDirection3Form.cs                                   |    2 
 ZigbeeApp/Shared/Phone/Device/CommonForm/DeviceInfoWithZoneRow.cs                                           |   18 
 ZigbeeApp/GateWay.Droid/Assets/Language.ini                                                                 |   80 
 ZigbeeApp/GateWay.Droid/Resources/Resource.designer.cs                                                      |   28 
 ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/SensorPir.png                                                 |    0 
 ZigbeeApp/Shared/Phone/UserCenter/UserMain/UserMainForm.cs                                                  |   53 
 ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/DimmableLightOneLoad.png                                      |    0 
 ZigbeeApp/Shared/Common/DeviceUI.cs                                                                         |   87 
 ZigbeeApp/Shared/Phone/Device/Category/Category.cs                                                          |  274 
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/SceneFunctionSwitchControl.cs        |    5 
 ZigbeeApp/Shared/Phone/UserCenter/DoorLock/EntryStatusPage.cs                                               |    2 
 ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/Repeater.png                                                |    0 
 ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/ButtonPanelThree.png                                        |    0 
 ZigbeeApp/GateWay.Droid/Assets/Phone/Item/ProgressBubbles.png                                               |    0 
 ZigbeeApp/Shared/Phone/Device/CommonForm/SelectDeviceWithPickViewRow.cs                                     |   16 
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Resourse/DirectoryFileNameResourse.cs                          |    8 
 ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFirmwareUpdateForm.cs                                        |    2 
 ZigbeeApp/Shared/Phone/UserView/UserPage.cs                                                                 |   19 
 ZigbeeApp/Shared/Phone/Device/Logic/MemberList.cs                                                           |   45 
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlAlarmsLogic.cs                                        |    2 
 ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelBackLightSettionForm.cs                                 |    4 
 ZigbeeApp/GateWay.Droid/Assets/Phone/Room/IconBackground.png                                                |    0 
 ZigbeeApp/Shared/Phone/Device/Light/LightControl.cs                                                         |   15 
 ZigbeeApp/Home.Ios/Resources/Phone/Center/MainBack1.png                                                     |    0 
 ZigbeeApp/GateWay.Droid/Assets/Phone/Item/SceneMsgIcon.png                                                  |    0 
 ZigbeeApp/Shared/DLL/IOS/Shared.IOS.TBL.dll                                                                 |    0 
 ZigbeeApp/Shared/Phone/UserCenter/Device/AirConditioner/IndoorUnitListForm.cs                               |   61 
 ZigbeeApp/Shared/Common/ZigbeeColor.cs                                                                      |   12 
 ZigbeeApp/Shared/Phone/Device/Light/AirSwitchControl.cs                                                     |   13 
 ZigbeeApp/Shared/Phone/Device/CommonForm/DeviceInfoEditRow.cs                                               |    4 
 ZigbeeApp/Shared/Phone/UserCenter/Safety/GarrisonAreaSettionMenuForm.cs                                     |   26 
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayLogic.cs                                       |    2 
 ZigbeeApp/Shared/Phone/UserCenter/Guide/GuideCommonForm.cs                                                  |  230 
 ZigbeeApp/Shared/Phone/Device/CommonForm/RoomView.cs                                                        |  248 
 ZigbeeApp/Shared/Phone/Device/Logic/LogicCommunalPage.cs                                                    |  190 
 ZigbeeApp/Shared/Phone/Device/DeviceLogic/ReadDeviceAttributeLogic.cs                                       |   91 
 ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/SensorWater.png                                             |    0 
 ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/SensorCarbonMonoxide.png                                    |    0 
 ZigbeeApp/Home.Ios/Resources/Phone/Item/SafetyShortcut_item.png                                             |    0 
 ZigbeeApp/Shared/Phone/Device/Category/SelectDelayTime.cs                                                   |    7 
 ZigbeeApp/Shared/Phone/Device/CommonForm/ButtonLineForm.cs                                                  |    2 
 ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceListMainForm.cs                                              |   67 
 ZigbeeApp/Shared/Phone/UserCenter/UserMain/MessageManagementForm.cs                                         |  634 ++
 ZigbeeApp/GateWay.Droid/Resources/layout/zxing_layout.xml                                                   |   58 
 ZigbeeApp/GateWay.Droid/Assets/Phone/Item/Next.png                                                          |    0 
 ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserManagement.cs                                                |   10 
 ZigbeeApp/Shared/Phone/Device/Account/AccountForgetPWD.cs                                                   |   18 
 ZigbeeApp/Shared/Phone/Device/Room/RoomHumiditySetting.cs                                                   |   17 
 ZigbeeApp/GateWay.Droid/ZXing/ZXingCustomScanView.cs                                                        |   71 
 ZigbeeApp/Shared/Phone/UserCenter/Device/PirSensor/PirSensorWorkModeMenuForm.cs                             |  287 +
 ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/AirSwitchCloudContr.png                                       |    0 
 ZigbeeApp/Shared/Phone/Device/CommonForm/RoomMainView.cs                                                    |   17 
 ZigbeeApp/Shared/Phone/UserCenter/Device/Curtain/AutoOpenDirectionAndLimitSettionForm.cs                    |   10 
 ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MemberManagement.cs                                              |    2 
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Common/IMessageCommon.cs                                       |   21 
 ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs                                              |    6 
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Form/Base/CommonFormBase.cs                                    |    1 
 ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/ButtonPanelTwo.png                                            |    0 
 ZigbeeApp/Shared/Phone/Device/Account/PhoneEmailForm.cs                                                     |  380 +
 ZigbeeApp/Home.Ios/Resources/Phone/Gateway/RealGateway.png                                                  |    0 
 ZigbeeApp/Shared/Phone/Device/CommonForm/LeftIconButtonRow.cs                                               |   18 
 ZigbeeApp/Shared/Shared.projitems                                                                           |    8 
 ZigbeeApp/Shared/Phone/Device/Logic/CustomText.cs                                                           |    1 
 ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/AddScenePage.cs                                               |   37 
 ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/AddDevicePage.cs                                              |   13 
 ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/ButtonPanelFourNotPower.png                                   |    0 
 ZigbeeApp/GateWay.Droid/Assets/Phone/Item/SafetyShortcut_itemSelected.png                                   |    0 
 ZigbeeApp/Shared/Phone/Device/Category/SelectDevice.cs                                                      |  312 
 ZigbeeApp/Home.Ios/Resources/Phone/Item/LogicMsgIcon.png                                                    |    0 
 ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/CommonDevice.png                                            |    0 
 ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/ButtonPanelThree.png                                          |    0 
 ZigbeeApp/Shared/Phone/UserCenter/DoorLock/AddUnLockMethodTip.cs                                            |   23 
 ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/AirConditionerZbGateway.png                                 |    0 
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Form/Base/EditorCommonForm.cs                                  |    2 
 ZigbeeApp/Shared/Phone/UserCenter/Device/PirSensor/PirSensorTargetSelectForm.cs                             |    2 
 ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UnLockMethod.cs                                                  |  537 +
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/DeviceControls/DeviceObjectControl.cs                 |    4 
 ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/ButtonPanelFour.png                                           |    0 
 ZigbeeApp/Shared/Common/SceneTargetDeviceUI.cs                                                              |    8 
 ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/SensorDoorWindow.png                                          |    0 
 ZigbeeApp/Shared/Phone/Device/Category/SelectFloor.cs                                                       |    4 
 ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/CurtainSiphonate.png                                        |    0 
 ZigbeeApp/Shared/Phone/Device/Room/UnallocatedRoom.cs                                                       |  257 
 ZigbeeApp/Shared/Phone/ZigBee/Device/IASZone.cs                                                             |  329 +
 ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/DimmableLightOneLoad.png                                    |    0 
 ZigbeeApp/Home.Ios/Resources/Phone/Center/MainBack2.png                                                     |    0 
 ZigbeeApp/Shared/Phone/UserCenter/Device/DoorLock/DoorLockHistoryLogForm.cs                                 |  253 
 ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceDryContactSettionForm.cs                                     |    2 
 ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/ChooseKeyModePage.cs                                          |   11 
 ZigbeeApp/Shared/Phone/Device/CommonForm/SelectZone.cs                                                      |  142 
 ZigbeeApp/Shared/Phone/UserCenter/UserMain/UserInformationForm.cs                                           |   12 
 ZigbeeApp/Shared/Phone/UserCenter/DoorLock/AddUnLockMethod.cs                                               |    1 
 ZigbeeApp/Shared/Phone/UserCenter/Guide/GuideForm2.cs                                                       |   64 
 ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/CurtainAutoOpen.png                                           |    0 
 ZigbeeApp/Shared/Phone/UserCenter/Residence/AddNewRoomForm.cs                                               |   68 
 ZigbeeApp/Home.Ios/Resources/Language.ini                                                                   |   80 
 ZigbeeApp/Home.Ios/Resources/Phone/Room/IconBackground.png                                                  |    0 
 ZigbeeApp/Shared/Phone/Device/CommonForm/CategoryFunctionRow.cs                                             |   14 
 ZigbeeApp/Shared/Phone/Device/Light/DimmableLightControl.cs                                                 |   80 
 ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/SensorPir.png                                               |    0 
 ZigbeeApp/Shared/Phone/UserCenter/Password/EditorGesturePasswordForm.cs                                     |    2 
 ZigbeeApp/Shared/Phone/UserCenter/Safety/AlarmTargetAddMenuForm.cs                                          |    6 
 ZigbeeApp/GateWay.Droid/Assets/Phone/Guide/LeftIcon.png                                                     |    0 
 ZigbeeApp/Shared/Phone/UserCenter/Safety/CoercePswAddContactForm.cs                                         |    4 
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDevicePirSensorLogic.cs                               |   22 
 ZigbeeApp/Shared/Phone/UserCenter/Gateway/Update/GatewayVirtualDriveInfoForm.cs                             |    2 
 ZigbeeApp/GateWay.Droid/Assets/Phone/Item/SafetyShortcut_background.png                                     |    0 
 ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelButtonSettionForm.cs                                    |    2 
 ZigbeeApp/GateWay.Droid/Assets/Phone/Item/SafetyShortcut.png                                                |    0 
 ZigbeeApp/Shared/Common/Device.cs                                                                           |  106 
 ZigbeeApp/Shared/Phone/UserCenter/HideOption/HideOptionGatewayListForm.cs                                   |    7 
 ZigbeeApp/Shared/Phone/Device/Logic/SecurityMode.cs                                                         |    1 
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/UserCenterLogic.cs                                       |   32 
 ZigbeeApp/Shared/Phone/Device/Logic/AddLogicPage.cs                                                         |  170 
 ZigbeeApp/Shared/Phone/Device/Light/OnOffControl.cs                                                         |   14 
 ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFunctionSettionForm.cs                                       |    2 
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/FrameLayoutControls/FrameRowControl.cs                |    2 
 /dev/null                                                                                                   |    0 
 ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/SensorWater.png                                               |    0 
 ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/SensorInfrared.png                                          |    0 
 ZigbeeApp/Shared/Phone/UserCenter/Password/EditorSecondaryPasswordForm.cs                                   |    2 
 ZigbeeApp/Shared/Phone/UserCenter/Residence/EditorRoomInforForm.cs                                          |   68 
 ZigbeeApp/Shared/Phone/ZigBee/Device/CommonDevice.cs                                                        |    2 
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/NormalControls/MessageManagementControl.cs            |   17 
 ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/AirConditionerZbGateway.png                                   |    0 
 258 files changed, 10,122 insertions(+), 4,179 deletions(-)

diff --git a/ZigbeeApp/GateWay.Droid/Application.cs b/ZigbeeApp/GateWay.Droid/Application.cs
index 2cdce88..49eb763 100755
--- a/ZigbeeApp/GateWay.Droid/Application.cs
+++ b/ZigbeeApp/GateWay.Droid/Application.cs
@@ -281,31 +281,52 @@
 {
     public static class QRCode
     {
-        static ZXing.Mobile.MobileBarcodeScanner scanner;
-        public static void ScanQRcode(Action<string> action)
-        {
-            ((BaseActivity)Shared.Application.Activity).SetCamera(async (obj) => {
-                if (obj)
-                {
-                    if (scanner == null)
-                    {
-                        MobileBarcodeScanner.Initialize(Shared.Application.Activity.Application);
-                        scanner = new ZXing.Mobile.MobileBarcodeScanner();
-                    }
-
-                    var result = await scanner.Scan();
-
-                    if (result != null)
-                        action?.Invoke(result.Text);
-                    else
-                        action?.Invoke(null);
-
-                }
-                else
-                {
-                    action?.Invoke(null);
-                }
-            });
+        static ZXing.Mobile.MobileBarcodeScanner scanner;
+        public static void ScanQRcode(Action<string> action, string cancel = "鍙栨秷", string flashText = "闂厜鐏�", string titleText = "浜岀淮鐮佹壂鎻�")
+        {
+            ((BaseActivity)Shared.Application.Activity).SetCamera(async (obj) =>
+            {
+                if (obj)
+                {
+                    if (scanner == null)
+                    {
+                        MobileBarcodeScanner.Initialize(Shared.Application.Activity.Application);
+                        var mZXingCustomScanView = new GateWay.Droid.ZXingCustomScanView(Shared.Application.Activity.Application);
+                        mZXingCustomScanView.cancelTextView.Text = cancel;
+                        mZXingCustomScanView.flashTextView.Text = flashText;
+                        mZXingCustomScanView.titleTextView.Text = titleText;
+                        var bOn = false;
+                        scanner = new ZXing.Mobile.MobileBarcodeScanner()
+                        {
+                            UseCustomOverlay = true,
+                            CustomOverlay = mZXingCustomScanView
+                        };
+
+                        mZXingCustomScanView.OnCancel += () => {
+
+                            scanner?.Cancel();
+                        };
+
+                        mZXingCustomScanView.OnTorch += () =>
+                        {
+                            bOn = !bOn;
+                            scanner?.Torch(bOn);
+                        };
+                    }
+
+                    var result = await scanner.Scan();
+
+                    if (result != null)
+                        action?.Invoke(result.Text);
+                    else
+                        action?.Invoke(null);
+
+                }
+                else
+                {
+                    action?.Invoke(null);
+                }
+            });
         }
 
         public static byte[] BytesFromText(string text, int width = 300, int height = 300)
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Language.ini b/ZigbeeApp/GateWay.Droid/Assets/Language.ini
index 0634da9..0bfa38c 100755
--- a/ZigbeeApp/GateWay.Droid/Assets/Language.ini
+++ b/ZigbeeApp/GateWay.Droid/Assets/Language.ini
@@ -6,7 +6,7 @@
 [Chinese]
 1=涓婚〉
 2=鍒嗙被
-3=涓汉涓績
+3=鎴戠殑
 4=鎸夐敭閰嶇疆
 5=娣诲姞缁戝畾鐩爣
 6=寮�
@@ -185,9 +185,9 @@
 179=鎿嶄綔澶辫触
 180=杩滅▼寮�閿佺粦瀹氭垚鍔�
 181=璇疯缃簩娆″畨鍏ㄩ獙璇佹柟寮�
-182=鍏抽棴
+182=鍏�
 183=寮�閿佷腑
-184=鎵撳紑
+184=寮�
 185=骞�
 186=鐭鎴愬姛
 187=鐭澶辫触
@@ -228,6 +228,12 @@
 222=绂荤嚎鍦烘櫙
 223=纭鍒犻櫎鎸夐敭妯″紡鍙婃竻绌烘墍鏈夌洰鏍�
 224=缁戝畾鐩爣涓虹┖锛岃閫夋嫨闇�瑕佺粦瀹氱洰鏍�
+225=缁戝畾鐩爣
+226=纭鍒犻櫎鎸夐敭妯″紡鍙�
+227=娓呯┖鎵�鏈夌洰鏍�
+228=纭
+229=鍒嗕韩鎴愬姛
+230=纭畾瑕佸皢璇ヨ处鎴疯В鍐伙紵
 
 548=鎻愰啋璁剧疆
 550=鏂板鐢ㄦ埛
@@ -374,8 +380,8 @@
 5105=璇烽�夋嫨鏃堕棿
 5106=鍦扮悊鍥存爮
 5107=浣嶇疆妯″紡
-5108=绂诲
-5109=鍦ㄥ
+5108=绂诲紑鍦扮偣
+5109=鍒拌揪鍦扮偣
 5110=澶╂皵鏉′欢
 5111=鍦扮悊浣嶇疆
 5112=鎶ヨ
@@ -396,7 +402,7 @@
 5127=宸叉湁鑷姩鍖栨潯浠�
 5128=寮�濮嬫椂闂�
 5129=鎻愮ず
-5130=寮�濮嬫椂闂村ぇ浜庣粨鏉熸椂闂达紝閲嶆柊璁剧疆鏃堕棿鏃犳晥
+5130=寮�濮嬫椂闂村ぇ浜庣粨鏉熸椂闂达紝璇烽噸鏂拌缃椂闂�.
 5131=缁撴潫鏃堕棿
 5132=璇锋牴鎹綘鐨勯渶瑕佽缃棩绋�
 5133=鏃堕棿
@@ -610,6 +616,10 @@
 5371=璇烽�夋嫨鍦烘櫙锛屽惁鍒欐棤娉曟墽琛屼笅涓�姝�.
 5372=璇烽�夋嫨瀹夐槻妯″紡锛屽惁鍒欐棤娉曟墽琛屼笅涓�姝�.
 5373=鑷姩鍖栧凡鎵ц.
+5374=娣诲姞浼犳劅鍣�
+5375=娣诲姞寮�鍏�/鐏厜
+5376=搴旂敤
+5377=娌℃湁鑷姩鍖杮\r\n} 璇风偣鍑诲彸涓婅娣诲姞
 
 
 
@@ -627,7 +637,7 @@
 10108=鎼滅储
 10109=瀹屾垚
 10110=璐﹀彿鐧诲綍
-10111=鍙戦�侀獙璇佺爜
+10111=鑾峰彇楠岃瘉鐮�
 10112=鍚庨噸鍙�
 10113=璇峰啀娆¤緭鍏ュ瘑鐮�
 10114=鍙戦�侀獙璇佺爜鎴愬姛锛岃娉ㄦ剰鏌ユ敹
@@ -659,6 +669,9 @@
 10140=璇疯緭鍏ラ暱搴︿负6-13涓瓧绗︾殑瀵嗙爜
 10141=浣犲凡琚己鍒朵笅绾匡紒
 10142=鏂板瘑鐮佸拰鍘熷瘑鐮佷竴鑷�
+10143=璇峰厛鑾峰彇楠岃瘉鐮�
+10144=蹇樿瀵嗙爜锛�
+10145=宸叉湁璐﹀彿锛熺櫥褰�
 
 
 
@@ -670,6 +683,8 @@
 10155=鎿嶄綔澶辫触
 10156=鍙戦�侀獙璇佺爜澶辫触
 10157=缃戝叧涓嶅湪绾�
+10158=涓嬩竴姝�
+
 
 10160=宸叉槸鏈�鏂扮増鏈�
 10161=鏇存柊鏈�鏂扮増
@@ -714,6 +729,9 @@
 11032=閫夋嫨鍖哄煙
 11033=閫夋嫨鍦烘櫙鍥剧墖
 11034=纭畾瑕佺Щ闄よ鍔熻兘锛�
+11035=娣诲姞鍔熻兘
+11036=娣诲姞寤舵椂
+
 
 
 12100=鏈煡璁惧
@@ -729,6 +747,15 @@
 12110=娓╁害浼犳劅鍣�
 12111=婀垮害浼犳劅鍣�
 12112=娓╂箍搴︿紶鎰熷櫒
+
+12500=鏈変汉
+12501=鏃犱汉
+12502=婕忔按
+12503=姝e父
+12504=寮�鍚�
+12505=闂悎
+12506=鎶ヨ
+12507=瀹夊叏
 
 
 13100=鎴块棿鍒楄〃
@@ -792,10 +819,11 @@
 13506=5鎸�
 13511=璇锋竻娲佹护缃�
 
-13600=娌″姛鑳� {\r\n} 璇峰厛娣诲姞
-13601=娌″満鏅� {\r\n} 璇峰厛娣诲姞
+13600=杩樻病鏈夊姛鑳藉摝
+13601=杩樻病鏈夊満鏅摝
 13602=鏃�
 13603=鑾峰彇涓�...
+13604=褰撳墠 浜害
 
 
 15000=瀵嗙爜闀垮害涓簕0}涓瓧绗�
@@ -940,7 +968,7 @@
 15145=鎴愬憳(绠$悊鍛樻潈闄�)
 15146=璐﹀彿淇℃伅
 15147=鐢ㄦ埛鍚嶇О
-15148=Email
+15148=閭
 15149=鎵嬫満鍙�
 15150=淇敼
 15151=缁戝畾
@@ -1203,8 +1231,8 @@
 15442=闂ㄧ獥琚墦寮�
 15443=闂ㄧ獥宸插叧闂�
 15448=鑾峰彇璁惧鐗堟湰淇℃伅澶辫触
-15449=鑾峰彇浼犳劅鍣ㄧ伅鍏夎缃俊鎭け璐�
-15450=璁剧疆浼犳劅鍣ㄧ伅鍏夐厤缃け璐�
+15449=鑾峰彇浼犳劅鍣ㄨ缃俊鎭け璐�
+15450=璁剧疆浼犳劅鍣ㄩ厤缃俊鎭け璐�
 15451=鐧藉ぉ
 15452=榛勬槒
 15453=澶滄櫄
@@ -1754,6 +1782,30 @@
 16023=鎻愰啋
 16024=缁戝畾鎴愬姛锛佷笅娆′綘鍙互鐢ㄥ井淇0}璐﹀彿蹇�熺櫥褰曞暒
 16025=濂界殑
+16026=宸叉墽琛�
+16027=闂ㄩ攣瑙﹀彂璀︽姤
+16028=鎴戠殑浣忓畢
+16029=瀹㈠巺
+16030=闃冲彴
+16031=鍗у
+16032=宸﹀彸婊戝姩,鍒囨崲鎴块棿鍗$墖
+16033=鍙虫粦杩涘叆鎴块棿鍒楄〃
+16034=闂厜鐏�
+16035=鎴块棿鐨勫唴瀹瑰湪姝ゅ鏄剧ず
+16036=鎴戠煡閬撲簡
+16037=鍒嗕韩鏁版嵁宸茬粡鍙樻洿,璇烽噸鏂扮櫥闄�
+16038=宸ヤ綔妯″紡
+16039=鎺у埗妯″紡
+16040=瑙﹀彂妯″紡
+16041=涓婃姤闂撮殧
+16042=鍏ㄨ嚜鍔ㄦā寮�
+16043=鍗婅嚜鍔ㄦā寮�
+16044=璋冨厜妯″紡
+16045=寮�鍏虫ā寮�
+16046=寮�鐏寒搴�
+16047=鎱㈠惎鍔�
+16048=鎱㈠叧闂�
+16049=浜害
 
 ;鈽呪槄鈽呪槄涓嬮潰杩欎簺鏄帴鍙g殑杩斿洖淇℃伅缈昏瘧,浠�18000寮�濮嬧槄鈽呪槄鈽�
 18004=鎸囧畾缃戝叧宸茬粡琚粦瀹�
@@ -1861,12 +1913,12 @@
 30028=绠�绾�2鎸夐敭闈㈡澘
 
 ;鈽呪槄鈽呪槄涓嬮潰杩欎簺鏄澶囨墍灞炵绫荤殑缈昏瘧鍚嶅瓧,浠�40000寮�濮嬧槄鈽呪槄鈽�
-40000=绐楀笜
+40000=閬槼
 40001=鎸夐敭闈㈡澘
 40002=浼犳劅鍣�
 40003=缁х數鍣�
 40004=璋冨厜鍣�
-40005=鏅鸿兘闂ㄩ攣
+40005=闂ㄩ攣
 40006=绌鸿皟
 40007=涓户鍣�
 40008=鏅鸿兘绌哄叧
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/Center/MainBack1.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/Center/MainBack1.png
new file mode 100755
index 0000000..a02e2f2
--- /dev/null
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/Center/MainBack1.png
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/Center/MainBack2.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/Center/MainBack2.png
new file mode 100755
index 0000000..12086a6
--- /dev/null
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/Center/MainBack2.png
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/Gateway/RealGateway.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/Gateway/RealGateway.png
new file mode 100755
index 0000000..e1870f3
--- /dev/null
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/Gateway/RealGateway.png
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/Guide/Arrows1.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/Guide/Arrows1.png
new file mode 100755
index 0000000..7843bb8
--- /dev/null
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/Guide/Arrows1.png
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/Guide/Finger.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/Guide/Finger.png
new file mode 100755
index 0000000..8138a71
--- /dev/null
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/Guide/Finger.png
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/Guide/LeftIcon.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/Guide/LeftIcon.png
new file mode 100755
index 0000000..eaea2c1
--- /dev/null
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/Guide/LeftIcon.png
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/Guide/RightIcon.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/Guide/RightIcon.png
new file mode 100755
index 0000000..05ab239
--- /dev/null
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/Guide/RightIcon.png
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/Item/LogicMsgIcon.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/Item/LogicMsgIcon.png
new file mode 100755
index 0000000..90b1372
--- /dev/null
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/Item/LogicMsgIcon.png
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/Item/Next.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/Item/Next.png
index 5a7036e..9d94b68 100755
--- a/ZigbeeApp/GateWay.Droid/Assets/Phone/Item/Next.png
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/Item/Next.png
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/Item/ProgressBubbles.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/Item/ProgressBubbles.png
new file mode 100755
index 0000000..88b6808
--- /dev/null
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/Item/ProgressBubbles.png
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/Item/RightNext.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/Item/RightNext.png
new file mode 100755
index 0000000..5a7036e
--- /dev/null
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/Item/RightNext.png
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/Item/SafetyShortcut.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/Item/SafetyShortcut.png
new file mode 100755
index 0000000..6fba3ad
--- /dev/null
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/Item/SafetyShortcut.png
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/Item/SafetyShortcut_background.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/Item/SafetyShortcut_background.png
new file mode 100755
index 0000000..05fd512
--- /dev/null
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/Item/SafetyShortcut_background.png
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/Item/SafetyShortcut_item.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/Item/SafetyShortcut_item.png
new file mode 100755
index 0000000..985e595
--- /dev/null
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/Item/SafetyShortcut_item.png
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/Item/SafetyShortcut_itemSelected.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/Item/SafetyShortcut_itemSelected.png
new file mode 100755
index 0000000..3c90f5d
--- /dev/null
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/Item/SafetyShortcut_itemSelected.png
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/Item/SceneMsgIcon.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/Item/SceneMsgIcon.png
new file mode 100755
index 0000000..90b1372
--- /dev/null
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/Item/SceneMsgIcon.png
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/AirConditionerZbGateway.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/AirConditionerZbGateway.png
new file mode 100755
index 0000000..510b39b
--- /dev/null
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/AirConditionerZbGateway.png
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/AirSwitchCloudContr.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/AirSwitchCloudContr.png
index c812167..febc560 100755
--- a/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/AirSwitchCloudContr.png
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/AirSwitchCloudContr.png
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/ButtonPanelFour.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/ButtonPanelFour.png
index 0d9f429..d2ec244 100755
--- a/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/ButtonPanelFour.png
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/ButtonPanelFour.png
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/ButtonPanelFourNotPower.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/ButtonPanelFourNotPower.png
index 0d9f429..d2ec244 100755
--- a/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/ButtonPanelFourNotPower.png
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/ButtonPanelFourNotPower.png
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/ButtonPanelThree.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/ButtonPanelThree.png
index bb3a151..d8ec95c 100755
--- a/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/ButtonPanelThree.png
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/ButtonPanelThree.png
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/ButtonPanelTwo.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/ButtonPanelTwo.png
index 702e8c0..5703a73 100755
--- a/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/ButtonPanelTwo.png
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/ButtonPanelTwo.png
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/CommonDevice.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/CommonDevice.png
index c812167..f5a212a 100755
--- a/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/CommonDevice.png
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/CommonDevice.png
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/CurtainAutoOpen.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/CurtainAutoOpen.png
index 636e46a..9ba14c6 100755
--- a/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/CurtainAutoOpen.png
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/CurtainAutoOpen.png
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/CurtainSiphonate.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/CurtainSiphonate.png
index 6735225..59c3de3 100755
--- a/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/CurtainSiphonate.png
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/CurtainSiphonate.png
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/DimmableLightOneLoad.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/DimmableLightOneLoad.png
new file mode 100755
index 0000000..9a95bb9
--- /dev/null
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/DimmableLightOneLoad.png
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/RelayThreeLoad.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/RelayThreeLoad.png
new file mode 100755
index 0000000..08b603e
--- /dev/null
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/RelayThreeLoad.png
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/Repeater.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/Repeater.png
new file mode 100755
index 0000000..7e73ed3
--- /dev/null
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/Repeater.png
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/SensorCarbonMonoxide.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/SensorCarbonMonoxide.png
index f992dfc..29aea56 100755
--- a/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/SensorCarbonMonoxide.png
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/SensorCarbonMonoxide.png
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/SensorDoorWindow.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/SensorDoorWindow.png
index 4845a8c..d0d0ec7 100755
--- a/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/SensorDoorWindow.png
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/SensorDoorWindow.png
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/SensorEmergencyButton.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/SensorEmergencyButton.png
deleted file mode 100755
index 5cfde80..0000000
--- a/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/SensorEmergencyButton.png
+++ /dev/null
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/SensorFire.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/SensorFire.png
index 96eb1a8..3caae04 100755
--- a/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/SensorFire.png
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/SensorFire.png
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/SensorInfrared.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/SensorInfrared.png
index be936f5..1e7a63c 100755
--- a/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/SensorInfrared.png
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/SensorInfrared.png
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/SensorMotion.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/SensorMotion.png
deleted file mode 100755
index fa2e5f3..0000000
--- a/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/SensorMotion.png
+++ /dev/null
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/SensorPir.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/SensorPir.png
index fa2e5f3..ccd155a 100755
--- a/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/SensorPir.png
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/SensorPir.png
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/SensorTemperatrueHumidity.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/SensorTemperatrueHumidity.png
new file mode 100755
index 0000000..30b0fc7
--- /dev/null
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/SensorTemperatrueHumidity.png
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/SensorWater.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/SensorWater.png
index 3fc3c7c..033f661 100755
--- a/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/SensorWater.png
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/RealDevice/SensorWater.png
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/Room/IconBackground.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/Room/IconBackground.png
new file mode 100755
index 0000000..cbc6eda
--- /dev/null
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/Room/IconBackground.png
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Assets/Phone/Room/IconSelectedBackground.png b/ZigbeeApp/GateWay.Droid/Assets/Phone/Room/IconSelectedBackground.png
new file mode 100755
index 0000000..28f3760
--- /dev/null
+++ b/ZigbeeApp/GateWay.Droid/Assets/Phone/Room/IconSelectedBackground.png
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/GateWay.Droid.csproj b/ZigbeeApp/GateWay.Droid/GateWay.Droid.csproj
index 9f7ee17..124c03d 100644
--- a/ZigbeeApp/GateWay.Droid/GateWay.Droid.csproj
+++ b/ZigbeeApp/GateWay.Droid/GateWay.Droid.csproj
@@ -194,6 +194,8 @@
     <Compile Include="Application.cs" />
     <Compile Include="Resources\Resource.designer.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="ZXing\ZXingCustomScanView.cs" />
+    <Compile Include="ZXing\ZXingOverlayView.cs" />
   </ItemGroup>
   <ItemGroup>
     <None Include="app.config" />
@@ -524,10 +526,8 @@
     <AndroidAsset Include="Assets\Phone\RealDevice\ButtonPanelTwo.png" />
     <AndroidAsset Include="Assets\Phone\RealDevice\SensorCarbonMonoxide.png" />
     <AndroidAsset Include="Assets\Phone\RealDevice\SensorDoorWindow.png" />
-    <AndroidAsset Include="Assets\Phone\RealDevice\SensorEmergencyButton.png" />
     <AndroidAsset Include="Assets\Phone\RealDevice\SensorFire.png" />
     <AndroidAsset Include="Assets\Phone\RealDevice\SensorInfrared.png" />
-    <AndroidAsset Include="Assets\Phone\RealDevice\SensorMotion.png" />
     <AndroidAsset Include="Assets\Phone\RealDevice\SensorPir.png" />
     <AndroidAsset Include="Assets\Phone\RealDevice\SensorWater.png" />
     <AndroidAsset Include="Assets\Phone\Room\RoomCardView.png" />
@@ -1467,6 +1467,75 @@
   <ItemGroup>
     <AndroidAsset Include="Assets\Phone\Room\AddBackground.png" />
   </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\Item\LogicMsgIcon.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\Item\SceneMsgIcon.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\Item\RightNext.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\Guide\Finger.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\Guide\Arrows1.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\Guide\LeftIcon.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\Guide\RightIcon.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidResource Include="Resources\layout\zxing_layout.xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\Item\ProgressBubbles.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\Item\SafetyShortcut.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\Item\SafetyShortcut_background.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\Item\SafetyShortcut_item.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\Item\SafetyShortcut_itemSelected.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\Room\IconBackground.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\Room\IconSelectedBackground.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\Gateway\RealGateway.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\RealDevice\AirConditionerZbGateway.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\RealDevice\DimmableLightOneLoad.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\RealDevice\RelayThreeLoad.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\RealDevice\Repeater.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\RealDevice\SensorTemperatrueHumidity.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\Center\MainBack1.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidAsset Include="Assets\Phone\Center\MainBack2.png" />
+  </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 2794d8d..df21039 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="2019122001" android:installLocation="auto" android:versionName="1.0.19122001">
+<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.hdl.home" android:versionCode="2019123001" android:installLocation="auto" android:versionName="1.0.19123001">
 	<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" />
diff --git a/ZigbeeApp/GateWay.Droid/Resources/Resource.designer.cs b/ZigbeeApp/GateWay.Droid/Resources/Resource.designer.cs
index 4d98be1..3082e05 100644
--- a/ZigbeeApp/GateWay.Droid/Resources/Resource.designer.cs
+++ b/ZigbeeApp/GateWay.Droid/Resources/Resource.designer.cs
@@ -3186,8 +3186,8 @@
 			// aapt resource value: 0x7f090099
 			public const int container = 2131296409;
 			
-			// aapt resource value: 0x7f0900e1
-			public const int contentFrame = 2131296481;
+			// aapt resource value: 0x7f0900e4
+			public const int contentFrame = 2131296484;
 			
 			// aapt resource value: 0x7f090063
 			public const int contentPanel = 2131296355;
@@ -3375,8 +3375,8 @@
 			// aapt resource value: 0x7f09005e
 			public const int list_item = 2131296350;
 			
-			// aapt resource value: 0x7f0900e3
-			public const int masked = 2131296483;
+			// aapt resource value: 0x7f0900e6
+			public const int masked = 2131296486;
 			
 			// aapt resource value: 0x7f0900ce
 			public const int media_actions = 2131296462;
@@ -3657,6 +3657,15 @@
 			// aapt resource value: 0x7f0900b4
 			public const int tvTitle = 2131296436;
 			
+			// aapt resource value: 0x7f0900e2
+			public const int tv_zxing_back = 2131296482;
+			
+			// aapt resource value: 0x7f0900e3
+			public const int tv_zxing_flash = 2131296483;
+			
+			// aapt resource value: 0x7f0900e1
+			public const int tv_zxing_scan = 2131296481;
+			
 			// aapt resource value: 0x7f090022
 			public const int uniform = 2131296290;
 			
@@ -3669,8 +3678,8 @@
 			// aapt resource value: 0x7f09000c
 			public const int view_offset_helper = 2131296268;
 			
-			// aapt resource value: 0x7f0900e2
-			public const int visible = 2131296482;
+			// aapt resource value: 0x7f0900e5
+			public const int visible = 2131296485;
 			
 			// aapt resource value: 0x7f090031
 			public const int withText = 2131296305;
@@ -3966,10 +3975,13 @@
 			public const int tooltip = 2130968650;
 			
 			// aapt resource value: 0x7f04004b
-			public const int zxingscanneractivitylayout = 2130968651;
+			public const int zxing_layout = 2130968651;
 			
 			// aapt resource value: 0x7f04004c
-			public const int zxingscannerfragmentlayout = 2130968652;
+			public const int zxingscanneractivitylayout = 2130968652;
+			
+			// aapt resource value: 0x7f04004d
+			public const int zxingscannerfragmentlayout = 2130968653;
 			
 			static Layout()
 			{
diff --git a/ZigbeeApp/GateWay.Droid/Resources/drawable/Icon.png b/ZigbeeApp/GateWay.Droid/Resources/drawable/Icon.png
index 881dcad..9adb1f4 100755
--- a/ZigbeeApp/GateWay.Droid/Resources/drawable/Icon.png
+++ b/ZigbeeApp/GateWay.Droid/Resources/drawable/Icon.png
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Resources/drawable/Loading.png b/ZigbeeApp/GateWay.Droid/Resources/drawable/Loading.png
index 6b97ea8..8121837 100755
--- a/ZigbeeApp/GateWay.Droid/Resources/drawable/Loading.png
+++ b/ZigbeeApp/GateWay.Droid/Resources/drawable/Loading.png
Binary files differ
diff --git a/ZigbeeApp/GateWay.Droid/Resources/layout/zxing_layout.xml b/ZigbeeApp/GateWay.Droid/Resources/layout/zxing_layout.xml
new file mode 100755
index 0000000..54437c8
--- /dev/null
+++ b/ZigbeeApp/GateWay.Droid/Resources/layout/zxing_layout.xml
@@ -0,0 +1,58 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+      android:orientation="vertical"
+      android:layout_width="match_parent"
+      android:layout_height="match_parent">
+
+      <GateWay.Droid.ZXingOverlayView
+      android:layout_width="match_parent"
+      android:layout_height="match_parent"/>
+    <RelativeLayout
+    android:layout_width="fill_parent"
+    android:layout_height="50dp"
+    android:layout_gravity="top"
+    android:background="#99000000">
+<!--
+    <ImageButton
+        android:id="@+id/capture_imageview_back"
+        android:layout_width="42dp"
+        android:layout_height="42dp"
+        android:layout_centerVertical="true"
+        android:background="@drawable/abc_ic_ab_back_material"/>
+-->
+    <TextView
+        android:id="@+id/tv_zxing_scan"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerInParent="true"
+        android:textColor="#ffffffff"
+        android:textSize="20sp"
+        android:text="鎵竴鎵�"/>
+
+</RelativeLayout>
+
+  <TextView
+      android:id="@+id/tv_zxing_back"
+      android:layout_width="wrap_content"
+      android:layout_height="wrap_content"
+      android:textColor="#FFFFFF"
+      android:textSize="18sp"
+      android:paddingLeft="10dp"
+      android:paddingBottom="10dp"
+      android:text="@android:string/cancel"
+      android:layout_alignParentLeft ="true"
+      android:layout_alignParentBottom="true"/>
+  <TextView
+      android:id="@+id/tv_zxing_flash"
+      android:layout_width="wrap_content"
+      android:layout_height="wrap_content"
+      android:textSize="18sp"
+      android:textColor="#FFFFFF"
+      android:paddingRight="10dp"
+      android:paddingBottom="10dp"
+      android:text="闂厜鐏�"
+      android:layout_alignParentRight ="true"
+      android:layout_alignParentBottom="true"
+        />
+</RelativeLayout>
+
diff --git a/ZigbeeApp/GateWay.Droid/ZXing/ZXingCustomScanView.cs b/ZigbeeApp/GateWay.Droid/ZXing/ZXingCustomScanView.cs
new file mode 100755
index 0000000..d730b86
--- /dev/null
+++ b/ZigbeeApp/GateWay.Droid/ZXing/ZXingCustomScanView.cs
@@ -0,0 +1,71 @@
+锘縰sing System;
+using Android.Content;
+using Android.Views;
+using Android.Widget;
+
+namespace GateWay.Droid
+{
+ 
+    public class ZXingCustomScanView : RelativeLayout
+    {
+        public Action OnCancel;
+        public Action OnTorch;
+        public TextView cancelTextView, flashTextView, titleTextView;
+        public ZXingCustomScanView(Context context) : base(context)
+        {
+            View.Inflate(context, Resource.Layout.zxing_layout, this);
+
+            titleTextView = FindViewById<TextView>(Resource.Id.tv_zxing_scan);
+
+            cancelTextView = FindViewById<TextView>(Resource.Id.tv_zxing_back);
+            cancelTextView.Text = cancelText;
+            flashTextView = FindViewById<TextView>(Resource.Id.tv_zxing_flash);
+            flashTextView.Text = flashText;
+
+            cancelTextView.Click += Cancel_Click;
+            flashTextView.Click += Flash_Click;
+        }
+        
+        String cancelText = "Cancel";
+        public String CancelText
+        {
+            get
+            {
+                return cancelText;
+            }
+            set {
+                cancelText = value;
+                cancelTextView.Text = cancelText;
+            }
+        }
+
+        String flashText = "Flash";
+        public String FlashText
+        {
+            get
+            {
+                return flashText;
+            }
+            set
+            {
+                flashText = value;
+                flashTextView.Text = flashText;
+            }
+        }
+
+
+
+
+
+        private void Flash_Click(object sender, EventArgs e)
+        {
+            OnTorch?.Invoke();
+        }
+
+        private void Cancel_Click(object sender, System.EventArgs e)
+        {
+            OnCancel?.Invoke();
+        }
+
+    }
+}
diff --git a/ZigbeeApp/GateWay.Droid/ZXing/ZXingOverlayView.cs b/ZigbeeApp/GateWay.Droid/ZXing/ZXingOverlayView.cs
new file mode 100755
index 0000000..8f456b4
--- /dev/null
+++ b/ZigbeeApp/GateWay.Droid/ZXing/ZXingOverlayView.cs
@@ -0,0 +1,118 @@
+锘縰sing System;
+using Android.Content;
+using Android.Graphics;
+using Android.Util;
+using Android.Views;
+using Android.Widget;
+
+namespace GateWay.Droid
+{
+    public class ZXingOverlayView: View
+    {
+        float screenRate;
+        float lineWidth;
+        float textSize;
+        float left;
+        float width;
+        float height;
+        float top;
+        Paint paint;
+        public ZXingOverlayView(Context context) : base(context)
+        {
+            InitData(context);
+        }
+
+        public ZXingOverlayView(Context context, IAttributeSet attrs) : base(context, attrs)
+        {
+            InitData(context);
+        }
+
+        public override void Draw(Canvas canvas)
+        {
+            left = canvas.Width * 0.125f;
+            width = canvas.Width * 0.75f;
+            height = canvas.Width * 0.75f;
+            top = (canvas.Height - height) / 2;
+
+            paint = new Paint { AntiAlias = true, };
+            paint.SetStyle(Paint.Style.FillAndStroke);
+
+            AddScreenFillRect(canvas);
+            AddCenterClearRect(canvas);
+            AddWhiteCanvas(canvas);
+            AddCornerLineWithCanvas(canvas);
+            //AddTextWithCanvas(canvas);
+        }
+
+        private void InitData(Context context)
+        {
+            screenRate = 15 * context.Resources.DisplayMetrics.Density;
+            lineWidth = 2 * context.Resources.DisplayMetrics.Density;
+            textSize = 16 * context.Resources.DisplayMetrics.Density;
+
+    
+        }
+
+        //娣诲姞灞忓箷鍗婇�忔槑濉厖鑹�
+        private void AddScreenFillRect(Canvas canvas)
+        {
+            paint.Color = Color.Black;
+            paint.Alpha = 128;
+
+            canvas.DrawRect(0, 0, canvas.Width, top, paint);
+            canvas.DrawRect(0, top, left, top + width, paint);
+            canvas.DrawRect(width + left, top, canvas.Width, top + width, paint);
+            canvas.DrawRect(0, top + width, canvas.Width, canvas.Height, paint);
+        }
+        //娣诲姞涓績鍏ㄩ�忔槑濉厖鑹�
+        private void AddCenterClearRect(Canvas canvas)
+        {
+            paint.Color = Color.Transparent;
+
+            canvas.DrawRect(left, top, left + width, top + width, paint);
+        }
+        //娣诲姞鐧借壊鏂规
+        private void AddWhiteCanvas(Canvas canvas)
+        {
+            paint.Color = Color.Rgb(255, 255, 255);
+
+            canvas.DrawRect(left, top, left + width, top + 2, paint);
+            canvas.DrawRect(left, top, left + 2, top + height, paint);
+            canvas.DrawRect(left + width, top, left + width + 2, top + height, paint);
+            canvas.DrawRect(left, top + height, left + width, top + height + 2, paint);
+        }
+        //娣诲姞鍥涗釜瑙掔殑钃濊壊
+        private void AddCornerLineWithCanvas(Canvas canvas)
+        {
+            paint.Color = Color.Rgb(22, 118, 188);
+
+            canvas.DrawRect(left, top, left + screenRate, top + lineWidth, paint);
+            canvas.DrawRect(left, top, left + lineWidth, top + screenRate, paint);
+            canvas.DrawRect(left + width - screenRate, top, left + width, top + lineWidth, paint);
+            canvas.DrawRect(left + width, top, left + width + lineWidth, top + screenRate, paint);
+            canvas.DrawRect(left, top + width, left + screenRate, top + width + lineWidth, paint);
+            canvas.DrawRect(left, top + width - screenRate, left + lineWidth, top + width, paint);
+            canvas.DrawRect(left + width - screenRate, top + width, left + width + lineWidth, top + width + lineWidth, paint);
+            canvas.DrawRect(left + width, top + width - screenRate, left + width + lineWidth, top + width + lineWidth, paint);
+        }
+        //娣诲姞鏂囧瓧鎻愰啋
+        private void AddTextWithCanvas(Canvas canvas)
+        {
+            paint.Color = Color.Rgb(255, 255, 255);
+            paint.SetTypeface(Typeface.DefaultBold);
+            paint.TextSize = textSize;
+            string text = "BottomText";
+
+            float textWidth = paint.MeasureText(text);
+
+            canvas.DrawText(text, (canvas.Width - textWidth) / 2, top + width + textSize, paint);
+
+
+            //canvas.DrawText("杩斿洖", 50, 100, paint);
+
+        }
+
+
+
+    }
+}
diff --git a/ZigbeeApp/Home.Ios/Home.IOS.csproj b/ZigbeeApp/Home.Ios/Home.IOS.csproj
index 9d84fa5..6350923 100644
--- a/ZigbeeApp/Home.Ios/Home.IOS.csproj
+++ b/ZigbeeApp/Home.Ios/Home.IOS.csproj
@@ -19,7 +19,7 @@
         <DebugType>full</DebugType>
         <Optimize>false</Optimize>
         <OutputPath>bin\iPhoneSimulator\Debug</OutputPath>
-        <DefineConstants>DEBUG</DefineConstants>
+        <DefineConstants>__IOS__;__MOBILE__;__UNIFIED__;DEBUG;iOS</DefineConstants>
         <ErrorReport>prompt</ErrorReport>
         <WarningLevel>4</WarningLevel>
         <MtouchArch>x86_64</MtouchArch>
@@ -131,14 +131,20 @@
     </ItemGroup>
     <ItemGroup>
       <BundleResource Include="Resources\Language.ini" />
+      <BundleResource Include="Resources\Phone\Guide\RightIcon.png" />
+      <BundleResource Include="Resources\Phone\Guide\LeftIcon.png" />
+      <BundleResource Include="Resources\Phone\Guide\Finger.png" />
+      <BundleResource Include="Resources\Phone\Guide\Arrows1.png" />
       <BundleResource Include="Resources\Phone\Room\RoomCardView.png" />
       <BundleResource Include="Resources\Phone\Room\ItemSelected.png" />
       <BundleResource Include="Resources\Phone\Room\ItemUnSelected.png" />
       <BundleResource Include="Resources\Phone\Room\ItemUnSelected_Black.png" />
       <BundleResource Include="Resources\Phone\Room\FavoriteRoom.png" />
+      <BundleResource Include="Resources\Phone\Room\IconBackground.png" />
       <BundleResource Include="Resources\Phone\Room\Temperature.png" />
       <BundleResource Include="Resources\Phone\Room\List.png" />
       <BundleResource Include="Resources\Phone\Room\NoNameRoom.png" />
+      <BundleResource Include="Resources\Phone\Room\IconSelectedBackground.png" />
       <BundleResource Include="Resources\Phone\Room\Room_Rectangle.png" />
       <BundleResource Include="Resources\Phone\Room\RoomCardView_Name.png" />
       <BundleResource Include="Resources\Phone\Room\Humidity.png" />
@@ -253,6 +259,8 @@
       <BundleResource Include="Resources\Phone\Center\ImperialCrown.png" />
       <BundleResource Include="Resources\Phone\Center\Opinion.png" />
       <BundleResource Include="Resources\Phone\Center\DeviceManagement.png" />
+      <BundleResource Include="Resources\Phone\Center\MainBack2.png" />
+      <BundleResource Include="Resources\Phone\Center\MainBack1.png" />
       <BundleResource Include="Resources\Phone\Center\Admin.png" />
       <BundleResource Include="Resources\Phone\Center\SafetyManagement.png" />
       <BundleResource Include="Resources\Phone\Navigation\CategorySelected.png" />
@@ -372,17 +380,21 @@
       <BundleResource Include="Resources\Phone\Item\DeviceLimitGroundSelected.png" />
       <BundleResource Include="Resources\Phone\Item\QRCode.png" />
       <BundleResource Include="Resources\Phone\Item\ScanQRcodeIcon.png" />
+      <BundleResource Include="Resources\Phone\Item\LogicMsgIcon.png" />
       <BundleResource Include="Resources\Phone\Item\InputAccountIcon.png" />
       <BundleResource Include="Resources\Phone\Item\ItemSelected.png" />
       <BundleResource Include="Resources\Phone\Item\UnLockSuccess.png" />
       <BundleResource Include="Resources\Phone\Item\GarrisonList.png" />
+      <BundleResource Include="Resources\Phone\Item\SafetyShortcut_item.png" />
       <BundleResource Include="Resources\Phone\Item\ItemUnSelected.png" />
       <BundleResource Include="Resources\Phone\Item\NowAcctionTip.png" />
       <BundleResource Include="Resources\Phone\Item\VirtualFrame.png" />
       <BundleResource Include="Resources\Phone\Item\DeleteIcon2Selected.png" />
       <BundleResource Include="Resources\Phone\Item\FunctionCardView.png" />
       <BundleResource Include="Resources\Phone\Item\ForgotPswList.png" />
+      <BundleResource Include="Resources\Phone\Item\ProgressBubbles.png" />
       <BundleResource Include="Resources\Phone\Item\Down.png" />
+      <BundleResource Include="Resources\Phone\Item\SafetyShortcut.png" />
       <BundleResource Include="Resources\Phone\Item\CollectionSelected.png" />
       <BundleResource Include="Resources\Phone\Item\Room.png" />
       <BundleResource Include="Resources\Phone\Item\SeekBarIcon.png" />
@@ -407,6 +419,7 @@
       <BundleResource Include="Resources\Phone\Item\Search.png" />
       <BundleResource Include="Resources\Phone\Item\SwitchSelected.png" />
       <BundleResource Include="Resources\Phone\Item\NextSelected.png" />
+      <BundleResource Include="Resources\Phone\Item\SafetyShortcut_itemSelected.png" />
       <BundleResource Include="Resources\Phone\Item\Timer.png" />
       <BundleResource Include="Resources\Phone\Item\PlusSign2Selected.png" />
       <BundleResource Include="Resources\Phone\Item\ShardMenu.png" />
@@ -423,6 +436,7 @@
       <BundleResource Include="Resources\Phone\Item\SelectFloor_Left.png" />
       <BundleResource Include="Resources\Phone\Item\Add_Category.png" />
       <BundleResource Include="Resources\Phone\Item\ResidenceIcon.png" />
+      <BundleResource Include="Resources\Phone\Item\SafetyShortcut_background.png" />
       <BundleResource Include="Resources\Phone\Item\Tips.png" />
       <BundleResource Include="Resources\Phone\Item\DeviceLimitGround.png" />
       <BundleResource Include="Resources\Phone\Item\Switch.png" />
@@ -448,11 +462,13 @@
       <BundleResource Include="Resources\Phone\Item\PswSettion.png" />
       <BundleResource Include="Resources\Phone\Item\MinusSign2Selected.png" />
       <BundleResource Include="Resources\Phone\Item\CollectionSelected1.png" />
+      <BundleResource Include="Resources\Phone\Item\SceneMsgIcon.png" />
       <BundleResource Include="Resources\Phone\Item\FailIcon.png" />
       <BundleResource Include="Resources\Phone\Item\Message.png" />
       <BundleResource Include="Resources\Phone\Item\FixedPosition.png" />
       <BundleResource Include="Resources\Phone\Item\GarrisonListSelected.png" />
       <BundleResource Include="Resources\Phone\Item\Back.png" />
+      <BundleResource Include="Resources\Phone\Item\RightNext.png" />
       <BundleResource Include="Resources\Phone\Item\FunctionViewBG.png" />
       <BundleResource Include="Resources\Phone\Item\SceneFunctionBG.png" />
       <BundleResource Include="Resources\Phone\Item\SelectHouse.png" />
@@ -714,22 +730,26 @@
       <BundleResource Include="Resources\Phone\RealDevice\CurtainSiphonate.png" />
       <BundleResource Include="Resources\Phone\RealDevice\ButtonPanelTwo.png" />
       <BundleResource Include="Resources\Phone\RealDevice\SensorPir.png" />
+      <BundleResource Include="Resources\Phone\RealDevice\RelayThreeLoad.png" />
       <BundleResource Include="Resources\Phone\RealDevice\ButtonPanelFourNotPower.png" />
       <BundleResource Include="Resources\Phone\RealDevice\CurtainAutoOpen.png" />
       <BundleResource Include="Resources\Phone\RealDevice\SensorInfrared.png" />
       <BundleResource Include="Resources\Phone\RealDevice\AirSwitchCloudContr.png" />
       <BundleResource Include="Resources\Phone\RealDevice\ButtonPanelFour.png" />
-      <BundleResource Include="Resources\Phone\RealDevice\SensorEmergencyButton.png" />
+      <BundleResource Include="Resources\Phone\RealDevice\Repeater.png" />
+      <BundleResource Include="Resources\Phone\RealDevice\SensorTemperatrueHumidity.png" />
       <BundleResource Include="Resources\Phone\RealDevice\CommonDevice.png" />
-      <BundleResource Include="Resources\Phone\RealDevice\SensorMotion.png" />
+      <BundleResource Include="Resources\Phone\RealDevice\AirConditionerZbGateway.png" />
       <BundleResource Include="Resources\Phone\RealDevice\SensorDoorWindow.png" />
       <BundleResource Include="Resources\Phone\RealDevice\SensorFire.png" />
       <BundleResource Include="Resources\Phone\RealDevice\ButtonPanelThree.png" />
       <BundleResource Include="Resources\Phone\RealDevice\SensorCarbonMonoxide.png" />
+      <BundleResource Include="Resources\Phone\RealDevice\DimmableLightOneLoad.png" />
       <BundleResource Include="Resources\Phone\RealDevice\SensorWater.png" />
       <BundleResource Include="Resources\Phone\Gateway\WiredGatewaySearching.png" />
       <BundleResource Include="Resources\Phone\Gateway\WirelessGatewaySearching.png" />
       <BundleResource Include="Resources\Phone\Gateway\RealGateway6.png" />
+      <BundleResource Include="Resources\Phone\Gateway\RealGateway.png" />
       <BundleResource Include="Resources\Phone\Gateway\RealGateway1.png" />
       <BundleResource Include="Resources\Phone\Gateway\WiredGatewayInstruct.png" />
       <BundleResource Include="Resources\Phone\Gateway\WirelessApDirection.png" />
diff --git a/ZigbeeApp/Home.Ios/Resources/Language.ini b/ZigbeeApp/Home.Ios/Resources/Language.ini
index 0634da9..0bfa38c 100755
--- a/ZigbeeApp/Home.Ios/Resources/Language.ini
+++ b/ZigbeeApp/Home.Ios/Resources/Language.ini
@@ -6,7 +6,7 @@
 [Chinese]
 1=涓婚〉
 2=鍒嗙被
-3=涓汉涓績
+3=鎴戠殑
 4=鎸夐敭閰嶇疆
 5=娣诲姞缁戝畾鐩爣
 6=寮�
@@ -185,9 +185,9 @@
 179=鎿嶄綔澶辫触
 180=杩滅▼寮�閿佺粦瀹氭垚鍔�
 181=璇疯缃簩娆″畨鍏ㄩ獙璇佹柟寮�
-182=鍏抽棴
+182=鍏�
 183=寮�閿佷腑
-184=鎵撳紑
+184=寮�
 185=骞�
 186=鐭鎴愬姛
 187=鐭澶辫触
@@ -228,6 +228,12 @@
 222=绂荤嚎鍦烘櫙
 223=纭鍒犻櫎鎸夐敭妯″紡鍙婃竻绌烘墍鏈夌洰鏍�
 224=缁戝畾鐩爣涓虹┖锛岃閫夋嫨闇�瑕佺粦瀹氱洰鏍�
+225=缁戝畾鐩爣
+226=纭鍒犻櫎鎸夐敭妯″紡鍙�
+227=娓呯┖鎵�鏈夌洰鏍�
+228=纭
+229=鍒嗕韩鎴愬姛
+230=纭畾瑕佸皢璇ヨ处鎴疯В鍐伙紵
 
 548=鎻愰啋璁剧疆
 550=鏂板鐢ㄦ埛
@@ -374,8 +380,8 @@
 5105=璇烽�夋嫨鏃堕棿
 5106=鍦扮悊鍥存爮
 5107=浣嶇疆妯″紡
-5108=绂诲
-5109=鍦ㄥ
+5108=绂诲紑鍦扮偣
+5109=鍒拌揪鍦扮偣
 5110=澶╂皵鏉′欢
 5111=鍦扮悊浣嶇疆
 5112=鎶ヨ
@@ -396,7 +402,7 @@
 5127=宸叉湁鑷姩鍖栨潯浠�
 5128=寮�濮嬫椂闂�
 5129=鎻愮ず
-5130=寮�濮嬫椂闂村ぇ浜庣粨鏉熸椂闂达紝閲嶆柊璁剧疆鏃堕棿鏃犳晥
+5130=寮�濮嬫椂闂村ぇ浜庣粨鏉熸椂闂达紝璇烽噸鏂拌缃椂闂�.
 5131=缁撴潫鏃堕棿
 5132=璇锋牴鎹綘鐨勯渶瑕佽缃棩绋�
 5133=鏃堕棿
@@ -610,6 +616,10 @@
 5371=璇烽�夋嫨鍦烘櫙锛屽惁鍒欐棤娉曟墽琛屼笅涓�姝�.
 5372=璇烽�夋嫨瀹夐槻妯″紡锛屽惁鍒欐棤娉曟墽琛屼笅涓�姝�.
 5373=鑷姩鍖栧凡鎵ц.
+5374=娣诲姞浼犳劅鍣�
+5375=娣诲姞寮�鍏�/鐏厜
+5376=搴旂敤
+5377=娌℃湁鑷姩鍖杮\r\n} 璇风偣鍑诲彸涓婅娣诲姞
 
 
 
@@ -627,7 +637,7 @@
 10108=鎼滅储
 10109=瀹屾垚
 10110=璐﹀彿鐧诲綍
-10111=鍙戦�侀獙璇佺爜
+10111=鑾峰彇楠岃瘉鐮�
 10112=鍚庨噸鍙�
 10113=璇峰啀娆¤緭鍏ュ瘑鐮�
 10114=鍙戦�侀獙璇佺爜鎴愬姛锛岃娉ㄦ剰鏌ユ敹
@@ -659,6 +669,9 @@
 10140=璇疯緭鍏ラ暱搴︿负6-13涓瓧绗︾殑瀵嗙爜
 10141=浣犲凡琚己鍒朵笅绾匡紒
 10142=鏂板瘑鐮佸拰鍘熷瘑鐮佷竴鑷�
+10143=璇峰厛鑾峰彇楠岃瘉鐮�
+10144=蹇樿瀵嗙爜锛�
+10145=宸叉湁璐﹀彿锛熺櫥褰�
 
 
 
@@ -670,6 +683,8 @@
 10155=鎿嶄綔澶辫触
 10156=鍙戦�侀獙璇佺爜澶辫触
 10157=缃戝叧涓嶅湪绾�
+10158=涓嬩竴姝�
+
 
 10160=宸叉槸鏈�鏂扮増鏈�
 10161=鏇存柊鏈�鏂扮増
@@ -714,6 +729,9 @@
 11032=閫夋嫨鍖哄煙
 11033=閫夋嫨鍦烘櫙鍥剧墖
 11034=纭畾瑕佺Щ闄よ鍔熻兘锛�
+11035=娣诲姞鍔熻兘
+11036=娣诲姞寤舵椂
+
 
 
 12100=鏈煡璁惧
@@ -729,6 +747,15 @@
 12110=娓╁害浼犳劅鍣�
 12111=婀垮害浼犳劅鍣�
 12112=娓╂箍搴︿紶鎰熷櫒
+
+12500=鏈変汉
+12501=鏃犱汉
+12502=婕忔按
+12503=姝e父
+12504=寮�鍚�
+12505=闂悎
+12506=鎶ヨ
+12507=瀹夊叏
 
 
 13100=鎴块棿鍒楄〃
@@ -792,10 +819,11 @@
 13506=5鎸�
 13511=璇锋竻娲佹护缃�
 
-13600=娌″姛鑳� {\r\n} 璇峰厛娣诲姞
-13601=娌″満鏅� {\r\n} 璇峰厛娣诲姞
+13600=杩樻病鏈夊姛鑳藉摝
+13601=杩樻病鏈夊満鏅摝
 13602=鏃�
 13603=鑾峰彇涓�...
+13604=褰撳墠 浜害
 
 
 15000=瀵嗙爜闀垮害涓簕0}涓瓧绗�
@@ -940,7 +968,7 @@
 15145=鎴愬憳(绠$悊鍛樻潈闄�)
 15146=璐﹀彿淇℃伅
 15147=鐢ㄦ埛鍚嶇О
-15148=Email
+15148=閭
 15149=鎵嬫満鍙�
 15150=淇敼
 15151=缁戝畾
@@ -1203,8 +1231,8 @@
 15442=闂ㄧ獥琚墦寮�
 15443=闂ㄧ獥宸插叧闂�
 15448=鑾峰彇璁惧鐗堟湰淇℃伅澶辫触
-15449=鑾峰彇浼犳劅鍣ㄧ伅鍏夎缃俊鎭け璐�
-15450=璁剧疆浼犳劅鍣ㄧ伅鍏夐厤缃け璐�
+15449=鑾峰彇浼犳劅鍣ㄨ缃俊鎭け璐�
+15450=璁剧疆浼犳劅鍣ㄩ厤缃俊鎭け璐�
 15451=鐧藉ぉ
 15452=榛勬槒
 15453=澶滄櫄
@@ -1754,6 +1782,30 @@
 16023=鎻愰啋
 16024=缁戝畾鎴愬姛锛佷笅娆′綘鍙互鐢ㄥ井淇0}璐﹀彿蹇�熺櫥褰曞暒
 16025=濂界殑
+16026=宸叉墽琛�
+16027=闂ㄩ攣瑙﹀彂璀︽姤
+16028=鎴戠殑浣忓畢
+16029=瀹㈠巺
+16030=闃冲彴
+16031=鍗у
+16032=宸﹀彸婊戝姩,鍒囨崲鎴块棿鍗$墖
+16033=鍙虫粦杩涘叆鎴块棿鍒楄〃
+16034=闂厜鐏�
+16035=鎴块棿鐨勫唴瀹瑰湪姝ゅ鏄剧ず
+16036=鎴戠煡閬撲簡
+16037=鍒嗕韩鏁版嵁宸茬粡鍙樻洿,璇烽噸鏂扮櫥闄�
+16038=宸ヤ綔妯″紡
+16039=鎺у埗妯″紡
+16040=瑙﹀彂妯″紡
+16041=涓婃姤闂撮殧
+16042=鍏ㄨ嚜鍔ㄦā寮�
+16043=鍗婅嚜鍔ㄦā寮�
+16044=璋冨厜妯″紡
+16045=寮�鍏虫ā寮�
+16046=寮�鐏寒搴�
+16047=鎱㈠惎鍔�
+16048=鎱㈠叧闂�
+16049=浜害
 
 ;鈽呪槄鈽呪槄涓嬮潰杩欎簺鏄帴鍙g殑杩斿洖淇℃伅缈昏瘧,浠�18000寮�濮嬧槄鈽呪槄鈽�
 18004=鎸囧畾缃戝叧宸茬粡琚粦瀹�
@@ -1861,12 +1913,12 @@
 30028=绠�绾�2鎸夐敭闈㈡澘
 
 ;鈽呪槄鈽呪槄涓嬮潰杩欎簺鏄澶囨墍灞炵绫荤殑缈昏瘧鍚嶅瓧,浠�40000寮�濮嬧槄鈽呪槄鈽�
-40000=绐楀笜
+40000=閬槼
 40001=鎸夐敭闈㈡澘
 40002=浼犳劅鍣�
 40003=缁х數鍣�
 40004=璋冨厜鍣�
-40005=鏅鸿兘闂ㄩ攣
+40005=闂ㄩ攣
 40006=绌鸿皟
 40007=涓户鍣�
 40008=鏅鸿兘绌哄叧
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/Center/MainBack1.png b/ZigbeeApp/Home.Ios/Resources/Phone/Center/MainBack1.png
new file mode 100755
index 0000000..a02e2f2
--- /dev/null
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/Center/MainBack1.png
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/Center/MainBack2.png b/ZigbeeApp/Home.Ios/Resources/Phone/Center/MainBack2.png
new file mode 100755
index 0000000..12086a6
--- /dev/null
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/Center/MainBack2.png
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/Gateway/RealGateway.png b/ZigbeeApp/Home.Ios/Resources/Phone/Gateway/RealGateway.png
new file mode 100755
index 0000000..e1870f3
--- /dev/null
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/Gateway/RealGateway.png
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/Guide/Arrows1.png b/ZigbeeApp/Home.Ios/Resources/Phone/Guide/Arrows1.png
new file mode 100755
index 0000000..7843bb8
--- /dev/null
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/Guide/Arrows1.png
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/Guide/Finger.png b/ZigbeeApp/Home.Ios/Resources/Phone/Guide/Finger.png
new file mode 100755
index 0000000..8138a71
--- /dev/null
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/Guide/Finger.png
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/Guide/LeftIcon.png b/ZigbeeApp/Home.Ios/Resources/Phone/Guide/LeftIcon.png
new file mode 100755
index 0000000..eaea2c1
--- /dev/null
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/Guide/LeftIcon.png
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/Guide/RightIcon.png b/ZigbeeApp/Home.Ios/Resources/Phone/Guide/RightIcon.png
new file mode 100755
index 0000000..05ab239
--- /dev/null
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/Guide/RightIcon.png
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/Item/LogicMsgIcon.png b/ZigbeeApp/Home.Ios/Resources/Phone/Item/LogicMsgIcon.png
new file mode 100755
index 0000000..90b1372
--- /dev/null
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/Item/LogicMsgIcon.png
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/Item/Next.png b/ZigbeeApp/Home.Ios/Resources/Phone/Item/Next.png
index 5a7036e..9d94b68 100755
--- a/ZigbeeApp/Home.Ios/Resources/Phone/Item/Next.png
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/Item/Next.png
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/Item/ProgressBubbles.png b/ZigbeeApp/Home.Ios/Resources/Phone/Item/ProgressBubbles.png
new file mode 100755
index 0000000..88b6808
--- /dev/null
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/Item/ProgressBubbles.png
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/Item/RightNext.png b/ZigbeeApp/Home.Ios/Resources/Phone/Item/RightNext.png
new file mode 100755
index 0000000..5a7036e
--- /dev/null
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/Item/RightNext.png
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/Item/SafetyShortcut.png b/ZigbeeApp/Home.Ios/Resources/Phone/Item/SafetyShortcut.png
new file mode 100755
index 0000000..6fba3ad
--- /dev/null
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/Item/SafetyShortcut.png
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/Item/SafetyShortcut_background.png b/ZigbeeApp/Home.Ios/Resources/Phone/Item/SafetyShortcut_background.png
new file mode 100755
index 0000000..05fd512
--- /dev/null
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/Item/SafetyShortcut_background.png
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/Item/SafetyShortcut_item.png b/ZigbeeApp/Home.Ios/Resources/Phone/Item/SafetyShortcut_item.png
new file mode 100755
index 0000000..985e595
--- /dev/null
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/Item/SafetyShortcut_item.png
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/Item/SafetyShortcut_itemSelected.png b/ZigbeeApp/Home.Ios/Resources/Phone/Item/SafetyShortcut_itemSelected.png
new file mode 100755
index 0000000..3c90f5d
--- /dev/null
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/Item/SafetyShortcut_itemSelected.png
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/Item/SceneMsgIcon.png b/ZigbeeApp/Home.Ios/Resources/Phone/Item/SceneMsgIcon.png
new file mode 100755
index 0000000..90b1372
--- /dev/null
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/Item/SceneMsgIcon.png
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/AirConditionerZbGateway.png b/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/AirConditionerZbGateway.png
new file mode 100755
index 0000000..510b39b
--- /dev/null
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/AirConditionerZbGateway.png
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/AirSwitchCloudContr.png b/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/AirSwitchCloudContr.png
index c812167..febc560 100755
--- a/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/AirSwitchCloudContr.png
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/AirSwitchCloudContr.png
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/ButtonPanelFour.png b/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/ButtonPanelFour.png
index 0d9f429..d2ec244 100755
--- a/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/ButtonPanelFour.png
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/ButtonPanelFour.png
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/ButtonPanelFourNotPower.png b/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/ButtonPanelFourNotPower.png
index 0d9f429..d2ec244 100755
--- a/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/ButtonPanelFourNotPower.png
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/ButtonPanelFourNotPower.png
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/ButtonPanelThree.png b/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/ButtonPanelThree.png
index bb3a151..d8ec95c 100755
--- a/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/ButtonPanelThree.png
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/ButtonPanelThree.png
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/ButtonPanelTwo.png b/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/ButtonPanelTwo.png
index 702e8c0..5703a73 100755
--- a/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/ButtonPanelTwo.png
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/ButtonPanelTwo.png
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/CommonDevice.png b/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/CommonDevice.png
index c812167..f5a212a 100755
--- a/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/CommonDevice.png
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/CommonDevice.png
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/CurtainAutoOpen.png b/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/CurtainAutoOpen.png
index 636e46a..9ba14c6 100755
--- a/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/CurtainAutoOpen.png
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/CurtainAutoOpen.png
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/CurtainSiphonate.png b/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/CurtainSiphonate.png
index 6735225..59c3de3 100755
--- a/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/CurtainSiphonate.png
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/CurtainSiphonate.png
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/DimmableLightOneLoad.png b/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/DimmableLightOneLoad.png
new file mode 100755
index 0000000..9a95bb9
--- /dev/null
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/DimmableLightOneLoad.png
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/RelayThreeLoad.png b/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/RelayThreeLoad.png
new file mode 100755
index 0000000..08b603e
--- /dev/null
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/RelayThreeLoad.png
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/Repeater.png b/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/Repeater.png
new file mode 100755
index 0000000..7e73ed3
--- /dev/null
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/Repeater.png
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/SensorCarbonMonoxide.png b/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/SensorCarbonMonoxide.png
index f992dfc..29aea56 100755
--- a/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/SensorCarbonMonoxide.png
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/SensorCarbonMonoxide.png
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/SensorDoorWindow.png b/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/SensorDoorWindow.png
index 4845a8c..d0d0ec7 100755
--- a/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/SensorDoorWindow.png
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/SensorDoorWindow.png
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/SensorEmergencyButton.png b/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/SensorEmergencyButton.png
deleted file mode 100755
index 5cfde80..0000000
--- a/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/SensorEmergencyButton.png
+++ /dev/null
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/SensorFire.png b/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/SensorFire.png
index 96eb1a8..3caae04 100755
--- a/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/SensorFire.png
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/SensorFire.png
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/SensorInfrared.png b/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/SensorInfrared.png
index be936f5..1e7a63c 100755
--- a/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/SensorInfrared.png
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/SensorInfrared.png
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/SensorMotion.png b/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/SensorMotion.png
deleted file mode 100755
index fa2e5f3..0000000
--- a/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/SensorMotion.png
+++ /dev/null
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/SensorPir.png b/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/SensorPir.png
index fa2e5f3..ccd155a 100755
--- a/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/SensorPir.png
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/SensorPir.png
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/SensorTemperatrueHumidity.png b/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/SensorTemperatrueHumidity.png
new file mode 100755
index 0000000..30b0fc7
--- /dev/null
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/SensorTemperatrueHumidity.png
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/SensorWater.png b/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/SensorWater.png
index 3fc3c7c..033f661 100755
--- a/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/SensorWater.png
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/RealDevice/SensorWater.png
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/Room/IconBackground.png b/ZigbeeApp/Home.Ios/Resources/Phone/Room/IconBackground.png
new file mode 100755
index 0000000..cbc6eda
--- /dev/null
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/Room/IconBackground.png
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/Resources/Phone/Room/IconSelectedBackground.png b/ZigbeeApp/Home.Ios/Resources/Phone/Room/IconSelectedBackground.png
new file mode 100755
index 0000000..28f3760
--- /dev/null
+++ b/ZigbeeApp/Home.Ios/Resources/Phone/Room/IconSelectedBackground.png
Binary files differ
diff --git a/ZigbeeApp/Home.Ios/mono_crash.f3dbef0b0.0.json b/ZigbeeApp/Home.Ios/mono_crash.f3dbef0b0.0.json
new file mode 100644
index 0000000..843c535
--- /dev/null
+++ b/ZigbeeApp/Home.Ios/mono_crash.f3dbef0b0.0.json
@@ -0,0 +1,741 @@
+{
+  "protocol_version" : "0.0.5",
+  "configuration" : {
+    "version" : "(6.6.0.155) (2019-08/296a9afdb24)",
+    "tlc" : "normal",
+    "sigsgev" : "altstack",
+    "notifications" : "kqueue",
+    "architecture" : "amd64",
+    "disabled_features" : "none",
+    "smallconfig" : "disabled",
+    "bigarrays" : "disabled",
+    "softdebug" : "enabled",
+    "interpreter" : "enabled",
+    "llvm_support" : "0",
+    "suspend" : "hybrid"
+  },
+  "memory" : {
+    "Resident Size" : "101490688",
+    "Virtual Size" : "4936187904",
+    "minor_gc_time" : "1136957",
+    "major_gc_time" : "0",
+    "minor_gc_count" : "3",
+    "major_gc_count" : "0",
+    "major_gc_time_concurrent" : "0"
+ },
+  "threads" : [
+ {
+    "is_managed" : true,
+    "offset_free_hash" : "0xf3dbef0b0",
+    "offset_rich_hash" : "0xf3dbef3d8",
+    "crashed" : true,
+    "native_thread_id" : "0x70000fea5000",
+    "thread_info_addr" : "0x7ffb5babe400",
+    "thread_name" : "Thread Pool Worker",
+    "ctx" : {
+      "IP" : "0x7fff641bf2c6",
+      "SP" : "0x70000fea3548",
+      "BP" : "0x70000fea3580"
+  },
+    "managed_frames" : [
+  {
+      "is_managed" : "false",
+      "native_address" : "unregistered"
+   }
+,
+  {
+      "is_managed" : "true",
+      "guid" : "7D0BC631-CADD-4A07-BF74-717847E90CFA",
+      "token" : "0x00000",
+      "native_offset" : "0x0",
+      "filename" : "mscorlib.dll",
+      "sizeofimage" : "0x472000",
+      "timestamp" : "0xec216ac8",
+      "il_offset" : "0x0000c"
+   }
+,
+  {
+      "is_managed" : "true",
+      "guid" : "7D0BC631-CADD-4A07-BF74-717847E90CFA",
+      "token" : "0x6001f80",
+      "native_offset" : "0x0",
+      "filename" : "mscorlib.dll",
+      "sizeofimage" : "0x472000",
+      "timestamp" : "0xec216ac8",
+      "il_offset" : "0x0001a"
+   }
+,
+  {
+      "is_managed" : "true",
+      "guid" : "7D0BC631-CADD-4A07-BF74-717847E90CFA",
+      "token" : "0x6001f27",
+      "native_offset" : "0x0",
+      "filename" : "mscorlib.dll",
+      "sizeofimage" : "0x472000",
+      "timestamp" : "0xec216ac8",
+      "il_offset" : "0x00028"
+   }
+,
+  {
+      "is_managed" : "true",
+      "guid" : "7D0BC631-CADD-4A07-BF74-717847E90CFA",
+      "token" : "0x6001f25",
+      "native_offset" : "0x0",
+      "filename" : "mscorlib.dll",
+      "sizeofimage" : "0x472000",
+      "timestamp" : "0xec216ac8",
+      "il_offset" : "0x00002"
+   }
+,
+  {
+      "is_managed" : "true",
+      "guid" : "2278D637-312B-4F39-AE26-3AE8170D7EC6",
+      "token" : "0x6000084",
+      "native_offset" : "0x0",
+      "filename" : "MonoDevelop.MSBuildBuilder.exe",
+      "sizeofimage" : "0x14000",
+      "timestamp" : "0xb4416f59",
+      "il_offset" : "0x000ae"
+   }
+,
+  {
+      "is_managed" : "true",
+      "guid" : "2278D637-312B-4F39-AE26-3AE8170D7EC6",
+      "token" : "0x6000083",
+      "native_offset" : "0x0",
+      "filename" : "MonoDevelop.MSBuildBuilder.exe",
+      "sizeofimage" : "0x14000",
+      "timestamp" : "0xb4416f59",
+      "il_offset" : "0x00001"
+   }
+,
+  {
+      "is_managed" : "true",
+      "guid" : "2278D637-312B-4F39-AE26-3AE8170D7EC6",
+      "token" : "0x600006a",
+      "native_offset" : "0x0",
+      "filename" : "MonoDevelop.MSBuildBuilder.exe",
+      "sizeofimage" : "0x14000",
+      "timestamp" : "0xb4416f59",
+      "il_offset" : "0x00048"
+   }
+,
+  {
+      "is_managed" : "true",
+      "guid" : "2278D637-312B-4F39-AE26-3AE8170D7EC6",
+      "token" : "0x60000a1",
+      "native_offset" : "0x0",
+      "filename" : "MonoDevelop.MSBuildBuilder.exe",
+      "sizeofimage" : "0x14000",
+      "timestamp" : "0xb4416f59",
+      "il_offset" : "0x00001"
+   }
+,
+  {
+      "is_managed" : "true",
+      "guid" : "2278D637-312B-4F39-AE26-3AE8170D7EC6",
+      "token" : "0x6000067",
+      "native_offset" : "0x0",
+      "filename" : "MonoDevelop.MSBuildBuilder.exe",
+      "sizeofimage" : "0x14000",
+      "timestamp" : "0xb4416f59",
+      "il_offset" : "0x00001"
+   }
+,
+  {
+      "is_managed" : "true",
+      "guid" : "2278D637-312B-4F39-AE26-3AE8170D7EC6",
+      "token" : "0x6000075",
+      "native_offset" : "0x0",
+      "filename" : "MonoDevelop.MSBuildBuilder.exe",
+      "sizeofimage" : "0x14000",
+      "timestamp" : "0xb4416f59",
+      "il_offset" : "0x00057"
+   }
+,
+  {
+      "is_managed" : "true",
+      "guid" : "2278D637-312B-4F39-AE26-3AE8170D7EC6",
+      "token" : "0x00000",
+      "native_offset" : "0x0",
+      "filename" : "MonoDevelop.MSBuildBuilder.exe",
+      "sizeofimage" : "0x14000",
+      "timestamp" : "0xb4416f59",
+      "il_offset" : "0x0002a"
+   }
+,
+  {
+      "is_managed" : "false",
+      "native_address" : "unregistered"
+   }
+,
+  {
+      "is_managed" : "true",
+      "guid" : "7D0BC631-CADD-4A07-BF74-717847E90CFA",
+      "token" : "0x00000",
+      "native_offset" : "0x0",
+      "filename" : "mscorlib.dll",
+      "sizeofimage" : "0x472000",
+      "timestamp" : "0xec216ac8",
+      "il_offset" : "0x0000c"
+   }
+,
+  {
+      "is_managed" : "true",
+      "guid" : "7D0BC631-CADD-4A07-BF74-717847E90CFA",
+      "token" : "0x60048c4",
+      "native_offset" : "0x0",
+      "filename" : "mscorlib.dll",
+      "sizeofimage" : "0x472000",
+      "timestamp" : "0xec216ac8",
+      "il_offset" : "0x00000"
+   }
+,
+  {
+      "is_managed" : "true",
+      "guid" : "2278D637-312B-4F39-AE26-3AE8170D7EC6",
+      "token" : "0x6000039",
+      "native_offset" : "0x0",
+      "filename" : "MonoDevelop.MSBuildBuilder.exe",
+      "sizeofimage" : "0x14000",
+      "timestamp" : "0xb4416f59",
+      "il_offset" : "0x00019"
+   }
+,
+  {
+      "is_managed" : "true",
+      "guid" : "2278D637-312B-4F39-AE26-3AE8170D7EC6",
+      "token" : "0x6000166",
+      "native_offset" : "0x0",
+      "filename" : "MonoDevelop.MSBuildBuilder.exe",
+      "sizeofimage" : "0x14000",
+      "timestamp" : "0xb4416f59",
+      "il_offset" : "0x00029"
+   }
+,
+  {
+      "is_managed" : "true",
+      "guid" : "2278D637-312B-4F39-AE26-3AE8170D7EC6",
+      "token" : "0x6000181",
+      "native_offset" : "0x0",
+      "filename" : "MonoDevelop.MSBuildBuilder.exe",
+      "sizeofimage" : "0x14000",
+      "timestamp" : "0xb4416f59",
+      "il_offset" : "0x00001"
+   }
+,
+  {
+      "is_managed" : "true",
+      "guid" : "7D0BC631-CADD-4A07-BF74-717847E90CFA",
+      "token" : "0x6001ec3",
+      "native_offset" : "0x0",
+      "filename" : "mscorlib.dll",
+      "sizeofimage" : "0x472000",
+      "timestamp" : "0xec216ac8",
+      "il_offset" : "0x00071"
+   }
+,
+  {
+      "is_managed" : "true",
+      "guid" : "7D0BC631-CADD-4A07-BF74-717847E90CFA",
+      "token" : "0x6001ec1",
+      "native_offset" : "0x0",
+      "filename" : "mscorlib.dll",
+      "sizeofimage" : "0x472000",
+      "timestamp" : "0xec216ac8",
+      "il_offset" : "0x00000"
+   }
+,
+  {
+      "is_managed" : "true",
+      "guid" : "7D0BC631-CADD-4A07-BF74-717847E90CFA",
+      "token" : "0x6001fce",
+      "native_offset" : "0x0",
+      "filename" : "mscorlib.dll",
+      "sizeofimage" : "0x472000",
+      "timestamp" : "0xec216ac8",
+      "il_offset" : "0x00074"
+   }
+,
+  {
+      "is_managed" : "true",
+      "guid" : "7D0BC631-CADD-4A07-BF74-717847E90CFA",
+      "token" : "0x6001fe3",
+      "native_offset" : "0x0",
+      "filename" : "mscorlib.dll",
+      "sizeofimage" : "0x472000",
+      "timestamp" : "0xec216ac8",
+      "il_offset" : "0x00000"
+   }
+,
+  {
+      "is_managed" : "true",
+      "guid" : "7D0BC631-CADD-4A07-BF74-717847E90CFA",
+      "token" : "0x00000",
+      "native_offset" : "0x0",
+      "filename" : "mscorlib.dll",
+      "sizeofimage" : "0x472000",
+      "timestamp" : "0xec216ac8",
+      "il_offset" : "0x0002a"
+   }
+
+  ],
+  "unmanaged_frames" : [
+ {
+    "is_managed" : "false",
+    "native_address" : "0x108051156",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x1081f7775",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x1081f7dfa",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x1080bcf46",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x108055c65",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x1080bc2db",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x7fff6426fb5d",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x108322439",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x7fff641296a6",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x1082c6cb7",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x1082a7b2f",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x1082c703e",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x1082c71bf",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x108161e76",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x108162478",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x1082b519f",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x1082b54b0",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x1081647ab",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x108187675",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "true",
+    "guid" : "7D0BC631-CADD-4A07-BF74-717847E90CFA",
+    "token" : "0x00000",
+    "native_offset" : "0x0",
+    "filename" : "mscorlib.dll",
+    "sizeofimage" : "0x472000",
+    "timestamp" : "0xec216ac8",
+    "il_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "true",
+    "guid" : "2278D637-312B-4F39-AE26-3AE8170D7EC6",
+    "token" : "0x6000083",
+    "native_offset" : "0x0",
+    "filename" : "MonoDevelop.MSBuildBuilder.exe",
+    "sizeofimage" : "0x14000",
+    "timestamp" : "0xb4416f59",
+    "il_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "true",
+    "guid" : "2278D637-312B-4F39-AE26-3AE8170D7EC6",
+    "token" : "0x60000a1",
+    "native_offset" : "0x0",
+    "filename" : "MonoDevelop.MSBuildBuilder.exe",
+    "sizeofimage" : "0x14000",
+    "timestamp" : "0xb4416f59",
+    "il_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "true",
+    "guid" : "2278D637-312B-4F39-AE26-3AE8170D7EC6",
+    "token" : "0x00000",
+    "native_offset" : "0x0",
+    "filename" : "MonoDevelop.MSBuildBuilder.exe",
+    "sizeofimage" : "0x14000",
+    "timestamp" : "0xb4416f59",
+    "il_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x107fb162d",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x1081d0fa4",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x1081d53a6",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x10816c6f4",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "true",
+    "guid" : "7D0BC631-CADD-4A07-BF74-717847E90CFA",
+    "token" : "0x00000",
+    "native_offset" : "0x0",
+    "filename" : "mscorlib.dll",
+    "sizeofimage" : "0x472000",
+    "timestamp" : "0xec216ac8",
+    "il_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "true",
+    "guid" : "7D0BC631-CADD-4A07-BF74-717847E90CFA",
+    "token" : "0x60048c4",
+    "native_offset" : "0x0",
+    "filename" : "mscorlib.dll",
+    "sizeofimage" : "0x472000",
+    "timestamp" : "0xec216ac8",
+    "il_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "true",
+    "guid" : "2278D637-312B-4F39-AE26-3AE8170D7EC6",
+    "token" : "0x6000181",
+    "native_offset" : "0x0",
+    "filename" : "MonoDevelop.MSBuildBuilder.exe",
+    "sizeofimage" : "0x14000",
+    "timestamp" : "0xb4416f59",
+    "il_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "true",
+    "guid" : "7D0BC631-CADD-4A07-BF74-717847E90CFA",
+    "token" : "0x6001ec1",
+    "native_offset" : "0x0",
+    "filename" : "mscorlib.dll",
+    "sizeofimage" : "0x472000",
+    "timestamp" : "0xec216ac8",
+    "il_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "true",
+    "guid" : "7D0BC631-CADD-4A07-BF74-717847E90CFA",
+    "token" : "0x6001fe3",
+    "native_offset" : "0x0",
+    "filename" : "mscorlib.dll",
+    "sizeofimage" : "0x472000",
+    "timestamp" : "0xec216ac8",
+    "il_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x107fb162d",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x1081d0fa4",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x1081faec0",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x10812d28c",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x1081f8373",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x7fff642782eb",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x7fff6427b249",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x7fff6427740d",
+    "native_offset" : "0x00000"
+  }
+
+ ]
+},
+{
+  "is_managed" : false,
+  "offset_free_hash" : "0x0",
+  "offset_rich_hash" : "0x0",
+  "crashed" : false,
+  "native_thread_id" : "0x112c285c0",
+  "thread_info_addr" : "0x7ffb5a800a00",
+  "thread_name" : "tid_307",
+  "ctx" : {
+    "IP" : "0x7fff641bc86a",
+    "SP" : "0x7ffee7c61c98",
+    "BP" : "0x7ffee7c61d20"
+ },
+  "unmanaged_frames" : [
+ {
+    "is_managed" : "false",
+    "native_address" : "0x108051156",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x1081f7775",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x1081f74a7",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x1080bbf3c",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x7fff6426fb5d",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "unregistered"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x1082a17c0",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x1082bc2e1",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x1081f4774",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x1081f458a",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x1080166c2",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x107fa0848",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x7fff640843d5",
+    "native_offset" : "0x00000"
+  }
+
+ ]
+},
+{
+  "is_managed" : false,
+  "offset_free_hash" : "0x0",
+  "offset_rich_hash" : "0x0",
+  "crashed" : false,
+  "native_thread_id" : "0x70000f796000",
+  "thread_info_addr" : "0x7ffb5b818000",
+  "thread_name" : "Finalizer",
+  "ctx" : {
+    "IP" : "0x7fff641b9266",
+    "SP" : "0x70000f795da8",
+    "BP" : "0x70000f795e50"
+ },
+  "unmanaged_frames" : [
+ {
+    "is_managed" : "false",
+    "native_address" : "0x108051156",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x1081f7775",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x1081f74a7",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x1080bbf3c",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x7fff6426fb5d",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x70000f795888",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x1081f8373",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x7fff642782eb",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x7fff6427b249",
+    "native_offset" : "0x00000"
+  }
+,
+ {
+    "is_managed" : "false",
+    "native_address" : "0x7fff6427740d",
+    "native_offset" : "0x00000"
+  }
+
+ ]
+}
+]
+}
\ No newline at end of file
diff --git a/ZigbeeApp/Shared/Common/CommonPage.cs b/ZigbeeApp/Shared/Common/CommonPage.cs
index 4ee5e03..651ec1f 100755
--- a/ZigbeeApp/Shared/Common/CommonPage.cs
+++ b/ZigbeeApp/Shared/Common/CommonPage.cs
@@ -62,7 +62,7 @@
         /// <summary>
         /// 鐗堟湰鍙�
         /// </summary>
-        public static string CodeIDString = "1.0.19122001";
+        public static string CodeIDString = "1.0.19123001";
         /// <summary>
         /// 娉ㄥ唽鏉ユ簮(0:HDL On 1:Zigbee)
         /// </summary>
diff --git a/ZigbeeApp/Shared/Common/Device.cs b/ZigbeeApp/Shared/Common/Device.cs
index 1a25f6f..bd14933 100755
--- a/ZigbeeApp/Shared/Common/Device.cs
+++ b/ZigbeeApp/Shared/Common/Device.cs
@@ -1046,10 +1046,21 @@
         /// <param name="listdevice">璁惧瀵硅薄</param>
         public void SetRealDeviceIconToControl(Button btnIcon, List<CommonDevice> listdevice)
         {
+            //鑾峰彇璁惧鐨勭湡瀹炲浘鐗�
+            string imagePath = this.GetRealDeviceIcon(listdevice);
+            btnIcon.UnSelectedImagePath = imagePath;
+        }
+
+        /// <summary>
+        /// 鑾峰彇璁惧鐨勭湡瀹炲浘鐗�
+        /// </summary>
+        /// <param name="listdevice">璁惧瀵硅薄</param>
+        public string GetRealDeviceIcon(List<CommonDevice> listdevice)
+        {
             //鑾峰彇瀹冨睘浜庝粈涔堢被鍨嬬殑璁惧
             var myDeviceType = this.GetMyDeviceEnumInfo(listdevice);
             string strConcrete = Enum.GetName(typeof(DeviceConcreteType), myDeviceType.ConcreteType);
-            
+
             //鍥剧墖鍏辨湁
             if (this.dicPictrueShard.ContainsKey(strConcrete) == true)
             {
@@ -1067,7 +1078,7 @@
                 if (arry.Length == 1)
                 {
                     //濡傛灉瀹冭嚜宸卞氨鏄叡閫氬浘鐗囩殑璇濓紝涓嶅啀澶勭悊
-                    return;
+                    return "RealDevice/CommonDevice.png";
                 }
                 imageFilePath = "RealDevice/" + arry[0] + ".png";
                 //濡傛灉瀹冭嚜宸辩殑鍏遍�氬浘鐗囪繕鏄笉瀛樺湪鐨勮瘽,鍒欑洿鎺ヤ娇鐢ㄦ墍鏈夎澶囩殑鍏遍�氬浘鐗�
@@ -1076,16 +1087,16 @@
                     imageFilePath = "RealDevice/CommonDevice.png";
                 }
             }
-            btnIcon.UnSelectedImagePath = imageFilePath;
+            return imageFilePath;
         }
 
         /// <summary>
-        /// 璁剧疆銆愯澶囨墍灞炵被鍨嬨�戠殑鍥炬爣鍒版寚瀹氱殑鎺т欢
+        /// 璁剧疆銆愯澶囩被鍨嬨�戠殑鍥炬爣鍒版寚瀹氱殑鎺т欢
         /// </summary>
         /// <param name="btnIcon">鎺т欢瀵硅薄</param>
         /// <param name="listdevice">璁惧瀵硅薄</param>
         /// <returns></returns>
-        public void SetDeviceBeloneIconToControl(Button btnIcon, List<CommonDevice> listdevice)
+        public void SetDeviceObjectIconToControl(Button btnIcon, List<CommonDevice> listdevice)
         {
             //鑾峰彇鑷畾涔夎澶囩被鍨�
             var myDeviceType = this.GetMyDeviceEnumInfo(listdevice);
@@ -1093,8 +1104,8 @@
             string imageUnSelectFilePath = string.Empty;
             string imageSelectFilePath = string.Empty;
 
-            //鑾峰彇銆愯澶囨墍灞炵被鍨嬨�戠殑鍥炬爣
-            this.GetDeviceBeloneIcon(myDeviceType.ConcreteType, ref imageUnSelectFilePath, ref imageSelectFilePath);
+            //鑾峰彇銆愯澶囩被鍨嬨�戠殑鍥炬爣
+            this.GetDeviceObjectIcon(myDeviceType.ConcreteType, ref imageUnSelectFilePath, ref imageSelectFilePath);
 
             //璁剧疆鍥剧墖
             btnIcon.UnSelectedImagePath = imageUnSelectFilePath;
@@ -1102,29 +1113,29 @@
         }
 
         /// <summary>
-        /// 鑾峰彇銆愯澶囨墍灞炵被鍨嬨�戠殑鍥炬爣
+        /// 鑾峰彇銆愯澶囩被鍨嬨�戠殑鍥炬爣
         /// </summary>
         /// <param name="listdevice">璁惧瀵硅薄</param>
         /// <param name="unSelectPath">鍥剧墖鍦板潃</param>
         /// <param name="selectPath">鍥剧墖鍦板潃</param>
         /// <returns></returns>
-        public void GetDeviceBeloneIcon(List<CommonDevice> listdevice, ref string unSelectPath, ref string selectPath)
+        public void GetDeviceObjectIcon(List<CommonDevice> listdevice, ref string unSelectPath, ref string selectPath)
         {
             //鑾峰彇鑷畾涔夎澶囩被鍨�
             var myDeviceType = this.GetMyDeviceEnumInfo(listdevice);
 
-            //鑾峰彇銆愯澶囨墍灞炵被鍨嬨�戠殑鍥炬爣
-            this.GetDeviceBeloneIcon(myDeviceType.ConcreteType, ref unSelectPath, ref selectPath);
+            //鑾峰彇銆愯澶囩被鍨嬨�戠殑鍥炬爣
+            this.GetDeviceObjectIcon(myDeviceType.ConcreteType, ref unSelectPath, ref selectPath);
         }
 
         /// <summary>
-        /// 鑾峰彇銆愯澶囨墍灞炵被鍨嬨�戠殑鍥炬爣
+        /// 鑾峰彇銆愯澶囩被鍨嬨�戠殑鍥炬爣
         /// </summary>
         /// <param name="specificType">鑷畾涔夎澶囩被鍨�</param>
         /// <param name="unSelectPath">鍥剧墖鍦板潃</param>
         /// <param name="selectPath">鍥剧墖鍦板潃</param>
         /// <returns></returns>
-        public void GetDeviceBeloneIcon(DeviceConcreteType specificType, ref string unSelectPath, ref string selectPath)
+        public void GetDeviceObjectIcon(DeviceConcreteType specificType, ref string unSelectPath, ref string selectPath)
         {
             //灏嗗叿浣撶被鍨嬭浆瀛楃涓�
             string strSpecific = Enum.GetName(typeof(DeviceConcreteType), specificType);
@@ -1222,7 +1233,7 @@
                 return info;
             }
             //鑾峰彇绗笁鏂硅澶囩殑銆愯澶囩被鍨嬨��
-            return this.GetNotHdlMyDeviceEnumInfo(listdevice, false);
+            return this.GetNotHdlMyDeviceEnumInfo(listdevice);
         }
 
         /// <summary>
@@ -1252,7 +1263,7 @@
             else
             {
                 //鑾峰彇绗笁鏂硅澶囩殑銆愯澶囩被鍨嬨��
-                var myDeviceType = this.GetNotHdlMyDeviceEnumInfo(listDevice, false);
+                var myDeviceType = this.GetNotHdlMyDeviceEnumInfo(listDevice);
                 strName = Language.StringByID(myDeviceType.ConcreteTextId);
             }
             if (ApendFalge == true && listDevice[0].DriveCode > 0)
@@ -1318,31 +1329,53 @@
         #region 鈻� 鑾峰彇绗笁鏂硅澶囩殑璁惧绫诲瀷___________
 
         /// <summary>
-        /// 鑾峰彇绗笁鏂硅澶囩殑銆愯澶囩被鍨嬨��
+        /// 鑾峰彇璁惧鐨勩�愭墍灞炵被鍨嬩俊鎭��,姝ゆ柟娉曚細鎶婃墍鏈夌殑浼犳劅鍣ㄩ兘褰掍负銆愪紶鎰熷櫒銆�(鍖呮嫭娓╂箍搴︿紶鎰熷櫒)
         /// </summary>
         /// <param name="device">璁惧鍥炶矾</param>
-        /// <param name="margeSensor">
-        /// <para>鏄惁灏嗘墍鏈夌被鍨嬬殑浼犳劅鍣ㄩ兘褰掍负銆愪紶鎰熷櫒銆�,</para> 
-        /// <para>false鐨勬椂鍊欙細銆怌oncreteType銆戝拰銆怌oncreteTextId銆戝彲鑳戒細鏈変笉鍚岀殑鍊�</para> 
-        /// <para>true鐨勬椂鍊欙細銆怌oncreteType銆戠粺涓�涓篠ensor,銆怌oncreteTextId銆戠粺涓�涓轰紶鎰熷櫒</para> 
-        /// </param>
         /// <returns></returns>
-        public DeviceEnumInfo GetNotHdlMyDeviceEnumInfo(CommonDevice device, bool margeSensor = true)
+        public DeviceEnumInfo GetDeviceBelongEnumInfo(CommonDevice device)
         {
-            return this.GetNotHdlMyDeviceEnumInfo(new List<CommonDevice>() { device }, margeSensor);
+            var info = this.GetNotHdlMyDeviceEnumInfo(new List<CommonDevice>() { device });
+            if (info.BeloneType == DeviceBeloneType.A璋冨厜鍣�
+                || info.BeloneType == DeviceBeloneType.A褰╃伅)
+            {
+                //褰掍负鐏厜
+                info.ConcreteTextId = R.MyInternationalizationString.uDeviceBelongId15;
+                info.BeloneType = DeviceBeloneType.A鐏厜;
+                info.ConcreteType = DeviceConcreteType.Light;
+
+                int value = (int)info.BeloneType;
+                if (dicDeviceDefultNameID.ContainsKey("uDeviceBelongId" + value) == true)
+                {
+                    //璁惧鎵�灞炵被鍨嬬殑缈昏瘧鍚嶅瓧
+                    info.BeloneTextId = dicDeviceDefultNameID["uDeviceBelongId" + value];
+                }
+            }
+            else if (info.BeloneType == DeviceBeloneType.A浼犳劅鍣�
+                || device.Type == DeviceType.TemperatureSensor)
+            {
+                //浼犳劅鍣ㄥ悎骞�
+                info.BeloneType = DeviceBeloneType.A浼犳劅鍣�;
+                info.ConcreteType = DeviceConcreteType.Sensor;
+                info.ConcreteTextId = R.MyInternationalizationString.uDeviceBelongId1200;
+
+                int value = (int)info.BeloneType;
+                if (dicDeviceDefultNameID.ContainsKey("uDeviceBelongId" + value) == true)
+                {
+                    //璁惧鎵�灞炵被鍨嬬殑缈昏瘧鍚嶅瓧
+                    info.BeloneTextId = dicDeviceDefultNameID["uDeviceBelongId" + value];
+                }
+            }
+
+            return info;
         }
 
         /// <summary>
         /// 鑾峰彇绗笁鏂硅澶囩殑銆愯澶囩被鍨嬨��(涓嶅缓璁娇鐢�)
         /// </summary>
         /// <param name="listdevice">Mac閮戒竴鏍风殑璁惧鍒楄〃</param>
-        /// <param name="margeSensor">
-        /// <para>鏄惁灏嗘墍鏈夌被鍨嬬殑浼犳劅鍣ㄩ兘褰掍负銆愪紶鎰熷櫒銆�,</para> 
-        /// <para>false鐨勬椂鍊欙細銆怌oncreteType銆戝拰銆怌oncreteTextId銆戝彲鑳戒細鏈変笉鍚岀殑鍊�</para> 
-        /// <para>true鐨勬椂鍊欙細銆怌oncreteType銆戠粺涓�涓篠ensor,銆怌oncreteTextId銆戠粺涓�涓轰紶鎰熷櫒</para> 
-        /// </param>
         /// <returns></returns>
-        public DeviceEnumInfo GetNotHdlMyDeviceEnumInfo(List<CommonDevice> listdevice, bool margeSensor = true)
+        public DeviceEnumInfo GetNotHdlMyDeviceEnumInfo(List<CommonDevice> listdevice)
         {
             var dicType = new Dictionary<DeviceType, CommonDevice>();
             foreach (CommonDevice device in listdevice)
@@ -1479,11 +1512,8 @@
                 info.BeloneType = DeviceBeloneType.A浼犳劅鍣�;
                 info.ConcreteType = DeviceConcreteType.Sensor;
                 info.ConcreteTextId = R.MyInternationalizationString.uDeviceBelongId1200;
-                if (margeSensor == false)
-                {
-                    //璁剧疆浼犳劅鍣ㄥ叿浣撶殑绫诲瀷
-                    this.SetSensorDeviceSpecificType(ref info, listdevice);
-                }
+                //璁剧疆浼犳劅鍣ㄥ叿浣撶殑绫诲瀷
+                this.SetSensorDeviceSpecificType(ref info, listdevice);
             }
             //13鍖呭惈娓╁害浼犳劅鍣ㄧ殑璇�
             else if (dicType.ContainsKey(DeviceType.TemperatureSensor) == true)
@@ -1513,14 +1543,14 @@
                     //璁剧疆浼犳劅鍣ㄥ叿浣撶殑绫诲瀷
                     info.BeloneType = DeviceBeloneType.A娓╂箍搴︿紶鎰熷櫒;
                     info.ConcreteTextId = R.MyInternationalizationString.uDeviceBelongId10;
-                    info.ConcreteType = DeviceConcreteType.Sensor_TemperatrueHumidity;
+                    info.ConcreteType = DeviceConcreteType.Sensor_TemperatureHumidity;
                 }
                 else if (temperatrue == true && humidity == false)
                 {
                     //璁剧疆浼犳劅鍣ㄥ叿浣撶殑绫诲瀷
                     info.BeloneType = DeviceBeloneType.A娓╁害浼犳劅鍣�;
                     info.ConcreteTextId = R.MyInternationalizationString.uDeviceBelongId11;
-                    info.ConcreteType = DeviceConcreteType.Sensor_Temperatrue;
+                    info.ConcreteType = DeviceConcreteType.Sensor_Temperature;
                 }
                 else if (temperatrue == false && humidity == true)
                 {
@@ -2324,11 +2354,11 @@
         /// <summary>
         /// 娓╂箍搴︿紶鎰熷櫒
         /// </summary>
-        Sensor_TemperatrueHumidity = -1308,
+        Sensor_TemperatureHumidity = -1308,
         /// <summary>
         /// 娓╁害浼犳劅鍣�
         /// </summary>
-        Sensor_Temperatrue = -1309,
+        Sensor_Temperature = -1309,
         /// <summary>
         /// 婀垮害浼犳劅鍣�
         /// </summary>
diff --git a/ZigbeeApp/Shared/Common/DeviceUI.cs b/ZigbeeApp/Shared/Common/DeviceUI.cs
index d3034cc..7c6a101 100755
--- a/ZigbeeApp/Shared/Common/DeviceUI.cs
+++ b/ZigbeeApp/Shared/Common/DeviceUI.cs
@@ -445,6 +445,93 @@
                 }
                 return $"{model},{wind},{tempareture}";
             }
+            else if (device.Type == DeviceType.IASZone)
+            {
+                var ias = CommonDevice as IASZone;
+                var info = Common.LocalDevice.Current.GetNotHdlMyDeviceEnumInfo(new List<CommonDevice> { device });
+                if (info.ConcreteType == DeviceConcreteType.Sensor_Infrared)
+                {
+                    //绾㈠
+                    if (ias.iASInfo?.Alarm1 == 1)
+                    {
+                        return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_HavePerson);
+                    }
+                    return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_NoPerson);
+                }
+                else if (info.ConcreteType == DeviceConcreteType.Sensor_Water)
+                {
+                    //姘存蹈
+                    if (ias.iASInfo?.Alarm1 == 1)
+                    {
+                        return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_HaveWater);
+                    }
+                    return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_Normal);
+                }
+                else if (info.ConcreteType == DeviceConcreteType.Sensor_DoorWindow)
+                {
+                    //闂ㄧ獥
+                    if (ias.iASInfo?.Alarm1 == 1)
+                    {
+                        return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_Open);
+                    }
+                    return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_Close);
+                }
+                else if (info.ConcreteType == DeviceConcreteType.Sensor_CarbonMonoxide)
+                {
+                    //鐕冩皵
+                    if (ias.iASInfo?.Alarm1 == 1)
+                    {
+                        return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_Alarm);
+                    }
+                    return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_Safe);
+                }
+                else if (info.ConcreteType == DeviceConcreteType.Sensor_Fire)
+                {
+                    //鐑熼浘
+                    if (ias.iASInfo?.Alarm1 == 1)
+                    {
+                        return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_Alarm);
+                    }
+                    return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_Safe);
+                }
+                else if (info.ConcreteType == DeviceConcreteType.Sensor_Pir)
+                {
+                    //pir
+                    if (ias.iASInfo?.Alarm1 == 1)
+                    {
+                        return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_Alarm);
+                    }
+                    return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_Safe);
+                }
+                else if (info.ConcreteType == DeviceConcreteType.Sensor_Keyfob)
+                {
+                    //閽ュ寵鎵�
+                    if (ias.iASInfo?.Alarm1 == 1)
+                    {
+                        return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_Alarm);
+                    }
+                    return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_Normal);
+                }
+                else if (info.ConcreteType == DeviceConcreteType.Sensor_Motion)
+                {
+                    //杩愬姩浼犳劅鍣�
+                    if (ias.iASInfo?.Alarm1 == 1)
+                    {
+                        return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_Alarm);
+                    }
+                    return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_Normal);
+                }
+                else if (info.ConcreteType == DeviceConcreteType.Sensor_EmergencyButton)
+                {
+                    //绱ф�ユ寜閽�
+                    if (ias.iASInfo?.Alarm1 == 1)
+                    {
+                        return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_Alarm);
+                    }
+                    return Language.StringByID(R.MyInternationalizationString.IASZone_Statu_Normal);
+                }
+                return null;
+            }
             else
             {
                 return null;
diff --git a/ZigbeeApp/Shared/Common/Logic.cs b/ZigbeeApp/Shared/Common/Logic.cs
index 4fe1ac6..42c01e0 100755
--- a/ZigbeeApp/Shared/Common/Logic.cs
+++ b/ZigbeeApp/Shared/Common/Logic.cs
@@ -46,7 +46,7 @@
         /// <summary>
         /// 鎺ㄩ�佸唴瀹�
         /// </summary>
-        public string LogicCustomPushText;
+        public string LogicCustomPushText=string.Empty;
 
         //public Dictionary<string, string> TimeAttribute = new Dictionary<string, string>();
         public TimeAttributeObj TimeAttribute = new TimeAttributeObj();
diff --git a/ZigbeeApp/Shared/Common/Room.cs b/ZigbeeApp/Shared/Common/Room.cs
index c6005c0..0c202a7 100755
--- a/ZigbeeApp/Shared/Common/Room.cs
+++ b/ZigbeeApp/Shared/Common/Room.cs
@@ -336,6 +336,19 @@
                 }
             }
             Config.Instance.Home.InitFloor();
+
+            RefreshRoomListView();
+        }
+
+        /// <summary>
+        /// 鍒锋柊鎴块棿瑙嗗浘鍒楄〃
+        /// </summary>
+        public static void RefreshRoomListView()
+        {
+            Application.RunOnMainThread(() =>
+            {
+                Phone.Device.Room.RoomManagement.Instance.Show();
+            });
         }
 
         /// <summary>
@@ -445,8 +458,33 @@
             //鍒犻櫎鏉ヨ嚜鎷嶇収鎴栬�呯郴缁熷浘搴撶殑鎴块棿鑳屾櫙鍥剧墖
             if (room.BackgroundImageType == 1 || room.BackgroundImageType == 2)
             {
-                DeleteBackGroundIamageFilebyHomeId(room.BackgroundImage);
+                //鍒犻櫎鎺夊師鏉ョ殑鑷畾涔夊浘鐗�
+                if (Global.IsExistsByHomeId(room.BackgroundImage) == true)
+                {
+                    Global.DeleteFilebyHomeId(room.BackgroundImage);
+                    //鍒犻櫎澶囦唤
+                    HdlAutoBackupLogic.DeleteFile(room.BackgroundImage);
+                }
             }
+            //鎴戠殑鍠滅埍
+            var loveRoom = this.GetLoveRoom();
+            if (loveRoom != null)
+            {
+                //绉婚櫎鎴戠殑鍠滅埍閲岄潰鐨勮澶�
+                for (int i = 0; i < room.DeviceUIFilePathList.Count; i++)
+                {
+                    loveRoom.DeviceUIFilePathList.Remove(room.DeviceUIFilePathList[i]);
+                    loveRoom.DeviceUIList.RemoveAll((obj) => { return room.DeviceUIFilePathList[i] == obj.FileName; });
+                }
+                //绉婚櫎鎴戠殑鍠滅埍閲岄潰鐨勫満鏅�
+                for (int i = 0; i < room.SceneUIFilePathList.Count; i++)
+                {
+                    loveRoom.SceneUIFilePathList.Remove(room.SceneUIFilePathList[i]);
+                    loveRoom.SceneUIList.RemoveAll((obj) => { return room.SceneUIFilePathList[i] == obj.FileName; });
+                }
+                loveRoom.Save(false);
+            }
+
             if (Global.IsExistsByHomeId(roomFilePath) == false)
             {
                 return false;
@@ -770,31 +808,6 @@
         #endregion
 
         #region 鈼� 鎴块棿鑳屾櫙鍥剧殑鐩稿叧___________________
-        /// <summary>
-        /// 鍒犻櫎鑳屾櫙鍥剧墖
-        /// </summary>
-        /// <param name="fileName">fileName瀹為檯涓婂寘鍚簡浣忓畢璺姴 濡� 浣忓畢/鏂囦欢鍚�.</param>
-        public static void DeleteBackGroundIamageFilebyHomeId(string fileName)
-        {
-            if (fileName == null)
-            {
-                return;
-            }
-            var pathLists = fileName.Split('/');
-            if (pathLists == null || pathLists.Count() < 9 || pathLists[8] == null)
-            {
-                return;
-            }
-            var path = System.IO.Path.Combine(Config.Instance.FullPath, fileName);
-            if (!Global.IsExistsByHomeId(pathLists[8]))
-            {
-                return;
-            }
-            //鍒犻櫎鏈湴鍥剧墖
-            System.IO.File.Delete(path);
-            //鍒犻櫎澶囦唤
-            Phone.UserCenter.HdlAutoBackupLogic.DeleteFile(pathLists[8]);
-        }
 
         /// <summary>
         /// 绉诲姩鑳屾櫙鍥剧墖鍒颁綇瀹呯洰褰曚笅
diff --git a/ZigbeeApp/Shared/Common/SceneTargetDeviceUI.cs b/ZigbeeApp/Shared/Common/SceneTargetDeviceUI.cs
index 2c56f46..f9dddbd 100755
--- a/ZigbeeApp/Shared/Common/SceneTargetDeviceUI.cs
+++ b/ZigbeeApp/Shared/Common/SceneTargetDeviceUI.cs
@@ -56,13 +56,7 @@
         /// 鍞竴鏍囪瘑--HashCode
         /// DateTime.Now.ToString("yyyyMMddHHmmss", DateTimeFormatInfo.InvariantInfo)
         /// </summary>
-        public string SceneTargetDeviceUIID
-        {
-            get
-            {
-                return GetHashCode().ToString();
-            }
-        }
+        public string SceneTargetDeviceUIID = Guid.NewGuid().ToString();
 
         /// <summary>
         /// GetDeviceStatu
diff --git a/ZigbeeApp/Shared/Common/ZigbeeColor.cs b/ZigbeeApp/Shared/Common/ZigbeeColor.cs
index 9cf8886..ca272cd 100755
--- a/ZigbeeApp/Shared/Common/ZigbeeColor.cs
+++ b/ZigbeeApp/Shared/Common/ZigbeeColor.cs
@@ -182,17 +182,25 @@
         /// </summary>
         public uint GXCSelectedLineColor = 0xFFFC744B;
         /// <summary>
-        /// 娴呰壊绾挎潯 0xFFF5F6FA;
+        /// 娴呰壊绾挎潯 0x80CCCCCC
         /// </summary>
-        public uint GXCGrayLineColor = 0xFFF5F6FA;
+        public uint GXCGrayLineColor = 0x80CCCCCC;
         /// <summary>
         /// 娴呰壊绾挎潯 0x66CCCCCC
         /// </summary>
         public uint GXCGrayLineColor2 = 0x66CCCCCC;
+        ///// <summary>
+        ///// 娴呰壊绾挎潯 0xFFEBEBEB
+        ///// </summary>
+        //public uint GXCGrayLineColor2 = 0xFFEBEBEB;
         /// <summary>
         /// 娴呰壊绾挎潯 0xFFB7B8BB
         /// </summary>
         public uint GXCGrayLineColor3 = 0xFFB7B8BB;
+        /// <summary>
+        /// 0x40000000
+        /// </summary>
+        public uint GXCGrayLineColor4 = 0x40000000;
 
         /// <summary>
         /// 鎸夐挳鏈�変腑鐘舵�� 0xFF656565;
diff --git a/ZigbeeApp/Shared/DLL/Android/Shared.Droid.HDLWidget.dll b/ZigbeeApp/Shared/DLL/Android/Shared.Droid.HDLWidget.dll
index 4d88dec..4f9b2cd 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.dll b/ZigbeeApp/Shared/DLL/Android/Shared.Droid.dll
index fcc575e..6a4e720 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 55be85a..5c4bb01 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 13526c4..f172e52 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/Account/AccountForgetPWD.cs b/ZigbeeApp/Shared/Phone/Device/Account/AccountForgetPWD.cs
index 8147fd7..ae8adc4 100755
--- a/ZigbeeApp/Shared/Phone/Device/Account/AccountForgetPWD.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Account/AccountForgetPWD.cs
@@ -139,6 +139,8 @@
                 Height = Application.GetRealHeight(58),
                 TextColor = ZigbeeColor.Current.GXCTextRed,
                 TextAlignment = TextAlignment.CenterLeft,
+                TextSize = CommonFormResouce.TextSize,
+                IsBold = true
             };
             bodyFrameLayout.AddChidren(errorBtn);
 
@@ -155,7 +157,9 @@
                 BackgroundColor = ZigbeeColor.Current.GXCButtonUnSelectedColor,
                 Radius = (uint)Application.GetRealHeight(127 / 2),
                 Enable = !string.IsNullOrEmpty(codeRow.VerificationCodeET?.Text),
-                IsSelected = !string.IsNullOrEmpty(codeRow.VerificationCodeET?.Text)
+                IsSelected = !string.IsNullOrEmpty(codeRow.VerificationCodeET?.Text),
+                TextSize = 16,
+                IsBold = true,
             };
             bodyFrameLayout.AddChidren(resetBtn);
         }
@@ -171,9 +175,10 @@
         private void SelectPhoneOrEmail_MouseUpEvent(object sender, MouseEventArgs mouseEventArgs)
         {
             phoneEmailForm.SelectedPhone.IsSelected = phoneEmailForm.SelectedEmail.IsSelected = false;
+            phoneEmailForm.SelectedPhone.IsBold = phoneEmailForm.SelectedEmail.IsBold = false;
             resetBtn.Enable = resetBtn.IsSelected = false;
             errorBtn.Text = string.Empty;
-            (sender as Button).IsSelected = true;
+            (sender as Button).IsSelected = (sender as Button).IsBold = true;
             if ((sender as Button).Tag.ToString() == "Phone")
             {
                 AddPhoneOrEmailFL(accountCodeFL, "Phone");
@@ -453,17 +458,14 @@
                     }
                     else if (stateStr == "PARAMETEROREMPTY")
                     {
-                        //鎻愪緵鐨勫弬鏁伴敊璇�
                         errorBtn.TextID = R.MyInternationalizationString.PARAMETEROREMPTY;
                     }
                     else if (stateStr == "ACCOUNTNOEXISTS")
                     {
-                        //璐﹀彿涓嶅瓨鍦�
                         errorBtn.TextID = R.MyInternationalizationString.ACCOUNTNOEXISTS;
                     }
                     else if (stateStr == "FAIL")
                     {
-                        //鎿嶄綔澶辫触
                         errorBtn.TextID = R.MyInternationalizationString.FAIL;
                     }
                     else if(stateStr == "NEWPASSWORDANDOLDPASSWORDEQUAL")
@@ -474,7 +476,6 @@
                     {
                         errorBtn.TextID = R.MyInternationalizationString.RequestServerFailed;
                     }
-
                 }
                 else if (stateCodeStr == "PARAMETEROREMPTY")
                 {
@@ -486,6 +487,11 @@
                     //楠岃瘉鐮侀敊璇�
                     errorBtn.TextID = R.MyInternationalizationString.VALIDCODEANDPHONENOEQUAL;
                 }
+                else if (stateCodeStr == "NORECORD")
+                {
+                    errorBtn.TextID = R.MyInternationalizationString.NORECORD;
+                }
+
                 else
                 {
                     errorBtn.TextID = R.MyInternationalizationString.RequestServerFailed;
diff --git a/ZigbeeApp/Shared/Phone/Device/Account/AccountLogin.cs b/ZigbeeApp/Shared/Phone/Device/Account/AccountLogin.cs
index 54e7481..2db0b49 100755
--- a/ZigbeeApp/Shared/Phone/Device/Account/AccountLogin.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Account/AccountLogin.cs
@@ -167,12 +167,14 @@
                 Width = Application.GetRealWidth(300),
                 Gravity = Gravity.CenterHorizontal,
                 TextID = R.MyInternationalizationString.AppName,
-                TextColor = ZigbeeColor.Current.GXCTextWhiteColor
+                TextColor = ZigbeeColor.Current.GXCTextWhiteColor,
+                TextSize=16
             };
             midFrameLayout.AddChidren(logoName);
 
             phoneEmailForm = new PhoneEmailForm();
             phoneEmailForm.Init(midFrameLayout);
+           
 
             //閿欒鎻愮ずBtn
             loginErrorBtn = new Button()
@@ -183,6 +185,8 @@
                 Height = Application.GetRealHeight(58),
                 TextColor = ZigbeeColor.Current.GXCTextRed,
                 TextAlignment = TextAlignment.CenterLeft,
+                TextSize=CommonFormResouce.TextSize,
+                IsBold=true
             };
             midFrameLayout.AddChidren(loginErrorBtn);
 
@@ -205,7 +209,7 @@
                 Y = Application.GetRealHeight(1198),
                 Width = Application.GetRealWidth(250),
                 Height = Application.GetRealHeight(58),
-                TextID = R.MyInternationalizationString.ForgotPWD,
+                TextID = R.MyInternationalizationString.ForgotPWD_1,
                 TextSize = CommonFormResouce.loginTextSize,
                 TextColor = Shared.Common.ZigbeeColor.Current.GXCTextGrayColor,
                 TextAlignment = TextAlignment.CenterRight
@@ -219,14 +223,15 @@
                 Height = Application.GetRealHeight(127),
                 Gravity = Gravity.CenterHorizontal,
                 TextID = R.MyInternationalizationString.Login,
-                TextSize = 15,
+                TextSize = 16,
                 TextColor = ZigbeeColor.Current.GXCTextGrayColor,
                 SelectedTextColor = ZigbeeColor.Current.GXCTextWhiteColor,
                 SelectedBackgroundColor = ZigbeeColor.Current.GXCButtonBlackSelectedColor,
                 BackgroundColor = ZigbeeColor.Current.GXCButtonUnSelectedColor,
                 Radius = (uint)Application.GetRealHeight(127 / 2),
                 Enable = !string.IsNullOrEmpty(pwdRow.PasswrodET?.Text),
-                IsSelected = !string.IsNullOrEmpty(pwdRow.PasswrodET?.Text)
+                IsSelected = !string.IsNullOrEmpty(pwdRow.PasswrodET?.Text),
+                IsBold=true
             };
             midFrameLayout.AddChidren(loginBtn);
 
@@ -280,6 +285,11 @@
             #endregion
 
             BindEvent();
+
+            if (string.IsNullOrEmpty(account) == false && AccountLogic.Instance.CheckEmail(account) == true)
+            {
+                SelectPhoneOrEmail_MouseUpEvent(phoneEmailForm.SelectedEmail, null);
+            }
         }
 
         #endregion
@@ -695,8 +705,6 @@
             }
         }
 
-
-
         /// <summary>
         /// phone/email 閫夋嫨
         /// </summary>
@@ -705,9 +713,10 @@
         private void SelectPhoneOrEmail_MouseUpEvent(object sender, MouseEventArgs mouseEventArgs)
         {
             phoneEmailForm.SelectedPhone.IsSelected = phoneEmailForm.SelectedEmail.IsSelected = false;
+            phoneEmailForm.SelectedPhone.IsBold = phoneEmailForm.SelectedEmail.IsBold = false;
             loginBtn.Enable = loginBtn.IsSelected = false;
             loginErrorBtn.Text = string.Empty;
-            (sender as Button).IsSelected = true;
+            (sender as Button).IsSelected = (sender as Button).IsBold = true;
             if((sender as Button).Tag.ToString()=="Phone")
             {
                 AddPhoneOrEmailFL(accountPwdFL, "Phone");
diff --git a/ZigbeeApp/Shared/Phone/Device/Account/AccountLoginByCode.cs b/ZigbeeApp/Shared/Phone/Device/Account/AccountLoginByCode.cs
index 88083b4..798fe31 100755
--- a/ZigbeeApp/Shared/Phone/Device/Account/AccountLoginByCode.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Account/AccountLoginByCode.cs
@@ -67,6 +67,10 @@
         /// 楠岃瘉鐮�
         /// </summary>
         private string code;
+        /// <summary>
+        /// wechat
+        /// </summary>
+        private Button wechatBtn;
 
         private Timer t;
         private DateTime dateBegin;
@@ -151,7 +155,8 @@
                 Width = Application.GetRealWidth(300),
                 Gravity = Gravity.CenterHorizontal,
                 TextID = R.MyInternationalizationString.AppName,
-                TextColor = ZigbeeColor.Current.GXCTextWhiteColor
+                TextColor = ZigbeeColor.Current.GXCTextWhiteColor,
+                TextSize = 16
             };
             midFrameLayout.AddChidren(logoName);
 
@@ -167,6 +172,8 @@
                 Height = Application.GetRealHeight(58),
                 TextColor = ZigbeeColor.Current.GXCTextRed,
                 TextAlignment = TextAlignment.CenterLeft,
+                TextSize = CommonFormResouce.TextSize,
+                IsBold = true
             };
             midFrameLayout.AddChidren(loginErrorBtn);
 
@@ -189,7 +196,7 @@
                 Y = Application.GetRealHeight(1198),
                 Width = Application.GetRealWidth(250),
                 Height = Application.GetRealHeight(58),
-                TextID = R.MyInternationalizationString.ForgotPWD,
+                TextID = R.MyInternationalizationString.ForgotPWD_1,
                 TextSize = CommonFormResouce.loginTextSize,
                 TextColor = Shared.Common.ZigbeeColor.Current.GXCTextGrayColor,
                 TextAlignment = TextAlignment.CenterRight
@@ -203,7 +210,8 @@
                 Height = Application.GetRealHeight(127),
                 Gravity = Gravity.CenterHorizontal,
                 TextID = R.MyInternationalizationString.Login,
-                TextSize = 15,
+                TextSize = 16,
+                IsBold=true,
                 TextColor = ZigbeeColor.Current.GXCTextGrayColor,
                 SelectedTextColor = ZigbeeColor.Current.GXCTextWhiteColor,
                 SelectedBackgroundColor = ZigbeeColor.Current.GXCButtonBlackSelectedColor,
@@ -240,6 +248,17 @@
             };
             midFrameLayout.AddChidren(registerBtn);
 
+            wechatBtn = new Button
+            {
+                X = Application.GetRealWidth(395),
+                Y = Application.GetRealHeight(1737),
+                Width = Application.GetMinRealAverage(115),
+                Height = Application.GetMinRealAverage(115),
+                UnSelectedImagePath = "Account/Wechat.png",
+                Gravity = Gravity.CenterHorizontal
+            };
+            midFrameLayout.AddChidren(wechatBtn);
+
             BindEvent();
         }
 
@@ -261,6 +280,8 @@
             registerBtn.MouseUpEventHandler += Register;
             //蹇樿瀵嗙爜
             forgotPasswordBtn.MouseUpEventHandler += ForgetPWD_MouseUpEvent;
+            //wechat
+            wechatBtn.MouseUpEventHandler += LoginByWechat;
 
         }
 
@@ -279,6 +300,10 @@
             CommonPage.Loading.Start();
             try
             {
+                if (CheckAccount(account) == false)
+                {
+                    return;
+                }
                 var reqLoginByCode = new SendDataToServer.LoginValidCodeOBJ()
                 {
                     Account = account,
@@ -360,8 +385,12 @@
                 else if (stateCodeStr == "VALIDCODEANDPHONENOEQUAL")
                 {
                     CommonPage.Loading.Hide();
-                    //楠岃瘉鐮侀敊璇�
                     loginErrorBtn.TextID = R.MyInternationalizationString.VALIDCODEANDPHONENOEQUAL;
+                }
+                else if (stateCodeStr == "NORECORD")
+                {
+                    CommonPage.Loading.Hide();
+                    loginErrorBtn.TextID = R.MyInternationalizationString.NORECORD;
                 }
                 else if (stateCodeStr == "YOUDATANOISLOCALREGION")
                 {
@@ -415,8 +444,9 @@
         private void SelectPhoneOrEmail_MouseUpEvent(object sender, MouseEventArgs mouseEventArgs)
         {
             phoneEmailForm.SelectedPhone.IsSelected = phoneEmailForm.SelectedEmail.IsSelected = false;
+            phoneEmailForm.SelectedPhone.IsBold = phoneEmailForm.SelectedEmail.IsBold = false;
             loginBtn.Enable = loginBtn.IsSelected = false;
-            (sender as Button).IsSelected = true;
+            (sender as Button).IsSelected = (sender as Button).IsBold = true;
             if ((sender as Button).Tag.ToString() == "Phone")
             {
                 AddPhoneOrEmailFL(accountCodeFL, "Phone");
@@ -454,6 +484,179 @@
             codeRow.SendCodeBtn.MouseUpEventHandler += SendCode_MouseUpEventAsync;
             codeRow.VerificationCodeET.TextChangeEventHandler += Code_TextChange;
         }
+
+        /// <summary>
+        /// wechat鐧诲綍
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="mouseEventArgs"></param>
+        private void LoginByWechat(object sender, MouseEventArgs mouseEventArgs)
+        {
+#if Android
+            //var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP),
+            //    Language.StringByID(R.MyInternationalizationString.LoginByWechat),
+            //    Language.StringByID(R.MyInternationalizationString.Cancel),
+            //    Language.StringByID(R.MyInternationalizationString.Confrim));
+            //alert.Show();
+            //alert.ResultEventHandler += (send, e) =>
+            //{
+            //if (e)
+            //{
+            com.hdl.home.Application.WXLogin();
+            com.hdl.home.WXEntryActivity.RespAction = (authStr) =>
+            {
+                if (authStr == null)
+                {
+
+                }
+                else
+                {
+                    new System.Threading.Thread(async () =>
+                    {
+                        var re = await isBindAuthAsync(authStr);
+                        if (re)
+                        {
+                            Application.RunOnMainThread(() =>
+                            {
+                                //鐩存帴鐧诲綍
+                                HomePage.Instance.ShowLoginLoadView();
+                            });
+                            var resultRegID = await Shared.Common.CommonPage.Instance.PushRegID();
+                            var homes = await House.GetHomeLists();
+                            //鍚姩ZigBee
+                            ZigBee.Common.Application.Init();
+                            //鍒锋柊涓汉涓績鐨勫唴瀛樺強绾跨▼
+                            await UserCenter.UserCenterLogic.InitUserCenterMenmoryAndThread();
+                            Shared.Common.Room.InitAllRoom();
+                            Application.RunOnMainThread(() =>
+                            {
+                                this.RemoveFromParent();
+                                CommonPage.Instance.RemoveViewByTag("Login");
+                                UserPage.Instance.Fresh();
+                            });
+                        }
+                        else
+                        {
+                            var authRes = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.ResponseEntity.AuthUserRes>(authStr);
+                            Application.RunOnMainThread(() =>
+                            {
+                                var registerPage = new AccountRegister();
+                                Shared.Common.CommonPage.Instance.AddChidren(registerPage);
+                                registerPage.OpenID = authRes.openid;
+                                registerPage.Show();
+                            });
+                        }
+                    })
+                    { IsBackground = true }.Start();
+                }
+            };
+            //}
+            //};
+#endif
+
+#if iOS
+            Home.IOS.AppDelegate.WXLogin();
+            Home.IOS.AppDelegate.RespAction = (authStr) =>
+            {
+                if (authStr == null)
+                {
+
+                }
+                else
+                {
+                    new System.Threading.Thread(async () =>
+                    {
+
+                        var re = await isBindAuthAsync(authStr);
+                        if (re)
+                        {
+                            //鐩存帴鐧诲綍
+                            //this.RemoveFromParent();
+
+                            //UserPage.Instance.Fresh();
+                            var resultRegID = await Shared.Common.CommonPage.Instance.PushRegID();
+                            var homes = await House.GetHomeLists();
+                            //鍚姩ZigBee
+                            ZigBee.Common.Application.Init();
+                            //鍒锋柊涓汉涓績鐨勫唴瀛樺強绾跨▼
+                            await UserCenter.UserCenterLogic.InitUserCenterMenmoryAndThread();
+                            Shared.Common.Room.InitAllRoom();
+                            Application.RunOnMainThread(() =>
+                            {
+                                this.RemoveFromParent();
+                                UserPage.Instance.Fresh();
+                            });
+                        }
+                        else
+                        {
+                            var authRes = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.ResponseEntity.AuthUserRes>(authStr);
+                            Application.RunOnMainThread(() =>
+                            {
+                                var registerPage = new AccountRegister();
+                                Shared.Common.CommonPage.Instance.AddChidren(registerPage);
+                                registerPage.OpenID = authRes.openid;
+                                registerPage.Show();
+                            });
+                        }
+                    })
+                    { IsBackground = true }.Start();
+                }
+            };
+#endif
+        }
+
+        /// <summary>
+        /// qq鐧诲綍
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="mouseEventArgs"></param>
+        private void LoginByQQ(object sender, MouseEventArgs mouseEventArgs)
+        {
+
+        }
+
+        /// <summary>
+        /// 鏄惁宸茬粦瀹�
+        /// </summary>
+        /// <param name="authStr"></param>
+        /// <returns></returns>
+        private async System.Threading.Tasks.Task<bool> isBindAuthAsync(string authStr)
+        {
+            var authRes = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.ResponseEntity.AuthUserRes>(authStr);
+            var auth = new SendDataToServer.AuthUser()
+            {
+                AccessToken = authRes.access_token,
+                RefreshToken = authRes.refresh_token,
+                OpenID = authRes.openid
+            };
+            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(auth);
+            var revertObj = await CommonPage.Instance.RequestHttpsZigbeeAsync("ZigbeeUsers/InsertOrUpdateAuthUser", System.Text.Encoding.UTF8.GetBytes(requestJson));
+            if (revertObj == null)
+            {
+                return false;
+            }
+            var stateCodeStr = revertObj.StateCode.ToUpper();
+            if (stateCodeStr == "SUCCESS")
+            {
+                var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<Shared.Common.ResponseEntity.UserLoginRes>(revertObj.ResponseData.ToString());
+                var revertData = responseDataObj;
+                Config.Instance.Account = revertData.Account;
+                Config.Instance.MD5PWD = revertData.MD5PWD;
+                Config.Instance.Guid = revertData.Guid;
+                Config.Instance.LoginDateTime = DateTime.Now;
+                if (Config.Instance.AccountList.Find((obj) => obj == revertData.Account) == null)
+                {
+                    Config.Instance.AccountList.Add(revertData.Account);
+                }
+                Config.Instance.Save();
+                return true;
+            }
+            else
+            {
+                return false;
+            }
+        }
+
         #endregion
 
         #region 鈼� 璐﹀彿銆侀獙璇佺爜鐩戝惉______________________
diff --git a/ZigbeeApp/Shared/Phone/Device/Account/AccountRegister.cs b/ZigbeeApp/Shared/Phone/Device/Account/AccountRegister.cs
index 58bb7b5..ed300a9 100755
--- a/ZigbeeApp/Shared/Phone/Device/Account/AccountRegister.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Account/AccountRegister.cs
@@ -143,6 +143,8 @@
                 Height = Application.GetRealHeight(58),
                 TextColor = ZigbeeColor.Current.GXCTextRed,
                 TextAlignment = TextAlignment.CenterLeft,
+                TextSize = CommonFormResouce.TextSize,
+                IsBold = true
             };
             bodyFrameLayout.AddChidren(errorBtn);
 
@@ -159,7 +161,9 @@
                 BackgroundColor = ZigbeeColor.Current.GXCButtonUnSelectedColor,
                 Radius = (uint)Application.GetRealHeight(127 / 2),
                 Enable = !string.IsNullOrEmpty(codeRow.VerificationCodeET?.Text),
-                IsSelected = !string.IsNullOrEmpty(codeRow.VerificationCodeET?.Text)
+                IsSelected = !string.IsNullOrEmpty(codeRow.VerificationCodeET?.Text),
+                TextSize = 16,
+                IsBold = true,
             };
             bodyFrameLayout.AddChidren(registerBtn);
 
@@ -168,7 +172,7 @@
                 Y = registerBtn.Bottom + Application.GetRealHeight(50),
                 Width = Application.GetRealWidth(400),
                 Height = Application.GetRealHeight(58),
-                TextID = R.MyInternationalizationString.LoginByAccountPWD,
+                TextID = R.MyInternationalizationString.LoginByAccountPWD_1,
                 TextColor = ZigbeeColor.Current.GXCTextGrayColor,
                 TextSize = CommonFormResouce.loginTextSize,
                 Gravity=Gravity.CenterHorizontal
@@ -188,8 +192,9 @@
         private void SelectPhoneOrEmail_MouseUpEvent(object sender, MouseEventArgs mouseEventArgs)
         {
             phoneEmailForm.SelectedPhone.IsSelected = phoneEmailForm.SelectedEmail.IsSelected = false;
+            phoneEmailForm.SelectedPhone.IsBold = phoneEmailForm.SelectedEmail.IsBold = false;
             registerBtn.Enable = registerBtn.IsSelected = false;
-            (sender as Button).IsSelected = true;
+            (sender as Button).IsSelected = (sender as Button).IsBold = true;
             account = string.Empty;
             errorBtn.Text = string.Empty;
             if ((sender as Button).Tag.ToString() == "Phone")
@@ -325,6 +330,10 @@
                     //楠岃瘉鐮侀敊璇�
                     errorBtn.TextID = R.MyInternationalizationString.VALIDCODEANDPHONENOEQUAL;
                 }
+                else if (stateCodeStr == "NORECORD")
+                {
+                    errorBtn.TextID = R.MyInternationalizationString.NORECORD;
+                }
                 else
                 {
                     errorBtn.TextID = R.MyInternationalizationString.RequestServerFailed;
diff --git a/ZigbeeApp/Shared/Phone/Device/Account/PhoneEmailForm.cs b/ZigbeeApp/Shared/Phone/Device/Account/PhoneEmailForm.cs
index 110e270..3ad73d0 100755
--- a/ZigbeeApp/Shared/Phone/Device/Account/PhoneEmailForm.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Account/PhoneEmailForm.cs
@@ -61,7 +61,9 @@
                 SelectedTextColor = ZigbeeColor.Current.GXCTextWhiteColor,
                 Radius = (uint)Application.GetRealHeight(height / 2),
                 IsSelected = true,
-                Tag = "Phone"
+                IsBold=true,
+                Tag = "Phone",
+                TextSize= CommonFormResouce.TextSize
             };
             PhoneEmailFL.AddChidren(SelectedPhone);
 
@@ -76,7 +78,8 @@
                 SelectedTextColor = ZigbeeColor.Current.GXCTextWhiteColor,
                 Radius = (uint)Application.GetRealHeight(height / 2),
                 IsSelected = false,
-                Tag = "Email"
+                Tag = "Email",
+                TextSize = CommonFormResouce.TextSize
             };
             PhoneEmailFL.AddChidren(SelectedEmail);
         }
@@ -108,6 +111,10 @@
         /// Button_Height
         /// </summary>
         private int Button_Height = 92;
+        /// <summary>
+        /// accountLine
+        /// </summary>
+        private Button accountLine;
 
         /// <summary>
         /// Init
@@ -135,7 +142,7 @@
                 TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
                 Text = $"+{CommonPage.PhoneZoneStr}",
                 TextAlignment = TextAlignment.Center,
-                TextSize = CommonFormResouce.loginTextSize
+                TextSize = CommonFormResouce.TextSize
             };
             accountFL.AddChidren(PhoneZoneBtn);
             PhoneZoneBtn.MouseUpEventHandler += (sender, e) =>
@@ -149,15 +156,6 @@
                     (sender as Button).Text = "+" + code;
                     CommonPage.PhoneZoneStr = code;
                 };
-
-                //var zoneListView = new PhoneZone { };
-                //zoneListView.ActionSelectedZone += (zone) =>
-                //{
-                //    var t = CommonPage.PhoneZoneStr;
-                //    (sender as Button).Text = "+" + zone;
-                //};
-                //parFL.AddChidren(zoneListView);
-                //zoneListView.Show();
             };
 
             AccountET = new EditText()
@@ -171,18 +169,39 @@
                 TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                 Text = account,
                 TextAlignment = TextAlignment.CenterLeft,
-                TextSize = CommonFormResouce.loginTextSize
+                TextSize = CommonFormResouce.PlaceHolderTextSize
             };
             accountFL.AddChidren(AccountET);
 
-            var accountLine = new Button()
+            accountLine = new Button()
             {
-                Y = Application.GetRealHeight(CommonFormResouce.Row_Height) - 1,
+                Y = Application.GetRealHeight(CommonFormResouce.Row_Height) - 2,
                 Width = Application.GetRealWidth(CommonFormResouce.Row_Width),
                 Height = 1,
                 BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor
             };
             accountFL.AddChidren(accountLine);
+
+            AccountET.FoucsChanged += Text_FoucesChangeEvent;
+        }
+
+        /// <summary>
+        /// 鍏夋爣鏀瑰彉
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="focusEvent"></param>
+        private void Text_FoucesChangeEvent(object sender, FocusEventArgs focusEvent)
+        {
+            if (focusEvent.Focus)
+            {
+                accountLine.BackgroundColor = ZigbeeColor.Current.GXCSelectedLineColor;
+                accountLine.Height = 2;
+            }
+            else
+            {
+                accountLine.BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor;
+                accountLine.Height = 1;
+            }
         }
     }
 
@@ -196,6 +215,10 @@
         /// Button_Height
         /// </summary>
         private int Button_Height = 92;
+        /// <summary>
+        /// accountLine
+        /// </summary>
+        private Button accountLine;
 
         /// <summary>
         /// Init
@@ -235,18 +258,40 @@
                 TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                 Text = account,
                 TextAlignment = TextAlignment.CenterLeft,
-                TextSize = CommonFormResouce.loginTextSize
+                TextSize = CommonFormResouce.PlaceHolderTextSize
             };
             accountFL.AddChidren(AccountET);
 
-            var accountLine = new Button()
+            accountLine = new Button()
             {
-                Y = Application.GetRealHeight(CommonFormResouce.Row_Height) - 1,
+                Y = Application.GetRealHeight(CommonFormResouce.Row_Height)-2,
                 Width = Application.GetRealWidth(CommonFormResouce.Row_Width),
                 Height = 1,
                 BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor
             };
             accountFL.AddChidren(accountLine);
+
+            AccountET.FoucsChanged += Text_FoucesChangeEvent;
+            
+        }
+
+        /// <summary>
+        /// 鍏夋爣鏀瑰彉
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="focusEvent"></param>
+        private void Text_FoucesChangeEvent(object sender, FocusEventArgs focusEvent)
+        {
+            if(focusEvent.Focus)
+            {
+                accountLine.BackgroundColor = ZigbeeColor.Current.GXCSelectedLineColor;
+                accountLine.Height = 2;
+            }
+            else
+            {
+                accountLine.BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor;
+                accountLine.Height = 1;
+            }
         }
     }
 
@@ -260,6 +305,10 @@
         /// Button_Height
         /// </summary>
         private int Button_Height = 92;
+        /// <summary>
+        /// accountLine
+        /// </summary>
+        private Button accountLine;
 
         /// <summary>
         /// Init
@@ -299,19 +348,41 @@
                 TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                 Text = account,
                 TextAlignment = TextAlignment.CenterLeft,
-                TextSize = CommonFormResouce.loginTextSize
+                TextSize = CommonFormResouce.PlaceHolderTextSize
             };
             accountFL.AddChidren(AccountET);
 
-            var accountLine = new Button()
+            accountLine = new Button()
             {
-                Y = Application.GetRealHeight(CommonFormResouce.Row_Height) - 1,
+                Y = Application.GetRealHeight(CommonFormResouce.Row_Height) - 2,
                 Width = Application.GetRealWidth(CommonFormResouce.Row_Width),
                 Height = 1,
                 BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor
             };
             accountFL.AddChidren(accountLine);
+
+            AccountET.FoucsChanged += Text_FoucesChangeEvent;
         }
+
+        /// <summary>
+        /// 鍏夋爣鏀瑰彉
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="focusEvent"></param>
+        private void Text_FoucesChangeEvent(object sender, FocusEventArgs focusEvent)
+        {
+            if (focusEvent.Focus)
+            {
+                accountLine.BackgroundColor = ZigbeeColor.Current.GXCSelectedLineColor;
+                accountLine.Height = 2;
+            }
+            else
+            {
+                accountLine.BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor;
+                accountLine.Height = 1;
+            }
+        }
+
     }
 
 
@@ -325,6 +396,10 @@
         /// Button_Height
         /// </summary>
         private int Button_Height = 92;
+        /// <summary>
+        /// accountLine
+        /// </summary>
+        private Button accountLine;
 
         /// <summary>
         /// Init
@@ -364,19 +439,41 @@
                 TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                 Text = account,
                 TextAlignment = TextAlignment.CenterLeft,
-                TextSize = CommonFormResouce.loginTextSize
+                TextSize = CommonFormResouce.PlaceHolderTextSize
             };
             accountFL.AddChidren(AccountET);
 
-            var accountLine = new Button()
+            accountLine = new Button()
             {
-                Y = Application.GetRealHeight(CommonFormResouce.Row_Height) - 1,
+                Y = Application.GetRealHeight(CommonFormResouce.Row_Height) - 2,
                 Width = Application.GetRealWidth(CommonFormResouce.Row_Width),
                 Height = 1,
                 BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor
             };
             accountFL.AddChidren(accountLine);
+
+            AccountET.FoucsChanged += Text_FoucesChangeEvent;
         }
+
+        /// <summary>
+        /// 鍏夋爣鏀瑰彉
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="focusEvent"></param>
+        private void Text_FoucesChangeEvent(object sender, FocusEventArgs focusEvent)
+        {
+            if (focusEvent.Focus)
+            {
+                accountLine.BackgroundColor = ZigbeeColor.Current.GXCSelectedLineColor;
+                accountLine.Height = 2;
+            }
+            else
+            {
+                accountLine.BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor;
+                accountLine.Height = 1;
+            }
+        }
+
     }
 
     public class EmailForgotRowForm : FrameLayout
@@ -389,6 +486,10 @@
         /// Button_Height
         /// </summary>
         private int Button_Height = 92;
+        /// <summary>
+        /// accountLine
+        /// </summary>
+        private Button accountLine;
 
         /// <summary>
         /// Init
@@ -418,18 +519,39 @@
                 TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                 Text = account,
                 TextAlignment = TextAlignment.CenterLeft,
-                TextSize = CommonFormResouce.loginTextSize
+                TextSize = CommonFormResouce.PlaceHolderTextSize
             };
             accountFL.AddChidren(AccountET);
 
-            var accountLine = new Button()
+            accountLine = new Button()
             {
-                Y = Application.GetRealHeight(CommonFormResouce.Row_Height) - 1,
+                Y = Application.GetRealHeight(CommonFormResouce.Row_Height) - 2,
                 Width = Application.GetRealWidth(CommonFormResouce.Row_Width),
                 Height = 1,
-                BackgroundColor = ZigbeeColor.Current.GXCSelectedLineColor
+                BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor
             };
             accountFL.AddChidren(accountLine);
+
+            AccountET.FoucsChanged += Text_FoucesChangeEvent;
+        }
+
+        /// <summary>
+        /// 鍏夋爣鏀瑰彉
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="focusEvent"></param>
+        private void Text_FoucesChangeEvent(object sender, FocusEventArgs focusEvent)
+        {
+            if (focusEvent.Focus)
+            {
+                accountLine.BackgroundColor = ZigbeeColor.Current.GXCSelectedLineColor;
+                accountLine.Height = 2;
+            }
+            else
+            {
+                accountLine.BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor;
+                accountLine.Height = 1;
+            }
         }
     }
 
@@ -451,6 +573,10 @@
         /// VerificationCodeET
         /// </summary>
         public EditText VerificationCodeET;
+        /// <summary>
+        /// pwdLine
+        /// </summary>
+        private Button pwdLine;
 
         /// <summary>
         /// Init
@@ -514,19 +640,42 @@
                 TextColor = ZigbeeColor.Current.GXCTextGrayColor,
                 SelectedTextColor = ZigbeeColor.Current.GXCTextColor,
                 TextAlignment = TextAlignment.Center,
+                TextSize=CommonFormResouce.TextSize,
                 Enable = false,
-                IsSelected = false
+                IsSelected = false,
+                IsBold=true
             };
             codeFL.AddChidren(SendCodeBtn);
 
-            var pwdLine = new Button()
+            pwdLine = new Button()
             {
-                Y = Application.GetRealHeight(CommonFormResouce.Row_Height) - 1,
+                Y = Application.GetRealHeight(CommonFormResouce.Row_Height) - 2,
                 Width = Application.GetRealWidth(CommonFormResouce.Row_Width),
                 Height = 1,
-                BackgroundColor = ZigbeeColor.Current.GXCSelectedLineColor
+                BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor
             };
             codeFL.AddChidren(pwdLine);
+
+            VerificationCodeET.FoucsChanged += Text_FoucesChangeEvent;
+        }
+
+        /// <summary>
+        /// 鍏夋爣鏀瑰彉
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="focusEvent"></param>
+        private void Text_FoucesChangeEvent(object sender, FocusEventArgs focusEvent)
+        {
+            if (focusEvent.Focus)
+            {
+                pwdLine.BackgroundColor = ZigbeeColor.Current.GXCSelectedLineColor;
+                pwdLine.Height = 2;
+            }
+            else
+            {
+                pwdLine.BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor;
+                pwdLine.Height = 1;
+            }
         }
     }
 
@@ -544,6 +693,10 @@
         /// Button_Height
         /// </summary>
         private int Button_Height = 92;
+        /// <summary>
+        /// pwdLine
+        /// </summary>
+        private Button pwdLine;
 
         /// <summary>
         /// Init
@@ -585,7 +738,7 @@
                 TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                 Text = password,
                 TextAlignment = TextAlignment.CenterLeft,
-                TextSize = CommonFormResouce.loginTextSize,
+                TextSize = CommonFormResouce.PlaceHolderTextSize,
                 SecureTextEntry = true
             };
             pwdFL.AddChidren(PasswrodET);
@@ -608,14 +761,16 @@
                 PasswrodET.SecureTextEntry = (sender as Button).IsSelected;
             };
 
-            var pwdLine = new Button()
+            pwdLine = new Button()
             {
-                Y = Application.GetRealHeight(CommonFormResouce.Row_Height) - 1,
+                Y = Application.GetRealHeight(CommonFormResouce.Row_Height) - 2,
                 Width = Application.GetRealWidth(CommonFormResouce.Row_Width),
                 Height = 1,
                 BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor
             };
             pwdFL.AddChidren(pwdLine);
+
+            PasswrodET.FoucsChanged += Text_FoucesChangeEvent;
         }
         /// <summary>
         /// SetPlaceholdText
@@ -624,6 +779,25 @@
         public void SetPlaceholdText(string holdText)
         {
             PasswrodET.PlaceholderText = holdText;
+        }
+
+        /// <summary>
+        /// 鍏夋爣鏀瑰彉
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="focusEvent"></param>
+        private void Text_FoucesChangeEvent(object sender, FocusEventArgs focusEvent)
+        {
+            if (focusEvent.Focus)
+            {
+                pwdLine.BackgroundColor = ZigbeeColor.Current.GXCSelectedLineColor;
+                pwdLine.Height = 2;
+            }
+            else
+            {
+                pwdLine.BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor;
+                pwdLine.Height = 1;
+            }
         }
     }
 
@@ -641,6 +815,10 @@
         /// Button_Height
         /// </summary>
         private int Button_Height = 92;
+        /// <summary>
+        /// pwdLine
+        /// </summary>
+        private Button pwdLine;
 
         /// <summary>
         /// Init
@@ -682,7 +860,7 @@
                 TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                 Text = password,
                 TextAlignment = TextAlignment.CenterLeft,
-                TextSize = CommonFormResouce.loginTextSize,
+                TextSize = CommonFormResouce.PlaceHolderTextSize,
                 SecureTextEntry = true
             };
             pwdFL.AddChidren(PasswrodET);
@@ -705,14 +883,16 @@
                 PasswrodET.SecureTextEntry = (sender as Button).IsSelected;
             };
 
-            var pwdLine = new Button()
+            pwdLine = new Button()
             {
-                Y = Application.GetRealHeight(CommonFormResouce.Row_Height) - 1,
+                Y = Application.GetRealHeight(CommonFormResouce.Row_Height) - 2,
                 Width = Application.GetRealWidth(CommonFormResouce.Row_Width),
                 Height = 1,
-                BackgroundColor = ZigbeeColor.Current.GXCSelectedLineColor
+                BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor
             };
             pwdFL.AddChidren(pwdLine);
+
+            PasswrodET.FoucsChanged += Text_FoucesChangeEvent;
         }
         /// <summary>
         /// SetPlaceholdText
@@ -721,6 +901,25 @@
         public void SetPlaceholdText(string holdText)
         {
             PasswrodET.PlaceholderText = holdText;
+        }
+
+        /// <summary>
+        /// 鍏夋爣鏀瑰彉
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="focusEvent"></param>
+        private void Text_FoucesChangeEvent(object sender, FocusEventArgs focusEvent)
+        {
+            if (focusEvent.Focus)
+            {
+                pwdLine.BackgroundColor = ZigbeeColor.Current.GXCSelectedLineColor;
+                pwdLine.Height = 2;
+            }
+            else
+            {
+                pwdLine.BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor;
+                pwdLine.Height = 1;
+            }
         }
     }
 
@@ -738,6 +937,10 @@
         /// Button_Height
         /// </summary>
         private int Button_Height = 92;
+        /// <summary>
+        /// pwdLine
+        /// </summary>
+        private Button pwdLine;
 
         /// <summary>
         /// Init
@@ -769,7 +972,7 @@
                 TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                 Text = password,
                 TextAlignment = TextAlignment.CenterLeft,
-                TextSize = CommonFormResouce.loginTextSize,
+                TextSize = CommonFormResouce.PlaceHolderTextSize,
                 SecureTextEntry = true
             };
             pwdFL.AddChidren(PasswrodET);
@@ -792,14 +995,16 @@
                 PasswrodET.SecureTextEntry = (sender as Button).IsSelected;
             };
 
-            var pwdLine = new Button()
+            pwdLine = new Button()
             {
-                Y = Application.GetRealHeight(CommonFormResouce.Row_Height) - 1,
+                Y = Application.GetRealHeight(CommonFormResouce.Row_Height) - 2,
                 Width = Application.GetRealWidth(CommonFormResouce.Row_Width),
                 Height = 1,
                 BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor
             };
             pwdFL.AddChidren(pwdLine);
+
+            PasswrodET.FoucsChanged += Text_FoucesChangeEvent;
         }
         /// <summary>
         /// SetPlaceholdText
@@ -808,6 +1013,26 @@
         public void SetPlaceholdText(string holdText)
         {
             PasswrodET.PlaceholderText = holdText;
+        }
+
+
+        /// <summary>
+        /// 鍏夋爣鏀瑰彉
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="focusEvent"></param>
+        private void Text_FoucesChangeEvent(object sender, FocusEventArgs focusEvent)
+        {
+            if (focusEvent.Focus)
+            {
+                pwdLine.BackgroundColor = ZigbeeColor.Current.GXCSelectedLineColor;
+                pwdLine.Height = 2;
+            }
+            else
+            {
+                pwdLine.BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor;
+                pwdLine.Height = 1;
+            }
         }
     }
 
@@ -829,6 +1054,10 @@
         /// VerificationCodeET
         /// </summary>
         public EditText VerificationCodeET;
+        /// <summary>
+        /// pwdLine
+        /// </summary>
+        private Button pwdLine;
         /// <summary>
         /// sendCodeBG
         /// </summary>
@@ -897,18 +1126,42 @@
                 SelectedBackgroundColor=ZigbeeColor.Current.GXCButtonSelectedColor,
                 Enable = false,
                 IsSelected = false,
-                Radius=(uint)Application.GetRealHeight(12)
+                Radius=(uint)Application.GetRealHeight(12),
+                IsBold=true,
+                TextSize=CommonFormResouce.TextSize
             };
             codeFL.AddChidren(SendCodeBtn);
 
-        var pwdLine = new Button()
+            pwdLine = new Button()
             {
-                Y = Application.GetRealHeight(CommonFormResouce.Row_Height) - 1,
+                Y = Application.GetRealHeight(CommonFormResouce.Row_Height) - 2,
                 Width = Application.GetRealWidth(536),
                 Height = 1,
-                BackgroundColor = ZigbeeColor.Current.GXCSelectedLineColor
+                BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor
             };
             codeFL.AddChidren(pwdLine);
+
+            VerificationCodeET.FoucsChanged += Text_FoucesChangeEvent;
+
+        }
+
+        /// <summary>
+        /// 鍏夋爣鏀瑰彉
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="focusEvent"></param>
+        private void Text_FoucesChangeEvent(object sender, FocusEventArgs focusEvent)
+        {
+            if (focusEvent.Focus)
+            {
+                pwdLine.BackgroundColor = ZigbeeColor.Current.GXCSelectedLineColor;
+                pwdLine.Height = 2;
+            }
+            else
+            {
+                pwdLine.BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor;
+                pwdLine.Height = 1;
+            }
         }
 
         /// <summary>
@@ -986,6 +1239,10 @@
         /// </summary>
         public EditText VerificationCodeET;
         /// <summary>
+        /// pwdLine
+        /// </summary>
+        private Button pwdLine;
+        /// <summary>
         /// Timer
         /// </summary>
         private Timer t;
@@ -1045,18 +1302,41 @@
                 SelectedBackgroundColor = ZigbeeColor.Current.GXCButtonSelectedColor,
                 Enable = false,
                 IsSelected = false,
-                Radius = (uint)Application.GetRealHeight(12)
+                Radius = (uint)Application.GetRealHeight(12),
+                IsBold=true,
+                TextSize=CommonFormResouce.TextSize
             };
             codeFL.AddChidren(SendCodeBtn);
 
-            var pwdLine = new Button()
+            pwdLine = new Button()
             {
-                Y = Application.GetRealHeight(CommonFormResouce.Row_Height) - 1,
+                Y = Application.GetRealHeight(CommonFormResouce.Row_Height) - 2,
                 Width = Application.GetRealWidth(536),
                 Height = 1,
-                BackgroundColor = ZigbeeColor.Current.GXCSelectedLineColor
+                BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor
             };
             codeFL.AddChidren(pwdLine);
+
+            VerificationCodeET.FoucsChanged += Text_FoucesChangeEvent;
+        }
+
+        /// <summary>
+        /// 鍏夋爣鏀瑰彉
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="focusEvent"></param>
+        private void Text_FoucesChangeEvent(object sender, FocusEventArgs focusEvent)
+        {
+            if (focusEvent.Focus)
+            {
+                pwdLine.BackgroundColor = ZigbeeColor.Current.GXCSelectedLineColor;
+                pwdLine.Height = 2;
+            }
+            else
+            {
+                pwdLine.BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor;
+                pwdLine.Height = 1;
+            }
         }
 
         /// <summary>
diff --git a/ZigbeeApp/Shared/Phone/Device/Category/Category.cs b/ZigbeeApp/Shared/Phone/Device/Category/Category.cs
index 15b55a2..d2b1bfd 100755
--- a/ZigbeeApp/Shared/Phone/Device/Category/Category.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Category/Category.cs
@@ -195,7 +195,7 @@
                                         light.DeviceStatusReport = common.DeviceStatusReport;
                                         light.OnOffStatus = light.DeviceStatusReport.AttriBute[0].AttriButeData;
                                         var row = rowLayout.GetChildren(0) as CategoryFunctionRow;
-                                        row.SetStatu(light.OnOffStatus == 1);
+                                        row.IsSelected = light.OnOffStatus == 1;
                                         row.SetStatuText(deviceUI.GetDeviceStatu());
                                         light.LastDateTime = DateTime.Now;
                                     }
@@ -203,8 +203,6 @@
                                     {
                                         deviceUI.CommonDevice.IsOnline = 1;
                                         deviceUI.CommonDevice.LastDateTime = DateTime.Now;
-                                        var row = rowLayout.GetChildren(0) as CategoryFunctionRow;
-                                        row.SetStatu(true);
                                     }
                                     break;
 
@@ -216,7 +214,7 @@
                                         airSwitch.DeviceStatusReport = common.DeviceStatusReport;
                                         airSwitch.OnOffStatus = airSwitch.DeviceStatusReport.AttriBute[0].AttriButeData;
                                         var row = rowLayout.GetChildren(0) as CategoryFunctionRow;
-                                        row.SetStatu(airSwitch.OnOffStatus == 1);
+                                        row.IsSelected = airSwitch.OnOffStatus == 1;
                                         row.SetStatuText(deviceUI.GetDeviceStatu());
                                         airSwitch.LastDateTime = DateTime.Now;
                                     }
@@ -224,8 +222,6 @@
                                     {
                                         deviceUI.CommonDevice.IsOnline = 1;
                                         deviceUI.CommonDevice.LastDateTime = DateTime.Now;
-                                        var row = rowLayout.GetChildren(0) as CategoryFunctionRow;
-                                        row.SetStatu(true);
                                     }
                                     break;
                                 case DeviceType.WindowCoveringDevice:
@@ -248,6 +244,7 @@
                                             rollerShade.DeviceStatusReport = common.DeviceStatusReport;
                                             rollerShade.WcdCurrentPositionLiftPercentage = common.DeviceStatusReport.AttriBute[0].AttriButeData;
                                             row.SetStatuText($"{Language.StringByID(R.MyInternationalizationString.Current)} { deviceUI.GetDeviceStatu()}");
+                                            row.IsSelected = rollerShade.WcdCurrentPositionLiftPercentage != 0;
                                             rollerShade.LastDateTime = DateTime.Now;
                                         }
                                     }
@@ -255,8 +252,6 @@
                                     {
                                         deviceUI.CommonDevice.IsOnline = 1;
                                         deviceUI.CommonDevice.LastDateTime = DateTime.Now;
-                                        var row = rowLayout.GetChildren(0) as CategoryFunctionForWinRow;
-                                        row.SetStatu(true);
                                     }
                                     break;
 
@@ -307,7 +302,7 @@
                                             }
                                         }
                                         var row = rowLayout.GetChildren(0) as CategoryFunctionRow;
-                                        row.SetStatu(ac.currentSystemMode != 0);
+                                        row.IsSelected = ac.currentSystemMode != 0;
                                         row.SetStatuText(deviceUI.GetDeviceStatu());
                                     }
 
@@ -331,7 +326,7 @@
                                             }
                                         }
                                         var row = rowLayout.GetChildren(0) as CategoryFunctionRow;
-                                        row.SetStatu(ac.currentSystemMode != 0);
+                                        row.IsSelected = ac.currentSystemMode != 0;
                                         row.SetStatuText(deviceUI.GetDeviceStatu());
                                     }
 
@@ -340,8 +335,6 @@
                                         var ac = deviceUI.CommonDevice as ZigBee.Device.AC;
                                         ac.IsOnline = 1;
                                         ac.LastDateTime = DateTime.Now;
-                                        var row = rowLayout.GetChildren(0) as CategoryFunctionRow;
-                                        row.SetStatu(true);
                                     }
                                     break;
                                 case DeviceType.DimmableLight:
@@ -352,7 +345,7 @@
                                         dimmableLight.DeviceStatusReport = common.DeviceStatusReport;
                                         dimmableLight.OnOffStatus = dimmableLight.DeviceStatusReport.AttriBute[0].AttriButeData;
                                         var row = rowLayout.GetChildren(0) as CategoryFunctionRow;
-                                        row.SetStatu(dimmableLight.OnOffStatus == 1);
+                                        row.IsSelected = dimmableLight.OnOffStatus == 1;
                                         row.SetStatuText(deviceUI.GetDeviceStatu());
                                         dimmableLight.LastDateTime = DateTime.Now;
                                     }
@@ -362,7 +355,7 @@
                                         dimmableLight.DeviceStatusReport = common.DeviceStatusReport;
                                         dimmableLight.Level = dimmableLight.DeviceStatusReport.AttriBute[0].AttriButeData;
                                         var row = rowLayout.GetChildren(0) as CategoryFunctionRow;
-                                        row.SetStatu(dimmableLight.OnOffStatus == 1);
+                                        row.IsSelected = dimmableLight.OnOffStatus == 1;
                                         row.SetStatuText(deviceUI.GetDeviceStatu());
                                         dimmableLight.LastDateTime = DateTime.Now;
                                     }
@@ -370,8 +363,6 @@
                                     {
                                         deviceUI.CommonDevice.IsOnline = 1;
                                         deviceUI.CommonDevice.LastDateTime = DateTime.Now;
-                                        var row = rowLayout.GetChildren(0) as CategoryFunctionRow;
-                                        row.SetStatu(true);
                                     }
                                     break;
                             }
@@ -405,37 +396,66 @@
                             {
                                 case DeviceType.OnOffOutput:
                                     deviceUI.CommonDevice.IsOnline = common.IsOnline;
-                                    var row = rowLayout.GetChildren(0) as CategoryFunctionRow;
-                                    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;
-                                    var row2 = rowLayout.GetChildren(0) as CategoryFunctionForWinRow;
-                                    row2.SetStatu(deviceUI.CommonDevice.IsOnline == 1);
                                     break;
 
                                 case DeviceType.DimmableLight:
                                     deviceUI.CommonDevice.LastDateTime = DateTime.Now;
                                     deviceUI.CommonDevice.IsOnline = common.IsOnline;
-                                    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;
-                                    var row5 = rowLayout.GetChildren(0) as CategoryFunctionRow;
-                                    row5.SetStatu(deviceUI.CommonDevice.IsOnline == 1);
+                                    break;
+                            }
+                        }
+                    }
+                    catch (Exception ex)
+                    {
+                        System.Console.WriteLine($"鍒嗙被璁惧鐘舵��-Error:{ex.Message}");
+                    }
+                });
+            }
+            else if (typeTag == "IASInfoReport")
+            {
+                Application.RunOnMainThread(() =>
+                {
+                    try
+                    {
+                        for (int i = 0; deviceListScrolView != null && i < deviceListScrolView.ChildrenCount; i++)
+                        {
+                            var rowLayout = deviceListScrolView.GetChildren(i) as RowLayout;
+                            var deviceUI = rowLayout.Tag as DeviceUI;
+                            if (deviceUI == null || deviceUI.CommonDevice == null)
+                            {
+                                continue;
+                            }
+                            if (deviceUI.CommonDevice.DeviceAddr != common.DeviceAddr || deviceUI.CommonDevice.DeviceEpoint != common.DeviceEpoint)
+                            {
+                                continue;
+                            }
+                            switch (deviceUI.CommonDevice.Type)
+                            {
+                                case DeviceType.IASZone:
+                                    //寮�鍏冲姛鑳�
+                                    var ias = common as IASZone;
+                                    var iAS = deviceUI.CommonDevice as ZigBee.Device.IASZone;
+                                    iAS.iASInfo = ias.iASInfo;
+                                    var row = rowLayout.GetChildren(0) as CategoryFunctionRow;
+                                    row.IsSelected = iAS.iASInfo?.Alarm1 == 1;
+                                    row.SetStatuText(deviceUI.GetDeviceStatu());
+                                    iAS.LastDateTime = DateTime.Now;
                                     break;
                             }
                         }
@@ -803,7 +823,7 @@
             typeIdDic.Clear();
             foreach (var device in devList)
             {
-                var info = Common.LocalDevice.Current.GetNotHdlMyDeviceEnumInfo(new List<CommonDevice> { device.CommonDevice });
+                var info = Common.LocalDevice.Current.GetDeviceBelongEnumInfo(device.CommonDevice);
                 if (info.BeloneType == DeviceBeloneType.A骞叉帴鐐� || info.BeloneType == DeviceBeloneType.A涓户鍣�)
                 {
                     continue;
@@ -911,9 +931,9 @@
                 deviceListScrolView = new VerticalScrolViewLayout
                 {
                     X = Application.GetRealWidth(CommonFormResouce.X_Left),
-                    Y = Application.GetRealHeight(35+275),
+                    Y = Application.GetRealHeight(35+279),
                     Width = Application.GetRealWidth(1028),
-                    Height = Application.GetRealHeight(939),
+                    Height = Application.GetRealHeight(942),
                     BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
                 };
                 functionSceneBodyView.AddChidren(deviceListScrolView);
@@ -936,7 +956,7 @@
                     };
                     string imgPath = string.Empty;
                     string imgSeletedPath = string.Empty;
-                    Common.LocalDevice.Current.GetDeviceBeloneIcon(deviceType.Value, ref imgPath, ref imgSeletedPath);
+                    Common.LocalDevice.Current.GetDeviceObjectIcon(deviceType.Value, ref imgPath, ref imgSeletedPath);
                     functionTypeIMG.Init(imgPath, imgSeletedPath);
                     functionTypeIMG.SetTitle(deviceType.Key);
                     typeRowLayout.AddChidren(functionTypeIMG);
@@ -986,13 +1006,22 @@
                                 {
                                     if (e2)
                                     {
-                                        Shared.Common.Room.CurrentRoom.DeleteDevice(deviceUI.CommonDevice);
-                                        deviceListScrolView.RemoveViewByTag((delSender as Button).Tag);
-                                        sameTypeList.Remove(deviceUI);
-                                        if (sameTypeList.Count == 0)
+                                        if(curRoom.IsLove)
                                         {
-                                            RefreshBodyView();
+                                            Shared.Common.Room.CurrentRoom.DeleteDevice(deviceUI.FileName);
+                                            deviceListScrolView.RemoveViewByTag((delSender as Button).Tag);
+                                            sameTypeList.Remove(deviceUI);
                                         }
+                                        else
+                                        {
+                                            Shared.Common.Room.CurrentRoom.DeleteDevice(deviceUI.CommonDevice);
+                                            deviceListScrolView.RemoveViewByTag((delSender as Button).Tag);
+                                            sameTypeList.Remove(deviceUI);
+                                        }
+                                        //if (sameTypeList.Count == 0)
+                                        //{
+                                        //    RefreshBodyView();
+                                        //}
                                     }
                                 };
                             };
@@ -1043,9 +1072,9 @@
                                     var deviceRow = new CategoryFunctionRow(0, 35);
                                     deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                                     deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName);
-                                    deviceRow.SetOnLineStatu(light.IsOnline == 1);
+                                    //deviceRow.SetOnLineStatu(light.IsOnline == 1);
                                     deviceRow.SetStatuText(deviceUI.GetDeviceStatu());
-                                    deviceRow.SetStatu(light.OnOffStatus == 1);
+                                    deviceRow.IsSelected = light.OnOffStatus == 1;
                                     deviceTypeRowLayout.AddChidren(deviceRow);
 
                                     deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) =>
@@ -1164,8 +1193,8 @@
                                     var deviceRow = new CategoryFunctionRow(0, 35);
                                     deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                                     deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName);
-                                    deviceRow.SetOnLineStatu(airSwitch.IsOnline == 1);
-                                    deviceRow.SetStatu(airSwitch.OnOffStatus == 1);
+                                    //deviceRow.SetOnLineStatu(airSwitch.IsOnline == 1);
+                                    deviceRow.IsSelected = airSwitch.OnOffStatus == 1;
                                     deviceRow.SetStatuText(deviceUI.GetDeviceStatu());
                                     deviceTypeRowLayout.AddChidren(deviceRow);
 
@@ -1175,8 +1204,8 @@
                                         sendedControlCommand = false;
                                         zbGateway.ReportAction += UpdateDeviceControllStatu;
                                         AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
-
                                         (send2 as Button).IsSelected = !(send2 as Button).IsSelected;
+                                        deviceRow.IsSelected = (send2 as Button).IsSelected;
                                         if ((send2 as Button).IsSelected)
                                         {
                                             airSwitch.SwitchControl(1);
@@ -1267,9 +1296,9 @@
                                     var deviceRow = new CategoryFunctionRow(0, 35);
                                     deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                                     deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName);
-                                    deviceRow.SetOnLineStatu(dimmableLight.IsOnline == 1);
+                                    //deviceRow.SetOnLineStatu(dimmableLight.IsOnline == 1);
                                     deviceRow.SetStatuText(deviceUI.GetDeviceStatu());
-                                    deviceRow.SetStatu(dimmableLight.OnOffStatus == 1);
+                                    deviceRow.IsSelected = dimmableLight.OnOffStatus == 1;
                                     deviceTypeRowLayout.AddChidren(deviceRow);
 
                                     deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) =>
@@ -1278,8 +1307,8 @@
                                         sendedControlCommand = false;
                                         zbGateway.ReportAction += UpdateDeviceControllStatu;
                                         AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
-
                                         (send2 as Button).IsSelected = !(send2 as Button).IsSelected;
+                                        deviceRow.IsSelected = (send2 as Button).IsSelected;
                                         if ((send2 as Button).IsSelected)
                                         {
                                             dimmableLight.SwitchControl(1);
@@ -1372,9 +1401,9 @@
                                     var deviceRow = new CategoryFunctionRow(0, 35);
                                     deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                                     deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName);
-                                    deviceRow.SetOnLineStatu(ac.IsOnline == 1);
+                                    //deviceRow.SetOnLineStatu(ac.IsOnline == 1);
                                     deviceRow.SetStatuText(deviceUI.GetDeviceStatu());
-                                    deviceRow.SetStatu(ac.currentSystemMode != 1);
+                                    deviceRow.IsSelected = ac.currentSystemMode != 1;
                                     deviceTypeRowLayout.AddChidren(deviceRow);
 
                                     deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) =>
@@ -1385,6 +1414,7 @@
                                         AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
 
                                         (send2 as Button).IsSelected = !(send2 as Button).IsSelected;
+                                        deviceRow.IsSelected = (send2 as Button).IsSelected;
                                         if ((send2 as Button).IsSelected)
                                         {
                                             ac.Open();
@@ -1476,9 +1506,9 @@
                                     var deviceRow = new CategoryFunctionForWinRow(0, 35);
                                     deviceRow.Init(deviceUI);
                                     deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName);
-                                    deviceRow.SetOnLineStatu(rollerShade.IsOnline == 1);
+                                    //deviceRow.SetOnLineStatu(rollerShade.IsOnline == 1);
                                     deviceRow.SetStatuText(deviceUI.GetDeviceStatu());
-                                    deviceRow.SetStatu(rollerShade.WcdCurrentPositionLiftPercentage != 0);
+                                    deviceRow.IsSelected = rollerShade.WcdCurrentPositionLiftPercentage != 0;
                                     deviceRow.SetRollerShadeIcon(rollerShade.WcdType);
                                     deviceTypeRowLayout.AddChidren(deviceRow);
 
@@ -1541,7 +1571,7 @@
                                 var deviceRow = new CategoryFunctionRow(0, 35);
                                 deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                                 deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName);
-                                deviceRow.SetOnLineStatu(deviceUI.CommonDevice.IsOnline == 1);
+                                //deviceRow.SetOnLineStatu(deviceUI.CommonDevice.IsOnline == 1);
                                 deviceRow.SetStatuText(deviceUI.GetDeviceStatu());
                                 deviceRow.HideSwitchBtn(true);
                                 deviceTypeRowLayout.AddChidren(deviceRow);
@@ -1553,6 +1583,40 @@
                                     HomePage.Instance.PageIndex += 1;
                                     userDoorLockPage.Show();
                                 };
+
+                                var editBtn = new CommonForm.RowLayoutEditButton()
+                                {
+                                    Tag = deviceUI
+                                };
+                                var delBtn = new Device.CommonForm.RowLayoutDeleteButton()
+                                {
+                                    Tag = deviceUI
+                                };
+                                if (curRoom.IsSharedRoom == false)
+                                {
+                                    deviceTypeRowLayout.AddRightView(editBtn);
+                                    editBtn.MouseUpEventHandler += deviceDetailHandler;
+                                    deviceTypeRowLayout.AddRightView(delBtn);
+                                    delBtn.MouseUpEventHandler += delEvent;
+                                }
+                            }
+                            else if (deviceUI.CommonDevice.Type == DeviceType.IASZone)
+                            {
+                                var deviceTypeRowLayout = new RowLayout()
+                                {
+                                    Height = Application.GetRealHeight(129 + 35),
+                                    LineColor = ZigbeeColor.Current.GXCBackgroundColor,
+                                    Tag = deviceUI
+                                };
+                                deviceListScrolView.AddChidren(deviceTypeRowLayout);
+
+                                var deviceRow = new CategoryFunctionRow(0, 35);
+                                deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
+                                deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName);
+                                deviceRow.SetStatuText(deviceUI.GetDeviceStatu());
+                                deviceRow.IsSelected = (deviceUI.CommonDevice as IASZone).iASInfo?.Alarm1 == 1;
+                                deviceRow.HideSwitchBtn(true);
+                                deviceTypeRowLayout.AddChidren(deviceRow);
 
                                 var editBtn = new CommonForm.RowLayoutEditButton()
                                 {
@@ -1583,7 +1647,7 @@
                                 var deviceRow = new CategoryFunctionRow(0, 35);
                                 deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                                 deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName);
-                                deviceRow.SetOnLineStatu(deviceUI.CommonDevice.IsOnline == 1);
+                                //deviceRow.SetOnLineStatu(deviceUI.CommonDevice.IsOnline == 1);
                                 deviceRow.SetStatuText(deviceUI.GetDeviceStatu());
                                 deviceRow.HideSwitchBtn(true);
                                 deviceTypeRowLayout.AddChidren(deviceRow);
@@ -1638,39 +1702,27 @@
             };
             functionSceneAutoBodyView.AddChidren(functionSceneBodyView);
 
-            Button curBtn = new Button();
+            RoomButton curBtn = new RoomButton(0,0);
             foreach (var room in Common.Room.CurrentRoom.GetRoomsByCurrentFloorIdAppendLoveRoom())
             {
                 var row = new FrameLayout()
                 {
-                    Width = Application.GetRealWidth(187 + 50),
+                    Width = Application.GetRealWidth(255),
                     Height = Application.GetRealHeight(167)
                 };
                 roomFL.AddChidren(row);
 
-                var roomBtn = new Button()
-                {
-                    Width = Application.GetRealWidth(187),
-                    Height = Application.GetRealHeight(78),
-                    Radius = (uint)Application.GetRealHeight(78 / 2),
-                    Gravity = Gravity.Center,
-                    Text = room.Name,
-                    TextColor = ZigbeeColor.Current.GXCTextGrayColor,
-                    SelectedTextColor = ZigbeeColor.Current.GXCTextWhiteColor,
-                    BackgroundColor = ZigbeeColor.Current.GXCButtonUnSelectedColor3,
-                    SelectedBackgroundColor = ZigbeeColor.Current.GXCButtonSelectedColor,
-                    BorderColor = ZigbeeColor.Current.GXCBorderUnSelectedColor,
-                    BorderWidth = 1
-                };
+                RoomButton roomBtn = new RoomButton(0, 0);
+                roomBtn.Gravity = Gravity.Center;
+                roomBtn.Init();
+                roomBtn.SetTitle(room.Name);
                 row.AddChidren(roomBtn);
-                roomBtn.SetViewShadow(true,5);
 
                 if (room.IsLove)
                 {
                     roomBtn.IsSelected = true;
                     this.curRoom = room;
                     curBtn = roomBtn;
-
                     if(sceneBtn.IsSelected)
                     {
                         RefreshScene(room);
@@ -1679,17 +1731,16 @@
                     {
                         RefreshFunction(room);
                     }
-
                 }
-                roomBtn.MouseUpEventHandler += (sender, e) =>
+                roomBtn.ButtonClickEvent += (sender, e) =>
                 {
-                    if ((sender as Button) == curBtn)
+                    if (sender  == curBtn)
                     {
                         return;
                     }
-                    (sender as Button).IsSelected = true;
+                    sender.IsSelected = true;
                     curBtn.IsSelected = false;
-                    curBtn = sender as Button;
+                    curBtn = sender;
                     this.curRoom = room;
                     if (sceneBtn.IsSelected)
                     {
@@ -1720,8 +1771,8 @@
         /// <param name="room"></param>
         public void RefreshScene(Common.Room room)
         {
+            RefreshData(room);
             functionSceneBodyView.RemoveAll();
-            var sceneList = room.SceneUIList;
             if (sceneList.Count == 0)
             {
                 ShowNoSceneTip();
@@ -1844,8 +1895,7 @@
         /// </summary>
         private  void ShowAutotion()
         {
-
-            functionSceneAutoBodyView.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
+           // functionSceneAutoBodyView.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
            
             var bjFrameLayout = new FrameLayout
             {
@@ -1906,14 +1956,13 @@
             var logicScrolView = new VerticalRefreshLayout//VerticalScrolViewLayout
             {
                 Height = functionSceneAutoBodyView.Height - bjFrameLayout.Height - bjFrameLayout.Y - scenehorizontalScrol.Height - Application.GetRealHeight(30),
-                BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
+                //BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,/
                 X = Application.GetRealWidth(58),
-                //Radius = (uint)Application.GetRealHeight(50),
                 Y = scenehorizontalScrol.Bottom,
             };
             functionSceneAutoBodyView.AddChidren(logicScrolView);
             logicScrolView.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft);
-
+            bool no = false;
             recommendswitchBtn.MouseUpEventHandler += (sender, e) =>
             {
                 int Yheight = 0;
@@ -1921,6 +1970,7 @@
                 scenehorizontalScrol.RemoveAll();
                 if (recommendswitchBtn.IsSelected)
                 {
+                    no = true;
                     scenehorizontalScrol.Height = Application.GetRealHeight(246);
                     Yheight = 20;
                     for (int i = 1; i < 4; i++)
@@ -1996,30 +2046,31 @@
                 }
                 else
                 {
+                    no = false;
                     scenehorizontalScrol.Height = Application.GetRealHeight(0);
                     Yheight = 0;
                 }
                 logicScrolView.Y = scenehorizontalScrol.Bottom + Yheight;
                 logicScrolView.Height = functionSceneAutoBodyView.Height - bjFrameLayout.Height - bjFrameLayout.Y - scenehorizontalScrol.Height - Application.GetRealHeight(30) - Yheight;
-                Automationview(logicScrolView);
+                Automationview(logicScrolView,no);
             };
             logicScrolView.BeginHeaderRefreshingAction += () =>
             {
                 //閲嶆柊鍒锋柊logic鍒楄〃
                 Common.Logic.LogicList.Clear();
-                Read(logicScrolView);
+                Read(logicScrolView,no);
                 //鍏抽棴鍒锋柊View锛�
                 logicScrolView.EndHeaderRefreshing();
             };
            
-            Read(logicScrolView);
+            Read(logicScrolView,no);
 
         }
         /// <summary>
         /// 璇诲彇鑷姩鍖栧垪琛ㄦ暟鎹紱
         /// </summary>
         /// <param name="logicScrolView"></param>
-        private async void Read(VerticalRefreshLayout logicScrolView)
+        private async void Read(VerticalRefreshLayout logicScrolView,bool no)
         {
             CommonPage.Loading.Start();
             if (Common.Logic.LogicList.Count == 0)
@@ -2041,17 +2092,66 @@
                 }
             }
             //鑷姩鍖�
-            Automationview(logicScrolView);
+            Automationview(logicScrolView,no);
             CommonPage.Loading.Hide();
-
         }
         /// <summary>
         /// 鍔犺浇鑷姩鍖栧垪琛ㄧ晫闈�
         /// </summary>
         /// <param name="refresview">Refresview.</param>
-        private async void Automationview(VerticalRefreshLayout refresview)
+        private async void Automationview(VerticalRefreshLayout refresview,bool no)
         {
             refresview.RemoveAll();
+            if (Common.Logic.LogicList.Count == 0&&no==false)
+            {
+                //灏辨槸涓轰簡鏄剧ず寮曞娣诲姞鍥炬爣;
+                refresview.BackgroundColor = 0x00000000;
+                var noFrameLayout = new FrameLayout
+                {
+                    Height = Application.GetRealHeight(434+ 200+32+160),
+                    //BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor,
+                };
+                refresview.AddChidren(noFrameLayout);
+
+
+                var noIconBtn = new Button
+                {
+                    Y=Application.GetRealHeight(160),
+                    Width = Application.GetMinRealAverage(756),
+                    Height = Application.GetMinRealAverage(434),
+                    UnSelectedImagePath = "Item/NoFunction.png",
+                    X = Application.GetRealWidth(104),
+                };
+                noFrameLayout.AddChidren(noIconBtn);
+
+                var noTextBtn = new Button()
+                {
+                    Y = noIconBtn.Bottom,
+                    Height = Application.GetRealHeight(200)+Application.GetRealHeight(32),
+                    Width = Application.GetRealWidth(700),
+                    //Gravity = Gravity.CenterHorizontal,
+                    Text = Language.StringByID(MyInternationalizationString.automationaddtext).Replace("{\\r\\n}", "\r\n"),
+                    TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
+                    TextAlignment = TextAlignment.Center,
+                    IsMoreLines = true,
+                    X = Application.GetRealWidth(190-58),
+                };
+                noFrameLayout.AddChidren(noTextBtn);
+
+            }
+            else
+            {
+
+                if (Common.Logic.LogicList.Count == 0 && no == true)
+                {
+                    ///鏀瑰彉婊戝姩view鐨勯鑹诧紱
+                    refresview.BackgroundColor = 0x00000000;
+                }
+                else
+                {
+                    refresview.BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor;
+                }
+            }
             foreach (var logic in Common.Logic.LogicList)
             {
 
@@ -2136,7 +2236,7 @@
                     var logicCommunalPage = new Logic.LogicCommunalPage();
                     HomePage.Instance.AddChidren(logicCommunalPage);
                     HomePage.Instance.PageIndex += 1;
-                    logicCommunalPage.Show(() => { logicnameBtn.Text = logic.LogicName; Automationview(refresview); });
+                    logicCommunalPage.Show(() => { logicnameBtn.Text = logic.LogicName; Automationview(refresview,no); });
 
                 };
 
@@ -2158,7 +2258,7 @@
                         if (e1)
                         {
                             Common.Logic.LogicList.Remove(logic);
-                            Automationview(refresview);
+                            Automationview(refresview,no);
                             Logic.Send.DelLogic(logic.LogicId);
                         }
                     };
diff --git a/ZigbeeApp/Shared/Phone/Device/Category/CategoryAddScene.cs b/ZigbeeApp/Shared/Phone/Device/Category/CategoryAddScene.cs
index 8a43ba6..2c2c8f8 100755
--- a/ZigbeeApp/Shared/Phone/Device/Category/CategoryAddScene.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Category/CategoryAddScene.cs
@@ -87,6 +87,13 @@
         /// </summary>
         public int OldIconPathType;
 
+        /// <summary>
+        /// selectedTimeAction
+        /// </summary>
+        public Action<SceneTargetDeviceUI> selectedAction;
+
+
+
         #endregion
 
         /// <summary>
@@ -193,13 +200,8 @@
                                 return;
                             }
 
-                            var deviceView = new SelectDevice();
-                            UserView.HomePage.Instance.AddChidren(deviceView);
-                            UserView.HomePage.Instance.PageIndex += 1;
-                            deviceView.sceneTargetDevice = targetDevice;
-                            deviceView.deviceUI = targetDevice.DeviceUI;
-                            deviceView.Show();
-                            deviceView.selectedAction = (selectedDevice) =>
+                            ShowSelectAction(targetDevice.DeviceUI, targetDevice);
+                            selectedAction = (selectedDevice) =>
                             {
                                 var targetDeviceUI = sceneTargetDevicesList.Find((obj) => obj.SceneTargetDeviceUIID == selectedDevice.SceneTargetDeviceUIID);
                                 if (targetDeviceUI != null)
@@ -252,8 +254,8 @@
                         }
                     }
                 }
-
-                if (sceneTargetDevicesList.Count > 2)
+                
+                if (sceneTargetDevicesList.Count > 1)
                 {
                     var targetRowLayout = new RowLayout()
                     {
@@ -357,7 +359,8 @@
                 TextID = R.MyInternationalizationString.EditInfo,
                 TextColor = ZigbeeColor.Current.GXCTextDeepBlackColor,
                 TextAlignment = TextAlignment.CenterLeft,
-                TextSize = 14
+                TextSize = 15,
+                IsBold=true
             };
             infoFL.AddChidren(infoEdit);
 
@@ -404,7 +407,8 @@
                 TextAlignment = TextAlignment.CenterLeft,
                 TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                 TextID = R.MyInternationalizationString.AddScentTargetAction,
-                Gravity = Gravity.CenterVertical
+                Gravity = Gravity.CenterVertical,
+                TextSize=15
             };
             addTargetFL.AddChidren(target);
 
@@ -434,9 +438,10 @@
             targetFL.AddChidren(TargetListScrolView);
 
             confirmBtn = new CommonForm.CompleteButton(1656, 907, 127);
+            confirmBtn.TextID = R.MyInternationalizationString.Next;
             AddChidren(confirmBtn);
 
-            if(isModify)
+            if (isModify)
             {
                 IconPathType = modifySceneUI.IconPathType;
                 OldIconPathType = modifySceneUI.IconPathType;
@@ -444,7 +449,7 @@
                 {
                     OldBackgroundImagePath = modifySceneUI.IconPath;
                 }
-                if (modifySceneUI.IconPathType==0)
+                if (modifySceneUI.IconPathType == 0)
                 {
                     backGround.ImagePath = modifySceneUI.IconPath;
                 }
@@ -453,7 +458,14 @@
                     backGround.ImagePath = System.IO.Path.Combine(Config.Instance.FullPath, modifySceneUI.IconPath);
                 }
                 nameRow.SetTitle(modifySceneUI.Name);
-                zoneRow.SetTitle($"{Config.Instance.Home.GetFloorNameById(modifyRoom.FloorId)},{modifyRoom.Name}");
+                if (Config.Instance.Home.FloorDics.Count == 0)
+                {
+                    zoneRow.SetTitle($"{modifyRoom.Name}");
+                }
+                else
+                {
+                    zoneRow.SetTitle($"{Config.Instance.Home.GetFloorNameById(modifyRoom.FloorId)},{modifyRoom.Name}");
+                }
                 curRoom = modifyRoom;
                 sceneTargetDevicesList.AddRange(modifySceneTargetDevicesList);
             }
@@ -484,24 +496,25 @@
                     Height = Application.GetRealHeight(450),
                     Width = Application.GetRealWidth(selectRow_Width),
                     Gravity = Gravity.CenterHorizontal,
-                    Radius = (uint)Application.GetRealHeight(17),
+                    Radius = (uint)Application.GetRealHeight(35),
                     BackgroundColor = ZigbeeColor.Current.GXCTextWhiteColor
                 };
                 selectFL.AddChidren(itemFL);
-                itemFL.Animate = Animate.DownToUp;
+                //itemFL.Animate = Animate.DownToUp;
 
                 var selectLocalPicture = new Button()
                 {
                     Height = Application.GetRealHeight(selectRow_Height) - 1,
                     TextID = R.MyInternationalizationString.LocalPicture,
-                    TextColor = ZigbeeColor.Current.GXCTextSelectedColor4
+                    TextColor = ZigbeeColor.Current.GXCTextSelectedColor4,
+                    TextSize=17
                 };
                 itemFL.AddChidren(selectLocalPicture);
                 var selectLocalLine = new Button()
                 {
                     Y = selectLocalPicture.Bottom,
                     Height = 1,
-                    BackgroundColor = ZigbeeColor.Current.GXCLineColor
+                    BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor2
                 };
                 itemFL.AddChidren(selectLocalLine);
 
@@ -510,14 +523,15 @@
                     Y = selectLocalLine.Bottom,
                     Height = Application.GetRealHeight(selectRow_Height) - 1,
                     TextID = R.MyInternationalizationString.Photograph,
-                    TextColor = ZigbeeColor.Current.GXCTextSelectedColor4
+                    TextColor = ZigbeeColor.Current.GXCTextSelectedColor4,
+                    TextSize=17
                 };
                 itemFL.AddChidren(selectPhotographBtn);
                 var selectPhotographLine = new Button()
                 {
                     Y = selectPhotographBtn.Bottom,
                     Height = 1,
-                    BackgroundColor = ZigbeeColor.Current.GXCLineColor,
+                    BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor2,
                 };
                 itemFL.AddChidren(selectPhotographLine);
 
@@ -526,7 +540,8 @@
                     Y = selectPhotographLine.Bottom,
                     Height = Application.GetRealHeight(selectRow_Height) - 1,
                     TextID = R.MyInternationalizationString.MyAblums,
-                    TextColor = ZigbeeColor.Current.GXCTextSelectedColor4
+                    TextColor = ZigbeeColor.Current.GXCTextSelectedColor4,
+                    TextSize=17
                 };
                 itemFL.AddChidren(selectAblumsBtn);
 
@@ -539,7 +554,8 @@
                     TextID = R.MyInternationalizationString.Cancel,
                     TextColor = ZigbeeColor.Current.GXCTextSelectedColor4,
                     BackgroundColor = ZigbeeColor.Current.GXCTextWhiteColor,
-                    Radius = (uint)Application.GetRealHeight(17)
+                    Radius = (uint)Application.GetRealHeight(35),
+                    TextSize=17
                 };
                 selectFL.AddChidren(cancelBtn);
 
@@ -565,10 +581,6 @@
                     //閫氳繃鐩告満鎷嶇収瑁佸壀
                     CropImage.TakePicture((imagePath) =>
                     {
-                        if (string.IsNullOrEmpty(imagePath) == true)
-                        {
-                            return;
-                        }
                         if (isModify)
                         {
                             if (IconPathType != 0)
@@ -593,10 +605,6 @@
                     //浠庣浉鍐岄�夋嫨鍥剧墖瑁佸壀
                     CropImage.SelectPicture((imagePath) =>
                     {
-                        if (string.IsNullOrEmpty(imagePath) == true)
-                        {
-                            return;
-                        }
                         if (isModify)
                         {
                             if (IconPathType != 0)
@@ -637,10 +645,11 @@
                 {
                     foreach (var floor in Config.Instance.Home.FloorDics)
                     {
-                        floorIds.Add(floor.Key);
-                        floorNames.Add(floor.Value);
                         if (Common.Room.CurrentRoom.GetRoomsByFloorId(floor.Key).Count > 0)
                         {
+                            floorIds.Add(floor.Key);
+                            floorNames.Add(floor.Value);
+
                             roomNames.Add(Common.Room.CurrentRoom.GetRoomNamesByFloorId(floor.Key));
                             rooms.Add(Common.Room.CurrentRoom.GetRoomsByFloorId(floor.Key));
                         }
@@ -708,24 +717,25 @@
                     Height = Application.GetRealHeight(450),
                     Width = Application.GetRealWidth(selectRow_Width),
                     Gravity=Gravity.CenterHorizontal,
-                    Radius = (uint)Application.GetRealHeight(17),
+                    Radius = (uint)Application.GetRealHeight(35),
                     BackgroundColor = ZigbeeColor.Current.GXCTextWhiteColor
                 };
                 selectFL.AddChidren(itemFL);
-                itemFL.Animate = Animate.DownToUp;
+                //itemFL.Animate = Animate.DownToUp;
 
                 var selectedFunctionBtn = new Button()
                 {
                     Height = Application.GetRealHeight(selectRow_Height) - 1,
                     TextID = R.MyInternationalizationString.Function,
-                    TextColor = ZigbeeColor.Current.GXCTextSelectedColor4
+                    TextColor = ZigbeeColor.Current.GXCTextSelectedColor4,
+                    TextSize=17
                 };
                 itemFL.AddChidren(selectedFunctionBtn);
                 var selectedFunctionLine = new Button()
                 {
                     Y = selectedFunctionBtn.Bottom,
                     Height = 1,
-                    BackgroundColor = ZigbeeColor.Current.GXCLineColor
+                    BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor2
                 };
                 itemFL.AddChidren(selectedFunctionLine);
 
@@ -734,14 +744,15 @@
                     Y = selectedFunctionLine.Bottom,
                     Height = Application.GetRealHeight(selectRow_Height) - 1,
                     TextID = R.MyInternationalizationString.Scence,
-                    TextColor = ZigbeeColor.Current.GXCTextSelectedColor4
+                    TextColor = ZigbeeColor.Current.GXCTextSelectedColor4,
+                    TextSize=17
                 };
                 itemFL.AddChidren(selectedSceneBtn);
                 var selectedSceneLine = new Button()
                 {
                     Y = selectedSceneBtn.Bottom,
                     Height = 1,
-                    BackgroundColor = ZigbeeColor.Current.GXCLineColor,
+                    BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor2,
                 };
                 itemFL.AddChidren(selectedSceneLine);
 
@@ -750,7 +761,8 @@
                     Y = selectedSceneLine.Bottom,
                     Height = Application.GetRealHeight(selectRow_Height) - 1,
                     TextID = R.MyInternationalizationString.Delay,
-                    TextColor = ZigbeeColor.Current.GXCTextSelectedColor4
+                    TextColor = ZigbeeColor.Current.GXCTextSelectedColor4,
+                    TextSize=17
                 };
                 itemFL.AddChidren(selectedTimerBtn);
 
@@ -764,7 +776,8 @@
                     TextID = R.MyInternationalizationString.Cancel,
                     TextColor = ZigbeeColor.Current.GXCTextSelectedColor4,
                     BackgroundColor = ZigbeeColor.Current.GXCTextWhiteColor,
-                    Radius = (uint)Application.GetRealHeight(17)
+                    Radius = (uint)Application.GetRealHeight(35),
+                    TextSize=17
                 };
                 selectFL.AddChidren(cancelBtn);
 
@@ -1135,5 +1148,766 @@
         }
 
         #endregion
+
+        #region 缂栬緫璁惧____________________________________
+
+        /// <summary>
+        /// ShowSelectAction
+        /// </summary>
+        /// <param name="device"></param>
+        private void ShowSelectAction(DeviceUI device, SceneTargetDeviceUI sceneTarget)
+        {
+            var dialog = new FrameLayout()
+            {
+                BackgroundColor = ZigbeeColor.Current.GXCDailogBackGroundColor
+            };
+            AddChidren(dialog);
+
+            dialog.MouseUpEventHandler += (sender, e) =>
+            {
+                dialog.RemoveFromParent();
+            };
+
+            if (device.CommonDevice.Type == ZigBee.Device.DeviceType.OnOffOutput)
+            {
+                SelectOnoffOutput(dialog, device, sceneTarget);
+            }
+            else if (device.CommonDevice.Type == ZigBee.Device.DeviceType.AirSwitch)
+            {
+                SelectOnoffOutput(dialog, device, sceneTarget);
+            }
+            else if (device.CommonDevice.Type == ZigBee.Device.DeviceType.DimmableLight)
+            {
+                SelectDimmableLight(dialog, device, sceneTarget);
+            }
+            else if (device.CommonDevice.Type == ZigBee.Device.DeviceType.WindowCoveringDevice)
+            {
+                SelectWindowCoveringDevice(dialog, device, sceneTarget);
+            }
+            else if (device.CommonDevice.Type == ZigBee.Device.DeviceType.Thermostat)
+            {
+                SelectThermostat(dialog, device, sceneTarget);
+            }
+        }
+
+        /// <summary>
+        /// 鐏厜
+        /// </summary>
+        /// <param name="dialog"></param>
+        /// <param name="device"></param>
+        /// <param name="sceneTarget"></param>
+        private void SelectOnoffOutput(FrameLayout dialog, DeviceUI device, SceneTargetDeviceUI sceneTarget)
+        {
+            var selectFL = new FrameLayout
+            {
+                Y = Application.GetRealHeight(1391),
+                Height = Application.GetRealHeight(530),
+            };
+            dialog.AddChidren(selectFL);
+            //selectFL.Animate = Animate.DownToUp;
+
+            var titleBG = new FrameLayout
+            {
+                Height = Application.GetRealHeight(138 * 2),
+                Radius = (uint)Application.GetRealHeight(58),
+                BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
+            };
+            selectFL.AddChidren(titleBG);
+
+            var titleFL = new FrameLayout
+            {
+                Height = Application.GetRealHeight(138),
+            };
+            selectFL.AddChidren(titleFL);
+
+            var line = new Button
+            {
+                Y = titleFL.Height - 1,
+                Height = 1,
+                BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor2
+            };
+            titleFL.AddChidren(line);
+
+            var cancleBtn = new Button
+            {
+                X = Application.GetRealWidth(80),
+                Width = Application.GetRealWidth(200),
+                TextColor = ZigbeeColor.Current.GXCTextGrayColor,
+                TextSize = 14,
+                TextAlignment = TextAlignment.CenterLeft,
+                TextID = R.MyInternationalizationString.Cancel
+            };
+            titleFL.AddChidren(cancleBtn);
+
+            var deviceName = new Button
+            {
+                Width = Application.GetRealWidth(600),
+                Gravity = Gravity.CenterHorizontal,
+                TextColor = ZigbeeColor.Current.GXCTextBlackColor,
+                TextSize = 16,
+                Text = device.CommonDevice.DeviceEpointName
+            };
+            titleFL.AddChidren(deviceName);
+
+            var comfrimBtn = new Button
+            {
+                X = Application.GetRealWidth(800),
+                Width = Application.GetRealWidth(200),
+                TextColor = ZigbeeColor.Current.GXCTextSelectedColor2,
+                TextSize = 14,
+                TextAlignment = TextAlignment.CenterRight,
+                TextID = R.MyInternationalizationString.Complete
+            };
+            titleFL.AddChidren(comfrimBtn);
+
+            var itemFL = new FrameLayout
+            {
+                Y = titleFL.Bottom,
+                Height = Application.GetRealHeight(392),
+                BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
+            };
+            selectFL.AddChidren(itemFL);
+
+            var open = new SelectSceneStatuRow(0, 60);
+            itemFL.AddChidren(open);
+            open.Init();
+            open.SetTitle(R.MyInternationalizationString.Open);
+            open.IsSelected = true;
+
+
+            var shut = new SelectSceneStatuRow(0, 60 + 127 + 30);
+            itemFL.AddChidren(shut);
+            shut.Init();
+            shut.hideLine(true);
+            shut.SetTitle(R.MyInternationalizationString.Shut);
+
+            open.ClickButton.MouseUpEventHandler += (sender, e) =>
+            {
+                open.IsSelected = true;
+                shut.IsSelected = false;
+            };
+
+            shut.ClickButton.MouseUpEventHandler += (sender, e) =>
+            {
+                open.IsSelected = false;
+                shut.IsSelected = true;
+            };
+
+            cancleBtn.MouseUpEventHandler = (sender, e) =>
+            {
+                dialog.RemoveAll();
+                dialog.RemoveFromParent();
+            };
+
+            if (sceneTarget.TaskList.Count > 0)
+            {
+                if (sceneTarget.TaskList[0].Data1 == 1)
+                {
+                    open.IsSelected = true;
+                    shut.IsSelected = false;
+                }
+                else
+                {
+                    open.IsSelected = false;
+                    shut.IsSelected = true;
+                }
+            }
+
+            comfrimBtn.MouseUpEventHandler = (sender, e) =>
+            {
+                var taskList = new List<ZigBee.Device.Scene.TaskListInfo> { };
+                int taskType = 1;
+                int data1 = 0;
+                int data2 = 0;
+
+                if (open.IsSelected)
+                {
+                    //寮�
+                    data1 = 1;
+                    data2 = 0;
+                }
+                else
+                {
+                    //鍏�
+                    data1 = 0;
+                    data2 = 0;
+                }
+                var taskInfo = new ZigBee.Device.Scene.TaskListInfo
+                {
+                    TaskType = taskType,
+                    Data1 = data1,
+                    Data2 = data2
+                };
+                taskList.Add(taskInfo);
+
+                sceneTarget.TaskList = taskList;
+                sceneTarget.DeviceUI = device;
+                selectedAction?.Invoke(sceneTarget);
+                dialog.RemoveFromParent();
+            };
+        }
+        /// <summary>
+        /// 绐楀笜
+        /// </summary>
+        /// <param name="dialog"></param>
+        /// <param name="device"></param>
+        /// <param name="sceneTarget"></param>
+        private void SelectWindowCoveringDevice(FrameLayout dialog, DeviceUI device, SceneTargetDeviceUI sceneTarget)
+        {
+            var selectFL = new FrameLayout
+            {
+                Y = Application.GetRealHeight(1169),
+                Height = Application.GetRealHeight(752),
+            };
+            dialog.AddChidren(selectFL);
+            //selectFL.Animate = Animate.DownToUp;
+
+            var titleBG = new FrameLayout
+            {
+                Height = Application.GetRealHeight(138 * 2),
+                Radius = (uint)Application.GetRealHeight(58),
+                BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
+            };
+            selectFL.AddChidren(titleBG);
+
+            var titleFL = new FrameLayout
+            {
+                Height = Application.GetRealHeight(138),
+            };
+            selectFL.AddChidren(titleFL);
+
+            var line = new Button
+            {
+                Y = titleFL.Height - 1,
+                Height = 1,
+                BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor2
+            };
+            titleFL.AddChidren(line);
+
+            var cancleBtn = new Button
+            {
+                X = Application.GetRealWidth(80),
+                Width = Application.GetRealWidth(200),
+                TextColor = ZigbeeColor.Current.GXCTextGrayColor,
+                TextSize = 14,
+                TextAlignment = TextAlignment.CenterLeft,
+                TextID = R.MyInternationalizationString.Cancel
+            };
+            titleFL.AddChidren(cancleBtn);
+
+            var deviceName = new Button
+            {
+                Width = Application.GetRealWidth(600),
+                Gravity = Gravity.CenterHorizontal,
+                TextColor = ZigbeeColor.Current.GXCTextBlackColor,
+                TextSize = 16,
+                Text = device.CommonDevice.DeviceEpointName
+            };
+            titleFL.AddChidren(deviceName);
+
+            var comfrimBtn = new Button
+            {
+                X = Application.GetRealWidth(800),
+                Width = Application.GetRealWidth(200),
+                TextColor = ZigbeeColor.Current.GXCTextSelectedColor2,
+                TextSize = 14,
+                TextAlignment = TextAlignment.CenterRight,
+                TextID = R.MyInternationalizationString.Complete
+            };
+            titleFL.AddChidren(comfrimBtn);
+
+            var itemFL = new FrameLayout
+            {
+                Y = titleFL.Bottom,
+                Height = Application.GetRealHeight(613),
+                BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
+            };
+            selectFL.AddChidren(itemFL);
+
+            var open = new SelectDeviceWithSeekBarRow(0, 60);
+            itemFL.AddChidren(open);
+            open.Init();
+            open.SetTitle(R.MyInternationalizationString.Open);
+            open.IsSelected = true;
+
+            var shut = new SelectSceneStatuRow(0, 60 + 348 + 30);
+            itemFL.AddChidren(shut);
+            shut.Init();
+            shut.hideLine(true);
+            shut.SetTitle(R.MyInternationalizationString.Shut);
+
+            open.ClickButton.MouseUpEventHandler += (sender, e) =>
+            {
+                open.IsSelected = true;
+                shut.IsSelected = false;
+            };
+
+            shut.ClickButton.MouseUpEventHandler += (sender, e) =>
+            {
+                open.IsSelected = false;
+                shut.IsSelected = true;
+            };
+
+            cancleBtn.MouseUpEventHandler = (sender, e) =>
+            {
+                dialog.RemoveAll();
+                dialog.RemoveFromParent();
+            };
+
+            open.SeekBar.ProgressChanged += (sender, e) =>
+            {
+                open.IsSelected = true;
+                shut.IsSelected = false;
+                open.SetSeekBarTitle();
+            };
+
+            if (sceneTarget.TaskList.Count > 0)
+            {
+                if (sceneTarget.TaskList[0].Data1 == 1)
+                {
+                    open.IsSelected = false;
+                    shut.IsSelected = true;
+                }
+                else
+                {
+                    open.IsSelected = true;
+                    shut.IsSelected = false;
+                    open.SetProgress(sceneTarget.TaskList[0].Data2);
+                }
+            }
+
+            comfrimBtn.MouseUpEventHandler = (sender, e) =>
+            {
+                var taskList = new List<ZigBee.Device.Scene.TaskListInfo> { };
+
+                int taskType = 6;
+                int data1 = 0;
+                int data2 = 0;
+
+                if (shut.IsSelected)
+                {
+                    //鍏�
+                    data1 = 1;
+                    data2 = 0;
+                }
+                else
+                {
+                    //鐧惧垎姣�
+                    data1 = 5;
+                    data2 = open.SeekBar.Progress;
+                }
+
+                var taskInfo = new ZigBee.Device.Scene.TaskListInfo
+                {
+                    TaskType = taskType,
+                    Data1 = data1,
+                    Data2 = data2
+                };
+                taskList.Add(taskInfo);
+
+                sceneTarget.TaskList = taskList;
+                sceneTarget.DeviceUI = device;
+                selectedAction?.Invoke(sceneTarget);
+                dialog.RemoveFromParent();
+            };
+        }
+        /// <summary>
+        /// 璋冨厜鐏�
+        /// </summary>
+        /// <param name="dialog"></param>
+        /// <param name="device"></param>
+        /// <param name="sceneTarget"></param>
+        private void SelectDimmableLight(FrameLayout dialog, DeviceUI device, SceneTargetDeviceUI sceneTarget)
+        {
+            var selectFL = new FrameLayout
+            {
+                Y = Application.GetRealHeight(1169),
+                Height = Application.GetRealHeight(752),
+            };
+            dialog.AddChidren(selectFL);
+            //selectFL.Animate = Animate.DownToUp;
+
+            var titleBG = new FrameLayout
+            {
+                Height = Application.GetRealHeight(138 * 2),
+                Radius = (uint)Application.GetRealHeight(58),
+                BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
+            };
+            selectFL.AddChidren(titleBG);
+
+            var titleFL = new FrameLayout
+            {
+                Height = Application.GetRealHeight(138),
+            };
+            selectFL.AddChidren(titleFL);
+
+            var line = new Button
+            {
+                Y = titleFL.Height - 1,
+                Height = 1,
+                BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor2
+            };
+            titleFL.AddChidren(line);
+
+            var cancleBtn = new Button
+            {
+                X = Application.GetRealWidth(80),
+                Width = Application.GetRealWidth(200),
+                TextColor = ZigbeeColor.Current.GXCTextGrayColor,
+                TextSize = 14,
+                TextAlignment = TextAlignment.CenterLeft,
+                TextID = R.MyInternationalizationString.Cancel
+            };
+            titleFL.AddChidren(cancleBtn);
+
+            var deviceName = new Button
+            {
+                Width = Application.GetRealWidth(600),
+                Gravity = Gravity.CenterHorizontal,
+                TextColor = ZigbeeColor.Current.GXCTextBlackColor,
+                TextSize = 16,
+                TextAlignment = TextAlignment.CenterLeft,
+                Text = device.CommonDevice.DeviceEpointName
+            };
+            titleFL.AddChidren(deviceName);
+
+            var comfrimBtn = new Button
+            {
+                X = Application.GetRealWidth(800),
+                Width = Application.GetRealWidth(200),
+                TextColor = ZigbeeColor.Current.GXCTextSelectedColor2,
+                TextSize = 14,
+                TextAlignment = TextAlignment.CenterRight,
+                TextID = R.MyInternationalizationString.Complete
+            };
+            titleFL.AddChidren(comfrimBtn);
+
+            var itemFL = new FrameLayout
+            {
+                Y = titleFL.Bottom,
+                Height = Application.GetRealHeight(613),
+                BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
+            };
+            selectFL.AddChidren(itemFL);
+
+            var open = new SelectDeviceWithSeekBarRow(0, 60);
+            itemFL.AddChidren(open);
+            open.Init(254);
+            open.SetTitle(R.MyInternationalizationString.Open);
+            open.IsSelected = true;
+
+            var shut = new SelectSceneStatuRow(0, 60 + 348 + 30);
+            itemFL.AddChidren(shut);
+            shut.Init();
+            shut.hideLine(true);
+            shut.SetTitle(R.MyInternationalizationString.Shut);
+
+            open.ClickButton.MouseUpEventHandler += (sender, e) =>
+            {
+                open.IsSelected = true;
+                shut.IsSelected = false;
+            };
+
+            shut.ClickButton.MouseUpEventHandler += (sender, e) =>
+            {
+                open.IsSelected = false;
+                shut.IsSelected = true;
+            };
+
+            cancleBtn.MouseUpEventHandler = (sender, e) =>
+            {
+                dialog.RemoveAll();
+                dialog.RemoveFromParent();
+            };
+
+            open.SeekBar.ProgressChanged += (sender, e) =>
+            {
+                open.IsSelected = true;
+                shut.IsSelected = false;
+                open.SetSeekBarTitle();
+            };
+
+            if (sceneTarget.TaskList.Count > 0)
+            {
+                if (sceneTarget.TaskList[0].Data1 == 0)
+                {
+                    open.IsSelected = false;
+                    shut.IsSelected = true;
+                }
+                else
+                {
+                    open.IsSelected = true;
+                    shut.IsSelected = false;
+                    open.SetProgress(sceneTarget.TaskList[0].Data1);
+                }
+            }
+
+            comfrimBtn.MouseUpEventHandler = (sender, e) =>
+            {
+                var taskList = new List<ZigBee.Device.Scene.TaskListInfo> { };
+
+                int taskType = 3;
+                int data1 = 0;
+                int data2 = 0;
+
+                if (shut.IsSelected)
+                {
+                    //鍏�
+                    data1 = 0;
+                    data2 = 0;
+                }
+                else
+                {
+                    //鐧惧垎姣�
+                    data1 = open.SeekBar.Progress;
+                    data2 = 0;
+                }
+
+                var taskInfo = new ZigBee.Device.Scene.TaskListInfo
+                {
+                    TaskType = taskType,
+                    Data1 = data1,
+                    Data2 = data2
+                };
+                taskList.Add(taskInfo);
+
+                sceneTarget.TaskList = taskList;
+                sceneTarget.DeviceUI = device;
+                selectedAction?.Invoke(sceneTarget);
+                dialog.RemoveFromParent();
+            };
+        }
+        /// <summary>
+        /// 绌鸿皟
+        /// </summary>
+        /// <param name="dialog"></param>
+        /// <param name="device"></param>
+        /// <param name="sceneTarget"></param>
+        private void SelectThermostat(FrameLayout dialog, DeviceUI device, SceneTargetDeviceUI sceneTarget)
+        {
+        /// 娓╁害
+        int tempId=0;
+        /// 妯″紡
+        int modelId=0;
+        /// 椋庨��
+        int fanid=0;
+
+            var selectFL = new FrameLayout
+            {
+                Y = Application.GetRealHeight(815),
+                Height = Application.GetRealHeight(1106),
+            };
+            dialog.AddChidren(selectFL);
+            //selectFL.Animate = Animate.DownToUp;
+
+            var titleBG = new FrameLayout
+            {
+                Height = Application.GetRealHeight(138 * 2),
+                Radius = (uint)Application.GetRealHeight(58),
+                BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
+            };
+            selectFL.AddChidren(titleBG);
+
+            var titleFL = new FrameLayout
+            {
+                Height = Application.GetRealHeight(138),
+            };
+            selectFL.AddChidren(titleFL);
+
+            var line = new Button
+            {
+                Y = titleFL.Height - 1,
+                Height = 1,
+                BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor2
+            };
+            titleFL.AddChidren(line);
+
+            var cancleBtn = new Button
+            {
+                X = Application.GetRealWidth(80),
+                Width = Application.GetRealWidth(200),
+                TextColor = ZigbeeColor.Current.GXCTextGrayColor,
+                TextSize = 14,
+                TextAlignment = TextAlignment.CenterLeft,
+                TextID = R.MyInternationalizationString.Cancel
+            };
+            titleFL.AddChidren(cancleBtn);
+
+            var deviceName = new Button
+            {
+                Width = Application.GetRealWidth(600),
+                Gravity = Gravity.CenterHorizontal,
+                TextColor = ZigbeeColor.Current.GXCTextBlackColor,
+                TextSize = 16,
+                TextAlignment = TextAlignment.CenterLeft,
+                Text = device.CommonDevice.DeviceEpointName
+            };
+            titleFL.AddChidren(deviceName);
+
+            var comfrimBtn = new Button
+            {
+                X = Application.GetRealWidth(800),
+                Width = Application.GetRealWidth(200),
+                TextColor = ZigbeeColor.Current.GXCTextSelectedColor2,
+                TextSize = 14,
+                TextAlignment = TextAlignment.CenterRight,
+                TextID = R.MyInternationalizationString.Complete
+            };
+            titleFL.AddChidren(comfrimBtn);
+
+            var itemFL = new FrameLayout
+            {
+                Y = titleFL.Bottom,
+                Height = Application.GetRealHeight(968),
+                BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
+            };
+            selectFL.AddChidren(itemFL);
+
+            var open = new SelectDeviceWithPickViewRow(0, 60);
+            itemFL.AddChidren(open);
+            open.Init();
+            open.SetTitle(R.MyInternationalizationString.Open);
+            open.IsSelected = true;
+
+            open.pickerView.OnSelectChangeEvent = (l1, l2, l3) =>
+            {
+                tempId = l1;
+                modelId = l2;
+                fanid = l3;
+            };
+
+            var shut = new SelectSceneStatuRow(0, 60 + 703 + 30);
+            itemFL.AddChidren(shut);
+            shut.Init();
+            shut.hideLine(true);
+            shut.SetTitle(R.MyInternationalizationString.Shut);
+
+            open.ClickButton.MouseUpEventHandler += (sender, e) =>
+            {
+                open.IsSelected = true;
+                shut.IsSelected = false;
+            };
+
+            shut.ClickButton.MouseUpEventHandler += (sender, e) =>
+            {
+                open.IsSelected = false;
+                shut.IsSelected = true;
+            };
+
+            cancleBtn.MouseUpEventHandler = (sender, e) =>
+            {
+                dialog.RemoveAll();
+                dialog.RemoveFromParent();
+            };
+
+            if (sceneTarget.TaskList.Count > 0)
+            {
+                if (sceneTarget.TaskList.Count == 1)
+                {
+                    open.IsSelected = false;
+                    shut.IsSelected = true;
+                }
+                else
+                {
+                    open.IsSelected = true;
+                    shut.IsSelected = false;
+
+                    for (int i = 0; i < sceneTarget.TaskList.Count; i++)
+                    {
+                        var tasklist = sceneTarget.TaskList[i];
+                        if (tasklist.Data1 == 6)
+                        {
+                            fanid = open.fanList.IndexOf(tasklist.Data2);
+                        }
+                        if (tasklist.Data1 == 3)
+                        {
+                            modelId = open.modeList.IndexOf(tasklist.Data2);
+                        }
+                        if (tasklist.Data1 == 4 || tasklist.Data1 == 5)
+                        {
+                            tempId = open.temperatureList.IndexOf(tasklist.Data2 / 100);
+                        }
+                    }
+                    open.pickerView.setCurrentItems(tempId, modelId, fanid);
+                }
+            }
+
+            comfrimBtn.MouseUpEventHandler = (sender, e) =>
+            {
+
+                var taskList = new List<ZigBee.Device.Scene.TaskListInfo> { };
+
+                int taskType = 5;
+                int data1 = 0;
+                int data2 = 0;
+
+                if (shut.IsSelected)
+                {
+                    //鍏�
+                    data1 = 3;
+                    data2 = 0;
+                    var taskInfo = new ZigBee.Device.Scene.TaskListInfo
+                    {
+                        TaskType = taskType,
+                        Data1 = data1,
+                        Data2 = data2
+                    };
+                    taskList.Add(taskInfo);
+                }
+                else
+                {
+                    //fan
+                    var taskInfo = new ZigBee.Device.Scene.TaskListInfo
+                    {
+                        TaskType = taskType,
+                        Data1 = 6,
+                        Data2 = open.fanList[fanid]
+                    };
+                    taskList.Add(taskInfo);
+
+                    //mode
+                    var taskInfo2 = new ZigBee.Device.Scene.TaskListInfo
+                    {
+                        TaskType = taskType,
+                        Data1 = 3,
+                        Data2 = open.modeList[modelId]
+                    };
+                    taskList.Add(taskInfo2);
+
+                    //tem
+                    if (open.modeList[modelId] == 4)
+                    {
+                        //heat
+                        var taskInfo3 = new ZigBee.Device.Scene.TaskListInfo
+                        {
+                            TaskType = taskType,
+                            Data1 = 4,
+                            Data2 = open.temperatureList[tempId] * 100
+                        };
+                        taskList.Add(taskInfo3);
+
+                    }
+                    else
+                    {
+                        //heat
+                        var taskInfo3 = new ZigBee.Device.Scene.TaskListInfo
+                        {
+                            TaskType = taskType,
+                            Data1 = 5,
+                            Data2 = open.temperatureList[tempId] * 100
+                        };
+                        taskList.Add(taskInfo3);
+                    }
+                }
+
+                sceneTarget.TaskList = taskList;
+                sceneTarget.DeviceUI = device;
+                selectedAction?.Invoke(sceneTarget);
+                dialog.RemoveFromParent();
+            };
+        }
+
+        #endregion
+
     }
 }
diff --git a/ZigbeeApp/Shared/Phone/Device/Category/SelectDelayTime.cs b/ZigbeeApp/Shared/Phone/Device/Category/SelectDelayTime.cs
index 3394193..227faea 100755
--- a/ZigbeeApp/Shared/Phone/Device/Category/SelectDelayTime.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Category/SelectDelayTime.cs
@@ -67,7 +67,7 @@
             var top = new TopFrameLayout();
             AddChidren(top);
             top.InitTopview();
-            top.SetTopTitle(R.MyInternationalizationString.AddScence);
+            top.SetTopTitle(R.MyInternationalizationString.AddDelayTime);
             top.backButton.MouseUpEventHandler += (sender, e) =>
             {
                 RemoveFromParent();
@@ -113,7 +113,7 @@
                 Height = Application.GetMinRealAverage(124),
                 Width = Application.GetMinRealAverage(124),
                 Gravity = Gravity.Center,
-                Radius = (uint)Application.GetRealHeight(124 / 2),
+                Radius = (uint)Application.GetRealHeight(58),
                 UnSelectedImagePath = "Item/Timer.png"
             };
             bg1.AddChidren(timeImg);
@@ -126,6 +126,7 @@
                 Gravity = Gravity.CenterHorizontal,
                 TextID = R.MyInternationalizationString.SelectTimeForAction,
                 TextColor = ZigbeeColor.Current.GXCTextBlackColor,
+                TextSize=15,
                 IsMoreLines = true
             };
             bodyFrameLayout.AddChidren(tip);
@@ -135,7 +136,7 @@
                 Y = Application.GetRealHeight(611),
                 Height = Application.GetRealHeight(1126),
                 BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor,
-                Radius = (uint)Application.GetRealHeight(17),
+                Radius = (uint)Application.GetRealHeight(58),
             };
             bodyFrameLayout.AddChidren(midFL);
 
diff --git a/ZigbeeApp/Shared/Phone/Device/Category/SelectDevice.cs b/ZigbeeApp/Shared/Phone/Device/Category/SelectDevice.cs
index da0dedc..50f3b01 100755
--- a/ZigbeeApp/Shared/Phone/Device/Category/SelectDevice.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Category/SelectDevice.cs
@@ -3,6 +3,7 @@
 using Shared.Common;
 using Shared.Phone.Device.CommonForm;
 using Shared.Phone.UserView;
+using ZigBee.Device;
 
 namespace Shared.Phone.Device.Category
 {
@@ -56,11 +57,11 @@
         /// <summary>
         /// 璁惧绫诲瀷RowLayout
         /// </summary>
-        private FrameLayout typeRowLayout;
+        //private FrameLayout typeRowLayout;
         /// <summary>
         /// 鍔熻兘绫诲瀷鎸夐挳
         /// </summary>
-        private FunctionButton functionTypeIMG;
+        //private FunctionButton functionTypeIMG;
         /// <summary>
         /// 娓╁害
         /// </summary>
@@ -74,9 +75,28 @@
         /// </summary>
         private int fanid;
 
+        /// <summary>
+        /// dList
+        /// </summary>
+        private List<DeviceUI> devList;
+        /// <summary>
+        /// 鐩稿悓绫诲瀷鐨勮澶囧垪琛�
+        /// </summary>
+        private Dictionary<int, List<DeviceUI>> typeDeviceDic;
+        /// <summary>
+        /// 璁惧绫诲瀷鐨勫浘id
+        /// </summary>
+        private Dictionary<int, DeviceConcreteType> typeIdDic;
+        /// <summary>
+        /// 褰撳墠閫変腑鎴块棿
+        /// </summary>
+        private Common.Room curRoom;
 
         #endregion
 
+        /// <summary>
+        /// RemoveFromParent
+        /// </summary>
         public override void RemoveFromParent()
         {
             HomePage.Instance.ScrollEnabled = true;
@@ -96,6 +116,8 @@
         /// </summary>
         public void Show()
         {
+            InitData();
+
             if (sceneTargetDevice == null)
             {
                 sceneTargetDevice = new SceneTargetDeviceUI { Type = 0 };
@@ -107,6 +129,47 @@
             RefreshBodyView(Config.Instance.Home.CurrentFloorId);
         }
 
+        /// <summary>
+        /// InitData
+        /// </summary>
+        private void InitData()
+        {
+            typeDeviceDic = new Dictionary<int, List<DeviceUI>> { };
+            typeIdDic = new Dictionary<int, DeviceConcreteType> { };
+        }
+
+        /// <summary>
+        /// RefreshData
+        /// </summary>
+        private void RefreshData(Common.Room room)
+        {
+            devList = room.DeviceUIList;
+            typeDeviceDic.Clear();
+            typeIdDic.Clear();
+            foreach (var device in devList)
+            {
+                var info = Common.LocalDevice.Current.GetDeviceBelongEnumInfo(device.CommonDevice);
+                if (info.BeloneType == DeviceBeloneType.A寮�鍏� || info.BeloneType == DeviceBeloneType.A褰╃伅
+                    || info.BeloneType == DeviceBeloneType.A鎻掑骇 || info.BeloneType == DeviceBeloneType.A鏅鸿兘绌哄紑
+                    || info.BeloneType == DeviceBeloneType.A鐏厜 || info.BeloneType == DeviceBeloneType.A绌鸿皟
+                    || info.BeloneType == DeviceBeloneType.A绐楀笜 || info.BeloneType == DeviceBeloneType.A缁х數鍣�
+                    || info.BeloneType == DeviceBeloneType.A璋冨厜鍣� 
+                    )
+                {
+                    if (typeDeviceDic.ContainsKey(info.BeloneTextId) == false)
+                    {
+                        var sameDevList = new List<DeviceUI> { };
+                        sameDevList.Add(device);
+                        typeDeviceDic[info.BeloneTextId] = sameDevList;
+                    }
+                    else
+                    {
+                        typeDeviceDic[info.BeloneTextId].Add(device);
+                    }
+                    typeIdDic[info.BeloneTextId] = info.ConcreteType;
+                }
+            }
+        }
 
         #region Add____________________________________
         /// <summary>
@@ -117,7 +180,7 @@
             var top = new TopFrameLayout();
             AddChidren(top);
             top.InitTopview();
-            top.SetTopTitle(R.MyInternationalizationString.AddScence);
+            top.SetTopTitle(R.MyInternationalizationString.AddFunction);
             top.backButton.MouseUpEventHandler += (sender, e) =>
             {
                 RemoveFromParent();
@@ -131,6 +194,8 @@
                 Gravity = Gravity.CenterVertical,
                 TextAlignment = TextAlignment.CenterRight,
                 TextColor = ZigbeeColor.Current.GXCTextBlackColor,
+                TextSize=14,
+                IsBold=true
             };
 
             selectFloorBtn = new Button()
@@ -210,54 +275,44 @@
             functionSceneBodyView = new FrameLayout()
             {
                 Y = roomFL.Bottom,
-                Height = Application.GetRealHeight(910 + 622),
+                Height = Application.GetRealHeight(279+35+1218),
                 BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor
             };
             bodyFrameLayout.AddChidren(functionSceneBodyView);
 
-            Button curBtn = new Button();
+            RoomButton curBtn = new RoomButton(0, 0);
             foreach (var room in Common.Room.CurrentRoom.GetRoomsByFloorIdAppendLoveRoom(floorId))
             {
                 var row = new FrameLayout()
                 {
-                    Width = Application.GetRealWidth(187 + 50),
-                    Height = Application.GetRealHeight(204),
+                    Width = Application.GetRealWidth(255),
+                    Height = Application.GetRealHeight(167)
                 };
                 roomFL.AddChidren(row);
 
-                var roomBtn = new Button()
-                {
-                    Width = Application.GetRealWidth(187),
-                    Height = Application.GetRealHeight(78),
-                    Radius = (uint)Application.GetRealHeight(78 / 2),
-                    Gravity = Gravity.Center,
-                    Text = room.Name,
-                    TextColor = ZigbeeColor.Current.GXCTextGrayColor,
-                    SelectedTextColor = ZigbeeColor.Current.GXCTextWhiteColor,
-                    BackgroundColor = ZigbeeColor.Current.GXCButtonUnSelectedColor3,
-                    SelectedBackgroundColor = ZigbeeColor.Current.GXCButtonSelectedColor,
-                    BorderColor = ZigbeeColor.Current.GXCBorderUnSelectedColor,
-                    BorderWidth = 1
-                };
+                RoomButton roomBtn = new RoomButton(0, 0);
+                roomBtn.Gravity = Gravity.Center;
+                roomBtn.Init();
+                roomBtn.SetTitle(room.Name);
                 row.AddChidren(roomBtn);
 
                 if (room.IsLove)
                 {
                     roomBtn.IsSelected = true;
                     curBtn = roomBtn;
-
+                    this.curRoom = room;
                     RefreshFunction(room);
                 }
-                roomBtn.MouseUpEventHandler += (sender, e) =>
+                roomBtn.ButtonClickEvent += (sender, e) =>
                 {
-                    if ((sender as Button) == curBtn)
+                    if (sender == curBtn)
                     {
                         return;
                     }
-                    (sender as Button).IsSelected = true;
+                    sender.IsSelected = true;
                     curBtn.IsSelected = false;
-                    curBtn = sender as Button;
-
+                    curBtn = sender;
+                    this.curRoom = room;
                     RefreshFunction(room);
                 };
             }
@@ -275,112 +330,130 @@
         /// <param name="room"></param>
         private void RefreshFunction(Common.Room room)
         {
+            RefreshData(room);
             functionSceneBodyView.RemoveAll();
 
-            if (room.DeviceUIList.Count == 0)
+            if (typeDeviceDic.Count == 0)
             {
                 ShowNoFunctionTip();
             }
             else
             {
+                var functionTypeView1 = new FrameLayout
+                {
+                    X = Application.GetRealWidth(CommonFormResouce.X_Left),
+                    Height = Application.GetRealHeight(160),
+                    Width = Application.GetRealWidth(1028),
+                    BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
+                };
+                functionSceneBodyView.AddChidren(functionTypeView1);
+                functionTypeView1.SetCornerWithSameRadius(Application.GetRealHeight(17), HDLUtils.RectCornerTopLeft);
+
+                var functionTypeView2 = new FrameLayout
+                {
+                    X = Application.GetRealWidth(CommonFormResouce.X_Left),
+                    Y = Application.GetRealHeight(150),
+                    Height = Application.GetRealHeight(279 - 150),
+                    Width = Application.GetRealWidth(1028),
+                    BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
+                };
+                functionSceneBodyView.AddChidren(functionTypeView2);
+                functionTypeView2.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerBottomLeft);
+
                 functionTypeScrowView = new HorizontalScrolViewLayout
                 {
                     X = Application.GetRealWidth(CommonFormResouce.X_Left),
                     Height = Application.GetRealHeight(279),
-                    Width = Application.GetRealWidth(1028),
-                    BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
+                    Width = Application.GetRealWidth(1028)
                 };
                 functionSceneBodyView.AddChidren(functionTypeScrowView);
 
                 deviceListScrolView = new VerticalScrolViewLayout
                 {
                     X = Application.GetRealWidth(CommonFormResouce.X_Left),
-                    Y = functionTypeScrowView.Bottom + Application.GetRealHeight(50),
+                    Y = Application.GetRealHeight(35 + 275),
                     Width = Application.GetRealWidth(1028),
-                    Height = functionSceneBodyView.Height - Application.GetRealHeight(279 + 50) - 1,
+                    Height = Application.GetRealHeight(1218),
                     BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
                 };
                 functionSceneBodyView.AddChidren(deviceListScrolView);
+                deviceListScrolView.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft);
+
                 tempFunctionTypeBtn = new FunctionButton();
                 tempFunctionTypeBtn.Init("","");
 
-                EventHandler<MouseEventArgs> ShowSameTypeFunction = (object typeSender, MouseEventArgs mouseEventArgs) =>
+                foreach (var deviceType in typeIdDic)
                 {
-                    tempFunctionTypeBtn.IsSelected = false;
-                    tempFunctionTypeBtn = (typeSender as Button).Parent as FunctionButton;
-                    ((typeSender as Button).Parent as FunctionButton).IsSelected = true;
-
-                    deviceListScrolView.RemoveAll();
-
-                    var sameTypeList = new List<DeviceUI> { };
-                    foreach (var devieceUI in room.DeviceUIList)
+                    var typeRowLayout = new FrameLayout()
                     {
-                        if (devieceUI == null || devieceUI.CommonDevice == null)
-                        {
-                            continue;
-                        }
-                        if (devieceUI.CommonDevice.Type.ToString() == (typeSender as Button).Tag.ToString())
-                        {
-                            if (!sameTypeList.Contains(devieceUI))
-                            {
-                                sameTypeList.Add(devieceUI);
-                            }
-                        }
-                    }
-                    foreach (var device in sameTypeList)
-                    {
-                        if (beforeSceneTargetDeviceUIs.Find((obj) => obj.DeviceUI.DeviceEpoint == device.DeviceEpoint && obj.DeviceUI.DeviceAddr == device.DeviceAddr) != null)
-                        {
-                            continue;
-                        }
-                        var deviceTypeRowLayout = new FrameLayout()
-                        {
-                            Height = Application.GetRealHeight(127 + 35),
-                            Tag = device
-                        };
-                        deviceListScrolView.AddChidren(deviceTypeRowLayout);
-
-                        var deviceRow = new FunctionRow(0, 35);
-                        deviceTypeRowLayout.AddChidren(deviceRow);
-                        deviceRow.Init(device.IconPath, device.OnlineIconPath,true);
-                        deviceRow.SetTitle(device.CommonDevice.DeviceEpointName);
-                        deviceRow.SetStatu(device.CommonDevice.IsOnline == 1);
-                        deviceRow.HideSwitchBtn(false);
-
-                        deviceRow.ClickBtn.MouseUpEventHandler += (sender, e) =>
-                        {
-                            ShowSelectAction(device, sceneTargetDevice);
-                        };
-                    }
-                };
-
-                foreach (var deviceType in Common.Room.GetdeviceTypes(room))
-                {
-                    typeRowLayout = new FrameLayout()
-                    {
-                        Width = Application.GetRealWidth(CommonPage.AppRealWidth / 5),
-                        Tag = deviceType
+                        Width = Application.GetRealWidth(220),
                     };
                     functionTypeScrowView.AddChidren(typeRowLayout);
 
-                    functionTypeIMG = new FunctionButton()
+                    var functionTypeIMG = new FunctionButton()
                     {
-                        Tag = deviceType
+                        Tag = deviceType.Key
                     };
-                    functionTypeIMG.Init(DeviceUI.GetDeviceTypeUnSelectedImagePath(deviceType), DeviceUI.GetDeviceTypeUnSelectedImagePath(deviceType));
-                    functionTypeIMG.SetTitle(DeviceUI.GetDeviceTypeName(deviceType));
+                    string imgPath = string.Empty;
+                    string imgSeletedPath = string.Empty;
+                    Common.LocalDevice.Current.GetDeviceObjectIcon(deviceType.Value, ref imgPath, ref imgSeletedPath);
+                    functionTypeIMG.Init(imgPath, imgSeletedPath);
+                    functionTypeIMG.SetTitle(deviceType.Key);
                     typeRowLayout.AddChidren(functionTypeIMG);
 
                     functionTypeIMG.ClickBtn.MouseUpEventHandler += ShowSameTypeFunction;
 
-
-                    if (deviceType == room.DeviceUIList[0].CommonDevice.Type)
+                    if (functionTypeScrowView.ChildrenCount == 1)
                     {
-                        ShowSameTypeFunction(functionTypeIMG.ClickBtn, null);
+                        ShowSameTypeFunction(functionTypeIMG.ImageBtn, null);
                     }
                 }
             }
         }
+
+        /// <summary>
+        /// 鏄剧ず鐩稿悓绫诲瀷鐨勫姛鑳�
+        /// </summary>
+        /// <param name="typeSender">typeSender.</param>
+        /// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param>
+        private void ShowSameTypeFunction(object typeSender, MouseEventArgs mouseEventArgs)
+        {
+            tempFunctionTypeBtn.IsSelected = false;
+            tempFunctionTypeBtn = (typeSender as Button).Parent as FunctionButton;
+            ((typeSender as Button).Parent as FunctionButton).IsSelected = true;
+
+            deviceListScrolView.RemoveAll();
+
+            var sameTypeList = new List<DeviceUI> { };
+            sameTypeList = typeDeviceDic[int.Parse((typeSender as Button).Tag.ToString())];
+            
+            foreach (var device in sameTypeList)
+            {
+                if (beforeSceneTargetDeviceUIs.Find((obj) => obj.DeviceUI.DeviceEpoint == device.DeviceEpoint && obj.DeviceUI.DeviceAddr == device.DeviceAddr) != null)
+                {
+                    continue;
+                }
+                var deviceTypeRowLayout = new FrameLayout()
+                {
+                    Height = Application.GetRealHeight(127 + 35),
+                    Tag = device
+                };
+                deviceListScrolView.AddChidren(deviceTypeRowLayout);
+
+                var deviceRow = new FunctionRow(0, 35);
+                deviceTypeRowLayout.AddChidren(deviceRow);
+                deviceRow.Init(device.IconPath, device.OnlineIconPath, true);
+                deviceRow.SetTitle(device.CommonDevice.DeviceEpointName);
+                deviceRow.IsSelected = true;
+                deviceRow.HideSwitchBtn(false);
+
+                deviceRow.ClickBtn.MouseUpEventHandler += (sender, e) =>
+                {
+                    ShowSelectAction(device, sceneTargetDevice);
+                };
+            }
+        }
+
 
         /// <summary>
         /// 鎻愮ず娌℃湁鍔熻兘
@@ -464,12 +537,12 @@
                 Height = Application.GetRealHeight(530),
             };
             dialog.AddChidren(selectFL);
-            selectFL.Animate = Animate.DownToUp;
+            //selectFL.Animate = Animate.DownToUp;
 
             var titleBG = new FrameLayout
             {
                 Height = Application.GetRealHeight(138 * 2),
-                Radius = (uint)Application.GetRealHeight(20),
+                Radius = (uint)Application.GetRealHeight(58),
                 BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
             };
             selectFL.AddChidren(titleBG);
@@ -493,7 +566,7 @@
                 X = Application.GetRealWidth(80),
                 Width = Application.GetRealWidth(200),
                 TextColor = ZigbeeColor.Current.GXCTextGrayColor,
-                TextSize = 15,
+                TextSize = 14,
                 TextAlignment = TextAlignment.CenterLeft,
                 TextID = R.MyInternationalizationString.Cancel
             };
@@ -501,11 +574,10 @@
 
             var deviceName = new Button
             {
-                Width = Application.GetRealWidth(400),
+                Width = Application.GetRealWidth(600),
                 Gravity = Gravity.CenterHorizontal,
                 TextColor = ZigbeeColor.Current.GXCTextBlackColor,
-                TextSize = 15,
-                TextAlignment = TextAlignment.CenterLeft,
+                TextSize = 16,
                 Text = device.CommonDevice.DeviceEpointName
             };
             titleFL.AddChidren(deviceName);
@@ -515,7 +587,7 @@
                 X = Application.GetRealWidth(800),
                 Width = Application.GetRealWidth(200),
                 TextColor = ZigbeeColor.Current.GXCTextSelectedColor2,
-                TextSize = 15,
+                TextSize = 14,
                 TextAlignment = TextAlignment.CenterRight,
                 TextID = R.MyInternationalizationString.Complete
             };
@@ -621,12 +693,12 @@
                 Height = Application.GetRealHeight(752),
             };
             dialog.AddChidren(selectFL);
-            selectFL.Animate = Animate.DownToUp;
+            //selectFL.Animate = Animate.DownToUp;
 
             var titleBG = new FrameLayout
             {
                 Height = Application.GetRealHeight(138 * 2),
-                Radius = (uint)Application.GetRealHeight(20),
+                Radius = (uint)Application.GetRealHeight(58),
                 BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
             };
             selectFL.AddChidren(titleBG);
@@ -650,7 +722,7 @@
                 X = Application.GetRealWidth(80),
                 Width = Application.GetRealWidth(200),
                 TextColor = ZigbeeColor.Current.GXCTextGrayColor,
-                TextSize = 15,
+                TextSize = 14,
                 TextAlignment = TextAlignment.CenterLeft,
                 TextID = R.MyInternationalizationString.Cancel
             };
@@ -658,11 +730,10 @@
 
             var deviceName = new Button
             {
-                Width = Application.GetRealWidth(400),
+                Width = Application.GetRealWidth(600),
                 Gravity = Gravity.CenterHorizontal,
                 TextColor = ZigbeeColor.Current.GXCTextBlackColor,
-                TextSize = 15,
-                TextAlignment = TextAlignment.CenterLeft,
+                TextSize = 16,
                 Text = device.CommonDevice.DeviceEpointName
             };
             titleFL.AddChidren(deviceName);
@@ -672,7 +743,7 @@
                 X = Application.GetRealWidth(800),
                 Width = Application.GetRealWidth(200),
                 TextColor = ZigbeeColor.Current.GXCTextSelectedColor2,
-                TextSize = 15,
+                TextSize = 14,
                 TextAlignment = TextAlignment.CenterRight,
                 TextID = R.MyInternationalizationString.Complete
             };
@@ -787,12 +858,12 @@
                 Height = Application.GetRealHeight(752),
             };
             dialog.AddChidren(selectFL);
-            selectFL.Animate = Animate.DownToUp;
+            //selectFL.Animate = Animate.DownToUp;
 
             var titleBG = new FrameLayout
             {
                 Height = Application.GetRealHeight(138 * 2),
-                Radius = (uint)Application.GetRealHeight(20),
+                Radius = (uint)Application.GetRealHeight(58),
                 BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
             };
             selectFL.AddChidren(titleBG);
@@ -816,7 +887,7 @@
                 X = Application.GetRealWidth(80),
                 Width = Application.GetRealWidth(200),
                 TextColor = ZigbeeColor.Current.GXCTextGrayColor,
-                TextSize = 15,
+                TextSize = 14,
                 TextAlignment = TextAlignment.CenterLeft,
                 TextID = R.MyInternationalizationString.Cancel
             };
@@ -824,10 +895,10 @@
 
             var deviceName = new Button
             {
-                Width = Application.GetRealWidth(400),
+                Width = Application.GetRealWidth(600),
                 Gravity = Gravity.CenterHorizontal,
                 TextColor = ZigbeeColor.Current.GXCTextBlackColor,
-                TextSize = 15,
+                TextSize = 16,
                 TextAlignment = TextAlignment.CenterLeft,
                 Text = device.CommonDevice.DeviceEpointName
             };
@@ -838,7 +909,7 @@
                 X = Application.GetRealWidth(800),
                 Width = Application.GetRealWidth(200),
                 TextColor = ZigbeeColor.Current.GXCTextSelectedColor2,
-                TextSize = 15,
+                TextSize = 14,
                 TextAlignment = TextAlignment.CenterRight,
                 TextID = R.MyInternationalizationString.Complete
             };
@@ -953,12 +1024,12 @@
                 Height = Application.GetRealHeight(1106),
             };
             dialog.AddChidren(selectFL);
-            selectFL.Animate = Animate.DownToUp;
+            //selectFL.Animate = Animate.DownToUp;
 
             var titleBG = new FrameLayout
             {
                 Height = Application.GetRealHeight(138 * 2),
-                Radius = (uint)Application.GetRealHeight(20),
+                Radius = (uint)Application.GetRealHeight(58),
                 BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
             };
             selectFL.AddChidren(titleBG);
@@ -982,7 +1053,7 @@
                 X = Application.GetRealWidth(80),
                 Width = Application.GetRealWidth(200),
                 TextColor = ZigbeeColor.Current.GXCTextGrayColor,
-                TextSize = 15,
+                TextSize = 14,
                 TextAlignment = TextAlignment.CenterLeft,
                 TextID = R.MyInternationalizationString.Cancel
             };
@@ -990,10 +1061,10 @@
 
             var deviceName = new Button
             {
-                Width = Application.GetRealWidth(400),
+                Width = Application.GetRealWidth(600),
                 Gravity = Gravity.CenterHorizontal,
                 TextColor = ZigbeeColor.Current.GXCTextBlackColor,
-                TextSize = 15,
+                TextSize = 16,
                 TextAlignment = TextAlignment.CenterLeft,
                 Text = device.CommonDevice.DeviceEpointName
             };
@@ -1004,7 +1075,7 @@
                 X = Application.GetRealWidth(800),
                 Width = Application.GetRealWidth(200),
                 TextColor = ZigbeeColor.Current.GXCTextSelectedColor2,
-                TextSize = 15,
+                TextSize = 14,
                 TextAlignment = TextAlignment.CenterRight,
                 TextID = R.MyInternationalizationString.Complete
             };
@@ -1082,12 +1153,9 @@
                             tempId = open.temperatureList.IndexOf(tasklist.Data2/100);
                         }
                     }
-
                     open.pickerView.setCurrentItems(tempId, modelId, fanid);
                 }
             }
-
-
 
             comfrimBtn.MouseUpEventHandler = (sender, e) =>
             {
diff --git a/ZigbeeApp/Shared/Phone/Device/Category/SelectFloor.cs b/ZigbeeApp/Shared/Phone/Device/Category/SelectFloor.cs
index 85d5b7e..11d2bf8 100755
--- a/ZigbeeApp/Shared/Phone/Device/Category/SelectFloor.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Category/SelectFloor.cs
@@ -96,8 +96,7 @@
                 frow.IsSelected = true;
             }
 
-            frow.IconButton.MouseUpEventHandler += SelectFloor_MouseUpEvent;
-            frow.TitleButton.MouseUpEventHandler += SelectFloor_MouseUpEvent;
+            frow.ClickBtn.MouseUpEventHandler += SelectFloor_MouseUpEvent;
         }
 
         /// <summary>
@@ -112,6 +111,7 @@
             {
                 Config.Instance.Home.CurrentFloorId = (sender as Button).Tag.ToString();
                 Config.Instance.Home.Save();
+                Common.Room.RefreshRoomListView();
             }
             
             FloorAction?.Invoke((sender as Button).Tag.ToString());
diff --git a/ZigbeeApp/Shared/Phone/Device/Category/SelectScene.cs b/ZigbeeApp/Shared/Phone/Device/Category/SelectScene.cs
index 74a7512..f0200e7 100755
--- a/ZigbeeApp/Shared/Phone/Device/Category/SelectScene.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Category/SelectScene.cs
@@ -23,7 +23,7 @@
         /// <summary>
         /// BeforesceneTargetDeviceUIs
         /// </summary>
-        public List<SceneTargetDeviceUI> beforeSceneTargetDeviceUIs=new List<SceneTargetDeviceUI> { };
+        public List<SceneTargetDeviceUI> beforeSceneTargetDeviceUIs = new List<SceneTargetDeviceUI> { };
         /// <summary>
         /// 妤煎眰
         /// </summary>
@@ -96,6 +96,8 @@
                 Gravity = Gravity.CenterVertical,
                 TextAlignment = TextAlignment.CenterRight,
                 TextColor = ZigbeeColor.Current.GXCTextBlackColor,
+                TextSize = 14,
+                IsBold = true
             };
 
             selectFloorBtn = new Button()
@@ -151,7 +153,7 @@
             confirmBtn.SetTitle(R.MyInternationalizationString.Save);
             confirmBtn.MouseUpEventHandler += (sender, e) =>
             {
-                sceneTargetDevice.ElseScenesId = sceneUI.Id ;
+                sceneTargetDevice.ElseScenesId = sceneUI.Id;
                 sceneTargetDevice.SceneUI = sceneUI;
                 sceneTargetDevice.SceneName = sceneUI.Name;
                 selectedAction?.Invoke(sceneTargetDevice);
@@ -187,35 +189,26 @@
             functionSceneBodyView = new FrameLayout()
             {
                 Y = roomFL.Bottom,
-                Height = Application.GetRealHeight(910+622),
+                Height = Application.GetRealHeight(1080 + 452),
                 BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor
             };
             bodyFrameLayout.AddChidren(functionSceneBodyView);
 
-            Button curBtn = new Button();
+            RoomButton curBtn = new RoomButton(0,0);
+
             foreach (var room in Common.Room.CurrentRoom.GetRoomsByFloorIdAppendLoveRoom(floorId))
             {
                 var row = new FrameLayout()
                 {
-                    Width = Application.GetRealWidth(187 + 50),
-                    Height = Application.GetRealHeight(204),
+                    Width = Application.GetRealWidth(255),
+                    Height = Application.GetRealHeight(167)
                 };
                 roomFL.AddChidren(row);
 
-                var roomBtn = new Button()
-                {
-                    Width = Application.GetRealWidth(187),
-                    Height = Application.GetRealHeight(78),
-                    Radius = (uint)Application.GetRealHeight(78 / 2),
-                    Gravity = Gravity.Center,
-                    Text = room.Name,
-                    TextColor = ZigbeeColor.Current.GXCTextGrayColor,
-                    SelectedTextColor = ZigbeeColor.Current.GXCTextWhiteColor,
-                    BackgroundColor = ZigbeeColor.Current.GXCButtonUnSelectedColor3,
-                    SelectedBackgroundColor = ZigbeeColor.Current.GXCButtonSelectedColor,
-                    BorderColor = ZigbeeColor.Current.GXCBorderUnSelectedColor,
-                    BorderWidth = 1
-                };
+                RoomButton roomBtn = new RoomButton(0, 0);
+                roomBtn.Gravity = Gravity.Center;
+                roomBtn.Init();
+                roomBtn.SetTitle(room.Name);
                 row.AddChidren(roomBtn);
 
                 if (room.IsLove)
@@ -225,15 +218,15 @@
 
                     RefreshScene(room);
                 }
-                roomBtn.MouseUpEventHandler += (sender, e) =>
+                roomBtn.ButtonClickEvent += (sender, e) =>
                 {
-                    if ((sender as Button) == curBtn)
+                    if (sender == curBtn)
                     {
                         return;
                     }
-                    (sender as Button).IsSelected = true;
+                    sender.IsSelected = true;
                     curBtn.IsSelected = false;
-                    curBtn = sender as Button;
+                    curBtn = sender;
 
                     RefreshScene(room);
                 };
@@ -260,9 +253,11 @@
                 {
                     //Y = Application.GetRealHeight(58)
                 };
+
                 functionSceneBodyView.AddChidren(sceneScrolView);
                 SelectSceneRow tempSceneRow = new SelectSceneRow();
-                EventHandler<MouseEventArgs> selectScene = (sender, e) => {
+                EventHandler<MouseEventArgs> selectScene = (sender, e) =>
+                {
                     tempSceneRow.IsSelected = false;
                     tempSceneRow = ((sender as Button).Parent as SelectSceneRow);
                     ((sender as Button).Parent as SelectSceneRow).IsSelected = true;
@@ -311,11 +306,22 @@
                             sceneRowLayout.IsSelected = true;
                         }
                     }
-                    
+
                     sceneRowLayout.ClickButton.MouseUpEventHandler += selectScene;
                 }
+
+                if (sceneList.Count > 8)
+                {
+                    var frame = new FrameLayout
+                    {
+                        Height = Application.GetRealHeight(300)
+                    };
+                    sceneScrolView.AddChidren(frame);
+                }
+
             }
         }
+    
 
         /// <summary>
         /// 鏄剧ず娌℃湁鍦烘櫙
@@ -338,7 +344,7 @@
                 Height = Application.GetRealHeight(200),
                 Width = Application.GetRealWidth(700),
                 Gravity = Gravity.CenterHorizontal,
-                Text = Language.StringByID(R.MyInternationalizationString.NoScene).Replace("{\\r\\n}", "\r\n"),
+                Text = Language.StringByID(R.MyInternationalizationString.NoScene_Tip).Replace("{\\r\\n}", "\r\n"),
                 TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
                 TextAlignment = TextAlignment.Center,
                 IsMoreLines = true
diff --git a/ZigbeeApp/Shared/Phone/Device/CommonForm/ButtonLineForm.cs b/ZigbeeApp/Shared/Phone/Device/CommonForm/ButtonLineForm.cs
index 1f97860..78e5035 100755
--- a/ZigbeeApp/Shared/Phone/Device/CommonForm/ButtonLineForm.cs
+++ b/ZigbeeApp/Shared/Phone/Device/CommonForm/ButtonLineForm.cs
@@ -64,7 +64,7 @@
                 Width = Width,
                 Height = Height - Application.GetRealHeight(6),
                 TextColor = ZigbeeColor.Current.GXCTextGrayColor4,
-                SelectedTextColor = ZigbeeColor.Current.GXCTextDeepBlackColor,
+                SelectedTextColor = ZigbeeColor.Current.GXCTextBlackColor,
                 TextSize = CommonFormResouce.TextSize,
                 TextAlignment = TextAlignment.CenterLeft
             };
diff --git a/ZigbeeApp/Shared/Phone/Device/CommonForm/CategoryFunctionForWinRow.cs b/ZigbeeApp/Shared/Phone/Device/CommonForm/CategoryFunctionForWinRow.cs
index d31b0e0..f11e9ee 100755
--- a/ZigbeeApp/Shared/Phone/Device/CommonForm/CategoryFunctionForWinRow.cs
+++ b/ZigbeeApp/Shared/Phone/Device/CommonForm/CategoryFunctionForWinRow.cs
@@ -52,7 +52,7 @@
                 v_Selected = value;
                 try
                 {
-                    SetOnLineStatu(v_Selected);
+                    SetStatu(v_Selected);
                 }
                 catch
                 {
@@ -75,7 +75,7 @@
             Y = Application.GetRealHeight(y);
             Width = Application.GetRealWidth(1022);
             Height = Application.GetRealHeight(127);
-            BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor;
+            //BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor;
         }
 
         /// <summary>
@@ -111,11 +111,12 @@
             {
                 X = Application.GetRealWidth(181),
                 Y = Application.GetRealHeight(14),
-                Width = Application.GetRealWidth(600),
+                Width = Application.GetRealWidth(400),
                 Height = Application.GetRealHeight(58),
                 TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                 SelectedTextColor = ZigbeeColor.Current.GXCTextSelectedColor,
                 TextAlignment = TextAlignment.CenterLeft,
+                TextSize=14
             };
             AddChidren(NameBtn);
 
@@ -126,7 +127,8 @@
                 Width = Application.GetRealWidth(400),
                 Height = Application.GetRealHeight(49),
                 TextAlignment = TextAlignment.CenterLeft,
-                TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor2
+                TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor2,
+                TextSize=10
             };
             AddChidren(StatuBtn);
 
@@ -225,6 +227,8 @@
         public void SetStatu(bool statu)
         {
             //OpenOrUpBtn.IsSelected = CloseOrDownBtn.IsSelected = StopBtn.IsSelected = statu;
+            NameBtn.IsSelected = ImageBG.IsSelected = ImageBtn.IsSelected = statu;
+            NameBtn.IsBold = statu;
         }
 
         /// <summary>
@@ -234,7 +238,7 @@
         public void SetOnLineStatu(bool statu)
         {
             NameBtn.IsSelected = ImageBG.IsSelected = ImageBtn.IsSelected = statu;
-
+            NameBtn.IsBold = statu;
         }
 
         /// <summary>
diff --git a/ZigbeeApp/Shared/Phone/Device/CommonForm/CategoryFunctionRow.cs b/ZigbeeApp/Shared/Phone/Device/CommonForm/CategoryFunctionRow.cs
index b73178f..a13103f 100755
--- a/ZigbeeApp/Shared/Phone/Device/CommonForm/CategoryFunctionRow.cs
+++ b/ZigbeeApp/Shared/Phone/Device/CommonForm/CategoryFunctionRow.cs
@@ -42,7 +42,7 @@
                 v_Selected = value;
                 try
                 {
-                    SetOnLineStatu(v_Selected);
+                    SetStatu(v_Selected);
                 }
                 catch
                 {
@@ -66,7 +66,7 @@
             Y = Application.GetRealHeight(y);
             Width = Application.GetRealWidth(1022);
             Height = Application.GetRealHeight(127);
-            BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor;
+            //BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor;
         }
 
         /// <summary>
@@ -110,6 +110,7 @@
                 TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                 SelectedTextColor = ZigbeeColor.Current.GXCTextSelectedColor,
                 TextAlignment = TextAlignment.CenterLeft,
+                TextSize=14,
                 Tag = Tag
             };
             AddChidren(NameBtn);
@@ -121,7 +122,8 @@
                 Width = Application.GetRealWidth(400),
                 Height = Application.GetRealHeight(49),
                 TextAlignment = TextAlignment.CenterLeft,
-                TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor2
+                TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor2,
+                TextSize=10
             };
             AddChidren(StatuBtn);
 
@@ -140,9 +142,9 @@
             var line = new Button()
             {
                 X = Application.GetRealWidth(200),
-                Y = Height - 2,
+                Y = Height - 1,
                 Width = Application.GetRealWidth(821),
-                Height = 2,
+                Height = 1,
                 BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor,
                 Tag = Tag
             };
@@ -187,6 +189,8 @@
         public void SetStatu(bool statu)
         {
             SwitchBtn.IsSelected = statu;
+            NameBtn.IsSelected = ImageBG.IsSelected = ImageBtn.IsSelected = statu;
+            NameBtn.IsBold = statu;
         }
 
         /// <summary>
diff --git a/ZigbeeApp/Shared/Phone/Device/CommonForm/CommonFormResouce.cs b/ZigbeeApp/Shared/Phone/Device/CommonForm/CommonFormResouce.cs
index d019415..cb59ba2 100755
--- a/ZigbeeApp/Shared/Phone/Device/CommonForm/CommonFormResouce.cs
+++ b/ZigbeeApp/Shared/Phone/Device/CommonForm/CommonFormResouce.cs
@@ -25,9 +25,9 @@
         public const int loginTextSize = 12;
         /// <summary>
         /// 鍗犱綅瀛椾綋澶у皬
-        /// 12
+        /// 14
         /// </summary>
-        public const int PlaceHolderTextSize = 12;
+        public const int PlaceHolderTextSize = 14;
 
         /// <summary>
         /// Row_Height
diff --git a/ZigbeeApp/Shared/Phone/Device/CommonForm/CompleteButton.cs b/ZigbeeApp/Shared/Phone/Device/CommonForm/CompleteButton.cs
index 1745281..dbc70fa 100755
--- a/ZigbeeApp/Shared/Phone/Device/CommonForm/CompleteButton.cs
+++ b/ZigbeeApp/Shared/Phone/Device/CommonForm/CompleteButton.cs
@@ -26,6 +26,8 @@
             TextID = R.MyInternationalizationString.Complete;
             BackgroundColor = ZigbeeColor.Current.GXCButtonBlackSelectedColor;
             TextColor = ZigbeeColor.Current.GXCTextWhiteColor;
+            IsBold = true;
+            TextSize = 16;
             Gravity = Gravity.CenterHorizontal;
             Radius = (uint)Application.GetRealHeight(height / 2);
         }
diff --git a/ZigbeeApp/Shared/Phone/Device/CommonForm/DeviceDetailInfo.cs b/ZigbeeApp/Shared/Phone/Device/CommonForm/DeviceDetailInfo.cs
index b992f88..b696113 100755
--- a/ZigbeeApp/Shared/Phone/Device/CommonForm/DeviceDetailInfo.cs
+++ b/ZigbeeApp/Shared/Phone/Device/CommonForm/DeviceDetailInfo.cs
@@ -407,15 +407,15 @@
                             CommonPage.Loading.Hide();
                             if (result)
                             {
-                                var alertSuccess = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.Success), Language.StringByID(R.MyInternationalizationString.Confrim));
-                                alertSuccess.Show();
-                                alertSuccess.ResultEventHandler += (senderSuccess, eSuccess) =>
-                                {
+                                //var alertSuccess = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.Success), Language.StringByID(R.MyInternationalizationString.Confrim));
+                                //alertSuccess.Show();
+                                //alertSuccess.ResultEventHandler += (senderSuccess, eSuccess) =>
+                                //{
                                     //鏀规埧闂�
                                     Shared.Common.Room.CurrentRoom.ChangedRoom(device.CommonDevice, curRoom.Id);
                                     device.CommonDevice.ReSave();
                                     RemoveFromParent();
-                                };
+                                //};
                             }
                             else
                             {
diff --git a/ZigbeeApp/Shared/Phone/Device/CommonForm/DeviceInfoEditRow.cs b/ZigbeeApp/Shared/Phone/Device/CommonForm/DeviceInfoEditRow.cs
index 47ac9b4..a094781 100755
--- a/ZigbeeApp/Shared/Phone/Device/CommonForm/DeviceInfoEditRow.cs
+++ b/ZigbeeApp/Shared/Phone/Device/CommonForm/DeviceInfoEditRow.cs
@@ -58,9 +58,9 @@
             var line = new Button()
             {
                 X = Application.GetRealWidth(CommonFormResouce.X_Left),
-                Y = Height - 2,
+                Y = Height - 1,
                 Width = Application.GetRealWidth(965),
-                Height = 2,
+                Height = 1,
                 BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor2,
             };
             AddChidren(line);
diff --git a/ZigbeeApp/Shared/Phone/Device/CommonForm/DeviceInfoRow.cs b/ZigbeeApp/Shared/Phone/Device/CommonForm/DeviceInfoRow.cs
index 55df7e1..397eb92 100755
--- a/ZigbeeApp/Shared/Phone/Device/CommonForm/DeviceInfoRow.cs
+++ b/ZigbeeApp/Shared/Phone/Device/CommonForm/DeviceInfoRow.cs
@@ -71,17 +71,17 @@
                 Width = Application.GetMinRealAverage(100),
                 Height = Application.GetMinRealAverage(100),
                 Gravity = Gravity.CenterVertical,
-                SelectedImagePath="Item/Next.png",
-                UnSelectedImagePath= "Item/NextSelected.png"
+                SelectedImagePath= "Item/NextSelected.png",
+                UnSelectedImagePath= "Item/Next.png"
             };
             AddChidren(NextBtn);
 
             line = new Button()
             {
                 X = Application.GetRealWidth(CommonFormResouce.X_Left),
-                Y = Height - 2,
+                Y = Height - 1,
                 Width = Application.GetRealWidth(965),
-                Height = 2,
+                Height = 1,
                 BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor2,
             };
             AddChidren(line);
diff --git a/ZigbeeApp/Shared/Phone/Device/CommonForm/DeviceInfoWithZoneRow.cs b/ZigbeeApp/Shared/Phone/Device/CommonForm/DeviceInfoWithZoneRow.cs
index 2edd7e7..7bfe15c 100755
--- a/ZigbeeApp/Shared/Phone/Device/CommonForm/DeviceInfoWithZoneRow.cs
+++ b/ZigbeeApp/Shared/Phone/Device/CommonForm/DeviceInfoWithZoneRow.cs
@@ -25,6 +25,10 @@
         /// </summary>
         public Button ClickButton;
         /// <summary>
+        /// line
+        /// </summary>
+        Button line;
+        /// <summary>
         /// DeviceInfoWithZoneRow
         /// </summary>
         /// <param name="y"></param>
@@ -83,12 +87,12 @@
             };
             AddChidren(SelectBtn);
 
-            var line = new Button()
+            line = new Button()
             {
                 X = Application.GetRealWidth(CommonFormResouce.X_Left),
-                Y = Height - 2,
+                Y = Height - 1,
                 Width = Application.GetRealWidth(965),
-                Height = 2,
+                Height = 1,
                 BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor2,
             };
             AddChidren(line);
@@ -135,6 +139,14 @@
         {
             SelectBtn.Visible = statu;
         }
+        /// <summary>
+        /// HideLine
+        /// </summary>
+        /// <param name="statu"></param>
+        public void HideLine(bool statu)
+        {
+            line.Visible = !statu;
+        }
 
     }
 }
diff --git a/ZigbeeApp/Shared/Phone/Device/CommonForm/FunctionMainView.cs b/ZigbeeApp/Shared/Phone/Device/CommonForm/FunctionMainView.cs
old mode 100755
new mode 100644
index ce78534..448da2e
--- a/ZigbeeApp/Shared/Phone/Device/CommonForm/FunctionMainView.cs
+++ b/ZigbeeApp/Shared/Phone/Device/CommonForm/FunctionMainView.cs
@@ -101,7 +101,8 @@
                 Height = Application.GetMinRealAverage(63),
                 TextColor = ZigbeeColor.Current.GXCTextGrayColor,
                 SelectedTextColor = ZigbeeColor.Current.GXCTextWhiteColor,
-                TextAlignment=TextAlignment.CenterLeft
+                TextAlignment=TextAlignment.CenterLeft,
+                TextSize=15
             };
             AddChidren(NameButton);
 
@@ -156,7 +157,9 @@
                 Height = Application.GetMinRealAverage(60),
                 TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                 SelectedTextColor = ZigbeeColor.Current.GXCTextSelectedColor,
-                TextAlignment=TextAlignment.CenterLeft
+                TextAlignment=TextAlignment.CenterLeft,
+                TextSize=14,
+                IsBold=true
             };
             AddChidren(StatuButton);
 
@@ -177,9 +180,10 @@
         /// SetStatu
         /// </summary>
         /// <param name="statu"></param>
-        public void SetStatu(bool statu)
+        private void SetStatu(bool statu)
         {
             NameButton.IsSelected = IconButton.IsSelected = SwitchButton.IsSelected = StatuButton.IsSelected = CardBG.IsSelected = statu;
+            NameButton.IsBold = statu;
         }
 
         /// <summary>
diff --git a/ZigbeeApp/Shared/Phone/Device/CommonForm/FunctionRow.cs b/ZigbeeApp/Shared/Phone/Device/CommonForm/FunctionRow.cs
index 8fe24e8..64d5392 100755
--- a/ZigbeeApp/Shared/Phone/Device/CommonForm/FunctionRow.cs
+++ b/ZigbeeApp/Shared/Phone/Device/CommonForm/FunctionRow.cs
@@ -62,7 +62,6 @@
             Y = Application.GetRealHeight(y);
             Width = Application.GetRealWidth(1080);
             Height = Application.GetRealHeight(127);
-            BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor;
         }
 
         /// <summary>
@@ -106,7 +105,8 @@
                 TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                 SelectedTextColor = ZigbeeColor.Current.GXCTextSelectedColor,
                 TextAlignment = TextAlignment.CenterLeft,
-                Tag = Tag
+                Tag = Tag,
+                TextSize=14
             };
             AddChidren(NameBtn);
 
@@ -125,10 +125,10 @@
             var line = new Button()
             {
                 X = Application.GetRealWidth(200),
-                Y = Height - 2,
+                Y = Height - 1,
                 Width = Application.GetRealWidth(821),
-                Height = 2,
-                BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor,
+                Height = 1,
+                BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor2,
                 Tag = Tag
             };
             AddChidren(line);
diff --git a/ZigbeeApp/Shared/Phone/Device/CommonForm/LeftIconButtonRow.cs b/ZigbeeApp/Shared/Phone/Device/CommonForm/LeftIconButtonRow.cs
index 58cc755..b009368 100755
--- a/ZigbeeApp/Shared/Phone/Device/CommonForm/LeftIconButtonRow.cs
+++ b/ZigbeeApp/Shared/Phone/Device/CommonForm/LeftIconButtonRow.cs
@@ -18,6 +18,10 @@
         /// </summary>
         public FrameLayout Line;
         /// <summary>
+        /// ClickBtn
+        /// </summary>
+        public Button ClickBtn;
+        /// <summary>
         /// v_Selected
         /// </summary>
         private bool v_Selected;
@@ -98,6 +102,10 @@
             {
                 AddChidren(Line);
             }
+
+            ClickBtn = new Button { Tag = this.Tag };
+            AddChidren(ClickBtn);
+
         }
         #endregion
 
@@ -112,6 +120,7 @@
             IconButton.IsSelected = statu;
             TitleButton.IsSelected = statu;
             TitleButton.IsBold = statu;
+            ClickBtn.IsSelected = statu;
         }
         /// <summary>
         /// 閫変腑
@@ -127,6 +136,15 @@
         {
             SetStatu(false);
         }
+        /// <summary>
+        /// HidenLine
+        /// </summary>
+        /// <param name="statu"></param>
+        public void HidenLine(bool statu)
+        {
+            Line.Visible = !statu;
+        }
+
         #endregion
     }
 }
diff --git a/ZigbeeApp/Shared/Phone/Device/CommonForm/RoomButton.cs b/ZigbeeApp/Shared/Phone/Device/CommonForm/RoomButton.cs
new file mode 100755
index 0000000..15f15e1
--- /dev/null
+++ b/ZigbeeApp/Shared/Phone/Device/CommonForm/RoomButton.cs
@@ -0,0 +1,151 @@
+锘縰sing System;
+using Shared.Common;
+
+namespace Shared.Phone.Device.CommonForm
+{
+    /// <summary>
+    /// 鎴块棿鎸夐挳鍥剧墖
+    /// </summary>
+    public class RoomButton : FrameLayout
+    {
+        #region 鈼� 鍙橀噺____________________________
+        /// <summary>
+        /// name
+        /// </summary>
+        public Button NameBtn;
+        /// <summary>
+        /// 鑳屾櫙鍥�
+        /// </summary>
+        public Button BackGroundBtn;
+        /// <summary>
+        /// 鐐瑰嚮浜嬩欢
+        /// </summary>
+        public Action<RoomButton, MouseEventArgs> ButtonClickEvent;
+        /// <summary>
+        /// isSelected
+        /// </summary>
+        private bool v_Selected;
+        /// <summary>
+        /// IsSelected
+        /// </summary>
+        public bool IsSelected
+        {
+            set
+            {
+                try
+                {
+                    v_Selected = value;
+                    SetStatu(v_Selected);
+                }
+                catch
+                {
+                    v_Selected = false;
+                    SetStatu(v_Selected);
+                }
+            }
+            get
+            {
+                return v_Selected;
+            }
+        }
+
+        #endregion
+
+        #region 鈼� 鏋勯�犳柟娉昣________________________
+
+        /// <summary>
+        /// ButtonLineForm
+        /// </summary>
+        /// <param name="x"></param>
+        /// <param name="y"></param>
+        public RoomButton(int x, int y)
+        {
+            X = Application.GetRealWidth(x);
+            Y = Application.GetRealHeight(y);
+            Width = Application.GetMinRealAverage(255);
+            Height = Application.GetMinRealAverage(159);
+        }
+
+        #endregion
+
+        #region 鈼� 澶栭儴鏂规硶________________________
+        /// <summary>
+        /// Init
+        /// </summary>
+        public void Init()
+        {
+            BackGroundBtn = new Button
+            {
+                Width = Application.GetMinRealAverage(255),
+                Height = Application.GetMinRealAverage(159),
+                UnSelectedImagePath = "Room/IconBackground.png",
+                SelectedImagePath = "Room/IconSelectedBackground.png",
+                Gravity = Gravity.Center
+            };
+            AddChidren(BackGroundBtn);
+
+            NameBtn = new Button()
+            {
+                Width = Application.GetMinRealAverage(160),
+                Height = Application.GetMinRealAverage(159 / 2),
+                Gravity = Gravity.Center,
+                TextColor = ZigbeeColor.Current.GXCTextGrayColor,
+                SelectedTextColor = ZigbeeColor.Current.GXCTextWhiteColor,
+                TextSize = 12
+            };
+            AddChidren(NameBtn);
+
+            BackGroundBtn.MouseUpEventHandler += Button_MouseUpEventHandler;
+            NameBtn.MouseUpEventHandler += Button_MouseUpEventHandler;
+        }
+
+        /// <summary>
+        /// SetTitle
+        /// </summary>
+        /// <param name="title"></param>
+        public void SetTitle(string title)
+        {
+            NameBtn.Text = title;
+        }
+        /// <summary>
+        /// SetTitle
+        /// </summary>
+        /// <param name="title"></param>
+        public void SetTitle(int title)
+        {
+            SetTitle(Language.StringByID(title));
+        }
+
+        /// <summary>
+        /// SetStatu
+        /// </summary>
+        /// <param name="statu"></param>
+        public void SetStatu(bool statu)
+        {
+            NameBtn.IsSelected = BackGroundBtn.IsSelected = statu;
+            //NameBtn.TextSize = statu ? CommonFormResouce.TextSize_Selected : CommonFormResouce.TextSize;
+            NameBtn.IsBold = statu;
+        }
+
+        #endregion
+
+        #region 鈼� 鐐瑰嚮浜嬩欢_________________________
+
+        /// <summary>
+        /// 鐐瑰嚮浜嬩欢
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void Button_MouseUpEventHandler(object sender, MouseEventArgs e)
+        {
+            try
+            {
+                this.ButtonClickEvent?.Invoke(this, e);
+            }
+            catch (Exception ex)
+            {
+            }
+        }
+        #endregion
+    }
+}
diff --git a/ZigbeeApp/Shared/Phone/Device/CommonForm/RoomMainView.cs b/ZigbeeApp/Shared/Phone/Device/CommonForm/RoomMainView.cs
index 9d32604..8096d1c 100755
--- a/ZigbeeApp/Shared/Phone/Device/CommonForm/RoomMainView.cs
+++ b/ZigbeeApp/Shared/Phone/Device/CommonForm/RoomMainView.cs
@@ -1,5 +1,6 @@
 锘縰sing System;
 using Shared.Common;
+using Shared.Phone.UserView;
 
 namespace Shared.Phone.Device.CommonForm
 {
@@ -17,7 +18,14 @@
         /// CardBG
         /// </summary>
         private Button CardBG;
-
+        /// <summary>
+        /// ClickBtn
+        /// </summary>
+        public Button ClickBtn;
+        /// <summary>
+        /// 鏄惁鍙互瑙﹀彂鐐瑰嚮浜嬩欢
+        /// </summary>
+        public bool CanClick = true;
         /// <summary>
         /// RoomMainView
         /// </summary>
@@ -34,7 +42,7 @@
         /// <summary>
         /// init
         /// </summary>
-        public void Init()
+        public void Init(FrameLayout frameLayout, Common.Room room)
         {
             CardBG = new Button
             {
@@ -74,6 +82,10 @@
                 IsBold=true
             };
             AddChidren(RoomNameButton);
+
+            ClickBtn = new Button { };
+            AddChidren(ClickBtn);
+            
         }
 
         /// <summary>
@@ -93,7 +105,6 @@
         {
             Icon.ImagePath = imagePath;
         }
-
 
     }
 }
diff --git a/ZigbeeApp/Shared/Phone/Device/CommonForm/RoomView.cs b/ZigbeeApp/Shared/Phone/Device/CommonForm/RoomView.cs
index e620358..dd89ea7 100755
--- a/ZigbeeApp/Shared/Phone/Device/CommonForm/RoomView.cs
+++ b/ZigbeeApp/Shared/Phone/Device/CommonForm/RoomView.cs
@@ -1,11 +1,13 @@
 锘縰sing System;
 using Shared.Common;
+using Shared.Phone.Device.DeviceLogic;
 using Shared.Phone.UserCenter;
 using Shared.Phone.UserView;
+using ZigBee.Device;
 
 namespace Shared.Phone.Device.CommonForm
 {
-    public class RoomView:FrameLayout
+    public class RoomView:FrameLayout, ZigBee.Common.IStatus
     {
         /// <summary>
         /// Room
@@ -16,10 +18,136 @@
         /// </summary>
         public Action action;
 
+        FrameLayout roomNameBackground;
+
+        FrameLayout roomTemperatureBackground;
+
+        Button roomListBtn;
+
+        Button temperatureText; 
+
+        Button humidityText;
+
+        CommonDevice temperDevice;
+
+        CommonDevice humidDevice;
+
+        #region 鈼� 鎺ュ彛__________________________
+        /// <summary>
+        /// 澶勭悊鍙樺寲浜嬩欢 --灏嗗純鐢� 鏀圭敤DeviceInfoChange()
+        /// </summary>
+        /// <returns>The changed.</returns>
+        /// <param name="common">Common.</param>
+        public void Changed(CommonDevice common)
+        {
+
+        }
+        /// <summary>
+        /// Changeds the IL ogic status.
+        /// </summary>
+        /// <param name="logic">Logic.</param>
+        public void ChangedILogicStatus(ZigBee.Device.Logic logic)
+        {
+            //throw new NotImplementedException();
+        }
+        /// <summary>
+        /// Changeds the IS cene status.
+        /// </summary>
+        /// <param name="scene">Scene.</param>
+        public void ChangedISceneStatus(Scene scene)
+        {
+            //throw new NotImplementedException();
+        }
+        /// <summary>
+        /// 璁惧鐘舵�佹洿鏂版帴鍙�
+        /// <para>type锛氬鏋滀负 DeviceInComingRespon:璁惧鏂颁笂鎶�</para>
+        /// <para>type锛氬鏋滀负 IASInfoReport:RemoveDeviceRespon</para>
+        /// <para>type锛氬鏋滀负 DeviceStatusReport:璁惧涓婃姤</para>
+        /// <para>type锛氬鏋滀负 IASInfoReport:IAS瀹夐槻淇℃伅涓婃姤</para>
+        /// <para>type锛氬鏋滀负 OnlineStatusChange: 璁惧鍦ㄧ嚎鐘舵�佹洿鏂�</para>
+        /// </summary>
+        /// <param name="common">Common.</param>
+        /// <param name="typeTag">Type tag.</param>
+        public void DeviceInfoChange(CommonDevice common, string typeTag)
+        {
+            if (typeTag == "DeviceStatusReport")
+            {
+                Application.RunOnMainThread(() =>
+                {
+                    try
+                    {
+                        if (common.DeviceStatusReport.AttriBute == null || common.DeviceStatusReport.AttriBute.Count == 0)
+                        {
+                            return;
+                        }
+                        //鏄惁涓哄綋鍓嶈澶�
+                        if ((temperDevice?.DeviceEpoint != common.DeviceEpoint || temperDevice?.DeviceAddr != common.DeviceAddr) && (humidDevice?.DeviceEpoint != common.DeviceEpoint || humidDevice?.DeviceAddr != common.DeviceAddr) )
+                        {
+                            //return;
+                        }
+                        
+                        //if (common.Type == DeviceType.TemperatureSensor)
+                        //{
+                            if (common.DeviceStatusReport.CluterID == 1026)
+                            {
+                                foreach (var data in common.DeviceStatusReport.AttriBute)
+                                {
+                                    if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
+                                    {
+                                        if (data.AttriButeData == 0)
+                                        {
+                                            //0
+                                            humidityText.Text = "--%";
+                                            room.Humidity = 0;
+                                        }
+                                        else
+                                        {
+                                            //灏忔暟鐐归渶瑕佷竴浣�(婀垮害娌℃湁璐熸暟)
+                                            string strValue = data.AttriButeData.ToString();
+                                            strValue = strValue.Substring(0, strValue.Length - 1);
+                                            humidityText.Text = strValue.Insert(strValue.Length - 1, ".") + "%";
+                                            room.Humidity = int.Parse(strValue) * 0.1;
+                                        }
+                                    }
+                                }
+                            }
+                            else if (common.DeviceStatusReport.CluterID == 1029)
+                            {
+                                foreach (var data in common.DeviceStatusReport.AttriBute)
+                                {
+                                    if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
+                                    {
+                                        if (data.AttriButeData == 0)
+                                        {
+                                            //0
+                                            humidityText.Text = "--%";
+                                            room.Humidity = 0;
+                                        }
+                                        else
+                                        {
+                                            //灏忔暟鐐归渶瑕佷竴浣�(婀垮害娌℃湁璐熸暟)
+                                            string strValue = data.AttriButeData.ToString();
+                                            strValue = strValue.Substring(0, strValue.Length - 1);
+                                            humidityText.Text = strValue.Insert(strValue.Length - 1, ".") + "%";
+                                            room.Humidity = int.Parse(strValue) * 0.1;
+                                        }
+                                    }
+                                }
+                            }
+                        //}
+                    }
+                    catch (Exception ex)
+                    {
+                        System.Console.WriteLine($"Error:{ex.Message}");
+                    }
+                });
+            }
+        }
+        #endregion
+
         public override void RemoveFromParent()
         {
-            HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice");
-            HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice");
+            ZbGateway.StatusList.Remove(this);
             base.RemoveFromParent();
         }
 
@@ -34,6 +162,7 @@
             Y = Application.GetRealHeight(y);
             Width = Application.GetRealWidth(717);
             Height = Application.GetRealHeight(478);
+            ZbGateway.StatusList.Add(this);
         }
 
         /// <summary>
@@ -43,6 +172,10 @@
         public void Init(Common.Room r)
         {
             this.room = r;
+
+            this.temperDevice= Common.LocalDevice.Current.GetDevice(room.TemperatrueDevice);
+
+            this.humidDevice= Common.LocalDevice.Current.GetDevice(room.HumidityDevice);
 
             var roomBackView = new FrameLayout()
             {
@@ -58,7 +191,7 @@
             };
             roomBackView.AddChidren(roomImg);
 
-            var roomNameBackground = new FrameLayout
+            roomNameBackground = new FrameLayout
             {
                 X = Application.GetRealWidth(29),
                 Y = Application.GetRealHeight(282),
@@ -75,11 +208,13 @@
                 Width = Application.GetRealWidth(190),
                 Text = room.Name,
                 TextColor = ZigbeeColor.Current.GXCTextWhiteColor,
+                TextSize=10,
+                IsBold=true
             };
             roomNameBackground.AddChidren(roomName);
 
 
-            var roomTemperatureBackground = new FrameLayout
+            roomTemperatureBackground = new FrameLayout
             {
                 X = Application.GetRealWidth(29),
                 Y = Application.GetRealHeight(374),
@@ -100,13 +235,14 @@
             };
             roomTemperatureBackground.AddChidren(temperatureIcon);
 
-            var temperatureText = new Button
+            temperatureText = new Button
             {
                 X = Application.GetRealWidth(69),
                 Width = Application.GetRealWidth(120),
                 Height = Application.GetRealHeight(58),
                 Gravity = Gravity.CenterVertical,
-                Text = $"{room.Temperatrue}鈩�"
+                Text = Math.Abs(room.Temperatrue) <= 0 ? "--鈩�" : $"{room.Temperatrue}鈩�",
+                TextSize=14
             };
             roomTemperatureBackground.AddChidren(temperatureText);
 
@@ -120,111 +256,33 @@
             };
             roomTemperatureBackground.AddChidren(humidityIcon);
 
-            var humidityText = new Button
+            humidityText = new Button
             {
                 X = Application.GetRealWidth(260),
                 Width = Application.GetRealWidth(120),
                 Height = Application.GetRealHeight(58),
                 Gravity = Gravity.CenterVertical,
-                Text = $"{room.Humidity}%"
+                Text = Math.Abs(room.Temperatrue) <= 0 ? "--%" : $"{room.Humidity}%",
+                TextSize=14
             };
             roomTemperatureBackground.AddChidren(humidityText);
 
 
             if (string.IsNullOrEmpty(room.TemperatrueDevice) == false)
             {
-                HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice");
-                HdlGatewayReceiveLogic.Current.AddAttributeEvent("TemperatrueDevice", ReceiveComandDiv.A璁惧灞炴�т笂鎶�, (Action<ZigBee.Device.CommonDevice>)((report) =>
-                {
-                    string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(report);
-                    if (room.TemperatrueDevice != mainKeys)
-                    {
-                        return;
-                    }
-                    //绉婚櫎鎺変簨浠�
-                    HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice");
-
-                    foreach (var data in report.DeviceStatusReport.AttriBute)
-                    {
-                        if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
-                        {
-                            if (data.AttriButeData == 0)
-                            {
-                                //0鈩�
-                                temperatureText.Text = "0.0鈩�";
-                                room.Temperatrue = 0;
-                            }
-                            else if (data.AttriButeData > 32767)
-                            {
-                                //璐熸暟(鐗规畩澶勭悊)
-                                string strValue = (data.AttriButeData - 65536).ToString();
-                                //灏忔暟鐐归渶瑕佷竴浣�
-                                strValue = strValue.Substring(0, strValue.Length - 1);
-                                temperatureText.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�";
-                                room.Temperatrue = int.Parse(strValue) * 0.1;
-                            }
-                            else
-                            {
-                                //灏忔暟鐐归渶瑕佷竴浣�
-                                string strValue = data.AttriButeData.ToString();
-                                strValue = strValue.Substring(0, strValue.Length - 1);
-                                temperatureText.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�";
-                                room.Temperatrue = int.Parse(strValue) * 0.1;
-                            }
-                        }
-                    }
-                }));
                 //鍙戦�佽幏鍙栨俯搴︾殑鍛戒护
                 var dev = Common.LocalDevice.Current.GetDevice(room.TemperatrueDevice);
-                if (dev != null)
-                {
-                    (dev as ZigBee.Device.TemperatureSensor).ReadTemperatureOrHumidity();
-                }
+                ReadDeviceAttributeLogic.Instance.SendTemperatureStatuComand(dev);
             }
 
             if (string.IsNullOrEmpty(room.HumidityDevice) == false)
             {
-                HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice");
-                HdlGatewayReceiveLogic.Current.AddAttributeEvent("HumidityDevice",  ReceiveComandDiv.A璁惧灞炴�т笂鎶�, (report) =>
-                {
-                    string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(report);
-                    if (room.HumidityDevice != mainKeys)
-                    {
-                        return;
-                    }
-                    //绉婚櫎鎺変簨浠�
-                    HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice");
-                    foreach (var data in report.DeviceStatusReport.AttriBute)
-                    {
-                        if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
-                        {
-                            if (data.AttriButeData == 0)
-                            {
-                                //0
-                                humidityText.Text = "0.0%";
-                                room.Humidity = 0;
-                            }
-                            else
-                            {
-                                //灏忔暟鐐归渶瑕佷竴浣�(婀垮害娌℃湁璐熸暟)
-                                string strValue = data.AttriButeData.ToString();
-                                strValue = strValue.Substring(0, strValue.Length - 1);
-                                humidityText.Text = strValue.Insert(strValue.Length - 1, ".") + "%";
-                                room.Humidity = int.Parse(strValue) * 0.1;
-                            }
-                        }
-                    }
-                });
-                //鍙戦�佽幏鍙栨箍搴︾殑鍛戒护
                 var dev = Common.LocalDevice.Current.GetDevice(room.HumidityDevice);
-                if (dev != null)
-                {
-                    (dev as ZigBee.Device.TemperatureSensor).ReadTemperatureOrHumidity();
-                }
+                ReadDeviceAttributeLogic.Instance.SendHumidityStatuComand(dev);
             }
 
 
-            var roomListBtn = new Button()
+            roomListBtn = new Button()
             {
                 X = roomBackView.Width - Application.GetRealWidth(100 + 20),
                 Y = Application.GetRealHeight(20),
@@ -247,5 +305,13 @@
                 };
             };
         }
+
+        /// <summary>
+        /// HideName
+        /// </summary>
+        public void HideName(bool statu)
+        {
+            roomNameBackground.Visible = roomTemperatureBackground.Visible = roomListBtn.Visible = !statu;
+        }
     }
 }
diff --git a/ZigbeeApp/Shared/Phone/Device/CommonForm/SceneMainView.cs b/ZigbeeApp/Shared/Phone/Device/CommonForm/SceneMainView.cs
index 62e5abc..54faf9b 100755
--- a/ZigbeeApp/Shared/Phone/Device/CommonForm/SceneMainView.cs
+++ b/ZigbeeApp/Shared/Phone/Device/CommonForm/SceneMainView.cs
@@ -149,6 +149,8 @@
                 TextColor = ZigbeeColor.Current.GXCTextWhiteColor,
                 SelectedTextColor = ZigbeeColor.Current.GXCTextSelectedColor,
                 TextAlignment = TextAlignment.CenterLeft,
+                TextSize=14,
+                IsBold=true
             };
             AddChidren(SceneNameButton);
         }
diff --git a/ZigbeeApp/Shared/Phone/Device/CommonForm/SelectDeviceWithPickViewRow.cs b/ZigbeeApp/Shared/Phone/Device/CommonForm/SelectDeviceWithPickViewRow.cs
index 609b606..8d5cf18 100755
--- a/ZigbeeApp/Shared/Phone/Device/CommonForm/SelectDeviceWithPickViewRow.cs
+++ b/ZigbeeApp/Shared/Phone/Device/CommonForm/SelectDeviceWithPickViewRow.cs
@@ -89,6 +89,7 @@
                 Height = Application.GetRealHeight(80),
                 TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                 TextAlignment = TextAlignment.CenterLeft,
+                TextSize=14
             };
             AddChidren(NameBtn);
             SelectBtn = new Button()
@@ -100,6 +101,17 @@
                 Visible = false
             };
             AddChidren(SelectBtn);
+
+            var line1 = new Button()
+            {
+                X = Application.GetRealWidth(81),
+                Y = Application.GetRealHeight(127),
+                Width = Application.GetRealWidth(919),
+                Height = 1,
+                BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor,
+            };
+            AddChidren(line1);
+
 
             ClickButton = new Button
             {
@@ -147,9 +159,9 @@
             line = new Button()
             {
                 X = Application.GetRealWidth(81),
-                Y = this.Height - 2,
+                Y = this.Height - 1,
                 Width = Application.GetRealWidth(919),
-                Height = 2,
+                Height = 1,
                 BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor,
             };
             AddChidren(line);
diff --git a/ZigbeeApp/Shared/Phone/Device/CommonForm/SelectDeviceWithSeekBarRow.cs b/ZigbeeApp/Shared/Phone/Device/CommonForm/SelectDeviceWithSeekBarRow.cs
index d32c138..0d6a763 100755
--- a/ZigbeeApp/Shared/Phone/Device/CommonForm/SelectDeviceWithSeekBarRow.cs
+++ b/ZigbeeApp/Shared/Phone/Device/CommonForm/SelectDeviceWithSeekBarRow.cs
@@ -84,6 +84,7 @@
                 Height = Application.GetRealHeight(80),
                 TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                 TextAlignment = TextAlignment.CenterLeft,
+                TextSize=14
             };
             AddChidren(NameBtn);
 
@@ -124,17 +125,18 @@
                 Width = Application.GetRealWidth(200),
                 Gravity = Gravity.CenterHorizontal,
                 Text = $"{(int)(SeekBar.Progress * 1.0 / MaxLevel * 100)} %",
-                TextColor = ZigbeeColor.Current.GXCTextGrayColor
+                TextColor = ZigbeeColor.Current.GXCTextGrayColor,
+                TextSize=12
             };
             AddChidren(SeekBarTitle);
 
             line = new Button()
             {
                 X = Application.GetRealWidth(81),
-                Y = this.Height - 2,
+                Y = this.Height - 1,
                 Width = Application.GetRealWidth(919),
-                Height = 2,
-                BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor,
+                Height = 1,
+                BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor2,
             };
             AddChidren(line);
 
diff --git a/ZigbeeApp/Shared/Phone/Device/CommonForm/SelectSceneRow.cs b/ZigbeeApp/Shared/Phone/Device/CommonForm/SelectSceneRow.cs
index 262a2f8..0c2f880 100755
--- a/ZigbeeApp/Shared/Phone/Device/CommonForm/SelectSceneRow.cs
+++ b/ZigbeeApp/Shared/Phone/Device/CommonForm/SelectSceneRow.cs
@@ -88,6 +88,7 @@
                 Gravity = Gravity.CenterVertical,
                 TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                 TextAlignment = TextAlignment.CenterLeft,
+                TextSize=15
             };
             AddChidren(NameBtn);
 
@@ -105,10 +106,10 @@
             line = new Button()
             {
                 X = Application.GetRealWidth(180),
-                Y = this.Height - 2,
+                Y = this.Height - 1,
                 Width = Application.GetRealWidth(841),
-                Height = 2,
-                BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor,
+                Height = 1,
+                BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor2,
             };
             AddChidren(line);
 
diff --git a/ZigbeeApp/Shared/Phone/Device/CommonForm/SelectSceneStatuRow.cs b/ZigbeeApp/Shared/Phone/Device/CommonForm/SelectSceneStatuRow.cs
index 5598511..6f92f8b 100755
--- a/ZigbeeApp/Shared/Phone/Device/CommonForm/SelectSceneStatuRow.cs
+++ b/ZigbeeApp/Shared/Phone/Device/CommonForm/SelectSceneStatuRow.cs
@@ -73,6 +73,7 @@
                 Height = Application.GetRealHeight(80),
                 TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                 TextAlignment = TextAlignment.CenterLeft,
+                TextSize=14
             };
             AddChidren(NameBtn);
 
@@ -96,10 +97,10 @@
             line = new Button()
             {
                 X = Application.GetRealWidth(81),
-                Y = this.Height - 2,
+                Y = this.Height - 1,
                 Width = Application.GetRealWidth(919),
-                Height = 2,
-                BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor,
+                Height = 1,
+                BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor2,
             };
             AddChidren(line);
         }
diff --git a/ZigbeeApp/Shared/Phone/Device/CommonForm/SelectZone.cs b/ZigbeeApp/Shared/Phone/Device/CommonForm/SelectZone.cs
index 78d0cef..2779996 100755
--- a/ZigbeeApp/Shared/Phone/Device/CommonForm/SelectZone.cs
+++ b/ZigbeeApp/Shared/Phone/Device/CommonForm/SelectZone.cs
@@ -13,7 +13,11 @@
         private List<string> floorList = new List<string> { };
         private List<string> roomList = new List<string> { };
         private List<string> roomIdList = new List<string> { };
-        private string currentId;
+        /// <summary>
+        /// curRoom
+        /// </summary>
+        private Common.Room curRoom;
+
         public SelectZone()
         {
         }
@@ -23,70 +27,54 @@
         /// </summary>
         public void Init()
         {
-            var dialog = new FrameLayout()
+            List<string> floorIds = new List<string> { };
+            List<string> floorNames = new List<string> { };
+            List<List<string>> roomNames = new List<List<string>> { };
+            List<List<Common.Room>> rooms = new List<List<Common.Room>> { };
+            List<Common.Room> rs = new List<Common.Room> { };
+            List<string> rNames = new List<string> { };
+            if (Config.Instance.Home.FloorDics.Count > 0)
             {
-                BackgroundColor = ZigbeeColor.Current.GXCDailogBackGroundColor
-            };
-            AddChidren(dialog);
-
-            dialog.MouseUpEventHandler += (sender, e) =>
+                foreach (var floor in Config.Instance.Home.FloorDics)
+                {
+                    floorIds.Add(floor.Key);
+                    floorNames.Add(floor.Value);
+                    if (Common.Room.CurrentRoom.GetRoomsByFloorId(floor.Key).Count > 0)
+                    {
+                        roomNames.Add(Common.Room.CurrentRoom.GetRoomNamesByFloorId(floor.Key));
+                        rooms.Add(Common.Room.CurrentRoom.GetRoomsByFloorId(floor.Key));
+                    }
+                }
+                PickerView.ShowSecondary(floorNames, roomNames, (index1, index2) =>
+                {
+                    curRoom = rooms[index1][index2];
+                    ZoneAction?.Invoke(curRoom);
+                    RemoveFromParent();
+                }, 0, 0, Language.StringByID(R.MyInternationalizationString.BelongFloor),
+               Language.StringByID(R.MyInternationalizationString.Confrim),
+               Language.StringByID(R.MyInternationalizationString.Cancel));
+            }
+            else
             {
-                RemoveFromParent();
-            };
-
-            var backgroundFL = new FrameLayout
-            {
-                Y = Application.GetRealHeight(1115),
-                Height = Application.GetRealHeight(805),
-                BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor,
-                Radius = (uint)Application.GetRealHeight(20)
-            };
-            dialog.AddChidren(backgroundFL);
-
-            var topView = new FrameLayout
-            {
-                Height = Application.GetRealHeight(138)
-            };
-            backgroundFL.AddChidren(topView);
-
-            var cancle = new Button
-            {
-                X = Application.GetRealWidth(80),
-                Width = Application.GetRealWidth(300),
-                TextAlignment = TextAlignment.CenterLeft,
-                TextColor = ZigbeeColor.Current.GXCTextGrayColor,
-                TextID = R.MyInternationalizationString.Cancel,
-                TextSize = 14
-            };
-            topView.AddChidren(cancle);
-
-            var title = new Button
-            {
-                Width = Application.GetRealWidth(300),
-                Gravity = Gravity.CenterHorizontal,
-                TextColor = ZigbeeColor.Current.GXCTextBlackColor2,
-                TextID = R.MyInternationalizationString.AddTo,
-                TextSize = 16
-            };
-            topView.AddChidren(title);
-
-            var confrim = new Button
-            {
-                X = Application.GetRealWidth(CommonFormResouce.AppRealWidth - 80 - 300),
-                Width = Application.GetRealWidth(300),
-                TextAlignment = TextAlignment.CenterRight,
-                TextColor = ZigbeeColor.Current.GXCTextSelectedColor2,
-                TextID = R.MyInternationalizationString.Confrim,
-                TextSize = 14
-            };
-            topView.AddChidren(confrim);
-
-            pickView = new UIPickerView
-            {
-                Y = Application.GetRealHeight(20 + 138),
-                Height = Application.GetRealHeight(450)
-            };
-            backgroundFL.AddChidren(pickView);
+                for (int i = 0; i < Common.Room.Lists.Count; i++)
+                {
+                    var r = Common.Room.Lists[i];
+                    if (r.IsLove)
+                    {
+                        continue;
+                    }
+                    rs.Add(r);
+                    rNames.Add(r.Name);
+                }
+                PickerView.Show(rNames, (index1) =>
+                {
+                    curRoom = rs[index1];
+                    ZoneAction?.Invoke(curRoom);
+                    RemoveFromParent();
+                }, 0, Language.StringByID(R.MyInternationalizationString.BelongFloor),
+               Language.StringByID(R.MyInternationalizationString.Confrim),
+               Language.StringByID(R.MyInternationalizationString.Cancel));
+            }
 
             foreach (var floor in Config.Instance.Home.FloorDics)
             {
@@ -101,28 +89,7 @@
                 roomList.Add(room.Name);
                 roomIdList.Add(room.Id);
             }
-
-            if (floorList.Count == 0)
-            {
-                pickView.setNPicker(roomList, null, null);
-                currentId = roomIdList[0];
-                pickView.OnSelectChangeEvent += (l1, l2, l3) =>
-                {
-                    currentId = roomIdList[l1];
-                };
-            }
-            else
-            {
-                pickView.setNPicker(floorList, roomList, null);
-                currentId = roomIdList[0];
-                pickView.OnSelectChangeEvent += (l1, l2, l3) =>
-                {
-                    currentId = roomIdList[l2];
-                };
-            }
-
-            cancle.MouseUpEventHandler += Close;
-            confrim.MouseUpEventHandler += Confrim_MouseEvent;
+           
         }
 
         /// <summary>
@@ -142,10 +109,7 @@
         /// <param name="mouseEventArgs"></param>
         private void Confrim_MouseEvent(object sender, MouseEventArgs mouseEventArgs)
         {
-            if (Shared.Common.Room.CurrentRoom.GetRoomById(currentId) != null)
-            {
-                ZoneAction?.Invoke(Shared.Common.Room.CurrentRoom.GetRoomById(currentId));
-            }
+            ZoneAction?.Invoke(curRoom);
             RemoveFromParent();
         }
     }
diff --git a/ZigbeeApp/Shared/Phone/Device/CommonForm/TopFrameLayout.cs b/ZigbeeApp/Shared/Phone/Device/CommonForm/TopFrameLayout.cs
index f5d0bda..a9624fe 100755
--- a/ZigbeeApp/Shared/Phone/Device/CommonForm/TopFrameLayout.cs
+++ b/ZigbeeApp/Shared/Phone/Device/CommonForm/TopFrameLayout.cs
@@ -65,7 +65,8 @@
             {
                 Y = Application.GetRealHeight(CommonFormResouce.TopStatuFrameLayout_Height),
                 Height = Application.GetRealHeight(CommonFormResouce.Topview_Height),
-                Width = Application.GetRealWidth(CommonPage.AppRealWidth)
+                Width = Application.GetRealWidth(CommonPage.AppRealWidth),
+                BackgroundColor=ZigbeeColor.Current.GXCTopViewBackgroundColor
             };
             AddChidren(topView);
 
@@ -73,7 +74,7 @@
             {
                 Y=Height-1,
                 Height=1,
-                BackgroundColor=ZigbeeColor.Current.GXCGrayLineColor3
+                BackgroundColor=ZigbeeColor.Current.GXCGrayLineColor4
             };
             AddChidren(line);
         }
diff --git a/ZigbeeApp/Shared/Phone/Device/Curtain/RollerShadeControl.cs b/ZigbeeApp/Shared/Phone/Device/Curtain/RollerShadeControl.cs
index c60af98..5d4d399 100755
--- a/ZigbeeApp/Shared/Phone/Device/Curtain/RollerShadeControl.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Curtain/RollerShadeControl.cs
@@ -80,6 +80,15 @@
         /// </summary>
         public bool IsDrawerLockMode;
 
+        /// <summary>
+        /// ProgressBtn
+        /// </summary>
+        Button ProgressBtn;
+        /// <summary>
+        /// ProgressBtnY
+        /// </summary>
+        int ProgressBtnY;
+
         #endregion
 
         #region 鈼� 鎺ュ彛___________________________
@@ -695,11 +704,36 @@
                 curtainRollSeekBar.Gravity = Gravity.CenterHorizontal;
                 curtainRollSeekBar.Progress = (device.CommonDevice as Rollershade).WcdCurrentPositionLiftPercentage;
                 layout.AddChidren(curtainRollSeekBar);
-
+                curtainRollSeekBar.IsProgressTextShow = false;
+                curtainRollSeekBar.CurtainPaddingTop = Application.GetRealHeight(110);
                 curtainRollSeekBar.OnStopTrackingTouchEvent += (sender, e) =>
                 {
                     (device.CommonDevice as Rollershade).WcdGoToTiltValue(curtainRollSeekBar.Progress);
                 };
+
+                curtainRollSeekBar.OnStartTrackingTouchEvent += (sender, e) =>
+                {
+                    OnProgressButtonMove(curtainRollSeekBar.Progress);
+                    ProgressBtn.Visible = true;
+                };
+
+                curtainRollSeekBar.OnStopTrackingTouchEvent += (sender, e) =>
+                {
+                    ProgressBtn.Visible = false;
+                };
+
+                curtainRollSeekBar.OnProgressChangedEvent += (send2, e2) =>
+                {
+
+                    OnProgressButtonMove(e2);
+
+                    //鍒ゆ柇鏄惁300ms灞忚斀
+                    //if (curtainRollSeekBar.IsProgressChangeDelay()) return;
+
+                    //(device.CommonDevice as Rollershade).WcdGoToTiltValue(curtainRollSeekBar.Progress);
+                };
+
+                InitProgressBtn(layout);
             }
             else
             {
@@ -717,7 +751,32 @@
             }
         }
 
+        /// <summary>
+        /// 娣诲姞杩涘害鎸夐挳
+        /// </summary>
+        private void InitProgressBtn(FrameLayout layout)
+        {
+            ProgressBtnY = curtainRollSeekBar.Y - Application.GetMinReal(204);
+            ProgressBtn = new Button()
+            {
+                Y = ProgressBtnY,
+                Width = Application.GetMinReal(135),
+                Height = Application.GetMinReal(104),
+                UnSelectedImagePath = "Item/ProgressBubbles.png",
+                Visible = false,
+                Gravity = Gravity.CenterHorizontal
+            };
+            layout.AddChidren(ProgressBtn);
+        }
 
+        /// <summary>
+        /// OnProgressButtonMove
+        /// </summary>
+        private void OnProgressButtonMove(int mProgress)
+        {
+            ProgressBtn.Y = ProgressBtnY + curtainRollSeekBar.NowProgressY;
+            ProgressBtn.Text = mProgress + "%";
+        }
 
         #endregion
 
diff --git a/ZigbeeApp/Shared/Phone/Device/DeviceLogic/ReadDeviceAttributeLogic.cs b/ZigbeeApp/Shared/Phone/Device/DeviceLogic/ReadDeviceAttributeLogic.cs
index e283fca..aeea43a 100755
--- a/ZigbeeApp/Shared/Phone/Device/DeviceLogic/ReadDeviceAttributeLogic.cs
+++ b/ZigbeeApp/Shared/Phone/Device/DeviceLogic/ReadDeviceAttributeLogic.cs
@@ -35,6 +35,10 @@
         /// <param name="device">璁惧</param>
         public void SendACStatuComand(CommonDevice device)
         {
+            if (device == null)
+            {
+                return;
+            }
             new System.Threading.Thread(() =>
             {
                 SendFanStatuComand(device);
@@ -50,6 +54,10 @@
         /// <param name="device">璁惧</param>
         private void SendThermostatStatuComand(CommonDevice device)
         {
+            if (device == null)
+            {
+                return;
+            }
             var jObject = new Newtonsoft.Json.Linq.JObject
             {
                 { "DeviceAddr",device.DeviceAddr },
@@ -99,6 +107,10 @@
         /// <param name="device">璁惧</param>
         private void SendFanStatuComand(CommonDevice device)
         {
+            if (device == null)
+            {
+                return;
+            }
             var jObject = new Newtonsoft.Json.Linq.JObject
             {
                 { "DeviceAddr",device.DeviceAddr },
@@ -131,6 +143,10 @@
         /// <param name="device">绐楀笜</param>
         public void SendCurtainStatuComand(CommonDevice device)
         {
+            if (device == null)
+            {
+                return;
+            }
             var jObject = new Newtonsoft.Json.Linq.JObject
             {
                 { "DeviceAddr",device.DeviceAddr },
@@ -169,6 +185,10 @@
         /// <param name="device"></param>
         public void SendDimmableLightStatuComand(CommonDevice device)
         {
+            if (device == null)
+            {
+                return;
+            }
             new System.Threading.Thread(() =>
             {
                 SendSwitchStatuComand(device);
@@ -184,6 +204,10 @@
         /// <param name="device">绐楀笜</param>
         private void SendSwitchStatuComand(CommonDevice device)
         {
+            if (device == null)
+            {
+                return;
+            }
             var jObject = new Newtonsoft.Json.Linq.JObject
             {
                 { "DeviceAddr",device.DeviceAddr },
@@ -209,6 +233,10 @@
         /// <param name="device">绐楀笜</param>
         private void SendLevelStatuComand(CommonDevice device)
         {
+            if (device == null)
+            {
+                return;
+            }
             var jObject = new Newtonsoft.Json.Linq.JObject
             {
                 { "DeviceAddr",device.DeviceAddr },
@@ -229,5 +257,68 @@
         }
 
         #endregion
+
+        #region 鈼� 娓╂箍搴___________________________
+
+        /// <summary>
+        /// 璇诲彇娓╁害
+        /// </summary>
+        /// <param name="device"></param>
+        public void SendTemperatureStatuComand(CommonDevice device)
+        {
+            if (device == null)
+            {
+                return;
+            }
+            var jObject = new Newtonsoft.Json.Linq.JObject
+            {
+                { "DeviceAddr",device.DeviceAddr },
+                { "Epoint", device.DeviceEpoint },
+                { "Cluster_ID", (int)Cluster_ID.TemperatureMeasurement },
+                { "Command", 108 }
+            };
+            var attriBute = new Newtonsoft.Json.Linq.JArray
+            {
+               new Newtonsoft.Json.Linq.JObject
+               {
+                 { "AttriButeId", (int)AttriButeId.MeasuredValue}
+               }
+            };
+            var data = new Newtonsoft.Json.Linq.JObject { { "AttriBute", attriBute } };
+            jObject.Add("Data", data);
+            device.Gateway?.Send(("GetDeviceStatus"), jObject.ToString());
+        }
+
+        /// <summary>
+        /// 璇诲彇婀垮害
+        /// </summary>
+        /// <param name="device"></param>
+        public void SendHumidityStatuComand(CommonDevice device)
+        {
+            if (device == null)
+            {
+                return;
+            }
+            var jObject = new Newtonsoft.Json.Linq.JObject
+            {
+                { "DeviceAddr",device.DeviceAddr },
+                { "Epoint", device.DeviceEpoint },
+                { "Cluster_ID", (int)Cluster_ID.RelativeHumidityMeasurement },
+                { "Command", 108 }
+            };
+            var attriBute = new Newtonsoft.Json.Linq.JArray
+            {
+               new Newtonsoft.Json.Linq.JObject
+               {
+                 { "AttriButeId", (int)AttriButeId.MeasuredValue}
+               }
+            };
+            var data = new Newtonsoft.Json.Linq.JObject { { "AttriBute", attriBute } };
+            jObject.Add("Data", data);
+            device.Gateway?.Send(("GetDeviceStatus"), jObject.ToString());
+        }
+
+        #endregion
+
     }
 }
diff --git a/ZigbeeApp/Shared/Phone/Device/Light/AirSwitchControl.cs b/ZigbeeApp/Shared/Phone/Device/Light/AirSwitchControl.cs
index 1c0e296..528ae90 100755
--- a/ZigbeeApp/Shared/Phone/Device/Light/AirSwitchControl.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Light/AirSwitchControl.cs
@@ -138,7 +138,7 @@
                                 }
                                 light.OnOffStatus = light.DeviceStatusReport.AttriBute[0].AttriButeData;
                                 deviceIMG.IsSelected = switchBtn.IsSelected = light.OnOffStatus == 1;
-                                StatuBtn.Text = CommonFormResouce.GetSwitchStatu(deviceIMG.IsSelected);
+                                StatuBtn.Text = $"{Language.StringByID(R.MyInternationalizationString.Current)} {device.GetDeviceStatu()}";
                                 light.LastDateTime = DateTime.Now;
                             }
                         }
@@ -307,7 +307,8 @@
                 Gravity = Gravity.CenterHorizontal,
                 Text = device.CommonDevice.DeviceEpointName,
                 TextColor = ZigbeeColor.Current.GXCTextBlackColor,
-                TextSize = 15
+                TextSize = 15,
+                IsBold=true
             };
             itemView.AddChidren(deviceNameBtn);
 
@@ -318,7 +319,8 @@
                 Height = Application.GetRealHeight(60),
                 Gravity = Gravity.CenterHorizontal,
                 TextColor = ZigbeeColor.Current.GXCTextGrayColor,
-                Text = CommonFormResouce.GetSwitchStatu((device.CommonDevice as ZigBee.Device.AirSwitch).OnOffStatus == 1)
+                Text = $"{Language.StringByID(R.MyInternationalizationString.Current)} {device.GetDeviceStatu()}",
+                TextSize = 10
             };
             itemView.AddChidren(StatuBtn);
 
@@ -381,7 +383,8 @@
                 Height = Application.GetRealHeight(50),
                 Text = room.Name,
                 TextAlignment = TextAlignment.CenterLeft,
-                TextColor = ZigbeeColor.Current.GXCTextWhiteColor
+                TextColor = ZigbeeColor.Current.GXCTextWhiteColor,
+                TextSize = 12
             };
             itemView.AddChidren(roomName);
         }
@@ -414,7 +417,7 @@
             zbGateway.ReportAction += UpdateDeviceControllStatu;
             switchBtn.IsSelected = !switchBtn.IsSelected;
             deviceIMG.IsSelected = !deviceIMG.IsSelected;
-            StatuBtn.Text = CommonFormResouce.GetSwitchStatu(deviceIMG.IsSelected);
+            StatuBtn.Text = deviceIMG.IsSelected ? $"{Language.StringByID(R.MyInternationalizationString.Current)} {Language.StringByID(R.MyInternationalizationString.Open)}" : $"{Language.StringByID(R.MyInternationalizationString.Current)} {Language.StringByID(R.MyInternationalizationString.Shut)}";
             if (switchBtn.IsSelected == true)
             {
                 (device.CommonDevice as ZigBee.Device.AirSwitch).SwitchControl(1);
diff --git a/ZigbeeApp/Shared/Phone/Device/Light/DimmableLightControl.cs b/ZigbeeApp/Shared/Phone/Device/Light/DimmableLightControl.cs
index 94c1dc7..dc7d547 100755
--- a/ZigbeeApp/Shared/Phone/Device/Light/DimmableLightControl.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Light/DimmableLightControl.cs
@@ -67,6 +67,15 @@
         /// IsDrawerLockMode
         /// </summary>
         public bool IsDrawerLockMode;
+        /// <summary>
+        /// ProgressBtn
+        /// </summary>
+        Button ProgressBtn;
+        /// <summary>
+        /// ProgressBtnY
+        /// </summary>
+        int ProgressBtnY;
+
         #endregion
 
         #region 鈼� 鎺ュ彛__________________________
@@ -137,7 +146,8 @@
                                 }
                                 dimmableLight.OnOffStatus = dimmableLight.DeviceStatusReport.AttriBute[0].AttriButeData;
                                 switchBtn.IsSelected = dimmableLight.OnOffStatus == 1;
-                                StatuBtn.Text = CommonFormResouce.GetSwitchStatu(switchBtn.IsSelected);
+                                StatuBtn.Text = switchBtn.IsSelected ? $"{Language.StringByID(R.MyInternationalizationString.CurrentLightLevel)} { device.GetDeviceStatu()}" : $"{Language.StringByID(R.MyInternationalizationString.Current)} {Language.StringByID(R.MyInternationalizationString.Shut)}";
+
                                 if (switchBtn.IsSelected == true)
                                 {
                                     levelSeekBar.IsClickable = true;
@@ -170,6 +180,8 @@
                                         dimmableLight.Level = attriButeList[0].AttriButeData;
                                         dimmableLight.LastDateTime = DateTime.Now;
                                         levelSeekBar.Progress = (int)(dimmableLight.Level*1.0/MaxLevel*100);
+                                        StatuBtn.Text = switchBtn.IsSelected ? $"{Language.StringByID(R.MyInternationalizationString.CurrentLightLevel)} { device.GetDeviceStatu()}" : $"{Language.StringByID(R.MyInternationalizationString.Current)} {Language.StringByID(R.MyInternationalizationString.Shut)}";
+
                                         break;
                                 }
                             }
@@ -366,7 +378,8 @@
                 Gravity = Gravity.CenterHorizontal,
                 Text = device.CommonDevice.DeviceEpointName,
                 TextColor = ZigbeeColor.Current.GXCTextBlackColor,
-                TextSize = 15
+                TextSize = 15,
+                IsBold=true
             };
             itemView.AddChidren(deviceNameBtn);
 
@@ -377,8 +390,10 @@
                 Height = Application.GetRealHeight(60),
                 Gravity = Gravity.CenterHorizontal,
                 TextColor = ZigbeeColor.Current.GXCTextGrayColor,
-                Text = CommonFormResouce.GetSwitchStatu((device.CommonDevice as DimmableLight).OnOffStatus == 1)
+                Text = dimmableLight.Level>0?$"{Language.StringByID(R.MyInternationalizationString.CurrentLightLevel)} { device.GetDeviceStatu()}" :$"{Language.StringByID(R.MyInternationalizationString.Current)} {Language.StringByID(R.MyInternationalizationString.Shut)}",
+                TextSize=10
             };
+
             itemView.AddChidren(StatuBtn);
 
             levelSeekBar = new WaveSeekBar()
@@ -387,11 +402,13 @@
                 Width = Application.GetRealWidth(271),
                 Height = Application.GetRealHeight(533),
                 Gravity = Gravity.CenterHorizontal,
-                WavePadding = 2,
+                WavePadding = Application.GetRealWidth(8),
                 MaxValue=100,
                 Progress = (int)(dimmableLight.Level*1.0/MaxLevel*100),
-                WaveColor = ZigbeeColor.Current.GXCWaveSeekBarColor
+                WaveColor = ZigbeeColor.Current.GXCWaveSeekBarColor,
+                CornerRadius= Application.GetRealHeight(58)
             };
+
             itemView.AddChidren(levelSeekBar);
 
             if (dimmableLight.OnOffStatus == 1)
@@ -405,10 +422,31 @@
                 levelSeekBar.WaveColor = ZigbeeColor.Current.GXCWaveSeekBarUnSelectedColor;
             }
 
+            levelSeekBar.OnStartTrackingTouchEvent += (sender, e) =>
+            {
+                OnProgressButtonMove(levelSeekBar.Progress);
+                levelSeekBar.IsProgressTextShow = false;
+                ProgressBtn.Visible = true;
+            };
+
+            levelSeekBar.OnStopTrackingTouchEvent += (sender, e) =>
+            {
+                ProgressBtn.Visible = false;
+                levelSeekBar.IsProgressTextShow = true;
+            };
+
             levelSeekBar.OnProgressChangedEvent += (send2, e2) =>
             {
+
+                OnProgressButtonMove(e2);
+
+                //鍒ゆ柇鏄惁300ms灞忚斀
+                if (levelSeekBar.IsProgressChangeDelay()) return;
+
                 dimmableLight.SetLevel((int)(levelSeekBar.Progress * MaxLevel / 100.0));
             };
+
+            InitProgressBtn(itemView);
 
             switchBtn = new Button()
             {
@@ -457,9 +495,37 @@
                 Height = Application.GetRealHeight(50),
                 Text = room.Name,
                 TextAlignment = TextAlignment.CenterLeft,
-                TextColor = ZigbeeColor.Current.GXCTextWhiteColor
+                TextColor = ZigbeeColor.Current.GXCTextWhiteColor,
+                TextSize = 12
             };
             itemView.AddChidren(roomName);
+        }
+
+        /// <summary>
+        /// OnProgressButtonMove
+        /// </summary>
+        private void OnProgressButtonMove(int mProgress)
+        {
+            ProgressBtn.Y = ProgressBtnY + levelSeekBar.NowProgressY;
+            ProgressBtn.Text = mProgress + "%";
+        }
+
+        /// <summary>
+        /// 娣诲姞杩涘害鎸夐挳
+        /// </summary>
+        private void InitProgressBtn(FrameLayout layout)
+        {
+            ProgressBtnY = levelSeekBar.Y - Application.GetMinReal(154);
+            ProgressBtn = new Button()
+            {
+                Y = ProgressBtnY,
+                Width = Application.GetMinReal(135),
+                Height = Application.GetMinReal(104),
+                UnSelectedImagePath = "Item/ProgressBubbles.png",
+                Visible = false,
+                Gravity = Gravity.CenterHorizontal
+            };
+            layout.AddChidren(ProgressBtn);
         }
 
         #endregion
@@ -486,7 +552,7 @@
         private void Switch_MouseUpEvent(object sender, MouseEventArgs eventArgs)
         {
             switchBtn.IsSelected = !switchBtn.IsSelected;
-            StatuBtn.Text = CommonFormResouce.GetSwitchStatu(switchBtn.IsSelected);
+            StatuBtn.Text = switchBtn.IsSelected ? $"{Language.StringByID(R.MyInternationalizationString.CurrentLightLevel)} { device.GetDeviceStatu()}" : $"{Language.StringByID(R.MyInternationalizationString.Current)} {Language.StringByID(R.MyInternationalizationString.Shut)}";
             if (switchBtn.IsSelected == true)
             {
                 dimmableLight.SwitchControl(1);
diff --git a/ZigbeeApp/Shared/Phone/Device/Light/LightControl.cs b/ZigbeeApp/Shared/Phone/Device/Light/LightControl.cs
index ed3cd89..5ffffc4 100755
--- a/ZigbeeApp/Shared/Phone/Device/Light/LightControl.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Light/LightControl.cs
@@ -137,7 +137,7 @@
                                 }
                                 light.OnOffStatus = light.DeviceStatusReport.AttriBute[0].AttriButeData;
                                 deviceIMG.IsSelected = switchBtn.IsSelected = light.OnOffStatus == 1;
-                                StatuBtn.Text = CommonFormResouce.GetSwitchStatu(deviceIMG.IsSelected);
+                                StatuBtn.Text = $"{Language.StringByID(R.MyInternationalizationString.Current)} {device.GetDeviceStatu()}";
                                 light.LastDateTime = DateTime.Now;
                             }
                         }
@@ -330,7 +330,8 @@
                 Gravity = Gravity.CenterHorizontal,
                 Text = device.CommonDevice.DeviceEpointName,
                 TextColor = ZigbeeColor.Current.GXCTextBlackColor,
-                TextSize=15
+                TextSize=15,
+                IsBold=true
             };
             itemView.AddChidren(deviceNameBtn);
 
@@ -341,9 +342,11 @@
                 Height = Application.GetRealHeight(60),
                 Gravity = Gravity.CenterHorizontal,
                 TextColor = ZigbeeColor.Current.GXCTextGrayColor,
-                Text=CommonFormResouce.GetSwitchStatu((device.CommonDevice as ToggleLight).OnOffStatus == 1)
+                Text= $"{Language.StringByID(R.MyInternationalizationString.Current)} {device.GetDeviceStatu()}",
+                TextSize =10
             };
             itemView.AddChidren(StatuBtn);
+
 
             deviceIMG = new Button()
             {
@@ -404,7 +407,8 @@
                 Height = Application.GetRealHeight(50),
                 Text = room.Name,
                 TextAlignment = TextAlignment.CenterLeft,
-                TextColor = ZigbeeColor.Current.GXCTextWhiteColor
+                TextColor = ZigbeeColor.Current.GXCTextWhiteColor,
+                TextSize=12
             };
             itemView.AddChidren(roomName);
         }
@@ -437,7 +441,8 @@
             zbGateway.ReportAction += UpdateDeviceControllStatu;
             switchBtn.IsSelected = !switchBtn.IsSelected;
             deviceIMG.IsSelected = !deviceIMG.IsSelected;
-            StatuBtn.Text = CommonFormResouce.GetSwitchStatu(deviceIMG.IsSelected);
+            StatuBtn.Text = deviceIMG.IsSelected ? $"{Language.StringByID(R.MyInternationalizationString.Current)} {Language.StringByID(R.MyInternationalizationString.Open)}" : $"{Language.StringByID(R.MyInternationalizationString.Current)} {Language.StringByID(R.MyInternationalizationString.Shut)}";
+
             if (switchBtn.IsSelected == true)
             {
                 (device.CommonDevice as ToggleLight).SwitchControl(1);
diff --git a/ZigbeeApp/Shared/Phone/Device/Light/OnOffControl.cs b/ZigbeeApp/Shared/Phone/Device/Light/OnOffControl.cs
index 047aa8b..9d7c7a3 100755
--- a/ZigbeeApp/Shared/Phone/Device/Light/OnOffControl.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Light/OnOffControl.cs
@@ -145,7 +145,7 @@
                                 }
                                 light.OnOffStatus = light.DeviceStatusReport.AttriBute[0].AttriButeData;
                                 SetONOFFStatu(light.OnOffStatus == 1);
-                                StatuBtn.Text = CommonFormResouce.GetSwitchStatu(light.OnOffStatus == 1);
+                                StatuBtn.Text = $"{Language.StringByID(R.MyInternationalizationString.Current)} {device.GetDeviceStatu()}";
                                 light.LastDateTime = DateTime.Now;
                             }
                         }
@@ -337,7 +337,8 @@
                 Gravity = Gravity.CenterHorizontal,
                 Text = device.CommonDevice.DeviceEpointName,
                 TextColor = ZigbeeColor.Current.GXCTextBlackColor,
-                TextSize = 15
+                TextSize = 15,
+                IsBold=true
             };
             itemView.AddChidren(deviceNameBtn);
 
@@ -348,7 +349,8 @@
                 Height = Application.GetRealHeight(60),
                 Gravity = Gravity.CenterHorizontal,
                 TextColor = ZigbeeColor.Current.GXCTextGrayColor,
-                Text = CommonFormResouce.GetSwitchStatu((device.CommonDevice as ToggleLight).OnOffStatus == 1)
+                Text = $"{Language.StringByID(R.MyInternationalizationString.Current)} {device.GetDeviceStatu()}",
+                TextSize = 10
             };
             itemView.AddChidren(StatuBtn);
 
@@ -421,7 +423,8 @@
                 Height = Application.GetRealHeight(50),
                 Text = room.Name,
                 TextAlignment = TextAlignment.CenterLeft,
-                TextColor = ZigbeeColor.Current.GXCTextWhiteColor
+                TextColor = ZigbeeColor.Current.GXCTextWhiteColor,
+                TextSize = 12
             };
             itemView.AddChidren(roomName);
         }
@@ -543,8 +546,9 @@
                 OnBtn.IsSelected = false;
                 OffBtn.IsSelected = true;
             }
+            StatuBtn.Text = statu ? $"{Language.StringByID(R.MyInternationalizationString.Current)} {Language.StringByID(R.MyInternationalizationString.Open)}" : $"{Language.StringByID(R.MyInternationalizationString.Current)} {Language.StringByID(R.MyInternationalizationString.Shut)}";
         }
-        
+
 
         #endregion
 
diff --git a/ZigbeeApp/Shared/Phone/Device/Light/PlugControl.cs b/ZigbeeApp/Shared/Phone/Device/Light/PlugControl.cs
index 0e6a0af..c05a553 100755
--- a/ZigbeeApp/Shared/Phone/Device/Light/PlugControl.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Light/PlugControl.cs
@@ -138,7 +138,7 @@
                                 }
                                 light.OnOffStatus = light.DeviceStatusReport.AttriBute[0].AttriButeData;
                                 deviceIMG.IsSelected = switchBtn.IsSelected = light.OnOffStatus == 1;
-                                StatuBtn.Text = CommonFormResouce.GetSwitchStatu(deviceIMG.IsSelected);
+                                StatuBtn.Text = $"{Language.StringByID(R.MyInternationalizationString.Current)} {device.GetDeviceStatu()}";
                                 light.LastDateTime = DateTime.Now;
                             }
                         }
@@ -330,7 +330,8 @@
                 Gravity = Gravity.CenterHorizontal,
                 Text = device.CommonDevice.DeviceEpointName,
                 TextColor = ZigbeeColor.Current.GXCTextBlackColor,
-                TextSize = 15
+                TextSize = 15,
+                IsBold=true
             };
             itemView.AddChidren(deviceNameBtn);
 
@@ -341,7 +342,8 @@
                 Height = Application.GetRealHeight(60),
                 Gravity = Gravity.CenterHorizontal,
                 TextColor = ZigbeeColor.Current.GXCTextGrayColor,
-                Text = CommonFormResouce.GetSwitchStatu((device.CommonDevice as ToggleLight).OnOffStatus == 1)
+                Text = $"{Language.StringByID(R.MyInternationalizationString.Current)} {device.GetDeviceStatu()}",
+                TextSize = 10
             };
             itemView.AddChidren(StatuBtn);
 
@@ -404,7 +406,8 @@
                 Height = Application.GetRealHeight(50),
                 Text = room.Name,
                 TextAlignment = TextAlignment.CenterLeft,
-                TextColor = ZigbeeColor.Current.GXCTextWhiteColor
+                TextColor = ZigbeeColor.Current.GXCTextWhiteColor,
+                TextSize=12
             };
             itemView.AddChidren(roomName);
         }
@@ -437,7 +440,7 @@
             zbGateway.ReportAction += UpdateDeviceControllStatu;
             switchBtn.IsSelected = !switchBtn.IsSelected;
             deviceIMG.IsSelected = !deviceIMG.IsSelected;
-            StatuBtn.Text = CommonFormResouce.GetSwitchStatu(deviceIMG.IsSelected);
+            StatuBtn.Text = deviceIMG.IsSelected ? $"{Language.StringByID(R.MyInternationalizationString.Current)} {Language.StringByID(R.MyInternationalizationString.Open)}" : $"{Language.StringByID(R.MyInternationalizationString.Current)} {Language.StringByID(R.MyInternationalizationString.Shut)}";
             if (switchBtn.IsSelected == true)
             {
                 (device.CommonDevice as ToggleLight).SwitchControl(1);
diff --git a/ZigbeeApp/Shared/Phone/Device/Logic/AddLogicPage.cs b/ZigbeeApp/Shared/Phone/Device/Logic/AddLogicPage.cs
index b44fd18..7751fe6 100755
--- a/ZigbeeApp/Shared/Phone/Device/Logic/AddLogicPage.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Logic/AddLogicPage.cs
@@ -388,8 +388,8 @@
             var securityfra = new FrameLayout
             {
                 Width = Application.GetRealWidth(1080),
-                Height = Application.GetRealHeight(690),
-                Y = Application.GetRealHeight(1920 - 690),
+                Height = Application.GetRealHeight(690+160),
+                Y = Application.GetRealHeight(1920 - 690-160),
                 BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
                 //Radius = (uint)Application.GetRealHeight(60),
             };
@@ -445,7 +445,7 @@
             #endregion
 
 
-            #region  ----鍦ㄥ甯冮槻 绂诲甯冮槻  鎾ら槻
+            #region  ----鍦ㄥ甯冮槻 绂诲甯冮槻  鎾ら槻 鑳佽揩鎾ら槻
 
             #region  鍦ㄥ甯冮槻
 
@@ -528,7 +528,7 @@
                 Width = Application.GetRealWidth(920),
                 Height = Application.GetRealHeight(130),
                 X = Application.GetRealWidth(80),
-                LineColor = ZigbeeColor.Current.LogicBlankBackgroundColor,
+                LineColor = ZigbeeColor.Current.LogicRowLayoutLineColor,
             };
             withdrawalFrameLayout.AddChidren(withdrawalRowLayout);
 
@@ -545,17 +545,50 @@
             var withdrawalSelected = new SelectedButton();
             withdrawalRowLayout.AddChidren(withdrawalSelected);
             #endregion
+            #region  鑳佽揩鎾ら槻
+            var urgentwithdFrameLayout = new FrameLayout
+            {
+                Height = Application.GetRealHeight(160),
+                Y = withdrawalFrameLayout.Bottom,
+            };
+            securityfra.AddChidren(urgentwithdFrameLayout);
 
-            #region  ----鍦ㄥ甯冮槻 绂诲甯冮槻  鎾ら槻鐐瑰嚮浜嬩欢
+
+            var urgentwithdrawalRowLayout = new RowLayout
+            {
+                Y = Application.GetRealHeight(30),
+                Width = Application.GetRealWidth(920),
+                Height = Application.GetRealHeight(130),
+                X = Application.GetRealWidth(80),
+                LineColor = ZigbeeColor.Current.LogicBlankBackgroundColor,
+            };
+            urgentwithdFrameLayout.AddChidren(urgentwithdrawalRowLayout);
+
+            var btnurgentwithdrawal = new Button
+            {
+                TextID = MyInternationalizationString.urgentwithdrawal,
+                Width = Application.GetRealWidth(600),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor,
+                TextSize = 14,
+            };
+            urgentwithdrawalRowLayout.AddChidren(btnurgentwithdrawal);
+
+            var urgentwithdrawalSelected = new SelectedButton();
+            urgentwithdrawalRowLayout.AddChidren(urgentwithdrawalSelected);
+            #endregion
+            #region  ----鍦ㄥ甯冮槻 绂诲甯冮槻  鎾ら槻 鑳佽揩鎾ら槻鐐瑰嚮浜嬩欢
             ///鍦ㄥ甯冮槻鐐瑰嚮浜嬩欢
             EventHandler<MouseEventArgs> athomeclick = (sedner14, e14) =>
             {
                 btnathomedefence.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor;
                 leavehomebtndefence.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
                 btnwithdrawal.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
+                btnurgentwithdrawal.TextColor= ZigbeeColor.Current.LogicBtnNotSelectedColor;
                 athomedefenceSelected.Visible = true;
                 leavehomedefenceSelected.Visible = false;
                 withdrawalSelected.Visible = false;
+                urgentwithdrawalSelected.Visible = false;
             };
             athomedefenceRowLayout.MouseUpEventHandler += athomeclick;
             btnathomedefence.MouseUpEventHandler += athomeclick;
@@ -568,9 +601,11 @@
                 btnathomedefence.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
                 leavehomebtndefence.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor;
                 btnwithdrawal.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
+                btnurgentwithdrawal.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
                 athomedefenceSelected.Visible = false;
                 leavehomedefenceSelected.Visible = true;
                 withdrawalSelected.Visible = false;
+                urgentwithdrawalSelected.Visible = false;
             };
             leavehomedefenceRowLayout.MouseUpEventHandler += leavehomeclick;
             leavehomebtndefence.MouseUpEventHandler += leavehomeclick;
@@ -582,14 +617,33 @@
                 btnathomedefence.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
                 leavehomebtndefence.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
                 btnwithdrawal.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor;
+                btnurgentwithdrawal.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
                 athomedefenceSelected.Visible = false;
                 leavehomedefenceSelected.Visible = false;
                 withdrawalSelected.Visible = true;
+                urgentwithdrawalSelected.Visible = false;
             };
             withdrawalRowLayout.MouseUpEventHandler += disableclick;
             btnwithdrawal.MouseUpEventHandler += disableclick;
             withdrawalSelected.MouseUpEventHandler += disableclick;
             withdrawalFrameLayout.MouseUpEventHandler += disableclick;
+
+            ///鑳佽揩鎾ら槻鐐瑰嚮浜嬩欢
+            EventHandler<MouseEventArgs> urgentwithdrawalclick = (seder, e) =>
+            {
+                btnathomedefence.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
+                leavehomebtndefence.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
+                btnwithdrawal.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
+                btnurgentwithdrawal.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor;
+                athomedefenceSelected.Visible = false;
+                leavehomedefenceSelected.Visible = false;
+                withdrawalSelected.Visible = false;
+                urgentwithdrawalSelected.Visible = true;
+            };
+            urgentwithdrawalRowLayout.MouseUpEventHandler += urgentwithdrawalclick;
+            btnurgentwithdrawal.MouseUpEventHandler += urgentwithdrawalclick;
+            urgentwithdrawalSelected.MouseUpEventHandler += urgentwithdrawalclick;
+            urgentwithdFrameLayout.MouseUpEventHandler += urgentwithdrawalclick;
             #endregion
             #endregion
 
@@ -608,30 +662,47 @@
                                 btnathomedefence.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor;
                                 leavehomebtndefence.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
                                 btnwithdrawal.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
+                                btnurgentwithdrawal.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
                                 athomedefenceSelected.Visible = true;
                                 leavehomedefenceSelected.Visible = false;
                                 withdrawalSelected.Visible = false;
+                                urgentwithdrawalSelected.Visible = false;
                             }
                             else
                             {
                                 btnathomedefence.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
                                 leavehomebtndefence.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor;
                                 btnwithdrawal.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
+                                btnurgentwithdrawal.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
                                 athomedefenceSelected.Visible = false;
                                 leavehomedefenceSelected.Visible = true;
                                 withdrawalSelected.Visible = false;
+                                urgentwithdrawalSelected.Visible = false;
                             }
 
 
                         }
-                        else
+                        else if (securityifon["EnOrWithdrawMode"] == "1")
                         {
                             btnathomedefence.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
                             leavehomebtndefence.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
                             btnwithdrawal.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor;
+                            btnurgentwithdrawal.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
                             athomedefenceSelected.Visible = false;
                             leavehomedefenceSelected.Visible = false;
                             withdrawalSelected.Visible = true;
+                            urgentwithdrawalSelected.Visible = false;
+                        }
+                        else if (securityifon["EnOrWithdrawMode"] == "2")
+                        {
+                            btnathomedefence.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
+                            leavehomebtndefence.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
+                            btnwithdrawal.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
+                            btnurgentwithdrawal.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor;
+                            athomedefenceSelected.Visible = false;
+                            leavehomedefenceSelected.Visible = false;
+                            withdrawalSelected.Visible = false;
+                            urgentwithdrawalSelected.Visible = true;
                         }
                         break;
                     }
@@ -639,7 +710,7 @@
             }
             Btncomplete.MouseUpEventHandler += (sender, e) =>
             {
-                if (!athomedefenceSelected.Visible && !leavehomedefenceSelected.Visible && !withdrawalSelected.Visible)
+                if (!athomedefenceSelected.Visible && !leavehomedefenceSelected.Visible && !withdrawalSelected.Visible&&!urgentwithdrawalSelected.Visible)
                 {
                     return;
                 }
@@ -656,46 +727,43 @@
                 {
                     SecurityConditionsInfo.Remove("ModeId");
                 }
-
                 SecurityConditionsInfo.Add("Type", "6");
                 SecurityConditionsInfo.Add("IsValid", "1");
-                SecurityConditionsInfo.Add("ModeId", "0");
+                if (SecurityConditionsInfo.ContainsKey("EnOrWithdrawMode"))
+                {
+                    SecurityConditionsInfo.Remove("EnOrWithdrawMode");
+                }
+                if (SecurityConditionsInfo.ContainsKey("ModeId"))
+                {
+                    SecurityConditionsInfo.Remove("ModeId");
+                }
                 //鍦ㄥ甯冮槻
                 if (athomedefenceSelected.Visible)
                 {
-                    if (SecurityConditionsInfo.ContainsKey("EnOrWithdrawMode"))
-                    {
-                        SecurityConditionsInfo.Remove("EnOrWithdrawMode");
-                    }
-                    if (SecurityConditionsInfo.ContainsKey("ModeId"))
-                    {
-                        SecurityConditionsInfo.Remove("ModeId");
-                    }
+                    
                     SecurityConditionsInfo.Add("EnOrWithdrawMode", "0");
                     SecurityConditionsInfo.Add("ModeId", "1");
                 }
                 //绂诲甯冮槻
                 if (leavehomedefenceSelected.Visible)
                 {
-                    if (SecurityConditionsInfo.ContainsKey("EnOrWithdrawMode"))
-                    {
-                        SecurityConditionsInfo.Remove("EnOrWithdrawMode");
-                    }
-                    if (SecurityConditionsInfo.ContainsKey("ModeId"))
-                    {
-                        SecurityConditionsInfo.Remove("ModeId");
-                    }
+                  
                     SecurityConditionsInfo.Add("EnOrWithdrawMode", "0");
                     SecurityConditionsInfo.Add("ModeId", "2");
                 }
                 //鎾ら槻
                 if (withdrawalSelected.Visible)
                 {
-                    if (SecurityConditionsInfo.ContainsKey("EnOrWithdrawMode"))
-                    {
-                        SecurityConditionsInfo.Remove("EnOrWithdrawMode");
-                    }
+                    
                     SecurityConditionsInfo.Add("EnOrWithdrawMode", "1");
+                    SecurityConditionsInfo.Add("ModeId", "0");
+                }
+                //鑳佽揩鎾ら槻
+                if (urgentwithdrawalSelected.Visible)
+                {
+
+                    SecurityConditionsInfo.Add("EnOrWithdrawMode", "2");
+                    SecurityConditionsInfo.Add("ModeId", "0");
                 }
                 LogicIfon.AddSecurityconditions(SecurityConditionsInfo);
                 var logicCommunalPage = new LogicCommunalPage();
@@ -782,8 +850,8 @@
             typeRow.AddChidren(Btncomplete);
             #endregion
 
-            #region  ------鍦ㄥ   绂诲  
-            #region ------鍦ㄥ
+            #region  ------鍒拌揪鍦扮偣   绂诲紑鍦扮偣  
+            #region ------鍒拌揪鍦扮偣
 
             var athomeFrameLayout = new FrameLayout
             {
@@ -817,7 +885,7 @@
             athomeRowLayout.AddChidren(athomeSelected);
             #endregion
 
-            #region -------绂诲 
+            #region -------绂诲紑鍦扮偣 
             var leavehomeFrameLayout = new FrameLayout
             {
                 Height = Application.GetRealHeight(160),
@@ -850,7 +918,7 @@
 
             #endregion
             string strname = "";
-            ///鍦ㄥ鐐瑰嚮浜嬩欢
+            ///鍒拌揪鍦扮偣鐐瑰嚮浜嬩欢
             EventHandler<MouseEventArgs> athomeclick = (sedner15, e15) =>
             {
                 strname = btnathome.Text;
@@ -866,7 +934,7 @@
             athomeRowLayout.MouseUpEventHandler += athomeclick;
             athomeFrameLayout.MouseUpEventHandler += athomeclick;
 
-            ///绂诲鐐瑰嚮浜嬩欢
+            ///绂诲紑鍦扮偣鐐瑰嚮浜嬩欢
             EventHandler<MouseEventArgs> leavehomeclick = (sedner14, e14) =>
             {
                 strname = btnleavehome.Text;
@@ -879,14 +947,18 @@
             leavehomeSelected.MouseUpEventHandler += leavehomeclick;
             leavehomeRowLayout.MouseUpEventHandler += leavehomeclick;
             leavehomeFrameLayout.MouseUpEventHandler += leavehomeclick;
-
+            double latitude = Config.Instance.Home.Latitude;//绾害
+            double longitude = Config.Instance.Home.Longitude;//缁忓害
+            int r = 500;//鍗婂緞
             if (edit)
             {
+                string guid = "";
                 foreach (var Locationifon in Common.Logic.CurrentLogic.Conditions)
                 {
 
                     if (Locationifon["Type"] == "7")
                     {
+                        guid = Locationifon["WhoSiteUId"];
                         if (Locationifon["AtHome"] == "0")
                         {
                             strname = btnleavehome.Text;
@@ -903,6 +975,20 @@
                             btnleavehome.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
                             btnathome.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor;
                         }
+                        break;
+                    }
+                }
+
+                foreach (var accounts in Common.Logic.CurrentLogic.Accounts)
+                {
+
+                    if (accounts["Type"] == "7" && accounts["Account"] == guid)
+                    {
+
+                        ///杞崲涓篸ouble绫诲瀷锛�
+                        latitude = Convert.ToDouble(accounts["Latitude"])/1000000.0;
+                        longitude = Convert.ToDouble(accounts["Longitude"]) / 1000000.0;
+                        r = int.Parse(accounts["Radius"]);
                         break;
                     }
                 }
@@ -948,14 +1034,16 @@
                     }
                     LocationConditionsInfo.Add("AtHome", "1");
                 }
-                double a1 = Config.Instance.Home.Latitude, a2 = Config.Instance.Home.Longitude;
+
                 //璋冪敤鏂规硶锛岃烦杞〉闈�
                 GDMapKit.Show((mLatitude, mLongitude, mRadius, name) =>
                 {
+                    //鎴彇瀛楃涓插悗绗�6浣嶏紱
+                    //var len = name.Substring(name.Length - 6, 6);
 
                     //鐐瑰嚮淇濆瓨鎸夐挳锛屽洖璋冨綋鍓嶉�夋嫨鐨勭含搴︼紝缁忓害锛屽崐寰勮寖鍥�
-                    var latitud = (int)Math.Truncate(mLatitude * 1000000);
-                    var longitude = (int)Math.Truncate(mLongitude * 1000000);
+                    var latitudW = (int)Math.Truncate(mLatitude * 1000000);
+                    var longitudeH = (int)Math.Truncate(mLongitude * 1000000);
                     Dictionary<string, string> accounts = new Dictionary<string, string>();
                     if (accounts.ContainsKey("Account"))
                     {
@@ -979,8 +1067,8 @@
                     }
                     accounts.Add("Account", Config.Instance.Guid);
                     accounts.Add("Type", "7");
-                    accounts.Add("Latitude", latitud.ToString());
-                    accounts.Add("Longitude", longitude.ToString());
+                    accounts.Add("Latitude", latitudW.ToString());
+                    accounts.Add("Longitude", longitudeH.ToString());
                     accounts.Add("Radius", mRadius.ToString());
                     LogicIfon.Addaccounts(accounts);
                     LogicIfon.AddLocationconditions(LocationConditionsInfo);
@@ -988,7 +1076,7 @@
                     UserView.HomePage.Instance.AddChidren(logicCommunalPage);
                     UserView.HomePage.Instance.PageIndex += 1;
                     logicCommunalPage.Show(() => { });
-                }, strname, true, a1, a2, 500);
+                }, strname, true, latitude, longitude, r);
             };
         }
 
diff --git a/ZigbeeApp/Shared/Phone/Device/Logic/CustomText.cs b/ZigbeeApp/Shared/Phone/Device/Logic/CustomText.cs
index 3ad9a3d..6c565cfc 100755
--- a/ZigbeeApp/Shared/Phone/Device/Logic/CustomText.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Logic/CustomText.cs
@@ -107,6 +107,7 @@
                  {
                      ///鍙敼鎺ㄩ�佸唴瀹癸紱
                      Send.LogicControlSwitch(Common.Logic.CurrentLogic);
+                     Send.Data("娣诲姞/鏇存柊", "/App/HomeLogicConfig", "POST");
                  }
                  RemoveFromParent();
 
diff --git a/ZigbeeApp/Shared/Phone/Device/Logic/DelayTime.cs b/ZigbeeApp/Shared/Phone/Device/Logic/DelayTime.cs
index 257b69c..cc4974c 100755
--- a/ZigbeeApp/Shared/Phone/Device/Logic/DelayTime.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Logic/DelayTime.cs
@@ -200,6 +200,7 @@
                 BackgroundColor = ZigbeeColor.Current.LogicBtnSaveBackgroundColor,
                 TextID = MyInternationalizationString.Save,
                 TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor,
+                TextSize=16,
             };
             PickerViewfra.AddChidren(btnsave);
 
diff --git a/ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/AddCondition.cs b/ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/AddCondition.cs
index 74ba416..117357f 100755
--- a/ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/AddCondition.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/AddCondition.cs
@@ -94,23 +94,13 @@
                 //鍏抽棴鍒锋柊View锛�
                 middle.EndHeaderRefreshing();
             };
-            //Read();
-            CommonPage.Loading.Start();
-            new System.Threading.Thread(() =>
-            {
-                Application.RunOnMainThread(() =>
-                {
-                    Read();
-                    CommonPage.Loading.Hide();
-                });
-            })
-            { IsBackground = true }.Start();
+            Read();
 
         }
         /// <summary>
         /// 璇诲彇褰撳墠闂ㄩ攣鐨勪簯绔暟鎹紱
         /// </summary>
-        public async void Read()
+        public void Read()
         {
             bool d = false;
             string macport = Send.CurrentDoorLock.DeviceAddr + "_" + Send.CurrentDoorLock.DeviceEpoint.ToString();
@@ -124,13 +114,27 @@
                 }
             }
             CommonPage.Loading.Start();
-            if (!d)
+            middle.RemoveAll();
+            System.Threading.Tasks.Task.Run(async () =>
             {
-                var allMemberslist = await Send.AllMembers(macport);
-                Send.LockList.AddRange(allMemberslist);
-            }
-            UserAllView(macport);
-            CommonPage.Loading.Hide();
+                try
+                {
+                    if (!d)
+                    {
+                        var allMemberslist = await Send.AllMembers(macport);
+                        Send.LockList.AddRange(allMemberslist);
+                    }
+                }
+                catch { }
+                finally
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        CommonPage.Loading.Hide();
+                        UserAllView(macport);
+                    });
+                }
+            });
         }
         /// <summary>
         /// 鏄剧ず鎵�鏈夌敤鎴�
@@ -276,86 +280,183 @@
             };
             lockRow.AddChidren(Btncomplete);
             #endregion
-
+            bool @false = false;
+            if (membershipIfon.UserIdMode.Count > 10)
+            {
+                @false = false;//
+                lockcolorfra1.Y = Application.GetRealHeight(1920 - 140 - (160 * 10) - 20 - 50);
+                lockcolorfra1.Height = Application.GetRealHeight(140 + (160 * 10) + 20 + 50);
+            }
+            else
+            {
+                @false = false;
+                lockcolorfra1.Y = Application.GetRealHeight(1920 - 140 - (160 * membershipIfon.UserIdMode.Count) - 20 - 50);
+                lockcolorfra1.Height = Application.GetRealHeight(140 + (160 * membershipIfon.UserIdMode.Count) + 20 + 50);
+            }
             string SelectedLockStatus = "";
-            lockcolorfra1.Y = Application.GetRealHeight(1920 - 140 - (160 * membershipIfon.UserIdMode.Count) - 20 - 50);
-            lockcolorfra1.Height = Application.GetRealHeight(140 + (160 * membershipIfon.UserIdMode.Count) + 20 + 50);
             ///瀹氫箟涓や釜鍙橀噺璁板綍閫変腑鐘舵�侊紱
             string attriButeId = "";
             string attriButeData2 = "";
             string modeName = "";
-            for (int j = 0; j < membershipIfon.UserIdMode.Count; j++)
+            if (!@false)
             {
-                var userIdmode = membershipIfon.UserIdMode[j];
-                var doorlockfra = new FrameLayout
+                for (int j = 0; j < membershipIfon.UserIdMode.Count; j++)
                 {
-                    Height = Application.GetRealHeight(160),
-                    Y = lockRow.Bottom + Application.GetRealHeight(20 + 160 * j),
-                };
-                lockcolorfra1.AddChidren(doorlockfra);
-
-                var doorlockRow = new RowLayout
-                {
-                    Y = Application.GetRealHeight(30),
-                    Width = Application.GetRealWidth(920),
-                    Height = Application.GetRealHeight(130),
-                    X = Application.GetRealWidth(80),
-                    LineColor = ZigbeeColor.Current.LogicRowLayoutLineColor,
-                };
-                doorlockfra.AddChidren(doorlockRow);
-
-                var doorlockBtn = new Button
-                {
-                    Width = Application.GetRealWidth(600),
-                    TextAlignment = TextAlignment.CenterLeft,
-                    TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor,
-                    Text = userIdmode.ModeName,
-                    TextSize = 14,
-                };
-                doorlockRow.AddChidren(doorlockBtn);
-
-                var doorlockSelected = new Button
-                {
-                    X = Application.GetRealWidth(860),
-                    Width = Application.GetMinRealAverage(60),
-                    Height = Application.GetMinRealAverage(60),
-                    UnSelectedImagePath = "ZigeeLogic/selected.png",
-                    Visible = false,
-                    Gravity = Gravity.CenterVertical,
-
-                };
-                doorlockRow.AddChidren(doorlockSelected);
-                if ((membershipIfon.UserIdMode.Count - 1) == j)
-                {
-                    doorlockRow.LineColor = ZigbeeColor.Current.LogicBackgroundColor;
-                }
-                EventHandler<MouseEventArgs> doorlockclick = (sender2, e2) =>
-                {
-                    SelectedLockStatus = "DoorLock";
-                    selectedIcon.Visible = false;
-                    selectedIcon = doorlockSelected;
-                    doorlockSelected.Visible = true;
-                    //doorlockBtn.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor;
-                    attriButeId = userIdmode.OpenMode.ToString();
-                    attriButeData2 = userIdmode.UserId;
-                    modeName = userIdmode.ModeName;
-                };
-                doorlockRow.MouseUpEventHandler += doorlockclick;
-                doorlockBtn.MouseUpEventHandler += doorlockclick;
-                doorlockSelected.MouseUpEventHandler += doorlockclick;
-                doorlockfra.MouseUpEventHandler += doorlockclick;
-                ///鏄剧ず涔嬪墠鐨勭姸鎬�
-                if (conditionsIndex != -1)
-                {
-                    var s = Common.Logic.CurrentLogic.Conditions[conditionsIndex];
-                    if (s["AttriButeId"] == userIdmode.OpenMode.ToString() && s["AttriButeData2"] == userIdmode.UserId)
+                    var userIdmode = membershipIfon.UserIdMode[j];
+                    var doorlockfra = new FrameLayout
                     {
+                        Height = Application.GetRealHeight(160),
+                        Y = lockRow.Bottom + Application.GetRealHeight(20 + 160 * j),
+                    };
+                    lockcolorfra1.AddChidren(doorlockfra);
+
+                    var doorlockRow = new RowLayout
+                    {
+                        Y = Application.GetRealHeight(30),
+                        Width = Application.GetRealWidth(920),
+                        Height = Application.GetRealHeight(130),
+                        X = Application.GetRealWidth(80),
+                        LineColor = ZigbeeColor.Current.LogicRowLayoutLineColor,
+                    };
+                    doorlockfra.AddChidren(doorlockRow);
+
+                    var doorlockBtn = new Button
+                    {
+                        Width = Application.GetRealWidth(600),
+                        TextAlignment = TextAlignment.CenterLeft,
+                        TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor,
+                        Text = userIdmode.ModeName,
+                        TextSize = 14,
+                    };
+                    doorlockRow.AddChidren(doorlockBtn);
+
+                    var doorlockSelected = new Button
+                    {
+                        X = Application.GetRealWidth(860),
+                        Width = Application.GetMinRealAverage(60),
+                        Height = Application.GetMinRealAverage(60),
+                        UnSelectedImagePath = "ZigeeLogic/selected.png",
+                        Visible = false,
+                        Gravity = Gravity.CenterVertical,
+
+                    };
+                    doorlockRow.AddChidren(doorlockSelected);
+                    if ((membershipIfon.UserIdMode.Count - 1) == j)
+                    {
+                        doorlockRow.LineColor = ZigbeeColor.Current.LogicBackgroundColor;
+                    }
+                    EventHandler<MouseEventArgs> doorlockclick = (sender2, e2) =>
+                    {
+                        SelectedLockStatus = "DoorLock";
                         selectedIcon.Visible = false;
                         selectedIcon = doorlockSelected;
                         doorlockSelected.Visible = true;
+                    //doorlockBtn.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor;
+                    attriButeId = userIdmode.OpenMode.ToString();
+                        attriButeData2 = userIdmode.UserId;
+                        modeName = userIdmode.ModeName;
+                    };
+                    doorlockRow.MouseUpEventHandler += doorlockclick;
+                    doorlockBtn.MouseUpEventHandler += doorlockclick;
+                    doorlockSelected.MouseUpEventHandler += doorlockclick;
+                    doorlockfra.MouseUpEventHandler += doorlockclick;
+                    ///鏄剧ず涔嬪墠鐨勭姸鎬�
+                    if (conditionsIndex != -1)
+                    {
+                        var s = Common.Logic.CurrentLogic.Conditions[conditionsIndex];
+                        if (s["AttriButeId"] == userIdmode.OpenMode.ToString() && s["AttriButeData2"] == userIdmode.UserId)
+                        {
+                            selectedIcon.Visible = false;
+                            selectedIcon = doorlockSelected;
+                            doorlockSelected.Visible = true;
+                        }
+
+
                     }
+                }
+            }
+            else
+            {
+                for (int j = 0; j < membershipIfon.UserIdMode.Count; j++)
+                {
+                    var userIdmode = membershipIfon.UserIdMode[j];
+
+                    var vv = new VerticalScrolViewLayout
+                    {
+                        Height = Application.GetRealHeight(160 * 8),
+                        Y = lockRow.Bottom,
+                    };
+                    lockcolorfra1.AddChidren(vv);
+                    var doorlockfra = new FrameLayout
+                    {
+                        Height = Application.GetRealHeight(160),
+                        Y = Application.GetRealHeight(160 * j),
+                    };
+                    vv.AddChidren(doorlockfra);
+
+                    var doorlockRow = new RowLayout
+                    {
+                        Y = Application.GetRealHeight(30),
+                        Width = Application.GetRealWidth(920),
+                        Height = Application.GetRealHeight(130),
+                        X = Application.GetRealWidth(80),
+                        LineColor = ZigbeeColor.Current.LogicRowLayoutLineColor,
+                    };
+                    doorlockfra.AddChidren(doorlockRow);
+
+                    var doorlockBtn = new Button
+                    {
+                        Width = Application.GetRealWidth(600),
+                        TextAlignment = TextAlignment.CenterLeft,
+                        TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor,
+                        Text = userIdmode.ModeName,
+                        TextSize = 14,
+                    };
+                    doorlockRow.AddChidren(doorlockBtn);
+
+                    var doorlockSelected = new Button
+                    {
+                        X = Application.GetRealWidth(860),
+                        Width = Application.GetMinRealAverage(60),
+                        Height = Application.GetMinRealAverage(60),
+                        UnSelectedImagePath = "ZigeeLogic/selected.png",
+                        Visible = false,
+                        Gravity = Gravity.CenterVertical,
+
+                    };
+                    doorlockRow.AddChidren(doorlockSelected);
+                    if ((membershipIfon.UserIdMode.Count - 1) == j)
+                    {
+                        doorlockRow.LineColor = ZigbeeColor.Current.LogicBackgroundColor;
+                    }
+                    EventHandler<MouseEventArgs> doorlockclick = (sender2, e2) =>
+                    {
+                        SelectedLockStatus = "DoorLock";
+                        selectedIcon.Visible = false;
+                        selectedIcon = doorlockSelected;
+                        doorlockSelected.Visible = true;
+                    //doorlockBtn.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor;
+                    attriButeId = userIdmode.OpenMode.ToString();
+                        attriButeData2 = userIdmode.UserId;
+                        modeName = userIdmode.ModeName;
+                    };
+                    doorlockRow.MouseUpEventHandler += doorlockclick;
+                    doorlockBtn.MouseUpEventHandler += doorlockclick;
+                    doorlockSelected.MouseUpEventHandler += doorlockclick;
+                    doorlockfra.MouseUpEventHandler += doorlockclick;
+                    ///鏄剧ず涔嬪墠鐨勭姸鎬�
+                    if (conditionsIndex != -1)
+                    {
+                        var s = Common.Logic.CurrentLogic.Conditions[conditionsIndex];
+                        if (s["AttriButeId"] == userIdmode.OpenMode.ToString() && s["AttriButeData2"] == userIdmode.UserId)
+                        {
+                            selectedIcon.Visible = false;
+                            selectedIcon = doorlockSelected;
+                            doorlockSelected.Visible = true;
+                        }
 
 
+                    }
                 }
             }
 
diff --git a/ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/LockLogicCommunalPage.cs b/ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/LockLogicCommunalPage.cs
index 2b0054e..e4fcfca 100755
--- a/ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/LockLogicCommunalPage.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/LockLogicCommunalPage.cs
@@ -871,20 +871,24 @@
                                 //鏈湴娌℃湁瀛樺湪;
                                 if (sceneinof == null)
                                 {
-                                    //鍦ㄧ綉鍏虫煡鎵捐鍦烘櫙;
-                                    sceneinof = await Send.GetScene(int.Parse(actions["DeviceAddr"].ToString()));
-                                    //缃戝叧娌℃湁瀛樺湪;
-                                    if (sceneinof == null)
-                                    {
-
-                                        //娉ㄨВ:鏈湴鍜岀綉鍏抽兘涓嶅瓨鍦ㄨ鍦烘櫙,鐣岄潰灏嗕笉浼氭樉绀鸿鍦烘櫙;
-                                        //sceneinof = new SceneUI();
-                                        //绉婚櫎璇ュ満鏅暟鎹�;
-                                        Common.Logic.CurrentLogic.Actions.Remove(actions);
-                                        //绉婚櫎璇ュ満鏅鍥�;
-                                        devicesFrameLayout.RemoveFromParent();
-                                        continue;
-                                    }
+                                    //瀹炵幇鐩殑:鏄剧ず鍑烘潵璁╁彲浠ヨ嚜宸辨槸鍚﹀垹闄�
+                                    sceneinof = new SceneUI();
+                                    #region -----
+                                    ////鍦ㄧ綉鍏虫煡鎵捐鍦烘櫙;
+                                    ////鏍囪闂:缃戠粶璇锋眰锛屽瓨鍦ㄨ鍥惧姞杞藉揩鎱㈢殑闂锛�
+                                    //sceneinof = await Send.GetScene(int.Parse(actions["DeviceAddr"].ToString()));
+                                    ////缃戝叧娌℃湁瀛樺湪;
+                                    //if (sceneinof == null)
+                                    //{
+                                    //    //娉ㄨВ:鏈湴鍜岀綉鍏抽兘涓嶅瓨鍦ㄨ鍦烘櫙,鐣岄潰灏嗕笉浼氭樉绀鸿鍦烘櫙;
+                                    //    //sceneinof = new SceneUI();
+                                    //    //绉婚櫎璇ュ満鏅暟鎹�;
+                                    //    Common.Logic.CurrentLogic.Actions.Remove(actions);
+                                    //    //绉婚櫎璇ュ満鏅鍥�;
+                                    //    devicesFrameLayout.RemoveFromParent();
+                                    //    continue;
+                                    //}
+                                    #endregion
                                 }
 
 
@@ -1005,23 +1009,11 @@
                 Gravity = Gravity.CenterVertical,
             };
             pushswitchRowlayout.AddChidren(btnswitch);
-            btnswitch.MouseUpEventHandler += (sender1, e1) =>
-            {
-                btnswitch.IsSelected = !btnswitch.IsSelected;
-                if (btnswitch.IsSelected)
-                {
-
-                }
-                else
-                {
-
-                }
-            };
-
+           
 
             var custompushFrameLayout = new FrameLayout
             {
-                Height = Application.GetRealHeight(160),
+                Height = Application.GetRealHeight(0),
                 BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor,
             };
             middle.AddChidren(custompushFrameLayout);
@@ -1072,6 +1064,31 @@
 
             #endregion
 
+            bool tag = false;//鏍囪寮�鍏崇姸鎬�;
+            btnswitch.MouseUpEventHandler += (sender1, e1) =>
+            {
+                btnswitch.IsSelected = !btnswitch.IsSelected;
+                if (btnswitch.IsSelected)
+                {
+                    tag = true;
+                    custompushFrameLayout.Height = Application.GetRealHeight(160);
+                    if (Common.Logic.CurrentLogic.LogicId != 0)
+                    {
+                        Send.Data("娣诲姞/鏇存柊", "/App/HomeLogicConfig", "POST");
+                    }
+
+                }
+                else
+                {
+                    tag = false;
+                    custompushFrameLayout.Height = Application.GetRealHeight(0);
+                    if (Common.Logic.CurrentLogic.LogicId != 0)
+                    {
+                        Send.Data("鍒犻櫎", "/App/DelHomeLogicConfig", "POST");
+                    }
+
+                }
+            };
 
             var saveFrameLayout = new FrameLayout
             {
@@ -1101,12 +1118,12 @@
                     new Alert(Language.StringByID(MyInternationalizationString.Tip), Language.StringByID(MyInternationalizationString.PleaseEnterLogicName), Language.StringByID(MyInternationalizationString.Close)).Show();
                     return;
                 }
-                var logicname = Common.Logic.LockLogicList.Find((logic) => Common.Logic.CurrentLogic.LogicId != logic.LogicId && logic.LogicName == name);
-                if (logicname != null)
-                {
-                    new Alert(Language.StringByID(MyInternationalizationString.Tip), Language.StringByID(MyInternationalizationString.Rename), Language.StringByID(MyInternationalizationString.Close)).Show();
-                    return;
-                }
+                //var logicname = Common.Logic.LockLogicList.Find((logic) => Common.Logic.CurrentLogic.LogicId != logic.LogicId && logic.LogicName == name);
+                //if (logicname != null)
+                //{
+                //    new Alert(Language.StringByID(MyInternationalizationString.Tip), Language.StringByID(MyInternationalizationString.Rename), Language.StringByID(MyInternationalizationString.Close)).Show();
+                //    return;
+                //}
 
                 Common.Logic.CurrentLogic.LogicName = name;
 
@@ -1120,6 +1137,10 @@
                     {
                         Common.Logic.CurrentLogic.LogicId = logicifon.LogicId;
                         Common.Logic.LockLogicList.Add(Common.Logic.CurrentLogic);
+                        if (tag)
+                        {
+                            Send.Data("娣诲姞/鏇存柊", "/App/HomeLogicConfig", "POST");
+                        }
                     }
                 }
                 else
diff --git a/ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/LockLogicList.cs b/ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/LockLogicList.cs
index 81eb56e..7c00eb6 100755
--- a/ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/LockLogicList.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/LockLogicList.cs
@@ -154,6 +154,43 @@
         public void Automationview()
         {
             middle.RemoveAll();
+
+            if (Common.Logic.LockLogicList.Count == 0)
+            {
+                //灏辨槸涓轰簡鏄剧ず寮曞娣诲姞鍥炬爣;
+                var noFrameLayout = new FrameLayout
+                {
+                    Height = Application.GetRealHeight(434 + 200 + 32 + 320),
+                    //BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor,
+                };
+                middle.AddChidren(noFrameLayout);
+
+
+                var noIconBtn = new Button
+                {
+                    Y = Application.GetRealHeight(320),
+                    Width = Application.GetMinRealAverage(756),
+                    Height = Application.GetMinRealAverage(434),
+                    UnSelectedImagePath = "Item/NoFunction.png",
+                    X = Application.GetRealWidth(162),
+                };
+                noFrameLayout.AddChidren(noIconBtn);
+
+                var noTextBtn = new Button()
+                {
+                    Y = noIconBtn.Bottom,
+                    Height = Application.GetRealHeight(200) + Application.GetRealHeight(32),
+                    Width = Application.GetRealWidth(700),
+                    //Gravity = Gravity.CenterHorizontal,
+                    Text = Language.StringByID(MyInternationalizationString.automationaddtext).Replace("{\\r\\n}", "\r\n"),
+                    TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
+                    TextAlignment = TextAlignment.Center,
+                    IsMoreLines = true,
+                    X = Application.GetRealWidth(190),
+                };
+                noFrameLayout.AddChidren(noTextBtn);
+
+            }
             for (int i = 0; i < Common.Logic.LockLogicList.Count; i++)
             {
                 var logic = Common.Logic.LockLogicList[i];
diff --git a/ZigbeeApp/Shared/Phone/Device/Logic/LogicCommunalPage.cs b/ZigbeeApp/Shared/Phone/Device/Logic/LogicCommunalPage.cs
index a8167b2..8070799 100755
--- a/ZigbeeApp/Shared/Phone/Device/Logic/LogicCommunalPage.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Logic/LogicCommunalPage.cs
@@ -79,12 +79,7 @@
                 action();
                 RemoveFromParent();
             };
-
-
-
             #endregion
-
-            
 
             var middle = new VerticalScrolViewLayout
             {
@@ -93,7 +88,26 @@
                 BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor,
             };
             this.AddChidren(middle);
+            var saveFrameLayout = new FrameLayout
+            {
+                Y = middle.Bottom,
+                Height = Application.GetRealHeight(180),
+                BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor,
+            };
+            this.AddChidren(saveFrameLayout);
 
+            var btnsave = new Button
+            {
+                X = Application.GetRealWidth(85),
+                Height = Application.GetRealHeight(130),//194
+                Width = Application.GetRealWidth(910),
+                Radius = (uint)Application.GetRealHeight(60),
+                BackgroundColor = ZigbeeColor.Current.LogicBtnSaveBackgroundColor,
+                TextID = MyInternationalizationString.Save,
+                TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor,
+                TextSize = 16,
+            };
+            saveFrameLayout.AddChidren(btnsave);
 
             #region -----鑷姩鍖栧悕绉� 璁剧疆鍚嶇О-----
             var logicnamefl = new FrameLayout
@@ -621,19 +635,19 @@
                                                             int second = int.Parse(conditions["IgnoreTime"]) % 60;
                                                             if (minute != 0 && second != 0)
                                                             {
-                                                                devicestatus.Text = minute.ToString() + Language.StringByID(MyInternationalizationString.minute) + second.ToString() + Language.StringByID(MyInternationalizationString.second) + Language.StringByID(MyInternationalizationString.closetime);
+                                                                devicestatus.Text = minute.ToString() + Language.StringByID(MyInternationalizationString.minute) + second.ToString() + Language.StringByID(MyInternationalizationString.second) + Language.StringByID(MyInternationalizationString.unattendedtime1);
 
                                                             }
                                                             else
                                                             {
                                                                 if (minute == 0 && second != 0)
                                                                 {
-                                                                    devicestatus.Text = second.ToString() + Language.StringByID(MyInternationalizationString.second) + Language.StringByID(MyInternationalizationString.closetime);
+                                                                    devicestatus.Text = second.ToString() + Language.StringByID(MyInternationalizationString.second) + Language.StringByID(MyInternationalizationString.unattendedtime1);
 
                                                                 }
                                                                 if (minute != 0 && second == 0)
                                                                 {
-                                                                    devicestatus.Text = minute.ToString() + Language.StringByID(MyInternationalizationString.Minute) + Language.StringByID(MyInternationalizationString.closetime);
+                                                                    devicestatus.Text = minute.ToString() + Language.StringByID(MyInternationalizationString.Minute) + Language.StringByID(MyInternationalizationString.unattendedtime1);
 
                                                                 }
 
@@ -922,26 +936,37 @@
                                 };
                                 conditionsRowLayout.AddChidren(securitystatus);
 
-                                if (conditions["EnOrWithdrawMode"] == "1")
+                                switch (conditions["EnOrWithdrawMode"])
                                 {
-                                    conditionIcon.UnSelectedImagePath = "ZigeeLogic/withdrawal.png";
-                                    securitystatus.Text = Language.StringByID(MyInternationalizationString.withdrawal);
-                                }
-                                else
-                                {
-                                    if (conditions["ModeId"] == "1")
-                                    {
-                                        conditionIcon.UnSelectedImagePath = "ZigeeLogic/athome.png";
-                                        securitystatus.Text = Language.StringByID(MyInternationalizationString.logicathomegarrison);
+                                    case "0":
+                                        {
+                                            if (conditions["ModeId"] == "1")
+                                            {
+                                                conditionIcon.UnSelectedImagePath = "ZigeeLogic/athome.png";
+                                                securitystatus.Text = Language.StringByID(MyInternationalizationString.logicathomegarrison);
 
-                                    }
-                                    else
-                                    {
-                                        conditionIcon.UnSelectedImagePath = "ZigeeLogic/leavehome.png";
-                                        securitystatus.Text = Language.StringByID(MyInternationalizationString.logicremovehomegarrison);
-
-                                    }
+                                            }
+                                            else
+                                            {
+                                                conditionIcon.UnSelectedImagePath = "ZigeeLogic/leavehome.png";
+                                                securitystatus.Text = Language.StringByID(MyInternationalizationString.logicremovehomegarrison);
+                                            }
+                                        }
+                                        break;
+                                    case "1":
+                                        {
+                                            conditionIcon.UnSelectedImagePath = "ZigeeLogic/withdrawal.png";
+                                            securitystatus.Text = Language.StringByID(MyInternationalizationString.withdrawal);
+                                        }
+                                        break;
+                                    case "2":
+                                        {
+                                            conditionIcon.UnSelectedImagePath = "ZigeeLogic/withdrawal.png";
+                                            securitystatus.Text = Language.StringByID(MyInternationalizationString.urgentwithdrawal);
+                                        }
+                                        break;
                                 }
+
                             }
                             break;
                         case 7:
@@ -950,7 +975,7 @@
                                 conditionIcon.UnSelectedImagePath = "ZigeeLogic/position.png";
                                 var btnlocation = new Button
                                 {
-                                    Width = Application.GetRealWidth(700),
+                                    Width = Application.GetRealWidth(250),
                                     TextAlignment = TextAlignment.CenterLeft,
                                     Gravity = Gravity.CenterVertical,
                                     TextColor = ZigbeeColor.Current.LogicBtnCancelColor,
@@ -977,11 +1002,11 @@
 
                                 var locationstatus = new Button
                                 {
-                                    Width = Application.GetRealWidth(300),
+                                    Width = Application.GetRealWidth(550),
                                     Height = Application.GetRealHeight(130),
                                     Gravity = Gravity.CenterVertical,
                                     TextAlignment = TextAlignment.CenterRight,
-                                    X = Application.GetRealWidth(500),
+                                    X = Application.GetRealWidth(250),
                                     TextColor = ZigbeeColor.Current.LogicBtnCancelColor,
                                     TextSize = 14,
                                 };
@@ -1511,20 +1536,24 @@
                                 //鏈湴娌℃湁瀛樺湪;
                                 if (sceneinof == null)
                                 {
-                                    //鍦ㄧ綉鍏虫煡鎵捐鍦烘櫙;
-                                    sceneinof =await Send.GetScene(int.Parse(actions["DeviceAddr"].ToString()));
-                                    //缃戝叧娌℃湁瀛樺湪;
-                                    if (sceneinof == null)
-                                    {
-
-                                        //娉ㄨВ:鏈湴鍜岀綉鍏抽兘涓嶅瓨鍦ㄨ鍦烘櫙,鐣岄潰灏嗕笉浼氭樉绀鸿鍦烘櫙;
-                                        //sceneinof = new SceneUI();
-                                        //绉婚櫎璇ュ満鏅暟鎹�;
-                                        Common.Logic.CurrentLogic.Actions.Remove(actions);
-                                        //绉婚櫎璇ュ満鏅鍥�;
-                                        devicesFrameLayout.RemoveFromParent();
-                                        continue;
-                                    }
+                                    //瀹炵幇鐩殑:鏄剧ず鍑烘潵璁╁彲浠ヨ嚜宸辨槸鍚﹀垹闄�
+                                    sceneinof = new SceneUI();
+                                    #region --------
+                                    ////鍦ㄧ綉鍏虫煡鎵捐鍦烘櫙;
+                                    ////鏍囪闂:缃戠粶璇锋眰锛屽瓨鍦ㄨ鍥惧姞杞藉揩鎱㈢殑闂锛�
+                                    //sceneinof = await Send.GetScene(int.Parse(actions["DeviceAddr"].ToString()));
+                                    ////缃戝叧娌℃湁瀛樺湪;
+                                    //if (sceneinof == null)
+                                    //{
+                                    //    //娉ㄨВ:鏈湴鍜岀綉鍏抽兘涓嶅瓨鍦ㄨ鍦烘櫙,鐣岄潰灏嗕笉浼氭樉绀鸿鍦烘櫙;
+                                    //    //sceneinof = new SceneUI();
+                                    //    //绉婚櫎璇ュ満鏅暟鎹�;
+                                    //    Common.Logic.CurrentLogic.Actions.Remove(actions);
+                                    //    //绉婚櫎璇ュ満鏅鍥�;
+                                    //    devicesFrameLayout.RemoveFromParent();
+                                    //    continue;
+                                    //}
+                                    #endregion
                                 }
 
                                 actionsIcon.UnSelectedImagePath = "ZigeeLogic/scene.png";
@@ -1957,41 +1986,35 @@
             btncustompush.MouseUpEventHandler += customclick;
             custompushback.MouseUpEventHandler += customclick;
             custompushRowLayout.MouseUpEventHandler += customclick;
+            bool tag = false;//鏍囪寮�鍏崇姸鎬�;
             btnswitch.MouseUpEventHandler += (sender1, e1) =>
-            {
-                btnswitch.IsSelected = !btnswitch.IsSelected;
-                if (btnswitch.IsSelected)
-                {
-                    custompushFrameLayout.Height = Application.GetRealHeight(160);
-                }
-                else
-                {
-                    custompushFrameLayout.Height = Application.GetRealHeight(0);
-                }
-            };
+              {
+                  btnswitch.IsSelected = !btnswitch.IsSelected;
+                  if (btnswitch.IsSelected)
+                  {
+                      tag = true;
+                      custompushFrameLayout.Height = Application.GetRealHeight(160);
+                      if (Common.Logic.CurrentLogic.LogicId != 0)
+                      {
+                          Send.Data("娣诲姞/鏇存柊", "/App/HomeLogicConfig", "POST");
+                      }
+
+                  }
+                  else
+                  {
+                      tag = false;
+                      custompushFrameLayout.Height = Application.GetRealHeight(0);
+                      if (Common.Logic.CurrentLogic.LogicId != 0)
+                      {
+                          Send.Data("鍒犻櫎", "/App/DelHomeLogicConfig", "POST");
+                      }
+                      
+                  }
+              };
             #endregion
 
 
-            var saveFrameLayout = new FrameLayout
-            {
-                Y = middle.Bottom,
-                Height = Application.GetRealHeight(180),
-                BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor,
-            };
-            this.AddChidren(saveFrameLayout);
-
-            var btnsave = new Button
-            {
-                X = Application.GetRealWidth(85),
-                Height = Application.GetRealHeight(130),//194
-                Width = Application.GetRealWidth(910),
-                Radius = (uint)Application.GetRealHeight(60),
-                BackgroundColor = ZigbeeColor.Current.LogicBtnSaveBackgroundColor,
-                TextID = MyInternationalizationString.Save,
-                TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor,
-                TextSize=16,
-            };
-            saveFrameLayout.AddChidren(btnsave);
+          
             btnsave.MouseUpEventHandler += async (sender, e) =>
             {
                 var name = logicTextBox.Text.Trim();
@@ -2000,12 +2023,13 @@
                     new Alert(Language.StringByID(MyInternationalizationString.Tip), Language.StringByID(MyInternationalizationString.PleaseEnterLogicName), Language.StringByID(MyInternationalizationString.Close)).Show();
                     return;
                 }
-                var logicname = Common.Logic.LogicList.Find((logic) => Common.Logic.CurrentLogic.LogicId != logic.LogicId && logic.LogicName == name);
-                if (logicname != null)
-                {
-                    new Alert(Language.StringByID(MyInternationalizationString.Tip), Language.StringByID(MyInternationalizationString.Rename), Language.StringByID(MyInternationalizationString.Close)).Show();
-                    return;
-                }
+                ///鍏堥殣钘忓垽鏂悕瀛楃浉鍚岀殑鍔熻兘锛�
+                //var logicname = Common.Logic.LogicList.Find((logic) => Common.Logic.CurrentLogic.LogicId != logic.LogicId && logic.LogicName == name);
+                //if (logicname != null)
+                //{
+                //    new Alert(Language.StringByID(MyInternationalizationString.Tip), Language.StringByID(MyInternationalizationString.Rename), Language.StringByID(MyInternationalizationString.Close)).Show();
+                //    return;
+                //}
 
                 Common.Logic.CurrentLogic.LogicName = name;
                 bool succeed = false;
@@ -2020,6 +2044,10 @@
                         succeed = true;
                         Common.Logic.CurrentLogic.LogicId = logicifon.LogicId;
                         Common.Logic.LogicList.Add(Common.Logic.CurrentLogic);
+                        if (tag)
+                        {
+                            Send.Data("娣诲姞/鏇存柊", "/App/HomeLogicConfig", "POST");
+                        }
                     }
                 }
                 else
@@ -2579,5 +2607,9 @@
             { IsBackground = true }.Start();
 
         }
+
+
+      
+
     }
 }
diff --git a/ZigbeeApp/Shared/Phone/Device/Logic/MemberList.cs b/ZigbeeApp/Shared/Phone/Device/Logic/MemberList.cs
index 312084c..a322a5f 100755
--- a/ZigbeeApp/Shared/Phone/Device/Logic/MemberList.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Logic/MemberList.cs
@@ -99,23 +99,12 @@
                 //鍏抽棴鍒锋柊View锛�
                 middle.EndHeaderRefreshing();
             };
-            //Read();
-
-            CommonPage.Loading.Start();
-            new System.Threading.Thread(() =>
-           {
-               Application.RunOnMainThread(() =>
-               {
-                   Read();
-                   CommonPage.Loading.Hide();
-               });
-           })
-            { IsBackground = true }.Start();
+            Read();
         }
         /// <summary>
         /// 璇诲彇褰撳墠闂ㄩ攣鐨勪簯绔暟鎹紱
         /// </summary>
-        public async void Read()
+        public void Read()
         {
 
             bool d = false;
@@ -130,12 +119,29 @@
                 }
 
             }
-            if (!d)
-            {
-                var allMemberslist = await Send.AllMembers(macport);
-                Send.LockList.AddRange(allMemberslist);
-            }
-            UserList(macport);
+
+            CommonPage.Loading.Start();
+            middle.RemoveAll();
+            System.Threading.Tasks.Task.Run(async () =>
+           {
+               try
+               {
+                   if (!d)
+                   {
+                       var allMemberslist = await Send.AllMembers(macport);
+                       Send.LockList.AddRange(allMemberslist);
+                   }
+               }
+               catch { }
+               finally
+               {
+                   Application.RunOnMainThread(() =>
+                   {
+                       CommonPage.Loading.Hide();
+                       UserList(macport);
+                   });
+               }
+           });
         }
         /// <summary>
         /// 鎴愬憳鍒楄〃鐨勬柟娉�
@@ -143,7 +149,6 @@
         /// <param name="macport"></param>
         public void UserList(string macport)
         {
-            middle.RemoveAll();
             foreach (var user in Send.LockList)
             {
                 if (user.DoorLockMacPort != macport)
diff --git a/ZigbeeApp/Shared/Phone/Device/Logic/SecurityMode.cs b/ZigbeeApp/Shared/Phone/Device/Logic/SecurityMode.cs
index 9c96d7a..681e0e8 100755
--- a/ZigbeeApp/Shared/Phone/Device/Logic/SecurityMode.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Logic/SecurityMode.cs
@@ -87,6 +87,7 @@
                 BackgroundColor = ZigbeeColor.Current.LogicBtnSaveBackgroundColor,
                 TextID = MyInternationalizationString.Save,
                 TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor,
+                TextSize=16,
 
             };
             middle.AddChidren(btnsave);
diff --git a/ZigbeeApp/Shared/Phone/Device/Logic/Send.cs b/ZigbeeApp/Shared/Phone/Device/Logic/Send.cs
index 9f6f14d..93dc41f 100755
--- a/ZigbeeApp/Shared/Phone/Device/Logic/Send.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Logic/Send.cs
@@ -5,6 +5,8 @@
 using ZigBee.Common;
 using Shared.Common;
 using System.Collections.Specialized;
+using System.Net;
+using System.IO;
 
 namespace Shared.Phone.Device.Logic
 {
@@ -99,8 +101,8 @@
                         var Logicifon = jObjectdata["Data"];
                         logic.LogicId = int.Parse(Logicifon["LogicId"]?.ToString());
                         logic.IsEnable = int.Parse(Logicifon["IsEnable"]?.ToString());
-                        logic.LogicName = Logicifon["LogicName"]?.ToString();
-
+                        logic.LogicName = Logicifon["LogicName"]?.ToString();
+                        logic.LogicCustomPushText = Logicifon["LogicCustomPushText"].ToString();
                         logic.Relationship = int.Parse(Logicifon["Relationship"]?.ToString());
                         logic.TimeAttribute = Newtonsoft.Json.JsonConvert.DeserializeObject<TimeAttributeObj>(Logicifon["TimeAttribute"].ToString());
                         logic.Conditions = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Dictionary<string, string>>>(Logicifon["Conditions"].ToString());
@@ -620,7 +622,8 @@
                         logic.IsEnable = int.Parse(Logicifon["IsEnable"].ToString());
                         logic.LogicName = Logicifon["LogicName"].ToString();
                         logic.LogicType = int.Parse(Logicifon["LogicType"].ToString());
-                        logic.Relationship = int.Parse(Logicifon["Relationship"].ToString());
+                        logic.Relationship = int.Parse(Logicifon["Relationship"].ToString());
+                        logic.LogicCustomPushText = Logicifon["LogicCustomPushText"].ToString();
                         logic.TimeAttribute = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.TimeAttributeObj>(Logicifon["TimeAttribute"].ToString());
                         logic.Conditions = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Dictionary<string, string>>>(Logicifon["Conditions"].ToString());
                         logic.Accounts = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Dictionary<string, string>>>(Logicifon["Accounts"].ToString());
@@ -708,7 +711,7 @@
             });
         }
         // <summary>
-        /// 閫氳繃璁惧鎵惧埌鍖哄煙(鎴块棿)鍚嶇О
+        /// 閫氳繃璁惧鎵惧埌鍖哄煙(鎴块棿)鍚嶇О
         /// </summary>
         /// <param name="btnregionname">Btnregionname.</param>
         /// <param name="device">Device.</param>
@@ -1008,47 +1011,15 @@
             return await WebClientAsync(2, lockifon.Url, lockifon);
         }
 
-        /// <summary>
-        /// 璇锋眰鏈嶅姟鍣ㄧ殑鏂规硶
-        /// </summary>
-        /// <param name="postValues">post鍙傛暟</param>
-        /// <param name="url"></param>
-        /// <returns></returns>
-        public static async System.Threading.Tasks.Task<string> WebClientAsync(int value, string url, Residential residential = null)
+              //鎵撳嵃NameValueCollection()鏄剧ず绱㈠紩, 閿�,鍊�    
+        public static void PrintKeysAndValues2(NameValueCollection myCol)
         {
-
-            NameValueCollection postValues = new NameValueCollection();
-
-            if (value == 0)
+            for (int i = 0; i < myCol.Count; i++)
             {
-                postValues.Add("RequestVersion", CommonPage.RequestVersion);
-                postValues.Add("ReqDto.LoginAccessToken", Config.Instance.Token);
-                postValues.Add("ReqDto.PageSetting.PageSize", Int32.MaxValue.ToString());//
-
+                //鎵撳嵃鏄剧ず绱㈠紩, 閿�,鍊�  
+                Console.WriteLine("[{0}]{1,-10} {2}", i, myCol.GetKey(i), myCol.Get(i));
             }
-            else if (value == 1)
-            {
-                postValues.Add("RequestVersion", CommonPage.RequestVersion);
-                postValues.Add("LoginAccessToken", Config.Instance.Token);
-                postValues.Add("MainAccountId", residential.MainUserDistributedMark);
-                postValues.Add("SharedHid", residential.Id);
-            }
-            else if (value == 2)
-            {
-                postValues.Add("RequestVersion", CommonPage.RequestVersion);
-                postValues.Add("LoginAccessToken", residential.Token);
-                postValues.Add("HomeId", residential.Id);
-                postValues.Add("DoorLockId", residential.doorlockmac);//闂ㄩ攣Mac+绔彛
-                postValues.Add("IsOtherAccountCtrl", residential.IsOtherAccountCtrl.ToString());
-                postValues.Add("PageSetting.PageSize", Int32.MaxValue.ToString());
-            }
-            System.Net.WebClient webClient = new System.Net.WebClient();
-            byte[] responseArray = webClient.UploadValues(url, postValues);
-            var s = System.Text.Encoding.UTF8.GetString(responseArray);
-            return s;
-
         }
-
         public class Residential
         {
             /// <summary>
@@ -1157,38 +1128,166 @@
         public static UserCenter.MemberInfoRes UserMemberInfoRes = null;
         #endregion
 
-        #region  瀛樺彇鏈湴鏂囦欢鐨勬柟娉� ---鏆傛椂涓嶇敤鍚堝苟璇ユ柟娉�---
+        #region  璇锋眰鏈嶅姟鍣ㄦ柟娉�---
         /// <summary>
-        /// 鏂囦欢淇濆瓨
+        /// 璇锋眰鏁版嵁鐨勫皝瑁呮柟娉�
         /// </summary>
-        /// <param name="FileName">鏂囦欢璺緞</param>
-        /// <param name="obj">闇�瑕佸簭鍒楀寲鏁版嵁</param>
-        public static void SaveLocalFile(string FileName, object obj)
-        {
-            //鍏堝簭鍒楀寲鏁版嵁锛�
-            var data = Newtonsoft.Json.JsonConvert.SerializeObject(obj);
-            //鏁版嵁杞崲涓哄瓧鑺傛祦锛�
-            var byteData = System.Text.Encoding.UTF8.GetBytes(data);
-            //鍐欏叆鏁版嵁锛�
-            Shared.IO.FileUtils.WriteFileByBytes(FileName, byteData);
-        }
-
-        /// <summary>
-        /// 鏂囦欢璇诲彇
-        /// </summary>
-        /// <param name="FileName">鏂囦欢璺緞</param>
+        /// <param name="command">璇嗗埆鍛戒护鍒ゆ柇瀛楃涓�</param>
+        /// <param name="url">璇锋眰鍦板潃</param>
+        /// <param name="method">璇锋眰鏂瑰紡涓篜OST/GET</param>
+        /// <param name="obj">瀛樺偍鍙戦�佹暟鎹殑瀵硅薄</param>
         /// <returns></returns>
-        public static string ReadLocalFile(string FileName)
+        public static async System.Threading.Tasks.Task<string>Data(string command, string url, string method, object obj = null)
         {
-            if (System.IO.File.Exists(FileName) == false)
+            var getUrl = CommonPage.RequestHttpsHost + url;//璇锋眰鍦板潃锛�
+            var jObject = new JObject();
+            if (UserCenter.UserCenterResourse.UserInfo.AuthorityNo == 1)
             {
-                ///鍒ゆ柇鏄惁鏈夋枃浠�;
-                return null;
+                jObject.Add("IsOtherAccountCtrl", false);
             }
-            //璇诲嚭淇濆瓨璇ヨ矾寰勭殑鏂囦欢锛�
-            var varByte = Shared.IO.FileUtils.ReadFile(FileName);
-            //瀛楄妭娴佽浆鎹负瀛楃涓诧紱
-            return System.Text.Encoding.UTF8.GetString(varByte);
+            else
+            {
+                jObject.Add("IsOtherAccountCtrl", true);
+            }
+            switch (command)
+            {
+                case "娣诲姞/鏇存柊":
+                    {
+                        jObject.Add("RequestVersion", CommonPage.RequestVersion);
+                        jObject.Add("LoginAccessToken", Config.Instance.Token);
+                        jObject.Add("HomeId", Config.Instance.HomeId);
+                        jObject.Add("LogicID", Common.Logic.CurrentLogic.LogicId);
+                        jObject.Add("PushUserIds", new JArray { Config.Instance.Guid });
+                        jObject.Add("PushContent", Common.Logic.CurrentLogic.LogicCustomPushText);
+
+                    }
+                    break;
+                case "鍒犻櫎":
+                    {
+                        jObject.Add("RequestVersion", CommonPage.RequestVersion);
+                        jObject.Add("LoginAccessToken", Config.Instance.Token);
+                        jObject.Add("HomeId", Config.Instance.HomeId);
+                        jObject.Add("LogicID", Common.Logic.CurrentLogic.LogicId);
+                    }
+                    break;
+            }
+            return await HttpWebRequest(getUrl, jObject.ToString(), method);
+        }
+        /// <summary>
+        ///  璇锋眰鏈嶅姟鍣ㄧ殑鏂规硶(鏀寔璇锋眰鏂瑰紡涓篜OST/GET)
+        /// </summary>
+        /// <param name="getUrl">璇锋眰鐨勫湴鍧�</param>
+        /// <param name="str">璇锋眰鏁版嵁</param>
+        /// <param name="method">璇锋眰鏂瑰紡涓篜OST/GET</param>
+        /// <param name="second">瓒呮椂鏃堕棿</param>
+        /// <returns></returns>
+        public static async System.Threading.Tasks.Task<string>HttpWebRequest(string getUrl, string str, string method,int second= 3)
+        {
+            HttpWebRequest request = WebRequest.Create(getUrl) as HttpWebRequest; //鍒涘缓璇锋眰
+            request.Method = method; //璇锋眰鏂瑰紡涓篜OST/GET
+            request.ContentType = "application/json";
+            request.Timeout = second * 1000;//瓒呮椂鏃堕棿
+            if (method == "POST")
+            {
+                byte[] jsonbyte = System.Text.Encoding.UTF8.GetBytes(str);
+                request.ContentLength = jsonbyte.Length;
+                Stream postStream = request.GetRequestStream();
+                postStream.Write(jsonbyte, 0, jsonbyte.Length);
+                postStream.Close();
+            }
+            //鍙戦�佽姹傚苟鑾峰彇鐩稿簲鍥炲簲鏁版嵁       
+            HttpWebResponse res;
+            try
+            {
+                res = (HttpWebResponse)request.GetResponse();
+            }
+            catch (WebException ex)
+            {
+                res = (HttpWebResponse)ex.Response;
+            }
+            StreamReader sr = new StreamReader(res.GetResponseStream(), System.Text.Encoding.UTF8);
+            string content = sr.ReadToEnd(); //鑾峰緱鍝嶅簲瀛楃涓�
+            return content;
+        }
+        /// <summary>
+        /// 璇锋眰鏈嶅姟鍣ㄧ殑鏂规硶
+        /// </summary>
+        /// <param name="value">鍖哄垎鍙戦�佸懡浠ょ殑鏁版嵁鍒ゆ柇鍊�</param>
+        /// <param name="url">璇锋眰鐨勫湴鍧�</param>
+        /// <param name="residential">瑁呮暟鎹殑瀵硅薄</param>
+        /// <returns></returns>
+        public static async System.Threading.Tasks.Task<string> WebClientAsync(int value, string url, Residential residential = null)
+        {
+            NameValueCollection postValues = new NameValueCollection();
+            switch (value)
+            {
+                case 0:
+                    {
+                        postValues.Add("RequestVersion", CommonPage.RequestVersion);
+                        postValues.Add("ReqDto.LoginAccessToken", Config.Instance.Token);
+                        postValues.Add("ReqDto.PageSetting.PageSize", Int32.MaxValue.ToString());//
+                    }
+                    break;
+                case 1:
+                    {
+                        postValues.Add("RequestVersion", CommonPage.RequestVersion);
+                        postValues.Add("LoginAccessToken", Config.Instance.Token);
+                        postValues.Add("MainAccountId", residential.MainUserDistributedMark);
+                        postValues.Add("SharedHid", residential.Id);
+
+                    }
+                    break;
+                case 2:
+                    {
+                        postValues.Add("RequestVersion", CommonPage.RequestVersion);
+                        postValues.Add("LoginAccessToken", residential.Token);
+                        postValues.Add("HomeId", residential.Id);
+                        postValues.Add("DoorLockId", residential.doorlockmac);//闂ㄩ攣Mac+绔彛
+                        postValues.Add("IsOtherAccountCtrl", residential.IsOtherAccountCtrl.ToString());
+                        postValues.Add("PageSetting.PageSize", Int32.MaxValue.ToString());
+                    }
+                    break;
+            }
+            //PrintKeysAndValues2(postValues);
+            System.Net.WebClient webClient = new System.Net.WebClient();
+            byte[] responseArray = webClient.UploadValues(url, postValues);
+            var s = System.Text.Encoding.UTF8.GetString(responseArray);
+            return s;
+        }
+        #endregion
+
+        #region  瀛樺彇鏈湴鏂囦欢鐨勬柟娉� ---鏆傛椂涓嶇敤鍚堝苟璇ユ柟娉�---
+        /// <summary>
+        /// 鏂囦欢淇濆瓨
+        /// </summary>
+        /// <param name="FileName">鏂囦欢璺緞</param>
+        /// <param name="obj">闇�瑕佸簭鍒楀寲鏁版嵁</param>
+        public static void SaveLocalFile(string FileName, object obj)
+        {
+            //鍏堝簭鍒楀寲鏁版嵁锛�
+            var data = Newtonsoft.Json.JsonConvert.SerializeObject(obj);
+            //鏁版嵁杞崲涓哄瓧鑺傛祦锛�
+            var byteData = System.Text.Encoding.UTF8.GetBytes(data);
+            //鍐欏叆鏁版嵁锛�
+            Shared.IO.FileUtils.WriteFileByBytes(FileName, byteData);
+        }
+
+        /// <summary>
+        /// 鏂囦欢璇诲彇
+        /// </summary>
+        /// <param name="FileName">鏂囦欢璺緞</param>
+        /// <returns></returns>
+        public static string ReadLocalFile(string FileName)
+        {
+            if (System.IO.File.Exists(FileName) == false)
+            {
+                ///鍒ゆ柇鏄惁鏈夋枃浠�;
+                return null;
+            }
+            //璇诲嚭淇濆瓨璇ヨ矾寰勭殑鏂囦欢锛�
+            var varByte = Shared.IO.FileUtils.ReadFile(FileName);
+            //瀛楄妭娴佽浆鎹负瀛楃涓诧紱
+            return System.Text.Encoding.UTF8.GetString(varByte);
         }
         #endregion
     }
diff --git a/ZigbeeApp/Shared/Phone/Device/Logic/TemplatePage.cs b/ZigbeeApp/Shared/Phone/Device/Logic/TemplatePage.cs
index 5ee0d16..78ee519 100755
--- a/ZigbeeApp/Shared/Phone/Device/Logic/TemplatePage.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Logic/TemplatePage.cs
@@ -109,7 +109,7 @@
                 Height = Application.GetRealHeight(436),
                 X = Application.GetRealWidth(72),
                 Y = Application.GetRealHeight(30),
-                UnSelectedImagePath = "ZigeeLogic/logicbj" + s + ".png",
+                UnSelectedImagePath = $"ZigeeLogic/logicbj{s}.png",
             };
             logiciconfl.AddChidren(iconBtn);
 
@@ -298,11 +298,11 @@
                     var addtextbtn = new Button
                     {
                         Height = Application.GetRealHeight(58),
-                        Width = Application.GetRealWidth(300),
+                        Width = Application.GetRealWidth(400),
                         Y = Application.GetRealHeight(45 + 30),
                         TextColor = ZigbeeColor.Current.LogicBlankBackgroundColor,
-                        TextID = MyInternationalizationString.addconditions,
-                        X = Application.GetRealWidth(390),
+                        TextID = MyInternationalizationString.addsensor,
+                        X = Application.GetRealWidth(340),
                         TextSize = 14,
                     };
                     addfl.AddChidren(addtextbtn);
@@ -444,19 +444,19 @@
                                                             int second = int.Parse(conditions["IgnoreTime"]) % 60;
                                                             if (minute != 0 && second != 0)
                                                             {
-                                                                devicestatus.Text = minute.ToString() + Language.StringByID(MyInternationalizationString.minute) + second.ToString() + Language.StringByID(MyInternationalizationString.second) + Language.StringByID(MyInternationalizationString.closetime);
+                                                                devicestatus.Text = minute.ToString() + Language.StringByID(MyInternationalizationString.minute) + second.ToString() + Language.StringByID(MyInternationalizationString.second) + Language.StringByID(MyInternationalizationString.unattendedtime1);
 
                                                             }
                                                             else
                                                             {
                                                                 if (minute == 0 && second != 0)
                                                                 {
-                                                                    devicestatus.Text = second.ToString() + Language.StringByID(MyInternationalizationString.second) + Language.StringByID(MyInternationalizationString.closetime);
+                                                                    devicestatus.Text = second.ToString() + Language.StringByID(MyInternationalizationString.second) + Language.StringByID(MyInternationalizationString.unattendedtime1);
 
                                                                 }
                                                                 if (minute != 0 && second == 0)
                                                                 {
-                                                                    devicestatus.Text = minute.ToString() + Language.StringByID(MyInternationalizationString.Minute) + Language.StringByID(MyInternationalizationString.closetime);
+                                                                    devicestatus.Text = minute.ToString() + Language.StringByID(MyInternationalizationString.Minute) + Language.StringByID(MyInternationalizationString.unattendedtime1);
 
                                                                 }
 
@@ -612,11 +612,11 @@
                     var addtextbtn = new Button
                     {
                         Height = Application.GetRealHeight(58),
-                        Width = Application.GetRealWidth(300),
+                        Width = Application.GetRealWidth(400),
                         Y = Application.GetRealHeight(45 + 30),
                         TextColor = ZigbeeColor.Current.LogicBlankBackgroundColor,
-                        TextID = MyInternationalizationString.addfunction,
-                        X = Application.GetRealWidth(390),
+                        TextID = MyInternationalizationString.addlighting,
+                        X = Application.GetRealWidth(340),
                         TextSize = 14,
                     };
                     addfl.AddChidren(addtextbtn);
@@ -1139,23 +1139,12 @@
                 Gravity = Gravity.CenterVertical,
             };
             pushswitchRowlayout.AddChidren(btnswitch);
-            btnswitch.MouseUpEventHandler += (sender1, e1) =>
-            {
-                btnswitch.IsSelected = !btnswitch.IsSelected;
-                if (btnswitch.IsSelected)
-                {
-
-                }
-                else
-                {
-
-                }
-            };
+          
 
 
             var custompushFrameLayout = new FrameLayout
             {
-                Height = Application.GetRealHeight(160),
+                Height = Application.GetRealHeight(0),
                 BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor,
             };
             middle.AddChidren(custompushFrameLayout);
@@ -1206,7 +1195,31 @@
 
             #endregion
 
+            bool tag = false;//鏍囪寮�鍏崇姸鎬�;
+            btnswitch.MouseUpEventHandler += (sender1, e1) =>
+            {
+                btnswitch.IsSelected = !btnswitch.IsSelected;
+                if (btnswitch.IsSelected)
+                {
+                    tag = true;
+                    custompushFrameLayout.Height = Application.GetRealHeight(160);
+                    if (Common.Logic.CurrentLogic.LogicId != 0)
+                    {
+                        Send.Data("娣诲姞/鏇存柊", "/App/HomeLogicConfig", "POST");
+                    }
 
+                }
+                else
+                {
+                    tag = false;
+                    custompushFrameLayout.Height = Application.GetRealHeight(0);
+                    if (Common.Logic.CurrentLogic.LogicId != 0)
+                    {
+                        Send.Data("鍒犻櫎", "/App/DelHomeLogicConfig", "POST");
+                    }
+
+                }
+            };
             var saveFrameLayout = new FrameLayout
             {
                 Y = middle.Bottom,
@@ -1222,7 +1235,7 @@
                 Width = Application.GetRealWidth(910),
                 Radius = (uint)Application.GetRealHeight(60),
                 BackgroundColor = ZigbeeColor.Current.LogicBtnSaveBackgroundColor,
-                TextID = MyInternationalizationString.Save,
+                TextID = MyInternationalizationString.application,
                 TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor,
             };
             saveFrameLayout.AddChidren(btnsave);
@@ -1238,12 +1251,12 @@
                     new Alert(Language.StringByID(MyInternationalizationString.Tip), Language.StringByID(MyInternationalizationString.PleaseEnterLogicName), Language.StringByID(MyInternationalizationString.Close)).Show();
                     return;
                 }
-                var logicname = Common.Logic.LogicList.Find((logic) => Common.Logic.CurrentLogic.LogicId != logic.LogicId && logic.LogicName == name);
-                if (logicname != null)
-                {
-                    new Alert(Language.StringByID(MyInternationalizationString.Tip), Language.StringByID(MyInternationalizationString.Rename), Language.StringByID(MyInternationalizationString.Close)).Show();
-                    return;
-                }
+                //var logicname = Common.Logic.LogicList.Find((logic) => Common.Logic.CurrentLogic.LogicId != logic.LogicId && logic.LogicName == name);
+                //if (logicname != null)
+                //{
+                //    new Alert(Language.StringByID(MyInternationalizationString.Tip), Language.StringByID(MyInternationalizationString.Rename), Language.StringByID(MyInternationalizationString.Close)).Show();
+                //    return;
+                //}
 
                 Common.Logic.CurrentLogic.LogicName = name;
 
@@ -1257,6 +1270,10 @@
                     {
                         Common.Logic.CurrentLogic.LogicId = logicifon.LogicId;
                         Common.Logic.LogicList.Add(Common.Logic.CurrentLogic);
+                        if (tag)
+                        {
+                            Send.Data("娣诲姞/鏇存柊", "/App/HomeLogicConfig", "POST");
+                        }
                     }
                 }
                 else
diff --git a/ZigbeeApp/Shared/Phone/Device/Room/EditRoom.cs b/ZigbeeApp/Shared/Phone/Device/Room/EditRoom.cs
index b9dc2ad..ced7498 100755
--- a/ZigbeeApp/Shared/Phone/Device/Room/EditRoom.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Room/EditRoom.cs
@@ -3,12 +3,14 @@
 using System.Globalization;
 using Shared.Common;
 using Shared.Phone.Device.CommonForm;
+using Shared.Phone.Device.DeviceLogic;
 using Shared.Phone.UserCenter;
 using Shared.Phone.UserView;
+using ZigBee.Device;
 
 namespace Shared.Phone.Device.Room
 {
-    public class EditRoom : FrameLayout
+    public class EditRoom : FrameLayout, ZigBee.Common.IStatus
     {
         #region 鈼� 鍙橀噺____________________________
         /// <summary>
@@ -44,11 +46,143 @@
         /// </summary>
         public int OldIconPathType;
 
-        
+        CommonDevice temperDevice;
+
+        CommonDevice humidDevice;
+
+        DeviceInfoRow temperatureRow;
+
+        DeviceInfoRow humidityRow;
+
         #endregion
+
+        #region 鈼� 鎺ュ彛__________________________
+        /// <summary>
+        /// 澶勭悊鍙樺寲浜嬩欢 --灏嗗純鐢� 鏀圭敤DeviceInfoChange()
+        /// </summary>
+        /// <returns>The changed.</returns>
+        /// <param name="common">Common.</param>
+        public void Changed(CommonDevice common)
+        {
+
+        }
+        /// <summary>
+        /// Changeds the IL ogic status.
+        /// </summary>
+        /// <param name="logic">Logic.</param>
+        public void ChangedILogicStatus(ZigBee.Device.Logic logic)
+        {
+            //throw new NotImplementedException();
+        }
+        /// <summary>
+        /// Changeds the IS cene status.
+        /// </summary>
+        /// <param name="scene">Scene.</param>
+        public void ChangedISceneStatus(Scene scene)
+        {
+            //throw new NotImplementedException();
+        }
+        /// <summary>
+        /// 璁惧鐘舵�佹洿鏂版帴鍙�
+        /// <para>type锛氬鏋滀负 DeviceInComingRespon:璁惧鏂颁笂鎶�</para>
+        /// <para>type锛氬鏋滀负 IASInfoReport:RemoveDeviceRespon</para>
+        /// <para>type锛氬鏋滀负 DeviceStatusReport:璁惧涓婃姤</para>
+        /// <para>type锛氬鏋滀负 IASInfoReport:IAS瀹夐槻淇℃伅涓婃姤</para>
+        /// <para>type锛氬鏋滀负 OnlineStatusChange: 璁惧鍦ㄧ嚎鐘舵�佹洿鏂�</para>
+        /// </summary>
+        /// <param name="common">Common.</param>
+        /// <param name="typeTag">Type tag.</param>
+        public void DeviceInfoChange(CommonDevice common, string typeTag)
+        {
+            if (typeTag == "DeviceStatusReport")
+            {
+                Application.RunOnMainThread(() =>
+                {
+                    try
+                    {
+                        if (common.DeviceStatusReport.AttriBute == null || common.DeviceStatusReport.AttriBute.Count == 0)
+                        {
+                            return;
+                        }
+                        //鏄惁涓哄綋鍓嶈澶�
+                        if ((temperDevice?.DeviceEpoint != common.DeviceEpoint || temperDevice?.DeviceAddr != common.DeviceAddr) && (humidDevice?.DeviceEpoint != common.DeviceEpoint || humidDevice?.DeviceAddr != common.DeviceAddr))
+                        {
+                            //return;
+                        }
+
+                        //if (common.Type == DeviceType.TemperatureSensor)
+                        //{
+                        if (common.DeviceStatusReport.CluterID == 1026)
+                        {
+                            foreach (var data in common.DeviceStatusReport.AttriBute)
+                            {
+                                if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
+                                {
+                                    if (data.AttriButeData == 0)
+                                    {
+                                        //0鈩�
+                                        temperatureRow.NameText.Text = "--鈩�";
+                                        room.Temperatrue = 0;
+                                    }
+                                    else if (data.AttriButeData > 32767)
+                                    {
+                                        //璐熸暟(鐗规畩澶勭悊)
+                                        string strValue = (data.AttriButeData - 65536).ToString();
+                                        //灏忔暟鐐归渶瑕佷竴浣�
+                                        strValue = strValue.Substring(0, strValue.Length - 1);
+                                        temperatureRow.NameText.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�";
+                                        room.Temperatrue = int.Parse(strValue) * 0.1;
+                                    }
+                                    else
+                                    {
+                                        //灏忔暟鐐归渶瑕佷竴浣�
+                                        string strValue = data.AttriButeData.ToString();
+                                        strValue = strValue.Substring(0, strValue.Length - 1);
+                                        temperatureRow.NameText.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�";
+                                        room.Temperatrue = int.Parse(strValue) * 0.1;
+                                    }
+                                }
+                            }
+                        }
+                        else if (common.DeviceStatusReport.CluterID == 1029)
+                        {
+                            foreach (var data in common.DeviceStatusReport.AttriBute)
+                            {
+                                if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
+                                {
+                                    if (data.AttriButeData == 0)
+                                    {
+                                        //0
+                                        humidityRow.NameText.Text = "--%";
+                                        room.Humidity = 0;
+                                    }
+                                    else
+                                    {
+                                        //灏忔暟鐐归渶瑕佷竴浣�(婀垮害娌℃湁璐熸暟)
+                                        string strValue = data.AttriButeData.ToString();
+                                        strValue = strValue.Substring(0, strValue.Length - 1);
+                                        humidityRow.NameText.Text = strValue.Insert(strValue.Length - 1, ".") + "%";
+                                        room.Humidity = int.Parse(strValue) * 0.1;
+                                    }
+                                }
+                            }
+                        }
+                        //}
+                    }
+                    catch (Exception ex)
+                    {
+                        System.Console.WriteLine($"Error:{ex.Message}");
+                    }
+                });
+            }
+        }
+        #endregion
+
+
 
         public EditRoom()
         {
+            ZbGateway.StatusList.Add(this);
             BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor;
         }
 
@@ -72,9 +206,7 @@
 
         public override void RemoveFromParent()
         {
-            HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice");
-            HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice");
-
+            ZbGateway.StatusList.Remove(this);
             CommonPage.Instance.IsDrawerLockMode = false;
             base.RemoveFromParent();
         }
@@ -188,7 +320,7 @@
             };
 
 
-            var temperatureRow = new DeviceInfoRow(446);
+            temperatureRow = new DeviceInfoRow(446);
             temperatureRow.Init();
             temperatureRow.SetTipTitle(R.MyInternationalizationString.Temperature);
             temperatureRow.NameText.TextAlignment = TextAlignment.CenterRight;
@@ -208,102 +340,16 @@
                     }
                     room.TemperatrueDevice = $"{selectTemp.DeviceAddr}{selectTemp.DeviceEpoint}";
                     temperatureRow.SetTitle(R.MyInternationalizationString.Getting);
-
-                    HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice");
-                    HdlGatewayReceiveLogic.Current.AddAttributeEvent("TemperatrueDevice",  ReceiveComandDiv.A璁惧灞炴�т笂鎶�, ((report) =>
-                    {
-                        string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(report);
-                        if (room.TemperatrueDevice != mainKeys)
-                        {
-                            return;
-                        }
-                        //绉婚櫎鎺変簨浠�
-                        HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice");
-
-                        foreach (var data in report.DeviceStatusReport.AttriBute)
-                        {
-                            if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
-                            {
-                                if (data.AttriButeData == 0)
-                                {
-                                    //0鈩�
-                                    temperatureRow.NameText.Text = "0.0鈩�";
-                                    room.Temperatrue = 0;
-                                }
-                                else if (data.AttriButeData > 32767)
-                                {
-                                    //璐熸暟(鐗规畩澶勭悊)
-                                    string strValue = (data.AttriButeData - 65536).ToString();
-                                    //灏忔暟鐐归渶瑕佷竴浣�
-                                    strValue = strValue.Substring(0, strValue.Length - 1);
-                                    temperatureRow.NameText.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�";
-                                    room.Temperatrue = int.Parse(strValue) * 0.1;
-                                }
-                                else
-                                {
-                                    //灏忔暟鐐归渶瑕佷竴浣�
-                                    string strValue = data.AttriButeData.ToString();
-                                    strValue = strValue.Substring(0, strValue.Length - 1);
-                                    temperatureRow.NameText.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�";
-                                    room.Temperatrue = int.Parse(strValue) *0.1;
-                                }
-                            }
-                        }
-                    }));
                     //鍙戦�佽幏鍙栨俯搴︾殑鍛戒护
-                    (selectTemp as ZigBee.Device.TemperatureSensor).ReadTemperatureOrHumidity();
+                    ReadDeviceAttributeLogic.Instance.SendTemperatureStatuComand(selectTemp);
                 };
             };
             if (string.IsNullOrEmpty(room.TemperatrueDevice) == false)
             {
                 temperatureRow.SetTitle(R.MyInternationalizationString.Getting);
-                HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice");
-                HdlGatewayReceiveLogic.Current.AddAttributeEvent("TemperatrueDevice",  ReceiveComandDiv.A璁惧灞炴�т笂鎶�, (Action<ZigBee.Device.CommonDevice>)((report) =>
-                {
-                    string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(report);
-                    if (room.TemperatrueDevice != mainKeys)
-                    {
-                        return;
-                    }
-                    //绉婚櫎鎺変簨浠�
-                    HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice");
-
-                    foreach (var data in report.DeviceStatusReport.AttriBute)
-                    {
-                        if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
-                        {
-                            if (data.AttriButeData == 0)
-                            {
-                                //0鈩�
-                                temperatureRow.NameText.Text = "0.0鈩�";
-                                room.Temperatrue = 0;
-                            }
-                            else if (data.AttriButeData > 32767)
-                            {
-                                //璐熸暟(鐗规畩澶勭悊)
-                                string strValue = (data.AttriButeData - 65536).ToString();
-                                //灏忔暟鐐归渶瑕佷竴浣�
-                                strValue = strValue.Substring(0, strValue.Length - 1);
-                                temperatureRow.NameText.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�";
-                                room.Temperatrue = int.Parse(strValue) * 0.1;
-                            }
-                            else
-                            {
-                                //灏忔暟鐐归渶瑕佷竴浣�
-                                string strValue = data.AttriButeData.ToString();
-                                strValue = strValue.Substring(0, strValue.Length - 1);
-                                temperatureRow.NameText.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�";
-                                room.Temperatrue = int.Parse(strValue) * 0.1;
-                            }
-                        }
-                    }
-                }));
                 //鍙戦�佽幏鍙栨俯搴︾殑鍛戒护
                 var dev = Common.LocalDevice.Current.GetDevice(room.TemperatrueDevice);
-                if (dev != null)
-                {
-                    (dev as ZigBee.Device.TemperatureSensor).ReadTemperatureOrHumidity();
-                }
+                ReadDeviceAttributeLogic.Instance.SendTemperatureStatuComand(dev);
             }
             else
             {
@@ -311,7 +357,7 @@
             }
 
 
-            var humidityRow = new DeviceInfoRow(585);
+            humidityRow = new DeviceInfoRow(585);
             humidityRow.Init();
             humidityRow.SetTipTitle(R.MyInternationalizationString.Humidity);
             humidityRow.NameText.TextAlignment = TextAlignment.CenterRight;
@@ -332,81 +378,16 @@
                     room.HumidityDevice = $"{selectTemp.DeviceAddr}{selectTemp.DeviceEpoint}";
                     humidityRow.SetTitle(R.MyInternationalizationString.Getting);
 
-                    HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice");
-                    HdlGatewayReceiveLogic.Current.AddAttributeEvent("HumidityDevice",  ReceiveComandDiv.A璁惧灞炴�т笂鎶�, (report) =>
-                    {
-                        string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(report);
-                        if (room.HumidityDevice != mainKeys)
-                        {
-                            return;
-                        }
-                        //绉婚櫎鎺変簨浠�
-                        HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice");
-                        foreach (var data in report.DeviceStatusReport.AttriBute)
-                        {
-                            if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
-                            {
-                                if (data.AttriButeData == 0)
-                                {
-                                    //0
-                                    humidityRow.NameText.Text = "0.0%";
-                                    room.Humidity = 0;
-                                }
-                                else
-                                {
-                                    //灏忔暟鐐归渶瑕佷竴浣�(婀垮害娌℃湁璐熸暟)
-                                    string strValue = data.AttriButeData.ToString();
-                                    strValue = strValue.Substring(0, strValue.Length - 1);
-                                    humidityRow.NameText.Text = strValue.Insert(strValue.Length - 1, ".") + "%";
-                                    room.Humidity = int.Parse(strValue) * 0.1;
-                                }
-                            }
-                        }
-                    });
                     //鍙戦�佽幏鍙栨箍搴︾殑鍛戒护
-                    (selectTemp as ZigBee.Device.TemperatureSensor).ReadTemperatureOrHumidity();
+                    ReadDeviceAttributeLogic.Instance.SendHumidityStatuComand(selectTemp);
                 };
             };
             if (string.IsNullOrEmpty(room.HumidityDevice) == false)
             {
                 humidityRow.SetTitle(R.MyInternationalizationString.Getting);
-                HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice");
-                HdlGatewayReceiveLogic.Current.AddAttributeEvent("HumidityDevice",  ReceiveComandDiv.A璁惧灞炴�т笂鎶�, (report) =>
-                {
-                    string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(report);
-                    if (room.HumidityDevice != mainKeys)
-                    {
-                        return;
-                    }
-                    //绉婚櫎鎺変簨浠�
-                    HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice");
-                    foreach (var data in report.DeviceStatusReport.AttriBute)
-                    {
-                        if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
-                        {
-                            if (data.AttriButeData == 0)
-                            {
-                                //0
-                                humidityRow.NameText.Text = "0.0%";
-                                room.Humidity = 0;
-                            }
-                            else
-                            {
-                                //灏忔暟鐐归渶瑕佷竴浣�(婀垮害娌℃湁璐熸暟)
-                                string strValue = data.AttriButeData.ToString();
-                                strValue = strValue.Substring(0, strValue.Length - 1);
-                                humidityRow.NameText.Text = strValue.Insert(strValue.Length - 1, ".") + "%";
-                                room.Humidity = int.Parse(strValue) * 0.1;
-                            }
-                        }
-                    }
-                });
                 //鍙戦�佽幏鍙栨箍搴︾殑鍛戒护
                 var dev = Common.LocalDevice.Current.GetDevice(room.HumidityDevice);
-                if (dev != null)
-                {
-                    (dev as ZigBee.Device.TemperatureSensor).ReadTemperatureOrHumidity();
-                }
+                ReadDeviceAttributeLogic.Instance.SendHumidityStatuComand(dev);
             }
             else
             {
@@ -474,24 +455,25 @@
                 Height = Application.GetRealHeight(450),
                 Width = Application.GetRealWidth(selectRow_Width),
                 Gravity = Gravity.CenterHorizontal,
-                Radius = (uint)Application.GetRealHeight(17),
+                Radius = (uint)Application.GetRealHeight(35),
                 BackgroundColor = ZigbeeColor.Current.GXCTextWhiteColor
             };
             selectFL.AddChidren(itemFL);
-            itemFL.Animate = Animate.DownToUp;
+            //itemFL.Animate = Animate.DownToUp;
 
             var selectLocalPicture = new Button()
             {
                 Height = Application.GetRealHeight(selectRow_Height) - 1,
                 TextID = R.MyInternationalizationString.LocalPicture,
-                TextColor = ZigbeeColor.Current.GXCTextSelectedColor4
+                TextColor = ZigbeeColor.Current.GXCTextSelectedColor4,
+                TextSize = 17
             };
             itemFL.AddChidren(selectLocalPicture);
             var selectLocalLine = new Button()
             {
                 Y = selectLocalPicture.Bottom,
                 Height = 1,
-                BackgroundColor = ZigbeeColor.Current.GXCLineColor
+                BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor2
             };
             itemFL.AddChidren(selectLocalLine);
 
@@ -500,14 +482,15 @@
                 Y = selectLocalLine.Bottom,
                 Height = Application.GetRealHeight(selectRow_Height) - 1,
                 TextID = R.MyInternationalizationString.Photograph,
-                TextColor = ZigbeeColor.Current.GXCTextSelectedColor4
+                TextColor = ZigbeeColor.Current.GXCTextSelectedColor4,
+                TextSize = 17
             };
             itemFL.AddChidren(selectPhotographBtn);
             var selectPhotographLine = new Button()
             {
                 Y = selectPhotographBtn.Bottom,
                 Height = 1,
-                BackgroundColor = ZigbeeColor.Current.GXCLineColor,
+                BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor2,
             };
             itemFL.AddChidren(selectPhotographLine);
 
@@ -516,7 +499,8 @@
                 Y = selectPhotographLine.Bottom,
                 Height = Application.GetRealHeight(selectRow_Height) - 1,
                 TextID = R.MyInternationalizationString.MyAblums,
-                TextColor = ZigbeeColor.Current.GXCTextSelectedColor4
+                TextColor = ZigbeeColor.Current.GXCTextSelectedColor4,
+                TextSize = 17
             };
             itemFL.AddChidren(selectAblumsBtn);
 
@@ -529,7 +513,8 @@
                 TextID = R.MyInternationalizationString.Cancel,
                 TextColor = ZigbeeColor.Current.GXCTextSelectedColor4,
                 BackgroundColor = ZigbeeColor.Current.GXCTextWhiteColor,
-                Radius = (uint)Application.GetRealHeight(17)
+                Radius = (uint)Application.GetRealHeight(35),
+                TextSize = 17
             };
             selectFL.AddChidren(cancelBtn);
 
diff --git a/ZigbeeApp/Shared/Phone/Device/Room/RoomHumiditySetting.cs b/ZigbeeApp/Shared/Phone/Device/Room/RoomHumiditySetting.cs
index c4d180f..82a4850 100755
--- a/ZigbeeApp/Shared/Phone/Device/Room/RoomHumiditySetting.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Room/RoomHumiditySetting.cs
@@ -91,7 +91,7 @@
             };
             bodyFrameLayout.AddChidren(verticalScrolView);
 
-            var confirm = new Device.CommonForm.CompleteButton(1700, 700, 127);
+            var confirm = new Device.CommonForm.CompleteButton(1700, 900, 127);
             confirm.SetTitle(R.MyInternationalizationString.Save);
             AddChidren(confirm);
             confirm.MouseUpEventHandler += (sender, e) =>
@@ -107,13 +107,24 @@
 
             for (int i = 0; i < deviceList.Count; i++)
             {
+                var fl = new FrameLayout
+                {
+                    Height = Application.GetRealHeight(127 + 20),
+                    BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
+                };
+                verticalScrolView.AddChidren(fl);
+
                 var device = deviceList[i];
-                var devRow = new DeviceInfoWithZoneRow(20 + i * (127 + 20));
-                verticalScrolView.AddChidren(devRow);
+                var devRow = new DeviceInfoWithZoneRow(20);
+                fl.AddChidren(devRow);
                 devRow.Init();
                 devRow.SetIcon(device.IconPath);
                 devRow.SetName(Common.LocalDevice.Current.GetDeviceEpointName(device));
                 devRow.SetZone(Common.Room.CurrentRoom.GetRoomNameByDevice(device));
+                if (i == deviceList.Count - 1)
+                {
+                    devRow.HideLine(true);
+                }
 
                 if (tempDevice != null && tempDevice == device)
                 {
diff --git a/ZigbeeApp/Shared/Phone/Device/Room/RoomManagement.cs b/ZigbeeApp/Shared/Phone/Device/Room/RoomManagement.cs
index c6f94e4..ea6ea22 100755
--- a/ZigbeeApp/Shared/Phone/Device/Room/RoomManagement.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Room/RoomManagement.cs
@@ -20,10 +20,30 @@
 
         public FrameLayout itemView;
 
+        static RoomManagement roomManagement;
+        public static RoomManagement Instance
+        {
+            get
+            {
+                if (roomManagement == null)
+                {
+                    roomManagement = new RoomManagement { };
+                }
+                return roomManagement;
+            }
+        }
+
+        /// <summary>
+        /// 鏄惁鍙互瑙﹀彂鐐瑰嚮浜嬩欢--鏄惁鍙互璺宠浆涓婚〉鎴块棿
+        /// </summary>
+        public bool CanClick = true;
+
         #endregion
 
 
         public Action action;
+
+
 
         public override void RemoveFromParent()
         {
@@ -35,6 +55,8 @@
         /// </summary>
         public void Show()
         {
+            RemoveAll();
+
             AddTop();
 
             AddBodyView(Config.Instance.Home.CurrentFloorId);
@@ -150,9 +172,20 @@
                     var room = roomList[i];
                     var roomView = new RoomMainView(xx, yy);
                     itemView.AddChidren(roomView);
-                    roomView.Init();
+                    roomView.Init(this,room);
                     roomView.SetRoomName(room.Name);
-                    roomView.SetRoomIcon(room.BackgroundImage);
+                    roomView.SetRoomIcon(room.BackgroundImageType == 0 ? room.BackgroundImage : System.IO.Path.Combine(Config.Instance.FullPath, room.BackgroundImage));
+                    roomView.ClickBtn.MouseUpEventHandler += (sender, e) =>
+                    {
+                        if (CanClick == false)
+                        {
+                            return;
+                        }
+                        CommonPage.Instance.CloseLeftMenu();
+                        Common.Room.CurrentRoom = room;
+                        Config.Instance.Home.CurrentFloorId = room.FloorId;
+                        UserPage.Instance.Fresh();
+                    };
                 }
                 else
                 {
@@ -172,9 +205,10 @@
         /// <summary>
         /// 鎴块棿绠$悊鐣岄潰
         /// </summary>
-        void RoomPage()
+        public RoomManagement()
         {
             BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor;
+            roomManagement = this;
         }
 
         /// <summary>
@@ -184,6 +218,10 @@
         /// <param name="mouseEventArgs"></param>
         private void ShowUnallocatedRoom_MouseUpEvent(object sender,MouseEventArgs mouseEventArgs)
         {
+            if(CanClick==false)
+            {
+                return;
+            }
             var unalloctedRoom = new UnallocatedRoom();
             AddChidren(unalloctedRoom);
             unalloctedRoom.Show();
diff --git a/ZigbeeApp/Shared/Phone/Device/Room/RoomTemperatureSetting.cs b/ZigbeeApp/Shared/Phone/Device/Room/RoomTemperatureSetting.cs
index 4691908..d47fa9d 100755
--- a/ZigbeeApp/Shared/Phone/Device/Room/RoomTemperatureSetting.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Room/RoomTemperatureSetting.cs
@@ -104,15 +104,25 @@
             var deviceList = GetTemperatrueDevices();
             for (int i = 0; i < deviceList.Count; i++)
             {
+                var fl = new FrameLayout
+                {
+                    Height = Application.GetRealHeight(127 + 20),
+                    BackgroundColor=ZigbeeColor.Current.GXCBackgroundColor
+                };
+                verticalScrolView.AddChidren(fl);
                 var device = deviceList[i];
-                var devRow = new DeviceInfoWithZoneRow(20 + i * (127 + 20));
-                verticalScrolView.AddChidren(devRow);
+                var devRow = new DeviceInfoWithZoneRow(20);
+                fl.AddChidren(devRow);
                 devRow.Init();
                 devRow.SetIcon(device.IconPath);
                 devRow.SetName(Common.LocalDevice.Current.GetDeviceEpointName(device));
                 devRow.SetZone(Common.Room.CurrentRoom.GetRoomNameByDevice(device));
+                if (i == deviceList.Count - 1)
+                {
+                    devRow.HideLine(true);
+                }
 
-                if(tempDevice!=null && tempDevice==device)
+                if (tempDevice!=null && tempDevice==device)
                 {
                     tempDeviceRow = devRow;
                     tempDevice = device;
diff --git a/ZigbeeApp/Shared/Phone/Device/Room/UnallocatedRoom.cs b/ZigbeeApp/Shared/Phone/Device/Room/UnallocatedRoom.cs
index 6346226..5ddbd8b 100755
--- a/ZigbeeApp/Shared/Phone/Device/Room/UnallocatedRoom.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Room/UnallocatedRoom.cs
@@ -15,15 +15,13 @@
         /// bodyFrameLayout
         /// </summary>
         private FrameLayout bodyFrameLayout;
-
-        private Button addBtn;
+        /// <summary>
+        /// top
+        /// </summary>
+        private TopFrameLayout top;
+        private Button selectAllBtn;
 
         private FrameLayout itemView;
-        /// <summary>
-        /// editStatus
-        /// </summary>
-        private bool SelectAll;
-
         /// <summary>
         /// low_High
         /// </summary>
@@ -119,9 +117,13 @@
             sceneList = Shared.Common.Room.CurrentRoom.GetUnalloctedScenes();
             typeDeviceDic.Clear();
             typeIdDic.Clear();
+            if (devList == null)
+            {
+                return;
+            }
             foreach (var device in devList)
             {
-                var info = Common.LocalDevice.Current.GetNotHdlMyDeviceEnumInfo(new List<CommonDevice> { device.CommonDevice });
+                var info = Common.LocalDevice.Current.GetDeviceBelongEnumInfo(device.CommonDevice);
                 if (typeDeviceDic.ContainsKey(info.BeloneTextId) == false)
                 {
                     var sameDevList = new List<DeviceUI> { };
@@ -152,7 +154,7 @@
         /// </summary>
         public void AddTop()
         {
-            var top = new TopFrameLayout();
+            top = new TopFrameLayout();
             AddChidren(top);
             top.InitTopview();
             top.SetTopTitle(R.MyInternationalizationString.Unallocated);
@@ -160,21 +162,6 @@
             {
                 RemoveFromParent();
             };
-
-            addBtn = new Button()
-            {
-                X = Application.GetRealWidth(1080-150-80),
-                Width = Application.GetRealWidth(150),
-                Height = Application.GetRealHeight(80),
-                Gravity = Gravity.CenterVertical,
-                TextColor = ZigbeeColor.Current.GXCTextBlackColor,
-                TextSize = CommonFormResouce.TopTitle_TextSize,
-                TextAlignment = TextAlignment.CenterRight,
-                TextID = R.MyInternationalizationString.AllSelect
-            };
-            top.topView.AddChidren(addBtn);
-
-            addBtn.MouseUpEventHandler += Edit_MouseUpEventHandler;
         }
 
         /// <summary>
@@ -254,35 +241,6 @@
             RefreshBodyView();
         }
 
-        /// <summary>
-        /// 缂栬緫
-        /// </summary>
-        /// <param name="sender"></param>
-        /// <param name="mouseEventArgs"></param>
-        private void Edit_MouseUpEventHandler(object sender, MouseEventArgs mouseEventArgs)
-        {
-            SelectAll = !SelectAll;
-            if (SelectAll)
-            {
-                addBtn.TextID = R.MyInternationalizationString.Cancel;
-            }
-            else
-            {
-                addBtn.TextID = R.MyInternationalizationString.AllSelect;
-            }
-
-            if (functionBtn.IsSelected)
-            {
-                functionSceneBodyView.RemoveAll();
-                ShowFunction(SelectAll);
-            }
-            else if (sceneBtn.IsSelected)
-            {
-                functionSceneBodyView.RemoveAll();
-                ShowScene(SelectAll);
-            }
-        }
-
         #endregion
 
         #region 鈼� 鍒锋柊____________________________
@@ -292,14 +250,14 @@
         public void RefreshBodyView()
         {
             functionSceneBodyView.RemoveAll();
-            SelectAll = false;
+            
             if (functionBtn.IsSelected)
             {
-                ShowFunction(SelectAll);
+                ShowFunction();
             }
             else if (sceneBtn.IsSelected)
             {
-                ShowScene(SelectAll);
+                ShowScene();
             }
         }
 
@@ -309,9 +267,8 @@
         /// <summary>
         /// 鍔熻兘
         /// </summary>
-        public void ShowFunction(bool selectAll)
+        public void ShowFunction()
         {
-            SelectAll = selectAll;
             if (typeIdDic.Count == 0)
             {
                 ShowNoFunctionTip();
@@ -377,7 +334,7 @@
                     };
                     string imgPath=string.Empty;
                     string imgSeletedPath=string.Empty;
-                    Common.LocalDevice.Current.GetDeviceBeloneIcon(deviceType.Value, ref imgPath ,ref imgSeletedPath);
+                    Common.LocalDevice.Current.GetDeviceObjectIcon(deviceType.Value, ref imgPath ,ref imgSeletedPath);
                     functionTypeIMG.Init(imgPath,imgSeletedPath);
                     functionTypeIMG.SetTitle(deviceType.Key);
                     typeRowLayout.AddChidren(functionTypeIMG);
@@ -389,6 +346,7 @@
                         ShowSameTypeFunction(functionTypeIMG.ImageBtn, null);
                     }
                 }
+
             }
         }
 
@@ -399,7 +357,6 @@
         /// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param>
         private void ShowSameTypeFunction(object typeSender, MouseEventArgs mouseEventArgs)
         {
-            //閫夋嫨鍔熻兘--鐩存帴浠庢埧闂寸殑devicelist涓幏鍙�
             tempFunctionTypeBtn.IsSelected = false;
             tempFunctionTypeBtn = (typeSender as Button).Parent as FunctionButton;
             ((typeSender as Button).Parent as FunctionButton).IsSelected = true;
@@ -410,10 +367,6 @@
             var selectedList = new List<DeviceUI> { };
             sameTypeList = typeDeviceDic[int.Parse((typeSender as Button).Tag.ToString())];
 
-            if (SelectAll)
-            {
-                selectedList.AddRange(sameTypeList);
-            }
             foreach (var deviceUI in sameTypeList)
             {
                 var deviceTypeRowLayout = new FrameLayout()
@@ -426,7 +379,6 @@
                 var deviceRow = new SelectFunctionView(0, 35);
                 deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                 deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName);
-                deviceRow.IsSelected = SelectAll;
                 deviceTypeRowLayout.AddChidren(deviceRow);
 
                 EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
@@ -448,44 +400,96 @@
                     }
                 };
                 deviceRow.ClickBtn.MouseUpEventHandler += eventHandler;
-
-                var addBackground = new Button
-                {
-                    Y = Application.GetRealHeight(1405),
-                    Width = Application.GetMinRealAverage(1080),
-                    Height = Application.GetMinRealAverage(202),
-                    UnSelectedImagePath = "Room/AddBackground.png"
-                };
-                functionSceneBodyView.AddChidren(addBackground);
-                var add = new Button
-                {
-                    Y = Application.GetRealHeight(1428),
-                    Width = Application.GetRealWidth(1034),
-                    Height = Application.GetRealHeight(156),
-                    BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor,
-                    TextColor = ZigbeeColor.Current.GXCTextSelectedColor4,
-                    Radius = (uint)Application.GetRealHeight(35),
-                    TextID = R.MyInternationalizationString.AddTo,
-                    Gravity = Gravity.CenterHorizontal,
-                    TextSize=17
-                };
-                functionSceneBodyView.AddChidren(add);
-                add.MouseUpEventHandler += (sender, e) =>
-                {
-                    var selectZone = new SelectZone();
-                    AddChidren(selectZone);
-                    selectZone.Init();
-                    selectZone.ZoneAction = (r) =>
-                    {
-                        foreach (var d in selectedList)
-                        {
-                            r.AddDevice(d.CommonDevice,true);
-                            deviceListScrolView.RemoveViewByTag(d);
-                        }
-                        RefreshData();
-                    };
-                };
             }
+
+            selectAllBtn?.RemoveFromParent();
+            selectAllBtn = new Button()
+            {
+                X = Application.GetRealWidth(1080 - 150 - 80),
+                Width = Application.GetRealWidth(150),
+                Height = Application.GetRealHeight(80),
+                Gravity = Gravity.CenterVertical,
+                TextColor = ZigbeeColor.Current.GXCTextBlackColor,
+                SelectedTextColor = ZigbeeColor.Current.GXCTextBlackColor,
+                TextSize = CommonFormResouce.TopTitle_TextSize,
+                TextAlignment = TextAlignment.CenterRight,
+                TextID = R.MyInternationalizationString.AllSelect
+            };
+            top.topView.AddChidren(selectAllBtn);
+            selectAllBtn.MouseUpEventHandler += (sender, e) =>
+             {
+                 try
+                 {
+                     (sender as Button).IsSelected = !(sender as Button).IsSelected;
+                     for (int i = 0; i < deviceListScrolView.ChildrenCount; i++)
+                     {
+                         var frame = deviceListScrolView.GetChildren(i) as FrameLayout;
+                         (frame.GetChildren(0) as SelectFunctionView).IsSelected = (sender as Button).IsSelected;
+                     }
+                     if ((sender as Button).IsSelected)
+                     {
+                         (sender as Button).TextID = R.MyInternationalizationString.Cancel;
+                         selectedList.Clear();
+                         selectedList.AddRange(sameTypeList);
+                     }
+                     else
+                     {
+                         (sender as Button).TextID = R.MyInternationalizationString.AllSelect;
+                         selectedList.Clear();
+                     }
+                 }
+                 catch
+                 {
+
+                 }
+             };
+
+            var addBackground = new Button
+            {
+                Y = Application.GetRealHeight(1405),
+                Width = Application.GetMinRealAverage(1080),
+                Height = Application.GetMinRealAverage(202),
+                UnSelectedImagePath = "Room/AddBackground.png"
+            };
+            functionSceneBodyView.AddChidren(addBackground);
+            var add = new Button
+            {
+                Y = Application.GetRealHeight(1428),
+                Width = Application.GetRealWidth(1034),
+                Height = Application.GetRealHeight(156),
+                BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor,
+                TextColor = ZigbeeColor.Current.GXCTextSelectedColor4,
+                Radius = (uint)Application.GetRealHeight(35),
+                TextID = R.MyInternationalizationString.AddTo,
+                Gravity = Gravity.CenterHorizontal,
+                TextSize = 17
+            };
+            functionSceneBodyView.AddChidren(add);
+            add.MouseUpEventHandler += (sender, e) =>
+            {
+                var selectZone = new SelectZone();
+                AddChidren(selectZone);
+                selectZone.Init();
+                selectZone.ZoneAction = (r) =>
+                {
+                    foreach (var d in selectedList)
+                    {
+                        r.AddDevice(d.CommonDevice, true);
+                        deviceListScrolView.RemoveViewByTag(d);
+                    }
+                    
+                    if (sameTypeList.Count == selectedList.Count)
+                    {
+                        RefreshData();
+                        RefreshBodyView();
+                    }
+                    else
+                    {
+                        RefreshData();
+                        sameTypeList = typeDeviceDic[int.Parse((typeSender as Button).Tag.ToString())];
+                    }
+                };
+            };
         }
 
         /// <summary>
@@ -524,7 +528,7 @@
         /// <summary>
         /// 閫夋嫨鍦烘櫙--鎵�鏈夋埧闂寸殑鎵�鏈夊満鏅�
         /// </summary>
-        public void ShowScene(bool selectAll)
+        public void ShowScene()
         {
             List<SceneUI> selectedList = new List<SceneUI>();
             if (sceneList == null || sceneList.Count == 0)
@@ -533,10 +537,6 @@
             }
             else
             {
-                if (selectAll)
-                {
-                    selectedList.AddRange(sceneList);
-                }
                 var sceneScrolView = new VerticalScrolViewLayout
                 {
                     Y = Application.GetRealHeight(22),
@@ -575,7 +575,6 @@
                         Height = Application.GetMinRealAverage(60),
                         UnSelectedImagePath = "Room/ItemUnSelected.png",
                         SelectedImagePath = "Room/ItemSelected.png",
-                        IsSelected = selectAll
                     };
                     sceneFL.AddChidren(selectedBtn);
 
@@ -633,6 +632,48 @@
                     sceneImg.MouseUpEventHandler += eventHandler;
                 }
 
+                selectAllBtn?.RemoveFromParent();
+                selectAllBtn = new Button()
+                {
+                    X = Application.GetRealWidth(1080 - 150 - 80),
+                    Width = Application.GetRealWidth(150),
+                    Height = Application.GetRealHeight(80),
+                    Gravity = Gravity.CenterVertical,
+                    TextColor = ZigbeeColor.Current.GXCTextBlackColor,
+                    SelectedTextColor = ZigbeeColor.Current.GXCTextBlackColor,
+                    TextSize = CommonFormResouce.TopTitle_TextSize,
+                    TextAlignment = TextAlignment.CenterRight,
+                    TextID = R.MyInternationalizationString.AllSelect
+                };
+                top.topView.AddChidren(selectAllBtn);
+                selectAllBtn.MouseUpEventHandler += (sender, e) =>
+                {
+                    try
+                    {
+                        (sender as Button).IsSelected = !(sender as Button).IsSelected;
+                        for (int i = 0; i < sceneScrolView.ChildrenCount; i++)
+                        {
+                            var frame = sceneScrolView.GetChildren(i) as FrameLayout;
+                            (frame.GetChildren(1) as Button).IsSelected = (sender as Button).IsSelected;
+                        }
+                        
+                        if ((sender as Button).IsSelected)
+                        {
+                            (sender as Button).TextID = R.MyInternationalizationString.Cancel;
+                            selectedList.AddRange(sceneList);
+                        }
+                        else
+                        {
+                            (sender as Button).TextID = R.MyInternationalizationString.AllSelect;
+                            selectedList.Clear();
+                        }
+                    }
+                    catch
+                    {
+
+                    }
+                };
+
                 var addBackground = new Button
                 {
                     Y = Application.GetRealHeight(1405),
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Common/IMessageCommon.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Common/IMessageCommon.cs
index e4fbd08..53ad764 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Common/IMessageCommon.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Common/IMessageCommon.cs
@@ -585,6 +585,27 @@
             dic["DistributedMarkNoRecord"] = R.MyInternationalizationString.uAccountNoExists;
             //鏉冮檺涓嶈冻
             dic["BeRestrict"] = R.MyInternationalizationString.uBeRestrict;
+
+            //鑾峰彇娑堟伅涓績鏁版嵁
+            keys = "MessageCenter/GetMessageCenterPagger";
+            dicMsg[keys] = new Dictionary<string, int>();
+            dic = dicMsg[keys];
+            //鎸囧畾鐨勪綇瀹呬笉瀛樺湪
+            dic["NoRecord"] = R.MyInternationalizationString.uZigbeeHome_NoRecord;
+
+            //鏍囪娑堟伅涓哄凡璇绘垨鏈
+            keys = "MessageCenter/TagMessageMessageCenterItem";
+            dicMsg[keys] = new Dictionary<string, int>();
+            dic = dicMsg[keys];
+            //鎸囧畾鐨勪綇瀹呬笉瀛樺湪
+            dic["NoRecord"] = R.MyInternationalizationString.uZigbeeHome_NoRecord;
+
+            //鍒犻櫎娑堟伅
+            keys = "MessageCenter/DelMessageCenterItem";
+            dicMsg[keys] = new Dictionary<string, int>();
+            dic = dicMsg[keys];
+            //鎸囧畾鐨勪綇瀹呬笉瀛樺湪
+            dic["NoRecord"] = R.MyInternationalizationString.uZigbeeHome_NoRecord;
         }
 
         /// <summary>
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Common/UserCenterCommon.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Common/UserCenterCommon.cs
index 468de53..3c21f62 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Common/UserCenterCommon.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Common/UserCenterCommon.cs
@@ -799,7 +799,7 @@
         /// <summary>
         /// Page
         /// </summary>
-        public int Page = 0;
+        public int Page = 1;
         /// <summary>
         /// PageSize
         /// </summary>
@@ -1065,6 +1065,81 @@
     #region 鈻� 娑堟伅绠$悊绫籣_________________________
 
     /// <summary>
+    /// 鑾峰彇娑堟伅璁板綍鐨勮姹傚弬鏁�
+    /// </summary>
+    public class MessageInfoPra : IfacePraCommon
+    {
+        /// <summary>
+        /// RequestVersion
+        /// </summary>
+        public string RequestVersion = Common.CommonPage.RequestVersion;
+        /// <summary>
+        /// LoginAccessToken
+        /// </summary>
+        public string LoginAccessToken = Common.Config.Instance.Token;
+        /// <summary>
+        /// ZigbeeHomeId
+        /// </summary>
+        public string HomeId = Common.Config.Instance.Home.Id;
+        /// <summary>
+        /// 涓婚
+        /// </summary>
+        public string Topic = null;
+        /// <summary>
+        /// 寮�濮嬫椂闂�
+        /// </summary>
+        public string BeginTime = null;
+        /// <summary>
+        /// 缁撴潫鏃堕棿
+        /// </summary>
+        public string EndTime = null;
+        /// <summary>
+        /// 椤垫暟
+        /// </summary>
+        public PageSettingInfo PageSetting = new PageSettingInfo();
+
+        public MessageInfoPra()
+        {
+            PageSetting.PageSize = 10;
+        }
+    }
+
+    /// <summary>
+    /// 娑堟伅涓績鐨勭粨鏋滆繑鍥炲��
+    /// </summary>
+    public class MessageCentetInfo
+    {
+        /// <summary>
+        /// 鍒楄〃鏁版嵁
+        /// </summary>
+        public List<MessageRecordInfo> PageData = null;
+        /// <summary>
+        /// PageIndex
+        /// </summary>
+        public int PageIndex = 0;
+        /// <summary>
+        /// PageSize
+        /// </summary>
+        public int PageSize = 0;
+        /// <summary>
+        /// TotalCount
+        /// </summary>
+        public int TotalCount = 0;
+        /// <summary>
+        /// TotalPages
+        /// </summary>
+        public int TotalPages = 0;
+        /// <summary>
+        /// HasPreviousPage
+        /// </summary>
+        public bool HasPreviousPage = false;
+        /// <summary>
+        /// HasNextPage
+        /// </summary>
+        public bool HasNextPage = false;
+    }
+
+    /// <summary>
     /// 淇℃伅缁撴灉
     /// </summary>
     public class MessageRecordInfo
@@ -1074,26 +1149,62 @@
         /// </summary>
         public string Id = string.Empty;
         /// <summary>
-        /// 鎴戜篃涓嶇煡閬撹繖涓槸浠�涔堥
+        /// 涓婚
         /// </summary>
-        public string RegId = string.Empty;
+        public string Topic = string.Empty;
         /// <summary>
-        /// 娑堟伅鍐呭
+        /// 缃戝叧涓婃姤鐨刯son
         /// </summary>
-        public string MsgContent = string.Empty;
-        /// <summary>
-        /// MsgType
-        /// </summary>
-        public string MsgType = string.Empty;
+        public string PayloadJson = string.Empty;
         /// <summary>
         /// 鏄惁宸茶
         /// </summary>
-        public int IsRead = 0;
+        public bool IsReading = false;
         /// <summary>
         /// 鏃堕棿 2019-09-10T13:11:55
         /// </summary>
-        public string MsgTime = string.Empty;
+        public string CreatedOnUtc = string.Empty;
+        /// <summary>
+        /// 鍥剧墖鍦板潃
+        /// </summary>
+        public string IconPath = string.Empty;
+        /// <summary>
+        /// 娑堟伅绫诲瀷
+        /// </summary>
+        public string MsgObjectText = string.Empty;
+        /// <summary>
+        /// 娑堟伅鏂囨湰
+        /// </summary>
+        public string MsgText = string.Empty;
     }
+
+    /// <summary>
+    /// 璁剧疆娑堟伅宸茶鐘舵�佺殑鍚姩鍙傛暟
+    /// </summary>
+    public class MessageReadStatuPra : IfacePraCommon
+    {
+        /// <summary>
+        /// RequestVersion
+        /// </summary>
+        public string RequestVersion = Common.CommonPage.RequestVersion;
+        /// <summary>
+        /// LoginAccessToken
+        /// </summary>
+        public string LoginAccessToken = Common.Config.Instance.Token;
+        /// <summary>
+        /// ZigbeeHomeId
+        /// </summary>
+        public string HomeId = Common.Config.Instance.Home.Id;
+        /// <summary>
+        /// ID
+        /// </summary>
+        public string Id = string.Empty;
+        /// <summary>
+        /// 宸茶鐘舵��
+        /// </summary>
+        public bool IsReading = true;
+    }
+
     #endregion
 
     #region 鈻� 闅愬尶鍔熻兘绫籣_________________________
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/BaseCommonControl/Base/ButtonBase.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/BaseCommonControl/Base/ButtonBase.cs
index 7c86b24..52af78a 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/BaseCommonControl/Base/ButtonBase.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/BaseCommonControl/Base/ButtonBase.cs
@@ -235,38 +235,19 @@
         }
 
         /// <summary>
-        /// 鏍规嵁鏂囨湰,璁$畻瀹冨疄闄呯殑瀹藉害(杩斿洖鐨勬槸鐪熷疄鍊�)
+        /// 鏍规嵁鏂囨湰,璁$畻瀹冨疄闄呯殑瀹藉害
         /// </summary>
-        /// <param name="textSize">瀛椾綋澶у皬,鐪佺暐鏃朵娇鐢ㄥ綋鍓嶆帶浠剁殑瀛椾綋澶у皬</param>
-        /// <param name="i_text">闇�瑕佽绠楃殑鏂囨湰淇℃伅,鐪佺暐鏃朵娇鐢ㄥ綋鍓嶆帶浠剁殑鏂囨湰</param>
         /// <returns></returns>
-        public int GetRealWidthByText(float textSize, string i_text = null)
+        public int GetRealWidthByText()
         {
-            if (i_text == null)
-            {
-                i_text = this.Text;
-            }
-            if (textSize == -1)
-            {
-                textSize = this.TextSize;
-            }
-
-            int byteLength = 0;
-            for (int i = 0; i < i_text.Length; i++)
-            {
-                byteLength += Encoding.UTF8.GetBytes(i_text[i].ToString()).Length;
-                //int length = Encoding.UTF8.GetBytes(i_text[i].ToString()).Length;
-                //if (length == 1)
-                //{
-                //    //鑻辨枃
-                //    byteLength += length;
-                //    continue;
-                //}
-                ////涓枃(鏆傛椂鐢ㄤ腑鏂囧搴�)
-                //byteLength += Encoding.GetEncoding("gb2312").GetBytes(i_text[i].ToString()).Length;
-            }
-            int realWidth = byteLength * (int)textSize;
-            return Application.GetRealWidth(realWidth + 20);
+#if Android
+            //闇�瑕佸鍔犱竴涓宸��
+            return this.GetTextWidth() + Application.GetRealWidth(12);
+#endif
+#if iOS
+            //闇�瑕佸鍔犱竴涓宸��
+            return this.GetTextWidth() + Application.GetRealWidth(25);
+#endif
         }
 
         #endregion
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/SceneFunctionSwitchControl.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/SceneFunctionSwitchControl.cs
index da3d79b..22daafb 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/SceneFunctionSwitchControl.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/SceneFunctionSwitchControl.cs
@@ -43,13 +43,14 @@
         public void InitControl()
         {
             var btnTemp = new NormalViewControl(10, 10, false);
+            btnTemp.TextSize = 16;
             btnTemp.TextID = R.MyInternationalizationString.uScence;
 
             //鍦烘櫙妗�(鐐瑰嚮鑼冨洿鏈夌偣灏忥紝闇�瑕佹墿澶у畠鐨勭偣鍑昏寖鍥�)
             var frameScene = new FrameLayoutControl();
             frameScene.UseClickStatu = false;
             frameScene.Height = Application.GetRealHeight(90);
-            frameScene.Width = btnTemp.GetRealWidthByText(16);
+            frameScene.Width = btnTemp.GetRealWidthByText();
             frameScene.X = ControlCommonResourse.XXLeft;
             this.AddChidren(frameScene);
             //鍦烘櫙
@@ -72,7 +73,7 @@
             var frameFunc = new FrameLayoutControl();
             frameFunc.UseClickStatu = false;
             frameFunc.Height = Application.GetRealHeight(90);
-            frameFunc.Width = btnTemp.GetRealWidthByText(16);
+            frameFunc.Width = btnTemp.GetRealWidthByText();
             frameFunc.X = frameScene.Right + Application.GetRealWidth(58);
             this.AddChidren(frameFunc);
             //鍔熻兘
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/TopRightMenuControl.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/TopRightMenuControl.cs
index b1caac1..88d8da6 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/TopRightMenuControl.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/TopRightMenuControl.cs
@@ -40,20 +40,30 @@
         /// 鍋氭垚涓�涓瓨鍦ㄤ簬鍙充笂瑙掔殑鑿滃崟鎺т欢
         /// </summary>
         /// <param name="i_RowCount">涓�鍏辨湁鍑犺(涓嶅惈鏍囬)</param>
-        /// <param name="i_width">杩欎釜鑿滃崟鏈夊瀹�</param>
+        /// <param name="i_widthType">杩欎釜鑿滃崟鐨勫搴︽ā寮�,鐩墠鍙敮鎸�
+        /// <para>1: 395瀹藉害</para>
+        /// <para>2: 449瀹藉害</para>
+        /// </param>
         /// <param name="titleText">鏍囬鏂囨湰(濡傛灉涓嶄负绌�,鑿滃崟妯″紡鍙樻洿涓烘嫢鏈夋爣棰樼殑妯″紡)</param>
-        public TopRightMenuControl(int i_RowCount, int i_width = 395, string titleText = null)
+        public TopRightMenuControl(int i_RowCount, int i_widthType, string titleText = null)
         {
             this.RowCount = i_RowCount;
-            this.RowWidth = i_width;
+            if (i_widthType == 1)
+            {
+                this.RowWidth = 395;
+            }
+            else if (i_widthType == 2)
+            {
+                this.RowWidth = 449;
+            }
             //鍒濆鍖栫敾闈㈢殑鎺т欢
-            this.InitFormControl(titleText);
+            this.InitFormControl(titleText, i_widthType);
         }
 
         /// <summary>
         /// 鍒濆鍖栫敾闈㈢殑鎺т欢
         /// </summary>
-        private void InitFormControl(string titleText)
+        private void InitFormControl(string titleText, int i_widthType)
         {
             this.BackgroundColor = UserCenterColor.Current.DialogBackColor;
             this.MouseUpEventHandler += (sender2, e2) =>
@@ -71,22 +81,24 @@
                 //鑿滃崟+1
                 rowCount++;
             }
-            //妗屽竷
+            //鑳屾櫙
+            var frameBack = new FrameLayout();
+            frameBack.X = Application.GetRealWidth(662 - (RowWidth - 395));
+            frameBack.Y = Application.GetRealHeight(161);
+            frameBack.Width = Application.GetRealWidth(RowWidth);
+            frameBack.Height = Application.GetRealHeight(RowHeight * rowCount + 16);
+            frameBack.BackgroundImagePath = "MenuGroud/TopRightMenu" + i_widthType + "_" + rowCount + ".png";
+            this.AddChidren(frameBack);
+
             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.Radius = (uint)Application.GetRealHeight(17);
-            this.AddChidren(frameTable);
+            frameTable.Y = Application.GetRealHeight(16);
+            frameBack.AddChidren(frameTable);
 
             if (titleText != null)
             {
-                var btnTitle = new NormalViewControl(frameTable.Width - Application.GetRealWidth(81), Application.GetRealHeight(58), false);
+                var btnTitle = new NormalViewControl(frameBack.Width - Application.GetRealWidth(81), Application.GetRealHeight(58), false);
                 btnTitle.X = Application.GetRealWidth(81);
-                btnTitle.Y = Application.GetRealHeight(58);
+                btnTitle.Y = Application.GetRealHeight(58 + 16);
                 btnTitle.Text = titleText;
                 frameTable.AddChidren(btnTitle);
             }
@@ -106,13 +118,6 @@
             }
             listView.Radius = (uint)Application.GetRealHeight(17);
             frameTable.AddChidren(listView);
-
-            //涓夎褰㈠浘鏍�
-            var btnTriangle = new PicViewControl(31, 15);
-            btnTriangle.X = Application.GetRealWidth(980);
-            btnTriangle.Y = Application.GetRealHeight(159);
-            btnTriangle.UnSelectedImagePath = "Item/UpperTriangle.png";
-            this.AddChidren(btnTriangle);
         }
 
         #endregion
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/DeviceControls/DeviceInfoIconControl.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/DeviceControls/DeviceInfoIconControl.cs
index 1fb8732..1352422 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/DeviceControls/DeviceInfoIconControl.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/DeviceControls/DeviceInfoIconControl.cs
@@ -58,7 +58,7 @@
             //璁惧鍥炬爣
             btnIcon = new NormalViewControl(Application.GetMinRealAverage(121), Application.GetMinRealAverage(121), false);
             btnIcon.Gravity = Gravity.Center;
-            Common.LocalDevice.Current.SetDeviceBeloneIconToControl(btnIcon, Common.LocalDevice.Current.GetDevicesByMac(deviceMac));
+            Common.LocalDevice.Current.SetDeviceObjectIconToControl(btnIcon, Common.LocalDevice.Current.GetDevicesByMac(deviceMac));
             this.AddChidren(btnIcon);
         }
 
@@ -95,7 +95,7 @@
             if (this.deviceMac != null)
             {
                 //鍒锋柊鍥炬爣
-                Common.LocalDevice.Current.SetDeviceBeloneIconToControl(btnIcon, Common.LocalDevice.Current.GetDevicesByMac(deviceMac));
+                Common.LocalDevice.Current.SetDeviceObjectIconToControl(btnIcon, Common.LocalDevice.Current.GetDevicesByMac(deviceMac));
             }
             else
             {
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/DeviceControls/DeviceObjectControl.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/DeviceControls/DeviceObjectControl.cs
index e4095fa..850137d 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/DeviceControls/DeviceObjectControl.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/DeviceControls/DeviceObjectControl.cs
@@ -76,7 +76,7 @@
             var listDevice = Common.LocalDevice.Current.GetDevicesByMac(this.deviceMac);
             //鍥炬爣
             btnIcon = frameTable.AddLeftIcon(81);
-            Common.LocalDevice.Current.SetDeviceBeloneIconToControl(btnIcon, listDevice);
+            Common.LocalDevice.Current.SetDeviceObjectIconToControl(btnIcon, listDevice);
 
             //璁惧
             string deviceName = Common.LocalDevice.Current.GetDeviceMacName(listDevice[0]);
@@ -128,7 +128,7 @@
 
             var listDevice = Common.LocalDevice.Current.GetDevicesByMac(this.deviceMac);
             //鍥炬爣
-            Common.LocalDevice.Current.SetDeviceBeloneIconToControl(btnIcon, listDevice);
+            Common.LocalDevice.Current.SetDeviceObjectIconToControl(btnIcon, listDevice);
             //璁惧
             btnDeviceName.Text = Common.LocalDevice.Current.GetDeviceMacName(listDevice[0]);
             //璁惧鎴块棿
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/DeviceControls/GatewayRowControl.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/DeviceControls/GatewayRowControl.cs
index ebaab67..dbf5e20 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/DeviceControls/GatewayRowControl.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/DeviceControls/GatewayRowControl.cs
@@ -43,7 +43,7 @@
         /// <summary>
         /// 鏄剧ずIP鎺т欢
         /// </summary>
-        private NormalViewControl btnIp = null;
+        public NormalViewControl btnIp = null;
 
         /// <summary>
         /// 鍦ㄧ嚎鐘舵��
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/FrameLayoutControls/FrameRowControl.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/FrameLayoutControls/FrameRowControl.cs
index 717582e..fc04e27 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/FrameLayoutControls/FrameRowControl.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/FrameLayoutControls/FrameRowControl.cs
@@ -192,7 +192,7 @@
             var btnRight = new IconViewControl(58);
             btnRight.Gravity = Gravity.CenterVertical;
             btnRight.X =this.Width - btnRight.IconSize - ControlCommonResourse.XXLeft + RightOffset;
-            btnRight.UnSelectedImagePath = "Item/Next.png";
+            btnRight.UnSelectedImagePath = "Item/RightNext.png";
             this.AddChidren(btnRight, ChidrenBindMode.BindEventOnly);
 
             if (chidrenYaxis != 0)
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/ListViewLayoutControls/VerticalFrameRefreshControl.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/ListViewLayoutControls/VerticalFrameRefreshControl.cs
index 8554310..42583b1 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/ListViewLayoutControls/VerticalFrameRefreshControl.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/ListViewLayoutControls/VerticalFrameRefreshControl.cs
@@ -65,7 +65,7 @@
         #region 鈻� 娣诲姞瀛愭帶浠禵________________________
 
         /// <summary>
-        /// 娣诲姞Frame瀛愭帶浠�
+        /// 娣诲姞Frame瀛愭帶浠�(姝ゆ柟娉曟槸鏀瑰彉Y杞�)
         /// </summary>
         /// <param name="view"></param>
         public void AddChidrenFrame(FrameLayout frame)
@@ -83,6 +83,58 @@
             if (this.m_frameTable.Height < frame.Bottom)
             {
                 this.m_frameTable.Height = frame.Bottom;
+            }
+        }
+
+        /// <summary>
+        /// 娣诲姞Frame瀛愭帶浠�(姝ゆ柟娉曟槸鏀瑰彉楂樺害)
+        /// </summary>
+        /// <param name="view"></param>
+        public void AddChidrenFrame2(FrameLayout frame)
+        {
+            //鍒濆鍖栨甯冩帶浠�
+            this.InitFrameTable();
+
+            var child = this.m_frameTable.GetChildren(this.m_frameTable.ChildrenCount - 1);
+            if (child != null)
+            {
+                frame.Y = child.Bottom;
+            }
+            this.m_frameTable.AddChidren(frame);
+            if (rowSpace > 0)
+            {
+                frame.Height += rowSpace;
+            }
+            //璋冩暣妗屽竷楂樺害
+            if (this.m_frameTable.Height < frame.Bottom)
+            {
+                this.m_frameTable.Height = frame.Bottom;
+            }
+        }
+
+        /// <summary>
+        /// 娣诲姞Frame瀛愭帶浠�(姝ゆ柟娉曟槸鏀瑰彉楂樺害)
+        /// </summary>
+        /// <param name="row"></param>
+        public void AddChidrenRow(RowLayout row)
+        {
+            //鍒濆鍖栨甯冩帶浠�
+            this.InitFrameTable();
+
+            var child = this.m_frameTable.GetChildren(this.m_frameTable.ChildrenCount - 1);
+            if (child != null)
+            {
+                row.Y = child.Bottom;
+            }
+            this.m_frameTable.AddChidren(row);
+            if (rowSpace > 0)
+            {
+                row.Height += rowSpace;
+            }
+            //璋冩暣妗屽竷楂樺害
+            if (this.m_frameTable.Height < row.Bottom)
+            {
+                this.m_frameTable.Height = row.Bottom;
             }
         }
 
@@ -111,13 +163,14 @@
         /// <summary>
         /// 璋冩暣妗屽竷楂樺害
         /// </summary>
-        public void AdjustTableHeight()
+        /// <param name="buttomSpace">搴曢儴绌虹櫧闂磋窛(鐪熷疄鍊�)</param>
+        public void AdjustTableHeight(int buttomSpace = 0)
         {
             var child = this.m_frameTable?.GetChildren(this.m_frameTable.ChildrenCount - 1);
             if (child != null)
             {
                 //璋冩暣妗屽竷楂樺害
-                this.m_frameTable.Height = child.Bottom;
+                this.m_frameTable.Height = child.Bottom + buttomSpace;
                 //if (this.m_frameTable.Height < child.Bottom)
                 //{
                 //    this.m_frameTable.Height = child.Bottom;
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/NormalControls/MessageManagementControl.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/NormalControls/MessageManagementControl.cs
index 381530e..fd3c277 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/NormalControls/MessageManagementControl.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/NormalControls/MessageManagementControl.cs
@@ -55,8 +55,11 @@
             HdlThreadLogic.Current.RunThread(async () =>
             {
                 string nowHomeId = Common.Config.Instance.Home.Id;
-                var result = await UserCenterLogic.GetByteResponseDataByRequestHttps("ZigbeeUsers/GetPushMessageRecord", false, "", new List<string>() { "NotSetAgain" });
-                if (result == null)
+                var pra = new MessageInfoPra();
+                pra.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
+
+                var result = await UserCenterLogic.GetResponseDataByRequestHttps("MessageCenter/GetMessageCenterPagger", false, pra, new List<string>() { "NotSetAgain", "NotCheck" });
+                if (string.IsNullOrEmpty(result) == true)
                 {
                     //鍑洪敊锛岄渶瑕侀噸鏂拌鍙�
                     ControlCommonResourse.ReadMessageAgain = true;
@@ -67,14 +70,12 @@
                     //妫�娴嬶細鍒囨崲浜嗕綇瀹咃紵锛�
                     return;
                 }
-                var strdata = System.Text.Encoding.UTF8.GetString(result);
-                var revertObj = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.ResponseEntity.ResponsePack>(strdata);
-                var dataInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<List<MessageRecordInfo>>(revertObj.ResponseData.ToString());
-               
-                for (int i = 0; i < dataInfo.Count; i++)
+                var dataInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<MessageCentetInfo>(result);
+                for (int i = 0; i < dataInfo.PageData.Count; i++)
                 {
-                    if (dataInfo[i].IsRead == 0)
+                    if (dataInfo.PageData[i].IsReading == false)
                     {
+                        ControlCommonResourse.HadNewMessage = true;
                         Application.RunOnMainThread(() =>
                         {
                             //鏈夋柊娑堟伅
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Form/Base/CommonFormBase.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Form/Base/CommonFormBase.cs
index 7e1e04b..a5b41d9 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Form/Base/CommonFormBase.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Form/Base/CommonFormBase.cs
@@ -360,5 +360,6 @@
         }
 
         #endregion
+
     }
 }
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Form/Base/EditorCommonForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Form/Base/EditorCommonForm.cs
index ceff92c..1308333 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Form/Base/EditorCommonForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Form/Base/EditorCommonForm.cs
@@ -260,7 +260,7 @@
             btnHelp.Text = Language.StringByID(R.MyInternationalizationString.uSearchHelp);
             bodyFrameLayout.AddChidren(btnHelp);
             //搴曠嚎
-            int lineWidth = btnHelp.GetRealWidthByText(12);
+            int lineWidth = btnHelp.GetRealWidthByText();
             var btnLine = new NormalViewControl(lineWidth, ControlCommonResourse.BottomLineHeight, false);
             btnLine.BackgroundColor = UserCenterColor.Current.TextOrangeColor;
             btnLine.Gravity = Gravity.CenterHorizontal;
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlACZbGatewayUpdateLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlACZbGatewayUpdateLogic.cs
index d137ebb..96f45ff 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlACZbGatewayUpdateLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlACZbGatewayUpdateLogic.cs
@@ -312,6 +312,8 @@
             int startIndex = 0;
             int allDataLength = this.deviceFirmwareByte.Length;
             int timeOut = 0;
+            //鏄惁鎺ユ敹鍒版垚鍔熷懡浠�
+            bool receiveSuccess = false;
 
             //鎺ユ敹缃戝叧鐨勯�忎紶鏁版嵁
             bool hadReceive = true;
@@ -338,14 +340,26 @@
                         //璁剧疆杩涘害鍊�
                         this.SetProgressValue(startIndex, allDataLength);
                     }
+                    else if (command == "025e")
+                    {
+                        //鎴愬姛  璁剧疆杩涘害鍊肩洿鎺�100%
+                        this.SetProgressValue(allDataLength, allDataLength);
+                        receiveSuccess = true;
+                        timeOut = 0;
+                    }
                 }
                 catch { }
             };
             this.zbGateway.ReportAction += receiveAction;
 
             //鏈�鍚庝竴娆¢渶瑕佺瓑寰呭洖澶嶇粨鏋滄墠寰�涓嬭蛋
-            while (startIndex < allDataLength || hadReceive == false)
+            while (startIndex < allDataLength)
             {
+                if (receiveSuccess == true)
+                {
+                    //宸茬粡鎺ユ敹鍒版垚鍔熺殑鍛戒护
+                    break;
+                }
                 if (hadReceive == false)
                 {
                     timeOut++;
@@ -365,6 +379,13 @@
                     continue;
                 }
                 hadReceive = false;
+                //鍥犱负鍋忕Щ閲忔槸楂樹綅鍦ㄥ墠锛屾墍浠ュ�掕繃鏉�
+                string Myoffset = string.Empty;
+                for (int i = 6; i >= 0; i = i - 2)
+                {
+                    Myoffset += i_offset.Substring(i, 2);
+                }
+                startIndex = Convert.ToInt32(Myoffset, 16) - i_dataLength;
 
                 //鑾峰彇涓�娆¤兘澶熷彂閫佺殑byte
                 var listData = new List<byte>();
@@ -373,8 +394,6 @@
                     listData.Add(this.deviceFirmwareByte[startIndex]);
                     if (listData.Count == i_dataLength)
                     {
-                        //寰�涓嬩竴浣嶆帹绉�
-                        startIndex++;
                         break;
                     }
                 }
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlAlarmsLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlAlarmsLogic.cs
index 202c3c0..ead7ba5 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlAlarmsLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlAlarmsLogic.cs
@@ -509,7 +509,7 @@
         /// </summary>
         /// <param name="jobject"></param>
         /// <returns></returns>
-        private DeviceAlarmInfo GetDoorLockAlarmInfo(Newtonsoft.Json.Linq.JObject jobject)
+        public DeviceAlarmInfo GetDoorLockAlarmInfo(Newtonsoft.Json.Linq.JObject jobject)
         {
             var info = (DoorLockAlarmsResult)JsonConvert.DeserializeObject<DoorLockAlarmsResult>(jobject["Data"].ToString());
             var alarmInfo = new DeviceAlarmInfo();
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlAutoBackupLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlAutoBackupLogic.cs
index d8c8cb4..3849745 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlAutoBackupLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlAutoBackupLogic.cs
@@ -329,7 +329,7 @@
         #region 鈻� 鍚屾鏁版嵁___________________________
 
         /// <summary>
-        /// 鍚屾浜戠鏁版嵁(浠呴檺APP鍚姩涔嬪悗) -1锛氬紓甯�   0:宸茬粡鍚屾杩囷紝涓嶉渶瑕佸悓姝�  1锛氭甯稿悓姝�  
+        /// 鍚屾浜戠鏁版嵁(浠呴檺APP鍚姩涔嬪悗) -1锛氬紓甯�   0:宸茬粡鍚屾杩囷紝涓嶉渶瑕佸悓姝�  1锛氭甯稿悓姝�  2:娌℃湁鑷姩澶囦唤鏁版嵁
         /// </summary>
         /// <returns></returns>
         public static async Task<int> SynchronizeDbAutoBackupData()
@@ -368,7 +368,7 @@
                 //鍒涘缓涓�涓┖鏂囦欢(鏍囪瘑宸茬粡瀹屾垚鍚屾)
                 var file = System.IO.File.Create(checkFile);
                 file.Close();
-                return 1;
+                return 2;
             }
             //鑷姩澶囦唤鍙湁涓�涓�
             string backId = data[0].Id;
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDevicePirSensorLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDevicePirSensorLogic.cs
index cd143e4..32ae141 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDevicePirSensorLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDevicePirSensorLogic.cs
@@ -67,10 +67,10 @@
 
         #endregion
 
-        #region 鈻� 鑾峰彇鐏厜閰嶇疆_______________________
+        #region 鈻� 鑾峰彇閰嶇疆淇℃伅_______________________
 
         /// <summary>
-        /// 鑾峰彇PIR浼犳劅鍣ㄧ殑銆愮伅鍏夐厤缃�戯紝閿欒鏃惰繑鍥瀗ull
+        /// 鑾峰彇PIR浼犳劅鍣ㄧ殑銆愰厤缃俊鎭�戯紝閿欒鏃惰繑鍥瀗ull
         /// </summary>
         /// <param name="iASZone"></param>
         /// <returns></returns>
@@ -79,8 +79,8 @@
             var data = await iASZone.GetPIRSensorParamateAsync();
             if (data == null || data.configureParamates == null)
             {
-                //鑾峰彇浼犳劅鍣ㄧ伅鍏夎缃俊鎭け璐�
-                string msg = Language.StringByID(R.MyInternationalizationString.uGetPirSensorLightSettionFail);
+                //鑾峰彇浼犳劅鍣ㄨ缃俊鎭け璐�
+                string msg = Language.StringByID(R.MyInternationalizationString.uGetPirSensorSettionFail);
                 //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
                 msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, data);
 
@@ -92,21 +92,21 @@
 
         #endregion
 
-        #region 鈻� 璁剧疆鐏厜閰嶇疆_______________________
+        #region 鈻� 璁剧疆閰嶇疆淇℃伅_______________________
 
         /// <summary>
-        /// 璁剧疆PIR浼犳劅鍣ㄧ殑銆愮伅鍏夐厤缃��
+        /// 璁剧疆PIR浼犳劅鍣ㄧ殑銆愰厤缃俊鎭��
         /// </summary>
         /// <param name="iASZone">浼犳劅鍣ㄥ璞�</param>
         /// <param name="configure">鐏厜閰嶇疆</param>
         /// <returns></returns>
-        public async Task<bool> SetPirSensorLightSettion(IASZone iASZone, IASZone.ConfigureParamates configure)
+        public async Task<bool> SetPirSensorSettion(IASZone iASZone, IASZone.ConfigureParamates configure)
         {
             var result = await iASZone.SetPIRSensorParamateAsync(configure);
             if (result == null || result.responseData == null)
             {
-                //璁剧疆浼犳劅鍣ㄧ伅鍏夐厤缃け璐�
-                string msg = Language.StringByID(R.MyInternationalizationString.uSetPirSensorLightSettionFail);
+                //璁剧疆浼犳劅鍣ㄩ厤缃俊鎭け璐�
+                string msg = Language.StringByID(R.MyInternationalizationString.uSetPirSensorSettionFail);
                 //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
                 msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
 
@@ -115,8 +115,8 @@
             }
             if (result.responseData.status != 0)
             {
-                //璁剧疆浼犳劅鍣ㄧ伅鍏夐厤缃け璐�
-                string msg = Language.StringByID(R.MyInternationalizationString.uSetPirSensorLightSettionFail);
+                //璁剧疆浼犳劅鍣ㄩ厤缃俊鎭け璐�
+                string msg = Language.StringByID(R.MyInternationalizationString.uSetPirSensorSettionFail);
                 this.ShowErrorMsg(msg);
                 return false;
             }
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayBackupLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayBackupLogic.cs
index d6127f8..cc5bdf5 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayBackupLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayBackupLogic.cs
@@ -308,6 +308,8 @@
                 this.ShowErrorMsg(msg);
                 return false;
             }
+            System.Threading.Thread.Sleep(1000);
+
             return success;
         }
 
@@ -686,6 +688,9 @@
             }
             if (gatewatAction == true)
             {
+                //璁剧疆杩涘害鍊�:100%
+                ProgressFormBar.Current.SetValue(1, 1);
+                System.Threading.Thread.Sleep(1000);
                 //缃戝叧鏁版嵁鎭㈠鎴愬姛!
                 string msg = Language.StringByID(R.MyInternationalizationString.uRestoreGatewayDataSuccess);
                 this.ShowTipMsg(msg);
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayLogic.cs
index 7f97c6a..0222f38 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayLogic.cs
@@ -2546,7 +2546,7 @@
             else if (backType == GatewayBackupEnum.APir鐏厜閰嶇疆)
             {
                 var recoverData = Newtonsoft.Json.JsonConvert.DeserializeObject<IASZone.ConfigureParamates>(System.Text.Encoding.UTF8.GetString(byteData));
-                result = await HdlDevicePirSensorLogic.Current.SetPirSensorLightSettion((IASZone)device, recoverData);
+                result = await HdlDevicePirSensorLogic.Current.SetPirSensorSettion((IASZone)device, recoverData);
             }
             else if (backType == GatewayBackupEnum.A骞叉帴鐐归鑹茶皟鑺�)
             {
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayReceiveLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayReceiveLogic.cs
index 04af707..76b7605 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayReceiveLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlGatewayReceiveLogic.cs
@@ -93,6 +93,23 @@
                 });
                 return;
             }
+            else if (topic == "/ZigbeeGateWayToClient/" + Common.Config.Instance.Guid + "/Push/Deleted"
+                || topic == "/ZigbeeGateWayToClient/" + Common.Config.Instance.Guid + "/Push/DeletedShareData")
+            {
+                if (UserCenterResourse.UserInfo.AuthorityNo == 3)
+                {
+                    HdlThreadLogic.Current.RunMain(() =>
+                    {
+                        //鍒嗕韩鏁版嵁宸茬粡鍙樻洿,璇烽噸鏂扮櫥闄�
+                        string msg = Language.StringByID(R.MyInternationalizationString.uShardDataIsChangedPleaseLoginAgain);
+                        var contr = new ShowMsgControl(ShowMsgType.Tip, msg);
+                        contr.Show();
+
+                        UserCenterLogic.ReLoginAgain(UserCenterResourse.UserInfo.Account, false);
+                    });
+                }
+                return;
+            }
             try
             {
                 if (HdlGatewayLogic.Current.IsGatewayExist(gatewayId) == false)
@@ -238,7 +255,7 @@
                 return;
             }
             var tempDevice = new CommonDevice() { DeviceAddr = receiveData.Value<string>("DeviceAddr"), DeviceEpoint = receiveData.Value<int>("Epoint") };
-            tempDevice.IsOnline = Newtonsoft.Json.JsonConvert.DeserializeObject<int>(receiveData["Data"]["IsOnline"].ToString());
+            tempDevice.IsOnline = Convert.ToInt32(receiveData["Data"]["IsOnline"].ToString());
             
             this.DeviceReportPush(tempDevice, ReceiveComandDiv.A璁惧鍦ㄧ嚎涓婃姤);
         }
@@ -401,6 +418,8 @@
 
         #endregion
 
+
+
         #region 鈻� 娣诲姞璁惧浜嬩欢_______________________
 
         /// <summary>
@@ -501,19 +520,16 @@
                 //鏈夊彲鑳藉湪鍥炶皟鍑芥暟涓Щ闄や簡浜嬩欢锛屽鑷存姤閿欙紝鎵�浠ュ厛鏀堕泦锛屽啀璋冪敤
                 foreach (var action in list)
                 {
-                    Application.RunOnMainThread(() =>
+                    try
                     {
-                        try
-                        {
-                            action?.Invoke(common);
-                        }
-                        catch (Exception ex)
-                        {
-                            //Log鍑哄姏
-                            string msg = "鎺ㄩ�侀敊璇�! 褰撳墠婵�娲荤殑鐣岄潰[" + UserCenterResourse.NowActionFormID + "]";
-                            HdlLogLogic.Current.WriteLog(ex, msg);
-                        }
-                    });
+                        action?.Invoke(common);
+                    }
+                    catch (Exception ex)
+                    {
+                        //Log鍑哄姏
+                        string msg = "鎺ㄩ�侀敊璇�! 褰撳墠婵�娲荤殑鐣岄潰[" + UserCenterResourse.NowActionFormID + "]";
+                        HdlLogLogic.Current.WriteLog(ex, msg);
+                    }
                 }
             }
         }
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/UserCenterLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/UserCenterLogic.cs
index 337b878..d12c860 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/UserCenterLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/UserCenterLogic.cs
@@ -888,6 +888,8 @@
                     //寮�鍚嚜鍔ㄥ浠芥彁绀�
                     HdlAutoBackupLogic.ShowAutoBackupPromptedForm();
                 }
+                //鏄剧ず寮曞鐣岄潰
+                ShowGuideForm(result);
             }
             //APP缂撳瓨鍔犺浇瀹屾垚
             UserCenterResourse.Option.AppCanSignout = true;
@@ -1182,6 +1184,36 @@
 
         #endregion
 
+        #region 鈻� 寮曞鐣岄潰___________________________
+
+        /// <summary>
+        /// 鏄剧ず寮曞鐣岄潰
+        /// </summary>
+        /// <param name="result">鍚屾缁撴灉 -1锛氬紓甯�   0:宸茬粡鍚屾杩囷紝涓嶉渶瑕佸悓姝�  1锛氭甯稿悓姝�  2:娌℃湁鑷姩澶囦唤鏁版嵁</param>
+        private static void ShowGuideForm(int result)
+        {
+            var checkFile = System.IO.Path.Combine(Shared.IO.FileUtils.RootPath, DirNameResourse.GuideFile);
+            if (System.IO.File.Exists(checkFile) == true)
+            {
+                //涓嶉渶瑕佹樉绀�
+                return;
+            }
+            if (result == 2 && Config.Instance.Home.IsOthreShare == false)
+            {
+                HdlThreadLogic.Current.RunMain(() =>
+                {
+                    var form = new Guide.GuideMainForm();
+                    form.ShowFrom();
+                });
+            }
+
+            //鍒涘缓涓�涓┖鏂囦欢(鏍囪瘑宸茬粡瀹屾垚寮曞)
+            var file = System.IO.File.Create(checkFile);
+            file.Close();
+        }
+
+        #endregion
+
         #region 鈻� 16杩涘埗杞寲_________________________
 
         /// <summary>
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Resourse/DirectoryFileNameResourse.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Resourse/DirectoryFileNameResourse.cs
index 9ef0dc2..22c1a1d 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Resourse/DirectoryFileNameResourse.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Resourse/DirectoryFileNameResourse.cs
@@ -118,13 +118,17 @@
         /// 淇濆瓨鎰忚鍙嶉娆℃暟鐨勩�愭枃浠躲��
         /// </summary>
         public const string SuggestionFile = "f782709778b751ef2b3840f17e407ead";
+        /// <summary>
+        /// 妫�娴嬪紩瀵肩殑銆愭枃浠躲��
+        /// </summary>
+        public const string GuideFile = "cad1afb384fb482de753fc37ebe84f9e";
 
         /// <summary>
-        /// 鏄剧ず鍔熻兘鑿滃崟鐨勩�愭爣璇嗘枃浠躲��
+        /// 鏄剧ず鍔熻兘鑿滃崟鐨勩�愭爣璇嗘枃浠躲��,涓嶅姞瀵�
         /// </summary>
         public const string ShowOptionMenuFile = "ShowOptionMenuFile";
         /// <summary>
-        /// 璇︾粏Log澶勭悊鐨勩�愭爣璇嗘枃浠躲��
+        /// 璇︾粏Log澶勭悊鐨勩�愭爣璇嗘枃浠躲��,涓嶅姞瀵�
         /// </summary>
         public const string DetailedLogFile = "DetailedLogFile";
         /// <summary>
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/AirConditioner/IndoorUnitListForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/AirConditioner/IndoorUnitListForm.cs
index bdfa99d..6b7a615 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Device/AirConditioner/IndoorUnitListForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/AirConditioner/IndoorUnitListForm.cs
@@ -253,27 +253,30 @@
                     var data = device.DeviceStatusReport.AttriBute[i];
                     if (data.AttributeId == 0)
                     {
-                        //瀹ゅ唴娓╁害
-                        if (data.AttriButeData == 0)
+                        HdlThreadLogic.Current.RunMain(() =>
                         {
-                            //0鈩�
-                            rowInfo.btnValue.Text = "0.0鈩�";
-                        }
-                        else if (data.AttriButeData > 32767)
-                        {
-                            //璐熸暟(鐗规畩澶勭悊)
-                            string strValue = (data.AttriButeData - 65536).ToString();
-                            //灏忔暟鐐归渶瑕佷竴浣�
-                            strValue = strValue.Substring(0, strValue.Length - 1);
-                            rowInfo.btnValue.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�";
-                        }
-                        else
-                        {
-                            //灏忔暟鐐归渶瑕佷竴浣�
-                            string strValue = data.AttriButeData.ToString();
-                            strValue = strValue.Substring(0, strValue.Length - 1);
-                            rowInfo.btnValue.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�";
-                        }
+                            //瀹ゅ唴娓╁害
+                            if (data.AttriButeData == 0)
+                            {
+                                //0鈩�
+                                rowInfo.btnValue.Text = "0.0鈩�";
+                            }
+                            else if (data.AttriButeData > 32767)
+                            {
+                                //璐熸暟(鐗规畩澶勭悊)
+                                string strValue = (data.AttriButeData - 65536).ToString();
+                                //灏忔暟鐐归渶瑕佷竴浣�
+                                strValue = strValue.Substring(0, strValue.Length - 1);
+                                rowInfo.btnValue.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�";
+                            }
+                            else
+                            {
+                                //灏忔暟鐐归渶瑕佷竴浣�
+                                string strValue = data.AttriButeData.ToString();
+                                strValue = strValue.Substring(0, strValue.Length - 1);
+                                rowInfo.btnValue.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�";
+                            }
+                        });
                     }
                     else if (data.AttributeId == 28)
                     {
@@ -281,9 +284,12 @@
                         //Off = 0  Auto = 1 Cool = 3 Heat = 4 FanOnly = 7  Dry = 8
                         if (data.AttriButeData != 0)
                         {
-                            rowInfo.btnSwitch.IsSelected = true;
-                            rowInfo.btnIcon.IsSelected = true;
-                            rowInfo.btnIconBack.BackgroundColor = 0xfffef1ed;
+                            HdlThreadLogic.Current.RunMain(() =>
+                            {
+                                rowInfo.btnSwitch.IsSelected = true;
+                                rowInfo.btnIcon.IsSelected = true;
+                                rowInfo.btnIconBack.BackgroundColor = 0xfffef1ed;
+                            });
                         }
                     }
                     else if (data.AttributeId == 4097)
@@ -291,9 +297,12 @@
                         //42:闇�瑕佹竻娲楁护缃�
                         if (data.AttriButeData == 42)
                         {
-                            rowInfo.btnWarningIcon.Visible = true;
-                            //璇锋敞鎰忔竻娲楁护缃戝摝
-                            rowInfo.btnWarningMsg.TextID = R.MyInternationalizationString.uPleaseClreanACfilter;
+                            HdlThreadLogic.Current.RunMain(() =>
+                            {
+                                rowInfo.btnWarningIcon.Visible = true;
+                                //璇锋敞鎰忔竻娲楁护缃戝摝
+                                rowInfo.btnWarningMsg.TextID = R.MyInternationalizationString.uPleaseClreanACfilter;
+                            });
                         }
                     }
                 }
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/AirConditioner/IndoorUnitSettionForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/AirConditioner/IndoorUnitSettionForm.cs
index 38478e0..02a4ad2 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Device/AirConditioner/IndoorUnitSettionForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/AirConditioner/IndoorUnitSettionForm.cs
@@ -180,7 +180,7 @@
         /// </summary>
         private void ShowTopRightMenu()
         {
-            var frame = new TopRightMenuControl(1);
+            var frame = new TopRightMenuControl(1, 1);
             //瀹氫綅
             var deviceMenu = Language.StringByID(R.MyInternationalizationString.uFixedPosition);
             frame.AddRowMenu(deviceMenu, "Item/FixedPosition.png", "Item/FixedPositionSelected.png", () =>
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/AddDevicePage.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/AddDevicePage.cs
index 80a3619..f411abf 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/AddDevicePage.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/AddDevicePage.cs
@@ -90,7 +90,8 @@
                 X = Application.GetRealWidth(15),
                 Text = Language.StringByID(R.MyInternationalizationString.FirstFloor),
                 TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
-                TextSize = 15,
+                TextSize = 14,
+                IsBold = true,
                 TextAlignment = TextAlignment.CenterRight,
             };
             btnAddFrameLayout.AddChidren(btnFloorText);
@@ -169,6 +170,7 @@
                 BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack,
                 TextColor = Shared.Common.ZigbeeColor.Current.XMWhite,
                 TextSize = 16,
+                IsBold = true,
             };
             bottomFrameLayout.AddChidren(btnChooseKeyMode);
             #endregion
@@ -571,6 +573,7 @@
                     TextColor = Shared.Common.ZigbeeColor.Current.TextBlack,
                     TextAlignment = TextAlignment.CenterLeft,
                     Tag = device.CommonDevice?.DeviceEpointName,
+                    TextSize = 15,
                 };
                 rowLayout.AddChidren(btnBindName);
 
@@ -597,7 +600,7 @@
                 };
                 rowLayout.AddChidren(line2);
 
-                if (curIndex == curRoom.DeviceUIList.Count - 1)
+                if (curIndex == curTypeDeviceList.Count)
                 {
                     line2.Visible = false;
                 }
@@ -703,7 +706,7 @@
                 Height = Application.GetRealHeight(58),
                 X = Application.GetRealWidth(81),
                 Y = Application.GetRealHeight(81),
-                TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
+                TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
                 TextSize = 14,
                 TextAlignment = TextAlignment.CenterLeft,
                 TextID = R.MyInternationalizationString.SelectFloor,
@@ -735,7 +738,7 @@
                     Height = Application.GetRealHeight(81),
                     Y = Application.GetRealHeight(55),
                     UnSelectedImagePath = "Floor/Floor.png",
-                    SelectedImagePath = "Floor/FloorSelected.png",
+                    SelectedImagePath = "Floor/FloorSelected.png", 
                 };
                 rowFrameLayout.AddChidren(btnAllMethod);
 
@@ -755,6 +758,7 @@
                 if (currentKey.currentSelectFloorId == floorId)
                 {
                     btnAllMethod.IsSelected = true;
+                    btnAllMethod.IsBold = true;
                     btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
                 }
 
@@ -783,6 +787,7 @@
                         oldbuttonText = btnMethodText;
                         btnMethodText.IsSelected = true;
                         oldbuttonText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                        oldbuttonText.IsBold = true;
                     }
 
                     //鑾峰彇妤煎眰瀵瑰簲鐨勬埧闂�
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/AddScenePage.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/AddScenePage.cs
index 2d29c23..194554c 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/AddScenePage.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/AddScenePage.cs
@@ -26,9 +26,10 @@
         /// 鏋勯�犲嚱鏁�
         /// </summary>
         /// <param name="doorLock"></param>
-        public AddScenePage(ZigBee.Device.Panel key)
+        public AddScenePage(ZigBee.Device.Panel key, List<ScenesListInfo> gwScenesList)
         {
             this.currentKey = key;
+            gwCurScenesList = gwScenesList;
         }
 
         #region 鈼� 鍙橀噺鐢虫槑__________________________
@@ -46,6 +47,7 @@
         Button btnFloorText;
         Dictionary<string, string> dicFloor;//妤煎眰鍒楄〃
         List<SceneUI> currentKeyAllRoomSceneList = new List<SceneUI>();
+        public List<ScenesListInfo> gwCurScenesList = new List<ScenesListInfo>();//缃戝叧涓殑鍦烘櫙鍒楄〃
         #endregion
 
         /// <summary>
@@ -76,7 +78,8 @@
                 X = Application.GetRealWidth(15),
                 Text = Language.StringByID(R.MyInternationalizationString.FirstFloor),
                 TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
-                TextSize = 15,
+                TextSize = 14,
+                IsBold =true,
                 TextAlignment = TextAlignment.CenterRight,
             };
             btnAddFrameLayout.AddChidren(btnFloorText);
@@ -143,6 +146,7 @@
                 TextID = R.MyInternationalizationString.Save,
                 BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack,
                 TextColor = Shared.Common.ZigbeeColor.Current.XMWhite,
+                IsBold =true,
                 TextSize = 16,
             };
             bottomFrameLayout.AddChidren(btnFinifh);
@@ -558,7 +562,14 @@
             }
             Button oldScene = null;
             int curIndex = 0;
-            foreach (var scene in curRoom.SceneUIList)
+            var currentSceneUIList = GetMatchSceneUIList(curRoom);
+            if (currentSceneUIList.Count == 0)
+            {
+                btnFinifh.Enable = false;
+                btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMUnSelect;
+                return;
+            }
+            foreach (var scene in currentSceneUIList)
             {
                 #region 缁戝畾琛║I鏄撅紙鏃犳暟鎹鐞嗭級
                 var rowLayout = new FrameLayout()
@@ -584,6 +595,7 @@
                     X = devicePic.Right + Application.GetRealWidth(20),
                     TextColor = Shared.Common.ZigbeeColor.Current.TextBlack,
                     TextAlignment = TextAlignment.CenterLeft,
+                    TextSize =15,
                 };
                 rowLayout.AddChidren(btnBindName);
 
@@ -741,8 +753,9 @@
                 Height = Application.GetRealHeight(58),
                 X = Application.GetRealWidth(81),
                 Y = Application.GetRealHeight(81),
-                TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
+                TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
                 TextSize = 14,
+                IsBold = true,
                 TextAlignment = TextAlignment.CenterLeft,
                 TextID = R.MyInternationalizationString.SelectFloor,
             };
@@ -793,6 +806,7 @@
                 if (currentKey.currentSelectFloorId == floorId)
                 {
                     btnAllMethod.IsSelected = true;
+                    btnAllMethod.IsBold = true;
                     btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
                 }
 
@@ -820,6 +834,7 @@
                         oldbuttonText = btnMethodText;
                         btnMethodText.IsSelected = true;
                         oldbuttonText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                        oldbuttonText.IsBold = true;
                     }
 
                     //鑾峰彇妤煎眰瀵瑰簲鐨勬埧闂�
@@ -887,6 +902,20 @@
             }
             return currentKeyAllRoomSceneList;
         }
+        //鑾峰彇缃戝叧涓瓨鍦ㄧ殑鏈湴鍦烘櫙鍒楄〃
+        List<SceneUI> GetMatchSceneUIList(Shared.Common.Room curRoom)
+        {
+            var tempSceneUIList = new List<SceneUI>();
+            foreach (var scene in curRoom.SceneUIList)
+            {
+                var gwSc = gwCurScenesList.Find(obj => (obj.ScenesId == scene.Id));
+                if (gwSc != null)
+                {
+                    tempSceneUIList.Add(scene);
+                }
+            }
+            return tempSceneUIList;
+        }
 
         public void DeviceInfoChange(CommonDevice common, string typeTag)
         {
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/BindTargetsPage.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/BindTargetsPage.cs
index 3e41259..8f3c6f0 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/BindTargetsPage.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/BindTargetsPage.cs
@@ -34,8 +34,7 @@
 
         #region 鈼� 鍙橀噺鐢虫槑__________________________
         ZigBee.Device.Panel currentKey;//褰撳墠鎸夐敭瀵硅薄
-        VerticalRefreshLayout midVerticalRefreshLayout;//鏄剧ず琚粦瀹氳澶囨垨鍦烘櫙鐨剉iew
-        FrameLayout topFrameLayout;//鏄剧ず褰撳墠妯″紡view
+        VerticalFrameRefreshControl midVerticalRefreshLayout;//鏄剧ず琚粦瀹氳澶囨垨鍦烘櫙鐨剉iew
         int currentClusterID = 0;//鎸夐敭褰撳墠绨嘔D
         Button entryStatusPic;
         Button btnPicTip;
@@ -44,7 +43,9 @@
         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> { };//鏈湴鍦烘櫙鍒楄〃       
         FrameLayout blankFrameLayout;//绌烘暟鎹樉绀哄竷灞�
-        List<int> typeModeList;
+        List<int> typeModeList;//鍔ㄦ�佽幏鍙栨寜閿敮鎸佺殑妯″紡澶х被鍨�
+        public List<ScenesListInfo> gwScenesList = new List<ScenesListInfo>();//缃戝叧涓殑鍦烘櫙鍒楄〃
+
         #endregion
 
         //鍒濆鍖栨寜閿暟鎹�
@@ -66,7 +67,21 @@
                     }
                     //鑾峰彇鏈湴鍦烘櫙鍒楄〃
                     scList = Shared.Common.Room.AllRoomSceneUIList;
+                    //鑾峰彇缃戝叧鍦烘櫙琛�
+                    var gwSceneObj = await currentKey.GetSceneInfoAsync();
+                    if (gwSceneObj != null && gwSceneObj.getSceneInfo != null)
+                    {
+                        gwScenesList = gwSceneObj.getSceneInfo.ScenesList;
+                    }
+                    else
+                    {
+                        Application.RunOnMainThread(() =>
+                        {
+                            CommonPage.Loading.Hide();
 
+                            new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+                        });
+                    }
                     #region 璇诲彇闈㈡澘褰撳墠妯″紡
                     //璇诲彇鎸夐敭褰撳墠妯″紡
                     var tempDeata = await currentKey.ReadPanelConfigureInfoAsync();
@@ -190,7 +205,7 @@
         public void Show()
         {
             #region TopFrameLayout
-            this.TopFrameLayout(this, Language.StringByID(R.MyInternationalizationString.AddBindTargets));
+            this.TopFrameLayout(this, Language.StringByID(R.MyInternationalizationString.PanelBindTargets));
             EventHandler<MouseEventArgs> eHandlerBack = (sender, e) =>
             {
                 RemoveFromParent();
@@ -224,7 +239,7 @@
                     {
                         currentClusterID = 6;
                         currentKey.panelMode = 1;
-                        var addScenePage = new Shared.Phone.UserCenter.DeviceBind.AddScenePage(currentKey);
+                        var addScenePage = new Shared.Phone.UserCenter.DeviceBind.AddScenePage(currentKey, gwScenesList);
                         Shared.Phone.UserView.HomePage.Instance.AddChidren(addScenePage);
                         Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
                         addScenePage.Show();
@@ -303,7 +318,7 @@
         /// </summary>
         void middleFrameLayout()
         {
-            midVerticalRefreshLayout = new VerticalRefreshLayout()
+            midVerticalRefreshLayout = new VerticalFrameRefreshControl(29)
             {
             };
             this.midFrameLayout.AddChidren(midVerticalRefreshLayout);
@@ -313,12 +328,6 @@
                 InitListInfo();
                 midVerticalRefreshLayout.EndHeaderRefreshing();
             };
-            topFrameLayout = new FrameLayout
-            {
-                Height = Application.GetMinRealAverage(0),
-                BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite,
-            };
-            midVerticalRefreshLayout.AddChidren(topFrameLayout);
 
             BlankPicUI();
         }
@@ -349,6 +358,7 @@
                 TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
                 Gravity = Gravity.CenterHorizontal,
                 Visible = false,
+                TextSize =12,
             };
             blankFrameLayout.AddChidren(btnPicTip);
         }
@@ -360,13 +370,6 @@
             midVerticalRefreshLayout.RemoveAll();
             this.midFrameLayout.RemoveAll();
             middleFrameLayout();
-            var frameLayoutRow = new FrameLayout()
-            {
-                Height = Application.GetMinRealAverage(0),
-                BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite,
-            };
-            midVerticalRefreshLayout.AddChidren(frameLayoutRow);
-
             #region 鏁版嵁澶勭悊 
             if (currentKey.bindList.Count == 0)
             {
@@ -387,12 +390,10 @@
                 blankFrameLayout.Height = Application.GetRealHeight(0);
                 if (currentKey.panelMode == 1)
                 {
-                    topFrameLayout.Height = Application.GetRealHeight(0);
                     midVerticalRefreshLayout.Y = Application.GetRealHeight(0);
                 }
                 else
                 {
-                    topFrameLayout.Height = Application.GetRealHeight(150);
                     BindModeDisplay();
                 }
                 int curIndex = 0;
@@ -403,61 +404,17 @@
                     SceneUI curSceneUI = null;
                     bool isExistScene = false;
 
-                    var rowLayout = new RowLayout()
-                    {
-                        Height = Application.GetRealHeight(150),
-                        X = Application.GetRealWidth(58),
-                        Y = curIndex * Application.GetRealHeight(150),
-                        Width = Application.GetRealWidth(965),
-                        LineColor = Shared.Common.ZigbeeColor.Current.XMRowLine,
-                    };
-                    frameLayoutRow.AddChidren(rowLayout);
-
-                    #region 缁戝畾琛║I鏄撅紙鏃犳暟鎹鐞嗭級  
-                    var devicePic = new Button()
-                    {
-                        Y = Application.GetRealHeight(35),
-                        Width = Application.GetMinRealAverage(81),
-                        Height = Application.GetMinRealAverage(81),
-                    };
-                    rowLayout.AddChidren(devicePic);
-
-                    var btnBindName = new Button()
-                    {
-                        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,
-                        Width = Application.GetRealWidth(184),
-                        TextID = R.MyInternationalizationString.DelBindDevice,
-                        BackgroundColor = Shared.Common.ZigbeeColor.Current.DelRowLayout,
-                    };
-                    rowLayout.AddRightView(btnDel);
-                    #endregion
+                    var rowLayout = new RowLayoutControl(midVerticalRefreshLayout.rowSpace / 2);
+                    rowLayout.BackgroundColor = ZigbeeColor.Current.XMWhite;
+                    midVerticalRefreshLayout.AddChidrenRow(rowLayout);
+                    rowLayout.frameTable.UseClickStatu = false;
+                    var devicePic = rowLayout.frameTable.AddLeftIcon();
+                    devicePic.UnSelectedImagePath = "DoorLock/DoorLockUserPic.png";
 
                     #region 缁戝畾鏁版嵁澶勭悊
                     int currentIndex = i;
+                    var btnBindNameText = "";
+                    var btnFloorRoomNameText = "";
                     if (currentIndex == currentKey.bindList.Count - 1)
                     {
                         rowLayout.LineColor = Shared.Common.ZigbeeColor.Current.XMWhite;
@@ -477,19 +434,19 @@
                         {
                             if (string.IsNullOrEmpty(bindDevice.ESName))
                             {
-                                btnBindName.Text = Language.StringByID(R.MyInternationalizationString.OffLineScene) + "_" + "ID" + "_" + bindDevice.BindScenesId.ToString();
+                                btnBindNameText = Language.StringByID(R.MyInternationalizationString.OffLineScene) + "_" + "ID" + "_" + bindDevice.BindScenesId.ToString();
                             }
                             else
                             {
-                                btnBindName.Text = Language.StringByID(R.MyInternationalizationString.OffLineScene) + "_" + bindDevice.ESName;
+                                btnBindNameText = Language.StringByID(R.MyInternationalizationString.OffLineScene) + "_" + bindDevice.ESName;
                             }
                         }
                         else
                         {
-                            btnBindName.Text = curSceneUI.Name;
+                            btnBindNameText = curSceneUI.Name;
                             if (curSceneUI.GetZone() != null)
                             {
-                                btnFloorRoomName.Text = curSceneUI.GetZone();
+                                btnFloorRoomNameText = curSceneUI.GetZone();
                             }
                         }
                     }
@@ -513,11 +470,11 @@
                                     var tempDevFloorName = Common.Config.Instance.Home.GetFloorNameById(tempDevFloorId);
                                     if (string.IsNullOrEmpty(tempDevFloorName))
                                     {
-                                        btnFloorRoomName.Text = tempDevRoomName;
+                                        btnFloorRoomNameText = tempDevRoomName;
                                     }
                                     else
                                     {
-                                        btnFloorRoomName.Text = tempDevFloorName + "," + tempDevRoomName;
+                                        btnFloorRoomNameText = tempDevFloorName + "," + tempDevRoomName;
                                     }
                                 }
                                 var deviceUi = Common.LocalDevice.Current.GetDeviceUI(tempDev);
@@ -529,16 +486,16 @@
                                 }
                                 if (tempDev.DeviceEpointName == "")
                                 {
-                                    btnBindName.Text = tempDev.DeviceEpoint + Language.StringByID(R.MyInternationalizationString.uDeviceCircuit);
+                                    btnBindNameText = tempDev.DeviceEpoint + Language.StringByID(R.MyInternationalizationString.uDeviceCircuit);
                                 }
                                 else
                                 {
-                                    btnBindName.Text = tempDev.DeviceEpointName;
+                                    btnBindNameText = tempDev.DeviceEpointName;
                                 }
                             }
                             else
                             {
-                                btnBindName.Text = bindDevice.BindMacAddr + "_" + bindDevice.BindEpoint;
+                                btnBindNameText = bindDevice.BindMacAddr + "_" + bindDevice.BindEpoint;
                                 devicePic.Width = Application.GetMinRealAverage(200);
                                 devicePic.TextAlignment = TextAlignment.CenterLeft;
                                 devicePic.TextColor = UserCenterColor.Current.Gray;
@@ -547,14 +504,17 @@
                         }
                     }
 
-                    //鍒犻櫎浜嬩欢澶勭悊
-                    btnDel.MouseUpEventHandler += async (sender, e) =>
+                    var btnBindName = rowLayout.frameTable.AddTopView(btnBindNameText, 800);
+                    var btnFloorRoomName = rowLayout.frameTable.AddBottomView(btnFloorRoomNameText, 800);
+                    rowLayout.frameTable.AddBottomLine();
+                    var btnDel = rowLayout.AddDeleteControl();
+                    btnDel.ButtonClickEvent += async (sender, e) =>
                     {
                         RemoveTargets(bindDevice, btnDel);
                     };
                     #endregion
                 }
-                frameLayoutRow.Height = currentKey.bindList.Count * Application.GetRealHeight(150);
+                 midVerticalRefreshLayout.AdjustTableHeight(Application.GetRealHeight(23));
             }
             #endregion
         }
@@ -564,164 +524,153 @@
         /// </summary>
         public void BindModeDisplay()
         {
-            #region modeRowLayout
-            var modeRowLayout = new RowLayout()
-            {
-                Height = Application.GetRealHeight(150),
-                X = Application.GetRealWidth(58),
-                Width = Application.GetRealWidth(965),
-                LineColor = Shared.Common.ZigbeeColor.Current.XMRowLine,
-            };
-            topFrameLayout.AddChidren(modeRowLayout);
-
-            var btnKeyMode = new Button
-            {
-                Y = Application.GetRealHeight(63),
-                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(374 - 58),
-                Y = Application.GetRealHeight(63),
-                Width = Application.GetMinRealAverage(615),
-                Height = Application.GetMinRealAverage(58),
-                TextAlignment = TextAlignment.CenterRight,
-                TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
-            };
-            modeRowLayout.AddChidren(btnKeyModeTip);
-
-            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
-
+            var modeRowLayout = new RowLayoutControl(midVerticalRefreshLayout.rowSpace / 2);
+            modeRowLayout.BackgroundColor = ZigbeeColor.Current.XMWhite;
+            midVerticalRefreshLayout.AddChidrenRow(modeRowLayout);
+            modeRowLayout.frameTable.UseClickStatu = false;
+            modeRowLayout.frameTable.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.keyMode), 500);
+            var btnKeyModeTipText = "";
             #region 褰撳墠妯″紡鏂囨湰鏄剧ず
             switch (currentKey.panelMode)
             {
                 case 100:
-                    btnKeyModeTip.TextID = R.MyInternationalizationString.OnOffOn;
+                    btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.OnOffOn);
                     break;
                 case 101:
-                    btnKeyModeTip.TextID = R.MyInternationalizationString.OnOffoFF;
+                    btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.OnOffoFF);
                     break;
                 case 102:
-                    btnKeyModeTip.TextID = R.MyInternationalizationString.OnOffOnOff;
+                    btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.OnOffOnOff);
                     break;
                 case 200:
-                    btnKeyModeTip.TextID = R.MyInternationalizationString.DimmerMode1;
+                    btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.DimmerMode1);
                     break;
                 case 201:
-                    btnKeyModeTip.TextID = R.MyInternationalizationString.DimmerMode2;
+                    btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.DimmerMode2);
                     break;
                 case 203:
-                    btnKeyModeTip.TextID = R.MyInternationalizationString.DimmerMode3;
+                    btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.DimmerMode3);
                     break;
                 case 204:
-                    btnKeyModeTip.TextID = R.MyInternationalizationString.DimmerMode4;
+                    btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.DimmerMode4);
                     break;
                 case 205:
-                    btnKeyModeTip.TextID = R.MyInternationalizationString.DimmerMode5;
+                    btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.DimmerMode5);
                     break;
                 case 300:
-                    btnKeyModeTip.TextID = R.MyInternationalizationString.WcdUp;
+                    btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.WcdUp);
                     break;
                 case 301:
-                    btnKeyModeTip.TextID = R.MyInternationalizationString.WcdDown;
+                    btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.WcdDown);
                     break;
                 case 302:
-                    btnKeyModeTip.TextID = R.MyInternationalizationString.WcdStop;
+                    btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.WcdStop);
                     break;
                 case 303:
-                    btnKeyModeTip.TextID = R.MyInternationalizationString.WcdUpStop;
+                    btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.WcdUpStop);
                     break;
                 case 304:
-                    btnKeyModeTip.TextID = R.MyInternationalizationString.WcdDownStop;
+                    btnKeyModeTipText = Language.StringByID(R.MyInternationalizationString.WcdDownStop);
                     break;
             }
             #endregion
-
+            modeRowLayout.frameTable.AddMostRightView(btnKeyModeTipText, 500);
+            modeRowLayout.frameTable.AddBottomLine();
+            var btnDel = modeRowLayout.AddDeleteControl();
             //涓�閿竻闄ゆ寜閿簨浠�
-            btnDel.MouseUpEventHandler += async (sender, e) =>
+            btnDel.ButtonClickEvent += async (sender, e) =>
             {
-                var alert = new Alert(Language.StringByID(R.MyInternationalizationString.Tip), Language.StringByID(R.MyInternationalizationString.SureClearKeyModeAndTargets),
-                                                              Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
-                alert.Show();
-
-                alert.ResultEventHandler += async (s1, e1) =>
+                var dialog2 = new Dialog { };
+                var doorDialog2 = new Shared.Phone.UserCenter.DoorLock.DoorlockDialog(dialog2, Language.StringByID(R.MyInternationalizationString.Tip));
+                doorDialog2.Show();
+                doorDialog2.dialogMidFraFrameLayout.Width = Application.GetRealWidth(674);
+                doorDialog2.dialogMidFraFrameLayout.Height = Application.GetRealHeight(115);
+                doorDialog2.dialogMidFraFrameLayout.X = Application.GetRealWidth(60);
+                doorDialog2.dialogMidFraFrameLayout.Y = Application.GetRealHeight(167);
+                doorDialog2.dialogBtnConfirm.Text = Language.StringByID(R.MyInternationalizationString.DoorlockConfirm);
+                var midText1 = new Button()
                 {
-                    if (e1)
+                    Width = Application.GetRealWidth(674),
+                    Height = Application.GetRealHeight(115 / 2),
+                    TextSize = 14,
+                    TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
+                    TextAlignment = TextAlignment.Center,
+                    TextID = R.MyInternationalizationString.ClearAllTargeta1,
+                };
+                doorDialog2.dialogMidFraFrameLayout.AddChidren(midText1);
+                var midText2 = new Button()
+                {
+                    Width = Application.GetRealWidth(674),
+                    Height = Application.GetRealHeight(115 / 2),
+                    Y = Application.GetRealHeight(115 / 2),
+                    TextSize = 14,
+                    TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
+                    TextAlignment = TextAlignment.Center,
+                    TextID = R.MyInternationalizationString.ClearAllTargeta2,
+                };
+                doorDialog2.dialogMidFraFrameLayout.AddChidren(midText2);
+
+                doorDialog2.dialogBtnCancel.MouseUpEventHandler += (sender2, e2) =>
+                {
+                    dialog2.Close();
+                };
+                doorDialog2.dialogBtnConfirm.MouseUpEventHandler += async (sender2, e2) =>
+                {
+                    bool isDelSuccess = false;
+                    try
                     {
-                        bool isDelSuccess = false;
-                        try
+                        CommonPage.Loading.Start("");
+                        var bindResult = await currentKey.ClearBindInfoAsync();
+                        if (bindResult != null && bindResult.clearBindInfoResponseData != null)
                         {
-                            CommonPage.Loading.Start("");
-                            var bindResult = await currentKey.ClearBindInfoAsync();
-                            if (bindResult != null && bindResult.clearBindInfoResponseData != null)
+                            if (bindResult.clearBindInfoResponseData.Result != 0)
                             {
-                                if (bindResult.clearBindInfoResponseData.Result != 0)
+                                new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.RemoveFailed), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnDel);
+                                CommonPage.Loading.Hide();
+                                return;
+                            }
+                            else
+                            {
+                                var temp = await currentKey.ConfigureHdlKeyValueAsync(Panel.KeyMode.Default);
+                                if (temp.setWritableValueResponData?.Status != 0)
                                 {
-                                    new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.RemoveFailed), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnDel);
-                                    CommonPage.Loading.Hide();
-                                    return;
-                                }
-                                else
-                                {
-                                    var temp = await currentKey.ConfigureHdlKeyValueAsync(Panel.KeyMode.Default);
-                                    if (temp.setWritableValueResponData?.Status != 0)
+                                    var temp1 = await currentKey.ConfigureHdlKeyValueAsync(Panel.KeyMode.Default);
+                                    if (temp1.setWritableValueResponData?.Status != 0)
                                     {
-                                        var temp1 = await currentKey.ConfigureHdlKeyValueAsync(Panel.KeyMode.Default);
-                                        if (temp1.setWritableValueResponData?.Status != 0)
-                                        {
-                                            new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.ChangeBindMode), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(btnDel);
-                                        }
-                                        else
-                                        {
-                                            isDelSuccess = true;
-                                        }
+                                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.ChangeBindMode), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(btnDel);
                                     }
                                     else
                                     {
                                         isDelSuccess = true;
                                     }
                                 }
-                            }
-                            else
-                            {
-                                new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(btnDel);
+                                else
+                                {
+                                    isDelSuccess = true;
+                                }
                             }
                         }
-                        catch { }
-                        finally
+                        else
                         {
-                            if (isDelSuccess)
-                            {
-                                currentKey.panelMode = 65535;
-                                currentKey.bindList.Clear();
-                                RefreshList();
-                                //濡傛灉鏄満鏅紝鐢ㄦ埛鍒犻櫎娓呯┖褰撳墠鍒版埧闂村垪琛�
-                                currentKey.RoomId = "";
-                                currentKey.ReSave();
-                            }
-                            CommonPage.Loading.Hide();
+                            new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(btnDel);
                         }
                     }
-                    else
+                    catch { }
+                    finally
                     {
-
+                        if (isDelSuccess)
+                        {
+                            currentKey.panelMode = 65535;
+                            currentKey.bindList.Clear();
+                            RefreshList();
+                            //濡傛灉鏄満鏅紝鐢ㄦ埛鍒犻櫎娓呯┖褰撳墠鍒版埧闂村垪琛�
+                            currentKey.RoomId = "";
+                            currentKey.ReSave();
+                        }
+                        CommonPage.Loading.Hide();
                     }
+                    dialog2.Close();
                 };
-
             };
         }
 
@@ -800,6 +749,7 @@
                     Y = Application.GetRealHeight(69),
                     TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
                     TextSize = 14,
+                    IsBold = false,
                     TextAlignment = TextAlignment.CenterLeft,
                 };
                 rowView.AddChidren(btnMethodText);
@@ -814,27 +764,37 @@
                 };
                 rowView.AddChidren(line2);
 
+                if (string.IsNullOrEmpty(currentKey.currentKeySelectModeText) && value == 1)
+                {
+                    btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                    btnMethodText.IsBold = true;
+                    oldbuttonText = btnMethodText;
+                }
                 if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddScene) && value == 1)
                 {
                     btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                    btnMethodText.IsBold = true;
                     oldbuttonText = btnMethodText;
                 }
                 else if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddSwitch) && value == 100)
                 {
                     btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                    btnMethodText.IsBold = true;
                     oldbuttonText = btnMethodText;
                 }
                 else if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddDimmer) && value == 200)
                 {
                     btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                    btnMethodText.IsBold = true;
                     oldbuttonText = btnMethodText;
                 }
                 else if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddCurtain) && value == 300)
                 {
                     btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                    btnMethodText.IsBold = true;
                     oldbuttonText = btnMethodText;
                 }
-                #endregion 
+                #endregion
 
                 #region 鏁版嵁澶勭悊
                 switch (value)
@@ -857,21 +817,25 @@
                 if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddScene) && value == 1)
                 {
                     btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                    btnMethodText.IsBold = true;
                     oldbuttonText = btnMethodText;
                 }
                 if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddSwitch) && value == 100)
                 {
                     btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                    btnMethodText.IsBold = true;
                     oldbuttonText = btnMethodText;
                 }
                 if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddDimmer) && value == 200)
                 {
                     btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                    btnMethodText.IsBold = true;
                     oldbuttonText = btnMethodText;
                 }
                 if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddCurtain) && value == 300)
                 {
                     btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                    btnMethodText.IsBold = true;
                     oldbuttonText = btnMethodText;
                 }
                 #endregion
@@ -896,47 +860,54 @@
                             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) =>
+                                var dialog1 = new Dialog { };
+                                var doorDialog = new Shared.Phone.UserCenter.DoorLock.DoorlockDialog(dialog1, Language.StringByID(R.MyInternationalizationString.Tip));
+                                doorDialog.Show();
+                                doorDialog.dialogMidFraFrameLayout.Height = Application.GetRealHeight(58);
+                                doorDialog.dialogMidFraFrameLayout.X = Application.GetRealWidth(0);
+                                doorDialog.dialogMidFraFrameLayout.Y = Application.GetRealHeight(202);
+                                doorDialog.dialogMidFraFrameLayout.AddChidren(doorDialog.dialogMidText);
+                                doorDialog.dialogMidText.Text = Language.StringByID(R.MyInternationalizationString.DelLocalBindListThenAddAgain);
+                                doorDialog.dialogMidFraFrameLayout.AddChidren(doorDialog.dialogMidText);
+                                doorDialog.dialogBtnConfirm.Text = Language.StringByID(R.MyInternationalizationString.DoorlockConfirm);
+                                doorDialog.dialogBtnCancel.MouseUpEventHandler += (sender1, e1) =>
                                 {
-                                    if (e1)
+                                    currentKey.currentKeySelectModeText = oldKeySelectModeText;
+                                    dialog.Close();
+                                    dialog1.Close();
+                                };
+                                doorDialog.dialogBtnConfirm.MouseUpEventHandler += async (sender1, e1) =>
+                                {
+                                    var result = await RemoveTargets(bindSc, line2);
+                                    if (result == 0)
                                     {
-                                        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();
+                                        var addScenePage = new Shared.Phone.UserCenter.DeviceBind.AddScenePage(currentKey, gwScenesList);
+                                        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
+                                        Action<List<BindListResponseObj>> action = (obj) =>
                                         {
-                                            currentKey.currentKeySelectModeText = oldKeySelectModeText;
-                                            dialog.Close();
-                                        }
+                                            currentKey.bindList = obj;
+                                            RefreshList();
+                                        };
+                                        addScenePage.action += action;
+                                        dialog.Close();
+                                        dialog1.Close();
                                     }
                                     else
                                     {
                                         currentKey.currentKeySelectModeText = oldKeySelectModeText;
                                         dialog.Close();
+                                        dialog1.Close();
                                     }
                                 };
+
                             }
                         }
                         else
                         {
-                            var addScenePage = new Shared.Phone.UserCenter.DeviceBind.AddScenePage(currentKey);
+                            var addScenePage = new Shared.Phone.UserCenter.DeviceBind.AddScenePage(currentKey, gwScenesList);
                             Shared.Phone.UserView.HomePage.Instance.AddChidren(addScenePage);
                             Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
                             addScenePage.Show();
@@ -957,40 +928,46 @@
                             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) =>
+                                var dialog1 = new Dialog { };
+                                var doorDialog = new Shared.Phone.UserCenter.DoorLock.DoorlockDialog(dialog1, Language.StringByID(R.MyInternationalizationString.Tip));
+                                doorDialog.Show();
+                                doorDialog.dialogMidFraFrameLayout.Height = Application.GetRealHeight(58);
+                                doorDialog.dialogMidFraFrameLayout.X = Application.GetRealWidth(0);
+                                doorDialog.dialogMidFraFrameLayout.Y = Application.GetRealHeight(202);
+                                doorDialog.dialogMidFraFrameLayout.AddChidren(doorDialog.dialogMidText);
+                                doorDialog.dialogMidText.Text = Language.StringByID(R.MyInternationalizationString.DelLocalBindListThenAddAgain1);
+                                doorDialog.dialogMidFraFrameLayout.AddChidren(doorDialog.dialogMidText);
+                                doorDialog.dialogBtnConfirm.Text = Language.StringByID(R.MyInternationalizationString.DoorlockConfirm);
+                                doorDialog.dialogBtnCancel.MouseUpEventHandler += (sender1, e1) =>
                                 {
-                                    if (e1)
+                                    currentKey.currentKeySelectModeText = oldKeySelectModeText;
+                                    dialog.Close();
+                                    dialog1.Close();
+                                };
+                                doorDialog.dialogBtnConfirm.MouseUpEventHandler += async (sender1, e1) =>
+                                {
+                                    var result = await RemoveTargets(bindSc, line2);
+                                    if (result == 0)
                                     {
-                                        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();
+                                        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
+                                        Action<List<BindListResponseObj>> action = (obj) =>
                                         {
-                                            currentKey.currentKeySelectModeText = oldKeySelectModeText;
-                                            dialog.Close();
-                                        }
+                                            currentKey.bindList = obj;
+                                            RefreshList();
+                                        };
+                                        addDevicePage.actionAddDevicePage += action;
+                                        dialog.Close();
+                                        dialog1.Close();
                                     }
                                     else
                                     {
                                         currentKey.currentKeySelectModeText = oldKeySelectModeText;
                                         dialog.Close();
+                                        dialog1.Close();
                                     }
                                 };
                             }
@@ -1018,41 +995,48 @@
                             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) =>
+                                var dialog1 = new Dialog { };
+                                var doorDialog = new Shared.Phone.UserCenter.DoorLock.DoorlockDialog(dialog1, Language.StringByID(R.MyInternationalizationString.Tip));
+                                doorDialog.Show();
+                                doorDialog.dialogMidFraFrameLayout.Height = Application.GetRealHeight(58);
+                                doorDialog.dialogMidFraFrameLayout.X = Application.GetRealWidth(0);
+                                doorDialog.dialogMidFraFrameLayout.Y = Application.GetRealHeight(202);
+                                doorDialog.dialogMidFraFrameLayout.AddChidren(doorDialog.dialogMidText);
+                                doorDialog.dialogMidText.Text = Language.StringByID(R.MyInternationalizationString.DelLocalBindListThenAddAgain2);
+                                doorDialog.dialogMidFraFrameLayout.AddChidren(doorDialog.dialogMidText);
+                                doorDialog.dialogBtnConfirm.Text = Language.StringByID(R.MyInternationalizationString.DoorlockConfirm);
+                                doorDialog.dialogBtnCancel.MouseUpEventHandler += (sender1, e1) =>
                                 {
-                                    if (e1)
+                                    currentKey.currentKeySelectModeText = oldKeySelectModeText;
+                                    dialog.Close();
+                                    dialog1.Close();
+                                };
+                                doorDialog.dialogBtnConfirm.MouseUpEventHandler += async (sender1, e1) =>
+                                {
+                                    var result = await RemoveTargets(bindSc, line2);
+                                    if (result == 0)
                                     {
-                                        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();
+                                        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
+                                        Action<List<BindListResponseObj>> action = (obj) =>
                                         {
-                                            currentKey.currentKeySelectModeText = oldKeySelectModeText;
-                                            dialog.Close();
-                                        }
+                                            currentKey.bindList = obj;
+                                            RefreshList();
+                                        };
+                                        addDevicePage.actionAddDevicePage += action;
+                                        dialog.Close();
+                                        dialog1.Close();
                                     }
                                     else
                                     {
                                         currentKey.currentKeySelectModeText = oldKeySelectModeText;
                                         dialog.Close();
+                                        dialog1.Close();
                                     }
+
                                 };
                             }
                         }
@@ -1071,8 +1055,6 @@
                             addDevicePage.actionAddDevicePage += action;
                             dialog.Close();
                         }
-
-
                     }
                     if (currentKey.currentKeySelectModeText == Language.StringByID(R.MyInternationalizationString.AddCurtain))
                     {
@@ -1081,32 +1063,37 @@
                             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) =>
+                                var dialog1 = new Dialog { };
+                                var doorDialog = new Shared.Phone.UserCenter.DoorLock.DoorlockDialog(dialog1, Language.StringByID(R.MyInternationalizationString.Tip));
+                                doorDialog.Show();
+                                doorDialog.dialogMidFraFrameLayout.Height = Application.GetRealHeight(58);
+                                doorDialog.dialogMidFraFrameLayout.X = Application.GetRealWidth(0);
+                                doorDialog.dialogMidFraFrameLayout.Y = Application.GetRealHeight(202);
+                                doorDialog.dialogMidFraFrameLayout.AddChidren(doorDialog.dialogMidText);
+                                doorDialog.dialogMidText.Text = Language.StringByID(R.MyInternationalizationString.DelLocalBindListThenAddAgain3);
+                                doorDialog.dialogMidFraFrameLayout.AddChidren(doorDialog.dialogMidText);
+                                doorDialog.dialogBtnConfirm.Text = Language.StringByID(R.MyInternationalizationString.DoorlockConfirm);
+                                doorDialog.dialogBtnCancel.MouseUpEventHandler += (sender1, 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();
+                                    currentKey.currentKeySelectModeText = oldKeySelectModeText;
+                                    dialog.Close();
+                                    dialog1.Close();
+                                };
+                                doorDialog.dialogBtnConfirm.MouseUpEventHandler += async (sender1, 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
+                                    Action<List<BindListResponseObj>> action = (obj) =>
                                     {
-                                        currentKey.currentKeySelectModeText = oldKeySelectModeText;
-                                        dialog.Close();
-                                    }
+                                        currentKey.bindList = obj;
+                                        RefreshList();
+                                    };
+                                    addDevicePage.actionAddDevicePage += action;
+                                    dialog.Close();
+                                    dialog1.Close();
                                 };
                             }
                         }
@@ -1325,3 +1312,4 @@
         }
     }
 }
+
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/ChooseKeyModePage.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/ChooseKeyModePage.cs
index d5408d6..953f73e 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/ChooseKeyModePage.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/ChooseKeyModePage.cs
@@ -96,6 +96,7 @@
                 BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack,
                 TextColor = Shared.Common.ZigbeeColor.Current.XMWhite,
                 TextSize = 16,
+                IsBold = true,
             };
             bottomFrameLayout.AddChidren(btnFinifh);
             #endregion
@@ -612,6 +613,7 @@
                     Y = Application.GetRealHeight(58),
                     TextColor = Shared.Common.ZigbeeColor.Current.TextBlack,
                     TextAlignment = TextAlignment.CenterLeft,
+                    TextSize = 14,
                 };
                 rowLayout.AddChidren(btnModeText);
 
@@ -767,6 +769,7 @@
                     Y = Application.GetRealHeight(58),
                     TextColor = Shared.Common.ZigbeeColor.Current.TextBlack,
                     TextAlignment = TextAlignment.CenterLeft,
+                    TextSize = 14,
                 };
                 rowLayout.AddChidren(btnModeText);
 
@@ -810,7 +813,7 @@
                         break;
                 }
 
-                if (i == typeDetailModeList.Count - 1)
+                if (i == typeDetailModeListTemp.Count - 1)
                 {
                     line2.Visible = false;
                 }
@@ -937,6 +940,7 @@
                     Y = Application.GetRealHeight(58),
                     TextColor = Shared.Common.ZigbeeColor.Current.TextBlack,
                     TextAlignment = TextAlignment.CenterLeft,
+                    TextSize = 14,
                 };
                 rowLayout.AddChidren(btnModeText);
 
@@ -1070,11 +1074,6 @@
                 btnChoose.MouseUpEventHandler += hander;
                 i++;
             }
-        }
-
-        private void FinisfhEventHandler(object sender, MouseEventArgs e)
-        {
-
         }
 
         public void DeviceInfoChange(CommonDevice common, string typeTag)
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/Curtain/AutoOpenDirectionAndLimitSettionForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/Curtain/AutoOpenDirectionAndLimitSettionForm.cs
index 4981897..725d5fa 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Device/Curtain/AutoOpenDirectionAndLimitSettionForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/Curtain/AutoOpenDirectionAndLimitSettionForm.cs
@@ -177,7 +177,7 @@
             var btnRinght = rowLimit.AddMostRightEmptyIcon(58, 58);
             rowLimit.ChangedChidrenBindMode(btnRinght, ChidrenBindMode.NotBind);
             btnRinght.UseClickStatu = false;
-            btnRinght.UnSelectedImagePath = "Item/Next.png";
+            btnRinght.UnSelectedImagePath = "Item/RightNext.png";
             btnRinght.SelectedImagePath = "Item/Down.png";
             btnRinght.IsSelected = true;
             btnRinght.ButtonClickEvent += (sender, e) =>
@@ -266,7 +266,7 @@
                 {
                     return;
                 }
-                openSeekBar.Progress -= 1;
+                openSeekBar.Progress -= 5;
                 openSeekBar.ProgressChangedEvent(1, openSeekBar.Progress);
             };
 
@@ -284,7 +284,7 @@
                 {
                     return;
                 }
-                openSeekBar.Progress += 1;
+                openSeekBar.Progress += 5;
                 openSeekBar.ProgressChangedEvent(1, openSeekBar.Progress);
             };
 
@@ -443,7 +443,7 @@
                 {
                     return;
                 }
-                closeSeekBar.Progress -= 1;
+                closeSeekBar.Progress -= 5;
                 closeSeekBar.ProgressChangedEvent(1, closeSeekBar.Progress);
             };
 
@@ -461,7 +461,7 @@
                 {
                     return;
                 }
-                closeSeekBar.Progress += 1;
+                closeSeekBar.Progress += 5;
                 closeSeekBar.ProgressChangedEvent(1, closeSeekBar.Progress);
             };
 
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/Curtain/SiphonateDirectionAndLimitSettionForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/Curtain/SiphonateDirectionAndLimitSettionForm.cs
index 155b93b..c141dc8 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Device/Curtain/SiphonateDirectionAndLimitSettionForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/Curtain/SiphonateDirectionAndLimitSettionForm.cs
@@ -157,7 +157,7 @@
             var btnRinght = rowLimit.AddMostRightEmptyIcon(58, 58);
             rowLimit.ChangedChidrenBindMode(btnRinght, ChidrenBindMode.NotBind);
             btnRinght.UseClickStatu = false;
-            btnRinght.UnSelectedImagePath = "Item/Next.png";
+            btnRinght.UnSelectedImagePath = "Item/RightNext.png";
             btnRinght.SelectedImagePath = "Item/Down.png";
             btnRinght.IsSelected = true;
             btnRinght.ButtonClickEvent += (sender, e) =>
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceAddSuccessForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceAddSuccessForm.cs
index 871c1ad..d6dd689 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceAddSuccessForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceAddSuccessForm.cs
@@ -57,12 +57,32 @@
             //鍒濆鍖栨甯�
             this.InitFrameTable();
 
+            var framePic = new FrameLayout();
+            framePic.Width = Application.GetRealWidth(855);
+            framePic.Height = Application.GetRealHeight(570);
+            framePic.Gravity = Gravity.CenterHorizontal;
+            framePic.Y = Application.GetRealHeight(58);
+            bodyFrameLayout.AddChidren(framePic);
+
+            var imageFile = Common.LocalDevice.Current.GetRealDeviceIcon(listNewDevice);
+            string fullName = IO.FileUtils.GetImageFilePath(imageFile);
+
+#if Android
             //璁惧鍥剧墖
-            var btnpictrue = new PicViewControl(855, 570);
-            btnpictrue.Gravity = Gravity.CenterHorizontal;
-            btnpictrue.Y = Application.GetRealHeight(58);
-            Common.LocalDevice.Current.SetRealDeviceIconToControl(btnpictrue, listNewDevice);
-            bodyFrameLayout.AddChidren(btnpictrue);
+            var bim = Android.Graphics.BitmapFactory.DecodeFile(fullName);
+            var btnpictrue = new PicViewControl(bim.Width, bim.Height);
+#endif
+#if iOS
+            //璁惧鍥剧墖
+            var bim = UIKit.UIImage.FromFile(fullName);
+            var btnpictrue = new PicViewControl((int)bim.Size.Width, (int)bim.Size.Height);
+#endif
+            bim.Dispose();
+            bim = null;
+
+            btnpictrue.Gravity = Gravity.Center;
+            btnpictrue.UnSelectedImagePath = imageFile;
+            framePic.AddChidren(btnpictrue);
 
             string nameValue = Common.LocalDevice.Current.GetDeviceMacName(listNewDevice[0]);
             this.saveDefultName = nameValue;
@@ -140,7 +160,7 @@
             };
             bodyFrameLayout.AddChidren(btnHelp);
             //搴曠嚎
-            int lineWidth = btnHelp.GetRealWidthByText(12);
+            int lineWidth = btnHelp.GetRealWidthByText();
             var btnLine = new NormalViewControl(lineWidth, ControlCommonResourse.BottomLineHeight, false);
             btnLine.BackgroundColor = UserCenterColor.Current.TextOrangeColor;
             btnLine.Gravity = Gravity.CenterHorizontal;
@@ -193,9 +213,9 @@
             };
         }
 
-        #endregion
+#endregion
 
-        #region 鈻� 淇敼鍚嶅瓧___________________________
+#region 鈻� 淇敼鍚嶅瓧___________________________
 
         /// <summary>
         /// 璁惧閲嶅懡鍚嶇劧鍚庢墦寮�鏂扮殑鐢婚潰
@@ -249,18 +269,21 @@
                     if (deviceInfoType.BeloneType == Common.DeviceBeloneType.A鎸夐敭闈㈡澘 && device.Type == DeviceType.TemperatureSensor)
                     {
                         //闈㈡澘鐨勬渶鍚庝竴涓洖璺槸娓╁害浼犳劅鍣�
-                        epointName = Language.StringByID(R.MyInternationalizationString.uDeviceBelongId11);
+                        epointName += Language.StringByID(R.MyInternationalizationString.uDeviceBelongId11);
                     }
-                    //XXXXX(N鍥炶矾)
-                    epointName += "(" + device.DeviceEpoint + Language.StringByID(R.MyInternationalizationString.uDeviceCircuit) + ")";
+                    else
+                    {
+                        //XXXXX(N鍥炶矾)
+                        epointName += "(" + device.DeviceEpoint + Language.StringByID(R.MyInternationalizationString.uDeviceCircuit) + ")";
+                    }
                 }
                 await Common.LocalDevice.Current.ReName(device, epointName, ShowErrorMode.NO);
             }
         }
 
-        #endregion
+#endregion
 
-        #region 鈻� 鐢婚潰鍏抽棴___________________________
+#region 鈻� 鐢婚潰鍏抽棴___________________________
 
         /// <summary>
         /// 鐢婚潰鍏抽棴
@@ -277,6 +300,6 @@
 
             base.CloseFormBefore();
         }
-        #endregion
+#endregion
     }
 }
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceDryContactSettionForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceDryContactSettionForm.cs
index 7a96447..719e4e9 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceDryContactSettionForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceDryContactSettionForm.cs
@@ -250,7 +250,7 @@
             //{
             //    menuCount = 2;
             //}
-            var frame = new TopRightMenuControl(menuCount);
+            var frame = new TopRightMenuControl(menuCount, 1);
             if (canTest == true)
             {
                 //瀹氫綅
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFirmwareUpdateForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFirmwareUpdateForm.cs
index 788e051..c07de22 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFirmwareUpdateForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFirmwareUpdateForm.cs
@@ -97,7 +97,7 @@
         /// </summary>
         private void ShowTopRightMenu()
         {
-            var frame = new TopRightMenuControl(1);
+            var frame = new TopRightMenuControl(1, 2);
             //鍘嗗彶鐗堟湰
             var deviceMenu = Language.StringByID(R.MyInternationalizationString.uHistoryVersion);
             frame.AddRowMenu(deviceMenu, "", "", () =>
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFunctionSettionForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFunctionSettionForm.cs
index 52b60db..8d9b197 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFunctionSettionForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceFunctionSettionForm.cs
@@ -249,7 +249,7 @@
             //{
             //    menuCount = 2;
             //}
-            var frame = new TopRightMenuControl(menuCount);
+            var frame = new TopRightMenuControl(menuCount, 1);
             if (canTest == true)
             {
                 //瀹氫綅
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceHistoryFirmwareVersionForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceHistoryFirmwareVersionForm.cs
index 05a533d..7e77e24 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceHistoryFirmwareVersionForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceHistoryFirmwareVersionForm.cs
@@ -65,7 +65,7 @@
 
             string unSelectPic = string.Empty;
             string selectPic = string.Empty;
-            Common.LocalDevice.Current.GetDeviceBeloneIcon(listUpdateDevice, ref unSelectPic, ref selectPic);
+            Common.LocalDevice.Current.GetDeviceObjectIcon(listUpdateDevice, ref unSelectPic, ref selectPic);
 
             HdlThreadLogic.Current.RunThread(() =>
             {
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceListMainForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceListMainForm.cs
index 1d82707..5e47e00 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceListMainForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceListMainForm.cs
@@ -222,7 +222,7 @@
             rowInfo.MenuRow = rowMenu;
             //鍚戝彸鍥炬爣
             var btnRight = rowMenu.frameTable.AddMostRightEmptyIcon(58, 58);
-            btnRight.UnSelectedImagePath = "Item/Next.png";
+            btnRight.UnSelectedImagePath = "Item/RightNext.png";
             btnRight.SelectedImagePath = "Item/Down.png";
             rowMenu.frameTable.ChangedChidrenBindMode(btnRight, ChidrenBindMode.NotBind);
 
@@ -626,51 +626,44 @@
         /// <param name="device"></param>
         private void ReceiveDeviceStatu(CommonDevice device)
         {
-            lock (dicRowInfo)
+            DeviceObjRowInfo rowInfo = null;
+            if (this.dicRowInfo.ContainsKey(device.DeviceAddr) == true)
             {
-                if (this.Parent == null)
+                rowInfo = this.dicRowInfo[device.DeviceAddr];
+            }
+            if (rowInfo == null || rowInfo.MenuRow == null)
+            {
+                return;
+            }
+            //鍒锋柊璁惧鐨勫湪绾跨姸鎬�
+            string mainkeys = Common.LocalDevice.Current.GetDeviceMainKeys(device);
+            var localDevice = Common.LocalDevice.Current.GetDevice(mainkeys);
+            if (localDevice != null)
+            {
+                //鍦ㄧ嚎鐘舵�佷竴鏍风殑璇濓紝涓嶉渶瑕佸埛鏂�
+                if (localDevice.IsOnline == device.IsOnline)
                 {
                     return;
                 }
-                DeviceObjRowInfo rowInfo = null;
-                if (this.dicRowInfo.ContainsKey(device.DeviceAddr) == true)
-                {
-                    rowInfo = this.dicRowInfo[device.DeviceAddr];
-                }
-                if (rowInfo == null || rowInfo.MenuRow == null)
-                {
-                    return;
-                }
-                //鍒锋柊璁惧鐨勫湪绾跨姸鎬�
-                string mainkeys = Common.LocalDevice.Current.GetDeviceMainKeys(device);
-                var localDevice = Common.LocalDevice.Current.GetDevice(mainkeys);
-                if (localDevice != null)
-                {
-                    //鍦ㄧ嚎鐘舵�佷竴鏍风殑璇濓紝涓嶉渶瑕佸埛鏂�
-                    if (localDevice.IsOnline == device.IsOnline)
-                    {
-                        return;
-                    }
-                    //淇濆瓨鐘舵��
-                    localDevice.IsOnline = device.IsOnline;
-                    localDevice.ReSave();
-                }
+                //淇濆瓨鐘舵��
+                localDevice.IsOnline = device.IsOnline;
+                localDevice.ReSave();
+            }
 
-                HdlThreadLogic.Current.RunMain(() =>
+            HdlThreadLogic.Current.RunMain(() =>
+            {
+                if (rowInfo != null)
                 {
-                    if (rowInfo != null)
+                    rowInfo.MenuRow.isOnline = device.IsOnline == 1;
+                    if (rowInfo.dicDetailRow != null)
                     {
-                        rowInfo.MenuRow.isOnline = device.IsOnline == 1;
-                        if (rowInfo.dicDetailRow != null)
+                        foreach (var detailRow in rowInfo.dicDetailRow.Values)
                         {
-                            foreach (var detailRow in rowInfo.dicDetailRow.Values)
-                            {
-                                detailRow.isOnline = rowInfo.MenuRow.isOnline;
-                            }
+                            detailRow.isOnline = rowInfo.MenuRow.isOnline;
                         }
                     }
-                });
-            }
+                }
+            });
         }
 
         /// <summary>
@@ -704,7 +697,7 @@
         {
             HdlGatewayReceiveLogic.Current.AddAttributeEvent("DeviceListFormSensor", ReceiveComandDiv.A浼犳劅鍣ㄤ笂鎶�, (device) =>
              {
-                 Application.RunOnMainThread(() =>
+                 HdlThreadLogic.Current.RunMain(() =>
                  {
                      if (this.dicRowInfo.ContainsKey(device.DeviceAddr) == false)
                      {
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceMacInfoEditorForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceMacInfoEditorForm.cs
index abe2b33..f988ccb 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceMacInfoEditorForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceMacInfoEditorForm.cs
@@ -189,11 +189,10 @@
         /// </summary>
         private void AddAllMenuRow()
         {
-            bool isHdlDevice = Common.LocalDevice.Current.IsHdlDevice(listNewDevice[0]);
             if (deviceEnumInfo.BeloneType == DeviceBeloneType.A鏅鸿兘闂ㄩ攣)
             {
                 //鍙湁鏄渤涓滅殑璁惧鐨勬椂鍊�
-                if (isHdlDevice == true)
+                if (deviceEnumInfo.IsHdlDevice == true)
                 {
                     //娣诲姞銆愮敤鎴风鐞嗐�戣
                     this.AddUserManageRow();
@@ -210,6 +209,8 @@
             }
             else
             {
+                //娣诲姞銆愬伐浣滄ā寮忋�戣(pir浼犳劅鍣ㄤ笓鐢�)
+                this.AddPirSensorWorkModeRow();
                 //娣诲姞銆愮粦瀹氱洰鏍囥�戣(pir浼犳劅鍣ㄤ笓鐢�)
                 this.AddPirSensorBindRow();
                 //娣诲姞銆愭柟鍚戜笌闄愪綅銆戣(寮�鍚堝笜,鍗峰笜涓撶敤)
@@ -223,13 +224,15 @@
                 //娣诲姞銆愬共鎺ョ偣璁剧疆銆戣
                 this.AddDryContactSettionRow();
             }
+            //娣诲姞銆愬姛鑳界被鍨嬨�戣(绌烘皵寮�鍏充笓鐢�)
+            this.AddAirSwitchFunctionTypeRow();
             //娣诲姞銆愰�氱敤淇℃伅銆戣
             this.AddGeneralInformationRow();
 
             //娣诲姞銆愮┖璋冩ā鍧楃増鏈�(绌鸿皟涓撶敤)銆戣
             this.AddAirConditionerModelVersionRow();
 
-            if (isHdlDevice == true)
+            if (deviceEnumInfo.IsHdlDevice == true)
             {
                 //娣诲姞銆愬浐浠跺崌绾с�戣
                 this.AddFirmwareUpdateRow();
@@ -503,6 +506,36 @@
 
         #endregion
 
+        #region 鈻� 宸ヤ綔妯″紡(pir浼犳劅鍣ㄤ笓鐢�)____________
+
+        /// <summary>
+        /// 娣诲姞銆愬伐浣滄ā寮忋�戣(pir浼犳劅鍣ㄤ笓鐢�)
+        /// </summary>
+        private void AddPirSensorWorkModeRow()
+        {
+            if (this.deviceEnumInfo.ConcreteType != DeviceConcreteType.Sensor_Pir
+                || deviceEnumInfo.IsHdlDevice == false)
+            {
+                return;
+            }
+            //宸ヤ綔妯″紡
+            string caption = Language.StringByID(R.MyInternationalizationString.uWorkMode);
+            var btnFunction = new FrameRowControl(listview.rowSpace / 2);
+            listview.AddChidren(btnFunction);
+            btnFunction.AddLeftCaption(caption, 600);
+            //鍚戝彸鍥炬爣
+            btnFunction.AddRightArrow();
+            //搴曠嚎
+            btnFunction.AddBottomLine();
+            btnFunction.ButtonClickEvent += (sender, e) =>
+            {
+                var form = new DevicePirSensor.PirSensorWorkModeMenuForm();
+                form.AddForm((IASZone)this.listNewDevice[0]);
+            };
+        }
+
+        #endregion;
+
         #region 鈻� 缁戝畾鐩爣(pir浼犳劅鍣ㄤ笓鐢�)____________
 
         /// <summary>
@@ -670,7 +703,10 @@
                         //鎵嬫媺鎺у埗
                         if (0 < (attriBute.AttriButeData & 0x04))
                         {
-                            btnSwitch.IsSelected = true;
+                            HdlThreadLogic.Current.RunMain(() =>
+                            {
+                                btnSwitch.IsSelected = true;
+                            });
                         }
                     }
                 }
@@ -705,6 +741,101 @@
             {
                 var form = new DeviceAirConditioner.IndoorUnitListForm();
                 form.AddForm(listNewDevice[0].DeviceAddr);
+            };
+        }
+
+        #endregion
+
+        #region 鈻� 鍔熻兘绫诲瀷(绌烘皵寮�鍏充笓鐢�)_____________
+
+        /// <summary>
+        /// 娣诲姞銆愬姛鑳界被鍨嬨�戣(绌烘皵寮�鍏充笓鐢�)
+        /// </summary>
+        private void AddAirSwitchFunctionTypeRow()
+        {
+            if (this.deviceEnumInfo.BeloneType != DeviceBeloneType.A鏅鸿兘绌哄紑)
+            {
+                //涓嶆槸绌烘皵寮�鍏�
+                return;
+            }
+
+            //鍔熻兘绫诲瀷
+            string caption = Language.StringByID(R.MyInternationalizationString.uFunctionType);
+            var DfunctionType = this.listNewDevice[0].DfunctionType;
+
+            //鍔熻兘绫诲瀷鐨勭炕璇戝悕瀛�
+            int nowSelectNo = 1;
+            string strType = string.Empty;
+            if (DfunctionType == DeviceFunctionType.A鐏厜)
+            {
+                strType = Language.StringByID(R.MyInternationalizationString.uLight);
+                nowSelectNo = 1;
+            }
+            else if (DfunctionType == DeviceFunctionType.A寮�鍏�)
+            {
+                strType = Language.StringByID(R.MyInternationalizationString.uSwitch);
+                nowSelectNo = 0;
+            }
+            else if (DfunctionType == DeviceFunctionType.A鎻掑骇)
+            {
+                strType = Language.StringByID(R.MyInternationalizationString.uSocket1);
+                nowSelectNo = 2;
+            }
+
+            var btnFunction = new FrameCaptionViewControl(caption, strType, listview.rowSpace / 2);
+            btnFunction.UseClickStatu = true;
+            listview.AddChidren(btnFunction);
+            btnFunction.InitControl();
+            //搴曠嚎
+            btnFunction.AddBottomLine();
+            //鍙崇澶�
+            btnFunction.AddRightArrow();
+            btnFunction.ButtonClickEvent += (sender, e) =>
+            {
+                //鏄剧ず鍒楄〃
+                var listText = new List<string>();
+                listText.Add(Language.StringByID(R.MyInternationalizationString.uSwitch));//寮�鍏�
+                listText.Add(Language.StringByID(R.MyInternationalizationString.uLight));//鐏厜
+                listText.Add(Language.StringByID(R.MyInternationalizationString.uSocket1));//鎻掑骇
+                //鏍囬:閫夋嫨鍔熻兘绫诲瀷
+                var title = Language.StringByID(R.MyInternationalizationString.uSelectFunctionType);
+
+                var form = new BottomItemSelectForm();
+                form.AddForm(title, listText, nowSelectNo);
+                form.FinishSelectEvent += (selectNo) =>
+                {
+                    btnFunction.Text = listText[selectNo];
+                    nowSelectNo = selectNo;
+                    //璁板綍璧峰綋鍓嶉�夋嫨鐨勫姛鑳界被鍨�
+                    if (selectNo == 0)
+                    {
+                        this.listNewDevice[0].DfunctionType = DeviceFunctionType.A寮�鍏�;
+                        if (this.listNewDevice[0].IsCustomizeImage == false)
+                        {
+                            //閲嶆柊璁剧疆鍥剧墖
+                            this.listNewDevice[0].IconPath = "Device/Switch.png";
+                        }
+                    }
+                    else if (selectNo == 1)
+                    {
+                        this.listNewDevice[0].DfunctionType = DeviceFunctionType.A鐏厜;
+                        if (this.listNewDevice[0].IsCustomizeImage == false)
+                        {
+                            //閲嶆柊璁剧疆鍥剧墖
+                            this.listNewDevice[0].IconPath = "Device/Light.png";
+                        }
+                    }
+                    else
+                    {
+                        this.listNewDevice[0].DfunctionType = DeviceFunctionType.A鎻掑骇;
+                        if (this.listNewDevice[0].IsCustomizeImage == false)
+                        {
+                            //閲嶆柊璁剧疆鍥剧墖
+                            this.listNewDevice[0].IconPath = "Device/Socket1.png";
+                        }
+                    }
+                    this.listNewDevice[0].ReSave();
+                };
             };
         }
 
@@ -924,15 +1055,21 @@
         /// </summary>
         private void ShowTopRightMenu()
         {
-            int menuCount = 1;
-            string deviceMenu = string.Empty;
             //妫�娴嬫鍥炶矾鏄惁鎷ユ湁瀹氫綅鍔熻兘(鎷跨鐐规渶灏忕殑閭d釜鍥炶矾鍘诲畾浣�)
             bool canTest = Common.LocalDevice.Current.DeviceIsCanFixedPosition(listNewDevice[0]);
-            if (canTest == true)
+            if (this.deviceEnumInfo.BeloneType == DeviceBeloneType.A鏅鸿兘闂ㄩ攣)
             {
-                menuCount = 2;
+                canTest = false;
             }
-            var frame = new TopRightMenuControl(menuCount);
+            else if (this.deviceEnumInfo.BeloneType == DeviceBeloneType.A浼犳劅鍣�
+                && this.deviceEnumInfo.ConcreteType != DeviceConcreteType.Sensor_Pir)
+            {
+                //浼犳劅鍣ㄩ櫎浜哖ir閮芥病鏈夊畾浣嶅姛鑳�
+                canTest = false;
+            }
+            var frame = new TopRightMenuControl(canTest == true ? 2 : 1, 1);
+
+            string deviceMenu = string.Empty;
             if (canTest == true)
             {
                 //瀹氫綅
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/DoorLock/DoorLockHistoryLogForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/DoorLock/DoorLockHistoryLogForm.cs
index 8b5ba3c..582d120 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Device/DoorLock/DoorLockHistoryLogForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/DoorLock/DoorLockHistoryLogForm.cs
@@ -2,6 +2,7 @@
 using System.Collections.Generic;
 using System.Text;
 using System.Threading.Tasks;
+using ZigBee.Device;
 
 namespace Shared.Phone.UserCenter.DeviceDoorLock
 {
@@ -15,7 +16,7 @@
         /// <summary>
         /// 鍒楄〃鎺т欢
         /// </summary>
-        private VerticalListControl listView = null;
+        private VerticalFrameRefreshControl listView = null;
         /// <summary>
         /// 鏃ユ湡From鎺т欢
         /// </summary>
@@ -29,9 +30,9 @@
         /// </summary>
         private List<MemberInfoRes> listMenberInfo = null;
         /// <summary>
-        /// 璁惧鐨凪ac鍦板潃
+        /// 璁惧瀵硅薄
         /// </summary>
-        private string DeviceMac = string.Empty;
+        private CommonDevice DeviceDoor = null;
         /// <summary>
         /// 妫�绱㈠璞$殑ID(-1:鎵�鏈� 绌哄瓧绗︿覆:鍏朵粬)
         /// </summary>
@@ -40,6 +41,10 @@
         /// 妫�绱㈠紑閿佹柟寮忕殑ID(-1:鎵�鏈� 0:瀵嗙爜 15:鎸囩汗 3:IC鍗�)
         /// </summary>
         private List<int> listSearchLockId = new List<int>() { -1 };
+        /// <summary>
+        /// 鍏朵粬娑堟伅鐨勪富閿�
+        /// </summary>
+        private List<string> listOtherId = new List<string>();
 
         #endregion
 
@@ -50,8 +55,8 @@
         /// </summary>
         /// <param name="i_DeviceMac">闂ㄩ攣鐨凪ac鍦板潃</param>
         public void ShowForm(string i_DeviceMac)
-        {
-            this.DeviceMac = i_DeviceMac;
+        {
+            this.DeviceDoor = Common.LocalDevice.Current.GetDevicesByMac(i_DeviceMac, false)[0];
 
             //璁剧疆澶撮儴淇℃伅
             base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uHistoryLog));
@@ -63,11 +68,11 @@
             btnDelete.InitControl();
             btnDelete.ButtonClickEvent += (sender, e) =>
             {
-                var form = new TopRightMenuControl(1, 449);
+                var form = new TopRightMenuControl(1, 2);
                 //娓呯┖璁板綍
                 form.AddRowMenu(Language.StringByID(R.MyInternationalizationString.uClearLog), "Item/DeleteIcon2.png", "Item/DeleteIcon2Selected.png", () =>
                 {
-                    if (this.listView.ChildrenCount == 0)
+                    if (this.listView.frameTable.ChildrenCount == 0)
                     {
                         //鏃犳暟鎹彲鍒�
                         return;
@@ -94,15 +99,10 @@
             this.ClearBodyFrame();
 
             //鍒濆鍖栧ご閮ㄦ绱㈡帶浠�
-            this.InitTitleSearchControl();
-
-            //涓荤嚎绋嬬殑寮傛浼氶樆濉炰富绾跨▼,瀵艰嚧鐣岄潰鏈夋鏃堕棿浼氱櫧灞�,鎵�浠ヨ繖鏍峰瓙璁╃晫闈㈠厛鍑烘潵
-            //鐒跺悗鍐嶅埛鏂版暟鎹�
-            HdlThreadLogic.Current.RunMainInThread(() =>
-            {
-                //鍒濆鍖栬褰曞垪琛�
-                this.InitLogListInfo();
-            });
+            this.InitTitleSearchControl();
+
+            //鍒濆鍖栬褰曞垪琛�
+            this.InitLogListInfo();
         }
 
         /// <summary>
@@ -173,11 +173,16 @@
             //搴曠嚎
             frameTitle.AddBottomLine();
 
-            this.listView = new VerticalListControl(29);
+            this.listView = new VerticalFrameRefreshControl(29);
             listView.Y = frameTitle.Bottom - Application.GetRealHeight(3);
-            listView.BackgroundColor = UserCenterColor.Current.White;
             listView.Height = bodyFrameLayout.Height - frameTitle.Bottom + Application.GetRealHeight(3);
             bodyFrameLayout.AddChidren(listView);
+            listView.frameTable.BackgroundColor = UserCenterColor.Current.White;
+            listView.BeginHeaderRefreshingAction += () =>
+            {
+                //涓嬫媺鍒锋柊
+                this.InitLogListInfo();
+            };
         }
 
         #endregion
@@ -187,10 +192,10 @@
         /// <summary>
         /// 鍒濆鍖栬褰曞垪琛�
         /// </summary>
-        private async void InitLogListInfo()
+        private void InitLogListInfo()
         {
-            this.listView.RemoveAll();
-            listView.Height = bodyFrameLayout.Height - Application.GetRealHeight(115 - 3);
+            this.listView.frameTable.RemoveAll();
+            listView.frameTable.Height = bodyFrameLayout.Height - Application.GetRealHeight(115 - 3);
 
             //濡傛灉From>To鐨勬椂鍊欙紝涓嶉笩瀹�
             if (Convert.ToInt32(dateFromControl.dateValue) > Convert.ToInt32(dateToControl.dateValue))
@@ -199,51 +204,52 @@
                 this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.uFromTimeIsOverToTime));
                 return;
             }
-            //鎵撳紑杩涘害鏉�
-            this.ShowProgressBar();
-            //鎴愬憳鍒楄〃
-            var result = await this.GetMemberListInfo();
-            if (result == false)
+            HdlThreadLogic.Current.RunThread(async () =>
             {
+                //鎵撳紑杩涘害鏉�
+                this.ShowProgressBar();
+                //鎴愬憳鍒楄〃
+                var result = await this.GetMemberListInfo();
+                if (result == false)
+                {
+                    //鍏抽棴杩涘害鏉�
+                    this.CloseProgressBar(ShowReLoadMode.YES);
+                    return;
+                }
+                //鍘嗗彶璁板綍
+                var historyLog = await this.GetHistoryLogInfo();
+                if (historyLog == null)
+                {
+                    //鍏抽棴杩涘害鏉�
+                    this.CloseProgressBar(ShowReLoadMode.YES);
+                    return;
+                }
                 //鍏抽棴杩涘害鏉�
-                this.CloseProgressBar(ShowReLoadMode.YES);
-                return;
-            }
-            //鍘嗗彶璁板綍
-            var historyLog = await this.GetHistoryLogInf();
-            if (historyLog == null)
-            {
-                //鍏抽棴杩涘害鏉�
-                this.CloseProgressBar(ShowReLoadMode.YES);
-                return;
-            }
-            //鍏抽棴杩涘害鏉�
-            this.CloseProgressBar();
+                this.CloseProgressBar();
 
-            var dic = new Dictionary<string, string>();
-            for (int i = 0; i < listMenberInfo.Count; i++)
-            {
-                dic.Add(listMenberInfo[i].SubAccountDistributedMark, string.IsNullOrEmpty(listMenberInfo[i].UserName) == false ? listMenberInfo[i].UserName : listMenberInfo[i].Account);
-            }
-            for (int i = 0; i < historyLog.Count; i++)
-            {
-                //娣诲姞璁板綍琛�
-                this.AddLogInfoRow(historyLog[i], dic, i != historyLog.Count - 1);
-            }
+                var dic = new Dictionary<string, string>();
+                for (int i = 0; i < listMenberInfo.Count; i++)
+                {
+                    dic.Add(listMenberInfo[i].SubAccountDistributedMark, string.IsNullOrEmpty(listMenberInfo[i].UserName) == false ? listMenberInfo[i].UserName : listMenberInfo[i].Account);
+                }
+                HdlThreadLogic.Current.RunMain(() =>
+                {
+                    for (int i = 0; i < historyLog.Count; i++)
+                    {
+                        //娣诲姞璁板綍琛�
+                        this.AddLogInfoRow(historyLog[i], dic, i != historyLog.Count - 1);
+                    }
+                    //闅愯棌涓嬫媺鍒锋柊鐗规晥
+                    listView.EndHeaderRefreshing();
 
-            if (listView.ChildrenCount == 0)
-            {
-                return;
-            }
-
-            //璋冩暣鍒楄〃鎺т欢鐨勯珮搴�
-            var realHeight = listView.ChildrenCount * listView.GetChildren(0).Height;
-            realHeight += Application.GetRealHeight(23 + 3);
-            if (realHeight < listView.Height)
-            {
-                //缂╁皬鎺т欢楂樺害
-                listView.Height = realHeight;
-            }
+                    if (listView.frameTable.ChildrenCount == 0)
+                    {
+                        return;
+                    }
+                    //璋冩暣鍒楄〃鎺т欢鐨勯珮搴�
+                    listView.AdjustTableHeight(Application.GetRealHeight(23));
+                });
+            });
         }
 
         /// <summary>
@@ -306,10 +312,23 @@
         {
             var frameTable = new FrameRowControl(listView.rowSpace / 2);
             frameTable.UseClickStatu = false;
-            this.listView.AddChidren(frameTable);
+            this.listView.AddChidrenFrame2(frameTable);
             //鍥炬爣
             var btnIcon = frameTable.AddLeftIcon();
-            if (historyInfo.UnlockIsSuccess == true)
+            if (historyInfo.OpenLockMode == -1)
+            {
+                //鍏朵粬娑堟伅
+                var device = Common.LocalDevice.Current.GetDevice(historyInfo.DeviceMac, historyInfo.DeviceEpoint);
+                if (device == null)
+                {
+                    btnIcon.UnSelectedImagePath = "Device/IntelligentLocks.png";
+                }
+                else
+                {
+                    Common.LocalDevice.Current.SetDeviceIconToControl(btnIcon, device);
+                }
+            }
+            else if (historyInfo.UnlockIsSuccess == true)
             {
                 btnIcon.UnSelectedImagePath = "Item/UnLockSuccess.png";
             }
@@ -324,7 +343,12 @@
             //杩欎釜鍧愭爣鏈夌偣鐗规畩
             btnMsg.Y = Application.GetRealHeight(12) + frameTable.chidrenYaxis;
             frameTable.AddChidren(btnMsg, ChidrenBindMode.NotBind);
-            if (historyInfo.UnlockIsSuccess == true)
+            if (historyInfo.OpenLockMode == -1)
+            {
+                //鍏朵粬娑堟伅
+                btnMsg.Text = historyInfo.AlarmMsg;
+            }
+            else if (historyInfo.UnlockIsSuccess == true)
             {
                 if (historyInfo.OpenLockMode == 0)
                 {
@@ -371,7 +395,7 @@
             frameTable.AddChidren(btnpersion, ChidrenBindMode.NotBind);
 
             //鏃堕棿
-            frameTable.AddMostRightView(historyInfo.UnlockTime, 400);
+            frameTable.AddMostRightView(Convert.ToDateTime(historyInfo.UnlockTime).ToString("HH:mm:ss"), 400);
             if (addLine == true)
             {
                 //搴曠嚎
@@ -415,7 +439,7 @@
         /// 鑾峰彇鍘嗗彶璁板綍
         /// </summary>
         /// <returns></returns>
-        private async Task<List<HistoryInfo>> GetHistoryLogInf()
+        private async Task<List<HistoryInfo>> GetHistoryLogInfo()
         {
             //鑾峰彇璁块棶浜戠鎺ュ彛鐨勫惎鍔ㄥ弬鏁�
             var pra = this.GetDbInterfacePra();
@@ -431,6 +455,7 @@
                     return null;
                 }
                 var dataInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<GetHistoryDataResult>(result);
+                listLog.AddRange(dataInfo.PageData);
                 if (dataInfo.HasNextPage == false)
                 {
                     break;
@@ -443,8 +468,45 @@
             //鎺掑簭涓�涓�
             var dic = new Dictionary<string, List<HistoryInfo>>();
             var listSort = new List<string>();
+            //娓呯┖涓婁竴娆$殑鍏朵粬ID
+            this.listOtherId = new List<string>();
             //鏄惁鍖呭惈鍏朵粬
             bool flage = this.listSearchUserId.Contains("") || this.listSearchUserId.Contains("-1");
+            if (flage == true)
+            {
+                //鍘昏幏鍙栧叾浠栦俊鎭�
+                var pra2 = new MessageInfoPra();
+                pra2.Topic = "/Alarms/SendAlarmInform";
+                pra2.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
+                var result = await UserCenterLogic.GetResponseDataByRequestHttps("MessageCenter/GetMessageCenterPagger", true, pra2);
+                if (result == null)
+                {
+                    return null;
+                }
+                var dataInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<MessageCentetInfo>(result);
+                foreach (var myInfo in dataInfo.PageData)
+                {
+                    var data = new HistoryInfo();
+                    if (dic.ContainsKey(myInfo.CreatedOnUtc) == false)
+                    {
+                        dic[myInfo.CreatedOnUtc] = new List<HistoryInfo>();
+                        listSort.Add(myInfo.CreatedOnUtc);
+                    }
+                  
+                    //璁惧瀵硅薄
+                    var jobject = Newtonsoft.Json.Linq.JObject.Parse(myInfo.PayloadJson);
+                    data.DeviceMac = jobject.Value<string>("DeviceAddr");
+                    data.DeviceEpoint = jobject.Value<int>("Epoint");
+                    //娑堟伅
+                    var msgInfo = HdlAlarmsLogic.Current.GetDoorLockAlarmInfo(jobject);
+                    data.AlarmMsg = msgInfo != null ? msgInfo.AlarmMsg : Language.StringByID(R.MyInternationalizationString.uDoorLocksAlarmHadTriggered);
+                    dic[myInfo.CreatedOnUtc].Add(data);
+                    //鏃堕棿
+                    data.UnlockTime = myInfo.CreatedOnUtc;
+
+                    this.listOtherId.Add(myInfo.Id);
+                }
+            }
             foreach (var data in listLog)
             {
                 if (flage == false && string.IsNullOrEmpty(data.CloudAccountId) == true)
@@ -485,14 +547,37 @@
             //鎵撳紑杩涘害鏉�
             this.ShowProgressBar();
             var result = await UserCenterLogic.GetResultStatuByRequestHttps("DoorLock/ClearDoorLockHistory", true, pra);
+            if (result == false)
+            {
+                return;
+            }
+
+            //鍒犻櫎鍏朵粬娑堟伅
+            if (listOtherId.Count > 0)
+            {
+                var pra2 = new MessageReadStatuPra();
+                pra2.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
+                for (int i = 0; i < listOtherId.Count; i++)
+                {
+                    pra2.Id = listOtherId[i];
+                    result = await UserCenterLogic.GetResultStatuByRequestHttps("MessageCenter/DelMessageCenterItem", true, pra);
+                    if (result == false)
+                    {
+                        return;
+                    }
+                }
+            }
             //鍏抽棴杩涘害鏉�
             this.CloseProgressBar();
             if (result == false)
             {
                 return;
             }
-            this.listView.RemoveAll();
-            listView.Height = bodyFrameLayout.Height - Application.GetRealHeight(115 - 3);
+            this.listView.frameTable.RemoveAll();
+            listView.frameTable.Height = bodyFrameLayout.Height - Application.GetRealHeight(115 - 3);
+
+            //娓呯┖
+            this.listOtherId = new List<string>();
         }
 
         #endregion
@@ -510,7 +595,13 @@
 
             //鍏ㄩ�夊垯涓簄ull
             List<string> listUser = null;
-            if (listSearchUserId.Contains("-1") == false)
+            if (listSearchUserId.Count == 1 && listSearchUserId[0] == "")
+            {
+                //濡傛灉鍗曠函鐨勫彧鏄�夋嫨鍏朵粬,鍒欒妫�绱㈡潯浠朵笉鎴愮珛鍗冲彲
+                listUser = new List<string>();
+                listUser.Add("鍏朵粬");
+            }
+            else if (listSearchUserId.Contains("-1") == false)
             {
                 listUser = new List<string>();
                 listUser.AddRange(listSearchUserId);
@@ -528,11 +619,11 @@
 
             var pra = new GetHistoryDataPra();
             pra.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
-            pra.DoorLockId = this.DeviceMac;
+            pra.DoorLockId = this.DeviceDoor.DeviceAddr + "_" + this.DeviceDoor.DeviceEpoint;
             pra.CloudAccountIdArr = listUser;
             pra.OpenLockModeArr = listLock;
-            pra.UnlockTimeBegin = dateFrom;
-            pra.UnlockTimeEnd = dateTo;
+            pra.UnlockTimeBegin = dateFrom.ToString();
+            pra.UnlockTimeEnd = dateTo.ToString();
             return pra;
         }
 
@@ -576,11 +667,11 @@
             /// <summary>
             /// 鎼滅储寮�閿佸紑濮嬫椂闂�
             /// </summary>
-            public DateTime UnlockTimeBegin;
+            public string UnlockTimeBegin;
             /// <summary>
             /// 鎼滅储寮�閿佺粨鏉熸椂闂�
             /// </summary>
-            public DateTime UnlockTimeEnd;
+            public string UnlockTimeEnd;
             /// <summary>
             /// 椤垫暟
             /// </summary>
@@ -623,6 +714,18 @@
             /// 璐﹀彿鐨処D
             /// </summary>
             public string CloudAccountId = string.Empty;
+            /// <summary>
+            /// 褰撳紑閿佹柟寮忎负-1鏃朵娇鐢�,瀹冨睘浜庡叾浠栫被
+            /// </summary>
+            public string AlarmMsg = string.Empty;
+            /// <summary>
+            /// 褰撳紑閿佹柟寮忎负-1鏃朵娇鐢�,璁惧Mac
+            /// </summary>
+            public string DeviceMac = string.Empty;
+            /// <summary>
+            /// 褰撳紑閿佹柟寮忎负-1鏃朵娇鐢�,璁惧绔偣
+            /// </summary>
+            public int DeviceEpoint = 0;
         }
 
         #endregion
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelBackLightSettionForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelBackLightSettionForm.cs
index 411e2f3..1058c0e 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelBackLightSettionForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelBackLightSettionForm.cs
@@ -303,7 +303,7 @@
             seekBar1.ProgressBarColor = backColor;
 
             var btnRight = new NormalViewControl(Application.GetMinRealAverage(58), Application.GetMinRealAverage(58), false);
-            btnRight.UnSelectedImagePath = "Item/Next.png";
+            btnRight.UnSelectedImagePath = "Item/RightNext.png";
             btnRight.Y = Application.GetRealHeight(5);
             btnRight.X = frameColor.Width - Application.GetMinRealAverage(58);
             frameColor.AddChidren(btnRight, ChidrenBindMode.BindEventOnly);
@@ -440,7 +440,7 @@
             seekBar1.ProgressBarColor = backColor;
 
             var btnRight = new NormalViewControl(Application.GetMinRealAverage(58), Application.GetMinRealAverage(58), false);
-            btnRight.UnSelectedImagePath = "Item/Next.png";
+            btnRight.UnSelectedImagePath = "Item/RightNext.png";
             btnRight.Y = Application.GetRealHeight(5);
             btnRight.X = frameColor.Width - Application.GetMinRealAverage(58);
             frameColor.AddChidren(btnRight, ChidrenBindMode.BindEventOnly);
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelButtonSettionForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelButtonSettionForm.cs
index b67b23e..a948e82 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelButtonSettionForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelButtonSettionForm.cs
@@ -213,7 +213,7 @@
             //{
             //    menuCount = 2;
             //}
-            var frame = new TopRightMenuControl(menuCount);
+            var frame = new TopRightMenuControl(menuCount, 1);
             if (canTest == true)
             {
                 //瀹氫綅
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFunctionSettionForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFunctionSettionForm.cs
index 6ae3938..cbbce46 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFunctionSettionForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFunctionSettionForm.cs
@@ -243,7 +243,7 @@
             //{
             //    menuCount = 2;
             //}
-            var frame = new TopRightMenuControl(menuCount);
+            var frame = new TopRightMenuControl(menuCount, 1);
             if (canTest == true)
             {
                 //瀹氫綅
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/PirSensor/PirSensorBindTargetSettionForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/PirSensor/PirSensorBindTargetSettionForm.cs
index f7bffe6..97d0d56 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Device/PirSensor/PirSensorBindTargetSettionForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/PirSensor/PirSensorBindTargetSettionForm.cs
@@ -107,7 +107,7 @@
             var btnIfRinght = frameIfRow.AddMostRightEmptyIcon(58, 58);
             frameIfRow.ChangedChidrenBindMode(btnIfRinght, ChidrenBindMode.NotBind);
             btnIfRinght.UseClickStatu = false;
-            btnIfRinght.UnSelectedImagePath = "Item/Next.png";
+            btnIfRinght.UnSelectedImagePath = "Item/RightNext.png";
             btnIfRinght.SelectedImagePath = "Item/Down.png";
             btnIfRinght.IsSelected = true;
             btnIfRinght.ButtonClickEvent += (sender, e) =>
@@ -180,7 +180,7 @@
             var btnResultRight = frameDo.AddMostRightEmptyIcon(58, 58);
             frameDo.ChangedChidrenBindMode(btnResultRight, ChidrenBindMode.NotBind);
             btnResultRight.UseClickStatu = false;
-            btnResultRight.UnSelectedImagePath = "Item/Next.png";
+            btnResultRight.UnSelectedImagePath = "Item/RightNext.png";
             btnResultRight.SelectedImagePath = "Item/Down.png";
             btnResultRight.IsSelected = true;
             btnResultRight.ButtonClickEvent += (sender, e) =>
@@ -440,7 +440,7 @@
             if (listOldData[0] != Lightconfigure.levelSize || listOldData[1] != Lightconfigure.transitionTime)
             {
                 //淇濆瓨鐏厜閰嶇疆
-                var result = await HdlDevicePirSensorLogic.Current.SetPirSensorLightSettion(this.deviceIASZone, this.Lightconfigure);
+                var result = await HdlDevicePirSensorLogic.Current.SetPirSensorSettion(this.deviceIASZone, this.Lightconfigure);
                 if (result == false)
                 {
                     //鍏抽棴杩涘害鏉�
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/PirSensor/PirSensorDimmingModeForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/PirSensor/PirSensorDimmingModeForm.cs
new file mode 100755
index 0000000..ec653ee
--- /dev/null
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/PirSensor/PirSensorDimmingModeForm.cs
@@ -0,0 +1,180 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Shared.Phone.UserCenter.DevicePirSensor
+{
+    /// <summary>
+    /// pir浼犳劅鍣ㄧ殑璋冨厜妯″紡鐨勯厤缃晫闈�
+    /// </summary>
+    public class PirSensorDimmingModeForm : EditorCommonForm
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
+        /// </summary>
+        public void ShowForm()
+        {
+            //璁剧疆澶撮儴淇℃伅
+            base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uDimmingMode));
+
+            //鍒濆鍖栦腑閮ㄤ俊鎭�
+            this.InitMiddleFrame();
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栦腑閮ㄤ俊鎭�
+        /// </summary>
+        private void InitMiddleFrame()
+        {
+            //娓呯┖bodyFrame
+            this.ClearBodyFrame();
+
+            var frameBack = new FrameLayout();
+            frameBack.Height = Application.GetRealHeight(11);
+            frameBack.BackgroundColor = UserCenterColor.Current.White;
+            bodyFrameLayout.AddChidren(frameBack);
+
+            var listView = new VerticalListControl(12);
+            listView.Height = Application.GetRealHeight(700);
+            listView.Y = frameBack.Bottom;
+            listView.BackgroundColor = UserCenterColor.Current.White;
+            bodyFrameLayout.AddChidren(listView);
+
+            //娣诲姞寮�鐏寒搴﹁
+            this.AddTurnOnBrightnessRow(listView);
+
+            //娣诲姞鎱㈠惎鍔ㄨ
+            this.AddSlowStartupRow(listView);
+
+            //娣诲姞鎱㈠叧闂
+            this.AddSlowCloseRow(listView);
+
+            //璋冩暣楂樺害
+            listView.AdjustRealHeight(Application.GetRealHeight(23));
+
+            //淇濆瓨
+            var btnSave = new BottomClickButton();
+            btnSave.TextID = R.MyInternationalizationString.uSave;
+            bodyFrameLayout.AddChidren(btnSave);
+            btnSave.ButtonClickEvent += (sender, e) =>
+            {
+            };
+        }
+
+        #endregion
+
+        #region 鈻� 寮�鐏寒搴__________________________
+
+        /// <summary>
+        /// 娣诲姞寮�鐏寒搴﹁
+        /// </summary>
+        /// <param name="listView"></param>
+        private void AddTurnOnBrightnessRow(VerticalListControl listView)
+        {
+            var listSelect = new List<string>();
+            for (int i = 10; i <= 100; i += 10)
+            {
+                listSelect.Add(i + "%");
+            }
+
+            //寮�鐏寒搴�
+            var row1 = new FrameRowControl(listView.rowSpace / 2);
+            listView.AddChidren(row1);
+            var btnCaption1 = row1.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uTurnOnBrightness), 400);
+            btnCaption1.TextSize = 15;
+            row1.AddRightArrow();
+            var btnStatu = row1.AddMostRightView("", 400);
+            row1.AddBottomLine();
+            row1.ButtonClickEvent += (sender, e) =>
+            {
+                PickerView.Show(listSelect, (value) =>
+                {
+                    btnStatu.Text = listSelect[value];
+
+                }, 0, Language.StringByID(R.MyInternationalizationString.uBrightness),
+                Language.StringByID(R.MyInternationalizationString.uFinish),
+                Language.StringByID(R.MyInternationalizationString.uCancel));
+            };
+        }
+
+        #endregion
+
+        #region 鈻� 鎱㈠惎鍔╛____________________________
+
+        /// <summary>
+        /// 娣诲姞鎱㈠惎鍔ㄨ
+        /// </summary>
+        /// <param name="listView"></param>
+        private void AddSlowStartupRow(VerticalListControl listView)
+        {
+            var listTime = new List<string>();
+            var miao = Language.StringByID(R.MyInternationalizationString.uSecond);
+            for (int i = 0; i <= 10; i++)
+            {
+                listTime.Add(i + miao);
+            }
+
+            //鎱㈠惎鍔�
+            var row2 = new FrameRowControl(listView.rowSpace / 2);
+            listView.AddChidren(row2);
+            var btnCaption2 = row2.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uSlowStartup), 400);
+            btnCaption2.TextSize = 15;
+            row2.AddRightArrow();
+            var btnStatu2 = row2.AddMostRightView("", 400);
+            row2.AddBottomLine();
+            row2.ButtonClickEvent += (sender, e) =>
+            {
+                PickerView.Show(listTime, (value) =>
+                {
+                    btnStatu2.Text = listTime[value];
+
+                }, 0, btnCaption2.Text,
+                Language.StringByID(R.MyInternationalizationString.uFinish),
+                Language.StringByID(R.MyInternationalizationString.uCancel));
+            };
+        }
+
+        #endregion
+
+        #region 鈻� 鎱㈠叧闂璤____________________________
+
+        /// <summary>
+        /// 娣诲姞鎱㈠叧闂
+        /// </summary>
+        /// <param name="listView"></param>
+        private void AddSlowCloseRow(VerticalListControl listView)
+        {
+            var listTime = new List<string>();
+            var miao = Language.StringByID(R.MyInternationalizationString.uSecond);
+            for (int i = 0; i <= 10; i++)
+            {
+                listTime.Add(i + miao);
+            }
+            //鎱㈠叧闂�
+            var row3 = new FrameRowControl(listView.rowSpace / 2);
+            listView.AddChidren(row3);
+            var btnCaption3 = row3.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uSlowClose), 400);
+            btnCaption3.TextSize = 15;
+            row3.AddRightArrow();
+            var btnStatu3 = row3.AddMostRightView("", 400);
+            row3.ButtonClickEvent += (sender, e) =>
+            {
+                PickerView.Show(listTime, (value) =>
+                {
+                    btnStatu3.Text = listTime[value];
+
+                }, 0, btnCaption3.Text,
+                Language.StringByID(R.MyInternationalizationString.uFinish),
+                Language.StringByID(R.MyInternationalizationString.uCancel));
+            };
+        }
+
+        #endregion
+    }
+}
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/PirSensor/PirSensorTargetSelectForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/PirSensor/PirSensorTargetSelectForm.cs
index 27c3faf..53f7d21 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Device/PirSensor/PirSensorTargetSelectForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/PirSensor/PirSensorTargetSelectForm.cs
@@ -200,7 +200,7 @@
             btnIconContr.ButtonClickEvent += (sender, e) =>
             {
                 //妤煎眰鑿滃崟
-                var contr = new TopRightMenuControl(dicFloor.Count, 449, Language.StringByID(R.MyInternationalizationString.SelectFloor));
+                var contr = new TopRightMenuControl(dicFloor.Count, 2, Language.StringByID(R.MyInternationalizationString.SelectFloor));
                 foreach (var floorId in dicFloor.Keys)
                 {
                     contr.AddRowMenu(dicFloor[floorId], "Floor/Floor.png", "Floor/FloorSelected.png", () =>
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/PirSensor/PirSensorWorkModeMenuForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/PirSensor/PirSensorWorkModeMenuForm.cs
new file mode 100755
index 0000000..b097cc1
--- /dev/null
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/PirSensor/PirSensorWorkModeMenuForm.cs
@@ -0,0 +1,287 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Text;
+using System.Threading.Tasks;
+using ZigBee.Device;
+
+namespace Shared.Phone.UserCenter.DevicePirSensor
+{
+    /// <summary>
+    /// pir浼犳劅鍣ㄧ殑宸ヤ綔妯″紡鐨勮彍鍗曠晫闈�
+    /// </summary>
+    public class PirSensorWorkModeMenuForm : EditorCommonForm
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// pir浼犳劅鍣ㄥ璞�
+        /// </summary>
+        private IASZone iASZone = null;
+        /// <summary>
+        /// 浼犳劅鍣ㄧ殑閰嶇疆淇℃伅
+        /// </summary>
+        private IASZone.ConfigureParamates pirConfigure = null;
+        /// <summary>
+        /// 鏁版嵁鏄惁鏇存敼
+        /// </summary>
+        private bool isDataChanged = false;
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
+        /// </summary>
+        /// <param name="i_iASZone">pir浼犳劅鍣�</param>
+        public void ShowForm(IASZone i_iASZone)
+        {
+            this.iASZone = i_iASZone;
+
+            //璁剧疆澶撮儴淇℃伅
+            base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uWorkMode));
+
+            HdlThreadLogic.Current.RunThread(async () =>
+            {
+                //鑾峰彇鍒濆鏁版嵁
+                var result = await this.GetDeviceAllDefultData();
+                if (result == false)
+                {
+                    return;
+                }
+                HdlThreadLogic.Current.RunMain(() =>
+                {
+                    //鍒濆鍖栦腑閮ㄤ俊鎭�
+                    this.InitMiddleFrame();
+                });
+            });
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栦腑閮ㄤ俊鎭�
+        /// </summary>
+        private void InitMiddleFrame()
+        {
+            var frameBack = new FrameLayout();
+            frameBack.Height = Application.GetRealHeight(11);
+            frameBack.BackgroundColor = UserCenterColor.Current.White;
+            bodyFrameLayout.AddChidren(frameBack);
+
+            var listView = new VerticalListControl(12);
+            listView.Height = Application.GetRealHeight(700);
+            listView.Y = frameBack.Bottom;
+            listView.BackgroundColor = UserCenterColor.Current.White;
+            bodyFrameLayout.AddChidren(listView);
+
+            //娣诲姞鎺у埗妯″紡琛�
+            this.AddControlModeRow(listView);
+
+            //娣诲姞瑙﹀彂妯″紡琛�
+            this.AddTriggerModeRow(listView);
+
+            //娣诲姞涓婃姤闂撮殧琛�
+            this.AddReportTimeSpaceRow(listView);
+
+            //璋冩暣楂樺害
+            listView.AdjustRealHeight(Application.GetRealHeight(23));
+
+            //淇濆瓨
+            var btnSave = new BottomClickButton();
+            btnSave.TextID = R.MyInternationalizationString.uSave;
+            bodyFrameLayout.AddChidren(btnSave);
+            btnSave.ButtonClickEvent += (sender, e) =>
+            {
+                if (this.isDataChanged == false)
+                {
+                    //鏁版嵁娌℃湁鍙樻洿杩�,鍏抽棴鐣岄潰
+                    this.CloseForm();
+                    return;
+                }
+                HdlThreadLogic.Current.RunThread(() =>
+                {
+                    //淇濆瓨Pir浼犳劅鍣ㄦ暟鎹�
+                    this.SavePirSensorData();
+                });
+            };
+        }
+
+        #endregion
+
+        #region 鈻� 鎺у埗妯″紡___________________________
+
+        /// <summary>
+        /// 娣诲姞鎺у埗妯″紡琛�
+        /// </summary>
+        /// <param name="listView"></param>
+        private void AddControlModeRow(VerticalListControl listView)
+        {
+            var listSelect = new List<string>();
+            //鍏ㄨ嚜鍔ㄦā寮�
+            listSelect.Add(Language.StringByID(R.MyInternationalizationString.uFullAutoMode));
+            //鍗婅嚜鍔ㄦā寮�
+            listSelect.Add(Language.StringByID(R.MyInternationalizationString.uHafeAutoMode));
+
+            //鎺у埗妯″紡
+            var row1 = new FrameRowControl(listView.rowSpace / 2);
+            listView.AddChidren(row1);
+            var btnCaption1 = row1.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uControlMode), 400);
+            btnCaption1.TextSize = 15;
+            row1.AddRightArrow();
+            var btnStatu = row1.AddMostRightView(this.pirConfigure.mode == 0 ? listSelect[1] : listSelect[0], 400);
+            row1.AddBottomLine();
+            row1.ButtonClickEvent += (sender, e) =>
+            {
+                var form = new BottomItemSelectForm();
+                form.AddForm(btnCaption1.Text, listSelect, this.pirConfigure.mode == 0 ? 1 : 0);
+                form.FinishSelectEvent += (value) =>
+                {
+                    this.isDataChanged = true;
+
+                    btnStatu.Text = listSelect[value];
+                    this.pirConfigure.mode = value == 0 ? 1 : 0;
+                };
+            };
+        }
+
+        #endregion
+
+        #region 鈻� 瑙﹀彂妯″紡___________________________
+
+        /// <summary>
+        /// 娣诲姞瑙﹀彂妯″紡琛�
+        /// </summary>
+        /// <param name="listView"></param>
+        private void AddTriggerModeRow(VerticalListControl listView)
+        {
+            var listSelect = new List<string>();
+            //璋冨厜妯″紡
+            listSelect.Add(Language.StringByID(R.MyInternationalizationString.uDimmingMode));
+            //寮�鍏虫ā寮�
+            listSelect.Add(Language.StringByID(R.MyInternationalizationString.uSwitchMode));
+
+            //瑙﹀彂妯″紡
+            var row2 = new FrameRowControl(listView.rowSpace / 2);
+            listView.AddChidren(row2);
+            var btnCaption2 = row2.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uTriggerMode), 400);
+            btnCaption2.TextSize = 15;
+            row2.AddRightArrow();
+            var btnStatu2 = row2.AddMostRightView(this.pirConfigure.type == 0 ? listSelect[0] : listSelect[1], 400);
+            row2.AddBottomLine();
+            row2.ButtonClickEvent += (sender, e) =>
+            {
+                var form = new BottomItemSelectForm();
+                form.AddForm(btnCaption2.Text, listSelect, this.pirConfigure.type);
+                form.FinishSelectEvent += (value) =>
+                {
+                    this.isDataChanged = true;
+                    btnStatu2.Text = listSelect[value];
+
+                    this.pirConfigure.type = value;
+                    //濡傛灉鏄皟鍏夋ā寮�,鍒欒繘鍏ヤ笅涓�涓晫闈�
+                    if (value == 0)
+                    {
+                        var form2 = new PirSensorDimmingModeForm();
+                        form2.AddForm(pirConfigure);
+                    }
+                };
+            };
+        }
+
+        #endregion
+
+        #region 鈻� 涓婃姤闂撮殧___________________________
+
+        /// <summary>
+        /// 娣诲姞涓婃姤闂撮殧琛�
+        /// </summary>
+        /// <param name="listView"></param>
+        private void AddReportTimeSpaceRow(VerticalListControl listView)
+        {
+            var listTime = new List<string>();
+            var miao = Language.StringByID(R.MyInternationalizationString.uSecond);
+            for (int i = 10; i <= 300; i += 5)
+            {
+                listTime.Add(i + miao);
+            }
+            //璁╁畠澶勪簬5鐨勬暣鍊嶆暟
+            this.pirConfigure.iasReportPeriod = (this.pirConfigure.iasReportPeriod / 5) * 5;
+
+            //涓婃姤闂撮殧
+            var row3 = new FrameRowControl(listView.rowSpace / 2);
+            listView.AddChidren(row3);
+            var btnCaption3 = row3.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uReportTimeSpace), 400);
+            btnCaption3.TextSize = 15;
+            row3.AddRightArrow();
+            var btnStatu3 = row3.AddMostRightView(this.pirConfigure.iasReportPeriod + miao, 400);
+            row3.ButtonClickEvent += (sender, e) =>
+            {
+                PickerView.Show(listTime, (value) =>
+                {
+                    this.isDataChanged = true;
+
+                    btnStatu3.Text = listTime[value];
+                    this.pirConfigure.iasReportPeriod = Convert.ToInt32(listTime[value].Replace(miao, string.Empty));
+
+                }, 0, btnCaption3.Text,
+                Language.StringByID(R.MyInternationalizationString.uFinish),
+                Language.StringByID(R.MyInternationalizationString.uCancel));
+            };
+        }
+
+        #endregion
+
+        #region 鈻� 鑾峰彇鍒濆鏁版嵁_______________________
+
+        /// <summary>
+        /// 鑾峰彇鍒濆鏁版嵁
+        /// </summary>
+        /// <returns></returns>
+        private async Task<bool> GetDeviceAllDefultData()
+        {
+            //鎵撳紑杩涘害鏉�
+            this.ShowProgressBar();
+           
+            //鑾峰彇鐏厜鐨勯厤缃俊鎭�
+            this.pirConfigure = await HdlDevicePirSensorLogic.Current.GetPirSensorLightSettion(this.iASZone);
+            if (pirConfigure == null)
+            {
+                //鍏抽棴杩涘害鏉�
+                this.CloseProgressBar(ShowReLoadMode.YES);
+                return false;
+            }
+            //鍏抽棴杩涘害鏉�
+            this.CloseProgressBar();
+
+            return true;
+        }
+
+        #endregion
+
+        #region 鈻� 鏁版嵁淇濆瓨___________________________
+
+        /// <summary>
+        /// 淇濆瓨Pir浼犳劅鍣ㄦ暟鎹�
+        /// </summary>
+        private async void SavePirSensorData()
+        {
+            //鎵撳紑杩涘害鏉�
+            this.ShowProgressBar();
+            //淇濆瓨閰嶇疆淇℃伅
+            var result = await HdlDevicePirSensorLogic.Current.SetPirSensorSettion(this.iASZone, this.pirConfigure);
+
+            //鍏抽棴杩涘害鏉�
+            this.CloseProgressBar();
+
+            if (result == true)
+            {
+                HdlThreadLogic.Current.RunMain(() =>
+                {
+                    //鐣岄潰鍏抽棴
+                    this.CloseForm();
+                });
+            }
+        }
+
+        #endregion
+    }
+}
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/AddUnLockMethod.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/AddUnLockMethod.cs
index 69ed5cb..26284d3 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/AddUnLockMethod.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/AddUnLockMethod.cs
@@ -62,6 +62,7 @@
                     TextAlignment = TextAlignment.CenterLeft,
                     TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
                     Gravity = Gravity.CenterVertical,
+                    TextSize=14,
                 };
                 RowView.AddChidren(btnText);
 
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/AddUnLockMethodTip.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/AddUnLockMethodTip.cs
index 5a82b3d..d9adbb7 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/AddUnLockMethodTip.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/AddUnLockMethodTip.cs
@@ -85,9 +85,9 @@
             {
                 X = Application.GetRealWidth(446),
                 Y = Application.GetRealHeight(330),
-                Height = Application.GetRealHeight(81 / 2),
+                Height = Application.GetRealHeight(76 / 2),
                 Width = Application.GetRealWidth(407),
-                TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
+                TextColor = Shared.Common.ZigbeeColor.Current.XMGray2,
                 TextSize = 10,
                 TextAlignment = TextAlignment.CenterLeft,
             };
@@ -97,9 +97,9 @@
             {
                 X = Application.GetRealWidth(446),
                 Y = btnPicTip1.Bottom,
-                Height = Application.GetRealHeight(81 / 2),
+                Height = Application.GetRealHeight(76 / 2),
                 Width = Application.GetRealWidth(207),
-                TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
+                TextColor = Shared.Common.ZigbeeColor.Current.XMGray2,
                 TextSize = 10,
                 TextAlignment = TextAlignment.CenterLeft,
             };
@@ -109,9 +109,9 @@
             {
                 X = Application.GetRealWidth(294),
                 Y = Application.GetRealHeight(1089),
-                Height = Application.GetRealHeight(173 / 2),
+                Height = Application.GetRealHeight(100 / 2),
                 Width = Application.GetRealWidth(488),
-                TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
+                TextColor = Shared.Common.ZigbeeColor.Current.XMGray2,
                 Gravity = Gravity.CenterHorizontal,
                 TextSize = 14,
             };
@@ -120,10 +120,10 @@
             var btnPicTip4 = new Button
             {
                 X = Application.GetRealWidth(397),
-                Y = btnPicTip3.Bottom,
+                Y = btnPicTip3.Y + Application.GetRealHeight(50),
                 Width = Application.GetRealWidth(288),
-                Height = Application.GetRealHeight(173 / 2),
-                TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
+                Height = Application.GetRealHeight(100 / 2),
+                TextColor = Shared.Common.ZigbeeColor.Current.XMGray2,
                 Gravity = Gravity.CenterHorizontal,
                 TextSize = 14,
             };
@@ -135,7 +135,7 @@
                 Y = Application.GetRealHeight(1388),
                 Height = Application.GetRealHeight(49),
                 Width = Application.GetRealWidth(685),
-                TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
+                TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
                 Gravity = Gravity.CenterHorizontal,
                 TextSize = 12,
             };
@@ -151,7 +151,8 @@
                 TextColor = Shared.Common.ZigbeeColor.Current.XMWhite,
                 Gravity = Gravity.CenterHorizontal,
                 Radius = (uint)Application.GetRealHeight(127 / 2),
-                TextSize = 20,
+                TextSize = 16,
+                IsBold =true,
                 Enable = false,
                 BackgroundColor = Shared.Common.ZigbeeColor.Current.XMUnSelect,
             };
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonInfo.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonInfo.cs
index 12f0ba6..cdc7424 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonInfo.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonInfo.cs
@@ -242,7 +242,6 @@
                                     deleteDoorLockData.PrimaryId = curDoorLockUser.Id;
                                     deleteDoorLockData.DelDoorLockDelType = 2;
                                     var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/DelDoorLock", deleteDoorLockData);
-                                    int i = 0;
                                 }
                             }
                         }
@@ -331,7 +330,6 @@
                                             deleteDoorLockData.PrimaryId = curDoorLockUser.Id;
                                             deleteDoorLockData.DelDoorLockDelType = 2;
                                             var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/DelDoorLock", deleteDoorLockData);
-                                            int i = 0;
                                         }
                                     }
                                 }
@@ -379,7 +377,10 @@
                 {
                     for (int j = 1; j < getDoorLockInfoList.TotalPages; j++)
                     {
-                        var getDoorLockInfoListTemp = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockAllAccountInfolist(doorLock, j + 1);
+                        var pageSetting = new ZigBee.Device.DoorLock.PageSetting() { };
+                        pageSetting.Page = j + 1;
+                        localDoorLockObj.pageSetting = pageSetting;
+                        var getDoorLockInfoListTemp = await ZigBee.Device.DoorLock.GetDoorLockInfoFromServer("DoorLock/GetDoorLockPager", localDoorLockObj);
                         if (getDoorLockInfoListTemp != null)
                         {
                             if (getDoorLockInfoListTemp.PageData.Count != 0)
@@ -460,7 +461,7 @@
             return await System.Threading.Tasks.Task.Run((Func<System.Threading.Tasks.Task<List<ZigBee.Device.DoorLock.GetDoorLockDataRes>>>)(async () =>
             {
                 var getDoorLockInfoAllList = new List<ZigBee.Device.DoorLock.GetDoorLockDataRes> { };
-                int curPage = 1;
+
                 //  璇诲彇浜戠闂ㄩ攣璁惧涓殑淇℃伅
                 var localDoorLockObj = new ZigBee.Device.DoorLock.GetDoorLockData() { };
 
@@ -488,7 +489,10 @@
                 {
                     for (int j = 1; j < getDoorLockInfoList.TotalPages; j++)
                     {
-                        var getDoorLockInfoListTemp = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockAllAccountInfolist(doorLock, j + 1);
+                        var pageSetting = new ZigBee.Device.DoorLock.PageSetting() { };
+                        pageSetting.Page = j + 1;
+                        localDoorLockObj.pageSetting = pageSetting;
+                        var getDoorLockInfoListTemp = await ZigBee.Device.DoorLock.GetDoorLockInfoFromServer("DoorLock/GetDoorLockPager", localDoorLockObj);
                         if (getDoorLockInfoListTemp != null)
                         {
                             getDoorLockInfoAllList.Add(getDoorLockInfoListTemp);
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonLayout.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonLayout.cs
index 1608b0c..3e676f5 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonLayout.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonLayout.cs
@@ -16,23 +16,12 @@
         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()
-        {
-            Height = Application.GetRealHeight(100),
-            Y = Application.GetRealHeight(930),
-            Radius = 17,
-            BackgroundColor = ZigbeeColor.Current.XMWhite,
-        };
-        public FrameLayout bottomRadiusFrameLayout2 = new FrameLayout()
-        {
-            Height = Application.GetRealHeight(806 - 50),
-            Y = Application.GetRealHeight(930 + 48),
-            BackgroundColor = ZigbeeColor.Current.XMWhite,
-        };
+        
         public FrameLayout bottomRadiusFrameLayout = new FrameLayout()
         {
-            Height = Application.GetRealHeight(806),
+            Height = Application.GetRealHeight(906),
             Y = Application.GetRealHeight(930),
+            BackgroundColor = ZigbeeColor.Current.XMWhite,
         };
 
         public Button btnCancel = new Button
@@ -186,10 +175,9 @@
         /// </summary>
         /// <param name="frameLayout"></param>
         public void BottomRadiusFrameLayout(FrameLayout frameLayout)
-        {
-            this.shadowRadiusFrameLayout.AddChidren(this.bottomRadiusFrameLayout1);
-            this.shadowRadiusFrameLayout.AddChidren(this.bottomRadiusFrameLayout2);
+        { 
             this.shadowRadiusFrameLayout.AddChidren(this.bottomRadiusFrameLayout);
+            this.bottomRadiusFrameLayout.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
             this.bottomRadiusFrameLayout.AddChidren(btnCancel);
             this.bottomRadiusFrameLayout.AddChidren(btnBottomTitle);
             this.bottomRadiusFrameLayout.AddChidren(btnFinish);
@@ -341,14 +329,14 @@
                         ZigBee.Device.DoorLock.RemoteUnlockCount--;
                         string tipText = Language.StringByID(R.MyInternationalizationString.OperrateFailed) + "," + Language.StringByID(R.MyInternationalizationString.Surplus) + ZigBee.Device.DoorLock.RemoteUnlockCount.ToString() + Language.StringByID(R.MyInternationalizationString.Opportunity);
                         CommonPage.Loading.Hide();
-                        new Tip() { MaxWidth = 150, Text = tipText, Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show((View)sender1);
+                        new Tip() { MaxWidth = 150, Text = tipText, Direction = AMPopTipDirection.Down, CloseTime = 2 }.Show(editInputPassword);
                         return;
                     }
                 }
                 else
                 {
                     CommonPage.Loading.Hide();
-                    new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show((View)sender1);
+                    new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.Down, CloseTime = 2 }.Show(editInputPassword);
                     return;
                 }
             };
@@ -536,7 +524,7 @@
             doorDialog3.dialogMidText.Text = Language.StringByID(R.MyInternationalizationString.SureToOpenDoorLock);
             doorDialog3.dialogMidText.TextAlignment = TextAlignment.Center;
             doorDialog3.dialogMidFraFrameLayout.AddChidren(doorDialog3.dialogMidText);
-            doorDialog3.dialogBtnConfirm.Text = Language.StringByID(R.MyInternationalizationString.Confrim);
+            doorDialog3.dialogBtnConfirm.Text = Language.StringByID(R.MyInternationalizationString.DoorlockConfirm);
             doorDialog3.dialogBtnCancel.MouseUpEventHandler += (sender1, e1) =>
             {
                 dialog3.Close();
@@ -547,7 +535,7 @@
                 {
                     System.Threading.Tasks.Task.Run(async () =>
                     {
-                        Application.RunOnMainThread(() => { CommonPage.Loading.Start("Loading..."); });
+                        Application.RunOnMainThread(() => { CommonPage.Loading.Start(""); });
                         try
                         {
                             Application.RunOnMainThread(() =>
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/EntryStatusPage.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/EntryStatusPage.cs
index 5361754..3719595 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/EntryStatusPage.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/EntryStatusPage.cs
@@ -66,6 +66,7 @@
                 TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
                 Gravity = Gravity.CenterHorizontal,
                 TextSize = 20,
+                IsBold =true,
             };
             this.midFrameLayout.AddChidren(btnPicTip);
 
@@ -193,6 +194,7 @@
                 BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack,
                 Radius = (uint)Application.GetRealHeight(127 / 2),
                 TextSize = 16,
+                IsBold =true,
             };
             bottomFrameLayout.AddChidren(completeBtn);
 
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/FunctionSetting.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/FunctionSetting.cs
index 0d18c15..2fdcbd5 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/FunctionSetting.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/FunctionSetting.cs
@@ -73,36 +73,50 @@
                 BackgroundImagePath = "DoorLock/DoorlockPicture.png",
             };
             this.midFrameLayout.AddChidren(MidTopFrameLayout);
+
+            var btnDeviceText = new Button()
+            {
+                Y = Application.GetRealHeight(288),
+                Height = Application.GetRealHeight(60),
+                Gravity = Gravity.CenterHorizontal,
+                TextColor = ZigbeeColor.Current.XMBlack,
+                TextSize = 15,
+                Text = Common.LocalDevice.Current.GetDeviceMacName(doorLock),
+            };
+            this.midFrameLayout.AddChidren(btnDeviceText);
+
             BottomFrameLayout();
         }
 
         public void BottomFrameLayout()
         {
             #region  UI 
+            //var bottomFrameLayout = new FrameLayout()
+            //{
+            //    Height = Application.GetRealHeight(100),
+            //    Y = Application.GetRealHeight(418),
+            //    Radius = 17,
+            //    BackgroundColor = ZigbeeColor.Current.XMWhite,
+            //};
+            //this.midFrameLayout.AddChidren(bottomFrameLayout);
+
+            //var bottomFrameLayout1 = new FrameLayout()
+            //{
+            //    Height = Application.GetRealHeight(1319 - 50),
+            //    Y = Application.GetRealHeight(418 + 48),
+            //    BackgroundColor = ZigbeeColor.Current.XMWhite,
+            //};
+            //this.midFrameLayout.AddChidren(bottomFrameLayout1);
+
             var bottomFrameLayout = new FrameLayout()
             {
-                Height = Application.GetRealHeight(100),
+                Height = Application.GetRealHeight(1319),
                 Y = Application.GetRealHeight(418),
-                Radius = 17,
                 BackgroundColor = ZigbeeColor.Current.XMWhite,
-            };
+            }; 
             this.midFrameLayout.AddChidren(bottomFrameLayout);
-
-            var bottomFrameLayout1 = new FrameLayout()
-            {
-                Height = Application.GetRealHeight(1319 - 50),
-                Y = Application.GetRealHeight(418 + 48),
-                BackgroundColor = ZigbeeColor.Current.XMWhite,
-            };
-            this.midFrameLayout.AddChidren(bottomFrameLayout1);
-
-            var bottomFrameLayout2 = new FrameLayout()
-            {
-                Height = Application.GetRealHeight(1000),
-                Y = Application.GetRealHeight(418),
-            };
-            this.midFrameLayout.AddChidren(bottomFrameLayout2);
-
+            bottomFrameLayout.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
+             
             var informationEdit = new Button()
             {
                 Height = Application.GetRealHeight(60),
@@ -113,7 +127,7 @@
                 TextAlignment = TextAlignment.CenterLeft,
                 TextSize = 15,
             };
-            bottomFrameLayout2.AddChidren(informationEdit);
+            bottomFrameLayout.AddChidren(informationEdit);
 
             for (int i = 0; i < 6; i++)
             {
@@ -121,7 +135,7 @@
                 {
                     Height = Application.GetRealHeight(58),
                 };
-                bottomFrameLayout2.AddChidren(bottomRowLayout);
+                bottomFrameLayout.AddChidren(bottomRowLayout);
 
                 var btnName = new Button()
                 {
@@ -158,7 +172,7 @@
                     BackgroundColor = Shared.Common.ZigbeeColor.Current.XMRowLine,
                     Visible = false,
                 };
-                bottomFrameLayout2.AddChidren(btnLine);
+                bottomFrameLayout.AddChidren(btnLine);
 
                 if (i == 0)
                 {
@@ -172,6 +186,7 @@
                         Width = Application.GetRealWidth(731),
                         Height = Application.GetRealHeight(58),
                         TextColor = ZigbeeColor.Current.XMGray3,
+                        TextSize = 14,
                         PlaceholderTextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor2,
                         TextAlignment = TextAlignment.CenterLeft,
                         Text = string.IsNullOrEmpty(doorLock.DeviceName) ? Language.StringByID(R.MyInternationalizationString.UNKnown) : doorLock.DeviceName,
@@ -244,7 +259,7 @@
                     btnNext.Height = Application.GetRealHeight(58);
                     btnNext.Text = doorLock.DeviceName;
                     btnNext.TextColor = Shared.Common.ZigbeeColor.Current.XMGray3;
-
+                    btnNext.TextSize = 14;
                     btnLine.Visible = true;
                     btnLine.Y = Application.GetRealHeight(575);
                 }
@@ -370,10 +385,13 @@
                          }
                      }
                  };
-                bottomRowLayout.MouseDownEventHandler += eHandler;
                 btnNext.MouseDownEventHandler += eHandler;
-                btnName.MouseDownEventHandler += eHandler;
-                btnNextFrameLayout.MouseDownEventHandler += eHandler;
+                if (i != 4)
+                {
+                    bottomRowLayout.MouseDownEventHandler += eHandler;
+                    btnName.MouseDownEventHandler += eHandler;
+                    btnNextFrameLayout.MouseDownEventHandler += eHandler;
+                }
                 #endregion
             }
 
@@ -389,6 +407,7 @@
                 BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack,
                 TextColor = Shared.Common.ZigbeeColor.Current.XMWhite,
                 TextSize = 16,
+                IsBold =true,
             };
             this.midFrameLayout.AddChidren(btnFinifh);
             btnFinifh.MouseUpEventHandler += (sender, e) =>
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/FunctionSettingSub.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/FunctionSettingSub.cs
index 10be4e8..62b22d3 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/FunctionSettingSub.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/FunctionSettingSub.cs
@@ -55,35 +55,50 @@
                 BackgroundImagePath = "DoorLock/DoorlockPicture.png",
             };
             this.midFrameLayout.AddChidren(MidTopFrameLayout);
+
+            var btnDeviceText = new Button()
+            {
+                Y = Application.GetRealHeight(288),
+                Height = Application.GetRealHeight(60),
+                Gravity = Gravity.CenterHorizontal,
+                TextColor = ZigbeeColor.Current.XMBlack,
+                TextSize = 15,
+                Text = Common.LocalDevice.Current.GetDeviceMacName(doorLock),
+            };
+            this.midFrameLayout.AddChidren(btnDeviceText);
+
             BottomFrameLayout();
         }
 
         public void BottomFrameLayout()
         {
             #region  UI 
+            //var bottomFrameLayout = new FrameLayout()
+            //{
+            //    Height = Application.GetRealHeight(100),
+            //    Y = Application.GetRealHeight(418),
+            //    Radius = 17,
+            //    BackgroundColor = ZigbeeColor.Current.XMWhite,
+            //};
+            //this.midFrameLayout.AddChidren(bottomFrameLayout);
+
+            //var bottomFrameLayout1 = new FrameLayout()
+            //{
+            //    Height = Application.GetRealHeight(1319 - 50),
+            //    Y = Application.GetRealHeight(418 + 48),
+            //    BackgroundColor = ZigbeeColor.Current.XMWhite,
+            //};
+            //this.midFrameLayout.AddChidren(bottomFrameLayout1);
+
             var bottomFrameLayout = new FrameLayout()
-            {
-                Height = Application.GetRealHeight(100),
-                Y = Application.GetRealHeight(418),
-                Radius = 17,
-                BackgroundColor = ZigbeeColor.Current.XMWhite,
-            };
-            this.midFrameLayout.AddChidren(bottomFrameLayout);
-
-            var bottomFrameLayout1 = new FrameLayout()
-            {
-                Height = Application.GetRealHeight(1319 - 50),
-                Y = Application.GetRealHeight(418 + 48),
-                BackgroundColor = ZigbeeColor.Current.XMWhite,
-            };
-            this.midFrameLayout.AddChidren(bottomFrameLayout1);
-
-            var bottomFrameLayout2 = new FrameLayout()
             {
                 Height = Application.GetRealHeight(1319),
                 Y = Application.GetRealHeight(418),
+                BackgroundColor = ZigbeeColor.Current.XMWhite,
             };
-            this.midFrameLayout.AddChidren(bottomFrameLayout2);
+            this.midFrameLayout.AddChidren(bottomFrameLayout);
+            bottomFrameLayout.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
+
 
             var informationEdit = new Button()
             {
@@ -95,7 +110,7 @@
                 TextAlignment = TextAlignment.CenterLeft,
                 TextSize = 15,
             };
-            bottomFrameLayout2.AddChidren(informationEdit);
+            bottomFrameLayout.AddChidren(informationEdit);
 
             for (int i = 0; i < 4; i++)
             {
@@ -103,7 +118,7 @@
                 {
                     Height = Application.GetRealHeight(58),
                 };
-                bottomFrameLayout2.AddChidren(bottomRowLayout);
+                bottomFrameLayout.AddChidren(bottomRowLayout);
 
                 var btnName = new Button()
                 {
@@ -140,7 +155,7 @@
                     BackgroundColor = Shared.Common.ZigbeeColor.Current.XMRowLine,
                     Visible = false,
                 };
-                bottomFrameLayout2.AddChidren(btnLine);
+                bottomFrameLayout.AddChidren(btnLine);
 
                 if (i == 0)
                 {
@@ -154,6 +169,7 @@
                         Width = Application.GetRealWidth(731),
                         Height = Application.GetRealHeight(58),
                         TextColor = ZigbeeColor.Current.XMGray3,
+                        TextSize = 14,
                         PlaceholderTextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor2,
                         TextAlignment = TextAlignment.CenterLeft,
                         Text = string.IsNullOrEmpty(doorLock.DeviceName) ? Language.StringByID(R.MyInternationalizationString.UNKnown) : doorLock.DeviceName,
@@ -225,7 +241,7 @@
                     btnNext.Height = Application.GetRealHeight(58);
                     btnNext.Text = doorLock.DeviceName;
                     btnNext.TextColor = Shared.Common.ZigbeeColor.Current.XMGray3;
-
+                    btnNext.TextSize = 14;
                     btnLine.Visible = true;
                     btnLine.Y = Application.GetRealHeight(575);
                 }
@@ -285,10 +301,13 @@
                          }
                      }
                  };
-                bottomRowLayout.MouseDownEventHandler += eHandler;
                 btnNext.MouseDownEventHandler += eHandler;
-                btnName.MouseDownEventHandler += eHandler;
-                btnNextFrameLayout.MouseDownEventHandler += eHandler;
+                if (i != 3)
+                {
+                    bottomRowLayout.MouseDownEventHandler += eHandler;
+                    btnName.MouseDownEventHandler += eHandler;
+                    btnNextFrameLayout.MouseDownEventHandler += eHandler;
+                }
                 #endregion
             }
 
@@ -304,6 +323,7 @@
                 BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack,
                 TextColor = Shared.Common.ZigbeeColor.Current.XMWhite,
                 TextSize = 16,
+                IsBold =true,
             };
             this.midFrameLayout.AddChidren(btnFinifh);
             btnFinifh.MouseUpEventHandler += (sender, e) =>
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MasterManagementPage.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MasterManagementPage.cs
index 1d333f0..b1e0ddb 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MasterManagementPage.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MasterManagementPage.cs
@@ -87,7 +87,7 @@
                     Y = Application.GetRealHeight(58),
                     Height = Application.GetRealHeight(58),
                     Width = Application.GetRealWidth(58),
-                    UnSelectedImagePath = "Item/Next.png",
+                    UnSelectedImagePath = "Item/RightNext.png",
                     SelectedImagePath = "Item/Down.png",
                 };
                 RowView.AddChidren(btnRight);
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MemberFrozenPage.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MemberFrozenPage.cs
index 0386a10..15a960b 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MemberFrozenPage.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MemberFrozenPage.cs
@@ -33,6 +33,24 @@
                     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);
+                    var result2 = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockOperateAccess(doorLock, curAccountObj?.SubAccountDistributedMark);
+                    if (result2 == true)
+                    {
+                        doorLock.IsFreezeAccount[curAccountObj.SubAccountDistributedMark] = true;
+                    }
+                    else
+                    {
+                        doorLock.IsFreezeAccount[curAccountObj.SubAccountDistributedMark] = false;
+                    }
+                    var result3 = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockUnlockAccess(doorLock, curAccountObj.SubAccountDistributedMark);
+                    if (result3 == true)
+                    {
+                        doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark] = true;
+                    }
+                    else
+                    {
+                        doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark] = false;
+                    }
                 }
                 catch { }
                 finally
@@ -148,8 +166,7 @@
                     btnRight.Width = Application.GetRealWidth(104);
                     btnRight.UnSelectedImagePath = "DoorLock/Switch.png";
                     btnRight.SelectedImagePath = "DoorLock/SwitchOn.png";
-
-                    var result = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockOperateAccess(doorLock, curAccountObj.SubAccountDistributedMark);
+                    var result = doorLock.IsFreezeAccount[curAccountObj.SubAccountDistributedMark];
                     if (result == true)
                     {
                         btnRight.IsSelected = true;
@@ -172,7 +189,7 @@
                         btnRight.SelectedImagePath = "DoorLock/SwitchOn.png";
                         line2.Visible = false;
 
-                        var result1 = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockUnlockAccess(doorLock, curAccountObj.SubAccountDistributedMark);
+                        var result1 = doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark];
                         if (result1 == true)
                         {
                             btnRight.IsSelected = true;
@@ -247,585 +264,521 @@
             }
         }
 
-
         //鍐荤粨璐︽埛
         void FreezeUser(bool isFreeze)
         {
-            var alert = new Alert(Language.StringByID(R.MyInternationalizationString.Tip), Language.StringByID(R.MyInternationalizationString.SureToFreezeAccount),
-                                                 Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
-            alert.Show();
-            alert.ResultEventHandler += (sender1, e1) =>
-             {
-                 if (e1)
-                 {
-                     System.Threading.Tasks.Task.Run(async () =>
-                     {
-                         int successConunt = 0;
-                         int operateConunt = -1;
-                         Application.RunOnMainThread(() => { CommonPage.Loading.Start(""); });
-                         try
-                         {
-                             var doorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
-                             var curAccountDoorLockUserList = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetAccountDoorLockUserList(doorLock, curAccountObj.SubAccountDistributedMark);
-                             if (curAccountDoorLockUserList.Count != 0)
-                             {
-                                 //淇敼浜戠瀛樺偍淇℃伅
-                                 operateConunt = curAccountDoorLockUserList.Count;
-                                 var tempGroupId = new List<List<int>>();
-                                 var tempUserIdList = new List<int> { };
-                                 var tempUserObjList = new List<ZigBee.Device.DoorLock.CloudDoorLockObj> { };
-                                 foreach (var curDoorLockUser in curAccountDoorLockUserList)
-                                 {
-                                     // 璐︽埛涓病鏈夐棬閿佺敤鎴�
-                                     if (curDoorLockUser.DoorLockLocalUserId == null || curDoorLockUser.DoorLockLocalUserId == "")
-                                     {
-                                         if (isFreeze)
-                                         {
-                                             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.PrimaryId = curDoorLockUser.Id;
-                                             refreshDoorLockData.IsFreezeUser = true;
-                                             refreshDoorLockData.IsTempUnlockAuthority = doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark];
-                                             //鍐荤粨浜戠
-                                             var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/UpdateDoorLock", refreshDoorLockData);
-                                             if (result != null)
-                                             {
-                                                 if (result.StateCode == "Success")
-                                                 {
-                                                     successConunt++;
-                                                 }
-                                                 else
-                                                 {
-                                                     Application.RunOnMainThread(() =>
-                                                     {
-                                                         if (isFreeze)
-                                                         {
-                                                             new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.FreezeFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
-                                                         }
-                                                         else
-                                                         {
-                                                             new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.UnFreezeFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
-                                                         }
-                                                         return;
-                                                     });
-                                                 }
-                                             }
-                                             else
-                                             {
-                                                 Application.RunOnMainThread(() =>
-                                                 {
-                                                     new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
-                                                 });
-                                             }
-                                         }
-                                         else
-                                         {
-                                             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.PrimaryId = curDoorLockUser.Id;
-                                             refreshDoorLockData.IsFreezeUser = false;
-                                             refreshDoorLockData.IsTempUnlockAuthority = doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark];
-                                             //瑙e喕浜戠
-                                             var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/UpdateDoorLock", refreshDoorLockData);
-                                             if (result != null)
-                                             {
-                                                 if (result.StateCode == "Success")
-                                                 {
-                                                     successConunt++;
-                                                 }
-                                                 else
-                                                 {
-                                                     Application.RunOnMainThread(() =>
-                                                     {
-                                                         new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.FreezeFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
-                                                     });
-                                                 }
-                                             }
-                                             else
-                                             {
-                                                 Application.RunOnMainThread(() =>
-                                                 {
-                                                     new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
-                                                 });
-                                             }
-                                         }
-                                     }
-                                     else
-                                     {
-                                         if (tempUserIdList.Count == 9)
-                                         {
-                                             tempGroupId.Add(tempUserIdList);
-                                             tempUserIdList = new List<int>();
-                                         }
-                                         tempUserIdList.Add(int.Parse(curDoorLockUser.DoorLockLocalUserId));
-                                         tempUserObjList.Add(curDoorLockUser);
-                                     }
-                                 }
-                                 tempGroupId.Add(tempUserIdList);
-                                 //鎵归噺鍐荤粨闂ㄩ攣涓殑璐︽埛
-                                 ZigBee.Device.DoorLock.AccessType accessType;
-                                 if (isFreeze)
-                                 {
-                                     accessType = ZigBee.Device.DoorLock.AccessType.DisEnableMoreUsers;
-                                 }
-                                 else
-                                 {
-                                     accessType = ZigBee.Device.DoorLock.AccessType.EnableMoreUsers;
-                                 }
-                                 //鍐荤粨/瑙e喕鐢ㄦ埛
-                                 int count1 = tempGroupId.Count;
-                                 int count2 = 0;
-
-                                 for (int i = 0; i < tempGroupId.Count; i++)
-                                 {
-                                     var tempUserIdList1 = tempGroupId[i];
-                                     if (tempUserIdList1.Count == 0)
-                                     {
-                                         return;
-                                     }
-                                     var passData = doorLock.FreezeAccountData(tempUserIdList1, accessType);
-                                     var resultData = await doorLock.DefaultControlAsync(passData);
-                                     if (resultData != null && resultData.defaultControlResponseData != null)
-                                     {
-                                         if (resultData.defaultControlResponseData.status == 32)
-                                         {
-                                             count2++;
-                                         }
-                                         else if (resultData.defaultControlResponseData.status == 33)
-                                         {
-                                             count2++;
-                                         }
-
-                                         System.Threading.Thread.Sleep(3000);
-                                     }
-                                     else
-                                     {
-                                         Application.RunOnMainThread(() =>
-                                         {
-                                             new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(Common.CommonPage.Instance);
-                                         });
-                                         return;
-                                     }
-                                 }
-
-                                 // 鎵归噺鍐荤粨闂ㄩ攣涓殑璐︽埛鍚庯紝鍑嗗鍐荤粨浜戠璐︽埛
-                                 if (count2 == count1)
-                                 {
-                                     foreach (var curDoorLockUser in tempUserObjList)
-                                     {
-                                         if (isFreeze)
-                                         {
-                                             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.OpenLockMode;
-                                             refreshDoorLockData.DoorLockLocalUserId = curDoorLockUser.DoorLockLocalUserId;
-                                             refreshDoorLockData.PrimaryId = curDoorLockUser.Id;
-                                             refreshDoorLockData.IsFreezeUser = true;
-                                             refreshDoorLockData.IsTempUnlockAuthority = doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark];
-                                             //鍐荤粨浜戠
-                                             var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/UpdateDoorLock", refreshDoorLockData);
-                                             if (result != null)
-                                             {
-                                                 if (result.StateCode == "Success")
-                                                 {
-                                                     successConunt++;
-                                                 }
-                                                 else
-                                                 {
-                                                     Application.RunOnMainThread(() =>
-                                                     {
-                                                         if (isFreeze)
-                                                         {
-                                                             new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.FreezeFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
-                                                         }
-                                                         else
-                                                         {
-                                                             new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.UnFreezeFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
-                                                         }
-                                                         return;
-                                                     });
-                                                 }
-                                             }
-                                             else
-                                             {
-                                                 Application.RunOnMainThread(() =>
-                                                 {
-                                                     new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(Common.CommonPage.Instance);
-                                                 });
-                                             }
-                                         }
-                                         else
-                                         {
-                                             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.OpenLockMode;
-                                             refreshDoorLockData.DoorLockLocalUserId = curDoorLockUser.DoorLockLocalUserId;
-                                             refreshDoorLockData.PrimaryId = curDoorLockUser.Id;
-                                             refreshDoorLockData.IsFreezeUser = false;
-                                             refreshDoorLockData.IsTempUnlockAuthority = doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark];
-                                             //瑙e喕浜戠
-                                             var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/UpdateDoorLock", refreshDoorLockData);
-                                             if (result != null)
-                                             {
-                                                 if (result.StateCode == "Success")
-                                                 {
-                                                     successConunt++;
-                                                 }
-                                                 else
-                                                 {
-                                                     Application.RunOnMainThread(() =>
-                                                     {
-                                                         new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.FreezeFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
-                                                     });
-                                                 }
-                                             }
-                                             else
-                                             {
-                                                 Application.RunOnMainThread(() =>
-                                                 {
-                                                     new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(Common.CommonPage.Instance);
-                                                 });
-                                             }
-                                         }
-                                     }
-                                 }
-                                 else
-                                 {
-                                     Application.RunOnMainThread(() =>
-                                     {
-                                         if (isFreeze)
-                                         {
-                                             new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.FreezeFailed) + ".", Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(Common.CommonPage.Instance);
-                                         }
-                                         else
-                                         {
-                                             new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.UnFreezeFailed) + ".", Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(Common.CommonPage.Instance);
-                                         }
-                                         return;
-                                     });
-                                 }
-                             }
-                             else
-                             {
-                                 //娣诲姞浜戠瀛樺偍淇℃伅
-                                 //鍐荤粨/瑙e喕浜戠
-                                 var addLockInfo = new ZigBee.Device.DoorLock.AddDoorLockData();
-                                 if (UserCenterResourse.UserInfo.AuthorityNo != 1)
-                                 {
-                                     addLockInfo.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
-                                     addLockInfo.IsOtherAccountCtrl = true;
-                                 }
-                                 addLockInfo.CloudAccountId = curAccountObj.SubAccountDistributedMark;
-                                 if (doorLock.DeviceAddr != null)
-                                 {
-                                     addLockInfo.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
-                                 }
-                                 addLockInfo.EntryTime = System.DateTime.Now;
-                                 if (isFreeze)
-                                 {
-                                     addLockInfo.IsFreezeUser = true;
-                                 }
-                                 else
-                                 {
-                                     addLockInfo.IsFreezeUser = false;
-                                 }
-                                 addLockInfo.IsTempUnlockAuthority = doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark];
-                                 var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/AddDoorLock", addLockInfo);
-                                 if (result != null)
-                                 {
-                                     if (result.StateCode == "Success")
-                                     {
-                                         operateConunt = 0;
-                                     }
-                                     else
-                                     {
-                                         Application.RunOnMainThread(() =>
-                                         {
-                                             if (isFreeze)
-                                             {
-                                                 new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.FreezeFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
-                                             }
-                                             else
-                                             {
-                                                 new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.UnFreezeFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
-                                             }
-                                             return;
-                                         });
-                                     }
-                                 }
-                                 else
-                                 {
-                                     Application.RunOnMainThread(() =>
-                                     {
-                                         new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
-
-                                     });
-                                 }
-                             }
-                         }
-                         catch { }
-                         finally
-                         {
-                             if (operateConunt == successConunt)
-                             {
-                                 if (isFreeze)
-                                 {
-                                     doorLock.IsFreezeAccount[curAccountObj.SubAccountDistributedMark] = true;
-                                 }
-                                 else
-                                 {
-                                     doorLock.IsFreezeAccount[curAccountObj.SubAccountDistributedMark] = false;
-                                 }
-                                 doorLock.ReSave();
-                             }
-                             Application.RunOnMainThread(() =>
-                             {
-                                 MidRefresh();
-                                 CommonPage.Loading.Hide();
-                             });
-                         }
-                     });
-                 }
-                 else
-                 {
-                     MidRefresh();
-                 }
-             };
-        }
-
-        //鏄惁缁欏瓙璐︽埛鎷ユ湁杩滅▼寮�閿佺殑鏉′欢
-        void HasRemoteUnlockAccessMethod(bool hasAccess)
-        {
-            var alert = new Alert(Language.StringByID(R.MyInternationalizationString.Tip), Language.StringByID(R.MyInternationalizationString.SureGiveAccessToSubaccount),
-                                                 Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
-            alert.Show();
-            alert.ResultEventHandler += (sender1, e1) =>
+            var dialog = new Dialog { };
+            string textFreeze = "";
+            if (isFreeze)
             {
-                if (e1)
-                {
-                    System.Threading.Tasks.Task.Run(async () =>
-                    {
-                        int successConunt = 0;
-                        int operateConunt = -1;
-                        Application.RunOnMainThread(() => { CommonPage.Loading.Start("Loading..."); });
-                        try
-                        {
-                            var resultList = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetAccountDoorLockUserList(doorLock, curAccountObj.SubAccountDistributedMark);
-                            var uList = new List<string> { };
-                            if (resultList != null)
-                            {
-                                foreach (var a in resultList)
-                                {
-                                    uList.Add(a.CloudAccountId);
+                textFreeze = Language.StringByID(R.MyInternationalizationString.SureToFreezeAccount);
+            }
+            else
+            {
+                textFreeze = Language.StringByID(R.MyInternationalizationString.SureToUnFreeze);
+            }
+            var doorDialog = new Shared.Phone.UserCenter.DoorLock.DoorlockDialog(dialog, Language.StringByID(R.MyInternationalizationString.Tip));
+            doorDialog.Show();
+            doorDialog.dialogMidFraFrameLayout.Height = Application.GetRealHeight(58);
+            doorDialog.dialogMidFraFrameLayout.X = Application.GetRealWidth(0);
+            doorDialog.dialogMidFraFrameLayout.Y = Application.GetRealHeight(202);
+            doorDialog.dialogMidFraFrameLayout.AddChidren(doorDialog.dialogMidText);
+            doorDialog.dialogMidText.Text = textFreeze;
+            doorDialog.dialogMidFraFrameLayout.AddChidren(doorDialog.dialogMidText);
+            doorDialog.dialogBtnConfirm.Text = Language.StringByID(R.MyInternationalizationString.DoorlockConfirm);
+            doorDialog.dialogBtnCancel.MouseUpEventHandler += (sender1, e1) =>
+            {
+                MidRefresh();
+                dialog.Close();
+            };
+            doorDialog.dialogBtnConfirm.MouseUpEventHandler += (sender1, e1) =>
+            {
+                System.Threading.Tasks.Task.Run(async () =>
+                {
+                    int successConunt = 0;
+                    int operateConunt = -1;
+                    Application.RunOnMainThread(() => { CommonPage.Loading.Start(""); });
+                    try
+                    {
+                        var doorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
+                        var curAccountDoorLockUserList = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetAccountDoorLockUserList(doorLock, curAccountObj.SubAccountDistributedMark);
+                        if (curAccountDoorLockUserList.Count != 0)
+                        {
+                            //淇敼浜戠瀛樺偍淇℃伅
+                            operateConunt = curAccountDoorLockUserList.Count;
+                            var tempGroupId = new List<List<int>>();
+                            var tempUserIdList = new List<int> { };
+                            foreach (var curDoorLockUser in curAccountDoorLockUserList)
+                            {
+                                // 璐︽埛涓病鏈夐棬閿佺敤鎴�
+                                if (curDoorLockUser.DoorLockLocalUserId == null || curDoorLockUser.DoorLockLocalUserId == "")
+                                {
+                                    //
+                                }
+                                else
+                                {
+                                    if (tempUserIdList.Count == 9)
+                                    {
+                                        tempGroupId.Add(tempUserIdList);
+                                        tempUserIdList = new List<int>();
+                                    }
+                                    tempUserIdList.Add(int.Parse(curDoorLockUser.DoorLockLocalUserId));
                                 }
                             }
-                            var d = uList.Find((value) => { return value == curAccountObj.SubAccountDistributedMark; });
-                            if (d != null)
-                            {
-                                //淇敼浜戠瀛樺偍淇℃伅
-                                var curAccountDoorLockUserList = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetAccountDoorLockUserList(doorLock, curAccountObj.SubAccountDistributedMark);
+                            tempGroupId.Add(tempUserIdList);
+                            //鎵归噺鍐荤粨闂ㄩ攣涓殑璐︽埛
+                            ZigBee.Device.DoorLock.AccessType accessType;
+                            if (isFreeze)
+                            {
+                                accessType = ZigBee.Device.DoorLock.AccessType.DisEnableMoreUsers;
+                            }
+                            else
+                            {
+                                accessType = ZigBee.Device.DoorLock.AccessType.EnableMoreUsers;
+                            }
+                            //鍐荤粨/瑙e喕鐢ㄦ埛
+                            int count1 = tempGroupId.Count;
+                            int count2 = 0;
 
-                                foreach (var curDoorLockUser in curAccountDoorLockUserList)
-                                {
-                                    operateConunt = curAccountDoorLockUserList.Count;
-                                    if (hasAccess)
-                                    {
-                                        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.PrimaryId = curDoorLockUser.Id;
-                                        refreshDoorLockData.IsFreezeUser = false;
-                                        refreshDoorLockData.IsTempUnlockAuthority = true;
-                                        // 鎺堟潈
-                                        var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/UpdateDoorLock", refreshDoorLockData);
-                                        if (result != null)
-                                        {
-                                            if (result.StateCode == "Success")
-                                            {
-                                                successConunt++;
-                                            }
-                                            else
-                                            {
-                                                Application.RunOnMainThread(() =>
-                                                {
-                                                    new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GiveAccessToSubaccountFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
-                                                });
-                                            }
-                                        }
-                                        else
-                                        {
-                                            Application.RunOnMainThread(() =>
-                                            {
-                                                new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
-                                            });
-                                        }
-                                    }
-                                    else
-                                    {
-                                        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.PrimaryId = curDoorLockUser.Id;
-                                        refreshDoorLockData.IsFreezeUser = false;
-                                        refreshDoorLockData.IsTempUnlockAuthority = false;
-                                        //鍙栨秷鏉冮檺
-                                        var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/UpdateDoorLock", refreshDoorLockData);
-                                        if (result != null)
-                                        {
-                                            if (result.StateCode == "Success")
-                                            {
-                                                successConunt++;
-                                            }
-                                            else
-                                            {
-                                                Application.RunOnMainThread(() =>
-                                                {
-                                                    new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CancelAccessToSubaccountFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
-                                                });
-                                            }
-                                        }
-                                        else
-                                        {
-                                            Application.RunOnMainThread(() =>
-                                            {
-                                                new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
-                                            });
-                                        }
-                                    }
-                                }
-                            }
-                            else
+                            int tempCount = 0;
+                            for (int i = 0; i < tempGroupId.Count; i++)
                             {
-                                //鏂板锛屼笖涓嶅喕缁� 
-                                var addLockInfo = new ZigBee.Device.DoorLock.AddDoorLockData();
-                                if (UserCenterResourse.UserInfo.AuthorityNo != 1)
+                                var tempUserIdList1 = tempGroupId[i];
+                                if (tempUserIdList1.Count == 0)
                                 {
-                                    addLockInfo.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
-                                    addLockInfo.IsOtherAccountCtrl = true;
+                                    return;
                                 }
-                                addLockInfo.CloudAccountId = curAccountObj.SubAccountDistributedMark;
-                                if (doorLock.DeviceAddr != null)
-                                {
-                                    addLockInfo.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
-                                }
-                                addLockInfo.EntryTime = System.DateTime.Now;
-                                addLockInfo.IsFreezeUser = false;
-                                if (hasAccess)
-                                {
-                                    addLockInfo.IsTempUnlockAuthority = true;
-                                }
-                                else
-                                {
-                                    addLockInfo.IsTempUnlockAuthority = false;
-                                }
-                                var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/AddDoorLock", addLockInfo);
-                                if (result != null)
-                                {
-                                    if (result.StateCode == "Success")
+                                var passData = doorLock.FreezeAccountData(tempUserIdList1, accessType);
+                                var resultData = await doorLock.DefaultControlAsync(passData);
+                                if (resultData != null && resultData.defaultControlResponseData != null)
+                                {
+                                    if (resultData.defaultControlResponseData.status == 32)
                                     {
-                                        operateConunt = 0;
+                                        count2++;
                                     }
-                                    else
+                                    else if (resultData.defaultControlResponseData.status == 33)
                                     {
-                                        Application.RunOnMainThread(() =>
-                                        {
-                                            if (hasAccess)
-                                            {
-                                                new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GiveAccessToSubaccountFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
-                                            }
-                                            else
-                                            {
-                                                new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CancelAccessToSubaccountFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
-                                            }
-                                            return;
-                                        });
+                                        count2++;
                                     }
+                                    //if (tempCount == tempGroupId.Count - 1)
+                                    //{
+                                    System.Threading.Thread.Sleep(1000);
+                                    //}
                                 }
                                 else
                                 {
                                     Application.RunOnMainThread(() =>
                                     {
-                                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+                                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(Common.CommonPage.Instance);
+                                    });
+                                    return;
+                                }
+                                tempCount++;
+                            }
+
+                            // 鎵归噺鍐荤粨闂ㄩ攣涓殑璐︽埛鍚庯紝鍑嗗鍐荤粨浜戠璐︽埛
+                            if (count2 == count1)
+                            {
+                                foreach (var curDoorLockUser in curAccountDoorLockUserList)
+                                {
+                                    if (isFreeze)
+                                    {
+                                        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.OpenLockMode;
+                                        refreshDoorLockData.DoorLockLocalUserId = curDoorLockUser.DoorLockLocalUserId;
+                                        refreshDoorLockData.PrimaryId = curDoorLockUser.Id;
+                                        refreshDoorLockData.IsFreezeUser = true;
+                                        refreshDoorLockData.IsTempUnlockAuthority = doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark];
+                                        //鍐荤粨浜戠
+                                        var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/UpdateDoorLock", refreshDoorLockData);
+                                        if (result != null)
+                                        {
+                                            if (result.StateCode == "Success")
+                                            {
+                                                successConunt++;
+                                            }
+                                            else
+                                            {
+                                                Application.RunOnMainThread(() =>
+                                                {
+                                                    if (isFreeze)
+                                                    {
+                                                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.FreezeFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+                                                    }
+                                                    else
+                                                    {
+                                                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.UnFreezeFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+                                                    }
+                                                    return;
+                                                });
+                                            }
+                                        }
+                                        else
+                                        {
+                                            Application.RunOnMainThread(() =>
+                                            {
+                                                new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(Common.CommonPage.Instance);
+                                            });
+                                        }
+                                    }
+                                    else
+                                    {
+                                        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.OpenLockMode;
+                                        refreshDoorLockData.DoorLockLocalUserId = curDoorLockUser.DoorLockLocalUserId;
+                                        refreshDoorLockData.PrimaryId = curDoorLockUser.Id;
+                                        refreshDoorLockData.IsFreezeUser = false;
+                                        refreshDoorLockData.IsTempUnlockAuthority = doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark];
+                                        //瑙e喕浜戠
+                                        var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/UpdateDoorLock", refreshDoorLockData);
+                                        if (result != null)
+                                        {
+                                            if (result.StateCode == "Success")
+                                            {
+                                                successConunt++;
+                                            }
+                                            else
+                                            {
+                                                Application.RunOnMainThread(() =>
+                                                {
+                                                    new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.FreezeFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+                                                });
+                                            }
+                                        }
+                                        else
+                                        {
+                                            Application.RunOnMainThread(() =>
+                                            {
+                                                new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(Common.CommonPage.Instance);
+                                            });
+                                        }
+                                    }
+                                }
+                            }
+                            else
+                            {
+                                Application.RunOnMainThread(() =>
+                                {
+                                    if (isFreeze)
+                                    {
+                                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.FreezeFailed) + ".", Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(Common.CommonPage.Instance);
+                                    }
+                                    else
+                                    {
+                                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.UnFreezeFailed) + ".", Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(Common.CommonPage.Instance);
+                                    }
+                                });
+                            }
+                        }
+                        else
+                        {
+                            //娣诲姞浜戠瀛樺偍淇℃伅
+                            //鍐荤粨/瑙e喕浜戠
+                            var addLockInfo = new ZigBee.Device.DoorLock.AddDoorLockData();
+                            if (UserCenterResourse.UserInfo.AuthorityNo != 1)
+                            {
+                                addLockInfo.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
+                                addLockInfo.IsOtherAccountCtrl = true;
+                            }
+                            addLockInfo.CloudAccountId = curAccountObj.SubAccountDistributedMark;
+                            if (doorLock.DeviceAddr != null)
+                            {
+                                addLockInfo.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
+                            }
+                            addLockInfo.EntryTime = System.DateTime.Now;
+                            if (isFreeze)
+                            {
+                                addLockInfo.IsFreezeUser = true;
+                            }
+                            else
+                            {
+                                addLockInfo.IsFreezeUser = false;
+                            }
+                            addLockInfo.IsTempUnlockAuthority = doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark];
+                            var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/AddDoorLock", addLockInfo);
+                            if (result != null)
+                            {
+                                if (result.StateCode == "Success")
+                                {
+                                    operateConunt = 0;
+                                }
+                                else
+                                {
+                                    Application.RunOnMainThread(() =>
+                                    {
+                                        if (isFreeze)
+                                        {
+                                            new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.FreezeFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+                                        }
+                                        else
+                                        {
+                                            new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.UnFreezeFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+                                        }
+                                        return;
                                     });
                                 }
                             }
-
-                        }
-                        catch { }
-                        finally
-                        {
-                            if (operateConunt == successConunt)
+                            else
                             {
+                                Application.RunOnMainThread(() =>
+                                {
+                                    new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+
+                                });
+                            }
+                        }
+                    }
+                    catch { }
+                    finally
+                    {
+                        if (operateConunt == successConunt)
+                        {
+                            if (isFreeze)
+                            {
+                                doorLock.IsFreezeAccount[curAccountObj.SubAccountDistributedMark] = true;
+                            }
+                            else
+                            {
+                                doorLock.IsFreezeAccount[curAccountObj.SubAccountDistributedMark] = false;
+                            }
+                            doorLock.ReSave();
+                        }
+                        Application.RunOnMainThread(() =>
+                        {
+                            MidRefresh();
+                            CommonPage.Loading.Hide();
+                        });
+                    }
+                });
+                dialog.Close();
+            };
+        }
+
+        //鏄惁缁欏瓙璐︽埛鎷ユ湁杩滅▼寮�閿佺殑鏉′欢
+        void HasRemoteUnlockAccessMethod(bool hasAccess)
+        {
+            var dialog = new Dialog { };
+            var doorDialog = new Shared.Phone.UserCenter.DoorLock.DoorlockDialog(dialog, Language.StringByID(R.MyInternationalizationString.Tip));
+            doorDialog.Show();
+            doorDialog.dialogMidFraFrameLayout.Height = Application.GetRealHeight(58);
+            doorDialog.dialogMidFraFrameLayout.X = Application.GetRealWidth(0);
+            doorDialog.dialogMidFraFrameLayout.Y = Application.GetRealHeight(202);
+            doorDialog.dialogMidFraFrameLayout.AddChidren(doorDialog.dialogMidText);
+            doorDialog.dialogMidText.Text = Language.StringByID(R.MyInternationalizationString.SureGiveAccessToSubaccount);
+            doorDialog.dialogMidFraFrameLayout.AddChidren(doorDialog.dialogMidText);
+            doorDialog.dialogBtnConfirm.Text = Language.StringByID(R.MyInternationalizationString.DoorlockConfirm);
+            doorDialog.dialogBtnCancel.MouseUpEventHandler += (sender1, e1) =>
+            {
+                MidRefresh();
+                dialog.Close();
+            };
+            doorDialog.dialogBtnConfirm.MouseUpEventHandler += (sender1, e1) =>
+            {
+                System.Threading.Tasks.Task.Run(async () =>
+                {
+                    int successConunt = 0;
+                    int operateConunt = -1;
+                    Application.RunOnMainThread(() => { CommonPage.Loading.Start("Loading..."); });
+                    try
+                    {
+                        var resultList = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetAccountDoorLockUserList(doorLock, curAccountObj.SubAccountDistributedMark);
+                        var uList = new List<string> { };
+                        if (resultList != null)
+                        {
+                            foreach (var a in resultList)
+                            {
+                                uList.Add(a.CloudAccountId);
+                            }
+                        }
+                        var d = uList.Find((value) => { return value == curAccountObj.SubAccountDistributedMark; });
+                        if (d != null)
+                        {
+                            //淇敼浜戠瀛樺偍淇℃伅
+                            var curAccountDoorLockUserList = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetAccountDoorLockUserList(doorLock, curAccountObj.SubAccountDistributedMark);
+
+                            foreach (var curDoorLockUser in curAccountDoorLockUserList)
+                            {
+                                operateConunt = curAccountDoorLockUserList.Count;
                                 if (hasAccess)
                                 {
-                                    doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark] = true;
+                                    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.PrimaryId = curDoorLockUser.Id;
+                                    refreshDoorLockData.IsFreezeUser = false;
+                                    refreshDoorLockData.IsTempUnlockAuthority = true;
+                                    // 鎺堟潈
+                                    var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/UpdateDoorLock", refreshDoorLockData);
+                                    if (result != null)
+                                    {
+                                        if (result.StateCode == "Success")
+                                        {
+                                            successConunt++;
+                                        }
+                                        else
+                                        {
+                                            Application.RunOnMainThread(() =>
+                                            {
+                                                new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GiveAccessToSubaccountFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+                                            });
+                                        }
+                                    }
+                                    else
+                                    {
+                                        Application.RunOnMainThread(() =>
+                                        {
+                                            new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+                                        });
+                                    }
                                 }
                                 else
                                 {
-                                    doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark] = false;
+                                    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.PrimaryId = curDoorLockUser.Id;
+                                    refreshDoorLockData.IsFreezeUser = false;
+                                    refreshDoorLockData.IsTempUnlockAuthority = false;
+                                    //鍙栨秷鏉冮檺
+                                    var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/UpdateDoorLock", refreshDoorLockData);
+                                    if (result != null)
+                                    {
+                                        if (result.StateCode == "Success")
+                                        {
+                                            successConunt++;
+                                        }
+                                        else
+                                        {
+                                            Application.RunOnMainThread(() =>
+                                            {
+                                                new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CancelAccessToSubaccountFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+                                            });
+                                        }
+                                    }
+                                    else
+                                    {
+                                        Application.RunOnMainThread(() =>
+                                        {
+                                            new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+                                        });
+                                    }
                                 }
-                                doorLock.ReSave();
                             }
-                            Application.RunOnMainThread(() =>
-                            {
-                                MidRefresh();
-                                CommonPage.Loading.Hide();
-                            });
                         }
-                    });
-                }
-                else
-                {
-                    MidRefresh();
-                }
+                        else
+                        {
+                            //鏂板锛屼笖涓嶅喕缁� 
+                            var addLockInfo = new ZigBee.Device.DoorLock.AddDoorLockData();
+                            if (UserCenterResourse.UserInfo.AuthorityNo != 1)
+                            {
+                                addLockInfo.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
+                                addLockInfo.IsOtherAccountCtrl = true;
+                            }
+                            addLockInfo.CloudAccountId = curAccountObj.SubAccountDistributedMark;
+                            if (doorLock.DeviceAddr != null)
+                            {
+                                addLockInfo.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
+                            }
+                            addLockInfo.EntryTime = System.DateTime.Now;
+                            addLockInfo.IsFreezeUser = false;
+                            if (hasAccess)
+                            {
+                                addLockInfo.IsTempUnlockAuthority = true;
+                            }
+                            else
+                            {
+                                addLockInfo.IsTempUnlockAuthority = false;
+                            }
+                            var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/AddDoorLock", addLockInfo);
+                            if (result != null)
+                            {
+                                if (result.StateCode == "Success")
+                                {
+                                    operateConunt = 0;
+                                }
+                                else
+                                {
+                                    Application.RunOnMainThread(() =>
+                                    {
+                                        if (hasAccess)
+                                        {
+                                            new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GiveAccessToSubaccountFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+                                        }
+                                        else
+                                        {
+                                            new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CancelAccessToSubaccountFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+                                        }
+                                        return;
+                                    });
+                                }
+                            }
+                            else
+                            {
+                                Application.RunOnMainThread(() =>
+                                {
+                                    new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+                                });
+                            }
+                        }
+
+                    }
+                    catch { }
+                    finally
+                    {
+                        if (operateConunt == successConunt)
+                        {
+                            if (hasAccess)
+                            {
+                                doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark] = true;
+                            }
+                            else
+                            {
+                                doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark] = false;
+                            }
+                            doorLock.ReSave();
+                        }
+                        Application.RunOnMainThread(() =>
+                        {
+                            MidRefresh();
+                            CommonPage.Loading.Hide();
+                        });
+                    }
+                });
+                dialog.Close();
             };
         }
 
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MemberManagement.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MemberManagement.cs
index 66cccba..7016ce3 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MemberManagement.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/MemberManagement.cs
@@ -90,7 +90,7 @@
                     Y = Application.GetRealHeight(58),
                     Height = Application.GetRealHeight(58),
                     Width = Application.GetRealWidth(58),
-                    UnSelectedImagePath = "Item/Next.png",
+                    UnSelectedImagePath = "Item/RightNext.png",
                     SelectedImagePath = "Item/Down.png",
                 };
                 RowView.AddChidren(btnRight);
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/TemporaryPassword.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/TemporaryPassword.cs
index 0987e21..81aaa5f 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/TemporaryPassword.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/TemporaryPassword.cs
@@ -107,7 +107,8 @@
                     TextAlignment = TextAlignment.CenterLeft,
                     Text = Language.StringByID(R.MyInternationalizationString.ClearTempPassword),
                     TextColor = Shared.Common.ZigbeeColor.Current.XMTopTitleText,
-                    TextSize = 12,
+                    TextSize = 14,
+                    IsBold =true,
                 };
                 delBackgroundFrameLayout.AddChidren(btnDelText);
 
@@ -181,7 +182,7 @@
                 Y = Application.GetRealHeight(48),
                 TextAlignment = TextAlignment.Center,
                 Text = Language.StringByID(R.MyInternationalizationString.ClickGenerate),
-                TextColor = Shared.Common.ZigbeeColor.Current.XMTopTitleText,
+                TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
                 TextSize = 12,
                 Visible = true,
                 Enable = true,
@@ -226,7 +227,7 @@
                 Height = Application.GetRealHeight(49),
                 Width = Application.GetRealWidth(84 + 135),
                 Y = Application.GetRealHeight(441),
-                TextColor = Shared.Common.ZigbeeColor.Current.XMGray2,
+                TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
                 TextSize = 12,
                 TextAlignment = TextAlignment.CenterRight,
             };
@@ -250,7 +251,7 @@
                 Width = Application.GetRealWidth(717 - 508),
                 X = Application.GetRealWidth(508),
                 Y = Application.GetRealHeight(444),
-                TextColor = Shared.Common.ZigbeeColor.Current.XMGray2,
+                TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
                 TextAlignment = TextAlignment.CenterLeft,
                 TextSize = 12,
             };
@@ -341,7 +342,8 @@
                 BackgroundColor = ZigbeeColor.Current.XMWhite,
             };
             this.midFrameLayout.AddChidren(bottomFrameLayout);
-
+            bottomFrameLayout.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
+             
             var informationEdit = new Button()
             {
                 Height = Application.GetRealHeight(60),
@@ -393,7 +395,7 @@
                 {
                     Width = Application.GetRealWidth(58),
                     Height = Application.GetRealHeight(58),
-                    UnSelectedImagePath = "Item/Next.png",
+                    UnSelectedImagePath = "Item/RightNext.png",
                     SelectedImagePath = "Item/Down.png",
                 };
                 btnNextFrameLayout.AddChidren(btnNext);
@@ -508,6 +510,7 @@
                 BackgroundColor = Shared.Common.ZigbeeColor.Current.XMUnSelect,
                 TextColor = Shared.Common.ZigbeeColor.Current.XMWhite,
                 TextSize = 16,
+                IsBold =true,
                 Enable = false,
             };
             bottomFrameLayout.AddChidren(btnFinifh);
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/TimeSettignPage.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/TimeSettignPage.cs
index bd30cea..38ceff3 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/TimeSettignPage.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/TimeSettignPage.cs
@@ -163,7 +163,7 @@
                     X = Application.GetRealWidth(58),
                     TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
                     TextAlignment = TextAlignment.CenterLeft,
-                    TextSize = 12,
+                    TextSize = 14,
                 };
                 rowLayout.AddChidren(btnDateTime);
 
@@ -187,7 +187,7 @@
                 {
                     Width = Application.GetRealWidth(58),
                     Height = Application.GetRealHeight(58),
-                    UnSelectedImagePath = "Item/Next.png",
+                    UnSelectedImagePath = "Item/RightNext.png",
                     SelectedImagePath = "Item/Down.png",
                 };
                 btnNextFrameLayout.AddChidren(btnNext);
@@ -210,7 +210,7 @@
                     {
                         TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
                         TextAlignment = TextAlignment.CenterRight,
-                        TextSize = 12,
+                        TextSize = 14,
                         Text = "_" + Language.StringByID(R.MyInternationalizationString.Year) + "_" + Language.StringByID(R.MyInternationalizationString.Month) + "_" + Language.StringByID(R.MyInternationalizationString.Day),
                     };
                     textDisplayDateFrameLayout.AddChidren(textDisplayDate);
@@ -241,7 +241,7 @@
                     {
                         TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
                         TextAlignment = TextAlignment.CenterRight,
-                        TextSize = 12,
+                        TextSize = 14,
                         Text = "00:00",
                     };
                     textDisplayDateFrameLayout.AddChidren(textDisplayTime);
@@ -282,13 +282,72 @@
                 EventHandler<MouseEventArgs> hander = (sender, e) =>
                 {
                     this.midFrameLayout.AddChidren(this.shadowRadiusFrameLayout);
+                    this.bottomRadiusFrameLayout.RemoveAll();
                     this.BottomRadiusFrameLayout(this);
-
                     var mUIPickerView = new UIPickerView()
                     {
                         X = Application.GetRealWidth(0),
                     };
                     this.bottomRadiusFrameLayout.AddChidren(mUIPickerView);
+
+                    var btnTextM = new Button()
+                    {
+                        Width = Application.GetRealWidth(0),
+                        Height = Application.GetRealHeight(58), 
+                        Y = Application.GetRealHeight(372),
+                        Text= "鏈�", 
+                        TextSize=14, 
+                        TextColor=ZigbeeColor.Current.XMBlack,
+                    };
+                    this.bottomRadiusFrameLayout.AddChidren(btnTextM);
+                    var btnTextD = new Button()
+                    {
+                        Width = Application.GetRealWidth(0),
+                        Height = Application.GetRealHeight(58), 
+                        Y = Application.GetRealHeight(372),
+                        Text = "鏃�",
+                        TextColor = ZigbeeColor.Current.XMBlack,
+                        TextSize = 14,
+                     };
+                    this.bottomRadiusFrameLayout.AddChidren(btnTextD);
+
+                    var btnLine1 = new FrameLayout()
+                    {
+                        Width = Application.GetRealWidth(0),
+                        Height = 2,
+                        Y = Application.GetRealHeight(161 + 177),
+                        BackgroundColor =Shared.Common.ZigbeeColor.Current.XMRowLine,
+                    };
+                    this.bottomRadiusFrameLayout.AddChidren(btnLine1); 
+
+                    var btnLine2 = new FrameLayout()
+                    {
+                        Width = Application.GetRealWidth(0),
+                        Height = btnLine1.Height,
+                        X = Application.GetRealWidth(246+588),
+                        Y = btnLine1.Y,
+                        BackgroundColor =Shared.Common.ZigbeeColor.Current.XMRowLine,
+                    };
+                    this.bottomRadiusFrameLayout.AddChidren(btnLine2);
+
+                    var btnLine3 = new FrameLayout()
+                    {
+                        Width = Application.GetRealWidth(0),
+                        Height = 2,
+                        Y = Application.GetRealHeight(161 + 269),
+                        BackgroundColor =Shared.Common.ZigbeeColor.Current.XMRowLine,
+                    };
+                    this.bottomRadiusFrameLayout.AddChidren(btnLine3);
+                     
+                    var btnLine4 = new FrameLayout()
+                    {
+                        Width = Application.GetRealWidth(0),
+                        Height = btnLine3.Height,
+                        X = btnLine2.X,
+                        Y = btnLine3.Y,
+                        BackgroundColor =Shared.Common.ZigbeeColor.Current.XMRowLine,
+                    };
+                    this.bottomRadiusFrameLayout.AddChidren(btnLine4);
 
                     if (curIndex == 0)
                     {
@@ -318,15 +377,56 @@
                         for (int m = 1; m < 13; m++)
                         {
                             mList2.Add(m.ToString());
+                            if (Language.CurrentLanguage == "Chinese")
+                            {
+                                btnTextM.Width = Application.GetRealWidth(100);
+                                if (setTimeType != "DoorLockTime")
+                                {
+                                    btnTextM.X = Application.GetRealWidth(418);
+                                }
+                                else
+                                {
+                                    btnTextM.X = Application.GetRealWidth(566); 
+                                }
+                                
+                            }
+                            else
+                            {
+                                btnTextM.Width = Application.GetRealWidth(0);
+                            }
+
                         }
                         for (int d = 1; d < days + 1; d++)
                         {
                             mList3.Add(d.ToString());
+                            if (Language.CurrentLanguage == "Chinese")
+                            { 
+                                btnTextD.Width = Application.GetRealWidth(100);
+                                if (setTimeType != "DoorLockTime")
+                                {
+                                    btnTextD.X = Application.GetRealWidth(710);
+                                }
+                                else
+                                {
+                                    btnTextD.X = Application.GetRealWidth(922);
+                                }
+                            }
+                            else
+                            {
+                                btnTextD.Width = Application.GetRealWidth(0);
+                            }
                         }
 
                         if (setTimeType != "DoorLockTime")
                         {
                             mUIPickerView.setNPicker(mList2, mList3, null);
+                            mUIPickerView.Width = Application.GetRealWidth(588);
+                            mUIPickerView.X = Application.GetRealWidth(246);
+                            btnLine1.Width=btnLine2.Width= btnLine3.Width = btnLine4.Width = Application.GetRealWidth(250);
+                            btnLine1.Y = Application.GetRealHeight(161 + 177+15);
+                            btnLine2.Y = Application.GetRealHeight(161 + 177 + 15);
+                            btnLine3.Y = Application.GetRealHeight(161 + 269+15);
+                            btnLine4.Y = Application.GetRealHeight(161 + 269 + 15);
                             mUIPickerView.setCurrentItems(dtNow.Month - 1, dtNow.Day - 1, 0);
                             curMonth = dtNow.Month;
                             curDay = dtNow.Day;
@@ -373,12 +473,16 @@
                                     timeSetAction();
                                 }
                                 this.shadowRadiusFrameLayout.RemoveFromParent();
+                                this.bottomRadiusFrameLayout.RemoveFromParent();
                                 MidFrameLayoutContent();
                             };
                         }
                         else
                         {
                             mUIPickerView.setNPicker(mList1, mList2, mList3);
+                            mUIPickerView.Width = Application.GetRealWidth(1080);
+                            mUIPickerView.X = Application.GetRealWidth(0);
+                            btnLine1.Width = btnLine2.Width = btnLine3.Width = btnLine4.Width = Application.GetRealWidth(0);
                             mUIPickerView.setCurrentItems(dtNow.Year, dtNow.Month - 1, dtNow.Day - 1);
                             curYear = dtNow.Year;
                             curMonth = dtNow.Month;
@@ -394,7 +498,7 @@
                                 curHour = dtNow.Hour;
                                 curMin = dtNow.Minute;
                                 curSec = dtNow.Second;
-                            }
+                            } 
                         }
 
                         Action dAction = () =>
@@ -408,16 +512,37 @@
                                 for (int d = 1; d < days + 1; d++)
                                 {
                                     mList3.Add(d.ToString());
+                                    if (Language.CurrentLanguage == "Chinese")
+                                    {
+                                        btnTextD.Width = Application.GetRealWidth(100);
+                                        if (setTimeType != "DoorLockTime")
+                                        {
+                                            btnTextD.X = Application.GetRealWidth(710);
+                                        }
+                                        else
+                                        {
+                                            btnTextD.X = Application.GetRealWidth(922);
+                                        }
+                                    }
+                                    else
+                                    {
+                                        btnTextD.Width = Application.GetRealWidth(0);
+                                    }
                                 }
-
                                 if (setTimeType != "DoorLockTime")
                                 {
                                     mUIPickerView.setNPicker(mList2, mList3, null);
+                                    mUIPickerView.Width = Application.GetRealWidth(588);
+                                    mUIPickerView.X = Application.GetRealWidth(246);
+                                    btnLine1.Width = btnLine2.Width = btnLine3.Width = btnLine4.Width = Application.GetRealWidth(250);
                                     mUIPickerView.setCurrentItems(curMonth - 1, curDay - 1, 0);
                                 }
                                 else
                                 {
                                     mUIPickerView.setNPicker(mList1, mList2, mList3);
+                                    mUIPickerView.Width = Application.GetRealWidth(1080);
+                                    mUIPickerView.X = Application.GetRealWidth(0);
+                                    btnLine1.Width = btnLine2.Width = btnLine3.Width = btnLine4.Width = Application.GetRealWidth(0);
                                     mUIPickerView.setCurrentItems(curYear, curMonth - 1, curDay - 1);
                                 }
                             }
@@ -477,6 +602,9 @@
                             }
                         }
                         mUIPickerView.setNPicker(mList1, mList2, null);
+                        mUIPickerView.Width = Application.GetRealWidth(588);
+                        mUIPickerView.X = Application.GetRealWidth(246);
+                        btnLine1.Width = btnLine2.Width = btnLine3.Width = btnLine4.Width = Application.GetRealWidth(250);
                         mUIPickerView.setCurrentItems(dtNow.Hour, dtNow.Minute, 0);
                         if (CurentDoorLockTime != null)
                         {
@@ -545,6 +673,7 @@
                                     timeSetAction();
                                 }
                                 this.shadowRadiusFrameLayout.RemoveFromParent();
+                                this.bottomRadiusFrameLayout.RemoveFromParent();
                                 MidFrameLayoutContent();
                             };
                         }
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UnLockMethod.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UnLockMethod.cs
index 87a5bc5..3c14341 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UnLockMethod.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UnLockMethod.cs
@@ -46,7 +46,7 @@
 
         #region 鈼� 鍙橀噺鐢虫槑__________________________
         ZigBee.Device.DoorLock doorLock;//褰撳墠闂ㄩ攣
-        VerticalRefreshLayout bodyView;//鍒锋柊View
+        VerticalListRefreshControl  bodyView;//鍒锋柊View
         Button currentMethod;// 褰撳墠閫夋嫨鐨勬柟寮�
         Shared.Phone.UserCenter.MemberInfoRes curAccountObj;//褰撳墠璐︽埛
         Button entryStatusPic;
@@ -176,8 +176,9 @@
                 Y = Application.GetRealHeight(35),
                 X = Application.GetRealWidth(812 - 100),
                 TextAlignment = TextAlignment.CenterRight,
-                TextColor = Shared.Common.ZigbeeColor.Current.XMTopTitleText,
+                TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
                 TextSize = 12,
+                IsBold =true,
             };
             midTopFrameLayout.AddChidren(btnAllMethod);
             // 绫诲瀷鍖哄垎 
@@ -226,10 +227,10 @@
             this.midFrameLayout.AddChidren(btnLine);
             #endregion
 
-            bodyView = new VerticalRefreshLayout()
+            bodyView = new VerticalListRefreshControl(29)
             {
                 Y = btnLine.Bottom,
-                Height = Application.GetRealHeight(1921 - 184 - 116),
+                Height = Application.GetRealHeight(1921 - 184 - 116), 
             };
             this.midFrameLayout.AddChidren(bodyView);
             bodyView.BeginHeaderRefreshingAction += () =>
@@ -237,7 +238,7 @@
                 bodyView.BeginHeaderRefreshing();
                 ReadDoorLockUserInfo();
             };
-            BlankPicUI();
+            BlankPicUI(); 
         }
 
         /// <summary>
@@ -269,18 +270,19 @@
                 Gravity = Gravity.CenterHorizontal,
                 Visible = false,
                 Y = Application.GetRealHeight(844),
+                TextSize = 12,
             };
             blankFrameLayout.AddChidren(btnPicTip);
 
             btnPicTip1 = new Button
             {
-                X = Application.GetRealWidth(397),
-                Y = btnPicTip.Bottom,
+                X = Application.GetRealWidth(397), 
+                Y = Application.GetRealHeight(844+49),
                 Text = Language.StringByID(R.MyInternationalizationString.NoPasswordInformation1),
                 TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
                 Gravity = Gravity.CenterHorizontal,
-                Visible = false,
-                BackgroundColor = 0xff00ff00,
+                Visible = true, 
+                TextSize =12,
             };
             blankFrameLayout.AddChidren(btnPicTip1);
         }
@@ -332,13 +334,7 @@
                 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.GetMinRealAverage(0),
-                    BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite,
-                };
-                bodyView.AddChidren(frameLayoutRow);
+                blankFrameLayout.Height = Application.GetRealHeight(0); 
 
                 int i = 0;
                 foreach (var curUserId in curAccountDoorLockUserList.Keys)
@@ -369,69 +365,177 @@
                     }
 
                     #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 btnPicFrameLayout = new FrameLayout()
+                    var rowFrameLayout = new RowLayoutControl(bodyView.rowSpace / 2);
+                    rowFrameLayout.BackgroundColor = ZigbeeColor.Current.XMWhite;
+                    bodyView.AddChidren(rowFrameLayout);
+                    rowFrameLayout.frameTable.UseClickStatu = false;
+                    var btnicon = rowFrameLayout.frameTable.AddLeftIcon();
+                    btnicon.UnSelectedImagePath = "DoorLock/DoorLockUserPic.png";
+                    //涓婇潰闂ㄩ攣鐢ㄦ埛鍚嶇О涓�琛�
+                    //rowFrameLayout.frameTable.AddTopView("", 800);
+                    var memberText = "";
+                    if (curAccountObj.UserName == "" || curAccountObj.UserName == null)
                     {
-                        Width = Application.GetRealWidth(81),
-                        Height = Application.GetRealHeight(81),
-                        X = Application.GetRealWidth(40),
-                        Y = Application.GetRealHeight(49),
-                    };
-                    rowFrameLayout.AddChidren(btnPicFrameLayout);
-
-                    var btnPic = new Button()
+                        memberText = curAccountObj.Account;
+                    }
+                    else
                     {
-                        Width = Application.GetRealWidth(84),
-                        Height = Application.GetRealHeight(84),
-                        UnSelectedImagePath = "DoorLock/DoorLockUserPic.png",
-                    };
-                    btnPicFrameLayout.AddChidren(btnPic);
-
+                        memberText = curAccountObj.UserName;
+                    }
+                    //鎴愬憳涓�琛�
+                    var btnaa = rowFrameLayout.frameTable.AddBottomView(memberText, 800);
                     var btnDoorlockUser = new EditText()
                     {
-                        Width = Application.GetRealWidth(1080 - 173),
+                        Width = Application.GetRealWidth(800),
                         Height = Application.GetRealHeight(60),
-                        X = Application.GetRealWidth(173),
-                        Y = Application.GetRealHeight(35),
+                        X = btnaa.X,
+                        Y = rowFrameLayout.chidrenYaxis + Application.GetRealHeight(12),
                         TextSize = 14,
                         PlaceholderTextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
                         TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
                         TextAlignment = TextAlignment.CenterLeft,
                     };
-                    rowFrameLayout.AddChidren(btnDoorlockUser);
-
-                    var btnMember = new Button()
+                    rowFrameLayout.frameTable.AddChidren(btnDoorlockUser, ChidrenBindMode.NotBind);
+                    rowFrameLayout.frameTable.AddBottomLine();
+                    var btndelete = rowFrameLayout.AddDeleteControl();
+                    btndelete.ButtonClickEvent += (sender, e) =>
                     {
-                        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(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);
+                        var dialog = new Dialog { };
+                        var doorDialog = new Shared.Phone.UserCenter.DoorLock.DoorlockDialog(dialog, Language.StringByID(R.MyInternationalizationString.Tip));
+                        doorDialog.Show();
+                        doorDialog.dialogMidFraFrameLayout.Height = Application.GetRealHeight(58);
+                        doorDialog.dialogMidFraFrameLayout.X = Application.GetRealWidth(0);
+                        doorDialog.dialogMidFraFrameLayout.Y = Application.GetRealHeight(202);
+                        doorDialog.dialogMidFraFrameLayout.AddChidren(doorDialog.dialogMidText);
+                        doorDialog.dialogMidText.Text = Language.StringByID(R.MyInternationalizationString.SureToDelUnlockMethod);
+                        doorDialog.dialogMidFraFrameLayout.AddChidren(doorDialog.dialogMidText);
+                        doorDialog.dialogBtnConfirm.Text = Language.StringByID(R.MyInternationalizationString.DoorlockConfirm);
+                        doorDialog.dialogBtnCancel.MouseUpEventHandler += (sender1, e1) =>
+                        {
+                            dialog.Close();
+                        };
+                        doorDialog.dialogBtnConfirm.MouseUpEventHandler += async (sender1, e1) =>
+                        {
+                            try
+                            {
+                                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)
+                                {
+                                    if (resultData.defaultControlResponseData.status == 0 || resultData.defaultControlResponseData.status == 2)
+                                    {
+                                        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.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
+                                        {
+                                            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")
+                                                {
+                                                    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
+                                {
+                                    new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(CommonPage.Instance);
+                                }
+                                dialog.Close();
+                            }
+                            catch { }
+                            finally
+                            {
+                                CommonPage.Loading.Hide();
+                            }
+                        };
+                    }; 
                     #endregion
 
                     #region 鏁版嵁澶勭悊
@@ -475,14 +579,6 @@
                             break;
                     }
 
-                    if (curAccountObj.UserName == "" || curAccountObj.UserName == null)
-                    {
-                        btnMember.Text = curAccountObj.Account;
-                    }
-                    else
-                    {
-                        btnMember.Text = curAccountObj.UserName;
-                    }
 
                     Action<Shared.View> action = async (obj) =>
                      {
@@ -530,152 +626,147 @@
                      };
                     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)
-                            {
-                                try
-                                {
-                                    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)
-                                    {
-                                        if (resultData.defaultControlResponseData.status == 0 || resultData.defaultControlResponseData.status == 2)
-                                        {
-                                            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.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
-                                            {
-                                                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")
-                                                    {
-                                                        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
-                                    {
-                                        new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(btnDel);
-                                    }
-                                }
-                                catch { }
-                                finally
-                                {
-                                    CommonPage.Loading.Hide();
-                                }
-                            }
-                        };
-                    };
+                    //btnDel.MouseUpEventHandler += (sender, e) =>
+                    //{
+                    //var dialog = new Dialog { };
+                    //var doorDialog = new Shared.Phone.UserCenter.DoorLock.DoorlockDialog(dialog, Language.StringByID(R.MyInternationalizationString.Tip));
+                    //doorDialog.Show();
+                    //doorDialog.dialogMidFraFrameLayout.Height = Application.GetRealHeight(58);
+                    //doorDialog.dialogMidFraFrameLayout.X = Application.GetRealWidth(0);
+                    //doorDialog.dialogMidFraFrameLayout.Y = Application.GetRealHeight(202);
+                    //doorDialog.dialogMidFraFrameLayout.AddChidren(doorDialog.dialogMidText);
+                    //doorDialog.dialogMidText.Text = Language.StringByID(R.MyInternationalizationString.SureToDelUnlockMethod);
+                    //doorDialog.dialogMidFraFrameLayout.AddChidren(doorDialog.dialogMidText);
+                    //doorDialog.dialogBtnConfirm.Text = Language.StringByID(R.MyInternationalizationString.DoorlockConfirm);
+                    //doorDialog.dialogBtnCancel.MouseUpEventHandler += (sender1, e1) =>
+                    //{
+                    //    dialog.Close();
+                    //};
+                    //doorDialog.dialogBtnConfirm.MouseUpEventHandler += async (sender1, e1) =>
+                    //{
+                    //    try
+                    //    {
+                    //        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)
+                    //        {
+                    //            if (resultData.defaultControlResponseData.status == 0 || resultData.defaultControlResponseData.status == 2)
+                    //            {
+                    //                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.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
+                    //                {
+                    //                    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")
+                    //                        {
+                    //                            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
+                    //        {
+                    //            new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show(btnDel);
+                    //        }
+                    //        dialog.Close();
+                    //    }
+                    //    catch { }
+                    //    finally
+                    //    {
+                    //        CommonPage.Loading.Hide();
+                    //    }
+                    //}; 
+                    //};
                     #endregion
                     i++;
                 }
-
-                //閬尅RowLayout澶氫綑鐨勭嚎鏉�
-                for (int j = 0; j < curAccountDoorLockUserList.Keys.Count; j++)
-                {
-                    var frameLayoutRowLineHide = new FrameLayout()
-                    {
-                        Height = 10,
-                        Width = Application.GetRealWidth(173),
-                        X = Application.GetRealWidth(58),
-                        Y = (j + 1) * Application.GetRealHeight(150)-5,
-                        BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite,
-                    };
-                    frameLayoutRow.AddChidren(frameLayoutRowLineHide);
-                }
-                frameLayoutRow.Height = i * Application.GetRealHeight(150);
+                //bodyView.AdjustRealHeight(Application.GetRealHeight(23));
             }
         }
 
@@ -726,7 +817,7 @@
                 {
                     Width = Application.GetRealWidth(81),
                     Height = Application.GetRealHeight(81),
-                    Y = Application.GetRealHeight(55),
+                    Y = Application.GetRealHeight(35),
                 };
                 rowFrameLayout.AddChidren(btnAllMethod);
 
@@ -735,7 +826,7 @@
                     Width = Application.GetRealWidth(311),
                     Height = Application.GetRealHeight(58),
                     X = Application.GetRealWidth(92),
-                    Y = Application.GetRealHeight(69),
+                    Y = Application.GetRealHeight(49),
                     TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
                     TextSize = 14,
                     TextAlignment = TextAlignment.CenterLeft,
@@ -760,6 +851,7 @@
                         doorLock.ReSave();
                         btnAllMethod.IsSelected = true;
                         oldbuttonText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                        oldbuttonText.IsBold = true;
                         TypeRefresh();
                     }
                     dialog.Close();
@@ -796,6 +888,7 @@
                 {
                     btnAllMethod.IsSelected = true;
                     btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                    btnMethodText.IsBold = true;
                     oldbutton = btnAllMethod;
                     oldbuttonText = btnMethodText;
                 }
@@ -803,6 +896,7 @@
                 {
                     btnAllMethod.IsSelected = true;
                     btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                    btnMethodText.IsBold = true;
                     oldbutton = btnAllMethod;
                     oldbuttonText = btnMethodText;
                 }
@@ -810,6 +904,7 @@
                 {
                     btnAllMethod.IsSelected = true;
                     btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                    btnMethodText.IsBold = true;
                     oldbutton = btnAllMethod;
                     oldbuttonText = btnMethodText;
                 }
@@ -817,6 +912,7 @@
                 {
                     btnAllMethod.IsSelected = true;
                     btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                    btnMethodText.IsBold = true;
                     oldbutton = btnAllMethod;
                     oldbuttonText = btnMethodText;
                 }
@@ -824,6 +920,7 @@
                 {
                     btnAllMethod.IsSelected = true;
                     btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                    btnMethodText.IsBold = true;
                     oldbutton = btnAllMethod;
                     oldbuttonText = btnMethodText;
                 }
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UndistributeDoorlockUserPage.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UndistributeDoorlockUserPage.cs
index 4f3edaa..2858bfa 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UndistributeDoorlockUserPage.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UndistributeDoorlockUserPage.cs
@@ -100,8 +100,9 @@
                 Y = Application.GetRealHeight(35),
                 X = Application.GetRealWidth(812 - 100),
                 TextAlignment = TextAlignment.CenterRight,
-                TextColor = Shared.Common.ZigbeeColor.Current.XMTopTitleText,
+                TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
                 TextSize = 12,
+                IsBold =true,
             };
             midTopFrameLayout.AddChidren(btnAllMethod);
             // 绫诲瀷鍖哄垎 
@@ -243,6 +244,7 @@
                     TextAlignment = TextAlignment.CenterLeft,
                     TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
                     Gravity = Gravity.CenterVertical,
+                    TextSize =15,
                 };
                 rowFrameLayout.AddChidren(btnText);
 
@@ -314,7 +316,7 @@
         {
             #region  UI
             FrameLayout flMain = new FrameLayout { BackgroundColor = 0x0f000000 };
-            this.midFrameLayout.AddChidren(flMain);
+            this.AddChidren(flMain);
             flMain.MouseUpEventHandler += (sender11, e11) =>
             {
                 flMain.RemoveFromParent();
@@ -323,24 +325,24 @@
             bottomFrameLayout = new FrameLayout()
             {
                 Height = Application.GetRealHeight(100),
-                Y = Application.GetRealHeight(930),
-                Radius = 17,
+                Y = Application.GetRealHeight(1253),
+                Radius =(uint) Application.GetRealHeight(100/2),
                 BackgroundColor = ZigbeeColor.Current.XMWhite,
             };
             flMain.AddChidren(bottomFrameLayout);
 
             var bottomFrameLayout1 = new FrameLayout()
             {
-                Height = Application.GetRealHeight(806 - 50),
-                Y = Application.GetRealHeight(930 + 48),
+                Height = Application.GetRealHeight(668 - 60),
+                Y = Application.GetRealHeight(1253+58),
                 BackgroundColor = ZigbeeColor.Current.XMWhite,
             };
             flMain.AddChidren(bottomFrameLayout1);
 
             var bottomFrameLayout2 = new FrameLayout()
             {
-                Height = Application.GetRealHeight(806),
-                Y = Application.GetRealHeight(930),
+                Height = Application.GetRealHeight(668),
+                Y = Application.GetRealHeight(1253),
             };
             flMain.AddChidren(bottomFrameLayout2);
 
@@ -519,12 +521,12 @@
                            CommonPage.Loading.Start("");
                        });
                        if (curAccountId == "")
-                       {  
+                       {
                            Application.RunOnMainThread(() =>
                            {
                                flMain.RemoveFromParent();
                                bottomFrameLayout.RemoveAll();
-                               CommonPage.Loading.Hide ();
+                               CommonPage.Loading.Hide();
                            });
                        }
                        else
@@ -596,11 +598,12 @@
                                    {
                                        Application.RunOnMainThread(() =>
                                        {
+                                           new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.DistributeSuccess), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
                                            TypeRefresh();
                                            CommonPage.Loading.Hide();
                                            flMain.RemoveFromParent();
                                            bottomFrameLayout.RemoveAll();
-                                       }); 
+                                       });
                                    }
                                    else
                                    {
@@ -684,7 +687,7 @@
                 {
                     Width = Application.GetRealWidth(81),
                     Height = Application.GetRealHeight(81),
-                    Y = Application.GetRealHeight(55),
+                    Y = Application.GetRealHeight(35),
                 };
                 rowFrameLayout.AddChidren(btnAllMethod);
 
@@ -693,7 +696,7 @@
                     Width = Application.GetRealWidth(311),
                     Height = Application.GetRealHeight(58),
                     X = Application.GetRealWidth(92),
-                    Y = Application.GetRealHeight(69),
+                    Y = Application.GetRealHeight(49),
                     TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
                     TextSize = 14,
                     TextAlignment = TextAlignment.CenterLeft,
@@ -717,6 +720,7 @@
                         doorLock.currentUserDisplayMethod = btnMethodText.Text;
                         btnAllMethod.IsSelected = true;
                         oldbuttonText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                        oldbuttonText.IsBold = true;
                         TypeRefresh();
                     }
                     dialog.Close();
@@ -753,6 +757,7 @@
                 {
                     btnAllMethod.IsSelected = true;
                     btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                    btnMethodText.IsBold = true;
                     oldbutton = btnAllMethod;
                     oldbuttonText = btnMethodText;
                 }
@@ -760,6 +765,7 @@
                 {
                     btnAllMethod.IsSelected = true;
                     btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                    btnMethodText.IsBold = true;
                     oldbutton = btnAllMethod;
                     oldbuttonText = btnMethodText;
                 }
@@ -767,6 +773,7 @@
                 {
                     btnAllMethod.IsSelected = true;
                     btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                    btnMethodText.IsBold = true;
                     oldbutton = btnAllMethod;
                     oldbuttonText = btnMethodText;
                 }
@@ -774,6 +781,7 @@
                 {
                     btnAllMethod.IsSelected = true;
                     btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                    btnMethodText.IsBold = true;
                     oldbutton = btnAllMethod;
                     oldbuttonText = btnMethodText;
                 }
@@ -781,6 +789,7 @@
                 {
                     btnAllMethod.IsSelected = true;
                     btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                    btnMethodText.IsBold = true;
                     oldbutton = btnAllMethod;
                     oldbuttonText = btnMethodText;
                 }
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs
index 028d6f1..3031802 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs
@@ -127,12 +127,14 @@
                 Height = Application.GetRealHeight(60),
                 X = Application.GetRealWidth(372),
                 Y = Application.GetRealHeight(46),
-                TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
-                Text = string.IsNullOrEmpty(doorLock.DeviceName) ? Language.StringByID(R.MyInternationalizationString.UNKnown) : doorLock.DeviceName,
+                TextColor = Shared.Common.ZigbeeColor.Current.XMBlack ,
                 TextSize = 15,
                 TextAlignment = TextAlignment.Center,
+                IsBold =true,
             };
             midTopFrameLayout.AddChidren(btnDoorLockTitle);
+            //鑾峰彇Mac鍚嶅瓧 
+            btnDoorLockTitle.Text = Common.LocalDevice.Current.GetDeviceMacName(doorLock);
 
             var btnRecord = new Button()
             {
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserManagement.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserManagement.cs
index 194f8d7..381fa8d 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserManagement.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserManagement.cs
@@ -125,12 +125,14 @@
             var btnUndistributeText = new Button
             {
                 Height = Application.GetRealHeight(72),
-                Width = Application.GetRealWidth(121),
+                Width = Application.GetRealWidth(150),
                 TextID = R.MyInternationalizationString.Undistributed,
                 TextColor = Shared.Common.ZigbeeColor.Current.XMTopTitleText,
                 X = btnUndistributeIcon.Right,
-                TextAlignment = TextAlignment.CenterLeft,
-            };
+                IsBold =true,
+                TextSize =13,
+                TextAlignment = TextAlignment.CenterLeft, 
+             };
             btnAddFrameLayout.AddChidren(btnUndistributeText);
             if (UserCenterResourse.UserInfo.AuthorityNo != 1)
             {
@@ -183,7 +185,7 @@
                     X = Application.GetRealWidth(58),
                     Width = Application.GetRealWidth(300),
                     TextAlignment = TextAlignment.CenterLeft,
-                    TextColor = Shared.Common.ZigbeeColor.Current.XMTopTitleText,
+                    TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
                     Gravity = Gravity.CenterVertical,
                     TextSize = 14,
                 };
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WiredGatewayDirectionForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WiredGatewayDirectionForm.cs
index 30dc974..1d753b5 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WiredGatewayDirectionForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WiredGatewayDirectionForm.cs
@@ -65,7 +65,7 @@
             };
             bodyFrameLayout.AddChidren(btnHelp);
             //搴曠嚎
-            int lineWidth = btnHelp.GetRealWidthByText(12);
+            int lineWidth = btnHelp.GetRealWidthByText();
             var btnLine = new NormalViewControl(lineWidth, ControlCommonResourse.BottomLineHeight, false);
             btnLine.BackgroundColor = UserCenterColor.Current.TextOrangeColor;
             btnLine.Gravity = Gravity.CenterHorizontal;
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WirelessApDirection2Form.cs b/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WirelessApDirection2Form.cs
index f61552e..dee86aa 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WirelessApDirection2Form.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WirelessApDirection2Form.cs
@@ -97,7 +97,7 @@
             };
             bodyFrameLayout.AddChidren(btnSettion);
             //搴曠嚎
-            int lineWidth = btnSettion.GetRealWidthByText(12);
+            int lineWidth = btnSettion.GetRealWidthByText();
             var btnLine1 = new NormalViewControl(lineWidth, ControlCommonResourse.BottomLineHeight, false);
             btnLine1.BackgroundColor = 0xff0075ff;
             btnLine1.Gravity = Gravity.CenterHorizontal;
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WirelessApDirection3Form.cs b/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WirelessApDirection3Form.cs
index 1919e16..aa16a54 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WirelessApDirection3Form.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WirelessApDirection3Form.cs
@@ -98,7 +98,7 @@
             };
             bodyFrameLayout.AddChidren(btnSettion);
             //搴曠嚎
-            int lineWidth = btnSettion.GetRealWidthByText(12);
+            int lineWidth = btnSettion.GetRealWidthByText();
             var btnLine1 = new NormalViewControl(lineWidth, ControlCommonResourse.BottomLineHeight, false);
             btnLine1.BackgroundColor = 0xff0075ff;
             btnLine1.Gravity = Gravity.CenterHorizontal;
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WirelessUdpDirectionForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WirelessUdpDirectionForm.cs
index f6735f4..013dee5 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WirelessUdpDirectionForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Add/WirelessUdpDirectionForm.cs
@@ -67,7 +67,7 @@
             };
             bodyFrameLayout.AddChidren(btnSettion);
             //搴曠嚎
-            int lineWidth = btnSettion.GetRealWidthByText(12);
+            int lineWidth = btnSettion.GetRealWidthByText();
             var btnLine1 = new NormalViewControl(lineWidth, ControlCommonResourse.BottomLineHeight, false);
             btnLine1.BackgroundColor = 0xff0075ff;
             btnLine1.Gravity = Gravity.CenterHorizontal;
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Manage/GatewayInfoEditorForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Manage/GatewayInfoEditorForm.cs
index af7eff0..7989f1a 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Manage/GatewayInfoEditorForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Manage/GatewayInfoEditorForm.cs
@@ -204,7 +204,7 @@
         private void ShowTopRightMenu()
         {
             bool flage = UserCenterResourse.DicActionForm.ContainsKey("NewGateWayMenuSelectForm");
-            var frame = new TopRightMenuControl(flage == true ? 1 : 3);
+            var frame = new TopRightMenuControl(flage == true ? 1 : 3, 1);
             //瀹氫綅
             string MenuName = Language.StringByID(R.MyInternationalizationString.uFixedPosition);
             frame.AddRowMenu(MenuName, "Item/FixedPosition.png", "Item/FixedPositionSelected.png", () =>
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Manage/GatewayListForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Manage/GatewayListForm.cs
index 15f6ba8..ffbdd5d 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Manage/GatewayListForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Manage/GatewayListForm.cs
@@ -218,14 +218,14 @@
             }
 
             //褰撳墠缃戝叧鐨勮鏍�
-            //if (strWayId == GatewayResourse.AppOldSelectGatewayId)
-            //{
-            //    var btnNow = new IconViewControl(52);
-            //    btnNow.Y = Application.GetMinReal(23) + gatewayRow.frameTable.chidrenYaxis;
-            //    btnNow.UnSelectedImagePath = "Item/NowAcctionTip.png";
-            //    btnNow.X = gatewayRow.btnName.X + gatewayRow.btnName.GetRealWidthByText(15);
-            //    gatewayRow.frameTable.AddChidren(btnNow, ChidrenBindMode.BindEventOnly);
-            //}
+            if (strWayId == GatewayResourse.AppOldSelectGatewayId)
+            {
+                var btnNow = new IconViewControl(52);
+                btnNow.Y = Application.GetMinReal(23) + gatewayRow.frameTable.chidrenYaxis;
+                btnNow.UnSelectedImagePath = "Item/NowAcctionTip.png";
+                btnNow.X = gatewayRow.btnName.X + gatewayRow.btnName.GetRealWidthByText();
+                gatewayRow.frameTable.AddChidren(btnNow, ChidrenBindMode.BindEventOnly);
+            }
         }
 
         #endregion
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Manage/GatewayProductInfoForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Manage/GatewayProductInfoForm.cs
index d0de6d5..b885afb 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Manage/GatewayProductInfoForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Manage/GatewayProductInfoForm.cs
@@ -46,12 +46,17 @@
 
             bool gateWayExist = HdlGatewayLogic.Current.IsGatewayExist(zbGateway);
 
+            var framePic = new FrameLayout();
+            framePic.Width = Application.GetRealWidth(855);
+            framePic.Height = Application.GetRealHeight(570);
+            framePic.Gravity = Gravity.CenterHorizontal;
+            framePic.Y = Application.GetRealHeight(58);
+            bodyFrameLayout.AddChidren(framePic);
             //鍥剧墖
-            var btnImage = new PicViewControl(855, 570, true);
-            btnImage.Y = Application.GetRealHeight(58);
-            btnImage.Gravity = Gravity.CenterHorizontal;
-            HdlGatewayLogic.Current.SetRealGatewayPictrue(btnImage, zbGateway);
-            bodyFrameLayout.AddChidren(btnImage);
+            var btnImage = new PicViewControl(380, 328, true);
+            btnImage.Gravity = Gravity.Center;
+            btnImage.UnSelectedImagePath = "Gateway/RealGateway.png";
+            framePic.AddChidren(btnImage);
 
             //鍒濆鍖栨甯�
             var tableContr = new InformationEditorControl();
@@ -130,7 +135,7 @@
                 };
                 bodyFrameLayout.AddChidren(btnHelp);
                 //搴曠嚎
-                int lineWidth = btnHelp.GetRealWidthByText(12);
+                int lineWidth = btnHelp.GetRealWidthByText();
                 var btnLine = new NormalViewControl(lineWidth, ControlCommonResourse.BottomLineHeight, false);
                 btnLine.BackgroundColor = UserCenterColor.Current.TextOrangeColor;
                 btnLine.Gravity = Gravity.CenterHorizontal;
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Update/GatewayFirmwareUpdateForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Update/GatewayFirmwareUpdateForm.cs
index 20457c4..2742a12 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Update/GatewayFirmwareUpdateForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Update/GatewayFirmwareUpdateForm.cs
@@ -277,7 +277,7 @@
         /// </summary>
         private void ShowTopRightMenu()
         {
-            var frame = new TopRightMenuControl(1);
+            var frame = new TopRightMenuControl(1, 2);
             //鍘嗗彶鐗堟湰
             var deviceMenu = Language.StringByID(R.MyInternationalizationString.uHistoryVersion);
             frame.AddRowMenu(deviceMenu, "", "", () =>
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Update/GatewayVirtualDriveInfoForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Update/GatewayVirtualDriveInfoForm.cs
index 69d5d06..ec3cf80 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Update/GatewayVirtualDriveInfoForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Gateway/Update/GatewayVirtualDriveInfoForm.cs
@@ -63,7 +63,7 @@
                 rowMenu.AddBottomLine();
 
                 var btnRight = rowMenu.AddMostRightEmptyIcon(58, 58);
-                btnRight.UnSelectedImagePath = "Item/Next.png";
+                btnRight.UnSelectedImagePath = "Item/RightNext.png";
                 btnRight.SelectedImagePath = "Item/Down.png";
                 rowMenu.ButtonClickEvent += (sender, e) =>
                 {
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Guide/GuideCommonForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Guide/GuideCommonForm.cs
new file mode 100755
index 0000000..fa5e841
--- /dev/null
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Guide/GuideCommonForm.cs
@@ -0,0 +1,230 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Shared.Phone.UserCenter.Guide
+{
+    /// <summary>
+    /// 寮曞鐣岄潰鐨勫叡閫氱晫闈�
+    /// </summary>
+    public class GuideCommonForm : FrameLayout
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 鍦烘櫙鍜屽姛鑳界殑鎺т欢
+        /// </summary>
+        public FrameLayout contrSwitch = null;
+        /// <summary>
+        /// 鍦烘櫙鎺т欢
+        /// </summary>
+        public NormalViewControl btnScene = null;
+        /// <summary>
+        /// 鍔熻兘
+        /// </summary>
+        public NormalViewControl btnFunction = null;
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鏄剧ず鐣岄潰
+        /// </summary>
+        public virtual void ShowFrom()
+        {
+            UserView.UserPage.Instance.AddChidren(this);
+            this.BackgroundColor = Common.ZigbeeColor.Current.GXCGrayBackgroundColor;
+
+            //浣忓畢鍒楄〃鍥炬爣
+            var btnHouseIcon = new IconViewControl(69);
+            btnHouseIcon.UnSelectedImagePath = "Item/Floor.png";
+            btnHouseIcon.Y = Application.GetRealHeight(86);
+            btnHouseIcon.X = ControlCommonResourse.XXLeft;
+            this.AddChidren(btnHouseIcon);
+            //娑堟伅鍥炬爣
+            var btnMsg = new IconViewControl(69);
+            btnMsg.Y = Application.GetRealHeight(86);
+            btnMsg.X = Application.GetRealWidth(953);
+            btnMsg.UnSelectedImagePath = "Item/Message.png";
+            this.AddChidren(btnMsg);
+            //浣忓畢鍚嶅瓧
+            var btnHouse = new NormalViewControl(300, 95, true);
+            btnHouse.TextSize = 24;
+            btnHouse.X = ControlCommonResourse.XXLeft;
+            btnHouse.Y = Application.GetRealHeight(161);
+            btnHouse.TextID = R.MyInternationalizationString.uMyResidence;
+            this.AddChidren(btnHouse);
+
+            //宸﹀彸婊戝姩鐨勬埧闂�
+            var roomPageView = new HorizontalPages();
+            roomPageView.Y = Application.GetRealHeight(302);
+            roomPageView.Height = Application.GetRealHeight(478);
+            this.AddChidren(roomPageView);
+            //绐佸嚭杈硅窛
+            roomPageView.TCBJ = Application.GetRealWidth(181);
+            //涓や釜page涔嬮棿鐨勯棿璺�
+            roomPageView.JMBJ = Application.GetRealWidth(0);
+
+            //瀹㈠巺
+            var room1 = new Common.Room();
+            room1.BackgroundImage = "RoomIcon/0.JPG";
+            room1.Name = Language.StringByID(R.MyInternationalizationString.uLivingRoom);
+            var roomView1 = new Phone.Device.CommonForm.RoomView(0, 0);
+            roomPageView.AddChidren(roomView1);
+            roomView1.Init(room1);
+            //闃冲彴
+            var room2 = new Common.Room();
+            room2.BackgroundImage = "RoomIcon/1.JPG";
+            room2.Name = Language.StringByID(R.MyInternationalizationString.uBalcony);
+            var roomView2 = new Phone.Device.CommonForm.RoomView(0, 0);
+            roomPageView.AddChidren(roomView2);
+            roomView2.Init(room2);
+            //鍗у
+            var room3 = new Common.Room();
+            room3.BackgroundImage = "RoomIcon/2.JPG";
+            room3.Name = Language.StringByID(R.MyInternationalizationString.uBedroom);
+            var roomView3 = new Phone.Device.CommonForm.RoomView(0, 0);
+            roomPageView.AddChidren(roomView3);
+            roomView3.Init(room3);
+
+            //鍦烘櫙鍜屽姛鑳界殑鎺т欢
+            this.contrSwitch = new FrameLayout();
+            contrSwitch.Y = roomPageView.Bottom + Application.GetRealHeight(52);
+            contrSwitch.Gravity = Gravity.CenterHorizontal;
+            contrSwitch.Width = Application.GetRealWidth(804);
+            contrSwitch.Height = Application.GetRealHeight(124);
+            contrSwitch.Radius = (uint)Application.GetRealHeight(124) / 2;
+            contrSwitch.BackgroundColor = 0xff232323;
+            this.AddChidren(contrSwitch);
+            //鍦烘櫙
+            this.btnScene = new NormalViewControl(contrSwitch.Width / 2 - Application.GetRealHeight(124) / 2, contrSwitch.Height, false);
+            btnScene.X = Application.GetRealHeight(124) / 2;
+            btnScene.IsBold = true;
+            btnScene.TextAlignment = TextAlignment.Center;
+            btnScene.TextColor = 0xffffffff;
+            btnScene.TextSize = 16;
+            btnScene.TextID = R.MyInternationalizationString.uScence;
+            contrSwitch.AddChidren(btnScene);
+
+            //鍔熻兘
+            this.btnFunction = new NormalViewControl(btnScene.Width, contrSwitch.Height, false);
+            btnFunction.X = btnScene.Right;
+            btnFunction.TextAlignment = TextAlignment.Center;
+            btnFunction.TextColor = 0xFFCBCACA;
+            btnFunction.TextSize = 15;
+            btnFunction.TextID = R.MyInternationalizationString.uFunction;
+            contrSwitch.AddChidren(btnFunction);
+
+            //鑷畾涔夊満鏅�1
+            var sceneView1 = new Phone.Device.CommonForm.SceneMainView(0, 0);
+            sceneView1.X = Application.GetRealWidth(46);
+            sceneView1.Y = roomPageView.Bottom + Application.GetRealHeight(233);
+            this.AddChidren(sceneView1);
+            sceneView1.Init(new Common.SceneUI() { Name = "Getup", IconPath = "SceneIcon/0.jpg" });
+            //鑷畾涔夊満鏅�2
+            var sceneView2 = new Phone.Device.CommonForm.SceneMainView(0, 0);
+            sceneView2.X = Application.GetRealWidth(553);
+            sceneView2.Y = sceneView1.Y;
+            this.AddChidren(sceneView2);
+            sceneView2.Init(new Common.SceneUI() { Name = "Relax", IconPath = "SceneIcon/1.jpg" });
+            //鑷畾涔夊満鏅�3
+            var sceneView3 = new Phone.Device.CommonForm.SceneMainView(0, 0);
+            sceneView3.X = sceneView1.X;
+            sceneView3.Y = sceneView1.Bottom + Application.GetRealHeight(14);
+            this.AddChidren(sceneView3);
+            sceneView3.Init(new Common.SceneUI() { Name = "Dinner", IconPath = "SceneIcon/2.jpg" });
+            //鑷畾涔夊満鏅�4
+            var sceneView4 = new Phone.Device.CommonForm.SceneMainView(0, 0);
+            sceneView4.X = sceneView2.X;
+            sceneView4.Y = sceneView3.Y;
+            this.AddChidren(sceneView4);
+            sceneView4.Init(new Common.SceneUI() { Name = "Goodnight", IconPath = "SceneIcon/3.jpg" });
+
+            //搴曢儴鑿滃崟
+            var frameMenu = new FrameLayout();
+            frameMenu.Height = ControlCommonResourse.BottomFrameHeight;
+            frameMenu.Gravity = Gravity.BottomCenter;
+            this.AddChidren(frameMenu);
+            //绾�
+            var btnLine = new NormalViewControl(frameMenu.Width, 1, false);
+            btnLine.BackgroundColor = Common.ZigbeeColor.Current.GXCBottomLineColor;
+            frameMenu.AddChidren(btnLine);
+            //涓婚〉
+            var btnMenuHome = new IconViewControl(10, false);
+            btnMenuHome.X = Application.GetRealWidth(109);
+            btnMenuHome.Width = Application.GetMinRealAverage(138);
+            btnMenuHome.Height = Application.GetMinRealAverage(98);
+            btnMenuHome.UnSelectedImagePath = "Navigation/HomeSelected.png";
+            frameMenu.AddChidren(btnMenuHome);
+            var btnMenuHomeName = new NormalViewControl(btnMenuHome.Width, Application.GetRealHeight(40), false);
+            btnMenuHomeName.X = btnMenuHome.X;
+            btnMenuHomeName.Y = btnMenuHome.Bottom;
+            btnMenuHomeName.TextAlignment = TextAlignment.Center;
+            btnMenuHomeName.TextColor = 0xFF232323;
+            btnMenuHomeName.TextSize = 10;
+            btnMenuHomeName.TextID = R.MyInternationalizationString.HomePage;
+            frameMenu.AddChidren(btnMenuHomeName);
+
+            //鍒嗙被
+            var btnFenlei = new IconViewControl(10, false);
+            btnFenlei.X = Application.GetRealWidth(469);
+            btnFenlei.Width = Application.GetMinRealAverage(138);
+            btnFenlei.Height = Application.GetMinRealAverage(98);
+            btnFenlei.UnSelectedImagePath = "Navigation/Category.png";
+            frameMenu.AddChidren(btnFenlei);
+            var btnFenleiName = new NormalViewControl(btnFenlei.Width, Application.GetRealHeight(40), false);
+            btnFenleiName.X = btnFenlei.X;
+            btnFenleiName.Y = btnFenlei.Bottom;
+            btnFenleiName.TextAlignment = TextAlignment.Center;
+            btnFenleiName.TextColor = 0xFF232323;
+            btnFenleiName.TextSize = 10;
+            btnFenleiName.TextID = R.MyInternationalizationString.Category;
+            frameMenu.AddChidren(btnFenleiName);
+
+            //鎴戠殑
+            var btnMy = new IconViewControl(10, false);
+            btnMy.X = Application.GetRealWidth(832);
+            btnMy.Width = Application.GetMinRealAverage(138);
+            btnMy.Height = Application.GetMinRealAverage(98);
+            btnMy.UnSelectedImagePath = "Navigation/Setting.png";
+            frameMenu.AddChidren(btnMy);
+            var btnMyName = new NormalViewControl(btnMy.Width, Application.GetRealHeight(40), false);
+            btnMyName.X = btnMy.X;
+            btnMyName.Y = btnMy.Bottom;
+            btnMyName.TextAlignment = TextAlignment.Center;
+            btnMyName.TextColor = 0xFF232323;
+            btnMyName.TextSize = 10;
+            btnMyName.TextID = R.MyInternationalizationString.Me;
+            frameMenu.AddChidren(btnMyName);
+        }
+
+        #endregion
+
+        #region 鈻� 涓�鑸柟娉昣__________________________
+
+        /// <summary>
+        /// 娣诲姞銆愭垜鐭ラ亾浜嗐�戠殑鎸夐挳
+        /// </summary>
+        /// <returns></returns>
+        public NormalViewControl AddIKnwonButton()
+        {
+            var btnContr = new NormalViewControl(397, 86, true);
+            btnContr.BorderWidth = 1;
+            btnContr.BorderColor = UserCenterColor.Current.White;
+            btnContr.Radius = (uint)Application.GetRealHeight(86) / 2;
+            btnContr.BackgroundColor = 0x26FFFFFF;
+            btnContr.Gravity = Gravity.CenterHorizontal;
+            btnContr.Y = Application.GetRealHeight(1650);
+            btnContr.TextAlignment = TextAlignment.Center;
+            btnContr.TextColor = UserCenterColor.Current.White;
+            btnContr.TextSize = 16;
+            btnContr.TextID = R.MyInternationalizationString.uIKnwon;
+            this.AddChidren(btnContr);
+
+            return btnContr;
+        }
+
+        #endregion
+    }
+}
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Guide/GuideForm1.cs b/ZigbeeApp/Shared/Phone/UserCenter/Guide/GuideForm1.cs
new file mode 100755
index 0000000..61c6c2b
--- /dev/null
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Guide/GuideForm1.cs
@@ -0,0 +1,92 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Shared.Phone.UserCenter.Guide
+{
+    /// <summary>
+    /// 寮曞鐣岄潰1
+    /// </summary>
+    public class GuideForm1 : GuideCommonForm
+    {
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鏄剧ず鐣岄潰
+        /// </summary>
+        public override void ShowFrom()
+        {
+            base.ShowFrom();
+
+            //钂欎笂闃村奖
+            var frameBack = new FrameLayout();
+            frameBack.BackgroundColor = 0xad000000;
+            this.AddChidren(frameBack);
+
+            var frameleft = new FrameLayout();
+            frameleft.Width = Application.GetRealWidth(115);
+            frameleft.BackgroundColor = 0xff747474;
+            frameBack.AddChidren(frameleft);
+
+            //鍙虫粦杩涘叆鎴块棿鍒楄〃
+            var btnMsg = new NormalViewControl(300, 75, true);
+            btnMsg.TextID = R.MyInternationalizationString.uSlideRightToRoomList;
+            btnMsg.TextSize = 18;
+            btnMsg.IsBold = true;
+            btnMsg.TextColor = UserCenterColor.Current.White;
+            btnMsg.X = Application.GetRealWidth(132);
+            btnMsg.Y = Application.GetRealHeight(961);
+            btnMsg.Width = btnMsg.GetRealWidthByText();
+            frameBack.AddChidren(btnMsg);
+
+            //鍥炬爣
+            var btnIcon = new IconViewControl(69);
+            btnIcon.X = btnMsg.Right + Application.GetRealWidth(52);
+            btnIcon.Y = btnMsg.Y + Application.GetRealHeight(3);
+            btnIcon.UnSelectedImagePath = "Guide/RightIcon.png";
+            frameBack.AddChidren(btnIcon);
+
+            //鎵嬫寚鍥炬爣
+            var btnFinger = new PicViewControl(102, 93);
+            btnFinger.UnSelectedImagePath = "Guide/Finger.png";
+            btnFinger.X = Application.GetRealWidth(130);
+            btnFinger.Y = btnMsg.Bottom + Application.GetRealWidth(32);
+            frameBack.AddChidren(btnFinger);
+
+            //鎴戠煡閬撲簡
+            var btnKnwon = this.AddIKnwonButton();
+            btnKnwon.ButtonClickEvent += (sender, e) =>
+            {
+                this.RemoveFromParent();
+                var form = new GuideForm2();
+                form.ShowFrom();
+            };
+
+            HdlThreadLogic.Current.RunThread(() =>
+            {
+                int index = 0;
+                int oldValue = Application.GetRealWidth(130);
+                int moveValue = Application.GetRealWidth(50);
+                while (this.Parent != null)
+                {
+                    index++;
+                    Application.RunOnMainThread(() =>
+                    {
+                        if (index >= 10)
+                        {
+                            btnFinger.X = oldValue;
+                            index = 0;
+                        }
+                        else
+                        {
+                            btnFinger.X += moveValue;
+                        }
+                    });
+                    System.Threading.Thread.Sleep(300);
+                }
+            });
+        }
+
+        #endregion
+    }
+}
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Guide/GuideForm2.cs b/ZigbeeApp/Shared/Phone/UserCenter/Guide/GuideForm2.cs
new file mode 100755
index 0000000..5b4b6d0
--- /dev/null
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Guide/GuideForm2.cs
@@ -0,0 +1,64 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Shared.Phone.UserCenter.Guide
+{
+    /// <summary>
+    /// 寮曞鐣岄潰2
+    /// </summary>
+    public class GuideForm2 : GuideCommonForm
+    {
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鏄剧ず鐣岄潰
+        /// </summary>
+        public override void ShowFrom()
+        {
+            base.ShowFrom();
+
+            //钂欎笂闃村奖
+            var frameBack = new FrameLayout();
+            frameBack.BackgroundColor = 0xad000000;
+            this.AddChidren(frameBack);
+
+            //涓�涓櫧鑹茬殑妗嗘
+            this.contrSwitch.BringToFront();
+            contrSwitch.Height += Application.GetRealWidth(23 * 2);
+            contrSwitch.Width += Application.GetRealWidth(23 * 2);
+            contrSwitch.Gravity = Gravity.CenterHorizontal;
+            contrSwitch.BorderWidth = (uint)Application.GetRealWidth(23);
+            contrSwitch.BorderColor = UserCenterColor.Current.White;
+            contrSwitch.Radius = (uint)contrSwitch.Height / 2;
+            this.btnScene.Gravity = Gravity.CenterVertical;
+            this.btnFunction.Gravity = Gravity.CenterVertical;
+
+            //铏氱嚎绠ご
+            var btnArrows = new PicViewControl(51, 171);
+            btnArrows.UnSelectedImagePath = "Guide/Arrows1.png";
+            btnArrows.X = Application.GetRealWidth(625);
+            btnArrows.Y = contrSwitch.Bottom + Application.GetRealHeight(35);
+            frameBack.AddChidren(btnArrows);
+
+            //鎴块棿鐨勫唴瀹瑰湪姝ゅ鏄剧ず
+            var btnMsg = new NormalViewControl(frameBack.Width, Application.GetRealHeight(75), false);
+            btnMsg.TextAlignment = TextAlignment.Center;
+            btnMsg.TextColor = UserCenterColor.Current.White;
+            btnMsg.TextSize = 18;
+            btnMsg.TextID = R.MyInternationalizationString.uTheContentsOfTheRoomAreShownHere;
+            btnMsg.Y = btnArrows.Bottom;
+            frameBack.AddChidren(btnMsg);
+
+            //鎴戠煡閬撲簡
+            var btnKnwon = this.AddIKnwonButton();
+            btnKnwon.ButtonClickEvent += (sender, e) =>
+            {
+                Phone.Device.Room.RoomManagement.Instance.CanClick = true;
+                this.RemoveFromParent();
+            };
+        }
+
+        #endregion
+    }
+}
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Guide/GuideMainForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Guide/GuideMainForm.cs
new file mode 100755
index 0000000..797bbf9
--- /dev/null
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Guide/GuideMainForm.cs
@@ -0,0 +1,79 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Shared.Phone.UserCenter.Guide
+{
+    /// <summary>
+    /// 寮曞鐣岄潰鐨勪富鐣岄潰
+    /// </summary>
+    public class GuideMainForm : GuideCommonForm
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鏄剧ず鐣岄潰
+        /// </summary>
+        public override void ShowFrom()
+        {
+            base.ShowFrom();
+
+            Phone.Device.Room.RoomManagement.Instance.CanClick = false;
+
+            var frameTop = new FrameLayout();
+            frameTop.Height = Application.GetRealHeight(279);
+            frameTop.BackgroundColor = 0xad000000;
+            this.AddChidren(frameTop);
+
+            //钂欎笂闃村奖
+            var frameBottom = new FrameLayout();
+            frameBottom.Y = Application.GetRealHeight(803);
+            frameBottom.Height = Application.GetRealHeight(1317);//灏辨槸瑕侀暱杩囧畠
+            frameBottom.BackgroundColor = 0xad000000;
+            this.AddChidren(frameBottom);
+            //宸︾澶�
+            var btnLeftIcon = new IconViewControl(72);
+            btnLeftIcon.UnSelectedImagePath = "Guide/LeftIcon.png";
+            btnLeftIcon.X = Application.GetRealWidth(17);
+            btnLeftIcon.Y = Application.GetRealHeight(176);
+            frameBottom.AddChidren(btnLeftIcon);
+            //鍙崇澶�
+            var btnRightIcon = new IconViewControl(72);
+            btnRightIcon.UnSelectedImagePath = "Guide/RightIcon.png";
+            btnRightIcon.X = Application.GetRealWidth(994);
+            btnRightIcon.Y = Application.GetRealHeight(176);
+            frameBottom.AddChidren(btnRightIcon);
+
+            //宸﹀彸婊戝姩锛屽垏鎹㈡埧闂村崱鐗�
+            var btnCard = new NormalViewControl(650, 75, true);
+            btnCard.Y = Application.GetRealHeight(175);
+            btnCard.TextID = R.MyInternationalizationString.uSlideLeftAndRightToSwitchRoomCards;
+            btnCard.TextColor = UserCenterColor.Current.White;
+            btnCard.TextAlignment = TextAlignment.Center;
+            btnCard.TextSize = 18;
+            btnCard.IsBold = true;
+            btnCard.Gravity = Gravity.CenterHorizontal;
+            frameBottom.AddChidren(btnCard);
+            //铏氱嚎绠ご
+            var btnArrows = new PicViewControl(51, 171);
+            btnArrows.UnSelectedImagePath = "Guide/Arrows1.png";
+            btnArrows.X = Application.GetRealWidth(625);
+            frameBottom.AddChidren(btnArrows);
+
+            //鎴戠煡閬撲簡
+            var btnKnwon = this.AddIKnwonButton();
+            btnKnwon.ButtonClickEvent += (sender, e) =>
+            {
+                this.RemoveFromParent();
+                var form = new GuideForm1();
+                form.ShowFrom();
+            };
+        }
+
+        #endregion
+    }
+}
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/HideOption/HideOptionGatewayListForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/HideOption/HideOptionGatewayListForm.cs
index 721cc9c..5380257 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/HideOption/HideOptionGatewayListForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/HideOption/HideOptionGatewayListForm.cs
@@ -107,6 +107,13 @@
                 gatewayRow.frameTable.AddBottomLine();
             }
 
+            var btnLink = new NormalViewControl(Application.GetRealWidth(700), gatewayRow.btnIp.Height, false);
+            btnLink.TextSize = 12;
+            btnLink.X = gatewayRow.btnIp.Right;
+            btnLink.Y = gatewayRow.btnIp.Y;
+            btnLink.Text = "鏈湴杩炴帴:" + i_gateway.localIsConnected.ToString();
+            gatewayRow.frameTable.AddChidren(btnLink);
+
             //瀹氫綅
             var btnPosition = new NormalViewControl(Application.GetRealWidth(184), gatewayRow.Height, false);
             btnPosition.BackgroundColor = 0xff4a4a4a;
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/HideOption/HideOptionMainForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/HideOption/HideOptionMainForm.cs
index 9c9cc3c..66242e7 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/HideOption/HideOptionMainForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/HideOption/HideOptionMainForm.cs
@@ -64,6 +64,8 @@
 
             this.AddNormalRowControl("鎷ユ湁杩滅▼鏉冮檺", 400, ZigBee.Device.ZbGateway.AllowRemoteCtrl == true ? "鏄�" : "鍚�", 400);
 
+            this.AddNormalRowControl("WIFI鍙橀噺", 400, Shared.Application.IsWifi == true ? "true" : "false", 400);
+
             int count = HdlGatewayLogic.Current.GetAllLocalGateway().Count;
             var row1 = new FrameRowControl(listView.rowSpace / 2);
             listView.AddChidren(row1);
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Member/MemberListForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Member/MemberListForm.cs
index df958cf..bf52d7e 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Member/MemberListForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Member/MemberListForm.cs
@@ -42,7 +42,7 @@
             titleIcon.InitControl();
             titleIcon.ButtonClickEvent += (sender, e) =>
             {
-                var menuContr = new TopRightMenuControl(2, 449);
+                var menuContr = new TopRightMenuControl(2, 2);
                 //鎵弿浜岀淮鐮�
                 string msg1 = Language.StringByID(R.MyInternationalizationString.uScanQRcode);
                 menuContr.AddRowMenu(msg1, "Item/ScanQRcodeIcon.png", "Item/ScanQRcodeIconSelected.png", () =>
@@ -55,7 +55,10 @@
                         }
                         //鎼滅储ID
                         this.SearchMemberInfo(qrCode);
-                    });
+                    }, 
+                    Language.StringByID(R.MyInternationalizationString.uCancel),
+                    Language.StringByID(R.MyInternationalizationString.uFlashlamp),
+                    msg1);
                 });
                 //杈撳叆璐﹀彿
                 string msg2 = Language.StringByID(R.MyInternationalizationString.uInputAccount);
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Member/MemberManagementForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Member/MemberManagementForm.cs
index 0973115..cd409ea 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Member/MemberManagementForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Member/MemberManagementForm.cs
@@ -191,9 +191,9 @@
             this.AddShardContentRow(rowShard);
 
             //涓�鏃︾Щ闄よ瀹跺涵鎴愬憳锛屼粬/濂瑰皢鏃犳硶浣跨敤璇ョ綉鍏充笅鎵�缁戝畾鐨勮澶�
-            var btnNote1 = new NormalViewControl(613, 98, true);
-            btnNote1.X = Application.GetRealWidth(246);
-            btnNote1.Y = Application.GetRealHeight(1328);
+            var btnNote1 = new NormalViewControl(613, 100, true);
+            btnNote1.X = Application.GetRealWidth(248);
+            btnNote1.Y = Application.GetRealHeight(1327);
             btnNote1.TextSize = 12;
             btnNote1.TextID = R.MyInternationalizationString.RemoveMenberAndDonotUserBindGatewayDevice;
             btnNote1.IsMoreLines = true;
@@ -203,7 +203,7 @@
 
             var btnIcon = new IconViewControl(58);
             btnIcon.X = Application.GetRealWidth(167);
-            btnIcon.Y = Application.GetRealHeight(1328);
+            btnIcon.Y = btnNote1.Y;
             btnIcon.UnSelectedImagePath = "Item/Tips.png";
             bodyFrameLayout.AddChidren(btnIcon);
 
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Password/EditorGesturePasswordForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Password/EditorGesturePasswordForm.cs
index 9e7d205..e13264c 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Password/EditorGesturePasswordForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Password/EditorGesturePasswordForm.cs
@@ -103,7 +103,7 @@
                     form.AddForm();
                 };
                 //搴曠嚎
-                int lineWidth = btnForgotPsw.GetRealWidthByText(12);
+                int lineWidth = btnForgotPsw.GetRealWidthByText();
                 var btnLine = new NormalViewControl(lineWidth, ControlCommonResourse.BottomLineHeight, false);
                 btnLine.BackgroundColor = UserCenterColor.Current.TextOrangeColor;
                 btnLine.Gravity = Gravity.CenterHorizontal;
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Password/EditorSecondaryPasswordForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Password/EditorSecondaryPasswordForm.cs
index 1083b47..dad60e6 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Password/EditorSecondaryPasswordForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Password/EditorSecondaryPasswordForm.cs
@@ -102,7 +102,7 @@
                     form.AddForm();
                 };
                 //搴曠嚎
-                int lineWidth = btnForgotPsw.GetRealWidthByText(12);
+                int lineWidth = btnForgotPsw.GetRealWidthByText();
                 var btnLine = new NormalViewControl(lineWidth, ControlCommonResourse.BottomLineHeight, false);
                 btnLine.BackgroundColor = UserCenterColor.Current.TextOrangeColor;
                 btnLine.Gravity = Gravity.CenterHorizontal;
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Residence/AddNewRoomForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Residence/AddNewRoomForm.cs
index db1f012..aa75165 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Residence/AddNewRoomForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Residence/AddNewRoomForm.cs
@@ -282,7 +282,7 @@
             btnTemper.Text = Language.StringByID(R.MyInternationalizationString.uGetting);
 
             HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice");
-            HdlGatewayReceiveLogic.Current.AddAttributeEvent("TemperatrueDevice", ReceiveComandDiv.A璁惧灞炴�т笂鎶�, (Action<ZigBee.Device.CommonDevice>)((report) =>
+            HdlGatewayReceiveLogic.Current.AddAttributeEvent("TemperatrueDevice", ReceiveComandDiv.A璁惧灞炴�т笂鎶�, ((report) =>
             {
                 string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(report);
                 if (newRoom.TemperatrueDevice != mainKeys || btnTemper == null)
@@ -296,26 +296,29 @@
                 {
                     if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
                     {
-                        if (data.AttriButeData == 0)
+                        HdlThreadLogic.Current.RunMain(() =>
                         {
-                            //0鈩�
-                            btnTemper.Text = "0.0鈩�";
-                        }
-                        else if (data.AttriButeData > 32767)
-                        {
-                            //璐熸暟(鐗规畩澶勭悊)
-                            string strValue = (data.AttriButeData - 65536).ToString();
-                            //灏忔暟鐐归渶瑕佷竴浣�
-                            strValue = strValue.Substring(0, strValue.Length - 1);
-                            btnTemper.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�";
-                        }
-                        else
-                        {
-                            //灏忔暟鐐归渶瑕佷竴浣�
-                            string strValue = data.AttriButeData.ToString();
-                            strValue = strValue.Substring(0, strValue.Length - 1);
-                            btnTemper.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�";
-                        }
+                            if (data.AttriButeData == 0)
+                            {
+                                //0鈩�
+                                btnTemper.Text = "0.0鈩�";
+                            }
+                            else if (data.AttriButeData > 32767)
+                            {
+                                //璐熸暟(鐗规畩澶勭悊)
+                                string strValue = (data.AttriButeData - 65536).ToString();
+                                //灏忔暟鐐归渶瑕佷竴浣�
+                                strValue = strValue.Substring(0, strValue.Length - 1);
+                                btnTemper.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�";
+                            }
+                            else
+                            {
+                                //灏忔暟鐐归渶瑕佷竴浣�
+                                string strValue = data.AttriButeData.ToString();
+                                strValue = strValue.Substring(0, strValue.Length - 1);
+                                btnTemper.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�";
+                            }
+                        });
                     }
                 }
             }));
@@ -388,18 +391,21 @@
                 {
                     if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
                     {
-                        if (data.AttriButeData == 0)
+                        HdlThreadLogic.Current.RunMain(() =>
                         {
-                            //0
-                            btnHumi.Text = "0.0%";
-                        }
-                        else
-                        {
-                            //灏忔暟鐐归渶瑕佷竴浣�(婀垮害娌℃湁璐熸暟)
-                            string strValue = data.AttriButeData.ToString();
-                            strValue = strValue.Substring(0, strValue.Length - 1);
-                            btnHumi.Text = strValue.Insert(strValue.Length - 1, ".") + "%";
-                        }
+                            if (data.AttriButeData == 0)
+                            {
+                                //0
+                                btnHumi.Text = "0.0%";
+                            }
+                            else
+                            {
+                                //灏忔暟鐐归渶瑕佷竴浣�(婀垮害娌℃湁璐熸暟)
+                                string strValue = data.AttriButeData.ToString();
+                                strValue = strValue.Substring(0, strValue.Length - 1);
+                                btnHumi.Text = strValue.Insert(strValue.Length - 1, ".") + "%";
+                            }
+                        });
                     }
                 }
             });
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Residence/EditorRoomInforForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Residence/EditorRoomInforForm.cs
index fe32bb6..0efff34 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Residence/EditorRoomInforForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Residence/EditorRoomInforForm.cs
@@ -312,7 +312,7 @@
             btnTemper.Text = Language.StringByID(R.MyInternationalizationString.uGetting);
 
             HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice");
-            HdlGatewayReceiveLogic.Current.AddAttributeEvent("TemperatrueDevice", ReceiveComandDiv.A璁惧灞炴�т笂鎶�, (Action<ZigBee.Device.CommonDevice>)((report) =>
+            HdlGatewayReceiveLogic.Current.AddAttributeEvent("TemperatrueDevice", ReceiveComandDiv.A璁惧灞炴�т笂鎶�, ((report) =>
             {
                 string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(report);
                 if (cloneRoom.TemperatrueDevice != mainKeys || btnTemper == null)
@@ -326,26 +326,29 @@
                 {
                     if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
                     {
-                        if (data.AttriButeData == 0)
+                        HdlThreadLogic.Current.RunMain(() =>
                         {
-                            //0鈩�
-                            btnTemper.Text = "0.0鈩�";
-                        }
-                        else if (data.AttriButeData > 32767)
-                        {
-                            //璐熸暟(鐗规畩澶勭悊)
-                            string strValue = (data.AttriButeData - 65536).ToString();
-                            //灏忔暟鐐归渶瑕佷竴浣�
-                            strValue = strValue.Substring(0, strValue.Length - 1);
-                            btnTemper.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�";
-                        }
-                        else
-                        {
-                            //灏忔暟鐐归渶瑕佷竴浣�
-                            string strValue = data.AttriButeData.ToString();
-                            strValue = strValue.Substring(0, strValue.Length - 1);
-                            btnTemper.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�";
-                        }
+                            if (data.AttriButeData == 0)
+                            {
+                                //0鈩�
+                                btnTemper.Text = "0.0鈩�";
+                            }
+                            else if (data.AttriButeData > 32767)
+                            {
+                                //璐熸暟(鐗规畩澶勭悊)
+                                string strValue = (data.AttriButeData - 65536).ToString();
+                                //灏忔暟鐐归渶瑕佷竴浣�
+                                strValue = strValue.Substring(0, strValue.Length - 1);
+                                btnTemper.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�";
+                            }
+                            else
+                            {
+                                //灏忔暟鐐归渶瑕佷竴浣�
+                                string strValue = data.AttriButeData.ToString();
+                                strValue = strValue.Substring(0, strValue.Length - 1);
+                                btnTemper.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�";
+                            }
+                        });
                     }
                 }
             }));
@@ -418,18 +421,21 @@
                 {
                     if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
                     {
-                        if (data.AttriButeData == 0)
+                        HdlThreadLogic.Current.RunMain(() =>
                         {
-                            //0
-                            btnHumi.Text = "0.0%";
-                        }
-                        else
-                        {
-                            //灏忔暟鐐归渶瑕佷竴浣�(婀垮害娌℃湁璐熸暟)
-                            string strValue = data.AttriButeData.ToString();
-                            strValue = strValue.Substring(0, strValue.Length - 1);
-                            btnHumi.Text = strValue.Insert(strValue.Length - 1, ".") + "%";
-                        }
+                            if (data.AttriButeData == 0)
+                            {
+                                //0
+                                btnHumi.Text = "0.0%";
+                            }
+                            else
+                            {
+                                //灏忔暟鐐归渶瑕佷竴浣�(婀垮害娌℃湁璐熸暟)
+                                string strValue = data.AttriButeData.ToString();
+                                strValue = strValue.Substring(0, strValue.Length - 1);
+                                btnHumi.Text = strValue.Insert(strValue.Length - 1, ".") + "%";
+                            }
+                        });
                     }
                 }
             });
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Residence/LookRoomSettionForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Residence/LookRoomSettionForm.cs
index 7cf9971..92ec0a2 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Residence/LookRoomSettionForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Residence/LookRoomSettionForm.cs
@@ -122,6 +122,7 @@
                     frameContr.AddChidren(btnPic);
 
                     var btnName = new NormalViewControl(251, 282, true);
+                    btnName.IsMoreLines = true;
                     btnName.X = ControlCommonResourse.XXLeft;
                     btnName.Y = Application.GetRealHeight(58);
                     btnName.BackgroundColor = 0xff333333;
@@ -247,7 +248,7 @@
             var dic = new Dictionary<int, DeviceRowInfo>();
             foreach (var device in listDevice)
             {
-                var typeInfo = Common.LocalDevice.Current.GetNotHdlMyDeviceEnumInfo(new List<ZigBee.Device.CommonDevice>() { device });
+                var typeInfo = Common.LocalDevice.Current.GetDeviceBelongEnumInfo(device);
                 //鎸夋墍灞濱D鍒嗙粍
                 if (dic.ContainsKey(typeInfo.BeloneTextId) == false)
                 {
@@ -255,7 +256,7 @@
                     string path1 = string.Empty;
                     string path2 = string.Empty;
                     //鑾峰彇鍥剧墖
-                    Common.LocalDevice.Current.GetDeviceBeloneIcon(typeInfo.ConcreteType, ref path1, ref path2);
+                    Common.LocalDevice.Current.GetDeviceObjectIcon(typeInfo.ConcreteType, ref path1, ref path2);
                     dic[typeInfo.BeloneTextId].IconPath = path1;
                 }
                 dic[typeInfo.BeloneTextId].listDeviceKeys.Add(Common.LocalDevice.Current.GetDeviceMainKeys(device));
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Residence/ResidenceManagementForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Residence/ResidenceManagementForm.cs
index 517fe26..a58dc54 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Residence/ResidenceManagementForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Residence/ResidenceManagementForm.cs
@@ -189,7 +189,7 @@
                 //娌℃湁璁剧疆杩囨ā寮�
                 if (AppResidenceMode == 0)
                 {
-                    var frame = new TopRightMenuControl(2);
+                    var frame = new TopRightMenuControl(2, 2);
                     //鍒涘缓妤煎眰
                     frame.AddRowMenu(Language.StringByID(R.MyInternationalizationString.uCreatFloor), "Item/CreatFloor.png", "Item/CreatFloorSelected.png", () =>
                     {
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Safety/AlarmTargetAddMenuForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Safety/AlarmTargetAddMenuForm.cs
index 5b2ab68..626e387 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Safety/AlarmTargetAddMenuForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Safety/AlarmTargetAddMenuForm.cs
@@ -156,7 +156,7 @@
             btnIconContr.ButtonClickEvent += (sender, e) =>
             {
                 //妤煎眰鑿滃崟
-                var contr = new TopRightMenuControl(dicFloor.Count, 449, Language.StringByID(R.MyInternationalizationString.SelectFloor));
+                var contr = new TopRightMenuControl(dicFloor.Count, 2, Language.StringByID(R.MyInternationalizationString.SelectFloor));
                 foreach (var floorId in dicFloor.Keys)
                 {
                     contr.AddRowMenu(dicFloor[floorId], "Floor/Floor.png", "Floor/FloorSelected.png", () =>
@@ -288,9 +288,9 @@
                     string unSelectPath = string.Empty;
                     string selectPath = string.Empty;
 
-                    var typeInfo = Common.LocalDevice.Current.GetNotHdlMyDeviceEnumInfo(new List<CommonDevice>() { device });
+                    var typeInfo = Common.LocalDevice.Current.GetDeviceBelongEnumInfo(device);
                     //鑾峰彇鍥剧墖
-                    Common.LocalDevice.Current.GetDeviceBeloneIcon(typeInfo.ConcreteType, ref unSelectPath, ref selectPath);
+                    Common.LocalDevice.Current.GetDeviceObjectIcon(typeInfo.ConcreteType, ref unSelectPath, ref selectPath);
                     if (dicRoomData.ContainsKey(typeInfo.BeloneTextId) == false)
                     {
                         dicRoomData[typeInfo.BeloneTextId] = new uRowInformation();
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Safety/CoercePswAddContactForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Safety/CoercePswAddContactForm.cs
index 9e3a6c2..ffeae6e 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Safety/CoercePswAddContactForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Safety/CoercePswAddContactForm.cs
@@ -44,6 +44,10 @@
             {
                 Contacts.ContactAction = (phoneName, phoneNum) =>
                 {
+                    if (string.IsNullOrEmpty(phoneName) == true)
+                    {
+                        return;
+                    }
                     //鎵嬫満鍙锋娴�
                     if (this.CheckPhoneNumber("86", phoneNum, phoneName) == false)
                     {
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Safety/GarrisonAreaSettionMenuForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Safety/GarrisonAreaSettionMenuForm.cs
index 1e6a2f3..bf7c54f 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Safety/GarrisonAreaSettionMenuForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Safety/GarrisonAreaSettionMenuForm.cs
@@ -149,51 +149,65 @@
             btnIcon.UnSelectedImagePath = "Item/Tips.png";
             bodyFrameLayout.AddChidren(btnIcon);
 
+            int XX = 0;
+            int contrWidth = 0;
+
             string msg = string.Empty;
             //24灏忔椂闃插尯
             if (zoonID == 1)
             {
                 //24灏忔椂闃插尯涓嶅彈甯冮槻銆佹挙闃插奖鍝峽0}闃插尯琚Е鍙戠珛鍗虫姤璀0}涓�鑸缃儫闆俱�佺噧姘斻�佹按娴哥瓑浼犳劅鍣�
                 msg = Language.StringByID(R.MyInternationalizationString.u24HourSectorsTipMsg);
-                btnIcon.X = Application.GetRealWidth(223);
+                btnIcon.X = Application.GetRealWidth(233);
+                XX = Application.GetRealWidth(282);
+                contrWidth = Application.GetRealWidth(580);
             }
             //闈欓煶闃插尯
             else if (zoonID == 2)
             {
                 //闈欓煶闃插尯涓嶅彈甯冮槻銆佹挙闃插奖鍝嶏紝闃插尯琚珄0}瑙﹀彂绔嬪嵆鎶ヨ锛岄�氬父涓嶄骇鐢熷0闊虫垨{0}鍏朵粬鎻愮ず锛屽彧鍙戦�佷俊鎭埌鐗瑰畾鐨勬帴鏀惰��
                 msg = Language.StringByID(R.MyInternationalizationString.uMuteSectorsTipMsg);
-                btnIcon.X = Application.GetRealWidth(175);
+                btnIcon.X = Application.GetRealWidth(202);
+                XX = Application.GetRealWidth(279);
+                contrWidth = Application.GetRealWidth(614);
             }
             //鍐呴儴闃插尯
             else if (zoonID == 4)
             {
                 //鍦ㄧ瀹跺竷闃叉ā寮忎笅锛屽唴閮ㄩ槻鍖轰紶鎰熷櫒瑙﹀彂{0}绔嬪嵆鎶ヨ銆傚湪鍦ㄥ甯冮槻妯″紡涓媨0}鍐呴儴闃插尯鎵�鏈変紶鎰熷櫒涓嶅弬涓庢姤璀�
                 msg = Language.StringByID(R.MyInternationalizationString.uInteriorSectorsTipMsg);
-                btnIcon.X = Application.GetRealWidth(159);
+                btnIcon.X = Application.GetRealWidth(179);
+                XX = Application.GetRealWidth(256);
+                contrWidth = Application.GetRealWidth(651);
             }
             //鍛ㄧ晫闃插尯
             else if (zoonID == 5)
             {
                 //绂诲甯冮槻妯″紡鎴栧湪瀹跺竷闃叉ā寮忎笅{0}鍛ㄧ晫闃插尯浼犳劅鍣ㄨЕ鍙戠珛鍗虫姤璀�
                 msg = Language.StringByID(R.MyInternationalizationString.uPerimeterSectorsTipMsg);
-                btnIcon.X = Application.GetRealWidth(229);
+                btnIcon.X = Application.GetRealWidth(239);
+                XX = Application.GetRealWidth(317);
+                contrWidth = Application.GetRealWidth(510);
             }
             //鍑哄叆闃插尯
             else
             {
                 //鍦ㄥ竷闃插悗绯荤粺鎻愪緵涓�瀹氱殑寤惰繜鏃堕棿銆傚嚭闂ㄦ椂{0}澶栧嚭寤舵椂缁撴潫鍚庯紝绯荤粺瑙﹀彂鐩爣鎶ヨ{0}鍥炲鏃讹紝杩涘叆寤舵椂缁撴潫鍚庯紝绯荤粺瑙﹀彂鐩爣鎶ヨ
                 msg = Language.StringByID(R.MyInternationalizationString.uInAndOutSectorsTipMsg);
-                btnIcon.X = Application.GetRealWidth(141);
+                btnIcon.X = Application.GetRealWidth(156);
+                XX = Application.GetRealWidth(216);
+                contrWidth = Application.GetRealWidth(721);
             }
             var ArryMsg = msg.Split(new string[] { "{0}" }, StringSplitOptions.RemoveEmptyEntries);
 
             int yy = Application.GetRealHeight(1428);
             for (int i = 0; i < ArryMsg.Length; i++)
             {
-                var btnTip = new NormalViewControl(bodyFrameLayout.Width, Application.GetRealHeight(50), false);
+                var btnTip = new NormalViewControl(contrWidth, Application.GetRealHeight(50), false);
                 btnTip.TextAlignment = TextAlignment.Center;
                 btnTip.TextColor = UserCenterColor.Current.TextGrayColor1;
                 btnTip.TextSize = 12;
+                btnTip.X = XX;
                 btnTip.Y = yy;
                 btnTip.Text = ArryMsg[i];
                 bodyFrameLayout.AddChidren(btnTip);
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Safety/SafetyManagementMainForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Safety/SafetyManagementMainForm.cs
index 0e73874..b9a5c0f 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Safety/SafetyManagementMainForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Safety/SafetyManagementMainForm.cs
@@ -190,7 +190,7 @@
                 btnIcon.ButtonClickEvent += (sender, e) =>
                 {
                     //鑿滃崟鎺т欢
-                    var frameMenu = new TopRightMenuControl(2);
+                    var frameMenu = new TopRightMenuControl(2, 2);
                     //闃插尯鍒楄〃
                     string menu1 = Language.StringByID(R.MyInternationalizationString.uGarrisonAreaList);
                     frameMenu.AddRowMenu(menu1, "Item/GarrisonList.png", "Item/GarrisonListSelected.png", () =>
@@ -490,7 +490,7 @@
                 var control = this.dicSensorStatuView[mainkey];
                 //鑾峰彇浼犳劅鍣ㄦ姤璀︿俊鎭殑缈昏瘧鏂囨湰
                 var msgInfo = HdlAlarmsLogic.Current.GetSensorAlarmInfo(device);
-                Application.RunOnMainThread(() =>
+                HdlThreadLogic.Current.RunMain(() =>
                 {
                     control?.SetSensoReportInfo(msgInfo);
                 });
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/SharedContent/AddNewSharedContentForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/SharedContent/AddNewSharedContentForm.cs
index 816556e..cef5888 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/SharedContent/AddNewSharedContentForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/SharedContent/AddNewSharedContentForm.cs
@@ -211,6 +211,7 @@
                     frameContr.AddChidren(btnPic, ChidrenBindMode.BindEventOnly);
 
                     var btnName = new NormalViewControl(251, 282, true);
+                    btnName.IsMoreLines = true;
                     btnName.X = ControlCommonResourse.XXLeft;
                     btnName.Y = Application.GetRealHeight(58);
                     btnName.BackgroundColor = 0xff333333;
@@ -409,7 +410,7 @@
                     //濡傛灉宸茬粡鍒嗕韩浜�,鍒欎笉鏄剧ず
                     continue;
                 }
-                var typeInfo = Common.LocalDevice.Current.GetNotHdlMyDeviceEnumInfo(new List<ZigBee.Device.CommonDevice>() { device });
+                var typeInfo = Common.LocalDevice.Current.GetDeviceBelongEnumInfo(device);
                 if (dic.ContainsKey(typeInfo.BeloneTextId) == false)
                 {
                     dic[typeInfo.BeloneTextId] = new List<CommonDevice>();
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/SharedContent/AddNewSharedListRoomForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/SharedContent/AddNewSharedListRoomForm.cs
index 5e39b80..7cf0cff 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/SharedContent/AddNewSharedListRoomForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/SharedContent/AddNewSharedListRoomForm.cs
@@ -144,7 +144,7 @@
             btnIconContr.ButtonClickEvent += (sender, e) =>
             {
                 //妤煎眰鑿滃崟
-                var contr = new TopRightMenuControl(dicFloor.Count, 449, Language.StringByID(R.MyInternationalizationString.SelectFloor));
+                var contr = new TopRightMenuControl(dicFloor.Count, 2, Language.StringByID(R.MyInternationalizationString.SelectFloor));
                 foreach (var floorId in dicFloor.Keys)
                 {
                     contr.AddRowMenu(dicFloor[floorId], "Floor/Floor.png", "Floor/FloorSelected.png", () =>
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/SharedContent/LookSharedContentForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/SharedContent/LookSharedContentForm.cs
index df51a9c..870173f 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/SharedContent/LookSharedContentForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/SharedContent/LookSharedContentForm.cs
@@ -194,6 +194,7 @@
                     frameContr.AddChidren(btnPic);
 
                     var btnName = new NormalViewControl(251, 282, true);
+                    btnName.IsMoreLines = true;
                     btnName.X = ControlCommonResourse.XXLeft;
                     btnName.Y = Application.GetRealHeight(58);
                     btnName.BackgroundColor = 0xff333333;
@@ -388,7 +389,7 @@
             var dic = new Dictionary<int, List<CommonDevice>>();
             foreach (var device in listDevice)
             {
-                var typeInfo = Common.LocalDevice.Current.GetNotHdlMyDeviceEnumInfo(new List<ZigBee.Device.CommonDevice>() { device });
+                var typeInfo = Common.LocalDevice.Current.GetDeviceBelongEnumInfo(device);
                 if (dic.ContainsKey(typeInfo.BeloneTextId) == false)
                 {
                     dic[typeInfo.BeloneTextId] = new List<CommonDevice>();
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/UserMain/MessageManagementForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/UserMain/MessageManagementForm.cs
index 7197147..cf149a7 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/UserMain/MessageManagementForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/UserMain/MessageManagementForm.cs
@@ -1,6 +1,9 @@
-锘縰sing System;
+锘縰sing Newtonsoft.Json.Linq;
+using System;
 using System.Collections.Generic;
 using System.Text;
+using System.Threading.Tasks;
+using ZigBee.Device;
 
 namespace Shared.Phone.UserCenter.UserMain
 {
@@ -29,6 +32,8 @@
         /// </summary>
         public void ShowForm()
         {
+            Common.CommonPage.Instance.IsDrawerLockMode = true;
+
             //璁剧疆澶撮儴淇℃伅
             base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uMessageCenter));
 
@@ -64,70 +69,106 @@
         {
             //鑾峰彇鏁版嵁
             var dicData = await this.GetMessageData();
-            //鍏抽棴杩涘害鏉�
-            this.CloseProgressBar(dicData == null && showReload == true ? ShowReLoadMode.YES : ShowReLoadMode.NO);
-
-            HdlThreadLogic.Current.RunMain(() =>
-            {
-                //鍏抽棴鍒锋柊鐗规晥
-                listView?.EndHeaderRefreshing();
-            });
             if (dicData == null)
             {
+                if (showReload == true)
+                {
+                    //鍏抽棴杩涘害鏉�
+                    this.CloseProgressBar(ShowReLoadMode.YES);
+                }
+                else
+                {
+                    //鍏抽棴杩涘害鏉�
+                    this.CloseProgressBar();
+                }
+                HdlThreadLogic.Current.RunMain(() =>
+                {
+                    //鍏抽棴鍒锋柊鐗规晥
+                    listView?.EndHeaderRefreshing();
+                    //娓呯┖
+                    listView.RemoveAll();
+                });
                 //鏁版嵁寮傚父
                 return;
             }
-            HdlThreadLogic.Current.RunMain(() =>
-            {
-                //鍒濆鍖栦腑閮ㄦ帶浠�
-                this.InitMiddleFrame(dicData);
-            });
+
+            //鍒濆鍖栦腑閮ㄦ帶浠�
+            this.InitMiddleFrame(dicData);
         }
 
         /// <summary>
-        /// 鍒濆鍖栦腑閮ㄦ帶浠�
+        /// 鍒濆鍖栦腑閮ㄦ帶浠�(瑕佷娇鐢ㄧ嚎绋嬭皟鐢�)
         /// </summary>
         /// <param name="dicData"></param>
-        private void InitMiddleFrame(Dictionary<string, List<MessageRecordInfo>> dicData)
+        private void InitMiddleFrame(Dictionary<string, List<List<MessageRecordInfo>>> dicData)
         {
-            //娓呯┖
-            listView.RemoveAll();
+            int dateIndex = 0;
+            FrameListControl framBack = null;
+            string oldKeys = string.Empty;
 
-            int index = 0;
+            int maxCount = 0;
+            int countIndex = 0;
+            foreach (var data in dicData.Values)
+            {
+                //鑾峰彇寰幆鐨勬�绘鏁�
+                maxCount += data.Count;
+            }
+
+            int waiTime = 1000;
             foreach (var keys in dicData.Keys)
             {
-                var listData = dicData[keys];
-                index++;
-                //瀹瑰櫒
-                var framBack = new FrameListControl(23);
-                framBack.Name = index.ToString();
-                framBack.Height = Application.GetRealHeight(100);
-                framBack.BackgroundColor = UserCenterColor.Current.White;
-                listView.AddChidrenFrame(framBack);
-
-                //鏃ユ湡
-                string strMonth = Language.StringByID(R.MyInternationalizationString.Month);
-                string strDate = Language.StringByID(R.MyInternationalizationString.Day);
-                var frameDate = new FrameLayout();
-                frameDate.Height = Application.GetRealHeight(118);
-                framBack.AddChidren(frameDate);
-                var btnDate = new NormalViewControl(500, 60, true);
-                btnDate.TextSize = 15;
-                btnDate.X = ControlCommonResourse.XXLeft;
-                btnDate.Y = Application.GetRealHeight(35);
-                btnDate.Text = Convert.ToDateTime(listData[0].MsgTime).ToString("MM" + strMonth + "dd" + strDate);
-                frameDate.AddChidren(btnDate);
-
-                for (int i = 0; i < listData.Count; i++)
+                var listGroup = dicData[keys];
+                foreach (var listData in listGroup)
                 {
-                    //娣诲姞淇℃伅琛�
-                    this.AddMsgRowControl(framBack, listData[i], i != listData.Count - 1);
-                }
-                //璋冩暣楂樺害
-                listView.AdjustChidrenFrameHeight(framBack, Application.GetRealHeight(23));
-                if (index == dicData.Count)
-                {
-                    listView.AdjustTableHeight();
+                    HdlThreadLogic.Current.RunMain(() =>
+                    {
+                        countIndex++;
+                        //褰撴棩鏈熶笉涓�鏍锋椂,閲嶆柊寤虹珛妗屽竷
+                        if (oldKeys != keys)
+                        {
+                            oldKeys = keys;
+                            dateIndex++;
+                            //瀹瑰櫒
+                            framBack = new FrameListControl(23);
+                            framBack.Name = dateIndex.ToString();
+                            framBack.Height = Application.GetRealHeight(100);
+                            framBack.BackgroundColor = UserCenterColor.Current.White;
+                            listView.AddChidrenFrame(framBack);
+
+                            //鏃ユ湡
+                            string strMonth = Language.StringByID(R.MyInternationalizationString.Month);
+                            string strDate = Language.StringByID(R.MyInternationalizationString.Day);
+                            var frameDate = new FrameLayout();
+                            frameDate.Height = Application.GetRealHeight(118);
+                            framBack.AddChidren(frameDate);
+                            var btnDate = new NormalViewControl(500, 60, true);
+                            btnDate.TextSize = 15;
+                            btnDate.X = ControlCommonResourse.XXLeft;
+                            btnDate.Y = Application.GetRealHeight(35);
+                            btnDate.Text = Convert.ToDateTime(listGroup[0][0].CreatedOnUtc).ToString("MM" + strMonth + "dd" + strDate);
+                            frameDate.AddChidren(btnDate);
+                        }
+
+                        for (int i = 0; i < listData.Count; i++)
+                        {
+                            //娣诲姞淇℃伅琛�
+                            this.AddMsgRowControl(framBack, listData[i], i != listData.Count - 1);
+                        }
+                        //璋冩暣楂樺害
+                        listView.AdjustChidrenFrameHeight(framBack, Application.GetRealHeight(23));
+                        if (countIndex == maxCount)
+                        {
+                            //璋冩暣妗屽竷
+                            listView.AdjustTableHeight();
+                            //鍏抽棴鍒锋柊鐗规晥
+                            listView.EndHeaderRefreshing();
+                            //鍏抽棴杩涘害鏉�
+                            this.CloseProgressBar();
+                        }
+                    });
+                    //绗竴娆$殑鏃跺�欙紝绛夊緟鐨勬椂鍊欎箙涓�鐐�
+                    System.Threading.Thread.Sleep(waiTime);
+                    waiTime = 500;
                 }
             }
         }
@@ -157,20 +198,25 @@
         /// </summary>
         private void ShowBottomMenu()
         {
+            bool authority = UserCenterResourse.UserInfo.AuthorityNo == 1 || UserCenterResourse.UserInfo.AuthorityNo == 2;
+
             var menuContr = new BottomMenuSelectForm();
-            menuContr.AddForm(2);
+            menuContr.AddForm(authority == true ? 2 : 1);
             //鍏ㄩ儴宸茶
             menuContr.AddMenu(Language.StringByID(R.MyInternationalizationString.uAllRead), () =>
             {
                 //璁剧疆鍏ㄩ儴涓哄凡璇�
                 this.SetAllTickIsRead();
             });
-            //鍏ㄩ儴鍒犻櫎
-            menuContr.AddMenu(Language.StringByID(R.MyInternationalizationString.uAllDelete), () =>
+            if (authority == true)
             {
-                //鍒犻櫎鍏ㄩ儴鐨勬秷鎭�
-                this.DeleteAllMsg();
-            });
+                //鍏ㄩ儴鍒犻櫎
+                menuContr.AddMenu(Language.StringByID(R.MyInternationalizationString.uAllDelete), () =>
+                {
+                    //鍒犻櫎鍏ㄩ儴鐨勬秷鎭�
+                    this.DeleteAllMsg();
+                });
+            }
         }
 
         #endregion
@@ -191,32 +237,22 @@
             rowControl.MainKeys = recordInfo.Id;
             this.dicAllRow[frameList.Name + "-" + rowControl.Name] = rowControl;
 
-            //鍥炬爣(鐜板湪娴嬭瘯)
+            //鍥炬爣
             var btnIcon = rowControl.frameTable.AddLeftIcon(81);
-            btnIcon.UnSelectedImagePath = "Item/Safety.png";
-
+            btnIcon.UnSelectedImagePath = recordInfo.IconPath;
             //娑堟伅绫诲瀷
-            var btnMsgObject = rowControl.frameTable.AddLeftCaption("鎶ヨ娑堟伅", 600);
-            PicViewControl btnNewTip = null;
-            if (recordInfo.IsRead == 0)
-            {
-                btnNewTip = new PicViewControl(78, 55);
-                btnNewTip.UnSelectedImagePath = "Item/NewVersion.png";
-                btnNewTip.Y = Application.GetRealHeight(9) + rowControl.frameTable.chidrenYaxis;
-                btnNewTip.X = btnMsgObject.X + btnMsgObject.GetRealWidthByText(14);
-                rowControl.frameTable.AddChidren(btnNewTip, ChidrenBindMode.BindEventOnly);
-            }
+            var btnMsgObject = rowControl.frameTable.AddLeftCaption(recordInfo.MsgObjectText, 600);
 
             //娑堟伅
-            var btnMsg = rowControl.frameTable.AddMostRightView(recordInfo.MsgContent, 600, 60);
+            var btnMsg = rowControl.frameTable.AddMostRightView(recordInfo.MsgText, 600, 60);
             btnMsg.TextColor = UserCenterColor.Current.TextGrayColor3;
             btnMsg.Y = Application.GetRealHeight(5) + rowControl.frameTable.chidrenYaxis;
             rowControl.frameTable.AddChidren(btnMsg, ChidrenBindMode.BindEventOnly);
             //鏃堕棿
-            var btnTime = rowControl.frameTable.AddMostRightView(recordInfo.MsgContent, 200, 50);
+            var btnTime = rowControl.frameTable.AddMostRightView("", 200, 50);
             btnTime.TextColor = UserCenterColor.Current.TextGrayColor1;
             btnTime.Y = btnMsg.Bottom + Application.GetRealHeight(12);
-            btnTime.Text = Convert.ToDateTime(recordInfo.MsgTime).ToString("HH锛歮m");
+            btnTime.Text = Convert.ToDateTime(recordInfo.CreatedOnUtc).ToString("HH锛歮m");
             rowControl.frameTable.AddChidren(btnTime, ChidrenBindMode.BindEventOnly);
             //搴曠嚎
             if (addLine == true)
@@ -224,7 +260,7 @@
                 rowControl.frameTable.AddBottomLine();
             }
             //宸茶
-            if (recordInfo.IsRead == 1)
+            if (recordInfo.IsReading == true)
             {
                 rowControl.frameTable.UseClickStatu = false;
                 //娑堟伅绫诲瀷
@@ -232,26 +268,44 @@
                 //娑堟伅
                 btnMsg.TextColor = UserCenterColor.Current.TextGrayColor1;
             }
-            //鍒犻櫎
-            var btnDelete = rowControl.AddDeleteControl();
-            btnDelete.ButtonClickEvent += (sender, e) =>
+            //璋冩暣瀹藉害
+            btnMsgObject.Width = btnMsgObject.GetRealWidthByText();
+
+            //鏂版秷鎭�
+            PicViewControl btnNewTip = null;
+            if (recordInfo.IsReading == false)
             {
-                //纭鍒犻櫎娑堟伅?
-                string msg = Language.StringByID(R.MyInternationalizationString.uDeleteMessageMsg);
-                this.ShowMassage(ShowMsgType.Confirm, msg, async () =>
+                btnNewTip = new PicViewControl(78, 55);
+                btnNewTip.UnSelectedImagePath = "Item/NewVersion.png";
+                btnNewTip.Y = Application.GetRealHeight(9) + rowControl.frameTable.chidrenYaxis;
+                btnNewTip.X = btnMsgObject.Right + Application.GetRealWidth(10);
+                rowControl.frameTable.AddChidren(btnNewTip, ChidrenBindMode.BindEventOnly);
+            }
+
+            //涓昏涓讳汉鍜岀鐞嗗憳鑳藉鍒犻櫎
+            if (UserCenterResourse.UserInfo.AuthorityNo == 1 || UserCenterResourse.UserInfo.AuthorityNo == 2)
+            {
+                //鍒犻櫎
+                var btnDelete = rowControl.AddDeleteControl();
+                btnDelete.ButtonClickEvent += (sender, e) =>
                 {
-                    await this.DeleteMsg(recordInfo.Id, frameList, rowControl);
-                });
-            };
+                    //纭鍒犻櫎娑堟伅?
+                    string msg = Language.StringByID(R.MyInternationalizationString.uDeleteMessageMsg);
+                    this.ShowMassage(ShowMsgType.Confirm, msg, async () =>
+                    {
+                        await this.DeleteMsg(recordInfo.Id, frameList, rowControl);
+                    });
+                };
+            }
 
             //鐐瑰嚮
             rowControl.frameTable.ButtonClickEvent += async (sender, e) =>
             {
-                if (recordInfo.IsRead == 1)
+                if (recordInfo.IsReading == true)
                 {
                     return;
                 }
-                recordInfo.IsRead = 1;
+                recordInfo.IsReading = true;
                 rowControl.frameTable.UseClickStatu = false;
                 //娑堟伅绫诲瀷
                 btnMsgObject.TextColor = UserCenterColor.Current.TextGrayColor1;
@@ -276,15 +330,11 @@
         /// <param name="strId"></param>
         private async System.Threading.Tasks.Task<bool> SetTickIsRead(string strId)
         {
-            string strUrl = "ZigbeeUsers/TickIsRead?Id=" + strId;
-
-            var result = await Common.CommonPage.Instance.RequestHttpsZigbeeBytesResultAsync(strUrl, null, "GET");
-            if (result == null)
-            {
-                return UserCenterLogic.CheckNotEorrorMsg(null, "ZigbeeUsers/TickIsRead", null, null);
-            }
-            //浜戠鏄笉浼氳繑鍥炰笢瑗跨殑
-            return true;
+            var pra = new MessageReadStatuPra();
+            pra.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
+            pra.Id = strId;
+            var result = await UserCenterLogic.GetResultStatuByRequestHttps("MessageCenter/TagMessageMessageCenterItem", true, pra);
+            return result;
         }
 
         /// <summary>
@@ -341,13 +391,15 @@
         /// <param name="rowContr"></param>
         private async System.Threading.Tasks.Task<bool> DeleteMsg(string strId, FrameListControl frameList, RowLayoutControl rowContr)
         {
-            string strUrl = "ZigbeeUsers/DeletePushMessage?Id=" + strId;
-
-            var result = await Common.CommonPage.Instance.RequestHttpsZigbeeBytesResultAsync(strUrl, null, "GET");
-            if (result == null)
+            var pra = new MessageReadStatuPra();
+            pra.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
+            pra.Id = strId;
+            var result = await UserCenterLogic.GetResultStatuByRequestHttps("MessageCenter/DelMessageCenterItem", true, pra);
+            if (result == false)
             {
-                return UserCenterLogic.CheckNotEorrorMsg(null, "ZigbeeUsers/DeletePushMessage", null, null);
+                return false;
             }
+
             //浜戠鏄笉浼氳繑鍥炰笢瑗跨殑
             if (frameList != null)
             {
@@ -469,62 +521,416 @@
         /// 鑾峰彇娑堟伅璁板綍
         /// </summary>
         /// <returns></returns>
-        private async System.Threading.Tasks.Task<Dictionary<string, List<MessageRecordInfo>>> GetMessageData()
+        private async Task<Dictionary<string, List<List<MessageRecordInfo>>>> GetMessageData()
         {
             this.dicAllRow = new Dictionary<string, RowLayoutControl>();
+            var allListData = new List<MessageRecordInfo>();
 
-            var result = await UserCenterLogic.GetResponseDataByRequestHttps("ZigbeeUsers/GetPushMessageRecord", false, "");
+            var pra = new MessageInfoPra();
+            pra.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
+
+            //浼犳劅鍣ㄤ笂鎶�
+            pra.Topic = "/IASInfoReport";
+            var dataInfo = await this.GetMessageDataFromDb(pra);
+            if (dataInfo == null)
+            {
+                return null;
+            }
+            allListData.AddRange(dataInfo);
+
+            //闂ㄩ攣涓婃姤
+            pra.Topic = "/Alarms/SendAlarmInform";
+            dataInfo = await this.GetMessageDataFromDb(pra);
+            if (dataInfo == null)
+            {
+                return null;
+            }
+            allListData.AddRange(dataInfo);
+
+            //鎾ら槻
+            pra.Topic = "/Security/WithdrawMode_Respon";
+            dataInfo = await this.GetMessageDataFromDb(pra);
+            if (dataInfo == null)
+            {
+                return null;
+            }
+            allListData.AddRange(dataInfo);
+
+            //甯冮槻
+            pra.Topic = "/Security/EnableMode_Respon";
+            dataInfo = await this.GetMessageDataFromDb(pra);
+            if (dataInfo == null)
+            {
+                return null;
+            }
+            allListData.AddRange(dataInfo);
+
+            //閫昏緫瑙﹀彂涓婃姤
+            pra.Topic = "/Logic/Execute_Respon";
+            dataInfo = await this.GetMessageDataFromDb(pra);
+            if (dataInfo == null)
+            {
+                return null;
+            }
+            allListData.AddRange(dataInfo);
+
+            //鍦烘櫙瑙﹀彂涓婃姤
+            pra.Topic = "/Scene/Exec_Respon";
+            dataInfo = await this.GetMessageDataFromDb(pra);
+            if (dataInfo == null)
+            {
+                return null;
+            }
+            allListData.AddRange(dataInfo);
+
+            //鍚堝苟鏁版嵁
+            return this.MergeMessageRecordData(allListData);
+        }
+
+        /// <summary>
+        /// 浠庝簯绔幏鍙栨暟鎹�
+        /// </summary>
+        /// <param name="pra"></param>
+        /// <returns></returns>
+        private async Task<List<MessageRecordInfo>> GetMessageDataFromDb(MessageInfoPra pra)
+        {
+            var result = await UserCenterLogic.GetResponseDataByRequestHttps("MessageCenter/GetMessageCenterPagger", true, pra);
             if (result == null)
             {
                 return null;
             }
-            var dataInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<List<MessageRecordInfo>>(result);
-            //鍚堝苟鏁版嵁
-            return this.MergeMessageRecordData(dataInfo);
+            var dataInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<MessageCentetInfo>(result);
+
+            var listData = new List<MessageRecordInfo>();
+            for (int i = 0; i < dataInfo.PageData.Count; i++)
+            {
+                try
+                {
+                    var data = dataInfo.PageData[i];
+                    //澶勭悊娑堟伅绫诲瀷
+                    this.AdjustMsgContent(ref data);
+
+                    listData.Add(data);
+                }
+                catch { continue; }
+            }
+
+            return listData;
         }
 
         /// <summary>
-        /// 鍚堝苟鏁版嵁
+        /// 鍚堝苟鏁版嵁(鍚屼竴澶╀箣鍐�,浼氬垎缁�)
         /// </summary>
         /// <param name="dataInfo"></param>
         /// <returns></returns>
-        private Dictionary<string, List<MessageRecordInfo>> MergeMessageRecordData(List<MessageRecordInfo> dataInfo)
+        private Dictionary<string, List<List<MessageRecordInfo>>> MergeMessageRecordData(List<MessageRecordInfo> dataInfo)
         {
-            var dicData = new Dictionary<string, List<MessageRecordInfo>>();
+            var dicData = new Dictionary<string, List<List<MessageRecordInfo>>>();
 
             //棣栧厛鍏堟帓搴忎竴涓�,鏃堕棿澶х殑鏀惧湪鍓嶉潰
             var dicTemp = new Dictionary<string, List<MessageRecordInfo>>();
             var listSortKeys = new List<string>();
             foreach (var data in dataInfo)
             {
-                if (dicTemp.ContainsKey(data.MsgTime) == false)
+                if (dicTemp.ContainsKey(data.CreatedOnUtc) == false)
                 {
-                    dicTemp[data.MsgTime] = new List<MessageRecordInfo>();
-                    listSortKeys.Add(data.MsgTime);
+                    dicTemp[data.CreatedOnUtc] = new List<MessageRecordInfo>();
+                    listSortKeys.Add(data.CreatedOnUtc);
                 }
-                dicTemp[data.MsgTime].Add(data);
+                dicTemp[data.CreatedOnUtc].Add(data);
             }
             listSortKeys.Sort();
+
+            var listGroup = new List<MessageRecordInfo>();
             for (int i = listSortKeys.Count - 1; i >= 0; i--)
             {
                 var listData = dicTemp[listSortKeys[i]];
                 foreach (var data2 in listData)
                 {
-                    string[] myArry = data2.MsgTime.Split(new string[] { "T" }, StringSplitOptions.RemoveEmptyEntries);
+                    if (data2.Topic == "/DoorLock/DoorLockOperatingEventNotificationCommand")
+                    {
+                        //鏆傛椂涓嶅鐞嗚繖涓富棰�
+                        continue;
+                    }
+                    string[] myArry = data2.CreatedOnUtc.Split(new string[] { "T" }, StringSplitOptions.RemoveEmptyEntries);
                     if (myArry.Length != 2)
                     {
                         continue;
                     }
-                    if (dicData.ContainsKey(myArry[0]) == false)
+                    string dicKeys = myArry[0];//鏃ユ湡
+                    if (dicData.ContainsKey(dicKeys) == false)
                     {
-                        dicData[myArry[0]] = new List<MessageRecordInfo>();
+                        listGroup = new List<MessageRecordInfo>();
+                        dicData[dicKeys] = new List<List<MessageRecordInfo>>();
+                        dicData[dicKeys].Add(listGroup);
                     }
-                    dicData[myArry[0]].Add(data2);
+                    if (listGroup.Count > 20)
+                    {
+                        //姣�20涓竴缁�
+                        listGroup = new List<MessageRecordInfo>();
+                        dicData[dicKeys].Add(listGroup);
+                    }
+                    listGroup.Add(data2);
                 }
             }
             return dicData;
         }
 
         #endregion
+
+        #region 鈻� 澶勭悊娑堟伅绫诲瀷_______________________
+
+        /// <summary>
+        /// 澶勭悊娑堟伅绫诲瀷
+        /// </summary>
+        /// <param name="recordInfo">娑堟伅鏁版嵁</param>
+        private void AdjustMsgContent(ref MessageRecordInfo recordInfo)
+        {
+            var jobject = JObject.Parse(recordInfo.PayloadJson);
+            //浼犳劅鍣ㄤ笂鎶�
+            if (recordInfo.Topic == "/IASInfoReport")
+            {
+                this.SensorDeviceReportPush(jobject, ref recordInfo);
+            }
+            //闂ㄩ攣涓婃姤
+            else if (recordInfo.Topic == "/Alarms/SendAlarmInform")
+            {
+                this.DoorLockDeviceReportPush(jobject, ref recordInfo);
+            }
+            //鎾ら槻
+            else if (recordInfo.Topic == "/Security/WithdrawMode_Respon")
+            {
+                this.RemoveSafetyGarrisonPush(jobject, ref recordInfo);
+            }
+            //甯冮槻
+            else if (recordInfo.Topic == "/Security/EnableMode_Respon")
+            {
+                this.SetSafetyGarrisonPush(jobject, ref recordInfo);
+            }
+            //閫昏緫瑙﹀彂涓婃姤
+            else if (recordInfo.Topic == "/Logic/Execute_Respon")
+            {
+                this.LogicExecutePush(jobject, ref recordInfo);
+            }
+            //鍦烘櫙瑙﹀彂涓婃姤
+            else if (recordInfo.Topic == "/Scene/Exec_Respon")
+            {
+                this.SceneExecPush(jobject, ref recordInfo);
+            }
+        }
+
+        #endregion
+
+        #region 鈻� 浼犳劅鍣ㄤ笂鎶________________________
+
+        /// <summary>
+        /// 浼犳劅鍣ㄨ澶囦笂鎶�
+        /// </summary>
+        /// <param name="receiveData"></param>
+        private bool SensorDeviceReportPush(JObject receiveData, ref MessageRecordInfo recordInfo)
+        {
+            var ias = new IASZone() { DeviceAddr = receiveData.Value<string>("DeviceAddr"), DeviceEpoint = receiveData.Value<int>("Epoint") };
+            ias.iASInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<IASZone.IASInfoData>(receiveData["Data"].ToString());
+            //鍥炬爣
+            var localDevice = Common.LocalDevice.Current.GetDevice(ias.DeviceAddr, ias.DeviceEpoint);
+            if (localDevice == null)
+            {
+                recordInfo.IconPath = "Device/Sensor.png";
+                //娑堟伅绫诲瀷:浼犳劅鍣�
+                recordInfo.MsgObjectText = Language.StringByID(R.MyInternationalizationString.uDeviceBelongId1200);
+            }
+            else
+            {
+                string selectPath = string.Empty;
+                string unselecPath = string.Empty;
+                Common.LocalDevice.Current.GetDeviceIcon(localDevice, ref unselecPath, ref selectPath);
+                recordInfo.IconPath = unselecPath;
+                //娑堟伅绫诲瀷
+                recordInfo.MsgObjectText = Common.LocalDevice.Current.GetDeviceEpointName(localDevice);
+            }
+
+            //娑堟伅
+            var info = HdlAlarmsLogic.Current.GetSensorAlarmInfo(ias);
+            if (info == null)
+            {
+                //闈炲湪鍐岀殑娑堟伅璁板綍
+                recordInfo.MsgText = Language.StringByID(R.MyInternationalizationString.uSensorAlarmHadTriggered);
+            }
+            else if (info.BatteryMsg != null)
+            {
+                recordInfo.MsgText = info.BatteryMsg;
+            }
+            else if (info.DemolishmenMsg != null)
+            {
+                recordInfo.MsgText = info.DemolishmenMsg;
+            }
+            else
+            {
+                recordInfo.MsgText = string.IsNullOrEmpty(info.AlarmMsg) == false ? info.AlarmMsg : Language.StringByID(R.MyInternationalizationString.uSensorAlarmHadTriggered);
+            }
+            return true;
+        }
+
+        #endregion
+
+        #region 鈻� 闂ㄩ攣涓婃姤___________________________
+
+        /// <summary>
+        /// 闂ㄩ攣涓婃姤
+        /// </summary>
+        /// <param name="receiveData"></param>
+        private void DoorLockDeviceReportPush(JObject receiveData, ref MessageRecordInfo recordInfo)
+        {
+            //鍥炬爣
+            var device = Common.LocalDevice.Current.GetDevice(receiveData.Value<string>("DeviceAddr"), receiveData.Value<int>("Epoint"));
+            if (device == null)
+            {
+                recordInfo.IconPath = "Device/IntelligentLocks.png";
+                //娑堟伅绫诲瀷:鏅鸿兘闂ㄩ攣
+                recordInfo.MsgObjectText = Language.StringByID(R.MyInternationalizationString.uDeviceBelongId2800);
+            }
+            else
+            {
+                string selectPath = string.Empty;
+                string unselecPath = string.Empty;
+                Common.LocalDevice.Current.GetDeviceIcon(device, ref unselecPath, ref selectPath);
+                recordInfo.IconPath = unselecPath;
+                //娑堟伅绫诲瀷
+                recordInfo.MsgObjectText = Common.LocalDevice.Current.GetDeviceEpointName(device);
+            }
+            //娑堟伅
+            var msgInfo = HdlAlarmsLogic.Current.GetDoorLockAlarmInfo(receiveData);
+            recordInfo.MsgText = msgInfo != null ? msgInfo.AlarmMsg : Language.StringByID(R.MyInternationalizationString.uDoorLocksAlarmHadTriggered);
+        }
+
+        #endregion
+
+        #region 鈻� 甯冮槻_______________________________
+
+        /// <summary>
+        /// 甯冮槻鎺ㄩ��
+        /// </summary>
+        /// <param name="receiveData"></param>
+        private void SetSafetyGarrisonPush(JObject receiveData, ref MessageRecordInfo recordInfo)
+        {
+            //鍥炬爣
+            recordInfo.IconPath = "Item/Safety.png";
+
+            var data = Newtonsoft.Json.JsonConvert.DeserializeObject<Safeguard.EnableModeResponseData>(receiveData["Data"].ToString());
+            if (data.Result == 0)
+            {
+                //绂诲甯冮槻
+                if (data.ModeId == 2)
+                {
+                    //绂诲甯冮槻
+                    recordInfo.MsgObjectText = Language.StringByID(R.MyInternationalizationString.uRemoveHomeGarrison);
+                    //宸叉墽琛�
+                    recordInfo.MsgText = Language.StringByID(R.MyInternationalizationString.uExecuted);
+                }
+                else
+                {
+                    //宸叉墽琛�
+                    recordInfo.MsgText = Language.StringByID(R.MyInternationalizationString.uExecuted);
+                    //娌℃湁鍐呴儴闃插尯
+                    if (HdlSafeguardLogic.Current.IsHadInternalDefenseArea() == false)
+                    {
+                        //甯冮槻
+                        recordInfo.MsgObjectText = Language.StringByID(R.MyInternationalizationString.uGarrison);
+                    }
+                    else
+                    {
+                        //鍦ㄥ甯冮槻
+                        recordInfo.MsgObjectText = Language.StringByID(R.MyInternationalizationString.uAtHomeGarrison);
+                    }
+                }
+            }
+            else
+            {
+                //甯冮槻璁剧疆澶辫触
+                recordInfo.MsgObjectText = Language.StringByID(R.MyInternationalizationString.uSetGarrisonFail);
+            }
+        }
+
+        #endregion
+
+        #region 鈻� 鎾ら槻_______________________________
+
+        /// <summary>
+        /// 鎾ら槻鎺ㄩ��
+        /// </summary>
+        /// <param name="receiveData"></param>
+        private void RemoveSafetyGarrisonPush(JObject receiveData, ref MessageRecordInfo recordInfo)
+        {
+            //鍥炬爣
+            recordInfo.IconPath = "Item/Safety.png";
+
+            var data = Newtonsoft.Json.JsonConvert.DeserializeObject<Safeguard.WithdrawModeResponseData>(receiveData["Data"].ToString());
+            if (data.Result == 0)
+            {
+                //宸叉墽琛�
+                recordInfo.MsgText = Language.StringByID(R.MyInternationalizationString.uExecuted);
+                //鎾ら槻
+                recordInfo.MsgObjectText = Language.StringByID(R.MyInternationalizationString.uWithdrawGarrison);
+            }
+            else
+            {
+                //鎾ら槻澶辫触
+                recordInfo.MsgObjectText = Language.StringByID(R.MyInternationalizationString.uRemoveGarrisonFail);
+            }
+        }
+
+        #endregion
+
+        #region 鈻� 閫昏緫瑙﹀彂涓婃姤_______________________
+
+        /// <summary>
+        /// 閫昏緫瑙﹀彂涓婃姤
+        /// </summary>
+        /// <param name="receiveData"></param>
+        private void LogicExecutePush(JObject receiveData, ref MessageRecordInfo recordInfo)
+        {
+            //鍥炬爣
+            recordInfo.IconPath = "Item/LogicMsgIcon.png";
+            //绫诲瀷:閫昏緫鍚嶅瓧
+            recordInfo.MsgObjectText = receiveData["Data"]["LogicName"].ToString();
+            //宸叉墽琛�
+            recordInfo.MsgText = Language.StringByID(R.MyInternationalizationString.uExecuted);
+        }
+
+        #endregion
+
+        #region 鈻� 鍦烘櫙瑙﹀彂涓婃姤_______________________
+
+        /// <summary>
+        /// 鍦烘櫙瑙﹀彂涓婃姤
+        /// </summary>
+        /// <param name="receiveData"></param>
+        private void SceneExecPush(JObject receiveData, ref MessageRecordInfo recordInfo)
+        {
+            //鍥炬爣
+            recordInfo.IconPath = "Item/SceneMsgIcon.png";
+            //绫诲瀷:鍦烘櫙鍚嶅瓧
+            recordInfo.MsgObjectText = receiveData["Data"]["ScenesName"].ToString();
+            //宸叉墽琛�
+            recordInfo.MsgText = Language.StringByID(R.MyInternationalizationString.uExecuted);
+        }
+
+        #endregion
+
+        #region 鈻� 鐣岄潰鍏抽棴___________________________
+
+        /// <summary>
+        /// 鐣岄潰鍏抽棴
+        /// </summary>
+        public override void CloseFormBefore()
+        {
+            if (UserCenterResourse.DicActionForm.ContainsKey("UserMainForm") == false)
+            {
+                Common.CommonPage.Instance.IsDrawerLockMode = false;
+            }
+            base.CloseFormBefore();
+        }
+
+        #endregion
     }
 }
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/UserMain/UserInformationForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/UserMain/UserInformationForm.cs
index 5395cca..8998b82 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/UserMain/UserInformationForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/UserMain/UserInformationForm.cs
@@ -184,7 +184,17 @@
             }
             else
             {
-                btnPhone.Text = "+" + UserCenterResourse.UserInfo.AreaCode + " " + UserCenterResourse.UserInfo.Phone;
+                string phoneNum = UserCenterResourse.UserInfo.Phone;
+                if (phoneNum.Length >= 11)
+                {
+                    phoneNum = phoneNum.Substring(0, 3) + "".PadLeft(phoneNum.Length - 7, '*') + phoneNum.Substring(phoneNum.Length - 4, 4);
+                }
+                else if (phoneNum.Length >= 5)
+                {
+                    //鎴栬杩欐槸鍥藉鐨勬墜鏈哄惂
+                    phoneNum = phoneNum.Substring(0, 3) + "".PadLeft(phoneNum.Length - 5, '*') + phoneNum.Substring(phoneNum.Length - 2, 2);
+                }
+                btnPhone.Text = "+" + UserCenterResourse.UserInfo.AreaCode + " " + phoneNum;
             }
             rowPhone.ButtonClickEvent += (sender, e) =>
             {
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/UserMain/UserMainForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/UserMain/UserMainForm.cs
index 591c299..4ce6701 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/UserMain/UserMainForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/UserMain/UserMainForm.cs
@@ -75,12 +75,6 @@
             //娓呯┖bodyFrame
             this.ClearBodyFrame();
 
-            //淇℃伅鎻愮ず鎺т欢
-            this.msgControl = new MessageManagementControl();
-            msgControl.Y = Application.GetRealHeight(127);
-            msgControl.X = Application.GetRealWidth(953);
-            bodyFrameLayout.AddChidren(this.msgControl);
-
             //涓汉涓績
             var btnTitle = new NormalViewControl(350, 100, true);
             btnTitle.X = ControlCommonResourse.XXLeft;
@@ -90,6 +84,21 @@
             btnTitle.IsBold = true;
             btnTitle.TextID = R.MyInternationalizationString.UserCenter;
             bodyFrameLayout.AddChidren(btnTitle);
+
+            var btnBack1 = new PicViewControl(1031, 942);
+            btnBack1.Y = btnTitle.Bottom - Application.GetRealHeight(10);
+            btnBack1.UnSelectedImagePath = "Center/MainBack1.png";
+            bodyFrameLayout.AddChidren(btnBack1);
+            var btnBack2 = new PicViewControl(392, 172);
+            btnBack2.X = Application.GetRealWidth(688);
+            btnBack2.UnSelectedImagePath = "Center/MainBack2.png";
+            bodyFrameLayout.AddChidren(btnBack2);
+
+            //淇℃伅鎻愮ず鎺т欢
+            this.msgControl = new MessageManagementControl();
+            msgControl.Y = Application.GetRealHeight(127);
+            msgControl.X = Application.GetRealWidth(953);
+            bodyFrameLayout.AddChidren(this.msgControl);
 
             //鐧芥
             var frameBack = new FrameLayout();
@@ -136,14 +145,15 @@
                 form.AddForm();
             };
 
-            if (UserCenterResourse.UserInfo.AuthorityNo == 1)
+            //鐨囧啝
+            this.btnImperialCrown = new IconViewControl(60);
+            btnImperialCrown.X = Application.GetRealWidth(346);
+            btnImperialCrown.Y = Application.GetRealHeight(475);
+            btnImperialCrown.UnSelectedImagePath = "Center/ImperialCrown.png";
+            bodyFrameLayout.AddChidren(btnImperialCrown);
+            if (UserCenterResourse.UserInfo.AuthorityNo != 1)
             {
-                //鐨囧啝
-                this.btnImperialCrown = new IconViewControl(60);
-                btnImperialCrown.X = Application.GetRealWidth(346);
-                btnImperialCrown.Y = Application.GetRealHeight(475);
-                btnImperialCrown.UnSelectedImagePath = "Center/ImperialCrown.png";
-                bodyFrameLayout.AddChidren(btnImperialCrown);
+                btnImperialCrown.Visible = false;
             }
 
             //鐢ㄦ埛鏄电О
@@ -475,17 +485,14 @@
                 //鐢ㄦ埛韬唤
                 btnAuthority.Text = UserCenterResourse.UserInfo.AuthorityText;
             }
-            if (this.btnImperialCrown != null)
+            //鐨囧啝
+            if (UserCenterResourse.UserInfo.AuthorityNo != 1)
             {
-                //鐨囧啝
-                if (UserCenterResourse.UserInfo.AuthorityNo != 1)
-                {
-                    this.btnImperialCrown.Visible = false;
-                }
-                else
-                {
-                    this.btnImperialCrown.Visible = true;
-                }
+                this.btnImperialCrown.Visible = false;
+            }
+            else
+            {
+                this.btnImperialCrown.Visible = true;
             }
 
             //鍒锋柊淇℃伅鎻愮ず鎺т欢
diff --git a/ZigbeeApp/Shared/Phone/UserView/SafetyShortcutControl.cs b/ZigbeeApp/Shared/Phone/UserView/SafetyShortcutControl.cs
new file mode 100755
index 0000000..b34e77b
--- /dev/null
+++ b/ZigbeeApp/Shared/Phone/UserView/SafetyShortcutControl.cs
@@ -0,0 +1,264 @@
+锘縰sing System;
+using Shared.Common;
+using Shared.Phone.UserCenter;
+
+namespace Shared.Phone.UserView
+{
+    public class SafetyShortcutControl:Button
+    {
+        /// <summary>
+        /// dialog
+        /// </summary>
+        private Dialog dialog;
+        /// <summary>
+        /// SafetyShortcut
+        /// </summary>
+        public SafetyShortcutControl()
+        {
+            this.Height = Application.GetMinRealAverage(69);
+            this.Width = Application.GetMinRealAverage(69);
+            this.UnSelectedImagePath = "Item/SafetyShortcut.png";
+            this.MouseUpEventHandler += (sender, e) =>
+            {
+                Show();
+            };
+        }
+
+        /// <summary>
+        /// Show
+        /// </summary>
+        private void Show()
+        {
+            Common.CommonPage.Instance.IsDrawerLockMode = true;
+
+            dialog = new Dialog();
+            dialog.BackgroundColor = ZigbeeColor.Current.GXCDailogBackGroundColor;
+            dialog.Show();
+            var closeBGview = new FrameLayout();
+            dialog.AddChidren(closeBGview);
+            closeBGview.MouseUpEventHandler += (send1, e1) =>
+            {
+                dialog.Close();
+            };
+
+            var bg = new Button
+            {
+                X = Application.GetRealWidth(485),
+                Y = Application.GetRealHeight(161),
+                Width = Application.GetRealWidth(449),
+                Height = Application.GetRealHeight(495),
+                UnSelectedImagePath = "Item/SafetyShortcut_background.png"
+            };
+            closeBGview.AddChidren(bg);
+
+            var bg1 = new FrameLayout
+            {
+                X = Application.GetRealWidth(485),
+                Y = Application.GetRealHeight(161),
+                Width = Application.GetRealWidth(449),
+                Height = Application.GetRealHeight(495),
+            };
+            closeBGview.AddChidren(bg1);
+
+            new System.Threading.Thread(async () =>
+            {
+                //鍒锋柊
+                var result = await HdlSafeguardLogic.Current.ReFreshByGateway();
+                if (result == false)
+                {
+                    return;
+                }
+                //鏄惁璁剧疆鏈夊唴閮ㄩ槻鍖�
+                Application.RunOnMainThread(() =>
+                {
+                    RefreshSafeZone(bg1, HdlSafeguardLogic.Current.IsHadInternalDefenseArea());
+                });
+            })
+            { IsBackground = true }.Start();
+        }
+
+        /// <summary>
+        /// 鏄剧ず闃插尯
+        /// </summary>
+        /// <param name="statu">true 3涓槻鍖� false 2涓槻鍖�</param>
+        private void RefreshSafeZone(FrameLayout layout, bool statu)
+        {
+            if(statu)
+            {
+                ShowThreeSafeType(layout);
+            }
+            else
+            {
+                ShowTwoSafeType(layout);
+            }
+        }
+
+        /// <summary>
+        /// 甯冮槻鎾ら槻
+        /// </summary>
+        /// <param name="layout"></param>
+        private void ShowTwoSafeType(FrameLayout layout)
+        {
+            Device.CommonForm.LeftIconButtonRow tempRow;
+            var atHome = new Device.CommonForm.LeftIconButtonRow(449, 150);
+            atHome.Y = Application.GetRealHeight(32);
+            atHome.Init("Item/SafetyShortcut_item.png", "Item/SafetyShortcut_itemSelected.png", Language.StringByID(R.MyInternationalizationString.uGarrison));
+            layout.AddChidren(atHome);
+            atHome.Tag = GarrisonMode.AtHome;
+            if (HdlSafeguardLogic.Current.NowGarrisonMode == GarrisonMode.AtHome)
+            {
+                atHome.IsSelected = true;
+                tempRow = atHome;
+            }
+            atHome.ClickBtn.MouseUpEventHandler += (sender, e) =>
+            {
+                if((sender as Button).IsSelected)
+                {
+                    dialog.Close();
+                    return;
+                }
+                CommonPage.Loading.Start();
+                new System.Threading.Thread(async () =>
+                {
+                    var result=await HdlSafeguardLogic.Current.SetSafetyGarrisonByModel(GarrisonMode.AtHome);
+                    Application.RunOnMainThread(() =>
+                    {
+                        CommonPage.Loading.Hide();
+                        dialog.Close();
+                        if(result == GarrisonMode.AtHome)
+                        {
+                            
+                        }
+                    });
+                    
+                })
+                { IsBackground = true }.Start();
+            };
+
+
+            var withdrawGarriso = new Device.CommonForm.LeftIconButtonRow(449, 150);
+            withdrawGarriso.Y = atHome.Bottom + Application.GetRealHeight(3);
+            withdrawGarriso.Init("Item/SafetyShortcut_item.png", "Item/SafetyShortcut_itemSelected.png", Language.StringByID(R.MyInternationalizationString.uWithdrawGarrison));
+            layout.AddChidren(withdrawGarriso);
+            withdrawGarriso.Tag = GarrisonMode.RemoveGarrison;
+            if (HdlSafeguardLogic.Current.NowGarrisonMode == GarrisonMode.None)
+            {
+                withdrawGarriso.IsSelected = true;
+                tempRow = withdrawGarriso;
+            }
+            withdrawGarriso.ClickBtn.MouseUpEventHandler += (sender, e) =>
+            {
+                if ((sender as Button).IsSelected)
+                {
+                    dialog.Close();
+                    return;
+                }
+                new System.Threading.Thread(() =>
+                {
+                    var result = HdlSafeguardLogic.Current.RemoveSafetyGarrison(GarrisonMode.RemoveGarrison, true);
+                    Application.RunOnMainThread(() =>
+                    {
+                        dialog.Close();
+                    });
+                })
+                { IsBackground = true }.Start();
+            };
+        }
+
+        /// <summary>
+        /// 鍦ㄥ 绂诲 鎾ら槻
+        /// </summary>
+        /// <param name="layout"></param>
+        private void ShowThreeSafeType(FrameLayout layout)
+        {
+            var atHome = new Device.CommonForm.LeftIconButtonRow(449, 150);
+            atHome.Y = Application.GetRealHeight(32);
+            atHome.Init("Item/SafetyShortcut_item.png", "Item/SafetyShortcut_itemSelected.png", Language.StringByID(R.MyInternationalizationString.uAtHomeGarrison));
+            layout.AddChidren(atHome);
+            if (HdlSafeguardLogic.Current.NowGarrisonMode == GarrisonMode.AtHome)
+            {
+                atHome.IsSelected = true;
+            }
+            atHome.ClickBtn.MouseUpEventHandler += (sender, e) =>
+            {
+                if ((sender as Button).IsSelected)
+                {
+                    dialog.Close();
+                    return;
+                }
+                new System.Threading.Thread(() =>
+                {
+                    var result = HdlSafeguardLogic.Current.SetSafetyGarrisonByModel(GarrisonMode.AtHome);
+                    Application.RunOnMainThread(() =>
+                    {
+                        dialog.Close();
+                    });
+                })
+                { IsBackground = true }.Start();
+            };
+
+
+            var removeHome = new Device.CommonForm.LeftIconButtonRow(449, 150);
+            removeHome.Y = atHome.Bottom + Application.GetRealHeight(3);
+            removeHome.Init("Item/SafetyShortcut_item.png", "Item/SafetyShortcut_itemSelected.png", Language.StringByID(R.MyInternationalizationString.uRemoveHomeGarrison));
+            layout.AddChidren(removeHome);
+            if (HdlSafeguardLogic.Current.NowGarrisonMode == GarrisonMode.RemoveHome)
+            {
+                removeHome.IsSelected = true;
+            }
+            removeHome.ClickBtn.MouseUpEventHandler += (sender, e) =>
+            {
+                if ((sender as Button).IsSelected)
+                {
+                    dialog.Close();
+                    return;
+                }
+                new System.Threading.Thread(() =>
+                {
+                    var result = HdlSafeguardLogic.Current.SetSafetyGarrisonByModel(GarrisonMode.RemoveHome);
+                    Application.RunOnMainThread(() =>
+                    {
+                        dialog.Close();
+                    });
+                })
+                { IsBackground = true }.Start();
+            };
+
+            var withdrawGarriso = new Device.CommonForm.LeftIconButtonRow(449, 150);
+            withdrawGarriso.Y = removeHome.Bottom + Application.GetRealHeight(3);
+            withdrawGarriso.Init("Item/SafetyShortcut_item.png", "Item/SafetyShortcut_itemSelected.png", Language.StringByID(R.MyInternationalizationString.uWithdrawGarrison));
+            layout.AddChidren(withdrawGarriso);
+            withdrawGarriso.HidenLine(true);
+            if (HdlSafeguardLogic.Current.NowGarrisonMode == GarrisonMode.None)
+            {
+                withdrawGarriso.IsSelected = true;
+            }
+            withdrawGarriso.ClickBtn.MouseUpEventHandler += (sender, e) =>
+            {
+                if ((sender as Button).IsSelected)
+                {
+                    dialog.Close();
+                    return;
+                }
+                new System.Threading.Thread(() =>
+                {
+                    var result = HdlSafeguardLogic.Current.RemoveSafetyGarrison(GarrisonMode.RemoveGarrison, true);
+                    Application.RunOnMainThread(() =>
+                    {
+                        dialog.Close();
+                    });
+                })
+                { IsBackground = true }.Start();
+            };
+        }
+
+        /// <summary>
+        /// RemoveFromParent
+        /// </summary>
+        public override void RemoveFromParent()
+        {
+            Common.CommonPage.Instance.IsDrawerLockMode = false;
+            base.RemoveFromParent();
+        }
+    }
+}
diff --git a/ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs b/ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs
old mode 100755
new mode 100644
index 5ff1223..ba4fa3d
--- a/ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs
+++ b/ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs
@@ -7,6 +7,7 @@
 using Shared.Phone.UserCenter.DoorLock;
 using System.Timers;
 using Shared.Phone.Device.DeviceLogic;
+using Shared.Phone.UserCenter;
 
 namespace Shared.Phone.UserView
 {
@@ -88,6 +89,8 @@
         /// sceneScrolView
         /// </summary>
         private VerticalScrolViewLayout sceneScrolView ;
+
+
         #endregion
 
         #region 鈼� 鎺ュ彛____________________________
@@ -135,7 +138,7 @@
                                 continue;
                             }
 
-                            for (int j=0;j<rowFL.ChildrenCount;j++)
+                            for (int j = 0; j < rowFL.ChildrenCount; j++)
                             {
                                 var deviceUI = (rowFL.GetChildren(j) as FunctionMainView).Tag as DeviceUI;
                                 if (deviceUI == null || deviceUI.CommonDevice == null)
@@ -221,7 +224,7 @@
                                             var ac = deviceUI.CommonDevice as ZigBee.Device.AC;
                                             ac.DeviceStatusReport = common.DeviceStatusReport;
                                             var attriButeList = ac.DeviceStatusReport.AttriBute;
-                                            foreach(var attList in attriButeList)
+                                            foreach (var attList in attriButeList)
                                             {
                                                 var curTemp = (attList.AttriButeData / 100 < ACControlBase.Temperature_High && attList.AttriButeData / 100 > ACControlBase.Temperature_Low) ? attList.AttriButeData / 100 : ACControlBase.Temperature_Default;
                                                 switch (attList.AttributeId)
@@ -270,7 +273,7 @@
                                             var ac = deviceUI.CommonDevice as ZigBee.Device.AC;
                                             var attriButeList = common.DeviceStatusReport.AttriBute;
                                             ac.DeviceStatusReport = common.DeviceStatusReport;
-                                            foreach(var attList in attriButeList)
+                                            foreach (var attList in attriButeList)
                                             {
                                                 switch (attList.AttributeId)
                                                 {
@@ -320,7 +323,7 @@
                                                     //姝ゅ睘鎬ц〃鏄庡綋鍓嶄寒搴︾▼搴�
                                                     dimmableLight.Level = attriButeList[0].AttriButeData;
                                                     dimmableLight.LastDateTime = DateTime.Now;
-                                                    (rowFL.GetChildren(j) as FunctionMainView).IsSelected = true;
+                                                    //rowFL.GetChildren(j) as FunctionMainView).IsSelected = true;
                                                     (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
                                                     break;
                                             }
@@ -336,7 +339,56 @@
                     }
                 });
             }
+            else if (typeTag == "IASInfoReport")
+            {
+                Application.RunOnMainThread(() =>
+                {
+                    try
+                    {
+                        for (int i = 0; deviceVerticalScrolViewLayout != null && i < deviceVerticalScrolViewLayout.ChildrenCount; i++)
+                        {
+                            var rowFL = deviceVerticalScrolViewLayout.GetChildren(i) as FrameLayout;
+                            if (rowFL.ChildrenCount == 0)
+                            {
+                                //璁惧涓虹┖鎴栬�呮帶浠朵负绌�
+                                continue;
+                            }
 
+                            for (int j = 0; j < rowFL.ChildrenCount; j++)
+                            {
+                                var deviceUI = (rowFL.GetChildren(j) as FunctionMainView).Tag as DeviceUI;
+                                if (deviceUI == null || deviceUI.CommonDevice == null)
+                                {
+                                    //璁惧涓虹┖鎴栬�呮帶浠朵负绌�
+                                    continue;
+                                }
+                                if (common.DeviceAddr != deviceUI.CommonDevice.DeviceAddr || common.DeviceEpoint != deviceUI.CommonDevice.DeviceEpoint)
+                                {
+                                    //鍒ゆ柇鏄惁涓哄綋鍓嶈澶�
+                                    continue;
+                                }
+
+                                switch (deviceUI.CommonDevice.Type)
+                                {
+                                    case DeviceType.IASZone:
+                                        //ias
+                                        var ias = common as IASZone;
+                                        var iAS = deviceUI.CommonDevice as ZigBee.Device.IASZone;
+                                        iAS.iASInfo = ias.iASInfo;
+                                        (rowFL.GetChildren(j) as FunctionMainView).IsSelected = iAS.iASInfo?.Alarm1 == 1;
+                                        (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
+                                        iAS.LastDateTime = DateTime.Now;
+                                        break;
+                                }
+                            }
+                        }
+                    }
+                    catch (Exception ex)
+                    {
+                        System.Console.WriteLine($"Error:{ex.Message}");
+                    }
+                });
+            }
         }
         /// <summary>
         /// Changeds the IL ogic status.
@@ -427,15 +479,19 @@
                 topFrameLayout.AddChidren(floorBtn);
             }
 
-            var messageBtn = new Button()
+            if(UserCenterResourse.Option.SafetyShortcut)
             {
-                X = Application.GetRealWidth(953),
-                Width = Application.GetMinRealAverage(69),
-                Height = Application.GetMinRealAverage(69),
-                Gravity = Gravity.CenterVertical,
-                UnSelectedImagePath = "Item/Message.png",
-                SelectedImagePath = "Item/MessageSelected.png"
-            };
+                var safetyBtn = new SafetyShortcutControl();
+                safetyBtn.X = Application.GetRealWidth(860);
+                safetyBtn.Gravity = Gravity.CenterVertical;
+                topFrameLayout.AddChidren(safetyBtn);
+            }
+
+            var messageBtn = new MessageManagementControl();
+            messageBtn.X = Application.GetRealWidth(953);
+            messageBtn.Gravity = Gravity.CenterVertical;
+            messageBtn.UnSelectedImagePath = "Item/Message.png";
+            messageBtn.SelectedImagePath = "Item/MessageSelected.png";
             topFrameLayout.AddChidren(messageBtn);
 
             var residecneName = new Button()
@@ -447,7 +503,7 @@
                 TextAlignment = TextAlignment.CenterLeft,
                 Text = Config.Instance.Home.Name ?? Language.StringByID(R.MyInternationalizationString.TheResidenceNameNull),
                 TextSize = 24,
-                TextColor = ZigbeeColor.Current.GXCTextBlackColor,
+                TextColor = ZigbeeColor.Current.GXCTextDeepBlackColor,
                 IsBold=true
             };
             if (Config.Instance.Home.IsOthreShare)
@@ -606,7 +662,7 @@
                             pointBtn.IsSelected = false;
                             nameBtn.IsSelected = false;
                         }
-                    };
+                    }
                 }
             };
             //娑堟伅
@@ -628,23 +684,30 @@
                 };
                 AddChidren(roomPageView);
                 //绐佸嚭杈硅窛
-                roomPageView.TCBJ = Application.GetRealWidth(112);
+                roomPageView.TCBJ = Application.GetRealWidth(181);
                 //涓や釜page涔嬮棿鐨勯棿璺�
-                roomPageView.JMBJ = Application.GetRealWidth(69);
+                roomPageView.JMBJ = Application.GetRealWidth(0);
 
                 //褰撳墠鎴块棿
-                //Room.CurrentRoom = Room.CurrentRoom == null ? Room.Lists[0] : Room.CurrentRoom;
                 var rList = Room.CurrentRoom.GetRoomsByCurrentFloorIdAppendLoveRoom();
-                Room.CurrentRoom = rList[0];
+                Room.CurrentRoom = Room.CurrentRoom ?? rList[0];
                 foreach (var room in rList)
                 {
                     var roomView = new Device.CommonForm.RoomView(0, 0);
                     roomPageView.AddChidren(roomView);
                     roomView.Init(room);
+                    roomView.HideName(true);
                     roomView.action += () =>
                     {
                         Show();
                     };
+                }
+                var curIndex = rList.FindIndex((obj) => obj.Id == Room.CurrentRoom.Id);
+                roomPageView.PageIndex = curIndex;
+                if (roomPageView.GetChildren(roomPageView.PageIndex) != null)
+                {
+                    (roomPageView.GetChildren(roomPageView.PageIndex) as RoomView).HideName(false);
+                    
                 }
 
                 var functionSceneView = new FrameLayout()
@@ -725,9 +788,22 @@
 
                 roomPageView.PageChange += (sender, e) =>
                 {
+                    if(roomPageView.GetChildren(roomPageView.PageIndex - 1) !=null)
+                    {
+                        (roomPageView.GetChildren(roomPageView.PageIndex - 1) as RoomView).HideName(true);
+                    }
+                    if (roomPageView.GetChildren(roomPageView.PageIndex + 1) != null)
+                    {
+                        (roomPageView.GetChildren(roomPageView.PageIndex + 1) as RoomView).HideName(true);
+                    }
+                    if (roomPageView.GetChildren(roomPageView.PageIndex) != null)
+                    {
+                        (roomPageView.GetChildren(roomPageView.PageIndex) as RoomView).HideName(false);
+                    }
                     //鍒囨崲褰撳墠鎴块棿
                     Room.CurrentRoom = rList[roomPageView.PageIndex];
                     RefreshBodyView();
+                    
                 };
             }
             else
@@ -901,6 +977,7 @@
                 Height = Application.GetRealHeight(200),
                 Text = Language.StringByID(R.MyInternationalizationString.NoFunction_Tip).Replace("{\\r\\n}", "\r\n"),
                 TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
+                TextAlignment=TextAlignment.Center,
                 IsMoreLines = true
             };
             functionSceneBodyView.AddChidren(noFunctionTip);
@@ -924,14 +1001,25 @@
             }
             else
             {
+                var dList = new List<DeviceUI> { };
+                foreach(var device in deviceList)
+                {
+                    var info = Common.LocalDevice.Current.GetDeviceBelongEnumInfo(device.CommonDevice);
+                    if (info.BeloneType == DeviceBeloneType.A骞叉帴鐐� || info.BeloneType == DeviceBeloneType.A涓户鍣�)
+                    {
+                        continue;
+                    }
+                    dList.Add(device);
+                }
+
                 deviceVerticalScrolViewLayout = new VerticalScrolViewLayout { };
                 functionSceneBodyView.AddChidren(deviceVerticalScrolViewLayout);
-                for (int i = 0; i < deviceList.Count; i++)
+                for (int i = 0; i < dList.Count; i++)
                 {
-                    var device = deviceList[i];
+                    var device = dList[i];
                     //new System.Threading.Thread(() =>
                     //{
-                        Application.RunOnMainThread(() =>
+                    Application.RunOnMainThread(() =>
                         {
                             try
                             {
@@ -1539,6 +1627,32 @@
                                         lightView.CollectButton.MouseUpEventHandler += collectionEvent;
                                     }
                                 }
+                                else if (device.CommonDevice.Type == DeviceType.IASZone)
+                                {
+                                    //鍚勭被浼犳劅鍣�
+                                    var ias = device.CommonDevice as IASZone;
+
+                                    var lightView = new FunctionMainView(xx, yy);
+                                    itemView.AddChidren(lightView);
+                                    lightView.Init();
+                                    lightView.Tag = device;
+                                    lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
+                                    lightView.SetStatuText(device.GetDeviceStatu());
+                                    lightView.SetDeviceName(device.CommonDevice.DeviceEpointName);
+                                    lightView.IsSelected = ias.iASInfo?.Alarm1 == 1;
+                                    lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(Room.CurrentRoom, device.FileName));
+                                    lightView.CanControl(false);
+                                    var dev = Room.LoveRoomDeviceUIFilePathList.Find((obj) => obj == device.FileName);
+                                    if (dev == null)
+                                    {
+                                        lightView.CollectButton.IsSelected = false;
+                                    }
+                                    else
+                                    {
+                                        lightView.CollectButton.IsSelected = true;
+                                    }
+                                    lightView.CollectButton.MouseUpEventHandler += collectionEvent;
+                                }
                                 else if (device.CommonDevice.Type == DeviceType.DoorLock)
                                 {
                                     //闂ㄩ攣
@@ -1634,6 +1748,7 @@
                 Height = Application.GetRealHeight(200),
                 Text = Language.StringByID(R.MyInternationalizationString.NoScene_Tip).Replace("{\\r\\n}", "\r\n"),
                 TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
+                TextAlignment = TextAlignment.Center,
                 IsMoreLines = true
             };
             functionSceneBodyView.AddChidren(noScenceTip);
diff --git a/ZigbeeApp/Shared/Phone/UserView/UserPage.cs b/ZigbeeApp/Shared/Phone/UserView/UserPage.cs
index be21182..90511ff 100755
--- a/ZigbeeApp/Shared/Phone/UserView/UserPage.cs
+++ b/ZigbeeApp/Shared/Phone/UserView/UserPage.cs
@@ -147,7 +147,7 @@
                                 var ac = (AC)myDevice;
                                 ac.DeviceStatusReport = common.DeviceStatusReport;
                                 var attriButeList = ac.DeviceStatusReport.AttriBute;
-                                foreach(var attList in attriButeList)
+                                foreach (var attList in attriButeList)
                                 {
                                     //姝ゅ睘鎬ц〃鏄庡鍐呭綋鍓嶇殑娓╁害 * 100锛屽疄闄呮俯搴︿负鈥淟ocalTemperature / 100鈥濓紝鍗曚綅锛氣剝
                                     var curTemp = (attList.AttriButeData / 100 < ACControlBase.Temperature_High && attList.AttriButeData / 100 > ACControlBase.Temperature_Low) ? attList.AttriButeData / 100 : ACControlBase.Temperature_Default;
@@ -193,7 +193,7 @@
                                 var ac = (AC)myDevice;
                                 var attriButeList = common.DeviceStatusReport.AttriBute;
                                 ac.DeviceStatusReport = common.DeviceStatusReport;
-                                foreach(var attList in attriButeList)
+                                foreach (var attList in attriButeList)
                                 {
                                     switch (attList.AttributeId)
                                     {
@@ -262,6 +262,21 @@
                 //璁板綍鍥炲鏃堕棿
                 myDevice.LastDateTime = DateTime.Now;
             }
+            else if (typeTag == "IASInfoReport")
+            {
+                try
+                {
+                    switch (myDevice.Type)
+                    {
+                        case DeviceType.IASZone:
+                            var iAS = (IASZone)myDevice;
+                            iAS.iASInfo = (common as IASZone).iASInfo;
+                            iAS.LastDateTime = DateTime.Now;
+                            break;
+                    }
+                }
+                catch { }
+            }
         }
         /// <summary>
         /// Changeds the IL ogic status.
diff --git a/ZigbeeApp/Shared/Phone/ZigBee/Device/CommonDevice.cs b/ZigbeeApp/Shared/Phone/ZigBee/Device/CommonDevice.cs
index 591353e..713effb 100755
--- a/ZigbeeApp/Shared/Phone/ZigBee/Device/CommonDevice.cs
+++ b/ZigbeeApp/Shared/Phone/ZigBee/Device/CommonDevice.cs
@@ -248,7 +248,7 @@
                     //鍏朵粬鐨勫浘鏍囨湁鐐圭壒娈�
                     string unSelectPic = string.Empty;
                     string selectPic = string.Empty;
-                    Shared.Common.LocalDevice.Current.GetDeviceBeloneIcon(new List<CommonDevice> { this }, ref unSelectPic, ref selectPic);
+                    Shared.Common.LocalDevice.Current.GetDeviceObjectIcon(new List<CommonDevice> { this }, ref unSelectPic, ref selectPic);
                     IconPath = unSelectPic;
                 }
                 Shared.Common.Global.WriteFileByBytesByHomeId(FilePath, System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this)));
diff --git a/ZigbeeApp/Shared/Phone/ZigBee/Device/IASZone.cs b/ZigbeeApp/Shared/Phone/ZigBee/Device/IASZone.cs
index 97b37d5..a299727 100755
--- a/ZigbeeApp/Shared/Phone/ZigBee/Device/IASZone.cs
+++ b/ZigbeeApp/Shared/Phone/ZigBee/Device/IASZone.cs
@@ -17,6 +17,11 @@
         /// </summary>
         public int LightLevelCount = -1;
 
+        /// <summary>
+        /// 褰撳墠Lux鍊� 
+        /// </summary>
+        public int PirLux = -1;
+
         #region IAS瀹夐槻淇℃伅涓婃姤.
         /// <summary>
         /// IAS瀹夐槻淇℃伅涓婃姤
@@ -383,9 +388,9 @@
         public class ConfigureParamates
         {
             /// <summary>
-            ///浜害锛堝厜鐓у害锛変娇鑳�
-            ///<para> false:涓嶄娇鑳�</para>
-            /// <para>true:浣胯兘</para>
+            /// 浜害锛堝厜鐓у害锛変娇鑳�
+            /// <para> false锛�0锛�:涓嶄娇鑳�</para>
+            /// <para>true锛�1锛�:浣胯兘</para>
             /// </summary>
             public bool levelEnable;
             /// <summary>
@@ -395,8 +400,8 @@
             public int levelSize = -1;
             /// <summary>
             ///鎺у埗璁惧浣胯兘浣�
-            ///<para> false:涓嶄娇鑳�</para>
-            /// <para>true:浣胯兘</para>
+            ///<para> false锛�0锛�:涓嶄娇鑳�</para>
+            /// <para>true锛�1锛�:浣胯兘</para>
             /// </summary>
             public bool controlDevEnable;
             /// <summary>
@@ -404,7 +409,38 @@
             /// <para>0-65535 鍗曚綅绉�</para>
             /// </summary>
             public int transitionTime;
-
+            /// <summary>
+            /// IAS涓婃姤鍛ㄦ湡
+            /// <para>10-0xffff 绉�</para>
+            /// </summary>
+            public int iasReportPeriod;
+            /// <summary>
+            /// 鍏夌収搴︾瓑绾�
+            /// <para>0锛氬崐鑷姩妯″紡</para>
+            /// <para>1锛氳嚜鍔ㄦā寮�</para>
+            /// </summary>
+            public int mode = 0;
+            /// <summary>
+            /// 寮�鐏被鍨�
+            /// <para>鍊硷細0锛氳皟鍏�</para>
+            ///<para>1锛氬紑鍏� </para>
+            /// </summary>
+            public int type = 0;
+            /// <summary>
+            /// 璋冨厜妯″紡锛屽埌杈惧紑鐏寒搴︾殑鏃堕棿
+            /// <para>鍊硷細0-10 绉�</para>
+            /// </summary>
+            public int dimmerOnTime = 0;
+            /// <summary>
+            /// 璋冨厜妯″紡锛屽叧鐏埌杈�0%鎵�闇�瑕佺殑鏃堕棿
+            /// <para>鍊硷細0-10 绉�</para>
+            /// </summary>
+            public int dimmerOffTime = 0;
+            /// <summary>
+            /// 璋冨厜妯″紡寮�鐏殑浜害
+            /// <para>0-0xff 锛堥鐣欙級</para>
+            /// </summary>
+            public int dimmerLevel = 0;
         }
 
         /// <summary>
@@ -414,19 +450,26 @@
         string SetPIRSensorData(ConfigureParamates configureParamates)
         {
             string data = "";
-            string dataLength = "09";
+            string dataLength = "10";
             string dataComand1 = "00";
             string dataComand2 = "03";
             string dataSerialNum = "01";
-            string addDataLength = "05";
+            string addDataLength = "0C";
             string levelEnable = "";
             string levelSize = "";
             string controlDevEnable = "";
             string transitionTime = "";
+            string iasReportPeriod = "";
+            string mode = "";
+            string type = "";
+            string dimmerOnTime = "";
+            string dimmerOffTime = "";
+            string dimmerLevel = "";
             try
             {
                 if (configureParamates != null)
                 {
+                    //levelEnable
                     if (configureParamates.levelEnable)
                     {
                         levelEnable = "01";
@@ -438,13 +481,14 @@
                     //鍏夌収绛夌骇
                     if (configureParamates.levelSize > 0)
                     {
-                        levelSize = configureParamates.levelSize.ToString().PadLeft(2, '0');
+                        var tempLevelEnable = Convert.ToString(configureParamates.levelSize, 16);
+                        levelSize = tempLevelEnable.ToString().PadLeft(2, '0');
                     }
                     else
                     {
                         levelSize = "00";
                     }
-
+                    //controlDevEnable
                     if (configureParamates.controlDevEnable)
                     {
                         controlDevEnable = "01";
@@ -453,27 +497,102 @@
                     {
                         controlDevEnable = "00";
                     }
+                    //transitionTime,iasReportPeriod
+                    for (int j = 0; j < 2; j++)
+                    {
+                        var tempBytes = new byte[2];
+                        if (j == 0)
+                        {
+                            for (int i = 0; i < 2; i++)
+                            {
+                                tempBytes[i] = (byte)(configureParamates.transitionTime >> (i * 8) & 0xff);
+                            }
+                        }
+                        else
+                        {
+                            for (int i = 0; i < 2; i++)
+                            {
+                                tempBytes[i] = (byte)(configureParamates.iasReportPeriod >> (i * 8) & 0xff);
+                            }
+                        }
+                        var time1 = Convert.ToString(tempBytes[0], 16);
+                        var time2 = Convert.ToString(tempBytes[1], 16);
+                        if (time1.Length == 1)
+                        {
+                            time1 = "0" + time1;
+                        }
+                        if (time2.Length == 1)
+                        {
+                            time2 = "0" + time2;
+                        }
+                        if (j == 0)
+                        {
+                            transitionTime = (time1 + time2).ToUpper();
 
-                    var tempBytes = new byte[2];
-                    for (int i = 0; i < 2; i++)
-                    {
-                        tempBytes[i] = (byte)(configureParamates.transitionTime >> (i * 8) & 0xff);
-                    }
-                    var time1 = Convert.ToString(tempBytes[0], 16);
-                    var time2 = Convert.ToString(tempBytes[1], 16);
-                    if (time1.Length == 1)
-                    {
-                        time1 = "0" + time1;
+                        }
+                        else
+                        {
+                            iasReportPeriod = (time1 + time2).ToUpper();
+                        }
                     }
-                    if (time2.Length == 1)
+                    //mode
+                    if (configureParamates.mode == 1)
                     {
-                        time2 = "0" + time2;
+                        mode = "01";
                     }
-                    transitionTime = (time1 + time2).ToUpper();
-                }
+                    else
+                    {
+                        mode = "00";
+                    }
+                    //type
+                    if (configureParamates.type == 1)
+                    {
+                        type = "01";
+                    }
+                    else
+                    {
+                        type = "00";
+                    }
+                    //dimmerOnTime
+                    if (configureParamates.dimmerOnTime > 0)
+                    {
+                        var tempDimmerOnTime = Convert.ToString(configureParamates.dimmerOnTime, 16);
+                        dimmerOnTime = tempDimmerOnTime.ToString().PadLeft(2, '0');
+                    }
+                    else
+                    {
+                        dimmerOnTime = "00";
+                    }
+                    dimmerOnTime = dimmerOnTime.ToUpper();
+                    if (configureParamates.dimmerOffTime > 0)
+                    {
+                        var tempDimmerOffTime = Convert.ToString(configureParamates.dimmerOffTime, 16);
+                        dimmerOffTime = tempDimmerOffTime.ToString().PadLeft(2, '0');
+                    }
+                    else
+                    {
+                        dimmerOffTime = "00";
+                    }
+                    dimmerOffTime = dimmerOffTime.ToUpper();
+                    //dimmerLevel 
+                    string temp = "";
+                    var sbString = new System.Text.StringBuilder();
+                    string temp2 = Convert.ToString(configureParamates.dimmerLevel, 16);
+                    switch (temp2.Length)
+                    {
+                        case 1:
+                            temp = "0" + temp2;
+                            break;
+                        case 2:
+                            temp = temp2;
+                            break;
+                    }
+                    sbString.Append(temp.ToUpper());
 
-                data = dataLength + dataComand1 + dataComand2 + dataSerialNum + addDataLength +
-                    levelEnable + levelSize + controlDevEnable + transitionTime;
+                    data = dataLength + dataComand1 + dataComand2 + dataSerialNum + addDataLength +
+                    levelEnable + levelSize + controlDevEnable + transitionTime + iasReportPeriod
+                    + mode + type + dimmerOnTime + dimmerOffTime + sbString;
+                }
             }
             catch { };
 
@@ -531,7 +650,7 @@
                             if (gatewayTemp.clientDataPassthroughResponseData?.PassData != null)
                             {
                                 var data = gatewayTemp.clientDataPassthroughResponseData.PassData;
-                                if (data.Length == 20)
+                                if (data.Length == 34)
                                 {
                                     var command = data[4].ToString() + data[5].ToString() + data[2].ToString() + data[3].ToString();
                                     if (command == "0302")
@@ -549,7 +668,7 @@
                                         }
 
                                         var size = data[12].ToString() + data[13].ToString();
-                                        tempD.levelSize = Convert.ToInt32(size);
+                                        tempD.levelSize = Convert.ToInt32(size, 16);
 
                                         var cdl = data[14].ToString() + data[15].ToString();
                                         if (cdl == "01")
@@ -560,8 +679,14 @@
                                         {
                                             tempD.controlDevEnable = false;
                                         }
-
                                         tempD.transitionTime = Convert.ToInt32(data[18].ToString() + data[19].ToString() + data[16].ToString() + data[17].ToString(), 16);
+                                        tempD.iasReportPeriod = Convert.ToInt32(data[22].ToString() + data[23].ToString() + data[20].ToString() + data[21].ToString(), 16);
+                                        tempD.mode = Convert.ToInt32(data[24].ToString() + data[25].ToString(), 16);
+                                        tempD.type = Convert.ToInt32(data[26].ToString() + data[27].ToString(), 16);
+                                        tempD.dimmerOnTime = Convert.ToInt32(data[28].ToString() + data[29].ToString(), 16);
+                                        tempD.dimmerOffTime = Convert.ToInt32(data[30].ToString() + data[31].ToString(), 16);
+                                        tempD.dimmerLevel = Convert.ToInt32(data[32].ToString() + data[33].ToString(), 16);
+
                                         configureParamates = tempD;
                                         result = new ParamatesInfo { configureParamates = tempD };
                                         System.Console.WriteLine($"UI鏀跺埌閫氱煡鍚庣殑涓婚_command:0301_{ topic}");
@@ -631,6 +756,152 @@
         }
         #endregion
 
+        #region 鑾峰彇PIR lux鍊硷紙Lux鍊硷級
+        ///<summary >
+        ///鑾峰彇PIR lux鍊硷紙Lux鍊硷級
+        /// <para>reserve:0-ff</para>
+        /// </summary>
+        public async System.Threading.Tasks.Task<PirLuxAbilitySizeInfo> GetPirLuxAbilitySizeAsync(string reserve = "01")
+        {
+            PirLuxAbilitySizeInfo result = null;
+            if (Gateway == null)
+            {
+                result = new PirLuxAbilitySizeInfo { errorMessageBase = "褰撳墠娌℃湁缃戝叧" };
+                return result;
+            }
+            return await System.Threading.Tasks.Task.Run(async () =>
+            {
+                Action<string, string> action = (topic, message) =>
+                {
+                    var gatewayID = topic.Split('/')[0];
+                    var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
 
+                    if (topic == gatewayID + "/" + "Error_Respon")
+                    {
+                        var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = Gateway.getGatewayBaseInfo.gwID };
+                        var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.ErrorResponData>(jobject["Data"].ToString());
+
+                        if (temp == null)
+                        {
+                            result = new PirLuxAbilitySizeInfo { errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖" };
+                        }
+
+                        else
+                        {
+                            result = new PirLuxAbilitySizeInfo { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) };
+                        }
+                    }
+
+                    if (topic == gatewayID + "/" + "ZbDataPassthrough")
+                    {
+                        var gatewayTemp = new ZbGateway() { DataID = jobject.Value<int>("Data_ID") };
+                        gatewayTemp.clientDataPassthroughResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<ClientDataPassthroughResponseData>(jobject["Data"].ToString());
+
+                        if (gatewayTemp.clientDataPassthroughResponseData == null)
+                        {
+                            result = new PirLuxAbilitySizeInfo { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" };
+                        }
+                        else
+                        {
+                            if (gatewayTemp.clientDataPassthroughResponseData?.PassData != null)
+                            {
+                                var data = gatewayTemp.clientDataPassthroughResponseData.PassData;
+                                if (data.Length == 12)
+                                {
+                                    var command = data[4].ToString() + data[5].ToString() + data[2].ToString() + data[3].ToString();
+                                    if (command == "0306")
+                                    {
+                                        var cou = data[10].ToString() + data[11].ToString();
+                                        int countTemp = Convert.ToInt32(cou, 16);
+                                        PirLux = countTemp;
+                                        result = new PirLuxAbilitySizeInfo { pirLux = countTemp };
+                                        System.Console.WriteLine($"UI鏀跺埌閫氱煡鍚庣殑涓婚_command:0303_{ topic}");
+                                    }
+                                }
+                            }
+                        }
+                    }
+                };
+
+                Gateway.Actions += action;
+                System.Console.WriteLine("ClientDataPassthrough_Actions 鍚姩" + System.DateTime.Now.ToString());
+
+                try
+                {
+                    var passData = SendPIRLuxAbilitySizeData(reserve);
+                    var jObject = new JObject { { "DeviceAddr", DeviceAddr }, { "Epoint", 200 }, { "Cluster_ID", 64513 }, { "Command", 0 } };
+                    var data = new JObject { { "PassData", passData } };
+                    jObject.Add("Data", data);
+                    Gateway.Send(("ClientDataPassthrough"), jObject.ToString());
+                }
+                catch { }
+
+                var dateTime = DateTime.Now;
+                while ((DateTime.Now - dateTime).TotalMilliseconds < 9000)//WaitReceiveDataTime)
+                {
+                    await System.Threading.Tasks.Task.Delay(10);
+                    if (result != null)
+                    {
+                        break;
+                    }
+                }
+                if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime)
+                {
+                    result = new PirLuxAbilitySizeInfo { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" };
+                }
+                Gateway.Actions -= action;
+                System.Console.WriteLine("ClientDataPassthrough_Actions 閫�鍑�" + System.DateTime.Now.ToString());
+
+                return result;
+            });
+        }
+
+        /// <summary>
+        ///鑾峰彇PIR lux鍊�
+        /// </summary>
+        string SendPIRLuxAbilitySizeData(string reserve)
+        {
+            string data = "";
+            string dataLength = "05";
+            string dataComand1 = "05";
+            string dataComand2 = "03";
+            string dataSerialNum = "01";
+            string addDataLength = "01";
+            string reserveData = reserve;
+
+            try
+            {
+                data = dataLength + dataComand1 + dataComand2 + dataSerialNum + addDataLength +
+                    reserveData;
+            }
+            catch { };
+
+            return data;
+        }
+
+        /// <summary>
+        /// PIR閰嶇疆鍙傛暟鍥炲
+        /// </summary>
+        public PirLuxAbilitySizeInfo pirLuxAbilitySizeInfo;
+        [System.Serializable]
+        public class PirLuxAbilitySizeInfo
+        {
+            /// <summary>
+            /// 閿欒淇℃伅
+            /// </summary>
+            public string errorMessageBase;
+            /// <summary>
+            /// 缃戝叧淇℃伅閿欒鍙嶉
+            /// <para>褰撶綉鍏虫帴鏀跺埌瀹㈡埛绔俊鎭悗锛屽嚭鐜颁互涓嬪紓甯告儏鍐靛皢鍙嶉閿欒銆�</para>
+            /// </summary>
+            public ErrorResponData errorResponData;
+            /// <summary>
+            /// 褰撳墠Lux鍊� 
+            /// <para>0-0xff Lux</para>
+            /// </summary>
+            public int pirLux = -1;
+        }
+
+        #endregion
     }
 }
diff --git a/ZigbeeApp/Shared/Phone/ZigBee/Device/Panel.cs b/ZigbeeApp/Shared/Phone/ZigBee/Device/Panel.cs
index ea8b188..df7711c 100755
--- a/ZigbeeApp/Shared/Phone/ZigBee/Device/Panel.cs
+++ b/ZigbeeApp/Shared/Phone/ZigBee/Device/Panel.cs
@@ -1,6 +1,7 @@
 锘縰sing System;
 using System.Collections.Generic;
 using System.Threading.Tasks;
+using MQTTnet;
 using Newtonsoft.Json.Linq;
 using Shared.Common;
 
@@ -2819,993 +2820,136 @@
         }
         #endregion
 
-        //#region 璁惧缁戝畾
-        ///// <summary>
-        /////璁惧缁戝畾
-        ///// </summary>
-        //public async System.Threading.Tasks.Task<AddedDeviceBindResponseAllData> AddDeviceBindAsync(AddBindData addBindData)
-        //{
-        //    return await System.Threading.Tasks.Task.Run(async () =>
-        //    {
-        //        var result = new AddedDeviceBindResponseAllData();
-        //        var mainGateway = ZbGateway.MainGateWay;
-        //        if (mainGateway == null)
-        //        {
-        //            result.errorMessageBase = "褰撳墠娌℃湁涓荤綉鍏�";
-        //            return result;
-        //        }
-        //        Action<string, string> action = (topic, message) =>
-        //        {
-        //            System.Console.WriteLine($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}");
-        //            var gatewayID = topic.Split('/')[0];
-        //            var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
-        //            if (topic == gatewayID + "/" + "Error_Respon")
-        //            {
-        //                var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = mainGateway.getGatewayBaseInfo.gwID };
-        //                var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.ErrorResponData>(jobject["Data"].ToString());
+        #region 鑾峰彇缃戝叧涓殑鍦烘櫙
+        /// <summary>
+        /// 鍙兘鑾峰彇鍦烘櫙淇℃伅锛屾病鏈夊満鏅腑鐨勮澶囦俊鎭�
+        /// </summary>
+        /// <returns></rxeturns>
+        public async System.Threading.Tasks.Task<GetOnlySceneAllData> GetSceneInfoAsync()
+        {
+            GetOnlySceneAllData result = null;
+            if (ZbGateway.MainGateWay == null)
+            {
+                result = new GetOnlySceneAllData { errorMessageBase = "娌℃湁涓荤綉鍏�" };
+            }
+            return await System.Threading.Tasks.Task.Run(async () =>
+            {
+                Action<string, string> action = (topic, message) =>
+                {
+                    var gatewayID = topic.Split('/')[0];
+                    var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
+                    if (topic == gatewayID + "/" + "Error_Respon")
+                    {
+                        var tempResult = Newtonsoft.Json.JsonConvert.DeserializeObject<ErrorResponData>(jobject["Data"].ToString());
+                        if (tempResult == null)
+                        {
+                            result = new GetOnlySceneAllData { errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖" };
+                        }
+                        else
+                        {
+                            result = new GetOnlySceneAllData { errorResponData = tempResult };
+                        }
+                    }
 
-        //                if (temp == null)
-        //                {
-        //                    result.errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖";
-        //                }
-        //                else
-        //                {
-        //                    result.errorResponData = temp;
-        //                    result.errorMessageBase = ErrorMess(temp.Error);
-        //                }
-        //            }
-        //            else if (topic == gatewayID + "/" + "Bind/SetBind_Respon")
-        //            {
-        //                var gatewayTemp = new ZbGateway() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = mainGateway.getGatewayBaseInfo.gwID };
-        //                //var tempBindName = Newtonsoft.Json.JsonConvert.DeserializeObject<string>(jobject["Data"]["BindName"].ToString());
-        //                var tempBindList = Newtonsoft.Json.Linq.JArray.Parse(jobject["Data"]["BindList"].ToString());
-        //                if (tempBindList == null)
-        //                {
-        //                    result.errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�";
-        //                }
-        //                else
-        //                {
-        //                    var dataBindRes = new AddedDeviceBindResponseData();
-        //                    for (int m = 0; tempBindList != null && m < tempBindList.Count; m++)
-        //                    {
-        //                        var tempBind = tempBindList[m];
-        //                        dataBindRes.BindList.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<AddBindListResponseObj>(tempBind.ToString()));
-        //                    }
-        //                    if (dataBindRes != null)
-        //                    {
-        //                        result.addedDeviceBindResponseData = dataBindRes;
-        //                        System.Console.WriteLine($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{topic}");
-        //                    }
-        //                }
-        //            }
-        //            else if (topic == gatewayID + "/" + "Bind/BindResult")
-        //            {
-        //                var gatewayTemp = new ZbGateway() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = mainGateway.getGatewayBaseInfo.gwID };
-        //                var tempData = Newtonsoft.Json.JsonConvert.DeserializeObject<AddBindResultResponseData>(jobject["Data"].ToString());
+                    if (topic == gatewayID + "/" + "Scene/GetInfo_Respon")
+                    {
+                        var getSceneInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<GetSceneInfo>(jobject["Data"].ToString());
+                        if (getSceneInfo == null)
+                        {
+                            result = new GetOnlySceneAllData { errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖" };
+                        }
+                        else
+                        {
+                            result = new GetOnlySceneAllData { getSceneInfo = getSceneInfo };
+                        }
+                    }
+                };
+                ZbGateway.MainGateWay.Actions += action;
+                System.Console.WriteLine("Scene/GetInfo_Actions 鍚姩" + System.DateTime.Now.ToString());
+                var jobjectData = new JObject { { "Cluster_ID", 0 }, { "Command", 805 } };
+                await ZbGateway.MainGateWay.Send(("Scene/GetInfo"), System.Text.Encoding.UTF8.GetBytes(jobjectData.ToString()));
 
-        //                if (tempData != null)
-        //                {
-        //                    result.addBindResultResponseData = tempData;
-        //                }
-        //            }
-        //        };
-        //        mainGateway.Actions += action;
-        //        System.Console.WriteLine("Bind/SetBind_Actions 鍚姩" + "_" + System.DateTime.Now.ToString());
-        //        try
-        //        {
-        //            if (addBindData != null)
-        //            {
-        //                var jObject = new JObject { { "DeviceAddr", addBindData.DeviceAddr }, { "Epoint", addBindData.Epoint }, { "Cluster_ID", 0 }, { "Command", 5001 } };
-        //                var bindList = new JArray { };
-        //                foreach (var bindInfo in addBindData.BindList)
-        //                {
-        //                    if (bindInfo.BindType == 0)
-        //                    {
-        //                        var dInfo = new JObject{
-        //                    { "BindMacAddr",bindInfo.BindMacAddr},
-        //                 { "BindEpoint", bindInfo.BindEpoint} ,
-        //                 { "BindCluster", bindInfo.BindCluster} ,
-        //                 { "BindType",bindInfo.BindType}
-        //                    };
-        //                        bindList.Add(dInfo);
-        //                    }
-        //                    else if (bindInfo.BindType == 1)
-        //                    {
-        //                        var dInfo = new JObject{
-        //                     { "BindCluster", bindInfo.BindCluster} ,
-        //                 { "BindType",bindInfo.BindType},
-        //                 { "BindScenesId", bindInfo.BindScenesId}
-        //                    };
-        //                        bindList.Add(dInfo);
-        //                    }
-        //                }
-        //                var data = new JObject{
-        //            {"BindName",addBindData.BindName},
-        //            { "BindList", bindList }
-        //            };
-        //                jObject.Add("Data", data);
-        //                mainGateway.Send("Bind/SetBind", jObject.ToString());
-        //            }
-        //        }
-        //        catch
-        //        {
-        //        }
-
-        //        var dateTime = DateTime.Now;
-        //        while ((DateTime.Now - dateTime).TotalMilliseconds < WaitReceiveDataTime)
-        //        {
-        //            await System.Threading.Tasks.Task.Delay(100);
-        //            if (result == null || result.addedDeviceBindResponseData == null)
-        //            {
-        //                continue;
-        //            }
-        //            if (0 < result.addedDeviceBindResponseData.BindList.FindAll((obj) => obj.BindType == 0).Count)
-        //            {
-        //                if (result.addBindResultResponseData != null)
-        //                {
-        //                    break;
-        //                }
-        //            }
-        //            else
-        //            {
-        //                break;
-        //            }
-        //        }
-        //        if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime)
-        //        {
-        //            result.errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔";
-        //        }
-        //        mainGateway.Actions -= action;
-        //        System.Console.WriteLine($"Bind/SetBind_Actions 閫�鍑� {System.DateTime.Now}");
-        //        return result;
-        //    });
-        //}
-
-        ///// <summary>
-        ///// 缁戝畾璁惧淇℃伅,缃戝叧鍙嶉淇℃伅
-        ///// </summary>
-        //public AddedDeviceBindResponseAllData addedDeviceBindResponseAllData;
-        //[System.Serializable]
-        //public class AddedDeviceBindResponseAllData
-        //{
-        //    /// <summary>
-        //    /// 閿欒淇℃伅
-        //    /// </summary>
-        //    public string errorMessageBase;
-        //    /// <summary>
-        //    /// 缃戝叧淇℃伅閿欒鍙嶉
-        //    /// <para>褰撶綉鍏虫帴鏀跺埌瀹㈡埛绔俊鎭悗锛屽嚭鐜颁互涓嬪紓甯告儏鍐靛皢鍙嶉閿欒銆�</para>
-        //    /// </summary>
-        //    public ErrorResponData errorResponData;
-        //    /// <summary>
-        //    /// 缃戝叧鐩存帴鍙嶉缁戝畾璁惧淇℃伅
-        //    /// </summary>
-        //    public AddedDeviceBindResponseData addedDeviceBindResponseData;
-        //    /// <summary>
-        //    /// 鎸夐敭璁惧鐨勭‘璁ゅ弽棣堢粦瀹氳澶囦俊鎭�
-        //    /// </summary>
-        //    public AddBindResultResponseData addBindResultResponseData;
-        //}
-
-        ///// <summary>
-        ///// 缁戝畾璁惧淇℃伅
-        ///// </summary>
-        //public AddedDeviceBindResponseData addedDeviceBindResponseData;
-        //[System.Serializable]
-        //public class AddedDeviceBindResponseData
-        //{
-        //    /// <summary>
-        //    ///缁戝畾鍚嶇О
-        //    /// </summary>
-        //    public string BindName;
-        //    /// <summary>
-        //    ///缁戝畾鍒楄〃 锛屽綋Status=0鏃跺瓨鍦�
-        //    /// </summary>
-        //    public List<AddBindListResponseObj> BindList = new List<AddBindListResponseObj>();
-        //}
-
-        ///// <summary>
-        ///// 缁戝畾鍒楄〃鐨勪俊鎭�
-        ///// </summary>
-        //[System.Serializable]
-        //public class AddBindListResponseObj : BindListResponseObj
-        //{
-        //    /// <summary>
-        //    /// 0锛氬姞鍏ユ垚鍔燂紙璇ョ姸鎬佸彧閫傜敤鐢ㄤ簬璺ㄧ綉鍏崇粦瀹氬拰缁戝畾鍦烘櫙銆傚悓缃戝叧璁惧闂寸殑缁戝畾闇�瑕佽妭鐐硅澶囩殑纭鎴愬姛淇℃伅锛屼笉浼氱洿鎺ュ弽棣堟垚鍔熴�傦級
-        //    ///<para>1锛氬け璐ワ紝鑺傜偣璁惧鎴栧満鏅笉瀛樺湪銆�</para>
-        //    ///<para>2锛氭湭鐭ワ紝鐢辫妭鐐硅澶囧弽棣堝彂閫佲�淏ind/BindResult鈥濅富棰樻秷鎭‘瀹氭槸鍚︽垚鍔熴��</para>
-        //    ///<para>3锛氱粦瀹氬凡缁忓瓨鍦ㄣ��</para>
-        //    /// </summary>
-        //    public int Result;
-        //}
-
-        ///// <summary>
-        ///// 鎸夐敭璁惧鐨勭‘璁ょ殑淇℃伅
-        ///// </summary>
-        //[System.Serializable]
-        //public class AddBindResultResponseData
-        //{
-        //    /// <summary>
-        //    ///缁戝畾缁撴灉
-        //    ///<para>0锛氭垚鍔�</para>
-        //    ///<para>140锛氬け璐ワ紝鎺у埗璁惧鐨勭粦瀹氬垪琛ㄥ凡婊�</para>
-        //    ///<para>鍏朵粬锛氬け璐�</para>
-        //    /// </summary>
-        //    public int Result;
-        //    /// <summary>
-        //    /// 缁戝畾鐨刢luster
-        //    /// </summary>
-        //    public int BindCluster;
-        //    /// <summary>
-        //    /// 缁戝畾璁惧Mac鍦板潃锛� 褰揃indType=0鏃跺瓨鍦�
-        //    /// </summary>
-        //    public string BindMacAddr;
-        //    /// <summary>
-        //    /// 缁戝畾璁惧鐨勭鍙e彿锛屽綋BindType=0鏃跺瓨鍦�
-        //    /// </summary>
-        //    public int BindEpoint;
-        //    /// <summary>
-        //    /// 缁戝畾鍦烘櫙锛屽綋BindType=2鏃跺瓨鍦�
-        //    /// </summary>
-        //    public int BindScenesId;
-        //    /// <summary>
-        //    /// 缁戝畾璁惧鐨勫悕绉�
-        //    /// </summary>
-        //    public string DeviceName;
-        //}
-
-        ///// <summary>
-        ///// 缁戝畾璁惧鐨勬暟鎹�
-        ///// </summary>
-        //public AddBindData addBindData;
-        //[System.Serializable]
-        //public class AddBindData
-        //{
-        //    /// <summary>
-        //    /// 鎺у埗璁惧鑺傜偣鐨刴ac鍦板潃
-        //    /// </summary>
-        //    public string DeviceAddr;
-        //    /// <summary>
-        //    /// 閿欒淇℃伅
-        //    /// </summary>
-        //    public int Epoint;
-        //    /// <summary>
-        //    ///缁戝畾鍚嶇О锛屼笉淇敼鍚嶇О鏃跺拷鐣ヨ閫夐」
-        //    /// </summary>
-        //    public string BindName;
-        //    /// <summary>
-        //    ///缁戝畾鍒楄〃锛屼笉淇敼缁戝畾鍒楄〃鏃跺拷鐣ヨ閫夐」銆�
-        //    /// </summary>
-        //    public List<AddBindListObj> BindList = new List<AddBindListObj>();
-        //}
-
-        ///// <summary>
-        ///// 鎺у埗璁惧缁戝畾鐨勪俊鎭�
-        ///// </summary>
-        //[System.Serializable]
-        //public class AddBindListObj
-        //{
-        //    /// <summary>
-        //    /// 缁戝畾绫诲瀷
-        //    ///<para>0锛氱粦瀹氳澶� </para>
-        //    ///<para>1锛氱粦瀹氬満鏅�</para>
-        //    /// </summary>
-        //    public int BindType;
-        //    /// <summary>
-        //    /// 缁戝畾鐨刢luster,闇�瑕佹帶鍒惰澶囩殑OutCluster鍒楄〃涓瓨鍦ㄨcluster銆�
-        //    ///濡傜粦瀹氭煇涓澶囩殑on/off锛屼负6銆�
-        //    /// </summary>
-        //    public int BindCluster;
-        //    /// <summary>
-        //    /// 缁戝畾璁惧Mac鍦板潃锛� 褰揃indType=0鏃跺瓨鍦�
-        //    /// </summary>
-        //    public string BindMacAddr;
-        //    /// <summary>
-        //    /// 缁戝畾璁惧鐨勭鍙e彿锛屽綋BindType=0鏃跺瓨鍦�
-        //    /// </summary>
-        //    public int BindEpoint;
-        //    /// <summary>
-        //    /// 缁戝畾鍦烘櫙锛屽綋BindType=1鏃跺瓨鍦�
-        //    /// </summary>
-        //    public int BindScenesId;
-        //}
-        //#endregion
-
-        //#region 瑙i櫎缁戝畾
-        ///// <summary>
-        ///// 瑙i櫎缁戝畾
-        ///// </summary>
-        //public async System.Threading.Tasks.Task<DelDeviceBindResponseAllData> DelDeviceBindAsync(DelDeviceBindData delDeviceBindData)
-        //{
-        //    return await System.Threading.Tasks.Task.Run(async () =>
-        //    {
-        //        var responseData = new DelDeviceBindResponseAllData();
-        //        var mainGateway = ZbGateway.MainGateWay;
-        //        if (mainGateway == null)
-        //        {
-        //            responseData.errorMessageBase = "褰撳墠娌℃湁涓荤綉鍏�";
-        //            return responseData;
-        //        }
-
-        //        Action<string, string> action = (topic, message) =>
-        //        {
-        //            var gatewayID = topic.Split('/')[0];
-        //            var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
-
-        //            if (topic == gatewayID + "/" + "Error_Respon")
-        //            {
-        //                var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = mainGateway.getGatewayBaseInfo.gwID };
-        //                var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.ErrorResponData>(jobject["Data"].ToString());
-
-        //                if (temp == null)
-        //                {
-        //                    responseData.errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖";
-        //                }
-        //                else
-        //                {
-        //                    responseData.errorResponData = temp;
-        //                    responseData.errorMessageBase = ErrorMess(temp.Error);
-        //                }
-        //            }
-
-        //            if (topic == gatewayID + "/" + "Bind/RemoveBind_Respon")
-        //            {
-        //                var gatewayTemp = new ZbGateway() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = Gateway.getGatewayBaseInfo.gwID };
-        //                var tempData = Newtonsoft.Json.JsonConvert.DeserializeObject<DelDeviceBindResponseData>(jobject["Data"].ToString());
-
-        //                if (tempData == null)
-        //                {
-        //                    responseData.errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�";
-
-        //                }
-        //                else
-        //                {
-        //                    responseData.delDeviceBindResponseData = tempData;
-        //                    System.Console.WriteLine($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}");
-        //                }
-        //            }
-
-        //            if (topic == gatewayID + "/" + "Bind/RemoveBindResult")
-        //            {
-        //                var gatewayTemp = new ZbGateway() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = mainGateway.getGatewayBaseInfo.gwID };
-        //                var tempData = Newtonsoft.Json.JsonConvert.DeserializeObject<RemoveBindResultResponseData>(jobject["Data"].ToString());
-
-        //                if (tempData != null)
-        //                {
-        //                    responseData.removeBindResultResponseData = tempData;
-        //                    System.Console.WriteLine($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}");
-        //                }
-        //            }
-        //        };
-        //        mainGateway.Actions += action;
-        //        System.Console.WriteLine("DeviceBind/DelBind_Actions 鍚姩" + "_" + System.DateTime.Now.ToString());
-        //        try
-        //        {
-        //            if (delDeviceBindData != null)
-        //            {
-        //                var jObject = new JObject { { "DeviceAddr", delDeviceBindData.DeviceAddr }, { "Epoint", delDeviceBindData.Epoint }, { "Cluster_ID", 0 }, { "Command", 5003 } };
-        //                var removeBindList = new JArray { };
-        //                foreach (var removeBindInfo in delDeviceBindData.RemoveBindList)
-        //                {
-        //                    if (removeBindInfo.BindType == 0)
-        //                    {
-        //                        var dInfo = new JObject{
-        //                    { "BindMacAddr",removeBindInfo.BindMacAddr},
-        //                 { "BindEpoint", removeBindInfo.BindEpoint} ,
-        //                 { "BindCluster", removeBindInfo.BindCluster} ,
-        //                 { "BindType",removeBindInfo.BindType}
-        //                    };
-        //                        removeBindList.Add(dInfo);
-        //                    }
-        //                    else if (removeBindInfo.BindType == 1)
-        //                    {
-        //                        var dInfo = new JObject{
-        //                 { "BindCluster", removeBindInfo.BindCluster} ,
-        //                 { "BindType",removeBindInfo.BindType},
-        //                 { "BindScenesId", removeBindInfo.BindScenesId}
-        //                    };
-        //                        removeBindList.Add(dInfo);
-        //                    }
-        //                }
-        //                var data = new JObject {
-        //            {"RemoveBindList",removeBindList}
-        //             };
-        //                jObject.Add("Data", data);
-        //                mainGateway.Send("Bind/RemoveBind", jObject.ToString());
-        //            }
-        //        }
-        //        catch { }
-
-
-        //        var dateTime = DateTime.Now;
-        //        while ((DateTime.Now - dateTime).TotalMilliseconds < WaitReceiveDataTime)
-        //        {
-        //            await System.Threading.Tasks.Task.Delay(100);
-        //            if (responseData == null || responseData.delDeviceBindResponseData == null)
-        //            {
-        //                continue;
-        //            }
-        //            if (0 < responseData.delDeviceBindResponseData.RemoveBindList.FindAll((obj) => obj.BindType == 0).Count)
-        //            {
-        //                if (responseData.removeBindResultResponseData != null)
-        //                {
-        //                    break;
-        //                }
-        //            }
-        //            else
-        //            {
-        //                break;
-        //            }
-        //        }
-
-        //        if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime)
-        //        {
-        //            responseData.errorMessageBase = "鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔";
-        //        }
-        //        mainGateway.Actions -= action;
-        //        System.Console.WriteLine("DeviceBind/DelBind_Actions 閫�鍑�" + System.DateTime.Now.ToString());
-
-        //        return responseData;
-        //    });
-        //}
-
-        ///// <summary>
-        /////瑙i櫎缁戝畾鏁版嵁,缃戝叧鍙嶉淇℃伅
-        ///// </summary>
-        //public DelDeviceBindResponseAllData delDeviceBindResponseAllData;
-        ///// <summary>
-        /////瑙i櫎缁戝畾鏁版嵁,缃戝叧鍙嶉淇℃伅
-        ///// </summary>
-        //[System.Serializable]
-        //public class DelDeviceBindResponseAllData
-        //{
-        //    /// <summary>
-        //    /// 閿欒淇℃伅
-        //    /// </summary>
-        //    public string errorMessageBase;
-        //    /// <summary>
-        //    /// 缃戝叧淇℃伅閿欒鍙嶉
-        //    /// <para>褰撶綉鍏虫帴鏀跺埌瀹㈡埛绔俊鎭悗锛屽嚭鐜颁互涓嬪紓甯告儏鍐靛皢鍙嶉閿欒銆�</para>
-        //    /// </summary>
-        //    public ErrorResponData errorResponData;
-        //    /// <summary>
-        //    /// 瑙i櫎缁戝畾鏁版嵁淇℃伅
-        //    /// </summary>
-        //    public DelDeviceBindResponseData delDeviceBindResponseData;
-
-        //    /// <summary>
-        //    /// 瑙i櫎缁戝畾鎸夐敭纭鏁版嵁淇℃伅
-        //    /// </summary>
-        //    public RemoveBindResultResponseData removeBindResultResponseData;
-        //}
-
-        ///// <summary>
-        ///// 瑙i櫎缁戝畾鏁版嵁
-        ///// </summary>
-        //public DelDeviceBindResponseData delDeviceBindResponseData;
-        ///// <summary>
-        ///// 瑙i櫎缁戝畾鏁版嵁
-        ///// </summary>
-        //[System.Serializable]
-        //public class DelDeviceBindResponseData
-        //{
-        //    /// <summary>
-        //    ///缁戝畾鍒楄〃 锛屽綋Status=0鏃跺瓨鍦�
-        //    /// </summary>
-        //    public List<RemoveBindListResponseObj> RemoveBindList = new List<RemoveBindListResponseObj>();
-        //}
-
-        ///// <summary>
-        ///// 绉婚櫎璁惧缁戝畾鐨勪俊鎭�
-        ///// </summary>
-        //[System.Serializable]
-        //public class RemoveBindListResponseObj : BindListResponseObj
-        //{
-        //    /// <summary>
-        //    /// 0锛氱Щ闄ゆ垚鍔燂紙璇ョ姸鎬佸彧閫傜敤鐢ㄤ簬璺ㄧ綉鍏崇粦瀹氥�佺粦瀹氬満鏅�佸け鏁堣澶囷紙璁惧宸茬粡浠庣綉鍏崇殑璁惧鍒楄〃涓垹闄わ級銆傚悓缃戝叧璁惧闂寸殑瑙i櫎缁戝畾闇�瑕佽妭鐐硅澶囩殑纭鎴愬姛淇℃伅锛屼笉浼氱洿鎺ュ弽棣堟垚鍔熴�傦級
-        //    ///<para>1锛氬け璐ワ紝璁惧涓嶅湪缁戝畾鍒楄〃涓�</para>
-        //    ///<para>3锛氬け璐ワ紝鍦ㄧ瓑寰呰妭鐐硅澶囩‘璁ゆ槸鍚﹁В闄ょ粦瀹氭垚鍔燂紙褰撶綉鍏宠繕鍦ㄧ瓑寰呮煇鑺傜偣璁惧纭鏄惁瑙i櫎缁戝畾鎴愬姛鐨勫弽棣堜俊鎭椂锛屽鎴风鍐嶆鍙戦�佽В闄ょ粦瀹氳鑺傜偣璁惧鐨勬寚浠わ紝灏嗗弽棣堣鐘舵�併�傦級</para>
-        //    ///<para>4锛氭湭鐭ワ紝鐢辫妭鐐硅澶囧弽棣堝彂閫佲�淏ind/RemoveBindResult鈥濅富棰樻秷鎭‘瀹氭槸鍚︽垚鍔熴��</para>
-        //    /// </summary>
-        //    public int Result;
-
-        //}
-
-        ///// <summary>
-        ///// 绉婚櫎璁惧缁戝畾鎸夐敭纭鐨勪俊鎭�
-        ///// </summary>
-        //[System.Serializable]
-        //public class RemoveBindResultResponseData
-        //{
-        //    /// <summary>
-        //    ///缁戝畾缁撴灉
-        //    ///<para>0锛氭垚鍔�</para>
-        //    ///<para>136锛氭帶鍒惰澶囨湰鍦扮粦瀹氬垪琛ㄤ腑鏃犳缁戝畾</para>
-        //    ///<para>鍏朵粬锛氬け璐�</para>
-        //    /// </summary>
-        //    public int Result;
-
-        //    /// <summary>
-        //    /// 缁戝畾璁惧Mac鍦板潃
-        //    /// </summary>
-        //    public string BindMacAddr;
-        //    /// <summary>
-        //    /// 缁戝畾璁惧鐨勭鍙e彿
-        //    /// </summary>
-        //    public int BindEpoint;
-        //    /// <summary>
-        //    /// 缁戝畾鐨刢luster
-        //    /// </summary>
-        //    public int BindCluster;
-        //    /// <summary>
-        //    /// 缁戝畾璁惧鍚嶇О
-        //    /// </summary>
-        //    public string DeviceName;
-        //}
-
-        ///// <summary>
-        ///// 瑙i櫎缁戝畾鏁版嵁
-        ///// </summary>
-        //public DelDeviceBindData delDeviceBindData;
-        ///// <summary>
-        ///// 瑙i櫎缁戝畾鏁版嵁
-        ///// </summary>
-        //[System.Serializable]
-        //public class DelDeviceBindData
-        //{
-        //    /// <summary>
-        //    /// 鎺у埗璁惧鑺傜偣鐨刴ac鍦板潃
-        //    /// </summary>
-        //    public string DeviceAddr;
-        //    /// <summary>
-        //    /// 閿欒淇℃伅
-        //    /// </summary>
-        //    public int Epoint;
-        //    /// <summary>
-        //    ///缁戝畾鍒楄〃 锛屽綋Status=0鏃跺瓨鍦�
-        //    /// </summary>
-        //    public List<RemoveBindListObj> RemoveBindList = new List<RemoveBindListObj>();
-        //}
-
-        ///// <summary>
-        ///// 绉婚櫎璁惧缁戝畾鐨勪俊鎭�
-        ///// </summary>
-        //[System.Serializable]
-        //public class RemoveBindListObj
-        //{
-
-        //    /// <summary>
-        //    /// 缁戝畾绫诲瀷
-        //    ///<para>0锛氱Щ闄よ澶� </para>
-        //    ///<para>1锛氱Щ闄ゅ満鏅�</para>
-        //    /// </summary>
-        //    public int BindType;
-        //    /// <summary>
-        //    /// 缁戝畾鐨刢luster
-        //    /// </summary>
-        //    public int BindCluster;
-        //    /// <summary>
-        //    /// 缁戝畾璁惧Mac鍦板潃锛� 褰揃indType=0鏃跺瓨鍦�
-        //    /// </summary>
-        //    public string BindMacAddr;
-        //    /// <summary>
-        //    /// 缁戝畾璁惧鐨勭鍙e彿锛屽綋BindType=0鏃跺瓨鍦�
-        //    /// </summary>
-        //    public int BindEpoint;
-        //    /// <summary>
-        //    /// 缁戝畾鍦烘櫙锛屽綋BindType=1鏃跺瓨鍦�
-        //    /// </summary>
-        //    public int BindScenesId;
-        //}
-        //#endregion
-
-        //#region 鑾峰彇鎵�鏈夌粦瀹�
-        ///// <summary>
-        /////鑾峰彇鎵�鏈夌粦瀹�
-        ///// </summary>
-        //public async System.Threading.Tasks.Task<GetDeviceBindResponseAllData> GetDeviceBindAsyncAsync()
-        //{
-        //    return await System.Threading.Tasks.Task.Run(async () =>
-        //    {
-        //        GetDeviceBindResponseAllData d = null;
-        //        var mainGateway = ZbGateway.MainGateWay;
-        //        if (mainGateway == null)
-        //        {
-        //            d = new GetDeviceBindResponseAllData { errorMessageBase = "褰撳墠娌℃湁涓荤綉鍏�" };
-        //            return d;
-        //        }
-
-        //        Action<string, string> action = (topic, message) =>
-        //        {
-        //            var gatewayID = topic.Split('/')[0];
-        //            var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
-
-        //            if (topic == gatewayID + "/" + "Error_Respon")
-        //            {
-        //                var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = mainGateway.getGatewayBaseInfo.gwID };
-        //                var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.ErrorResponData>(jobject["Data"].ToString());
-
-        //                if (temp == null)
-        //                {
-        //                    d = new GetDeviceBindResponseAllData { errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖" };
-        //                }
-        //                else
-        //                {
-        //                    d = new GetDeviceBindResponseAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) };
-        //                }
-        //            }
-
-        //            if (topic == gatewayID + "/" + "Bind/GetDeviceBind_Respon")
-        //            {
-        //                var gatewayTemp = new ZbGateway() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = mainGateway.getGatewayBaseInfo.gwID };
-        //                var tempData = Newtonsoft.Json.JsonConvert.DeserializeObject<GetDeviceBindResponseData>(jobject["Data"].ToString());
-        //                //var tempBindList = Newtonsoft.Json.Linq.JArray.Parse(jobject["Data"]["BindList"].ToString());
-        //                if (tempData == null)
-        //                {
-        //                    d = new GetDeviceBindResponseAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" };
-        //                }
-        //                else
-        //                {
-        //                    d = new GetDeviceBindResponseAllData { getAllBindResponseData = tempData };
-        //                    System.Console.WriteLine($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}");
-        //                }
-        //            }
-        //        };
-        //        mainGateway.Actions += action;
-
-        //        try
-        //        {
-        //            System.Console.WriteLine("Bind/GetDeviceBind_Actions 鍚姩" + "_" + System.DateTime.Now.ToString());
-        //            var jObject = new JObject { { "DeviceAddr", DeviceAddr }, { "Epoint", DeviceEpoint }, { "Cluster_ID", 0 }, { "Command", 5007 } };
-        //            mainGateway.Send("Bind/GetDeviceBind", jObject.ToString());
-        //        }
-        //        catch { }
-
-        //        var dateTime = DateTime.Now;
-        //        while ((DateTime.Now - dateTime).TotalMilliseconds < WaitReceiveDataTime)
-        //        {
-        //            await System.Threading.Tasks.Task.Delay(10);
-        //            if (d != null)
-        //            {
-        //                break;
-        //            }
-        //        }
-        //        if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime)
-        //        {
-        //            d = new GetDeviceBindResponseAllData { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" };
-        //        }
-        //        mainGateway.Actions -= action;
-        //        System.Console.WriteLine("Bind/GetDeviceBind_Actions 閫�鍑�" + System.DateTime.Now.ToString());
-
-        //        return d;
-        //    });
-        //}
-
-        ///// <summary>
-        /////鑾峰彇鎵�鏈夌粦瀹氭暟鎹�,缃戝叧鍙嶉淇℃伅
-        ///// </summary>
-        //public GetDeviceBindResponseAllData getAllBindResponseAllData;
-        //[System.Serializable]
-        //public class GetDeviceBindResponseAllData
-        //{
-        //    /// <summary>
-        //    /// 閿欒淇℃伅
-        //    /// </summary>
-        //    public string errorMessageBase;
-        //    /// <summary>
-        //    /// 缃戝叧淇℃伅閿欒鍙嶉
-        //    /// <para>褰撶綉鍏虫帴鏀跺埌瀹㈡埛绔俊鎭悗锛屽嚭鐜颁互涓嬪紓甯告儏鍐靛皢鍙嶉閿欒銆�</para>
-        //    /// </summary>
-        //    public ErrorResponData errorResponData;
-        //    /// <summary>
-        //    /// 鎺у埗璁惧缁戝畾鐨勮澶囧垪琛ㄥ洖澶嶆暟鎹�
-        //    /// </summary>
-        //    public GetDeviceBindResponseData getAllBindResponseData;
-        //}
-
-        ///// <summary>
-        ///// 鑾峰彇鎵�鏈夌粦瀹氬洖澶嶇殑鏁版嵁
-        ///// </summary>
-        //public GetDeviceBindResponseData getAllBindResponseData;
-        //[System.Serializable]
-        //public class GetDeviceBindResponseData
-        //{
-        //    /// <summary>
-        //    /// 0锛氭垚鍔�
-        //    ///<para>1锛氱粦瀹氫笉瀛樺湪</para>
-        //    /// </summary>
-        //    public int Result;
-        //    /// <summary>
-        //    /// 缁戝畾鍒楄〃 锛屽綋Status=0鏃跺瓨鍦ㄣ��
-        //    /// </summary>
-        //    public List<BindListResponseObj> BindList = new List<BindListResponseObj>();
-        //}
-
-        ///// <summary>
-        ///// 鑾峰彇鎵�鏈夌粦瀹氱殑淇℃伅
-        ///// </summary>
-        //public class BindListResponseObj
-        //{
-        //    /// <summary>
-        //    /// 缁戝畾绫诲瀷
-        //    ///<para>0锛氱Щ闄よ澶囷紝鍚岀綉鍏宠澶囬棿鐨勭Щ闄�</para>
-        //    ///<para>1锛氱Щ闄よ澶囷紝璺ㄧ綉鍏宠澶囬棿鐨勭Щ闄�</para>
-        //    ///<para>2锛氱Щ闄ょ粦瀹氬満鏅�</para>
-        //    /// </summary>
-        //    public int BindType;
-        //    /// <summary>
-        //    /// 缁戝畾鐨刢luster
-        //    /// </summary>
-        //    public int BindCluster;
-        //    /// <summary>
-        //    /// 缁戝畾璁惧Mac鍦板潃锛� 褰揃indType=0鏃跺瓨鍦�
-        //    /// </summary>
-        //    public string BindMacAddr;
-        //    /// <summary>
-        //    /// 缁戝畾璁惧鐨勭鍙e彿锛屽綋BindType=0鏃跺瓨鍦�
-        //    /// </summary>
-        //    public int BindEpoint;
-        //    /// <summary>
-        //    /// 缁戝畾鍦烘櫙锛屽綋BindType=1鏃跺瓨鍦�
-        //    /// </summary>
-        //    public int BindScenesId;
-        //    /// <summary>
-        //    /// 缁戝畾鐨勮澶囨垨鍦烘櫙鍚嶇О
-        //    /// </summary>
-        //    public string ESName;
-        //}
-        //#endregion
-
-        //#region 鍒犻櫎涓�涓帶鍒惰澶囨墍鏈夌粦瀹氫俊鎭�
-        ///// <summary>
-        /////鍒犻櫎涓�涓帶鍒惰澶囨墍鏈夌粦瀹氫俊鎭�
-        ///// </summary>
-        //public async System.Threading.Tasks.Task<ClearBindInfoResponseAllData> ClearBindInfoAsync()
-        //{
-        //    if (Gateway == null)
-        //    {
-        //        return null;
-        //    }
-        //    return await System.Threading.Tasks.Task.Run(async () =>
-        //    {
-        //        ClearBindInfoResponseAllData d = null;
-        //        Action<string, string> action = (topic, message) =>
-        //        {
-        //            var gatewayID = topic.Split('/')[0];
-        //            var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
-
-        //            if (topic == gatewayID + "/" + "Error_Respon")
-        //            {
-        //                var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = Gateway.getGatewayBaseInfo.gwID };
-        //                var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.ErrorResponData>(jobject["Data"].ToString());
-
-        //                if (temp == null)
-        //                {
-        //                    d = new ClearBindInfoResponseAllData { errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖" };
-        //                }
-        //                else
-        //                {
-        //                    d = new ClearBindInfoResponseAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) };
-        //                }
-        //            }
-
-        //            if (topic == gatewayID + "/" + "Bind/ClearBindInfo_Respon")
-        //            {
-        //                var gatewayTemp = new ZbGateway() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = Gateway.getGatewayBaseInfo.gwID };
-        //                var tempData = Newtonsoft.Json.JsonConvert.DeserializeObject<ClearBindInfoResponseData>(jobject["Data"].ToString());
-        //                if (tempData == null)
-        //                {
-        //                    d = new ClearBindInfoResponseAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" };
-        //                }
-        //                else
-        //                {
-        //                    d = new ClearBindInfoResponseAllData { clearBindInfoResponseData = tempData };
-        //                    System.Console.WriteLine($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}");
-        //                }
-        //            }
-        //        };
-        //        Gateway.Actions += action;
-        //        System.Console.WriteLine("Bind/ClearBindInfo_Actions 鍚姩" + "_" + System.DateTime.Now.ToString());
-
-        //        try
-        //        {
-        //            var jObject = new JObject { { "DeviceAddr", DeviceAddr }, { "Epoint", DeviceEpoint }, { "Cluster_ID", 0 }, { "Command", 5006 } };
-        //            Gateway.Send("Bind/ClearBindInfo", jObject.ToString());
-        //        }
-        //        catch { }
-
-        //        var dateTime = DateTime.Now;
-        //        while ((DateTime.Now - dateTime).TotalMilliseconds < WaitReceiveDataTime)
-        //        {
-        //            await System.Threading.Tasks.Task.Delay(10);
-        //            if (d != null)
-        //            {
-        //                break;
-        //            }
-        //        }
-        //        if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime)
-        //        {
-        //            d = new ClearBindInfoResponseAllData { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" };
-        //        }
-        //        Gateway.Actions -= action;
-        //        System.Console.WriteLine("Bind/ClearBindInfo_Actions 閫�鍑�" + System.DateTime.Now.ToString());
-
-        //        return d;
-        //    });
-        //}
-
-        ///// <summary>
-        /////鍒犻櫎涓�涓帶鍒惰澶囨墍鏈夌粦瀹氭暟鎹�,缃戝叧鍙嶉淇℃伅
-        ///// </summary>
-        //public ClearBindInfoResponseAllData clearBindInfoResponseAllData;
-        //[System.Serializable]
-        //public class ClearBindInfoResponseAllData
-        //{
-        //    /// <summary>
-        //    /// 閿欒淇℃伅
-        //    /// </summary>
-        //    public string errorMessageBase;
-        //    /// <summary>
-        //    /// 缃戝叧淇℃伅閿欒鍙嶉
-        //    /// <para>褰撶綉鍏虫帴鏀跺埌瀹㈡埛绔俊鎭悗锛屽嚭鐜颁互涓嬪紓甯告儏鍐靛皢鍙嶉閿欒銆�</para>
-        //    /// </summary>
-        //    public ErrorResponData errorResponData;
-        //    /// <summary>
-        //    /// 鎺у埗璁惧缁戝畾鐨勮澶囧垪琛ㄥ洖澶嶆暟鎹�
-        //    /// </summary>
-        //    public ClearBindInfoResponseData clearBindInfoResponseData;
-        //}
-
-        ///// <summary>
-        ///// 鍒犻櫎涓�涓帶鍒惰澶囨墍鏈夌粦瀹氫俊鎭洖澶嶇殑鏁版嵁
-        ///// </summary>
-        //public ClearBindInfoResponseData clearBindInfoResponseData;
-        //[System.Serializable]
-        //public class ClearBindInfoResponseData
-        //{
-        //    /// <summary>
-        //    /// 0锛氭垚鍔�
-        //    ///<para>1锛氱粦瀹氫俊鎭笉瀛樺湪</para>
-        //    /// </summary>
-        //    public int Result;
-        //}
-
-        //#endregion
+                var dateTime = DateTime.Now;
+                while ((DateTime.Now - dateTime).TotalMilliseconds < WaitReceiveDataTime)
+                {
+                    await System.Threading.Tasks.Task.Delay(10);
+                    if (result != null)
+                    {
+                        break;
+                    }
+                }
+                if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime)
+                {
+                    result = new GetOnlySceneAllData { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" };
+                }
+                return result;
+            });
+        }
+        /// <summary>
+        ///鑾峰彇鍦烘櫙淇℃伅,缃戝叧鍙嶉淇℃伅
+        /// </summary>
+        [System.Serializable]
+        public class GetOnlySceneAllData
+        {
+            /// <summary>
+            /// 閿欒淇℃伅
+            /// </summary>
+            public string errorMessageBase;
+            /// <summary>
+            /// 缃戝叧淇℃伅閿欒鍙嶉
+            /// <para>褰撶綉鍏虫帴鏀跺埌瀹㈡埛绔俊鎭悗锛屽嚭鐜颁互涓嬪紓甯告儏鍐靛皢鍙嶉閿欒銆�</para>
+            /// </summary>
+            public ErrorResponData errorResponData;
+            /// <summary>
+            /// 鑾峰彇鍦烘櫙淇℃伅
+            /// </summary>
+            public GetSceneInfo getSceneInfo;
+        }
 
         /// <summary>
-        /// 璇诲彇闈㈡澘鐨勯厤缃俊鎭�(淇℃伅瀛樺埌褰撳墠鐨勫璞″叿浣撳�间腑锛�
+        /// 鑾峰彇鍦烘櫙淇℃伅
         /// </summary>
-        //public void ReadPanelConfigureInfo()
-        //{
-        //    ReadAttri(Device.Cluster_ID.HdlKey, AttriButeId.HdlKey);
-        //}
+        public GetSceneInfo sceneGetInfo;
+        /// <summary>
+        /// 鑾峰彇鍦烘櫙淇℃伅
+        /// </summary>
+        [System.Serializable]
+        public class GetSceneInfo
+        {
+            /// <summary>
+            ///鍦烘櫙鎬绘暟
+            /// </summary>
+            public int ScenesSum;
 
-        //#region 鑾峰彇鎵�鏈夊仛浜嗙粦瀹氱殑鎺у埗璁惧
-        ///// <summary>
-        /////鑾峰彇鎵�鏈夊仛浜嗙粦瀹氱殑鎺у埗璁惧
-        ///// </summary>
-        //public async System.Threading.Tasks.Task<GetControlDeviceBindResponseAllData> GetControlDeviceAsync()
-        //{
-        //    if (Gateway == null)
-        //    {
-        //        return null;
-        //    }
-        //    return await System.Threading.Tasks.Task.Run(async () =>
-        //    {
-        //        var d = new GetControlDeviceBindResponseAllData { };
-        //        Action<string, string> action = (topic, message) =>
-        //        {
-        //            var gatewayID = topic.Split('/')[0];
-        //            var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
+            /// <summary>
+            /// 鍦烘櫙鍒楄〃
+            /// </summary>
+            public List<ScenesListInfo> ScenesList = new List<ScenesListInfo>();
+        }
 
-        //            if (topic == gatewayID + "/" + "Error_Respon")
-        //            {
-        //                var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = Gateway.getGatewayBaseInfo.gwID };
-        //                var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.ErrorResponData>(jobject["Data"].ToString());
+        /// <summary>
+        /// 鍦烘櫙鍒楄〃涓殑鍏蜂綋淇℃伅
+        /// </summary>
+        [System.Serializable]
+        public class ScenesListInfo
+        {
+            /// <summary>
+            /// 鍦烘櫙ID
+            /// </summary>
+            public int ScenesId;
 
-        //                if (temp == null)
-        //                {
-        //                    d.errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖";
-        //                }
-        //                else
-        //                {
-        //                    d.errorResponData = temp;
-        //                    d.errorMessageBase = ErrorMess(temp.Error);
-        //                }
-        //            }
+            /// <summary>
+            /// 鍚嶇О
+            /// </summary>
+            public string ScenesName;
 
-        //            if (topic == gatewayID + "/" + "DeviceBind_AddBind_Respon")
-        //            {
-        //                var gatewayTemp = new ZbGateway() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = Gateway.getGatewayBaseInfo.gwID };
-        //                var tempData = Newtonsoft.Json.JsonConvert.DeserializeObject<GetControlDeviceBindResponseData>(jobject["Data"].ToString());
-
-        //                if (tempData == null)
-        //                {
-        //                    d.errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�";
-        //                }
-        //                else
-        //                {
-        //                    d.getControlDeviceBindResponseData = tempData;
-        //                }
-        //            }
-        //        };
-        //        Gateway.Actions += action;
-        //        System.Console.WriteLine("GetControlDevice_Actions 鍚姩" + "_" + Gateway.getGatewayBaseInfo.gwID + System.DateTime.Now.ToString());
-
-        //        var jObject = new JObject {{ "Cluster_ID", 0 }, { "Command", 154 } };
-        //        Gateway.Send("DeviceBind/GetControlDevice", jObject.ToString());
-
-        //        var dateTime = DateTime.Now;
-        //        while ((DateTime.Now - dateTime).TotalMilliseconds < 1000)
-        //        {
-        //            await System.Threading.Tasks.Task.Delay(10);
-        //            if (d.getControlDeviceBindResponseData != null)
-        //            {
-        //                break;
-        //            }
-        //        }
-        //        if ((DateTime.Now - dateTime).TotalMilliseconds > 10000)
-        //        {
-        //            d.errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔";
-        //        }
-        //        Gateway.Actions -= action;
-        //        System.Console.WriteLine("GetControlDevice_Actions 閫�鍑�" + System.DateTime.Now.ToString());
-
-        //        return d;
-        //    });
-        //}
-
-        ///// <summary>
-        ///// 鑾峰彇鎵�鏈夊仛浜嗙粦瀹氱殑鎺у埗璁惧鏁版嵁,缃戝叧鍙嶉淇℃伅
-        ///// </summary>
-        //public GetControlDeviceBindResponseAllData getControlDeviceBindResponseAllData;
-        //[System.Serializable]
-        //public class GetControlDeviceBindResponseAllData
-        //{
-        //    /// <summary>
-        //    /// 閿欒淇℃伅
-        //    /// </summary>
-        //    public string errorMessageBase;
-        //    /// <summary>
-        //    /// 缃戝叧淇℃伅閿欒鍙嶉
-        //    /// <para>褰撶綉鍏虫帴鏀跺埌瀹㈡埛绔俊鎭悗锛屽嚭鐜颁互涓嬪紓甯告儏鍐靛皢鍙嶉閿欒銆�</para>
-        //    /// </summary>
-        //    public ErrorResponData errorResponData;
-        //    /// <summary>
-        //    /// 鑾峰彇鎵�鏈夊仛浜嗙粦瀹氱殑鎺у埗璁惧鏁版嵁
-        //    /// </summary>
-        //    public GetControlDeviceBindResponseData getControlDeviceBindResponseData;
-        //}
-
-
-        ///// <summary>
-        ///// 鑾峰彇鎵�鏈夊仛浜嗙粦瀹氱殑鎺у埗璁惧鏁版嵁
-        ///// </summary>
-        //public GetControlDeviceBindResponseData getControlDeviceBindResponseData;
-        //[System.Serializable]
-        //public class GetControlDeviceBindResponseData
-        //{
-        //    /// <summary>
-        //    /// 璁惧灞炴�у垪琛�
-        //    /// </summary>
-        //    public List<DeviceObj> DeviceObj = new List<DeviceObj>();
-        //}
-
-        ///// <summary>
-        ///// Command鏁扮粍
-        ///// </summary>
-        //public class DeviceObj
-        //{
-        //    /// <summary>
-        //    /// 鎺у埗璁惧鐨刴ac鍦板潃
-        //    /// </summary>
-        //    public string DeviceAddr;
-
-        //    /// <summary>
-        //    /// 鎺у埗璁惧鐨勭鍙e彿
-        //    /// </summary>
-        //    public int Epoint;
-        //}
-        //#endregion
+            /// <summary>
+            /// 鏄惁澶勪簬寮�鍚姸鎬�
+            ///0锛氬満鏅病鏈夎寮�鍚�
+            ///1锛氬満鏅浜庡紑鍚姸鎬�
+            /// </summary>
+            public int IsOpen;
+        }
+        #endregion
     }
 }
diff --git a/ZigbeeApp/Shared/Phone/ZigBee/Device/ZbGateway.cs b/ZigbeeApp/Shared/Phone/ZigBee/Device/ZbGateway.cs
index e783f9d..fb91f54 100755
--- a/ZigbeeApp/Shared/Phone/ZigBee/Device/ZbGateway.cs
+++ b/ZigbeeApp/Shared/Phone/ZigBee/Device/ZbGateway.cs
@@ -3382,6 +3382,16 @@
                             RemoteMqttClient.UseConnectedHandler(async (e) =>
                             {
                                 DebugPrintLog($"杩滅▼杩炴帴鎴愬姛");
+
+                                if (Config.Instance.Home.IsOthreShare == true)
+                                {
+                                    //璁㈤槄涓�涓垚鍛樿鍒犻櫎鐨勪富棰�
+                                    string myGuid = Config.Instance.Guid;
+                                    await RemoteMqttClient.SubscribeAsync("/ZigbeeGateWayToClient/" + myGuid + "/Push/Deleted");
+                                    //璁㈤槄涓�涓垎浜暟鎹凡缁忓彉鏇寸殑涓婚
+                                    await RemoteMqttClient.SubscribeAsync("/ZigbeeGateWayToClient/" + myGuid + "/Push/DeletedShareData");
+                                }
+
                                 await initGateWayBaseInfomation();
                                 Shared.Phone.UserCenter.HdlGatewayLogic.Current.CheckGatewayByConnectChanged(Shared.Phone.UserCenter.GatewayConnectMode.Remote);
                                 //娌℃湁涓荤綉鍏虫椂涓诲姩璇诲彇锛岃幏鍙栦富缃戝叧淇℃伅
diff --git a/ZigbeeApp/Shared/R.cs b/ZigbeeApp/Shared/R.cs
index b47132c..9496171 100755
--- a/ZigbeeApp/Shared/R.cs
+++ b/ZigbeeApp/Shared/R.cs
@@ -309,6 +309,12 @@
         public readonly static int OffLineScene = 222;
         public readonly static int SureClearKeyModeAndTargets = 223;
         public readonly static int BindDeviceTargetIsEmpty = 224;
+        public readonly static int PanelBindTargets = 225;
+        public readonly static int ClearAllTargeta1 = 226;
+        public readonly static int ClearAllTargeta2 = 227;
+        public readonly static int DoorlockConfirm = 228;
+        public readonly static int DistributeSuccess = 229;
+        public readonly static int SureToUnFreeze = 230;
 
         public readonly static int RemindSetting = 548;
         public readonly static int AddNewUser = 650;
@@ -580,6 +586,10 @@
         public readonly static int scenetip = 5371;
         public readonly static int securitytip = 5372;
         public readonly static int defaulttext = 5373;
+        public readonly static int addsensor = 5374;
+        public readonly static int addlighting = 5375;
+        public readonly static int application = 5376;
+        public readonly static int automationaddtext = 5377;
 
         #region 鐧诲綍娉ㄥ唽
         /// <summary>
@@ -638,7 +648,7 @@
 		/// </summary>
 		public const int LoginByAccountPWD = 10110;
 		/// <summary>
-		/// 鍙戦�侀獙璇佺爜
+		/// 鑾峰彇楠岃瘉鐮�
 		/// </summary>
 		public const int SendVerificationCode = 10111;
 		/// <summary>
@@ -765,6 +775,18 @@
         /// 鏂板瘑鐮佸拰鍘熷瘑鐮佷竴鑷�
         /// </summary>
         public const int NEWPASSWORDANDOLDPASSWORDEQUAL = 10142;
+        /// <summary>
+        /// 璇峰厛鑾峰彇楠岃瘉鐮�
+        /// </summary>
+        public const int NORECORD = 10143;
+        /// <summary>
+        /// 蹇樿瀵嗙爜锛�
+        /// </summary>
+        public const int ForgotPWD_1 = 10144;
+        /// <summary>
+		/// 宸叉湁璐﹀彿锛熺櫥褰�
+		/// </summary>
+		public const int LoginByAccountPWD_1 = 10145;
 
 
         /// <summary>
@@ -799,6 +821,10 @@
         /// 缃戝叧涓嶅湪绾�
         /// </summary>
 		public const int TheMainGatewayIsNotOnLine = 10157;
+        /// <summary>
+        /// 涓嬩竴姝�
+        /// </summary>
+        public const int Next = 10158;
 
 
         /// <summary>
@@ -965,6 +991,14 @@
         /// 纭畾瑕佺Щ闄よ鍔熻兘锛�
         /// </summary>
         public const int DeleteFunction = 11034;
+        /// <summary>
+        /// 娣诲姞鍔熻兘
+        /// </summary>
+        public const int AddFunction = 11035;
+        /// <summary>
+        /// 娣诲姞寤舵椂
+        /// </summary>
+        public const int AddDelayTime = 11036;
 
         #region  璁惧绫诲瀷
         /// <summary>
@@ -1015,6 +1049,41 @@
         /// 娓╂箍搴︿紶鎰熷櫒
         /// </summary>
         public const int TemperatureAndHumiditySensor = 12112;
+
+
+        /// <summary>
+        /// 鏈変汉
+        /// </summary>
+        public const int IASZone_Statu_HavePerson = 12500;
+        /// <summary>
+        /// 鏃犱汉
+        /// </summary>
+        public const int IASZone_Statu_NoPerson = 12501;
+        /// <summary>
+        /// 婕忔按
+        /// </summary>
+        public const int IASZone_Statu_HaveWater = 12502;
+        /// <summary>
+        /// 姝e父
+        /// </summary>
+        public const int IASZone_Statu_Normal = 12503;
+        /// <summary>
+        /// 寮�鍚�
+        /// </summary>
+        public const int IASZone_Statu_Open = 12504;
+        /// <summary>
+        /// 闂悎
+        /// </summary>
+        public const int IASZone_Statu_Close = 12505;
+        /// <summary>
+        /// 鎶ヨ
+        /// </summary>
+        public const int IASZone_Statu_Alarm = 12506;
+        /// <summary>
+        /// 瀹夊叏
+        /// </summary>
+        public const int IASZone_Statu_Safe = 12507;
+
 
         #endregion
 
@@ -1261,11 +1330,11 @@
         public const int NeedCleanAC = 13511;
 
         /// <summary>
-        /// 娌″姛鑳� 璇峰厛娣诲姞
+        /// 杩樻病鏈夊姛鑳藉摝
         /// </summary>
         public const int NoFunction_Tip = 13600;
         /// <summary>
-        /// 娌″満鏅� 璇峰厛娣诲姞
+        /// 杩樻病鏈夊満鏅摝
         /// </summary>
         public const int NoScene_Tip = 13601;
         /// <summary>
@@ -1276,6 +1345,10 @@
         /// 鑾峰彇涓�...
         /// </summary>
         public const int Getting = 13603;
+        /// <summary>
+        /// 褰撳墠 浜害
+        /// </summary>
+        public const int CurrentLightLevel = 13604;
 
 
 
@@ -1828,7 +1901,7 @@
         /// </summary>
         public const int uUserName = 15147;
         /// <summary>
-        /// Email
+        /// 閭
         /// </summary>
         public const int uEmail = 15148;
         /// <summary>
@@ -2872,13 +2945,13 @@
         /// </summary>
         public const int uGetDeviceVersionFail = 15448;
         /// <summary>
-        /// 鑾峰彇浼犳劅鍣ㄧ伅鍏夎缃俊鎭け璐�
+        /// 鑾峰彇浼犳劅鍣ㄨ缃俊鎭け璐�
         /// </summary>
-        public const int uGetPirSensorLightSettionFail = 15449;
+        public const int uGetPirSensorSettionFail = 15449;
         /// <summary>
-        /// 璁剧疆浼犳劅鍣ㄧ伅鍏夐厤缃け璐�
+        /// 璁剧疆浼犳劅鍣ㄩ厤缃俊鎭け璐�
         /// </summary>
-        public const int uSetPirSensorLightSettionFail = 15450;
+        public const int uSetPirSensorSettionFail = 15450;
         /// <summary>
         /// 鐧藉ぉ
         /// </summary>
@@ -5063,6 +5136,102 @@
         /// 濂界殑
         /// </summary>
         public const int uWell = 16025;
+        /// <summary>
+        /// 宸叉墽琛�
+        /// </summary>
+        public const int uExecuted = 16026;
+        /// <summary>
+        /// 闂ㄩ攣瑙﹀彂璀︽姤
+        /// </summary>
+        public const int uDoorLocksAlarmHadTriggered = 16027;
+        /// <summary>
+        /// 鎴戠殑浣忓畢
+        /// </summary>
+        public const int uMyResidence = 16028;
+        /// <summary>
+        /// 瀹㈠巺
+        /// </summary>
+        public const int uLivingRoom = 16029;
+        /// <summary>
+        /// 闃冲彴
+        /// </summary>
+        public const int uBalcony = 16030;
+        /// <summary>
+        /// 鍗у
+        /// </summary>
+        public const int uBedroom = 16031;
+        /// <summary>
+        /// 宸﹀彸婊戝姩,鍒囨崲鎴块棿鍗$墖
+        /// </summary>
+        public const int uSlideLeftAndRightToSwitchRoomCards = 16032;
+        /// <summary>
+        /// 鍙虫粦杩涘叆鎴块棿鍒楄〃
+        /// </summary>
+        public const int uSlideRightToRoomList = 16033;
+        /// <summary>
+        /// 闂厜鐏�
+        /// </summary>
+        public const int uFlashlamp = 16034;
+        /// <summary>
+        /// 鎴块棿鐨勫唴瀹瑰湪姝ゅ鏄剧ず
+        /// </summary>
+        public const int uTheContentsOfTheRoomAreShownHere = 16035;
+        /// <summary>
+        /// 鎴戠煡閬撲簡
+        /// </summary>
+        public const int uIKnwon = 16036;
+        /// <summary>
+        /// 鍒嗕韩鏁版嵁宸茬粡鍙樻洿,璇烽噸鏂扮櫥闄�
+        /// </summary>
+        public const int uShardDataIsChangedPleaseLoginAgain = 16037;
+        /// <summary>
+        /// 宸ヤ綔妯″紡
+        /// </summary>
+        public const int uWorkMode = 16038;
+        /// <summary>
+        /// 鎺у埗妯″紡
+        /// </summary>
+        public const int uControlMode = 16039;
+        /// <summary>
+        /// 瑙﹀彂妯″紡
+        /// </summary>
+        public const int uTriggerMode = 16040;
+        /// <summary>
+        /// 涓婃姤闂撮殧
+        /// </summary>
+        public const int uReportTimeSpace = 16041;
+        /// <summary>
+        /// 鍏ㄨ嚜鍔ㄦā寮�
+        /// </summary>
+        public const int uFullAutoMode = 16042;
+        /// <summary>
+        /// 鍗婅嚜鍔ㄦā寮�
+        /// </summary>
+        public const int uHafeAutoMode = 16043;
+        /// <summary>
+        /// 璋冨厜妯″紡
+        /// </summary>
+        public const int uDimmingMode = 16044;
+        /// <summary>
+        /// 寮�鍏虫ā寮�
+        /// </summary>
+        public const int uSwitchMode = 16045;
+        /// <summary>
+        /// 寮�鐏寒搴�
+        /// </summary>
+        public const int uTurnOnBrightness = 16046;
+        /// <summary>
+        /// 鎱㈠惎鍔�
+        /// </summary>
+        public const int uSlowStartup = 16047;
+        /// <summary>
+        /// 鎱㈠叧闂�
+        /// </summary>
+        public const int uSlowClose = 16048;
+        /// <summary>
+        /// 浜害
+        /// </summary>
+        public const int uBrightness = 16049;
 
         //鈽呪槄鈽呪槄涓嬮潰杩欎簺鏄帴鍙g殑杩斿洖淇℃伅缈昏瘧,浠�18000寮�濮嬧槄鈽呪槄鈽�
         /// <summary>
@@ -5395,7 +5564,7 @@
 
         //鈽呪槄鈽呪槄涓嬮潰杩欎簺鏄澶囨墍灞炵绫荤殑缈昏瘧鍚嶅瓧,浠�40000寮�濮嬧槄鈽呪槄鈽�
         /// <summary>
-        /// 鑷畾涔夎澶囨墍灞濱D涓�100鐨勭炕璇戝悕瀛楋細绐楀笜
+        /// 鑷畾涔夎澶囨墍灞濱D涓�100鐨勭炕璇戝悕瀛楋細閬槼
         /// </summary>
         public const int uDeviceBelongId100 = 40000;
         /// <summary>
@@ -5415,7 +5584,7 @@
         /// </summary>
         public const int uDeviceBelongId2500 = 40004;
         /// <summary>
-        /// 鑷畾涔夎澶囨墍灞濱D涓�2800鐨勭炕璇戝悕瀛楋細鏅鸿兘闂ㄩ攣
+        /// 鑷畾涔夎澶囨墍灞濱D涓�2800鐨勭炕璇戝悕瀛楋細闂ㄩ攣
         /// </summary>
         public const int uDeviceBelongId2800 = 40005;
         /// <summary>
diff --git a/ZigbeeApp/Shared/Shared.projitems b/ZigbeeApp/Shared/Shared.projitems
index 95bfe85..973d808 100755
--- a/ZigbeeApp/Shared/Shared.projitems
+++ b/ZigbeeApp/Shared/Shared.projitems
@@ -53,6 +53,7 @@
     <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\CommonForm\FunctionMainView.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\CommonForm\FunctionRow.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\CommonForm\LeftIconButtonRow.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\CommonForm\RoomButton.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\CommonForm\RoomMainView.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\CommonForm\RoomNoNameMainView.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\Device\CommonForm\RoomView.cs" />
@@ -173,7 +174,9 @@
     <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\Device\Direction\SensorPirDirectionForm.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\Device\Direction\SensorTemperatureHumidityForm.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\Device\Direction\SensorWaterDirectionForm.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\Device\PirSensor\PirSensorDimmingModeForm.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\Device\PirSensor\PirSensorTargetSelectForm.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\Device\PirSensor\PirSensorWorkModeMenuForm.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\DoorLock\AddUnLockMethod.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\DoorLock\AddUnLockMethodTip.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\DoorLock\DoorLockCommonInfo.cs" />
@@ -209,6 +212,10 @@
     <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\Gateway\Manage\GatewayUploadAndDownLoadForm.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\Gateway\Update\GatewayCoordinatorInfoForm.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\Gateway\Update\GatewayVirtualDriveInfoForm.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\Guide\GuideCommonForm.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\Guide\GuideForm1.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\Guide\GuideForm2.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\Guide\GuideMainForm.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\HdlBackup\HdlAutoBackupForm.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\HdlBackup\HdlBackupListForm.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\HideOption\HideOptionGatewayListForm.cs" />
@@ -359,6 +366,7 @@
     <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\Suggestion\FeedbackForm.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\UserCenter\UserMain\SecondAuthenticationForm.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\UserView\LoginLoading.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)Phone\UserView\SafetyShortcutControl.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\ZigBee\Device\AC.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\ZigBee\Device\DimmableLight.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Phone\ZigBee\Device\DoorLock.cs" />

--
Gitblit v1.8.0