From 39cf2411b59772d56ee731f229f09ff472889bad Mon Sep 17 00:00:00 2001
From: hxb <hxb@hdlchina.com.cn>
Date: 星期四, 22 九月 2022 15:12:04 +0800
Subject: [PATCH] Merge branch 'Dev-Branch' into hxb

---
 HDL-ON_Android/Assets/Language.ini                                          |    8 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/SceneSleepIcon2.png     |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/SceneAwayHomeIcon.png    |    0 
 HDL_ON/Common/ApiUtlis.cs                                                   |   46 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/SceneAtHome.png          |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeDeHumiIcon.png     |    0 
 HDL_ON/HDL_ON.projitems                                                     |    4 
 HDL_ON/UI/UI2/FuntionControlView/Music/SendMethod.cs                        |  113 +
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeHeatIcon.png       |    0 
 HDL_ON/UI/UI2/3-Intelligence/Automation/AddInputType.cs                     |   30 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/SceneSleepIcon2.png      |    0 
 HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs                      |  112 +
 HDL_ON/Entity/Enumerative/MyEnum.cs                                         |    4 
 HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicFileList.cs                  |    2 
 HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/TipPopView.cs             |    7 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/TopViewBg.png          |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/MsgViewBg.png          |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeFanIcon2.png        |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeHumiIcon.png         |    0 
 HDL_ON/Entity/DB_ResidenceData.cs                                           |    4 
 HDL_ON/UI/UI2/3-Intelligence/Automation/Time3.cs                            |   12 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeHeatHumiIcon2.png  |    0 
 HDL_ON/UI/UI2/3-Intelligence/Automation/FunTpye.cs                          |   20 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeHumiIcon.png        |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeCoolIcon.png         |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeDeHumiIcon.png     |    0 
 HDL_ON/UI/UI2/3-Intelligence/Automation/Logic.cs                            |    5 
 HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs                             |  907 ++++++----
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeFanIcon2.png          |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeHumiIcon.png          |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/TopViewBg.png           |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/SceneAtHome2.png       |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeHeatIcon.png        |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/SceneAwayHomeIcon2.png  |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeFanIcon.png          |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeDeHumiIcon2.png     |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeCoolIcon.png          |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/TempAndHumiBack.png       |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeCoolIcon2.png        |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/SceneSleepIcon.png     |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/TopViewBg.png           |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/TempAndHumiBack.png     |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/TempAndHumiBack.png    |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeDeHumiIcon2.png    |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/MsgViewBg.png           |    0 
 HDL-ON_iOS/Resources/Language.ini                                           |    6 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeHeatHumiIcon2.png    |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/SceneAwayHomeIcon.png  |    0 
 HDL_ON/UI/UI2/FuntionControlView/Acst/AcstSubPage.cs                        |   95 +
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/PowerOffIcon.png         |    0 
 HDL_ON/UI/UI2/3-Intelligence/Automation/WeatherCondition.cs                 |   12 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/PowerIcon.png             |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeHeatHumiIcon2.png     |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/FunctionBg/AcstFunctionBg.png      |    0 
 HDL_ON/UI/UI2/FuntionControlView/Music/A31SongPlay.cs                       |    2 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeCoolIcon.png        |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeHeatIcon.png         |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeFanIcon2.png       |    0 
 HDL_ON/UI/UI2/3-Intelligence/Automation/OnePortAutomation.cs                |   66 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeHeatIcon2.png       |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeCoolIcon.png       |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeHeatHumiIcon.png      |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/SceneAtHome.png        |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeHeatIcon2.png        |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeHumiIcon2.png      |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeHeatHumiIcon2.png   |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/LvJianLogo.png                 |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/TopViewBg.png             |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeCoolIcon2.png         |    0 
 HDL_ON/Entity/ResponseEntity/CityInfo.cs                                    |    4 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/SceneAtHome.png           |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/PowerIcon.png           |    0 
 HDL_ON/UI/UI2/FuntionControlView/Music/A31PlayMusicPage.cs                  |   14 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/TopViewBg.png          |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/MsgViewBg.png          |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/SceneAwayHomeIcon2.png    |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeHeatIcon2.png         |    0 
 HDL_ON/UI/UI2/2-Classification/FunctionControlZoneBLL.cs                    |    6 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/SceneSleepIcon2.png       |    0 
 HDL_ON/UI/UI1-Login/LoginPage.cs                                            |  399 ++++
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeCoolIcon.png         |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/MsgViewBg.png             |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/CollectionIcon.png        |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeDeHumiIcon.png       |    0 
 HDL_ON/Entity/Function/Function.cs                                          |   19 
 HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs                       |    4 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/CollectionIcon.png     |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeHeatHumiIcon.png     |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/SceneAwayHomeIcon2.png   |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/SceneSleepIcon.png     |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/BgSubControlView.png      |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeDeHumiIcon.png       |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeHumiIcon2.png        |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeHeatIcon.png        |    0 
 HDL_ON/UI/UI2/3-Intelligence/Automation/InputPushText.cs                    |    2 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/MsgViewBg.png           |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/BgChooseScene.png             |    0 
 HDL_ON/UI/UI2/1-HomePage/HomePage.cs                                        |  447 +----
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/PowerIcon.png          |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeCoolIcon.png        |    0 
 HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs              |  553 +++---
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/SceneAtHome.png          |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeCoolIcon.png       |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/SceneAtHome.png        |    0 
 HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicSourcePage.cs                |   43 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/SceneAwayHomeIcon2.png  |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeFanIcon2.png         |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeFanIcon2.png        |    0 
 HDL_ON/UI/MainPage.cs                                                       |    7 
 HDL_ON/UI/UI2/3-Intelligence/Automation/AirQuality.cs                       |   12 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeHumiIcon.png       |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/SceneAwayHomeIcon.png  |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeHumiIcon2.png       |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/SceneAwayHomeIcon.png     |    0 
 HDL_ON/Entity/FunctionList.cs                                               |   39 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/SceneSleepIcon.png        |    0 
 HDL_ON/DAL/Server/NewAPI.cs                                                 |   20 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeDeHumiIcon2.png       |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddControlComplete.cs              |    4 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeCoolIcon2.png      |    0 
 HDL_ON/UI/UI2/3-Intelligence/Automation/AddLogic.cs                         |   69 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeCoolIcon.png          |    0 
 HDL_ON/Common/R.cs                                                          |   20 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeDeHumiIcon2.png      |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeCoolIcon2.png       |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/BgChooseMode.png              |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/SceneSleepIcon.png        |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeHeatHumiIcon2.png   |    0 
 HDL_ON/UI/UI2/3-Intelligence/Automation/AddTarget.cs                        |   22 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/SceneAwayHomeIcon2.png |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/SceneSleepIcon2.png     |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeHeatHumiIcon2.png    |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/MsgViewBg.png            |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeCoolIcon2.png      |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/SceneAtHome2.png       |    0 
 HDL-ON_Android/Resources/Resource.designer.cs                               |    2 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeDeHumiIcon.png      |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeDeHumiIcon.png      |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeHeatIcon2.png       |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeHumiIcon.png       |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/PowerIcon.png           |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/SceneAtHome2.png         |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeDeHumiIcon2.png    |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/TopViewBg.png            |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/BgChooseMode.png               |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/SceneSleepIcon.png       |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeHeatHumiIcon.png    |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/EditControl.cs                     |    4 
 HDL_ON/DAL/ThirdPartySdk/HDLLinphone.cs                                     |   11 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeHeatIcon2.png      |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeFanIcon.png        |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeDeHumiIcon.png        |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeHumiIcon.png         |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/SceneAtHome2.png          |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/PowerIcon.png          |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeHeatIcon2.png         |    0 
 HDL_ON/UI/UI2/3-Intelligence/Automation/MainView.cs                         |   21 
 HDL_ON/UI/UI2/3-Intelligence/Automation/Set.cs                              |   26 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeDeHumiIcon2.png     |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeHumiIcon.png          |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/BgSubControlView.png     |    0 
 HDL_ON/Entity/Function/InverterInfo.cs                                      |   33 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/SceneSleepIcon.png      |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeHumiIcon2.png         |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/TempAndHumiBack.png     |    0 
 HDL_ON/DAL/DriverLayer/Control.cs                                           |   27 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/TempAndHumiBack.png    |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeFanIcon2.png          |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/SceneAwayHomeIcon2.png |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeFanIcon.png           |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/SceneAwayHomeIcon2.png    |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/CollectionIcon.png       |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeFanIcon.png         |    0 
 HDL_ON/UI/UI2/FuntionControlView/Acst/AcstParentPage.cs                     |  803 +++++++++
 HDL_ON/UI/UI2/3-Intelligence/Automation/TargetDeviceFunList.cs              |  136 +
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeFanIcon.png           |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeFanIcon.png        |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeHeatHumiIcon.png    |    0 
 HDL_ON/DAL/Server/HttpServerRequest.cs                                      |   16 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeFanIcon2.png         |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/TempAndHumiBack.png      |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/CollectionIcon.png     |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/SceneSleepIcon2.png    |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/CollectionIcon.png      |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeFanIcon2.png       |    0 
 HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs           |  239 ++
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeHumiIcon2.png        |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeHeatIcon2.png      |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/SceneSleepIcon2.png    |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeHeatHumiIcon2.png     |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/LvJianLogo.png                |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/PowerIcon.png            |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/SceneAtHome2.png        |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/SceneAwayHomeIcon.png     |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeCoolIcon2.png       |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeDeHumiIcon2.png      |    0 
 HDL_ON/UI/UI2/3-Intelligence/Automation/PublicInterface.cs                  |   21 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/SceneAtHome.png         |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeHeatHumiIcon2.png  |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeHeatHumiIcon.png     |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeHeatIcon.png          |    0 
 HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs                        |  181 +
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeFanIcon.png         |    0 
 HDL_ON/UI/UI2/FuntionControlView/ArmCenter/PushConfigPage.cs                |    2 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/CollectionIcon.png      |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/SceneAwayHomeIcon.png   |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/SceneSleepIcon.png       |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirMain.cs                         |    4 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeHeatHumiIcon.png   |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeFanIcon.png          |    0 
 HDL_ON/UI/UI2/FuntionControlView/Music/MusicMain.cs                         |   31 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeHumiIcon.png        |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeHumiIcon2.png      |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/SceneAtHome2.png        |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeHeatIcon.png          |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeHeatHumiIcon.png      |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeDeHumiIcon2.png       |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/SceneSleepIcon2.png       |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/SceneAwayHomeIcon.png   |    0 
 HDL-ON_Android/SplashActivity.cs                                            |    2 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/BgChooseScene.png              |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeHumiIcon2.png       |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/SceneSleepIcon.png      |    0 
 HDL_ON/UI/UI2/2-Classification/ClassificationPageBLL.cs                     |    2 
 HDL_ON/UI/UI2/3-Intelligence/Automation/OutdoorEnvironment.cs               |   12 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeHeatIcon.png       |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/CollectionIcon.png        |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/SceneAtHome.png         |    0 
 HDL_ON/Entity/Function/Acst.cs                                              |  102 +
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/SceneAtHome2.png          |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeCoolIcon2.png         |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/SceneAtHome.png           |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/SceneAwayHomeIcon2.png   |    0 
 HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicModel.cs                     |   72 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/SceneAwayHomeIcon.png    |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeHeatIcon2.png        |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeHeatIcon.png         |    0 
 HDL_ON/UI/UI2/FuntionControlView/Video/ObjectClass.cs                       |    3 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeDeHumiIcon.png        |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeCoolIcon2.png        |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/SceneAtHome2.png         |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/CollectionIcon.png       |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/SceneSleepIcon2.png      |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeHumiIcon2.png         |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeHeatHumiIcon.png   |    0 
 HDL_ON/UI/UI2/3-Intelligence/Automation/TimeTpye.cs                         |   22 
 HDL_ON/UI/UI2/3-Intelligence/Automation/Security.cs                         |    4 
 247 files changed, 3,466 insertions(+), 1,449 deletions(-)

diff --git a/HDL-ON_Android/Assets/Language.ini b/HDL-ON_Android/Assets/Language.ini
index 2c3c529..a4cc1c6 100644
--- a/HDL-ON_Android/Assets/Language.ini
+++ b/HDL-ON_Android/Assets/Language.ini
@@ -1098,6 +1098,10 @@
 7158=is
 7159=Fall in the alarm
 7160=Someone called the police
+7161=Warning tone
+7162=Face to open the door
+7163=Video call
+
 
 
 
@@ -1767,6 +1771,7 @@
 566=褰撳墠鍙戠數鍔熺巼: ----w
 567=鐢垫睜SOC: --%
 568=杩愯鏁伴噺/鎬绘暟閲�: --/--
+569=浜哄眳鐜
 
  
 
@@ -2296,6 +2301,9 @@
 7158=鏄�
 7159=璺屽�掓姤璀�
 7160=鏈変汉鎶ヨ
+7161=鎻愮ず闊�
+7162=浜鸿劯寮�闂�
+7163=瑙嗛閫氳瘽鍛煎彨
 
 
  
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/BgChooseMode.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/BgChooseMode.png
new file mode 100644
index 0000000..a297f02
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/BgChooseMode.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/BgChooseScene.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/BgChooseScene.png
new file mode 100644
index 0000000..d1f54f5
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/BgChooseScene.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/LvJianLogo.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/LvJianLogo.png
new file mode 100644
index 0000000..91a7db3
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/LvJianLogo.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/CollectionIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/CollectionIcon.png
new file mode 100644
index 0000000..3fba8ae
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/CollectionIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeCoolIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeCoolIcon.png
new file mode 100644
index 0000000..9c11d3e
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeCoolIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeCoolIcon2.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeCoolIcon2.png
new file mode 100644
index 0000000..f737e8c
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeCoolIcon2.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeDeHumiIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeDeHumiIcon.png
new file mode 100644
index 0000000..25663bf
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeDeHumiIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeDeHumiIcon2.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeDeHumiIcon2.png
new file mode 100644
index 0000000..44e54fb
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeDeHumiIcon2.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeFanIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeFanIcon.png
new file mode 100644
index 0000000..5f4af29
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeFanIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeFanIcon2.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeFanIcon2.png
new file mode 100644
index 0000000..ed6d76d
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeFanIcon2.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeHeatHumiIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeHeatHumiIcon.png
new file mode 100644
index 0000000..fb4ca03
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeHeatHumiIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeHeatHumiIcon2.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeHeatHumiIcon2.png
new file mode 100644
index 0000000..0eea8f2
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeHeatHumiIcon2.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeHeatIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeHeatIcon.png
new file mode 100644
index 0000000..26800a9
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeHeatIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeHeatIcon2.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeHeatIcon2.png
new file mode 100644
index 0000000..7ae2edc
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeHeatIcon2.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeHumiIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeHumiIcon.png
new file mode 100644
index 0000000..b1f5d64
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeHumiIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeHumiIcon2.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeHumiIcon2.png
new file mode 100644
index 0000000..5029e08
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/ModeHumiIcon2.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/MsgViewBg.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/MsgViewBg.png
new file mode 100644
index 0000000..52f647c
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/MsgViewBg.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/PowerIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/PowerIcon.png
new file mode 100644
index 0000000..3e7684c
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/PowerIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/SceneAtHome.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/SceneAtHome.png
new file mode 100644
index 0000000..a8e9743
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/SceneAtHome.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/SceneAtHome2.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/SceneAtHome2.png
new file mode 100644
index 0000000..0649d8d
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/SceneAtHome2.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/SceneAwayHomeIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/SceneAwayHomeIcon.png
new file mode 100644
index 0000000..98355b8
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/SceneAwayHomeIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/SceneAwayHomeIcon2.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/SceneAwayHomeIcon2.png
new file mode 100644
index 0000000..dd5ab30
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/SceneAwayHomeIcon2.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/SceneSleepIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/SceneSleepIcon.png
new file mode 100644
index 0000000..ffd1fd9
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/SceneSleepIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/SceneSleepIcon2.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/SceneSleepIcon2.png
new file mode 100644
index 0000000..51b39ae
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/SceneSleepIcon2.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/TempAndHumiBack.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/TempAndHumiBack.png
new file mode 100644
index 0000000..4f0f76d
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/TempAndHumiBack.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/TopViewBg.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/TopViewBg.png
new file mode 100644
index 0000000..f08940f
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/TopViewBg.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/BgSubControlView.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/BgSubControlView.png
new file mode 100644
index 0000000..27276b6
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/BgSubControlView.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/CollectionIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/CollectionIcon.png
new file mode 100644
index 0000000..ecc088b
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/CollectionIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeCoolIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeCoolIcon.png
new file mode 100644
index 0000000..3a4b291
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeCoolIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeCoolIcon2.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeCoolIcon2.png
new file mode 100644
index 0000000..0eddc2d
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeCoolIcon2.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeDeHumiIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeDeHumiIcon.png
new file mode 100644
index 0000000..bd100bf
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeDeHumiIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeDeHumiIcon2.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeDeHumiIcon2.png
new file mode 100644
index 0000000..c91527b
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeDeHumiIcon2.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeFanIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeFanIcon.png
new file mode 100644
index 0000000..74210be
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeFanIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeFanIcon2.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeFanIcon2.png
new file mode 100644
index 0000000..f2bb414
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeFanIcon2.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeHeatHumiIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeHeatHumiIcon.png
new file mode 100644
index 0000000..568ca40
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeHeatHumiIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeHeatHumiIcon2.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeHeatHumiIcon2.png
new file mode 100644
index 0000000..78b6048
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeHeatHumiIcon2.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeHeatIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeHeatIcon.png
new file mode 100644
index 0000000..15e1884
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeHeatIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeHeatIcon2.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeHeatIcon2.png
new file mode 100644
index 0000000..66f7e5a
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeHeatIcon2.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeHumiIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeHumiIcon.png
new file mode 100644
index 0000000..e1de801
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeHumiIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeHumiIcon2.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeHumiIcon2.png
new file mode 100644
index 0000000..78d5308
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/ModeHumiIcon2.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/PowerOffIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/PowerOffIcon.png
new file mode 100644
index 0000000..56b8ee1
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/PowerOffIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/SceneAtHome.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/SceneAtHome.png
new file mode 100644
index 0000000..f5cf78c
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/SceneAtHome.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/SceneAtHome2.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/SceneAtHome2.png
new file mode 100644
index 0000000..b5f9e0b
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/SceneAtHome2.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/SceneAwayHomeIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/SceneAwayHomeIcon.png
new file mode 100644
index 0000000..90132cc
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/SceneAwayHomeIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/SceneAwayHomeIcon2.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/SceneAwayHomeIcon2.png
new file mode 100644
index 0000000..1afea73
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/SceneAwayHomeIcon2.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/SceneSleepIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/SceneSleepIcon.png
new file mode 100644
index 0000000..9f160cf
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/SceneSleepIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/SceneSleepIcon2.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/SceneSleepIcon2.png
new file mode 100644
index 0000000..44eaa26
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/grey/SceneSleepIcon2.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/CollectionIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/CollectionIcon.png
new file mode 100644
index 0000000..870e691
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/CollectionIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeCoolIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeCoolIcon.png
new file mode 100644
index 0000000..741a776
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeCoolIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeCoolIcon2.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeCoolIcon2.png
new file mode 100644
index 0000000..13f979e
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeCoolIcon2.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeDeHumiIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeDeHumiIcon.png
new file mode 100644
index 0000000..0020e00
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeDeHumiIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeDeHumiIcon2.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeDeHumiIcon2.png
new file mode 100644
index 0000000..fa1458f
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeDeHumiIcon2.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeFanIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeFanIcon.png
new file mode 100644
index 0000000..1ed04dd
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeFanIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeFanIcon2.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeFanIcon2.png
new file mode 100644
index 0000000..c56efeb
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeFanIcon2.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeHeatHumiIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeHeatHumiIcon.png
new file mode 100644
index 0000000..1a7182f
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeHeatHumiIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeHeatHumiIcon2.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeHeatHumiIcon2.png
new file mode 100644
index 0000000..937be3b
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeHeatHumiIcon2.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeHeatIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeHeatIcon.png
new file mode 100644
index 0000000..7f22917
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeHeatIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeHeatIcon2.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeHeatIcon2.png
new file mode 100644
index 0000000..a763a78
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeHeatIcon2.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeHumiIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeHumiIcon.png
new file mode 100644
index 0000000..c130a2f
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeHumiIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeHumiIcon2.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeHumiIcon2.png
new file mode 100644
index 0000000..8c4b718
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/ModeHumiIcon2.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/MsgViewBg.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/MsgViewBg.png
new file mode 100644
index 0000000..3d61f18
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/MsgViewBg.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/PowerIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/PowerIcon.png
new file mode 100644
index 0000000..6fbb313
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/PowerIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/SceneAtHome.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/SceneAtHome.png
new file mode 100644
index 0000000..c0dba62
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/SceneAtHome.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/SceneAtHome2.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/SceneAtHome2.png
new file mode 100644
index 0000000..0eba990
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/SceneAtHome2.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/SceneAwayHomeIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/SceneAwayHomeIcon.png
new file mode 100644
index 0000000..65d345a
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/SceneAwayHomeIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/SceneAwayHomeIcon2.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/SceneAwayHomeIcon2.png
new file mode 100644
index 0000000..a4e099f
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/SceneAwayHomeIcon2.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/SceneSleepIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/SceneSleepIcon.png
new file mode 100644
index 0000000..2b97168
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/SceneSleepIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/SceneSleepIcon2.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/SceneSleepIcon2.png
new file mode 100644
index 0000000..2353460
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/SceneSleepIcon2.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/TempAndHumiBack.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/TempAndHumiBack.png
new file mode 100644
index 0000000..4f0f76d
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/TempAndHumiBack.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/TopViewBg.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/TopViewBg.png
new file mode 100644
index 0000000..9bc0612
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/orange/TopViewBg.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/CollectionIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/CollectionIcon.png
new file mode 100644
index 0000000..6de3e23
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/CollectionIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeCoolIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeCoolIcon.png
new file mode 100644
index 0000000..f21e863
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeCoolIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeCoolIcon2.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeCoolIcon2.png
new file mode 100644
index 0000000..8301c84
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeCoolIcon2.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeDeHumiIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeDeHumiIcon.png
new file mode 100644
index 0000000..78207ba
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeDeHumiIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeDeHumiIcon2.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeDeHumiIcon2.png
new file mode 100644
index 0000000..e9cde12
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeDeHumiIcon2.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeFanIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeFanIcon.png
new file mode 100644
index 0000000..1177749
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeFanIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeFanIcon2.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeFanIcon2.png
new file mode 100644
index 0000000..967f640
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeFanIcon2.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeHeatHumiIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeHeatHumiIcon.png
new file mode 100644
index 0000000..10bfa81
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeHeatHumiIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeHeatHumiIcon2.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeHeatHumiIcon2.png
new file mode 100644
index 0000000..d30bd3c
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeHeatHumiIcon2.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeHeatIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeHeatIcon.png
new file mode 100644
index 0000000..a1a1303
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeHeatIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeHeatIcon2.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeHeatIcon2.png
new file mode 100644
index 0000000..340bdb2
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeHeatIcon2.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeHumiIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeHumiIcon.png
new file mode 100644
index 0000000..072b382
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeHumiIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeHumiIcon2.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeHumiIcon2.png
new file mode 100644
index 0000000..494559e
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/ModeHumiIcon2.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/MsgViewBg.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/MsgViewBg.png
new file mode 100644
index 0000000..963cb53
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/MsgViewBg.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/PowerIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/PowerIcon.png
new file mode 100644
index 0000000..1e1e30f
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/PowerIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/SceneAtHome.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/SceneAtHome.png
new file mode 100644
index 0000000..9a1d911
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/SceneAtHome.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/SceneAtHome2.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/SceneAtHome2.png
new file mode 100644
index 0000000..0e249b8
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/SceneAtHome2.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/SceneAwayHomeIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/SceneAwayHomeIcon.png
new file mode 100644
index 0000000..a2c8e80
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/SceneAwayHomeIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/SceneAwayHomeIcon2.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/SceneAwayHomeIcon2.png
new file mode 100644
index 0000000..663530a
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/SceneAwayHomeIcon2.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/SceneSleepIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/SceneSleepIcon.png
new file mode 100644
index 0000000..7206526
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/SceneSleepIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/SceneSleepIcon2.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/SceneSleepIcon2.png
new file mode 100644
index 0000000..3b9b231
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/SceneSleepIcon2.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/TempAndHumiBack.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/TempAndHumiBack.png
new file mode 100644
index 0000000..03092b8
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/TempAndHumiBack.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/TopViewBg.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/TopViewBg.png
new file mode 100644
index 0000000..fe3ccbb
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/purple/TopViewBg.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/FunctionBg/AcstFunctionBg.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/FunctionBg/AcstFunctionBg.png
new file mode 100644
index 0000000..cb8405f1
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/FunctionBg/AcstFunctionBg.png
Binary files differ
diff --git a/HDL-ON_Android/Resources/Resource.designer.cs b/HDL-ON_Android/Resources/Resource.designer.cs
index 2b7d618..11a6b26 100644
--- a/HDL-ON_Android/Resources/Resource.designer.cs
+++ b/HDL-ON_Android/Resources/Resource.designer.cs
@@ -14,7 +14,7 @@
 {
 	
 	
-	[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "12.2.8.165")]
+	[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "1.0.0.0")]
 	public partial class Resource
 	{
 		
diff --git a/HDL-ON_Android/SplashActivity.cs b/HDL-ON_Android/SplashActivity.cs
index bed7401..1a8e648 100644
--- a/HDL-ON_Android/SplashActivity.cs
+++ b/HDL-ON_Android/SplashActivity.cs
@@ -237,7 +237,7 @@
                     }
                     isfirst = false;
                     ///鐩戝惉缁忕含搴�
-                    HDL_ON.UI.UI2.Intelligence.Automation.LogicMethod.CurrLogicMethod.AppLatAndLonEvent(lon, lat);
+                    HDL_ON.UI.UI2.Intelligence.Automation.LogicMethod.Current.AppLatAndLonEvent(lon, lat);
                     //鍏抽棴瀹氫綅鏈嶅姟
                     //Shared.Application.StopGPSLocationService();
                 }
diff --git a/HDL-ON_iOS/Resources/Language.ini b/HDL-ON_iOS/Resources/Language.ini
index 2c3c529..dd19a09 100644
--- a/HDL-ON_iOS/Resources/Language.ini
+++ b/HDL-ON_iOS/Resources/Language.ini
@@ -1098,6 +1098,9 @@
 7158=is
 7159=Fall in the alarm
 7160=Someone called the police
+7161=Warning tone
+7162=Face to open the door
+7163=Video call
 
 
 
@@ -2296,6 +2299,9 @@
 7158=鏄�
 7159=璺屽�掓姤璀�
 7160=鏈変汉鎶ヨ
+7161=鎻愮ず闊�
+7162=浜鸿劯寮�闂�
+7163=瑙嗛閫氳瘽鍛煎彨
 
 
  
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/BgChooseMode.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/BgChooseMode.png
new file mode 100644
index 0000000..a297f02
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/BgChooseMode.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/BgChooseScene.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/BgChooseScene.png
new file mode 100644
index 0000000..d1f54f5
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/BgChooseScene.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/LvJianLogo.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/LvJianLogo.png
new file mode 100644
index 0000000..91a7db3
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/LvJianLogo.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/CollectionIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/CollectionIcon.png
new file mode 100644
index 0000000..3fba8ae
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/CollectionIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeCoolIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeCoolIcon.png
new file mode 100644
index 0000000..9c11d3e
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeCoolIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeCoolIcon2.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeCoolIcon2.png
new file mode 100644
index 0000000..f737e8c
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeCoolIcon2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeDeHumiIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeDeHumiIcon.png
new file mode 100644
index 0000000..25663bf
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeDeHumiIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeDeHumiIcon2.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeDeHumiIcon2.png
new file mode 100644
index 0000000..44e54fb
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeDeHumiIcon2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeFanIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeFanIcon.png
new file mode 100644
index 0000000..5f4af29
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeFanIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeFanIcon2.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeFanIcon2.png
new file mode 100644
index 0000000..ed6d76d
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeFanIcon2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeHeatHumiIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeHeatHumiIcon.png
new file mode 100644
index 0000000..fb4ca03
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeHeatHumiIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeHeatHumiIcon2.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeHeatHumiIcon2.png
new file mode 100644
index 0000000..0eea8f2
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeHeatHumiIcon2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeHeatIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeHeatIcon.png
new file mode 100644
index 0000000..26800a9
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeHeatIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeHeatIcon2.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeHeatIcon2.png
new file mode 100644
index 0000000..7ae2edc
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeHeatIcon2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeHumiIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeHumiIcon.png
new file mode 100644
index 0000000..b1f5d64
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeHumiIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeHumiIcon2.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeHumiIcon2.png
new file mode 100644
index 0000000..5029e08
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/ModeHumiIcon2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/MsgViewBg.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/MsgViewBg.png
new file mode 100644
index 0000000..52f647c
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/MsgViewBg.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/PowerIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/PowerIcon.png
new file mode 100644
index 0000000..3e7684c
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/PowerIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/SceneAtHome.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/SceneAtHome.png
new file mode 100644
index 0000000..a8e9743
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/SceneAtHome.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/SceneAtHome2.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/SceneAtHome2.png
new file mode 100644
index 0000000..0649d8d
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/SceneAtHome2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/SceneAwayHomeIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/SceneAwayHomeIcon.png
new file mode 100644
index 0000000..98355b8
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/SceneAwayHomeIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/SceneAwayHomeIcon2.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/SceneAwayHomeIcon2.png
new file mode 100644
index 0000000..dd5ab30
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/SceneAwayHomeIcon2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/SceneSleepIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/SceneSleepIcon.png
new file mode 100644
index 0000000..ffd1fd9
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/SceneSleepIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/SceneSleepIcon2.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/SceneSleepIcon2.png
new file mode 100644
index 0000000..51b39ae
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/SceneSleepIcon2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/TempAndHumiBack.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/TempAndHumiBack.png
new file mode 100644
index 0000000..4f0f76d
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/TempAndHumiBack.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/TopViewBg.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/TopViewBg.png
new file mode 100644
index 0000000..f08940f
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/blue/TopViewBg.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/BgSubControlView.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/BgSubControlView.png
new file mode 100644
index 0000000..27276b6
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/BgSubControlView.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/CollectionIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/CollectionIcon.png
new file mode 100644
index 0000000..ecc088b
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/CollectionIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeCoolIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeCoolIcon.png
new file mode 100644
index 0000000..3a4b291
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeCoolIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeCoolIcon2.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeCoolIcon2.png
new file mode 100644
index 0000000..0eddc2d
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeCoolIcon2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeDeHumiIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeDeHumiIcon.png
new file mode 100644
index 0000000..bd100bf
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeDeHumiIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeDeHumiIcon2.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeDeHumiIcon2.png
new file mode 100644
index 0000000..c91527b
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeDeHumiIcon2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeFanIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeFanIcon.png
new file mode 100644
index 0000000..74210be
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeFanIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeFanIcon2.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeFanIcon2.png
new file mode 100644
index 0000000..f2bb414
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeFanIcon2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeHeatHumiIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeHeatHumiIcon.png
new file mode 100644
index 0000000..568ca40
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeHeatHumiIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeHeatHumiIcon2.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeHeatHumiIcon2.png
new file mode 100644
index 0000000..78b6048
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeHeatHumiIcon2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeHeatIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeHeatIcon.png
new file mode 100644
index 0000000..15e1884
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeHeatIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeHeatIcon2.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeHeatIcon2.png
new file mode 100644
index 0000000..66f7e5a
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeHeatIcon2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeHumiIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeHumiIcon.png
new file mode 100644
index 0000000..e1de801
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeHumiIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeHumiIcon2.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeHumiIcon2.png
new file mode 100644
index 0000000..78d5308
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/ModeHumiIcon2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/SceneAtHome.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/SceneAtHome.png
new file mode 100644
index 0000000..f5cf78c
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/SceneAtHome.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/SceneAtHome2.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/SceneAtHome2.png
new file mode 100644
index 0000000..b5f9e0b
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/SceneAtHome2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/SceneAwayHomeIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/SceneAwayHomeIcon.png
new file mode 100644
index 0000000..90132cc
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/SceneAwayHomeIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/SceneAwayHomeIcon2.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/SceneAwayHomeIcon2.png
new file mode 100644
index 0000000..1afea73
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/SceneAwayHomeIcon2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/SceneSleepIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/SceneSleepIcon.png
new file mode 100644
index 0000000..9f160cf
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/SceneSleepIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/SceneSleepIcon2.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/SceneSleepIcon2.png
new file mode 100644
index 0000000..44eaa26
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/SceneSleepIcon2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/CollectionIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/CollectionIcon.png
new file mode 100644
index 0000000..870e691
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/CollectionIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeCoolIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeCoolIcon.png
new file mode 100644
index 0000000..741a776
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeCoolIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeCoolIcon2.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeCoolIcon2.png
new file mode 100644
index 0000000..13f979e
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeCoolIcon2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeDeHumiIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeDeHumiIcon.png
new file mode 100644
index 0000000..0020e00
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeDeHumiIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeDeHumiIcon2.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeDeHumiIcon2.png
new file mode 100644
index 0000000..fa1458f
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeDeHumiIcon2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeFanIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeFanIcon.png
new file mode 100644
index 0000000..1ed04dd
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeFanIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeFanIcon2.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeFanIcon2.png
new file mode 100644
index 0000000..c56efeb
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeFanIcon2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeHeatHumiIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeHeatHumiIcon.png
new file mode 100644
index 0000000..1a7182f
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeHeatHumiIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeHeatHumiIcon2.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeHeatHumiIcon2.png
new file mode 100644
index 0000000..937be3b
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeHeatHumiIcon2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeHeatIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeHeatIcon.png
new file mode 100644
index 0000000..7f22917
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeHeatIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeHeatIcon2.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeHeatIcon2.png
new file mode 100644
index 0000000..a763a78
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeHeatIcon2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeHumiIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeHumiIcon.png
new file mode 100644
index 0000000..c130a2f
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeHumiIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeHumiIcon2.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeHumiIcon2.png
new file mode 100644
index 0000000..8c4b718
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/ModeHumiIcon2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/MsgViewBg.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/MsgViewBg.png
new file mode 100644
index 0000000..3d61f18
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/MsgViewBg.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/PowerIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/PowerIcon.png
new file mode 100644
index 0000000..6fbb313
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/PowerIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/SceneAtHome.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/SceneAtHome.png
new file mode 100644
index 0000000..c0dba62
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/SceneAtHome.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/SceneAtHome2.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/SceneAtHome2.png
new file mode 100644
index 0000000..0eba990
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/SceneAtHome2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/SceneAwayHomeIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/SceneAwayHomeIcon.png
new file mode 100644
index 0000000..65d345a
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/SceneAwayHomeIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/SceneAwayHomeIcon2.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/SceneAwayHomeIcon2.png
new file mode 100644
index 0000000..a4e099f
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/SceneAwayHomeIcon2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/SceneSleepIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/SceneSleepIcon.png
new file mode 100644
index 0000000..2b97168
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/SceneSleepIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/SceneSleepIcon2.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/SceneSleepIcon2.png
new file mode 100644
index 0000000..2353460
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/SceneSleepIcon2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/TempAndHumiBack.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/TempAndHumiBack.png
new file mode 100644
index 0000000..4f0f76d
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/TempAndHumiBack.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/TopViewBg.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/TopViewBg.png
new file mode 100644
index 0000000..9bc0612
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/orange/TopViewBg.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/CollectionIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/CollectionIcon.png
new file mode 100644
index 0000000..6de3e23
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/CollectionIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeCoolIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeCoolIcon.png
new file mode 100644
index 0000000..f21e863
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeCoolIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeCoolIcon2.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeCoolIcon2.png
new file mode 100644
index 0000000..8301c84
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeCoolIcon2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeDeHumiIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeDeHumiIcon.png
new file mode 100644
index 0000000..78207ba
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeDeHumiIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeDeHumiIcon2.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeDeHumiIcon2.png
new file mode 100644
index 0000000..e9cde12
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeDeHumiIcon2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeFanIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeFanIcon.png
new file mode 100644
index 0000000..1177749
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeFanIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeFanIcon2.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeFanIcon2.png
new file mode 100644
index 0000000..967f640
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeFanIcon2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeHeatHumiIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeHeatHumiIcon.png
new file mode 100644
index 0000000..10bfa81
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeHeatHumiIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeHeatHumiIcon2.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeHeatHumiIcon2.png
new file mode 100644
index 0000000..d30bd3c
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeHeatHumiIcon2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeHeatIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeHeatIcon.png
new file mode 100644
index 0000000..a1a1303
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeHeatIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeHeatIcon2.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeHeatIcon2.png
new file mode 100644
index 0000000..340bdb2
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeHeatIcon2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeHumiIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeHumiIcon.png
new file mode 100644
index 0000000..072b382
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeHumiIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeHumiIcon2.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeHumiIcon2.png
new file mode 100644
index 0000000..494559e
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/ModeHumiIcon2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/MsgViewBg.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/MsgViewBg.png
new file mode 100644
index 0000000..963cb53
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/MsgViewBg.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/PowerIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/PowerIcon.png
new file mode 100644
index 0000000..1e1e30f
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/PowerIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/SceneAtHome.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/SceneAtHome.png
new file mode 100644
index 0000000..9a1d911
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/SceneAtHome.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/SceneAtHome2.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/SceneAtHome2.png
new file mode 100644
index 0000000..0e249b8
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/SceneAtHome2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/SceneAwayHomeIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/SceneAwayHomeIcon.png
new file mode 100644
index 0000000..a2c8e80
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/SceneAwayHomeIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/SceneAwayHomeIcon2.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/SceneAwayHomeIcon2.png
new file mode 100644
index 0000000..663530a
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/SceneAwayHomeIcon2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/SceneSleepIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/SceneSleepIcon.png
new file mode 100644
index 0000000..7206526
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/SceneSleepIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/SceneSleepIcon2.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/SceneSleepIcon2.png
new file mode 100644
index 0000000..3b9b231
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/SceneSleepIcon2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/TempAndHumiBack.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/TempAndHumiBack.png
new file mode 100644
index 0000000..03092b8
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/TempAndHumiBack.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/TopViewBg.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/TopViewBg.png
new file mode 100644
index 0000000..fe3ccbb
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/purple/TopViewBg.png
Binary files differ
diff --git a/HDL_ON/Common/ApiUtlis.cs b/HDL_ON/Common/ApiUtlis.cs
index 0b790f8..dba9d06 100644
--- a/HDL_ON/Common/ApiUtlis.cs
+++ b/HDL_ON/Common/ApiUtlis.cs
@@ -437,30 +437,30 @@
 
 
 
-            //涓嬭浇鍏変紡鏁版嵁
-            new System.Threading.Thread(() => {
-                try
-                {//00
-                    HttpServerRequest http = new HttpServerRequest();
-                    var packData = http.GetInverterList();
-                    if (packData != null)
-                    {
-                        if (packData.Code == StateCode.SUCCESS)
-                        {
-                            var inverterList = JsonConvert.DeserializeObject<List<InverterInfo>>(packData.Data.ToString());
-                            if (inverterList!= null)
-                            {
-                                FunctionList.List.InverterList = inverterList;
-                            }
-                        }
-                    }
-                }
-                catch (Exception ex)
-                {
-                    MainPage.Log($"璇诲彇鍏変紡鏁版嵁寮傚父:{ex.Message}");
-                }
+            ////涓嬭浇鍏変紡鏁版嵁
+            //new System.Threading.Thread(() => {
+            //    try
+            //    {//00
+            //        HttpServerRequest http = new HttpServerRequest();
+            //        var packData = http.GetInverterList();
+            //        if (packData != null)
+            //        {
+            //            if (packData.Code == StateCode.SUCCESS)
+            //            {
+            //                var inverterList = JsonConvert.DeserializeObject<List<InverterInfo>>(packData.Data.ToString());
+            //                if (inverterList!= null)
+            //                {
+            //                    FunctionList.List.InverterList = inverterList;
+            //                }
+            //            }
+            //        }
+            //    }
+            //    catch (Exception ex)
+            //    {
+            //        MainPage.Log($"璇诲彇鍏変紡鏁版嵁寮傚父:{ex.Message}");
+            //    }
 
-            }) { IsBackground = true }.Start();
+            //}) { IsBackground = true }.Start();
 
 
 
diff --git a/HDL_ON/Common/R.cs b/HDL_ON/Common/R.cs
index c83a079..bd61d6c 100644
--- a/HDL_ON/Common/R.cs
+++ b/HDL_ON/Common/R.cs
@@ -4,7 +4,13 @@
 {
     public static class StringId
     {
-
+        /// <summary>
+        /// 绉戞妧
+        /// </summary>
+        public const int Acst = 569;
+        /// <summary>
+        /// 杩愯鏁伴噺/鎬绘暟閲�: --/--
+        /// </summary>
         public const int OperationDataTotalData = 568;
         /// <summary>
         /// 鐢垫睜SOC
@@ -2960,6 +2966,18 @@
         /// 鏈変汉鎶ヨ
         /// </summary>
         public const int yourenbaojing = 7160;
+        /// <summary>
+        /// 鎻愮ず闊�
+        /// </summary>
+        public const int tishiyin = 7161;
+        /// <summary>
+        /// 浜鸿劯寮�闂�
+        /// </summary>
+        public const int renliankaimen = 7162;
+        /// <summary>
+        /// 瑙嗛閫氳瘽鍛煎彨
+        /// </summary>
+        public const int shipintonghuahujiao = 7163; 
 
 
 
diff --git a/HDL_ON/DAL/DriverLayer/Control.cs b/HDL_ON/DAL/DriverLayer/Control.cs
index b347f34..6eebe22 100644
--- a/HDL_ON/DAL/DriverLayer/Control.cs
+++ b/HDL_ON/DAL/DriverLayer/Control.cs
@@ -837,6 +837,33 @@
                 new Control_Udp().SendLocalHdlLinkData(sendBytes, aLinkData.id,0);
             }
         }
+
+
+        /// <summary>
+        /// 鑾峰彇闊充箰鐩綍
+        /// </summary>
+        public void GetMusicDirectory(Function function)
+        {
+            if (Ins.GatewayOnline_Local)
+            {
+                var objects = new List<Dictionary<string, string>>();
+                var readKey = new Dictionary<string, string>();
+                readKey.Add("sid", function.sid);
+                objects.Add(readKey);
+                var readDataObj = new AlinkReadFunctionStatusObj()
+                {
+                    id = Ins.msg_id.ToString(),
+                    objects = objects,
+                    time_stamp = Utlis.GetTimestamp()
+                };
+                var functionControlDataJson = Newtonsoft.Json.JsonConvert.SerializeObject(readDataObj);
+                var sendBytes = Ins.ConvertSendBodyData($"/base/{DB_ResidenceData.Instance.HomeGateway.gatewayId}/thing/service/MusicPlayGroupListGet/down", functionControlDataJson);
+                MainPage.Log($"鏈湴閫氳 鍙戦�丠DL-Link鏁版嵁:{functionControlDataJson}");
+                new Control_Udp().SendLocalHdlLinkData(sendBytes, readDataObj.id);
+            }
+
+        }
+
         /// <summary>
         /// 缃戝叧杩涘叆閰嶇綉妯″紡
         /// </summary>
diff --git a/HDL_ON/DAL/Server/HttpServerRequest.cs b/HDL_ON/DAL/Server/HttpServerRequest.cs
index 1bf4aaf..6d90181 100644
--- a/HDL_ON/DAL/Server/HttpServerRequest.cs
+++ b/HDL_ON/DAL/Server/HttpServerRequest.cs
@@ -551,7 +551,7 @@
                 {
                     foreach (var home in homeList)
                     {
-                        if (home.isBindGateway)
+                        if (home.isBindGateway)//鏄惁缁戝畾缃戝叧
                         {
                             UserInfo.Current.regionList.Add(home);
                             //鏂扮粦瀹氱殑浣忓畢锛岀洿鎺ュ垏鎹㈠埌鏂颁綇瀹�
@@ -1414,7 +1414,7 @@
                             MainPage.cityInfo.weather = jt.GetValue("Weather").ToString();
                             MainPage.cityInfo.lowestTemperature = jt.GetValue("lowestTemperature").ToString();
                             MainPage.cityInfo.highestTemperature = jt.GetValue("highestTemperature").ToString();
-
+                            MainPage.CityWeatherAction?.Invoke();
                             break;
                         }
                         catch (Exception ex)
@@ -3005,6 +3005,18 @@
             var pack = HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_GetInverter_List, requestJson);
             return pack;
         }
+        /// <summary>
+        /// 鑾峰彇浣忓畢涓嬪厜浼忕粺璁$殑鏁版嵁
+        /// </summary>
+        /// <returns></returns>
+        public ResponsePackNew GetInverterStatisticsInfo()
+        {
+            Dictionary<string, object> d = new Dictionary<string, object>();
+            d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
+            var requestJson = HttpUtil.GetSignRequestJson(d);
+            var pack = HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_GetInverter_StatisticsInfo, requestJson);
+            return pack;
+        }
         #endregion
 
     }
diff --git a/HDL_ON/DAL/Server/NewAPI.cs b/HDL_ON/DAL/Server/NewAPI.cs
index d6b2914..d4b49a3 100644
--- a/HDL_ON/DAL/Server/NewAPI.cs
+++ b/HDL_ON/DAL/Server/NewAPI.cs
@@ -770,6 +770,12 @@
         /// 浣忓畢sip璐﹀彿鑾峰彇
         /// </summary>
         public const string API_POST_VideoDevice_GetSipAccount = "/home-wisdom/app/home/getSipAccount";
+        /// <summary>
+        /// 鑾峰彇浣忓畢宸插綍鍏ヤ汉鑴镐俊鎭紙鍙瀵硅浜鸿劯寮�闂ㄨЕ鍙戣嚜鍔ㄥ寲閰嶇疆鐢級
+        /// </summary>
+        public const string Api_Post_GetListHomeFace = "/home-wisdom/app/logic/listHomeFace";
+
+       
         #endregion
 
 
@@ -810,6 +816,16 @@
         /// 鑾峰彇闊充箰鍒楄〃
         /// </summary>
         public const string Api_Post_PlayerList = "/home-wisdom/app/wise/music/playerList";
+        /// <summary>
+        /// 鑾峰彇闊充箰鍒嗙粍鍒楄〃
+        /// </summary>
+        public const string Api_Post_GroupList = "/home-wisdom/app/wise/music/groupList";
+        /// <summary>
+        /// 鑾峰彇鍒嗙粍鐨勯煶涔愬垪琛�
+        /// </summary>
+        public const string Api_Post_GroupPlayerList = "/home-wisdom/app/wise/music/groupPlayerList";
+
+
         #endregion
 
 
@@ -822,6 +838,10 @@
         /// "homeId":0
         /// </summary>
         public const string Api_Post_GetInverter_List = "/home-wisdom/app/device/inverter/list";
+        /// <summary>
+        /// 鑾峰彇浣忓畢涓嬪厜浼忕粺璁$殑鏁版嵁
+        /// </summary>
+        public const string Api_Post_GetInverter_StatisticsInfo = "/home-wisdom/app/device/inverter/allInfo";
         #endregion
 
     }
diff --git a/HDL_ON/DAL/ThirdPartySdk/HDLLinphone.cs b/HDL_ON/DAL/ThirdPartySdk/HDLLinphone.cs
index c2af0dd..e652116 100644
--- a/HDL_ON/DAL/ThirdPartySdk/HDLLinphone.cs
+++ b/HDL_ON/DAL/ThirdPartySdk/HDLLinphone.cs
@@ -117,7 +117,12 @@
 
             this.currentHDLSipInfo = mHDLSipInfo;
 
-            if (mHDLSipInfo == null) return;
+            if (mHDLSipInfo == null) {
+                //new alert
+                return;
+            }
+
+
 
 #if __IOS__
             //Shared.IOS.HDLLinphoneSDK.HDLLinPhoneSDK.Instance().Login("1003", "123456", "192.168.31.194:5060");
@@ -234,6 +239,10 @@
                         Utlis.WriteLine("CALL 鑾峰彇SIP璐﹀彿鎴愬姛锛�" + mHDLSipInfo.sipAccount);
                     });
                 }
+                else
+                {
+                    new Alert("", $"鑾峰彇Sip璐﹀彿淇℃伅澶辫触.", "纭畾").Show();
+                }
             }
             catch { }
 
diff --git a/HDL_ON/Entity/DB_ResidenceData.cs b/HDL_ON/Entity/DB_ResidenceData.cs
index 0113d52..cd346ad 100644
--- a/HDL_ON/Entity/DB_ResidenceData.cs
+++ b/HDL_ON/Entity/DB_ResidenceData.cs
@@ -78,7 +78,7 @@
                                     ShowFunction.FreshAir,ShowFunction.DoorLock,
                                     ShowFunction.Panel,ShowFunction.SecurityMonitoring,
                                     ShowFunction.Sensor,ShowFunction.VideoIntercom,
-                                    ShowFunction.SecurityCenter
+                                    ShowFunction.SecurityCenter,ShowFunction.Acst,
                                 });
                         instance.SaveResidenceData();
                         instance.residenceImage = "Classification/Room/Roombg.png";
@@ -119,7 +119,7 @@
                                     ShowFunction.FreshAir,ShowFunction.DoorLock,
                                     ShowFunction.Panel,ShowFunction.SecurityMonitoring,
                                     ShowFunction.Sensor,ShowFunction.VideoIntercom,
-                                    ShowFunction.SecurityCenter
+                                    ShowFunction.SecurityCenter,ShowFunction.Acst,
                                 });
                         instance.SupportFacePass = false;
                         instance.SaveResidenceData();
diff --git a/HDL_ON/Entity/Enumerative/MyEnum.cs b/HDL_ON/Entity/Enumerative/MyEnum.cs
index 1282a71..8e4c806 100644
--- a/HDL_ON/Entity/Enumerative/MyEnum.cs
+++ b/HDL_ON/Entity/Enumerative/MyEnum.cs
@@ -173,6 +173,10 @@
         /// 瀹夐槻涓績
         /// </summary>
         SecurityCenter  = 0x22,
+        /// <summary>
+        /// 缁垮缓绉戞妧绯荤粺
+        /// </summary>
+        Acst = 0x23,
 
 
     }
diff --git a/HDL_ON/Entity/Function/Acst.cs b/HDL_ON/Entity/Function/Acst.cs
new file mode 100644
index 0000000..5d01728
--- /dev/null
+++ b/HDL_ON/Entity/Function/Acst.cs
@@ -0,0 +1,102 @@
+锘縰sing System;
+using Shared;
+
+namespace HDL_ON.Entity
+{
+    /// <summary>
+	/// 绌鸿皟绉戞妧绯荤粺 锛堢豢寤猴級
+	/// </summary>
+    public class Acst
+    {
+        public Acst()
+        {
+        }
+
+    }
+
+    #region 绌鸿皟绉戞妧绯荤粺 锛堢豢寤猴級 鎬绘帶
+    /// <summary>
+    /// 绌鸿皟绉戞妧绯荤粺 锛堢豢寤猴級
+    /// 鎬绘帶
+    /// </summary>
+    public class AcstParent : Function
+    {   
+
+    }
+    /// <summary>
+    /// 绌鸿皟绉戞妧绯荤粺 锛堢豢寤猴級
+    /// 鎬绘帶
+    /// 灞炴�ф灇涓�
+    /// </summary>
+    public enum AcstParent_AttrEnum
+    {
+        on_off,// 寮�鍏�  
+        mode,//妯″紡 
+        scene,//  鍦烘櫙 WR
+        day_electricity,// 浠婃棩鑰楃數閲忥紙kW路h锛�	R float		0-999999
+        month_electricity,// 鏈湀鑰楃數閲忥紙kW路h锛�	R float		0-999999
+        total_electricity,// 鎬昏�楃數閲忥紙kW路h锛�	R float		0-999999
+        active_power,// 鐢ㄧ數鍔熺巼    R float		0-999999
+        room_temp,// 瀹ゅ唴娓╁害    R			-30 - 100
+        room_humidity,// 瀹ゅ唴婀垮害    R float	%	0-100
+        co2,// CO2鍊�    R integer	%d ppm
+        tvoc,// tvoc鍊�   R integer	%d mg/m3
+        pm25,//    PM2.5鍊� R   integer	%d ppm
+    }
+    /// <summary>
+    /// 绌鸿皟绉戞妧绯荤粺 锛堢豢寤猴級
+    /// 鎬绘帶
+    /// 妯″紡灞炴�у�兼灇涓�
+    /// </summary>
+    public enum AcstParent_Attr_ModeValueEnum
+    {
+        cool,//鍒跺喎
+        heat,//鍒剁儹
+        fan,//閫氶
+        dry,//闄ゆ箍
+        humidity,//鍔犳箍
+        heat_humidity,//鍒剁儹鍔犳箍
+    }
+    /// <summary>
+    /// 绌鸿皟绉戞妧绯荤粺 锛堢豢寤猴級
+    /// 鎬绘帶
+    /// 鍦烘櫙灞炴�у�兼灇涓�
+    /// </summary>
+    public enum AcstParent_Attr_SceneValueEnum
+    {
+        at_home,//鍦ㄥ
+        leave_home,//绂诲
+        sleep,//鐫$湢
+    }
+
+    #endregion
+
+
+    #region 绌鸿皟绉戞妧绯荤粺 锛堢豢寤猴級瀛愭帶
+    /// <summary>
+    /// 绌鸿皟绉戞妧绯荤粺 锛堢豢寤猴級
+    /// 瀛愭帶
+    /// </summary>
+    public class AcstSub
+    {
+
+    }
+    /// <summary>
+    /// 绌鸿皟绉戞妧绯荤粺 锛堢豢寤猴級
+    /// 瀛愭帶
+    /// 灞炴�ф灇涓�
+    /// </summary>
+    public enum AcstSub_AttrEnum
+    {
+        on_off,//  寮�鍏�  WR	string		on/off  on
+        set_temp,//    璁剧疆娓╁害    WR	float		-30-100	
+        set_temp_step,//   娓╁害鍔犲噺    W	string		up/down
+        room_temp,//   瀹ゅ唴娓╁害    R	float			
+        room_humidity,//   瀹ゅ唴婀垮害    R	float	%	0-100	
+    }
+
+    #endregion
+
+
+
+}
diff --git a/HDL_ON/Entity/Function/Function.cs b/HDL_ON/Entity/Function/Function.cs
index a5313b0..6c095d6 100644
--- a/HDL_ON/Entity/Function/Function.cs
+++ b/HDL_ON/Entity/Function/Function.cs
@@ -1318,6 +1318,17 @@
         public const string OtherCommon = "other.common";
 
         /// <summary>
+        /// 绌鸿皟绉戞妧绯荤粺锛堢豢寤猴級
+        /// 鎬绘帶
+        /// </summary>
+        public const string AcstParent = "acst.parent";
+        /// <summary>
+        /// 绌鸿皟绉戞妧绯荤粺锛堢豢寤猴級
+        /// 瀛愭帶
+        /// </summary>
+        public const string AcstSub = "acst.sub";
+
+        /// <summary>
         /// 闂ㄩ攣
         /// </summary>
         public const string DoorLock = "security.door";
@@ -1331,6 +1342,7 @@
             list.Add(DoorLock);
             return list;
         }
+
 
 
         #region 鐏厜
@@ -1869,6 +1881,13 @@
         }
         #endregion
 
+        #region 鍙瀵硅
+        /// <summary>
+        /// HDL鍙瀵硅
+        /// </summary>
+        public const string doorgate="door.gate";
+        #endregion
+
         #region 绗笁鏂箂pk鍒楄〃
         /// <summary>
         /// 鑾峰彇鎵�鏈夌涓夋柟鍝佺墝鍔熻兘鐨剆pk
diff --git a/HDL_ON/Entity/Function/InverterInfo.cs b/HDL_ON/Entity/Function/InverterInfo.cs
index 8751e7f..c6811cc 100644
--- a/HDL_ON/Entity/Function/InverterInfo.cs
+++ b/HDL_ON/Entity/Function/InverterInfo.cs
@@ -63,7 +63,7 @@
     /// <summary>
 	/// 鍏変紡鏁版嵁
 	/// </summary>
-    public class InverterInfo
+    public class InverterInfo : Function
     {
         public InverterInfo()
         {
@@ -71,10 +71,10 @@
 
         public string gatewayId;// 缃戝叧Id    long
         public string gatewayName;//缃戝叧鍚嶇О    String
-        public string deviceId;// 璁惧id    Long
-        public string name;//璁惧鍚嶇О    string
-        public string spk;//璁惧spk   string
-        public string sid;//璁惧sid   string
+        //public string deviceId;// 璁惧id    Long
+        //public string name;//璁惧鍚嶇О    string
+        //public string spk;//璁惧spk   string
+        //public string sid;//璁惧sid   string
         public string oid;//璁惧oid   string
         public string omodel;// 璁惧鍨嬪彿    string
         public string osn;// 璁惧sn	
@@ -82,7 +82,7 @@
         public string totalElectricityPvToday;// 浠婃棩鍙戠數閲�   String
         public string systemStatus;// 鐘舵��  String
         public string inv;// 閫嗗彉鍣ㄧ姸鎬�   String
-        public List<InverterStatusInfo> status = new List<InverterStatusInfo>();// 灞炴�у綋鍓嶇姸鎬�  array
+        //public List<InverterStatusInfo> status = new List<InverterStatusInfo>();// 灞炴�у綋鍓嶇姸鎬�  array
 
     }
     /// <summary>
@@ -93,5 +93,26 @@
         public string key;// 灞炴�у悕绉�    string
         public string value;// 灞炴�у�� string
     }
+
+
+    /// <summary>
+    /// 瀹跺涵鍏変紡缁熻鏁版嵁
+    /// </summary>
+    public class StatisticsInfo
+    {
+        public string workMode;// 宸ヤ綔妯″紡    String
+        public string totalElectricityPvToday;// 浠婃棩鍙戠數閲�   String
+        public string totalElectricityPvMonth;// 鏈湀鍙戠數閲�   String
+        public string totalElectricityPvYear;// 鏈勾鍙戠數閲�   String
+        public string totalElectricityPv;//鎬诲彂鐢甸噺    String
+        public string powerPvNow;// 褰撳墠鍙戠數鍔熺巼  String
+        public string powerRNow;// 褰撳墠鐢佃〃鍔熺巼  String
+        public string batteryPowerNow;// 褰撳墠鐢垫睜鍔熺巼  String
+        public string powerLoadNow;//褰撳墠璐熻浇鍔熺巼  String
+        public string batterySoc;// 鐢垫睜soc   String
+        public string systemStatus;// 鐘舵��  String
+        public string earningsToday;// 浠婃棩鏀剁泭    String
+    }
+
 }
 
diff --git a/HDL_ON/Entity/FunctionList.cs b/HDL_ON/Entity/FunctionList.cs
index cf3f154..398fb08 100644
--- a/HDL_ON/Entity/FunctionList.cs
+++ b/HDL_ON/Entity/FunctionList.cs
@@ -41,6 +41,26 @@
         public List<Function> Functions = new List<Function>();
 
         /// <summary>
+        /// 缁垮缓绉戞妧绯荤粺
+        /// 鎬绘帶鍒楄〃
+        /// </summary>
+        /// <returns></returns>
+        public List<Function> GetAcstParentList()
+        {
+            return Functions.FindAll((obj) => obj.spk == SPK.AcstParent);
+        }
+
+        /// <summary>
+        /// 缁垮缓绉戞妧绯荤粺
+        /// 瀛愭帶鍒楄〃
+        /// </summary>
+        /// <returns></returns>
+        public List<Function> GetAcstSubList()
+        {
+            return Functions.FindAll((obj) => obj.spk == SPK.AcstSub);
+        }
+
+        /// <summary>
         /// 绌鸿皟鍒楄〃
         /// </summary>
         /// <returns></returns>
@@ -106,16 +126,17 @@
         /// <summary>
         /// 鍏変紡鍒楄〃
         /// </summary>
-        public List<InverterInfo> InverterList
+        public List<Function> InverterList()
         {
-            get
-            {
-                return _inverterList;
-            }
-            set
-            {
-                _inverterList = value;
-            }
+            //get
+            //{
+            //    return _inverterList;
+            //}
+            //set
+            //{
+            //    _inverterList = value;
+            //}
+            return Functions.FindAll((obj) => obj.spk == SPK.Inverter);
         }
         #region 瀹剁數鍒楄〃 electricals
         /// <summary>
diff --git a/HDL_ON/Entity/ResponseEntity/CityInfo.cs b/HDL_ON/Entity/ResponseEntity/CityInfo.cs
index d5abdca..33953e9 100644
--- a/HDL_ON/Entity/ResponseEntity/CityInfo.cs
+++ b/HDL_ON/Entity/ResponseEntity/CityInfo.cs
@@ -46,7 +46,7 @@
         /// <summary>
         /// 婀垮害
         /// </summary>
-        public string humidity = "--";
+        public string humidity = "---";
         /// <summary>
         /// 澶╂皵鐘舵��
         /// </summary>
@@ -67,7 +67,7 @@
         public string aqi = string.Empty;
         public string air_Quality = "--";
         public string pm10 = string.Empty;
-        public string pm25 = "--";
+        public string pm25 = "---";
         public string no2 = string.Empty;
         public string so2 = string.Empty;
         public string co = string.Empty;
diff --git a/HDL_ON/HDL_ON.projitems b/HDL_ON/HDL_ON.projitems
index ef69777..40874b3 100644
--- a/HDL_ON/HDL_ON.projitems
+++ b/HDL_ON/HDL_ON.projitems
@@ -515,6 +515,9 @@
     <Compile Include="$(MSBuildThisFileDirectory)DAL\DriverLayer\Control_Tcp.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Entity\Function\InverterInfo.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\H5Page.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)Entity\Function\Acst.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Acst\AcstParentPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Acst\AcstSubPage.cs" />
   </ItemGroup>
   <ItemGroup>
     <Folder Include="$(MSBuildThisFileDirectory)Entity\Device\" />
@@ -541,5 +544,6 @@
     <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\SenesorEnvironment\" />
     <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Light\LightScene\" />
     <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\FaceManagement\" />
+    <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Acst\" />
   </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/HDL_ON/UI/MainPage.cs b/HDL_ON/UI/MainPage.cs
index a4ba8f6..64b1e92 100644
--- a/HDL_ON/UI/MainPage.cs
+++ b/HDL_ON/UI/MainPage.cs
@@ -26,7 +26,7 @@
         /// <summary>
         /// 鐗堟湰鍙�
         /// </summary>
-        public static string VersionString = "1.6.0";
+        public static string VersionString = "1.6.1";
         ///// <summary>
         ///// 瀹㈡埛绔被鍨�
         ///// </summary>
@@ -37,6 +37,11 @@
         /// </summary>
         public static Entity.CityInfo cityInfo = new Entity.CityInfo();
         /// <summary>
+        /// 鍩庡競澶╂皵淇℃伅antion
+        /// </summary>
+        public static Action CityWeatherAction = null;
+
+        /// <summary>
         /// 澶╂皵鍒锋柊action
         /// </summary>
         public static Action RefreshAir;
diff --git a/HDL_ON/UI/UI1-Login/LoginPage.cs b/HDL_ON/UI/UI1-Login/LoginPage.cs
index 7f8e495..b1ebc13 100644
--- a/HDL_ON/UI/UI1-Login/LoginPage.cs
+++ b/HDL_ON/UI/UI1-Login/LoginPage.cs
@@ -218,7 +218,7 @@
                     //etAccount.Text = "13450425807";//榛勭婧� knx椤圭洰
                     etAccount.Text = "18244942707";
                     etAccount.Text = "tf@smarttech.com.ua";
-                    etAccount.Text = "13418062953";
+                    etAccount.Text = "15871702179";
                 }
                 else
                 {
@@ -251,7 +251,7 @@
                     //etAccount.Text = "s.savinov@hdlautomation.ru";
                 }
                 b = !b;
-                etPassword.Text = "123456";
+                etPassword.Text = "qunhui105113";
                 if(etAccount.Text == "13418062953")
                 {
                     etPassword.Text = "a123456";
@@ -770,8 +770,399 @@
                     },
                 };
                 fh.SaveFunctionFile();
-#endregion
-#region 鍦烘櫙
+
+
+
+#if DEBUG
+                FunctionList.List.Functions.Add(new Function
+                {
+                    name = "娴嬭瘯-绌鸿皟绉戞妧绯荤粺鎬绘帶",
+                    spk = SPK.AcstParent,
+                    collect = true,
+                    attributes = new List<FunctionAttributes>()
+                {
+                    new FunctionAttributes(){ key = FunctionAttributeKey.OnOff ,curValue = "on",state = "on" },
+                    new FunctionAttributes(){ key = AcstParent_AttrEnum.mode.ToString(),curValue = AcstParent_Attr_ModeValueEnum.cool.ToString(),state = AcstParent_Attr_ModeValueEnum.cool.ToString(),
+                         value = new List<string>
+                         {
+                             AcstParent_Attr_ModeValueEnum.cool.ToString(),
+                             AcstParent_Attr_ModeValueEnum.dry.ToString(),
+                             AcstParent_Attr_ModeValueEnum.fan.ToString(),
+                             AcstParent_Attr_ModeValueEnum.heat.ToString(),
+                             AcstParent_Attr_ModeValueEnum.humidity.ToString(),
+                             AcstParent_Attr_ModeValueEnum.heat_humidity.ToString(),
+                         }
+                    },
+                    new FunctionAttributes(){ key = AcstParent_AttrEnum.scene.ToString(), curValue = AcstParent_Attr_SceneValueEnum.at_home.ToString(), state = AcstParent_Attr_SceneValueEnum.at_home.ToString(),
+                        value = new List<string>()
+                        {
+                            AcstParent_Attr_SceneValueEnum.at_home.ToString(),
+                            AcstParent_Attr_SceneValueEnum.leave_home.ToString(),
+                            AcstParent_Attr_SceneValueEnum.sleep.ToString(),
+                        }
+                    },
+                    new FunctionAttributes(){ key = AcstParent_AttrEnum.day_electricity.ToString(),curValue = "99",state = "99"},
+                    new FunctionAttributes(){ key = AcstParent_AttrEnum.month_electricity.ToString(),curValue = "999",state = "999"},
+                    new FunctionAttributes(){ key = AcstParent_AttrEnum.total_electricity.ToString(),curValue = "9999",state = "9999"},
+                    new FunctionAttributes(){ key = AcstParent_AttrEnum.active_power.ToString(),curValue = "9999",state = "9999"},
+                    new FunctionAttributes(){ key = AcstParent_AttrEnum.room_temp.ToString(),curValue = "26",state = "26"},
+                    new FunctionAttributes(){ key = AcstParent_AttrEnum.room_humidity.ToString(),curValue = "66",state = "66"},
+                    new FunctionAttributes(){ key = AcstParent_AttrEnum.co2.ToString(),curValue = "266",state = "266"},
+                    new FunctionAttributes(){ key = AcstParent_AttrEnum.tvoc.ToString(),curValue = "666",state = "666"},
+                    new FunctionAttributes(){ key = AcstParent_AttrEnum.pm25.ToString(),curValue = "36",state = "36"},
+                }
+                });
+
+                FunctionList.List.Functions.Add(new Function
+                {
+                    name = "娴嬭瘯-绌鸿皟绉戞妧绯荤粺瀛愭帶-1",
+                    spk = SPK.AcstSub,
+                    sid = "0000001",
+                    attributes = new List<FunctionAttributes>()
+                {
+                    new FunctionAttributes(){ key = FunctionAttributeKey.OnOff ,curValue = "on",state = "on" },
+                    new FunctionAttributes(){ key = AcstSub_AttrEnum.set_temp.ToString(),curValue = "26",state = "26"},
+                    new FunctionAttributes(){ key = AcstSub_AttrEnum.room_temp.ToString(),curValue = "26",state = "26"},
+                    new FunctionAttributes(){ key = AcstSub_AttrEnum.room_humidity.ToString(),curValue = "66",state = "66"},
+                }
+                });
+                FunctionList.List.Functions.Add(new Function
+                {
+                    name = "娴嬭瘯-绌鸿皟绉戞妧绯荤粺瀛愭帶-2",
+                    spk = SPK.AcstSub,
+                    sid = "0000002",
+                    attributes = new List<FunctionAttributes>()
+                {
+                    new FunctionAttributes(){ key = FunctionAttributeKey.OnOff ,curValue = "on",state = "on" },
+                    new FunctionAttributes(){ key = AcstSub_AttrEnum.set_temp.ToString(),curValue = "26",state = "26"},
+                    new FunctionAttributes(){ key = AcstSub_AttrEnum.room_temp.ToString(),curValue = "26",state = "26"},
+                    new FunctionAttributes(){ key = AcstSub_AttrEnum.room_humidity.ToString(),curValue = "66",state = "66"},
+                }
+                });
+                FunctionList.List.Functions.Add(new Function
+                {
+                    name = "娴嬭瘯-绌鸿皟绉戞妧绯荤粺瀛愭帶-3",
+                    spk = SPK.AcstSub,
+                    sid = "0000003",
+                    attributes = new List<FunctionAttributes>()
+                {
+                    new FunctionAttributes(){ key = FunctionAttributeKey.OnOff ,curValue = "on",state = "on" },
+                    new FunctionAttributes(){ key = AcstSub_AttrEnum.set_temp.ToString(),curValue = "26",state = "26"},
+                    new FunctionAttributes(){ key = AcstSub_AttrEnum.room_temp.ToString(),curValue = "26",state = "26"},
+                    new FunctionAttributes(){ key = AcstSub_AttrEnum.room_humidity.ToString(),curValue = "66",state = "66"},
+                }
+                });
+                FunctionList.List.Functions.Add(new Function
+                {
+                    name = "娴嬭瘯-绌鸿皟绉戞妧绯荤粺瀛愭帶-4",
+                    spk = SPK.AcstSub,
+                    sid = "0000004",
+                    attributes = new List<FunctionAttributes>()
+                {
+                    new FunctionAttributes(){ key = FunctionAttributeKey.OnOff ,curValue = "on",state = "on" },
+                    new FunctionAttributes(){ key = AcstSub_AttrEnum.set_temp.ToString(),curValue = "26",state = "26"},
+                    new FunctionAttributes(){ key = AcstSub_AttrEnum.room_temp.ToString(),curValue = "26",state = "26"},
+                    new FunctionAttributes(){ key = AcstSub_AttrEnum.room_humidity.ToString(),curValue = "66",state = "66"},
+                }
+                });
+                FunctionList.List.Functions.Add(new Function
+                {
+                    name = "娴嬭瘯-绌鸿皟绉戞妧绯荤粺瀛愭帶-5",
+                    spk = SPK.AcstSub,
+                    sid = "0000005",
+                    attributes = new List<FunctionAttributes>()
+                {
+                    new FunctionAttributes(){ key = FunctionAttributeKey.OnOff ,curValue = "on",state = "on" },
+                    new FunctionAttributes(){ key = AcstSub_AttrEnum.set_temp.ToString(),curValue = "26",state = "26"},
+                    new FunctionAttributes(){ key = AcstSub_AttrEnum.room_temp.ToString(),curValue = "26",state = "26"},
+                    new FunctionAttributes(){ key = AcstSub_AttrEnum.room_humidity.ToString(),curValue = "66",state = "66"},
+                }
+                });
+
+
+
+
+                //FunctionList.List.Functions.Add(new Function
+                //{
+                //    name = "娴嬭瘯姊﹀够绐楀笜",
+                //    spk = SPK.CurtainDream,
+                //    sid = "1234577",
+                //    attributes = new List<FunctionAttributes> {
+                //        new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
+                //        new FunctionAttributes(){ key = "percent",curValue= "100",state = "100" },
+                //        new FunctionAttributes(){ key = "angle",curValue= "0",state = "0" },
+                //    }
+                //});
+
+                //FunctionList.List.Functions.Add(new Function
+                //{
+                //    name = "娴嬭瘯姣背娉紶鎰熷櫒",
+                //    spk = SPK.SenesorMegahealth,
+                //    attributes = new List<FunctionAttributes>
+                //    {
+                //        new FunctionAttributes(){ key = "enable",curValue = "true",state = "true" },
+                //        new FunctionAttributes(){ key = "people_num",curValue = "0",state = "0" },
+                //        new FunctionAttributes(){ key = "people_id",curValue = "1",state = "1" },
+                //        new FunctionAttributes(){ key = "target_status",curValue = "0",state = "0" },//0绌猴紝1璧帮紝2璺戯紝3鍧愶紝4璺屽�掞紝5绔�
+                //        new FunctionAttributes(){ key = "people_status",curValue = "false",state = "false" },//鐘舵��  鏈変汉鏃犱汉
+                //        //new FunctionAttributes(){ key = "",curValue = "",state = "" },
+                //        //new FunctionAttributes(){ key = "",curValue = "",state = "" },
+                //        //new FunctionAttributes(){ key = "",curValue = "",state = "" },
+                //    }
+                //});
+                FunctionList.List.Functions.Add(new Function
+                {
+                    name = "娴嬭瘯娓╂帶鍣�",
+                    spk = SPK.HvacCac,
+                    attributes = new List<FunctionAttributes>
+                {
+                    new FunctionAttributes(){ key = "on_off",curValue = "on",state = "on" },
+                    new FunctionAttributes(){ key = "cac_valve",curValue = "on",state = "on" },//姣涚粏闃�
+                    new FunctionAttributes(){ key = "fh_valve",curValue = "on",state = "on" },//鍦版殩闃�
+                    new FunctionAttributes(){ key = "mode",curValue = "cool",state = "cool", value = new List<string>{ "cool","heat"} },
+                    new FunctionAttributes(){ key = "set_temp",curValue = "20",state = "20",min = 16,max = 30 },
+                    new FunctionAttributes(){ key = "room_temp",curValue = "20",state = "20" },
+                    new FunctionAttributes(){ key = "dew_point_temp",curValue = "20",state = "20" },//闇茬偣娓╁害
+                    new FunctionAttributes(){ key = "surface_temp",curValue = "20",state = "20" },//琛ㄩ潰娓╁害
+                    new FunctionAttributes(){ key = "energy_saving",curValue = "true",state = "true" },//鑺傝兘
+                    new FunctionAttributes(){ key = "room_humidity",curValue = "66",state = "66" },
+                    //new FunctionAttributes(){ key = "",curValue = "",state = "" },
+                }
+                });
+
+                //FunctionList.List.Functions.Add(new Function
+                //{
+                //    name = "闂ㄩ攣",
+                //    spk = SPK.DoorLock,
+                //    sid = "12345",
+                //    attributes = new List<FunctionAttributes> {
+                //        new FunctionAttributes(){ key = "door_status",curValue= "open",state = "open" },
+                //        new FunctionAttributes(){ key = "normal_open",curValue= "true",state = "true" },
+                //        new FunctionAttributes(){ key = "normal_open_countdown",curValue= "10",state = "10" },
+                //        new FunctionAttributes(){ key = "local_id",curValue= "10",state = "10" },
+                //        new FunctionAttributes(){ key = "door_volume",curValue= "10",state = "10" },
+                //        new FunctionAttributes(){ key = "door_volume_step",curValue= "up",state = "up" },
+                //        new FunctionAttributes(){ key = "battery_value",curValue= "100",state = "100" },
+                //        new FunctionAttributes(){ key = "battery_percentage",curValue= "100",state = "100" },
+                //        new FunctionAttributes(){ key = "battery_state",curValue= "high",state = "high" },
+                //    }
+                //});
+                //FunctionList.List.Functions.Add(new Function
+                //{
+                //    name = "闂ㄩ攣1",
+                //    spk = SPK.DoorLock,
+                //    sid = "123",
+                //    attributes = new List<FunctionAttributes> {
+                //        new FunctionAttributes(){ key = "door_status",curValue= "open",state = "open" },
+                //        new FunctionAttributes(){ key = "normal_open",curValue= "true",state = "true" },
+                //        new FunctionAttributes(){ key = "normal_open_countdown",curValue= "10",state = "10" },
+                //        new FunctionAttributes(){ key = "local_id",curValue= "10",state = "10" },
+                //        new FunctionAttributes(){ key = "door_volume",curValue= "10",state = "10" },
+                //        new FunctionAttributes(){ key = "door_volume_step",curValue= "up",state = "up" },
+                //        new FunctionAttributes(){ key = "battery_value",curValue= "100",state = "100" },
+                //        new FunctionAttributes(){ key = "battery_percentage",curValue= "100",state = "100" },
+                //        new FunctionAttributes(){ key = "battery_state",curValue= "high",state = "high" },
+                //    }
+                //});
+
+                //FunctionList.List.Functions.Add(new Function()
+                //{
+                //    spk = SPK.PanelSocket,
+                //    name = "闈㈡澘鎻掑骇",
+                //    attributes = new List<FunctionAttributes>
+                //    {
+                //        new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
+                //        new FunctionAttributes(){ key = "on_off_usb",curValue= "on",state = "on" },
+                //        new FunctionAttributes(){ key = "active_power",curValue= "220",state = "220" },
+                //        new FunctionAttributes(){ key = "voltage",curValue= "5",state = "5" },
+                //        new FunctionAttributes(){ key = "current",curValue= "110",state = "110" },
+                //        new FunctionAttributes(){ key = "total_electricity",curValue= "123.33",state = "123.33" },
+                //    }
+                //});
+
+                //FunctionList.List.Functions.Add(new Function()
+                //{
+                //    spk = SPK.SensorDryContact,
+                //    name = "骞叉帴鐐�",
+                //    attributes = new List<FunctionAttributes>()
+                //    {
+                //        new FunctionAttributes(){ key = "status",curValue= "on",state = "on" },
+                //    },
+                //});
+
+                //FunctionList.List.Functions.Add(new Function()
+                //{
+                //    spk = SPK.SensorPm25,
+                //    name = "娴嬭瘯Pm2.5",
+                //    attributes = new List<FunctionAttributes>()
+                //    {
+                //        new FunctionAttributes(){ key = "pm25",curValue= "70",state = "70" },
+                //    },
+                //    attrKeyConfigs = new List<AttrKeyConfig>()
+                //    {
+                //        new AttrKeyConfig (){
+                //            key = "pm2.5",
+                //            type = "interval" ,
+                //            unit = "ug/m虏",
+                //            configs = new List<AttrKeyInfo>(){
+                //               new AttrKeyInfo(){ start = "0",end = "75",color = "0xFFADE764", desc = "鑹ソ"},
+                //               new AttrKeyInfo(){ start = "76",end = "150",color = "0xFFFFD154",desc = "杞�/涓害姹℃煋"},
+                //               new AttrKeyInfo(){ start = "151",end = "500",color = "0xFFFF9D54",desc = "閲嶅害/涓ラ噸姹℃煋"},
+                //            }
+                //        }
+                //    },
+                //});
+
+                //FunctionList.List.Functions.Add(new Function()
+                //{
+                //    spk = SPK.SensorHelp,
+                //    name = "娴嬭瘯绱ф�ユ眰鍔╂寜閽�",
+                //    attributes = new List<FunctionAttributes>()
+                //    {
+                //        new FunctionAttributes(){ key = "status",curValue= "on",state = "on" },
+                //        new FunctionAttributes(){ key = "alarm_status",curValue= "alarm",state = "alarm" },
+                //        new FunctionAttributes(){ key = "battery_value",curValue= "200",state = "200" },
+                //        new FunctionAttributes(){ key = "battery_percentage",curValue= "10",state = "10" },
+                //        new FunctionAttributes(){ key = "battery_state",curValue= "low",state = "low" },
+                //    },
+                //});
+
+                //FunctionList.List.Functions.Add(new Function()
+                //{
+                //    spk = SPK.AirSwitch,
+                //    name = "鏅鸿兘绌哄紑",
+                //    attributes = new List<FunctionAttributes>()
+                //    {
+                //        new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
+                //    },
+                //});
+
+                //FunctionList.List.Functions.Add(new Function()
+                //{
+                //    spk = SPK.AirFreshStandard,
+                //    name = "娴嬭瘯鏂伴",
+                //    attributes = new List<FunctionAttributes>()
+                //    {
+                //        new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
+                //        new FunctionAttributes(){ key = "fan",curValue= "low",state = "low" ,value = new List<string>(){ "high", "medium", "low" } },
+                //    },
+                //});
+
+
+                //FunctionList.List.Functions.Add(new Function()
+                //{
+                //    spk = SPK.HvacAirFreshJinmao,
+                //    name = "娴嬭瘯閲戣寕鏂伴",
+                //    attributes = new List<FunctionAttributes>()
+                //    {
+                //        new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
+                //        new FunctionAttributes(){ key = "mode",curValue= "humidification",state = "humidification" ,value = new List<string>(){ "humidification", "fan" } },
+                //        new FunctionAttributes(){ key = "energy",curValue= "true",state = "true" ,value = new List<string>(){ "true", "false" } },
+                //        new FunctionAttributes(){ key = "fan",curValue= "level_1",state = "level_1" ,value = new List<string>(){ "level_1", "level_2", "level_3","auto" } },
+                //        new FunctionAttributes(){ key = "humidity",curValue= "0",state = "0" ,value = new List<string>(){  },min = 0,max = 100 },
+                //        new FunctionAttributes(){ key = "indoor_temp",curValue= "26",state = "26" ,value = new List<string>(){  },min = 0,max = 100 },
+                //        new FunctionAttributes(){ key = "indoor_humidity",curValue= "0",state = "0" ,value = new List<string>(){  },min = 0,max = 100 },
+                //        new FunctionAttributes(){ key = "filter_remain",curValue= "0",state = "0" ,value = new List<string>(){  },min = 0,max = 100 },
+                //        new FunctionAttributes(){ key = "filter_timeout",curValue= "false",state = "false" ,value = new List<string>(){ "true", "false"  }},
+                //    },
+                //});
+
+                //FunctionList.List.Functions.Add(new Function()
+                //{
+                //    spk = SPK.SensorGas,
+                //    name = "鐕冩皵浼犳劅鍣�",
+                //    attributes = new List<FunctionAttributes>()
+                //    {
+                //        new FunctionAttributes(){ key = "enable",curValue= "true",state = "true" ,value = new List<string>(){ "true", "false" } },
+                //        new FunctionAttributes(){ key = "status",curValue= "normal",state = "normal" ,value = new List<string>(){ "alarm", "normal" } },
+                //    },
+                //});
+
+                //FunctionList.List.Functions.Add(new Function() { spk = SPK.PjtIr, name = "娴嬭瘯鎶曞奖浠�",
+                //                            attributes = new List<FunctionAttributes>() {
+                //                                new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
+                //                                new FunctionAttributes(){ key = "computer",value = new List<string>(){"鐢佃剳" } },
+                //                                new FunctionAttributes(){ key = "video",value = new List<string>(){"瑙嗛" } },
+                //                                new FunctionAttributes(){ key = "source",value = new List<string>(){"淇″彿婧�" } },
+                //                                new FunctionAttributes(){ key = "zoom+",value = new List<string>(){"鍙樼劍+" } },
+                //                                new FunctionAttributes(){ key = "zoom-",value = new List<string>(){"鍙樼劍-" } },
+                //                                new FunctionAttributes(){ key = "page+",value = new List<string>(){"鐢婚潰+" } },
+                //                                new FunctionAttributes(){ key = "page-",value = new List<string>(){"鐢婚潰-" } },
+                //                                new FunctionAttributes(){ key = "menu",value = new List<string>(){"鑿滃崟" } },
+                //                                new FunctionAttributes(){ key = "ok",value = new List<string>(){"纭" } },
+                //                                new FunctionAttributes(){ key = "up",value = new List<string>(){"涓�" } },
+                //                                new FunctionAttributes(){ key = "left",value = new List<string>(){"宸�" } },
+                //                                new FunctionAttributes(){ key = "right",value = new List<string>(){"鍙�" } },
+                //                                new FunctionAttributes(){ key = "down",value = new List<string>(){"涓�" } },
+                //                                new FunctionAttributes(){ key = "exit",value = new List<string>(){"閫�鍑�" } },
+                //                                new FunctionAttributes(){ key = "volume+",value = new List<string>(){"闊抽噺+" } },
+                //                                new FunctionAttributes(){ key = "volume-",value = new List<string>(){"闊抽噺-" } },
+                //                                new FunctionAttributes(){ key = "mute",value = new List<string>(){"闈欓煶" } },
+                //                                new FunctionAttributes(){ key = "auto",value = new List<string>(){"鑷姩" } },
+                //                                new FunctionAttributes(){ key = "pause",value = new List<string>(){"鏆傚仠" } },
+                //                            }
+                //});
+
+                //FunctionList.List.Functions.Add(new Function()
+                //{
+                //    spk = SPK.StbIr,
+                //    name = "娴嬭瘯鏈洪《鐩�",
+                //    attributes = new List<FunctionAttributes>() {
+                //                                new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
+                //                                new FunctionAttributes(){ key = "computer",value = new List<string>(){"鐢佃剳" } },
+                //                                new FunctionAttributes(){ key = "video",value = new List<string>(){"瑙嗛" } },
+                //                                new FunctionAttributes(){ key = "source",value = new List<string>(){"淇″彿婧�" } },
+                //                                new FunctionAttributes(){ key = "zoom+",value = new List<string>(){"鍙樼劍+" } },
+                //                                new FunctionAttributes(){ key = "zoom-",value = new List<string>(){"鍙樼劍-" } },
+                //                                new FunctionAttributes(){ key = "page+",value = new List<string>(){"鐢婚潰+" } },
+                //                                new FunctionAttributes(){ key = "page-",value = new List<string>(){"鐢婚潰-" } },
+                //                                new FunctionAttributes(){ key = "menu",value = new List<string>(){"鑿滃崟" } },
+                //                                new FunctionAttributes(){ key = "ok",value = new List<string>(){"纭" } },
+                //                                new FunctionAttributes(){ key = "up",value = new List<string>(){"涓�" } },
+                //                                new FunctionAttributes(){ key = "left",value = new List<string>(){"宸�" } },
+                //                                new FunctionAttributes(){ key = "right",value = new List<string>(){"鍙�" } },
+                //                                new FunctionAttributes(){ key = "down",value = new List<string>(){"涓�" } },
+                //                                new FunctionAttributes(){ key = "exit",value = new List<string>(){"閫�鍑�" } },
+                //                                new FunctionAttributes(){ key = "volume+",value = new List<string>(){"闊抽噺+" } },
+                //                                new FunctionAttributes(){ key = "volume-",value = new List<string>(){"闊抽噺-" } },
+                //                                new FunctionAttributes(){ key = "mute",value = new List<string>(){"闈欓煶" } },
+                //                                new FunctionAttributes(){ key = "auto",value = new List<string>(){"鑷姩" } },
+                //                                new FunctionAttributes(){ key = "pause",value = new List<string>(){"鏆傚仠" } },
+                //                            }
+                //});
+
+                //FunctionList.List.Functions.Add(new Function()
+                //{
+                //    spk = SPK.TvIr,
+                //    name = "娴嬭瘯鐢佃",
+                //    attributes = new List<FunctionAttributes>() {
+                //                                new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
+                //                                new FunctionAttributes(){ key = "computer",value = new List<string>(){"鐢佃剳" } },
+                //                                new FunctionAttributes(){ key = "video",value = new List<string>(){"瑙嗛" } },
+                //                                new FunctionAttributes(){ key = "source",value = new List<string>(){"淇″彿婧�" } },
+                //                                new FunctionAttributes(){ key = "zoom+",value = new List<string>(){"鍙樼劍+" } },
+                //                                new FunctionAttributes(){ key = "zoom-",value = new List<string>(){"鍙樼劍-" } },
+                //                                new FunctionAttributes(){ key = "page+",value = new List<string>(){"鐢婚潰+" } },
+                //                                new FunctionAttributes(){ key = "page-",value = new List<string>(){"鐢婚潰-" } },
+                //                                new FunctionAttributes(){ key = "menu",value = new List<string>(){"鑿滃崟" } },
+                //                                new FunctionAttributes(){ key = "ok",value = new List<string>(){"纭" } },
+                //                                new FunctionAttributes(){ key = "up",value = new List<string>(){"涓�" } },
+                //                                new FunctionAttributes(){ key = "left",value = new List<string>(){"宸�" } },
+                //                                new FunctionAttributes(){ key = "right",value = new List<string>(){"鍙�" } },
+                //                                new FunctionAttributes(){ key = "down",value = new List<string>(){"涓�" } },
+                //                                new FunctionAttributes(){ key = "exit",value = new List<string>(){"閫�鍑�" } },
+                //                                new FunctionAttributes(){ key = "volume+",value = new List<string>(){"闊抽噺+" } },
+                //                                new FunctionAttributes(){ key = "volume-",value = new List<string>(){"闊抽噺-" } },
+                //                                new FunctionAttributes(){ key = "mute",value = new List<string>(){"闈欓煶" } },
+                //                                new FunctionAttributes(){ key = "auto",value = new List<string>(){"鑷姩" } },
+                //                                new FunctionAttributes(){ key = "pause",value = new List<string>(){"鏆傚仠" } },
+                //                            }
+                //});
+#endif
+
+
+                #endregion
+                #region 鍦烘櫙
                 var scene1 = new Scene()
                 {
                     sid = "scene1",
diff --git a/HDL_ON/UI/UI2/1-HomePage/HomePage.cs b/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
index 7c631aa..14aedd3 100644
--- a/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
+++ b/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
@@ -193,36 +193,6 @@
 #if DEBUG
                 btnResidenceName.MouseUpEventHandler = (sender, e) =>
                 {
-                        var imageUrl = ImageUtlis.Current.GetSceneDefaultIconList();
-
-                    if (imageUrl != null)
-                    {
-
-                    }
-                    //if (UserInfo.Current.VerOpenDoorPw || string.IsNullOrEmpty(UserInfo.Current.doorPasswordString))
-                    //{
-                    //    var page = new DoorLockUnlockPage(new Function());
-                    //    MainPage.BasePageView.AddChidren(page);
-                    //    page.LoadView();
-                    //    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-                    //}
-                    //else
-                    //{
-                    //    Control.Ins.OneKeyUnlocking(new Function(), UserInfo.Current.doorPasswordString);
-                    //}
-
-                //ddd++;
-                //    Function function_online = FunctionList.List.GetLightList().Find((obj) => obj.sid == "0001017DB92D2602020100010101");
-                //    if(ddd%2 == 0)
-                //    {
-                //        function_online.online = true;
-                //    }
-                //    else
-                //    {
-                //        function_online.online = false;
-                //    }
-                //    HomePage.LoadEvent_RefreshDevcieOnline(function_online);
-                    
 
                 };
 #endif
@@ -583,285 +553,6 @@
             }
 
 
-#if DEBUG
-            FunctionList.List.Functions.Add(new Function
-            {
-                name = "娴嬭瘯姊﹀够绐楀笜",
-                spk = SPK.CurtainDream,
-                sid = "1234577",
-                attributes = new List<FunctionAttributes> {
-                    new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
-                    new FunctionAttributes(){ key = "percent",curValue= "100",state = "100" },
-                    new FunctionAttributes(){ key = "angle",curValue= "0",state = "0" },
-                }
-            });
-
-            //FunctionList.List.Functions.Add(new Function
-            //{
-            //    name = "娴嬭瘯姣背娉紶鎰熷櫒",
-            //    spk = SPK.SenesorMegahealth,
-            //    attributes = new List<FunctionAttributes>
-            //    {
-            //        new FunctionAttributes(){ key = "enable",curValue = "true",state = "true" },
-            //        new FunctionAttributes(){ key = "people_num",curValue = "0",state = "0" },
-            //        new FunctionAttributes(){ key = "people_id",curValue = "1",state = "1" },
-            //        new FunctionAttributes(){ key = "target_status",curValue = "0",state = "0" },//0绌猴紝1璧帮紝2璺戯紝3鍧愶紝4璺屽�掞紝5绔�
-            //        new FunctionAttributes(){ key = "people_status",curValue = "false",state = "false" },//鐘舵��  鏈変汉鏃犱汉
-            //        //new FunctionAttributes(){ key = "",curValue = "",state = "" },
-            //        //new FunctionAttributes(){ key = "",curValue = "",state = "" },
-            //        //new FunctionAttributes(){ key = "",curValue = "",state = "" },
-            //    }
-            //});
-            FunctionList.List.Functions.Add(new Function
-            {
-                name = "娴嬭瘯娓╂帶鍣�",
-                spk = SPK.HvacCac,
-                attributes = new List<FunctionAttributes>
-                {
-                    new FunctionAttributes(){ key = "on_off",curValue = "on",state = "on" },
-                    new FunctionAttributes(){ key = "cac_valve",curValue = "on",state = "on" },//姣涚粏闃�
-                    new FunctionAttributes(){ key = "fh_valve",curValue = "on",state = "on" },//鍦版殩闃�
-                    new FunctionAttributes(){ key = "mode",curValue = "cool",state = "cool", value = new List<string>{ "cool","heat"} },
-                    new FunctionAttributes(){ key = "set_temp",curValue = "20",state = "20",min = 16,max = 30 },
-                    new FunctionAttributes(){ key = "room_temp",curValue = "20",state = "20" },
-                    new FunctionAttributes(){ key = "dew_point_temp",curValue = "20",state = "20" },//闇茬偣娓╁害
-                    new FunctionAttributes(){ key = "surface_temp",curValue = "20",state = "20" },//琛ㄩ潰娓╁害
-                    new FunctionAttributes(){ key = "energy_saving",curValue = "true",state = "true" },//鑺傝兘
-                    new FunctionAttributes(){ key = "room_humidity",curValue = "66",state = "66" },
-                    //new FunctionAttributes(){ key = "",curValue = "",state = "" },
-                }
-            });
-
-            //FunctionList.List.Functions.Add(new Function
-            //{
-            //    name = "闂ㄩ攣",
-            //    spk = SPK.DoorLock,
-            //    sid = "12345",
-            //    attributes = new List<FunctionAttributes> {
-            //        new FunctionAttributes(){ key = "door_status",curValue= "open",state = "open" },
-            //        new FunctionAttributes(){ key = "normal_open",curValue= "true",state = "true" },
-            //        new FunctionAttributes(){ key = "normal_open_countdown",curValue= "10",state = "10" },
-            //        new FunctionAttributes(){ key = "local_id",curValue= "10",state = "10" },
-            //        new FunctionAttributes(){ key = "door_volume",curValue= "10",state = "10" },
-            //        new FunctionAttributes(){ key = "door_volume_step",curValue= "up",state = "up" },
-            //        new FunctionAttributes(){ key = "battery_value",curValue= "100",state = "100" },
-            //        new FunctionAttributes(){ key = "battery_percentage",curValue= "100",state = "100" },
-            //        new FunctionAttributes(){ key = "battery_state",curValue= "high",state = "high" },
-            //    }
-            //});
-            //FunctionList.List.Functions.Add(new Function
-            //{
-            //    name = "闂ㄩ攣1",
-            //    spk = SPK.DoorLock,
-            //    sid = "123",
-            //    attributes = new List<FunctionAttributes> {
-            //        new FunctionAttributes(){ key = "door_status",curValue= "open",state = "open" },
-            //        new FunctionAttributes(){ key = "normal_open",curValue= "true",state = "true" },
-            //        new FunctionAttributes(){ key = "normal_open_countdown",curValue= "10",state = "10" },
-            //        new FunctionAttributes(){ key = "local_id",curValue= "10",state = "10" },
-            //        new FunctionAttributes(){ key = "door_volume",curValue= "10",state = "10" },
-            //        new FunctionAttributes(){ key = "door_volume_step",curValue= "up",state = "up" },
-            //        new FunctionAttributes(){ key = "battery_value",curValue= "100",state = "100" },
-            //        new FunctionAttributes(){ key = "battery_percentage",curValue= "100",state = "100" },
-            //        new FunctionAttributes(){ key = "battery_state",curValue= "high",state = "high" },
-            //    }
-            //});
-
-            //FunctionList.List.Functions.Add(new Function()
-            //{
-            //    spk = SPK.PanelSocket,
-            //    name = "闈㈡澘鎻掑骇",
-            //    attributes = new List<FunctionAttributes>
-            //    {
-            //        new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
-            //        new FunctionAttributes(){ key = "on_off_usb",curValue= "on",state = "on" },
-            //        new FunctionAttributes(){ key = "active_power",curValue= "220",state = "220" },
-            //        new FunctionAttributes(){ key = "voltage",curValue= "5",state = "5" },
-            //        new FunctionAttributes(){ key = "current",curValue= "110",state = "110" },
-            //        new FunctionAttributes(){ key = "total_electricity",curValue= "123.33",state = "123.33" },
-            //    }
-            //});
-
-            //FunctionList.List.Functions.Add(new Function()
-            //{
-            //    spk = SPK.SensorDryContact,
-            //    name = "骞叉帴鐐�",
-            //    attributes = new List<FunctionAttributes>()
-            //    {
-            //        new FunctionAttributes(){ key = "status",curValue= "on",state = "on" },
-            //    },
-            //});
-
-            //FunctionList.List.Functions.Add(new Function()
-            //{
-            //    spk = SPK.SensorPm25,
-            //    name = "娴嬭瘯Pm2.5",
-            //    attributes = new List<FunctionAttributes>()
-            //    {
-            //        new FunctionAttributes(){ key = "pm25",curValue= "70",state = "70" },
-            //    },
-            //    attrKeyConfigs = new List<AttrKeyConfig>()
-            //    {
-            //        new AttrKeyConfig (){
-            //            key = "pm2.5",
-            //            type = "interval" ,
-            //            unit = "ug/m虏",
-            //            configs = new List<AttrKeyInfo>(){
-            //               new AttrKeyInfo(){ start = "0",end = "75",color = "0xFFADE764", desc = "鑹ソ"},
-            //               new AttrKeyInfo(){ start = "76",end = "150",color = "0xFFFFD154",desc = "杞�/涓害姹℃煋"},
-            //               new AttrKeyInfo(){ start = "151",end = "500",color = "0xFFFF9D54",desc = "閲嶅害/涓ラ噸姹℃煋"},
-            //            }
-            //        }
-            //    },
-            //});
-
-            //FunctionList.List.Functions.Add(new Function()
-            //{
-            //    spk = SPK.SensorHelp,
-            //    name = "娴嬭瘯绱ф�ユ眰鍔╂寜閽�",
-            //    attributes = new List<FunctionAttributes>()
-            //    {
-            //        new FunctionAttributes(){ key = "status",curValue= "on",state = "on" },
-            //        new FunctionAttributes(){ key = "alarm_status",curValue= "alarm",state = "alarm" },
-            //        new FunctionAttributes(){ key = "battery_value",curValue= "200",state = "200" },
-            //        new FunctionAttributes(){ key = "battery_percentage",curValue= "10",state = "10" },
-            //        new FunctionAttributes(){ key = "battery_state",curValue= "low",state = "low" },
-            //    },
-            //});
-
-            //FunctionList.List.Functions.Add(new Function()
-            //{
-            //    spk = SPK.AirSwitch,
-            //    name = "鏅鸿兘绌哄紑",
-            //    attributes = new List<FunctionAttributes>()
-            //    {
-            //        new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
-            //    },
-            //});
-
-            //FunctionList.List.Functions.Add(new Function()
-            //{
-            //    spk = SPK.AirFreshStandard,
-            //    name = "娴嬭瘯鏂伴",
-            //    attributes = new List<FunctionAttributes>()
-            //    {
-            //        new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
-            //        new FunctionAttributes(){ key = "fan",curValue= "low",state = "low" ,value = new List<string>(){ "high", "medium", "low" } },
-            //    },
-            //});
-
-
-            //FunctionList.List.Functions.Add(new Function()
-            //{
-            //    spk = SPK.HvacAirFreshJinmao,
-            //    name = "娴嬭瘯閲戣寕鏂伴",
-            //    attributes = new List<FunctionAttributes>()
-            //    {
-            //        new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
-            //        new FunctionAttributes(){ key = "mode",curValue= "humidification",state = "humidification" ,value = new List<string>(){ "humidification", "fan" } },
-            //        new FunctionAttributes(){ key = "energy",curValue= "true",state = "true" ,value = new List<string>(){ "true", "false" } },
-            //        new FunctionAttributes(){ key = "fan",curValue= "level_1",state = "level_1" ,value = new List<string>(){ "level_1", "level_2", "level_3","auto" } },
-            //        new FunctionAttributes(){ key = "humidity",curValue= "0",state = "0" ,value = new List<string>(){  },min = 0,max = 100 },
-            //        new FunctionAttributes(){ key = "indoor_temp",curValue= "26",state = "26" ,value = new List<string>(){  },min = 0,max = 100 },
-            //        new FunctionAttributes(){ key = "indoor_humidity",curValue= "0",state = "0" ,value = new List<string>(){  },min = 0,max = 100 },
-            //        new FunctionAttributes(){ key = "filter_remain",curValue= "0",state = "0" ,value = new List<string>(){  },min = 0,max = 100 },
-            //        new FunctionAttributes(){ key = "filter_timeout",curValue= "false",state = "false" ,value = new List<string>(){ "true", "false"  }},
-            //    },
-            //});
-
-            //FunctionList.List.Functions.Add(new Function()
-            //{
-            //    spk = SPK.SensorGas,
-            //    name = "鐕冩皵浼犳劅鍣�",
-            //    attributes = new List<FunctionAttributes>()
-            //    {
-            //        new FunctionAttributes(){ key = "enable",curValue= "true",state = "true" ,value = new List<string>(){ "true", "false" } },
-            //        new FunctionAttributes(){ key = "status",curValue= "normal",state = "normal" ,value = new List<string>(){ "alarm", "normal" } },
-            //    },
-            //});
-
-            //FunctionList.List.Functions.Add(new Function() { spk = SPK.PjtIr, name = "娴嬭瘯鎶曞奖浠�",
-            //                            attributes = new List<FunctionAttributes>() {
-            //                                new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
-            //                                new FunctionAttributes(){ key = "computer",value = new List<string>(){"鐢佃剳" } },
-            //                                new FunctionAttributes(){ key = "video",value = new List<string>(){"瑙嗛" } },
-            //                                new FunctionAttributes(){ key = "source",value = new List<string>(){"淇″彿婧�" } },
-            //                                new FunctionAttributes(){ key = "zoom+",value = new List<string>(){"鍙樼劍+" } },
-            //                                new FunctionAttributes(){ key = "zoom-",value = new List<string>(){"鍙樼劍-" } },
-            //                                new FunctionAttributes(){ key = "page+",value = new List<string>(){"鐢婚潰+" } },
-            //                                new FunctionAttributes(){ key = "page-",value = new List<string>(){"鐢婚潰-" } },
-            //                                new FunctionAttributes(){ key = "menu",value = new List<string>(){"鑿滃崟" } },
-            //                                new FunctionAttributes(){ key = "ok",value = new List<string>(){"纭" } },
-            //                                new FunctionAttributes(){ key = "up",value = new List<string>(){"涓�" } },
-            //                                new FunctionAttributes(){ key = "left",value = new List<string>(){"宸�" } },
-            //                                new FunctionAttributes(){ key = "right",value = new List<string>(){"鍙�" } },
-            //                                new FunctionAttributes(){ key = "down",value = new List<string>(){"涓�" } },
-            //                                new FunctionAttributes(){ key = "exit",value = new List<string>(){"閫�鍑�" } },
-            //                                new FunctionAttributes(){ key = "volume+",value = new List<string>(){"闊抽噺+" } },
-            //                                new FunctionAttributes(){ key = "volume-",value = new List<string>(){"闊抽噺-" } },
-            //                                new FunctionAttributes(){ key = "mute",value = new List<string>(){"闈欓煶" } },
-            //                                new FunctionAttributes(){ key = "auto",value = new List<string>(){"鑷姩" } },
-            //                                new FunctionAttributes(){ key = "pause",value = new List<string>(){"鏆傚仠" } },
-            //                            }
-            //});
-
-            //FunctionList.List.Functions.Add(new Function()
-            //{
-            //    spk = SPK.StbIr,
-            //    name = "娴嬭瘯鏈洪《鐩�",
-            //    attributes = new List<FunctionAttributes>() {
-            //                                new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
-            //                                new FunctionAttributes(){ key = "computer",value = new List<string>(){"鐢佃剳" } },
-            //                                new FunctionAttributes(){ key = "video",value = new List<string>(){"瑙嗛" } },
-            //                                new FunctionAttributes(){ key = "source",value = new List<string>(){"淇″彿婧�" } },
-            //                                new FunctionAttributes(){ key = "zoom+",value = new List<string>(){"鍙樼劍+" } },
-            //                                new FunctionAttributes(){ key = "zoom-",value = new List<string>(){"鍙樼劍-" } },
-            //                                new FunctionAttributes(){ key = "page+",value = new List<string>(){"鐢婚潰+" } },
-            //                                new FunctionAttributes(){ key = "page-",value = new List<string>(){"鐢婚潰-" } },
-            //                                new FunctionAttributes(){ key = "menu",value = new List<string>(){"鑿滃崟" } },
-            //                                new FunctionAttributes(){ key = "ok",value = new List<string>(){"纭" } },
-            //                                new FunctionAttributes(){ key = "up",value = new List<string>(){"涓�" } },
-            //                                new FunctionAttributes(){ key = "left",value = new List<string>(){"宸�" } },
-            //                                new FunctionAttributes(){ key = "right",value = new List<string>(){"鍙�" } },
-            //                                new FunctionAttributes(){ key = "down",value = new List<string>(){"涓�" } },
-            //                                new FunctionAttributes(){ key = "exit",value = new List<string>(){"閫�鍑�" } },
-            //                                new FunctionAttributes(){ key = "volume+",value = new List<string>(){"闊抽噺+" } },
-            //                                new FunctionAttributes(){ key = "volume-",value = new List<string>(){"闊抽噺-" } },
-            //                                new FunctionAttributes(){ key = "mute",value = new List<string>(){"闈欓煶" } },
-            //                                new FunctionAttributes(){ key = "auto",value = new List<string>(){"鑷姩" } },
-            //                                new FunctionAttributes(){ key = "pause",value = new List<string>(){"鏆傚仠" } },
-            //                            }
-            //});
-
-            //FunctionList.List.Functions.Add(new Function()
-            //{
-            //    spk = SPK.TvIr,
-            //    name = "娴嬭瘯鐢佃",
-            //    attributes = new List<FunctionAttributes>() {
-            //                                new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
-            //                                new FunctionAttributes(){ key = "computer",value = new List<string>(){"鐢佃剳" } },
-            //                                new FunctionAttributes(){ key = "video",value = new List<string>(){"瑙嗛" } },
-            //                                new FunctionAttributes(){ key = "source",value = new List<string>(){"淇″彿婧�" } },
-            //                                new FunctionAttributes(){ key = "zoom+",value = new List<string>(){"鍙樼劍+" } },
-            //                                new FunctionAttributes(){ key = "zoom-",value = new List<string>(){"鍙樼劍-" } },
-            //                                new FunctionAttributes(){ key = "page+",value = new List<string>(){"鐢婚潰+" } },
-            //                                new FunctionAttributes(){ key = "page-",value = new List<string>(){"鐢婚潰-" } },
-            //                                new FunctionAttributes(){ key = "menu",value = new List<string>(){"鑿滃崟" } },
-            //                                new FunctionAttributes(){ key = "ok",value = new List<string>(){"纭" } },
-            //                                new FunctionAttributes(){ key = "up",value = new List<string>(){"涓�" } },
-            //                                new FunctionAttributes(){ key = "left",value = new List<string>(){"宸�" } },
-            //                                new FunctionAttributes(){ key = "right",value = new List<string>(){"鍙�" } },
-            //                                new FunctionAttributes(){ key = "down",value = new List<string>(){"涓�" } },
-            //                                new FunctionAttributes(){ key = "exit",value = new List<string>(){"閫�鍑�" } },
-            //                                new FunctionAttributes(){ key = "volume+",value = new List<string>(){"闊抽噺+" } },
-            //                                new FunctionAttributes(){ key = "volume-",value = new List<string>(){"闊抽噺-" } },
-            //                                new FunctionAttributes(){ key = "mute",value = new List<string>(){"闈欓煶" } },
-            //                                new FunctionAttributes(){ key = "auto",value = new List<string>(){"鑷姩" } },
-            //                                new FunctionAttributes(){ key = "pause",value = new List<string>(){"鏆傚仠" } },
-            //                            }
-            //});
-#endif
-
         }
         /// <summary>
         /// 鍔犺浇鍐呭鍖哄煙
@@ -968,6 +659,8 @@
                 var list = FunctionList.List.GetDeviceFunctionList();
                 foreach (var function in list)
                 {
+
+
                     //闊充箰妯″潡鏈変富浠庡叧绯伙紝闇�瑕佺壒娈婂鐞�
                     if (SPK.MusicSpkList().Contains( function.spk))
                     {
@@ -1001,11 +694,6 @@
                     {
                         if (!function.collect)
                             continue;
-                        //if (function.roomIdList.Count == 0)//濡備綍鍦ㄦ埧闂村凡缁忕Щ闄や簡杩欎釜鍔熻兘锛屽垯鏀惰棌鐣岄潰涔熶笉浼氬啀鏄剧ず
-                        //{
-                        //    function.collection = false;
-                        //    continue;
-                        //}
                     }
                     if (index % 2 == 0)
                     {
@@ -1029,28 +717,34 @@
                         Tag = function.sid
                     };
                     rowView.AddChidren(functionView);
-
-                    var btnbg = new Button()
-                    {
-                        UnSelectedImagePath = "Collection/Functionbg.png",
-                        SelectedImagePath = "Collection/FunctionOnbg.png",
-                        Tag = function.sid
-                    };
-                    functionView.AddChidren(btnbg);
                     functionViews.Add(functionView);
-                    LoadDeviceFunctionDiv(functionView, function);
+                    //缁垮缓浜哄眳鐜锛岀鎶�绯荤粺
+                    if (function.spk == SPK.AcstParent)
+                    {
+                        LoadAcstDiv(functionView, function);
+                    }
+                    else //鍏朵粬璁惧
+                    {
+
+                        var btnbg = new Button()
+                        {
+                            UnSelectedImagePath = "Collection/Functionbg.png",
+                            SelectedImagePath = "Collection/FunctionOnbg.png",
+                            Tag = function.sid
+                        };
+                        functionView.AddChidren(btnbg);
+                        LoadDeviceFunctionDiv(functionView, function);
+
+
+
+                        if (SPK.ArmSensorSpkList().Contains(function.spk))
+                        {
+                            btnbg.UnSelectedImagePath = "Collection/FunctionOnbg.png";
+                            btnbg.SelectedImagePath = "Collection/FunctionArmOnbg.png";
+                        }
+                    }
                     index++;
 
-                    if(SPK.ArmSensorSpkList().Contains(function.spk))
-                    {
-                        btnbg.UnSelectedImagePath = "Collection/FunctionOnbg.png";
-                        btnbg.SelectedImagePath = "Collection/FunctionArmOnbg.png";
-                    }
-
-                    //if (!function.online)
-                    //{
-                    //    btnbg.UnSelectedImagePath = "Collection/FunctionOfflineBg.png";
-                    //}
                 }
 
                 if (index == 0)
@@ -1411,7 +1105,7 @@
                        function.SetAttrState("on_off", status);
                         Dictionary<string, string> dic = new Dictionary<string, string>();
                         dic.Add("on_off", status);
-                        Music.SendMethod.mMethod.SendControlCommand(function, dic);
+                        Music.SendMethod.Current.SendControlCommand(function, dic);
                     };
                 }
 
@@ -1532,6 +1226,91 @@
                 MainPage.Log("homepage LoadControlView error : " + ex.Message);
             }
         }
+        /// <summary>
+        /// 鍔犺浇缁垮缓绉戞妧绯荤粺鍗$墖
+        /// </summary>
+        void LoadAcstDiv(FrameLayout view1, Function function)
+        {
+            var view = new FrameLayout()
+            {
+                X = Application.GetRealWidth(10),
+                Y = Application.GetRealHeight(5),
+                Width = Application.GetRealWidth(160),
+                Height = Application.GetRealHeight(105),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+                Radius = (uint)Application.GetRealWidth(5),
+            };
+            view1.AddChidren(view);
+
+            Button btnName;
+            btnName = new Button()
+            {
+                X = Application.GetRealWidth(11),
+                Y = Application.GetRealWidth(10),
+                TextID = StringId.Acst,
+                IsBold = true,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS_FontSize.TextFontSize,
+                Height = Application.GetRealWidth(24),
+                Width = Application.GetRealWidth(140),
+                TextAlignment = TextAlignment.CenterLeft,
+            };
+            view.AddChidren(btnName);
+
+            var btnLogo = new Button()
+            {
+                Y = Application.GetRealWidth(90),
+                UnSelectedImagePath = "FunctionIcon/Acst/LvJianLogo.png",
+                SelectedImagePath = "FunctionIcon/Acst/LvJianLogo.png",
+                Width = Application.GetRealWidth(80),
+                Height = Application.GetRealWidth(37),
+            };
+            view.AddChidren(btnLogo);
+
+            Button btnFunctionViewBg;
+            btnFunctionViewBg = new Button()
+            {
+                Height = Application.GetRealWidth(100),
+                Width = Application.GetRealWidth(102),
+                UnSelectedImagePath = "FunctionIcon/FunctionBg/AcstFunctionBg.png",
+            };
+            view.AddChidren(btnFunctionViewBg);
+            btnFunctionViewBg.MouseUpEventHandler = (sender, e) => {
+                var page = new AcstParentPage();
+                MainPage.BasePageView.AddChidren(page);
+                page.LoadPage();
+                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+            };
+
+
+            Button btnAcstPower = new Button()
+            {
+                X = Application.GetRealWidth(115),
+                Y = Application.GetRealHeight(70),
+                Width = Application.GetRealWidth(32),
+                Height = Application.GetRealWidth(32),
+                SelectedImagePath = "Public/PowerOpen.png",
+                UnSelectedImagePath = "Public/PowerClose.png",
+                IsSelected = function.trait_on_off.curValue.ToString() == "on",
+            };
+            view.AddChidren(btnAcstPower);
+            btnAcstPower.MouseUpEventHandler = (sender, e) => {
+                btnAcstPower.IsSelected = !btnAcstPower.IsSelected;
+                string onoff = btnAcstPower.IsSelected ? "on" : "off";
+                Dictionary<string, string> d = new Dictionary<string, string>();
+                d.Add(FunctionAttributeKey.OnOff, onoff);
+                Control.Ins.SendWriteCommand(FunctionList.List.GetAcstParentList()[0], d);
+
+            };
+           
+
+
+
+        }
+
+
+
+
 
         /// <summary>
         /// 鍔犺浇鍦烘櫙鎺у埗鍗$墖
diff --git a/HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs b/HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs
index 5613837..bf6e34d 100644
--- a/HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs
+++ b/HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs
@@ -5,6 +5,7 @@
 using HDL_ON.Entity;
 using HDL_ON.UI;
 using HDL_ON.UI.CSS;
+using Newtonsoft.Json;
 using Newtonsoft.Json.Linq;
 using Shared;
 
@@ -733,6 +734,11 @@
                         //    functionCount = 1;
                         //}
                         break;
+                    case ShowFunction.Acst:
+                        functionCount = FunctionList.List.GetAcstParentList().Count;
+                        functionOnCount = FunctionList.List.GetAcstParentList().FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count;
+                        break;
+
 
                 }
 
@@ -790,6 +796,7 @@
                 if (item != ShowFunction.Environmental && item != ShowFunction.Sensor && item != ShowFunction.VideoIntercom
                     && item != ShowFunction.SecurityMonitoring && item != ShowFunction.FreshAir && item != ShowFunction.Music
                     && item != ShowFunction.EnergyMonitoring && item != ShowFunction.SecurityCenter
+                    && item != ShowFunction.Acst
                     && functionCount != 0)
                 {
                     Button btnFunctionCount = new Button()
@@ -1054,11 +1061,53 @@
                             MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                         };
                         break;
+                    case ShowFunction.Acst:
+                        btnName.TextID = StringId.Acst;
+
+                        Button btnJMLogo = new Button()
+                        {
+                            Y = specialList.Contains(index) ? Application.GetRealWidth(147) : Application.GetRealWidth(104),
+                            UnSelectedImagePath = "FunctionIcon/Acst/LvJianLogo.png",
+                            Width = Application.GetRealWidth(105),
+                            Height = Application.GetRealWidth(57),
+                        };
+                        functionView.AddChidren(btnJMLogo);
+
+                        Button btnAcstPower = new Button()
+                        {
+                            X = Application.GetRealWidth(120),
+                            Y = specialList.Contains(index) ? Application.GetRealWidth(160) : Application.GetRealWidth(117),
+                            Width = Application.GetRealWidth(32),
+                            Height = Application.GetRealWidth(32),
+                            SelectedImagePath = "Public/PowerOpen.png",
+                            UnSelectedImagePath = "Public/PowerClose.png",
+                            IsSelected = functionOnCount > 0,
+                            Tag = item + "_AllControl",
+                        };
+                        functionView.AddChidren(btnAcstPower);
+                        btnAcstPower.MouseUpEventHandler = (sender, e) => {
+                            btnAcstPower.IsSelected = !btnAcstPower.IsSelected;
+                            string onoff = btnAcstPower.IsSelected ? "on":"off";
+                            Dictionary<string, string> d = new Dictionary<string, string>();
+                            d.Add(FunctionAttributeKey.OnOff, onoff);
+                            Control.Ins.SendWriteCommand(FunctionList.List.GetAcstParentList()[0], d);
+                        };
+
+
+                        btnFunctionViewBg.MouseUpEventHandler = (sender, e) => {
+                            var page = new AcstParentPage();
+                            MainPage.BasePageView.AddChidren(page);
+                            page.LoadPage();
+                            MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                        };
+                        break;
+
 
                 }
                 //鐣岄潰璺宠浆--闊充箰璺宠浆鑷繁鐨勭晫闈�--鐜璺宠浆鑷繁鐨勭晫闈�
                 if (item != ShowFunction.Music && item != ShowFunction.Environmental && item != ShowFunction.SecurityMonitoring && item != ShowFunction.DoorLock
-                    && ShowFunction.EnergyMonitoring != item && ShowFunction.VideoIntercom != item && ShowFunction.SecurityCenter != item)
+                    && ShowFunction.EnergyMonitoring!= item && ShowFunction.VideoIntercom != item && ShowFunction.SecurityCenter != item
+                    && ShowFunction.Acst != item)
                 {
                     btnFunctionViewBg.MouseUpEventHandler = (sender, e) =>
                     {
@@ -1072,17 +1121,12 @@
             }
 
 
-//            bool debugFlag = false;
-//#if DEBUG
-//            debugFlag = true;
-//#endif
-
             //鍏変紡鏁版嵁
-            if (FunctionList.List.InverterList.Count > 0 /*|| debugFlag*/)
+            if (FunctionList.List.InverterList().Count > 0 )
             {
                 FrameLayout inverterListView = new FrameLayout()
                 {
-                    Height = Application.GetRealHeight(223),
+                    Height = Application.GetRealHeight(204),
                     Radius = (uint)Application.GetRealWidth(6),
                     BackgroundColor = CSS_Color.MainBackgroundColor,
                     Tag = "inverterList_View",
@@ -1111,7 +1155,7 @@
                 Button btnName = new Button()
                 {
                     X = Application.GetRealWidth(16),
-                    Y = Application.GetRealHeight(22),//14),//
+                    Y = Application.GetRealHeight(16),//14),//
                     Width = Application.GetRealWidth(140),
                     Height = Application.GetRealHeight(20),
                     TextColor = CSS_Color.FirstLevelTitleColor,
@@ -1123,22 +1167,50 @@
                 };
                 inverterListView.AddChidren(btnName);
 
-                Button btnWorkStatus = new Button()
+
+                Button btnFunctionCount = new Button()
                 {
-                    Y = Application.GetRealHeight(24),
-                    Width = Application.GetRealWidth(148),
-                    Height = Application.GetRealHeight(18),
-                    TextAlignment = TextAlignment.CenterRight,
-                    TextColor = 0xFF0BAF31,
-                    TextID = StringId.NormalOperation,
-                    TextSize = CSS_FontSize.TextFontSize
+                    X = Application.GetRealWidth(17) + Application.GetRealWidth(7 * FunctionList.List.InverterList().Count.ToString().Length),
+                    Y = btnName.Bottom,
+                    Width = Application.GetRealWidth(120),
+                    Height = Application.GetRealHeight(24),
+                    TextColor = CSS_Color.PromptingColor1,
+                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                    TextAlignment = TextAlignment.CenterLeft,
+                    Text = "/" + FunctionList.List.InverterList().Count,
                 };
-                inverterListView.AddChidren(btnWorkStatus);
+                inverterListView.AddChidren(btnFunctionCount);
+                Button btnOpenCount = new Button()
+                {
+                    X = Application.GetRealWidth(16),
+                    Y = btnName.Bottom,
+                    Width = Application.GetRealWidth(14 * FunctionList.List.InverterList().Count.ToString().Length),
+                    Height = Application.GetRealHeight(24),
+                    TextColor = CSS_Color.MainColor,
+                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                    TextAlignment = TextAlignment.CenterLeft,
+                    Text = FunctionList.List.InverterList().Count.ToString(),
+                    Tag = "inverter_onCount",
+                    BorderWidth = 0,
+                };
+                inverterListView.AddChidren(btnOpenCount);
+
+                //Button btnWorkStatus = new Button()
+                //{
+                //    Y = Application.GetRealHeight(24),
+                //    Width = Application.GetRealWidth(148),
+                //    Height = Application.GetRealHeight(18),
+                //    TextAlignment = TextAlignment.CenterRight,
+                //    TextColor = 0xFF0BAF31,
+                //    TextID = StringId.NormalOperation,
+                //    TextSize = CSS_FontSize.TextFontSize
+                //};
+                //inverterListView.AddChidren(btnWorkStatus);
 
                 Button btnWorkingMode = new Button()
                 {
                     X = Application.GetRealWidth(16),
-                    Y = btnWorkStatus.Bottom + Application.GetRealHeight(16),
+                    Y = btnOpenCount.Bottom,// + Application.GetRealHeight(16),
                     Width = Application.GetRealWidth(148),
                     Height = Application.GetRealHeight(18),
                     TextColor = CSS_Color.FirstLevelTitleColor,
@@ -1151,9 +1223,9 @@
                 Button btnPowerTenerationToday = new Button()
                 {
                     X = Application.GetRealWidth(16),
-                    Y = btnWorkingMode.Bottom + Application.GetRealHeight(16),
+                    Y = btnWorkingMode.Bottom,
                     Width = Application.GetRealWidth(148),
-                    Height = Application.GetRealHeight(18),
+                    Height = Application.GetRealHeight(21),
                     TextColor = CSS_Color.FirstLevelTitleColor,
                     TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                     TextID = StringId.PowerTenerationToday,
@@ -1165,9 +1237,9 @@
                 Button btnCurrentPowerGeneration = new Button()
                 {
                     X = Application.GetRealWidth(16),
-                    Y = btnPowerTenerationToday.Bottom + Application.GetRealHeight(16),
+                    Y = btnPowerTenerationToday.Bottom,
                     Width = Application.GetRealWidth(148),
-                    Height = Application.GetRealHeight(18),
+                    Height = Application.GetRealHeight(21),
                     TextColor = CSS_Color.FirstLevelTitleColor,
                     TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                     TextID = StringId.CurrentPowerGeneration,
@@ -1178,7 +1250,7 @@
                 Button btnBatterySOC = new Button()
                 {
                     X = Application.GetRealWidth(16),
-                    Y = btnCurrentPowerGeneration.Bottom + Application.GetRealHeight(16),
+                    Y = btnCurrentPowerGeneration.Bottom,
                     Width = Application.GetRealWidth(148),
                     Height = Application.GetRealHeight(18),
                     TextColor = CSS_Color.FirstLevelTitleColor,
@@ -1188,18 +1260,18 @@
                 };
                 inverterListView.AddChidren(btnBatterySOC);
 
-                Button btnOperationDataTotalData = new Button()
-                {
-                    X = Application.GetRealWidth(16),
-                    Y = btnBatterySOC.Bottom + Application.GetRealHeight(16),
-                    Width = Application.GetRealWidth(148),
-                    Height = Application.GetRealHeight(18),
-                    TextColor = CSS_Color.FirstLevelTitleColor,
-                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                    TextID = StringId.OperationDataTotalData,
-                    TextAlignment = TextAlignment.CenterLeft,
-                };
-                inverterListView.AddChidren(btnOperationDataTotalData);
+                //Button btnOperationDataTotalData = new Button()
+                //{
+                //    X = Application.GetRealWidth(16),
+                //    Y = btnBatterySOC.Bottom + Application.GetRealHeight(16),
+                //    Width = Application.GetRealWidth(148),
+                //    Height = Application.GetRealHeight(18),
+                //    TextColor = CSS_Color.FirstLevelTitleColor,
+                //    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                //    TextID = StringId.OperationDataTotalData,
+                //    TextAlignment = TextAlignment.CenterLeft,
+                //};
+                //inverterListView.AddChidren(btnOperationDataTotalData);
 
                 var clickButton = new Button();
                 inverterListView.AddChidren(clickButton);
@@ -1217,7 +1289,12 @@
                     MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
 
                     h5BasePage.AddChidren(Inverter.Ins.H5Page);//000
-                    string url = $"h5/index.html?homeId={DB_ResidenceData.Instance.CurrentRegion.id}&token={UserInfo.Current.AccessToken}&refresh_token={UserInfo.Current.RefreshToken}&url={HttpUtil.GlobalRequestHttpsHost}";
+                    string lz = "zh";
+                    if(Language.CurrentLanguage != "Chinese")
+                    {
+                        lz = "en";
+                    }
+                    string url = $"h5/index.html?homeId={DB_ResidenceData.Instance.CurrentRegion.id}&token={UserInfo.Current.AccessToken}&refresh_token={UserInfo.Current.RefreshToken}&url={HttpUtil.GlobalRequestHttpsHost}&lang={lz}";
                     Inverter.Ins.ShowWebviewFormUrl(url);
                     Inverter.Ins.H5Page.JSToNativeAction = (dictionary) =>
                     {
@@ -1237,7 +1314,7 @@
                             }
                             var function = new Function();
                             function.sid = data["sid"].ToString();
-                            var inObj = FunctionList.List.InverterList.Find((obj) => obj.sid == function.sid);
+                            var inObj = FunctionList.List.InverterList().Find((obj) => obj.sid == function.sid);
                             if (inObj == null)
                             {
                                 return;
@@ -1258,6 +1335,30 @@
                     };
                 };
 
+                new System.Threading.Thread(() => {
+                    var http = new HttpServerRequest();
+                    var pack = http.GetInverterStatisticsInfo();
+                    if(pack!= null)
+                    {
+                        var info = JsonConvert.DeserializeObject<StatisticsInfo>(pack.Data.ToString());
+                        try
+                        {
+                            Application.RunOnMainThread(() =>
+                            {
+                                btnPowerTenerationToday.Text = Language.StringByID(StringId.PowerTenerationToday).Replace("----", info.totalElectricityPvToday);
+                                btnWorkingMode.Text = Language.StringByID(StringId.WorkingMode).Replace("----", info.workMode);
+                                btnCurrentPowerGeneration.Text = Language.StringByID(StringId.CurrentPowerGeneration).Replace("----", info.powerPvNow);
+                                btnBatterySOC.Text = Language.StringByID(StringId.BatterySOC).Replace("--", info.batterySoc);
+                            });
+                        }
+                        catch (Exception ex)
+                        {
+                            MainPage.Log($"鑾峰彇瀹跺涵鍏変紡缁熻鏁版嵁寮傚父锛歿ex.Message}");
+                        }
+                    }
+
+
+                }) { IsBackground = true }.Start();
 
                 index++;
             }
@@ -1363,7 +1464,7 @@
 
                 foreach (var floor in chooseList)
                 {
-                    if (!string.IsNullOrEmpty( floor.roomId))// != Language.StringByID(StringId.All))
+                    if (!string.IsNullOrEmpty( floor.roomId))
                     {
                         //---鍒嗗壊绾�
                         contentView.AddChidren(new Button()
@@ -1426,4 +1527,4 @@
         }
 #endregion
     }
-}
\ No newline at end of file
+}
diff --git a/HDL_ON/UI/UI2/2-Classification/ClassificationPageBLL.cs b/HDL_ON/UI/UI2/2-Classification/ClassificationPageBLL.cs
index ede9b51..88447f3 100644
--- a/HDL_ON/UI/UI2/2-Classification/ClassificationPageBLL.cs
+++ b/HDL_ON/UI/UI2/2-Classification/ClassificationPageBLL.cs
@@ -219,7 +219,7 @@
                                     m.functionMusic.SetAttrState("on_off", "off");
                                     Dictionary<string, string> dic = new Dictionary<string, string>();
                                     dic.Add("on_off", "off");
-                                    Music.SendMethod.mMethod.SendControlCommand(m.functionMusic, dic);
+                                    Music.SendMethod.Current.SendControlCommand(m.functionMusic, dic);
                                 }
                             }
                         })
diff --git a/HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs b/HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs
index db7cfe9..0c2265f 100644
--- a/HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs
+++ b/HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs
@@ -67,7 +67,7 @@
 
 
             btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/{function.IconName}.png";
-            
+
             if (SPK.CurtainSpkList().Contains(function.spk))
             {//绐楀笜娌℃湁寮�鍏虫寜閽�
                 CurtainFragment();
@@ -243,6 +243,8 @@
 
 
             }
+            else if (function.spk == SPK.AcstParent) {
+            }
             else
             {
                 if (function.spk == SPK.ClothesHanger)//鏅捐。鏋�
diff --git a/HDL_ON/UI/UI2/2-Classification/FunctionControlZoneBLL.cs b/HDL_ON/UI/UI2/2-Classification/FunctionControlZoneBLL.cs
index 49d250c..eb4ea70 100644
--- a/HDL_ON/UI/UI2/2-Classification/FunctionControlZoneBLL.cs
+++ b/HDL_ON/UI/UI2/2-Classification/FunctionControlZoneBLL.cs
@@ -359,7 +359,7 @@
                 a31player.SetAttrState("song_step", "up");
                 Dictionary<string, string> dic = new Dictionary<string, string>();
                 dic.Add("song_step", "up");
-                SendMethod.mMethod.SendControlCommand(a31player, dic);
+                SendMethod.Current.SendControlCommand(a31player, dic);
             };
             btnPrev.MouseUpEventHandler = (sender, e) =>
             {
@@ -382,7 +382,7 @@
                 a31player.SetAttrState("on_off", status);
                 Dictionary<string, string> dic = new Dictionary<string, string>();
                 dic.Add("on_off", status);
-                SendMethod.mMethod.SendControlCommand(a31player, dic);
+                SendMethod.Current.SendControlCommand(a31player, dic);
             };
             ///涓嬩竴鏇茬偣鍑讳簨浠�
             btnNext.MouseDownEventHandler = (sender, e) =>
@@ -391,7 +391,7 @@
                 a31player.SetAttrState("song_step", "down");
                 Dictionary<string, string> dic = new Dictionary<string, string>();
                 dic.Add("song_step", "down");
-                SendMethod.mMethod.SendControlCommand(a31player, dic);
+                SendMethod.Current.SendControlCommand(a31player, dic);
             };
             btnNext.MouseUpEventHandler = (sender, e) =>
             {
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/AddInputType.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/AddInputType.cs
index 2072723..ab6ff1e 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/AddInputType.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/AddInputType.cs
@@ -117,7 +117,7 @@
         /// </summary>
         public void SceneMethod()
         {
-            var sceneList = LogicMethod.CurrLogicMethod.GetSceneList();
+            var sceneList = LogicMethod.Current.GetSceneList();
             List<string> nameList = new List<string>();
             for (int i = 0; i < sceneList.Count; i++)
             {
@@ -125,20 +125,20 @@
                 nameList.Add(scene.name);
             }
             PublicInterface publicInterface = new PublicInterface();
-            publicInterface.FrameOrVv(this, nameList, new List<string> { }, StringId.addSceneLogic, (index) =>
+            publicInterface.FrameOrVv(this, nameList, new List<string> { }, Language.StringByID(StringId.addSceneLogic), (index) =>
             {
                 var sceneSelecetd = sceneList[index];
                 Input input = new Input();
                 input.sid = sceneSelecetd.sid;
                 input.condition_type = "10";
                 Dictionary<string, string> dic = new Dictionary<string, string>();
-                LogicMethod.CurrLogicMethod.dictionary(dic, "key", "scene");
-                LogicMethod.CurrLogicMethod.dictionary(dic, "comparator", "=");
-                LogicMethod.CurrLogicMethod.dictionary(dic, "data_type", "string");
-                LogicMethod.CurrLogicMethod.dictionary(dic, "value", "on");
+                LogicMethod.Current.dictionary(dic, "key", "scene");
+                LogicMethod.Current.dictionary(dic, "comparator", "=");
+                LogicMethod.Current.dictionary(dic, "data_type", "string");
+                LogicMethod.Current.dictionary(dic, "value", "on");
                 input.condition.Add(dic);
                 AddCondition(input);
-                LogicMethod.CurrLogicMethod.RemoveAllView();
+                LogicMethod.Current.RemoveAllView();
                 AddLogic addLogic = new AddLogic();
                 MainPage.BasePageView.AddChidren(addLogic);
                 addLogic.Show();
@@ -156,7 +156,7 @@
             ///閫氳繃璋冭瘯瀹濈粰鐨勭粡绾害<鏍囧噯GPS>
             double latitude = Entity.DB_ResidenceData.Instance.CurrentRegion.latitude;//绾害
             double longitude = Entity.DB_ResidenceData.Instance.CurrentRegion.longitude;//缁忓害
-            LogicMethod.CurrLogicMethod.WGS84_to_GCJ02(Entity.DB_ResidenceData.Instance.CurrentRegion.longitude, Entity.DB_ResidenceData.Instance.CurrentRegion.latitude, out longitude, out latitude);
+            LogicMethod.Current.WGS84_to_GCJ02(Entity.DB_ResidenceData.Instance.CurrentRegion.longitude, Entity.DB_ResidenceData.Instance.CurrentRegion.latitude, out longitude, out latitude);
             int r = 500;//榛樿鍗婂緞
             if (edit)
             {
@@ -257,15 +257,15 @@
             {
                 //楂樺痉鍧愭爣杞琖GS84鍧愭爣(楂樺痉鍦板浘璁剧疆GPS)
                 double out_lng, out_lat;
-                LogicMethod.CurrLogicMethod.GCJ02_to_WGS84(mLongitude, mLatitude, out out_lng, out out_lat);
+                LogicMethod.Current.GCJ02_to_WGS84(mLongitude, mLatitude, out out_lng, out out_lat);
                 Input input = new Input();
-                input.sid = LogicMethod.CurrLogicMethod.NewSid();
+                input.sid = LogicMethod.Current.NewSid();
                 input.condition_type = "8";
                 Dictionary<string, string> dic = new Dictionary<string, string>();
-                LogicMethod.CurrLogicMethod.dictionary(dic, "key", "direction");
-                LogicMethod.CurrLogicMethod.dictionary(dic, "comparator", "=");
-                LogicMethod.CurrLogicMethod.dictionary(dic, "data_type", "string");
-                LogicMethod.CurrLogicMethod.dictionary(dic, "value", valueStr);
+                LogicMethod.Current.dictionary(dic, "key", "direction");
+                LogicMethod.Current.dictionary(dic, "comparator", "=");
+                LogicMethod.Current.dictionary(dic, "data_type", "string");
+                LogicMethod.Current.dictionary(dic, "value", valueStr);
                 input.condition.Add(dic);
                 //绾害
                 input.geo_fence.latitude = out_lat.ToString();
@@ -274,7 +274,7 @@
                 //鍗婂緞<鍗曚綅绫�>
                 input.geo_fence.radius = mRadius.ToString();
                 AddCondition(input);
-                LogicMethod.CurrLogicMethod.RemoveAllView();
+                LogicMethod.Current.RemoveAllView();
                 AddLogic addLogic = new AddLogic();
                 MainPage.BasePageView.AddChidren(addLogic);
                 addLogic.Show();
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/AddLogic.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/AddLogic.cs
index 1b9285f..5b00d80 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/AddLogic.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/AddLogic.cs
@@ -70,7 +70,7 @@
             }
 
             // 鏉′欢澶勭悊鏂规硶
-            InpOrOutLogicMethod.InputCondition(this, viewLayout);
+            InpOrOutLogicMethod.Current.InputCondition(this, viewLayout);
             ///娣诲姞鍥炬爣鐨刅iew
             LogicView.LogicAddView addInputIcon = new LogicView.LogicAddView();
             addInputIcon.frameLayout.SetCornerWithSameRadius(Application.GetRealHeight(12), HDLUtils.RectCornerBottomLeft | HDLUtils.RectCornerBottomRight);
@@ -89,7 +89,7 @@
             titleOutpu.btnNextIcon.Visible = false;
             viewLayout.AddChidren(titleOutpu.FLayoutView());
             //鐩爣澶勭悊鏂规硶
-            InpOrOutLogicMethod.OutputTarget(this, viewLayout);
+            InpOrOutLogicMethod.Current.OutputTarget(this, viewLayout);
             ///娣诲姞鍥炬爣鐨刅iew
             LogicView.LogicAddView addOutputIcon = new LogicView.LogicAddView();
             addOutputIcon.frameLayout.SetCornerWithSameRadius(Application.GetRealHeight(12), HDLUtils.RectCornerBottomLeft | HDLUtils.RectCornerBottomRight);
@@ -238,13 +238,9 @@
                     new LogicView.TipPopView().TipBox(StringId.tip, StringId.targetNull);
                     return;
                 }
-
-                
-
-
                 Loading loading = new Loading();
                 this.AddChidren(loading);
-                HDL_ON.DAL.Server.ResponsePackNew responsePackNew = null;
+                HDL_ON.DAL.Server.ResponsePackNew r = null; 
                 if (string.IsNullOrEmpty(Logic.currlogic.userLogicId))
                 {
                     List<string> list = new List<string>();
@@ -252,11 +248,11 @@
                     {
                         list.Add(logic.name);
                     }
-                    new LogicView.TipPopView().InputBox(StringId.editName, InpOrOutLogicMethod.GetLogicName(Logic.currlogic), StringId.nameNull, StringId.NameAlreadyExists, list, (logicName, view
+                    new LogicView.TipPopView().InputBox(StringId.editName, InpOrOutLogicMethod.Current.GetLogicName(Logic.currlogic), StringId.nameNull, StringId.NameAlreadyExists, list, (logicName, view
                         ) =>
                     {
                         Logic.currlogic.name = logicName;
-                        Logic.currlogic.sid = LogicMethod.CurrLogicMethod.NewSid();
+                        Logic.currlogic.sid = LogicMethod.Current.NewSid();
                         loading.Start();
                         new System.Threading.Thread(() =>
                         {
@@ -265,7 +261,7 @@
                                 if (!MainPage.NoLoginMode)
                                 {
                                     //鍙戦�佹柊鍔犻�昏緫鍛戒护锛�
-                                    responsePackNew = Send.AddLogic(Logic.currlogic);
+                                    r = Send.Current.AddLogic(Logic.currlogic,true);
                                 }
 
                             }
@@ -278,46 +274,30 @@
                                     if(MainPage.NoLoginMode)
                                     {
                                         Logic.LogicList.Add(Logic.currlogic);
-                                        LogicMethod.CurrLogicMethod.RemoveAllView();
+                                        LogicMethod.Current.RemoveAllView();
                                         MainView.MainShow();
                                         return;
                                     }
 
-                                    if (responsePackNew != null && responsePackNew.Code == "0" && responsePackNew.Data.ToString() != "")
+                                    if (r != null)
                                     {
-                                        //鑾峰彇閫昏緫璇︾粏杩斿洖鏄竴涓暟缁�(object绫诲瀷杞崲涓烘暟缁�);
-                                        var jArray = Newtonsoft.Json.Linq.JArray.Parse(responsePackNew.Data.ToString());
-                                        for (int a = 0; a < jArray.Count; a++)
+                                        var userLogicIdList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Logic>>(r.Data.ToString());
+                                        for (int i = 0; i < userLogicIdList.Count; i++)
                                         {
-                                            var jay = jArray[a];
-                                            //鏁版嵁杩斿簭鍒楀寲涓篖ogic瀵硅薄
-                                            var str = Newtonsoft.Json.JsonConvert.SerializeObject(jay);
-                                            var logic = Newtonsoft.Json.JsonConvert.DeserializeObject<Logic>(str);
-                                            if (logic.userLogicId != "")
-                                            {
-                                                //鏇存柊浜戠鍞竴鑷姩鍖杋d;
-                                                Logic.currlogic.userLogicId = logic.userLogicId;
-                                            }
-                                            else
+                                            var logic = userLogicIdList[i];
+                                            if (string.IsNullOrEmpty(logic.userLogicId))
                                             {
                                                 //鑷繁鐪嬬殑鎵�浠ヤ笉闇�瑕佹敮鎸佷腑鑻辨枃
                                                 new LogicView.TipPopView().FlashingBox("娌℃湁杩斿洖浜戠鍞竴鑷姩鍖杋d");
                                             }
-
+                                            //鏇存柊浜戠鍞竴鑷姩鍖杋d;
+                                            Logic.currlogic.userLogicId = logic.userLogicId;
                                         }
-
                                         Logic.LogicList.Add(Logic.currlogic);
-                                        LogicMethod.CurrLogicMethod.RemoveAllView();
+                                        LogicMethod.Current.RemoveAllView();
                                         MainView.MainShow();
                                     }
-                                    else if (responsePackNew != null && responsePackNew.Code == "14005")
-                                    {
-                                        new LogicView.TipPopView().FlashingBox(Language.StringByID(StringId.gatewayNotOnline));
-                                    }
-                                    else
-                                    {
-                                        new LogicView.TipPopView().FlashingBox(Language.StringByID(StringId.saveFail));
-                                    }
+                                   
                                 });
                             }
 
@@ -336,7 +316,7 @@
                         try
                         {
                             //鍙戦�佷慨鏀归�昏緫鍛戒护锛�
-                            responsePackNew = Send.UpdateLogic(Logic.currlogic);
+                            r = Send.Current.UpdateLogic(Logic.currlogic,true);
 
                         }
                         catch { }
@@ -345,23 +325,14 @@
                             Application.RunOnMainThread(() =>
                             {
                                 loading.Hide();
-                                if (responsePackNew != null && responsePackNew.Code == "0")
+                                if (r != null )
                                 {
-                                    LogicMethod.CurrLogicMethod.RemoveAllView();
+                                    LogicMethod.Current.RemoveAllView();
                                     MainView.MainShow();
                                 }
-                                else if (responsePackNew != null && responsePackNew.Code == "14005")
-                                {
-                                    new LogicView.TipPopView().FlashingBox(Language.StringByID(StringId.gatewayNotOnline));
-                                }
-                                else
-                                {
-                                    new LogicView.TipPopView().FlashingBox(Language.StringByID(StringId.saveFail));
-                                }
+
                             });
                         }
-
-
 
                     })
                     { IsBackground = true }.Start();
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/AddTarget.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/AddTarget.cs
index 839696d..b4e06aa 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/AddTarget.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/AddTarget.cs
@@ -90,14 +90,14 @@
         /// </summary>
         public void SceneMethod()
         {
-            var sceneList = LogicMethod.CurrLogicMethod.GetSceneList();
+            var sceneList = LogicMethod.Current.GetSceneList();
             List<string> nameList = new List<string>();
             for (int i = 0; i < sceneList.Count; i++) {
                 var scene = sceneList[i];
                 nameList.Add(scene.name);
             }
             PublicInterface publicInterface = new PublicInterface();
-            publicInterface.FrameOrVv(this, nameList,new List<string> { }, StringId.addSceneLogic, (index) =>
+            publicInterface.FrameOrVv(this, nameList,new List<string> { },Language.StringByID(StringId.addSceneLogic), (index) =>
             {
                 var sceneSelecetd = sceneList[index];
                 Output outputDevice = new Output();
@@ -106,7 +106,7 @@
                 //娌″暐浣滅敤锛屼负浜嗗彂閫佹暟鎹牸寮忕粺涓�;
                 outputDevice.status = new List<Dictionary<string, string>> { new Dictionary<string, string> { { "key", "scene" }, { "value", "0" } } };
                 AddOutput(outputDevice);
-                LogicMethod.CurrLogicMethod.RemoveAllView();
+                LogicMethod.Current.RemoveAllView();
                 AddLogic addLogic = new AddLogic();
                 MainPage.BasePageView.AddChidren(addLogic);
                 addLogic.Show();
@@ -121,10 +121,10 @@
             List<string> stateList = new List<string>();
             if (edit&& index1 != -1) {
                 Output output = Logic.currlogic.output[index1];
-                var security = LogicMethod.CurrLogicMethod.GetSecurity(output.sid);
+                var security = LogicMethod.Current.GetSecurity(output.sid);
                 stateList.Add(security.name);
             }
-            var securityList = LogicMethod.CurrLogicMethod.GetSecurityList(); 
+            var securityList = LogicMethod.Current.GetSecurityList(); 
             List<string> nameList = new List<string>();
             for (int i = 0; i < securityList.Count; i++)
             {
@@ -132,7 +132,7 @@
                 nameList.Add(security.name); 
             }
             PublicInterface publicInterface = new PublicInterface();
-            publicInterface.FrameOrVv(frameLayout, nameList, stateList, StringId.addSecurityLogic,(index) =>
+            publicInterface.FrameOrVv(frameLayout, nameList, stateList,Language.StringByID(StringId.addSecurityLogic),(index) =>
             {
                 var securitySelecetd = securityList[index];
                 Output outputDevice = new Output();
@@ -141,7 +141,7 @@
                 //娌″暐浣滅敤锛屼负浜嗗彂閫佹暟鎹牸寮忕粺涓�;
                 outputDevice.status = new List<Dictionary<string, string>> { new Dictionary<string, string> { { "key", "security" }, { "value", "0" } } };
                 AddOutput(outputDevice,true);
-                LogicMethod.CurrLogicMethod.RemoveAllView();
+                LogicMethod.Current.RemoveAllView();
                 AddLogic addLogic = new AddLogic();
                 MainPage.BasePageView.AddChidren(addLogic);
                 addLogic.Show();
@@ -207,11 +207,11 @@
                     return;
                 }
                 Output outputTime= new Output();
-                outputTime.sid = LogicMethod.CurrLogicMethod.NewSid();
+                outputTime.sid = LogicMethod.Current.NewSid();
                 outputTime.target_type = "4";
                 Dictionary<string, string> dic = new Dictionary<string, string>();
-                LogicMethod.CurrLogicMethod.dictionary(dic, "key", "delay");
-                LogicMethod.CurrLogicMethod.dictionary(dic, "value", timepoint);
+                LogicMethod.Current.dictionary(dic, "key", "delay");
+                LogicMethod.Current.dictionary(dic, "value", timepoint);
                 outputTime.status.Add(dic);
                 if (edit)
                 {
@@ -226,7 +226,7 @@
                     AddOutput(outputTime);
                 }
                 fLayout.RemoveFromParent();
-                LogicMethod.CurrLogicMethod.RemoveAllView();
+                LogicMethod.Current.RemoveAllView();
                 AddLogic addLogic = new AddLogic();
                 MainPage.BasePageView.AddChidren(addLogic);
                 addLogic.Show();
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/AirQuality.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/AirQuality.cs
index 92d1584..093a2d2 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/AirQuality.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/AirQuality.cs
@@ -81,13 +81,13 @@
         private void AddDic(string value)
         {
             Input input = new Input();
-            input.sid = LogicMethod.CurrLogicMethod.NewSid();
+            input.sid = LogicMethod.Current.NewSid();
             input.condition_type = "6";
             Dictionary<string, string> dic = new Dictionary<string, string>();
-            LogicMethod.CurrLogicMethod.dictionary(dic, "key", "airquality");
-            LogicMethod.CurrLogicMethod.dictionary(dic, "comparator", "=");
-            LogicMethod.CurrLogicMethod.dictionary(dic, "data_type", "string");
-            LogicMethod.CurrLogicMethod.dictionary(dic, "value", value);
+            LogicMethod.Current.dictionary(dic, "key", "airquality");
+            LogicMethod.Current.dictionary(dic, "comparator", "=");
+            LogicMethod.Current.dictionary(dic, "data_type", "string");
+            LogicMethod.Current.dictionary(dic, "value", value);
             input.condition.Add(dic);
             AddCondition(input, "airquality" ,"=");
         }
@@ -125,7 +125,7 @@
                 Logic.currlogic.input.Add(input);
             }
 
-            LogicMethod.CurrLogicMethod.RemoveAllView();
+            LogicMethod.Current.RemoveAllView();
             AddLogic addLogic = new AddLogic();
             MainPage.BasePageView.AddChidren(addLogic);
             addLogic.Show();
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs
index 3c52457..975533b 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs
@@ -32,6 +32,24 @@
         /// 杈撳叆鏉′欢鍒楄〃绱㈠紩鍊�
         /// </summary>
         private int mIndex;
+        /// <summary>
+        /// 鍙瀵硅涓撶敤
+        /// </summary>
+        private string identifier;
+
+        private static ConditionDeviceFunList m_Current = null;
+
+        public static ConditionDeviceFunList Current
+        {
+            get
+            {
+                if (m_Current == null)
+                {
+                    m_Current = new ConditionDeviceFunList();
+                }
+                return m_Current;
+            }
+        }
 
         public void Show(Entity.Function device, int index, bool edit)
         {
@@ -199,6 +217,40 @@
                         view1.frameLayout.Y = view.frameLayout.Bottom;
                         view1.btnText.TextID = StringId.fangchaigongneng;
                         fLayout.AddChidren(view1.FLayoutView());
+
+
+                        int intValue = 0;
+                        if (edit)
+                        {
+                            Input inputs = Logic.currlogic.input[index];
+                            var dicList = inputs.condition;
+                            foreach (var dic in dicList)
+                            {
+                                if (dic["key"] == "people_status")
+                                {
+                                    //鏈変汉/鏃犱汉
+                                    intValue = 1;
+                                }
+                                else
+                                {
+                                    //闃叉媶鍔熻兘
+                                    intValue = 2;
+                                }
+                                break;
+
+                            }
+                        }
+                        if (intValue == 1)
+                        {
+                            //鏈変汉/鏃犱汉
+                            view1.frameLayout.Visible = false;
+
+                        }
+                        else if (intValue == 2)
+                        {
+                            //闃叉媶鍔熻兘
+                            view1.frameLayout.Y = Application.GetRealHeight(0);
+                        }
                         view1.btnClick.MouseUpEventHandler += (sender, e) =>
                         {
                             DeviceView(device, view1.btnState, StringId.zaixian, StringId.buzaixian);
@@ -213,7 +265,22 @@
                 //姣背娉紶鎰熷櫒(鑷爺鍖楅偖)
                 case SPK.SenesorMegahealth:
                     {
-                        int intValue =0;
+
+                        LogicView.FunTypeView view1 = new LogicView.FunTypeView();
+                        view1.btnText.TextID = StringId.diedaobaojing;
+                        view1.btnState.Name = Language.StringByID(StringId.diedaobaojing);
+                        fLayout.AddChidren(view1.FLayoutView());
+                        view1.btnClick.MouseUpEventHandler += (sender, e) =>
+                        {
+                            DeviceView(device, view1.btnState, StringId.shi, StringId.offLogic, 1);
+                        };
+
+                        LogicView.FunTypeView view2 = new LogicView.FunTypeView();
+                        view2.frameLayout.Y = view1.frameLayout.Bottom;
+                        view2.btnText.TextID = StringId.yourenbaojing;
+                        view2.btnState.Name = Language.StringByID(StringId.yourenbaojing);
+                        fLayout.AddChidren(view2.FLayoutView());
+                        int intValue = 0;
                         if (edit)
                         {
                             Input inputs = Logic.currlogic.input[index];
@@ -222,37 +289,27 @@
                             {
                                 if (dic["key"] == "target_status")
                                 {
+                                    //璺屽�掓姤璀�
                                     intValue = 1;
                                 }
                                 else
                                 {
+                                    //鏈変汉鎶ヨ
                                     intValue = 2;
                                 }
                                 break;
 
                             }
                         }
-                        LogicView.FunTypeView view1= new LogicView.FunTypeView(); 
-                        view1.btnText.TextID = StringId.diedaobaojing;
-                        view1.btnState.Name = Language.StringByID(StringId.diedaobaojing);
-                        fLayout.AddChidren(view1.FLayoutView());
-                        view1.btnClick.MouseUpEventHandler += (sender, e) =>
+                        if (intValue == 1)
                         {
-                            DeviceView(device, view1.btnState, StringId.shi, StringId.offLogic, 1);
-                        };
-                        
-                        LogicView.FunTypeView view2 = new LogicView.FunTypeView();
-                        view2.frameLayout.Y = view1.frameLayout.Bottom;
-                        view2.btnText.TextID = StringId.yourenbaojing;
-                        view2.btnState.Name = Language.StringByID(StringId.yourenbaojing);
-                        fLayout.AddChidren(view2.FLayoutView());
-
-                        if (intValue==1) {
+                            //璺屽�掓姤璀�
                             view2.frameLayout.Visible = false;
-                           
+
                         }
-                        if (intValue == 2)
+                        else if (intValue == 2)
                         {
+                            //鏈変汉鎶ヨ
                             view2.frameLayout.Y = Application.GetRealHeight(0);
                         }
 
@@ -316,7 +373,7 @@
                         {
                             fLayout.AddChidren(tvocView.FLayoutView());
                         }
-                        
+
                         #endregion
                         #region 鐐瑰嚮浜嬩欢
                         ///娓╁害鐐瑰嚮浜嬩欢
@@ -324,7 +381,7 @@
                         {
                             new PublicInterface { }.ViewZuHe(this, StringId.wendugaoyu, StringId.wendudiyu, (intText, view) =>
                             {
-                                InputBoxAction(device,intText, index, edit);
+                                InputBoxAction(device, intText, index, edit);
                             });
                         };
                         ///婀垮害鐐瑰嚮浜嬩欢
@@ -332,30 +389,30 @@
                         {
                             new PublicInterface { }.ViewZuHe(this, StringId.shidugaoyu, StringId.shidudiyu, (intText, view) =>
                             {
-                                InputBoxAction(device,intText, index, edit);
+                                InputBoxAction(device, intText, index, edit);
                             });
 
                         };
                         ///pm2.5鐐瑰嚮浜嬩欢
                         pm25View.btnClick.MouseUpEventHandler += (sender, e) =>
                         {
-                            PmCo2TvocAction(this,device, "pm25",StringId.pm25, index,edit);
+                            PmCo2TvocAction(this, device, "pm25", StringId.pm25, index, edit);
                         };
                         ///co2鐐瑰嚮浜嬩欢
                         co2View.btnClick.MouseUpEventHandler += (sender, e) =>
                         {
-                            PmCo2TvocAction(this,device, "co2", StringId.co2, index, edit);
+                            PmCo2TvocAction(this, device, "co2", StringId.co2, index, edit);
                         };
                         ///tvoc鐐瑰嚮浜嬩欢
                         tvocView.btnClick.MouseUpEventHandler += (sender, e) =>
                         {
-                            PmCo2TvocAction(this,device, "tvoc", StringId.tvoc, index, edit);
+                            PmCo2TvocAction(this, device, "tvoc", StringId.tvoc, index, edit);
 
                         };
                         #endregion
                     }
                     break;
-                    //娓╁害浼犳劅鍣�
+                //娓╁害浼犳劅鍣�
                 case SPK.SensorTemperature:
                     {
                         ///娓╁害
@@ -426,7 +483,7 @@
                 //tvoc
                 case SPK.SensorTVOC:
                     {
-                        
+
                         ///tvoc
                         LogicView.FunTypeView tvocView = new LogicView.FunTypeView();
                         tvocView.btnText.TextID = StringId.tvoc;
@@ -464,11 +521,65 @@
                         fLayout.AddChidren(view.FLayoutView());
                         view.btnClick.MouseUpEventHandler += (sender, e) =>
                         {
-                            DeviceView(device, view.btnState, StringId.shi, StringId.offLogic,1);
+                            DeviceView(device, view.btnState, StringId.shi, StringId.offLogic, 1);
                         };
                         if (edit)
                         {
                             GetEditState(device, index, view.btnState, null, null, null);
+                        }
+                    }
+                    break;
+                //鍙瀵硅
+                case SPK.doorgate:
+                    {
+
+                        LogicView.FunTypeView view1 = new LogicView.FunTypeView();
+                        view1.btnText.TextID = StringId.shipintonghuahujiao;
+                        view1.btnText.Name = Language.StringByID(StringId.shipintonghuahujiao);
+                        fLayout.AddChidren(view1.FLayoutView());
+                        view1.btnClick.MouseUpEventHandler += (sender, e) =>
+                        {
+                            identifier = "door_call_cloud_event";
+                            DeviceView(device, view1.btnState, StringId.shi, StringId.offLogic, 1);
+                        };
+
+                        LogicView.FunTypeView view2 = new LogicView.FunTypeView();
+                        view2.frameLayout.Y = view1.frameLayout.Bottom;
+                        view2.btnText.TextID = StringId.renliankaimen;
+                        fLayout.AddChidren(view2.FLayoutView());
+                        view2.btnClick.MouseUpEventHandler += (sender, e) =>
+                        {
+                            identifier = "door_pedestrian_records";
+                            this.FaceAction(this, device, view2.btnState);
+                        };
+
+                        int intValue = 0;
+                        if (edit)
+                        {
+                            Input inputs = Logic.currlogic.input[index];
+                            if (inputs.identifier == "door_call_cloud_event")
+                            {
+                                intValue = 1;
+                            }
+                            else
+                            {
+                                intValue = 2;
+                            }
+                        }
+                        if (intValue == 1)
+                        {
+                            
+                            view2.frameLayout.Visible = false;
+
+                        }
+                        else if (intValue == 2)
+                        {
+                            
+                            view2.frameLayout.Y = Application.GetRealHeight(0);
+                        }
+                        if (edit)
+                        {
+                            GetEditState(device, index, view1.btnState, view2.btnState, null, null);
                         }
                     }
                     break;
@@ -501,6 +612,18 @@
                 inputDevice.condition_type = "3";
                 inputDevice.sid = device.sid;
                 inputDevice.condition = dicSateteList;
+                if (device.spk == SPK.doorgate)
+                {
+                    //鍙瀵硅
+                    inputDevice.condition_type = "9";
+                    inputDevice.identifier = this.identifier;
+                    if (this.identifier == "door_call_cloud_event")
+                    {
+                        inputDevice.condition = new List<Dictionary<string, string>>();
+                    }
+                }
+               
+               
                 if (edit)
                 {
                     //绉婚櫎鏃ф暟鎹�
@@ -524,7 +647,7 @@
                 this.RemoveFromParent();
                 return;
             }
-            LogicMethod.CurrLogicMethod.RemoveAllView();
+            LogicMethod.Current.RemoveAllView();
             if (MainView.IsGatewayType)
             { //A缃戝叧
                 var addLogic = new AddLogic();
@@ -726,9 +849,14 @@
                 if (button != null)
                 {
 
+
                     if (button.Name == Language.StringByID(StringId.yourenbaojing)
                     || (button.Name == Language.StringByID(StringId.diedaobaojing)))
                     {
+                        //鍙湁姣背娉紶鎰熷櫒(鑷爺)
+                        Save(device, mIndex, mEdit);
+                    }
+                    else if (button.Name == Language.StringByID(StringId.shipintonghuahujiao)) {
                         //鍙湁姣背娉紶鎰熷櫒(鑷爺)
                         Save(device, mIndex, mEdit);
                     }
@@ -849,6 +977,51 @@
                });
         }
         /// <summary>
+        /// 鍙瀵硅涓撶敤
+        /// </summary>
+        /// <param name="frame">褰撳墠鐣岄潰</param>
+        /// <param name="device">褰撳墠璁惧</param>
+        /// <param name="btnState">鏃х姸鎬�</param>
+        public void FaceAction(FrameLayout frame, Entity.Function device,Button btnState) {
+            selectedState = device.spk + "_";
+            Loading loading = new Loading();
+            frame.AddChidren(loading);
+            loading.Start();
+            System.Threading.Tasks.Task.Run(() =>
+            {
+                try
+                {
+                   var faceIDList = Send.Current.GetListHomeFace(device.deviceId,true);
+                    List<string> faceNameList = new List<string>();
+                    for (int i = 0; i < faceIDList.Count; i++)
+                    {
+                        var face = faceIDList[i];
+                        faceNameList.Add(face.userName);
+                    }
+                    Application.RunOnMainThread(() =>
+                    {
+                        loading.Hide();
+                        PublicInterface publicInterface = new PublicInterface();
+                        publicInterface.FrameOrVv(this, faceNameList, new List<string> { btnState.Text }, device.name, (index) =>
+                        {
+                            var face = faceIDList[index];
+                            //鐣岄潰鏄剧ず閫変腑鍊�
+                            btnState.Text = face.userName;
+                            //鏁版嵁灏佽
+                            AddDictionary("open_type", "1", "integer");
+                            AddDictionary("user_id", face.userId, "string");
+
+                        }, false);
+
+                    });
+                }
+                catch { }
+
+            });
+
+        }
+
+        /// <summary>
         /// 鏄剧ず缂栬緫涔嬪墠鐨勮澶囩姸鎬�
         /// </summary>
         /// <param name="device">缂栬緫璁惧</param>
@@ -868,7 +1041,7 @@
                 //鏈夋暟鎹噸鏂拌祴鍊�
                 dicSateteList = dicList;
             }
-            InpOrOutLogicMethod.EditState(device, dicList, button1, button2, button3, button4);
+            InpOrOutLogicMethod.Current.EditDeviceState(device, dicList, button1, button2, button3, button4);
         }
         /// <summary>
         /// 娣诲姞閫変腑鏁版嵁
@@ -881,10 +1054,10 @@
         {
             //鏁版嵁灏佽
             Dictionary<string, string> dic = new Dictionary<string, string>();
-            LogicMethod.CurrLogicMethod.dictionary(dic, "key", KeyValue);
-            LogicMethod.CurrLogicMethod.dictionary(dic, "comparator", comparator);
-            LogicMethod.CurrLogicMethod.dictionary(dic, "data_type", data_type);
-            LogicMethod.CurrLogicMethod.dictionary(dic, "value", selectedValue);
+            LogicMethod.Current.dictionary(dic, "key", KeyValue);
+            LogicMethod.Current.dictionary(dic, "comparator", comparator);
+            LogicMethod.Current.dictionary(dic, "data_type", data_type);
+            LogicMethod.Current.dictionary(dic, "value", selectedValue);
             AddDictionaryList(dic);
         }
         /// <summary>
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/FunTpye.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/FunTpye.cs
index d75a820..8564f29 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/FunTpye.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/FunTpye.cs
@@ -77,7 +77,7 @@
                     Width = Application.GetRealWidth(144),
                     Height = Application.GetRealHeight(44 * 5),
                 };
-                var roomList = LogicMethod.CurrLogicMethod.GetGatewayRoomList(Language.StringByID(StringId.allAreas));
+                var roomList = LogicMethod.Current.GetGatewayRoomList(Language.StringByID(StringId.allAreas));
 
                 if (roomList.Count > 5)
                 {
@@ -121,7 +121,7 @@
                         ///鍒囨崲鎴块棿榛樿:鍏ㄩ儴鍔熻兘
                         UserInfo.Current.logicselectedFunction = Language.StringByID(StringId.allFun);
                         ///鑾峰彇鏄剧ず璁惧鍒楄〃
-                        var list = LogicMethod.CurrLogicMethod.GetFunctionDeviceList(areaView.btnClick.Tag as Entity.Room, if_Type);
+                        var list = LogicMethod.Current.GetFunctionDeviceList(areaView.btnClick.Tag as Entity.Room, if_Type);
 
                         this.LoadingDeviceListView(vv, list);
                     };
@@ -139,9 +139,9 @@
             {
 
                 //鑾峰彇鏈�缁堟樉绀哄垪琛�
-                var functionList = LogicMethod.CurrLogicMethod.GetFunctionDeviceList(UserInfo.Current.logicselectedRoom, if_Type);
+                var functionList = LogicMethod.Current.GetFunctionDeviceList(UserInfo.Current.logicselectedRoom, if_Type);
                 //鑾峰彇璁惧鍒楄〃鐨勭被鍨嬶紙渚嬪锛氱伅鍏夌被锛岀獥甯樼被銆傘�傘�傦級
-                var deviceTypeList = LogicMethod.CurrLogicMethod.GetDeviceTypeList(functionList);
+                var deviceTypeList = LogicMethod.Current.GetDeviceTypeList(functionList);
                 if (deviceTypeList.Count == 0)
                 {
                     //娌℃湁绫诲瀷鐩存帴杩斿洖鍘�;
@@ -223,9 +223,9 @@
                         funAllAreaView.btnText2.Text = clickText;
                         UserInfo.Current.logicselectedFunction = clickText;
                         ///鑾峰彇璁惧鍗曚釜澶х被spk鍒楄〃锛堜緥濡�:鐏厜绫�,绌鸿皟绫�...锛�
-                        var typeFunctionList2 = LogicMethod.CurrLogicMethod.GetDeviceTypeFunctionList(clickText);
+                        var typeFunctionList2 = LogicMethod.Current.GetDeviceTypeFunctionList(clickText);
                         ///鑾峰彇璁惧鍗曚釜灏忕被鍒楄〃锛堜緥濡傦細鐏厜1,鐏厜2...锛�
-                        var lists2 = LogicMethod.CurrLogicMethod.GetShowDeviceList(typeFunctionList2, functionList);
+                        var lists2 = LogicMethod.Current.GetShowDeviceList(typeFunctionList2, functionList);
                        this.LoadingDeviceListView(vv, lists2);
 
                     };
@@ -239,11 +239,11 @@
             funAllAreaView.btnText2.MouseUpEventHandler += funClick;
             funAllAreaView.btnIcon2.MouseUpEventHandler += funClick;
             ///鑾峰彇鎴块棿鏀寔鐨勮澶囧垪琛�
-            var deviceList = LogicMethod.CurrLogicMethod.GetFunctionDeviceList(UserInfo.Current.logicselectedRoom, if_Type);
+            var deviceList = LogicMethod.Current.GetFunctionDeviceList(UserInfo.Current.logicselectedRoom, if_Type);
             ///鑾峰彇璁惧鍗曚釜澶х被spk鍒楄〃锛堜緥濡�:鐏厜绫�,绌鸿皟绫�...锛�
-            var typeFunctionList = LogicMethod.CurrLogicMethod.GetDeviceTypeFunctionList(UserInfo.Current.logicselectedFunction);
+            var typeFunctionList = LogicMethod.Current.GetDeviceTypeFunctionList(UserInfo.Current.logicselectedFunction);
             ///鑾峰彇璁惧鍗曚釜灏忕被鍒楄〃锛堜緥濡傦細鐏厜1,鐏厜2...锛�
-            var lists = LogicMethod.CurrLogicMethod.GetShowDeviceList(typeFunctionList, deviceList);
+            var lists = LogicMethod.Current.GetShowDeviceList(typeFunctionList, deviceList);
             ///鎴块棿鍚嶇О
             funAllAreaView.btnText1.Text = UserInfo.Current.logicselectedRoom.roomName;
             ///璁惧澶х被鍚嶇О<鐏厜绫汇�傘�傘�傘�傘��>
@@ -275,7 +275,7 @@
                         funView.btnLine.X = Application.GetRealWidth(16);
                         funView.btnLine.Width = Application.GetRealWidth(343);
                         verticalScrolView.AddChidren(funView.FLayoutView());
-                        funView.btnIcon.UnSelectedImagePath = LogicMethod.CurrLogicMethod.GetIconPath(dev.spk);
+                        funView.btnIcon.UnSelectedImagePath = LogicMethod.Current.GetIconPath(dev.spk);
                         funView.btnDeviceName.Text = dev.name;
                         funView.btnRoomName.Text = dev.GetRoomListName();
                         funView.btnClick.MouseUpEventHandler += (sen, e) =>
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs
index a6402bb..286dbbe 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs
@@ -7,12 +7,27 @@
 {
     public class InpOrOutLogicMethod
     {
+
+        private static InpOrOutLogicMethod s_Current = null;
+
+        public static InpOrOutLogicMethod Current
+        {
+            get
+            {
+                if (s_Current == null)
+                {
+                    s_Current = new InpOrOutLogicMethod();
+
+                }
+                return s_Current;
+            }
+        }
         /// <summary>
         /// 杈撳叆鏉′欢澶勭悊鏂规硶
         /// </summary>
         /// <param name="thisView">褰撳墠鐣岄潰</param>
         /// <param name="viewLayout">涓婁笅婊戝姩鎺т欢</param>
-        public static void InputCondition(FrameLayout thisView, VerticalScrolViewLayout viewLayout)
+        public void InputCondition(FrameLayout thisView, VerticalScrolViewLayout viewLayout)
         {
             for (int i = 0; i < Logic.currlogic.input.Count; i++)
             {
@@ -33,6 +48,7 @@
                 {
                     case "1":
                         {
+                           
                             inputView.btnIcon.UnSelectedImagePath = "LogicIcon/time.png";
                             foreach (var dic in dicList)
                             {
@@ -114,20 +130,17 @@
                     case "2":
                         {
                             inputView.btnIcon.UnSelectedImagePath = "LogicIcon/time.png";
-                            foreach (var dic in dicList)
-                            {
-                                string value = dic["value"];
-                                inputView.btnText.Text = Language.StringByID(StringId.timeHorizon) + ": " + value;
-                            }
-
+                            string value= this.GetKeyValue("timesection", dicList);
+                            inputView.btnText.Text = Language.StringByID(StringId.timeHorizon) + ": " + value;
                         }
                         break;
                     case "3":
+                    case "9"://鍙瀵硅:9
                         {
                             //鐢╯id鎵惧埌璁惧锛�
-                            var device = LogicMethod.CurrLogicMethod.GetDevice(inputCondition.sid);
+                            var device = LogicMethod.Current.GetDevice(inputCondition.sid);
                             //鐢ㄨ澶囩殑functionType绫诲瀷鎵惧埌瀵瑰簲鍥炬爣锛�
-                            inputView.btnIcon.UnSelectedImagePath = LogicMethod.CurrLogicMethod.GetIconPath(device.spk);
+                            inputView.btnIcon.UnSelectedImagePath = LogicMethod.Current.GetIconPath(device.spk);
                             //鏄剧ず璁惧鍚嶇О
                             inputView.btnText.Text = device.name;
                             //鏀瑰彉璁惧鍚嶇О鏄剧ず鎺т欢瀹藉害
@@ -159,91 +172,56 @@
                                 case SPK.PanelSocket:
                                 case SPK.ElectricSocket:
                                     {//寮�鍏崇伅
-                                        foreach (var dic in dicList)
+                                        string value = this.GetKeyValue("on_off", dicList);
+                                        inputView.btnState.Text = Language.StringByID(StringId.offLogic);
+                                        if (value == "on")
                                         {
-
-                                            string value = dic["value"];
-                                            if (value == "on")
-                                            {
-                                                inputView.btnState.Text = Language.StringByID(StringId.onLogic);
-
-                                            }
-                                            else
-                                            {
-                                                inputView.btnState.Text = Language.StringByID(StringId.offLogic);
-                                            }
+                                            inputView.btnState.Text = Language.StringByID(StringId.onLogic);
                                         }
                                     }
                                     break;
                                 //浼犳劅鍣�
                                 case SPK.SensorHelp:
                                     {
-                                        foreach (var dic in dicList)
+                                        string value = this.GetKeyValue("alarm_status", dicList);
+                                        inputView.btnState.Text = Language.StringByID(StringId.zhengchang);
+                                        if (value == "alarm")
                                         {
-                                            string value = dic["value"];
-                                            if (value == "alarm")
-                                            {
-                                                inputView.btnState.Text = Language.StringByID(StringId.qiujiu);
-
-                                            }
-                                            else
-                                            {
-                                                inputView.btnState.Text = Language.StringByID(StringId.zhengchang);
-                                            }
+                                            inputView.btnState.Text = Language.StringByID(StringId.qiujiu);
                                         }
                                     }
                                     break;
                                 case SPK.SensorSmoke:
                                 case SPK.SensorGas:
                                     {
-                                        foreach (var dic in dicList)
+                                        string value = this.GetKeyValue("alarm_status", dicList);
+                                        inputView.btnState.Text = Language.StringByID(StringId.wuxieluo);
+                                        if (value == "alarm")
                                         {
-                                            string value = dic["value"];
-                                            if (value == "alarm")
-                                            {
-                                                inputView.btnState.Text = Language.StringByID(StringId.xieluo);
+                                            inputView.btnState.Text = Language.StringByID(StringId.xieluo);
 
-                                            }
-                                            else
-                                            {
-                                                inputView.btnState.Text = Language.StringByID(StringId.wuxieluo);
-                                            }
                                         }
                                     }
                                     break;
                                 case SPK.SensorWater:
                                     {
-                                        foreach (var dic in dicList)
+                                        string value = this.GetKeyValue("alarm_status", dicList);
+                                        inputView.btnState.Text = Language.StringByID(StringId.wuluoshui);
+                                        if (value == "alarm")
                                         {
-                                            string value = dic["value"];
-                                            if (value == "alarm")
-                                            {
-                                                inputView.btnState.Text = Language.StringByID(StringId.luoshui);
-
-                                            }
-                                            else
-                                            {
-                                                inputView.btnState.Text = Language.StringByID(StringId.wuluoshui);
-                                            }
+                                            inputView.btnState.Text = Language.StringByID(StringId.luoshui);
                                         }
                                     }
                                     break;
                                 case SPK.SensorDryContact:
                                 case SPK.SensorDryContact2:
                                     {
-                                        foreach (var dic in dicList)
+
+                                        string value = this.GetKeyValue("on_off", dicList);
+                                        inputView.btnState.Text = Language.StringByID(StringId.offLogic);
+                                        if (value == "on")
                                         {
-
-                                            string value = dic["value"];
-                                            if (value == "on")
-                                            {
-                                                inputView.btnState.Text = Language.StringByID(StringId.onLogic);
-
-                                            }
-                                            else
-                                            {
-                                                inputView.btnState.Text = Language.StringByID(StringId.offLogic);
-                                            }
+                                            inputView.btnState.Text = Language.StringByID(StringId.onLogic);
                                         }
                                     }
                                     break;
@@ -251,77 +229,52 @@
                                 case SPK.SensorDuiShe:
                                 case SPK.SensorPir:
                                     {
-                                        foreach (var dic in dicList)
+                                        string value = this.GetKeyValue("people_status", dicList);
+                                        inputView.btnState.Text = Language.StringByID(StringId.wuren);
+                                        if (value == "true")
                                         {
+                                            inputView.btnState.Text = Language.StringByID(StringId.youren);
 
-                                            string value = dic["value"];
-                                            if (value == "true")
-                                            {
-                                                inputView.btnState.Text = Language.StringByID(StringId.youren);
-
-                                            }
-                                            else
-                                            {
-                                                inputView.btnState.Text = Language.StringByID(StringId.wuren);
-                                            }
                                         }
                                     }
                                     break;
                                 case SPK.SensorDoorWindow:
                                     {
-                                        foreach (var dic in dicList)
+                                        string value = this.GetKeyValue("contact_status", dicList);
+                                        inputView.btnState.Text = Language.StringByID(StringId.bihe);
+                                        if (value == "open")
                                         {
-
-                                            string value = dic["value"];
-                                            if (value == "open")
-                                            {
-                                                inputView.btnState.Text = Language.StringByID(StringId.kaiqi);
-
-                                            }
-                                            else
-                                            {
-                                                inputView.btnState.Text = Language.StringByID(StringId.bihe);
-                                            }
+                                            inputView.btnState.Text = Language.StringByID(StringId.kaiqi);
                                         }
+                                       
                                     }
                                     break;
                                 case SPK.SensorUtrasonic:
                                     {
+                                        string key = this.GetKey(dicList);
+                                        string value = this.GetValue(dicList);
                                         string str = "";
-                                        foreach (var dic in dicList)
+                                        switch (key)
                                         {
-                                            string value = dic["value"];
-                                            switch (dic["key"])
-                                            {
-                                                case "status":
-                                                case "people_status":
+                                            case "status":
+                                            case "people_status":
+                                                {
+                                                    str = Language.StringByID(StringId.wuren);
+                                                    if (value == "true")
                                                     {
-                                                        if (value == "true")
-                                                        {
-                                                            str += Language.StringByID(StringId.youren) + ";";
-                                                        }
-                                                        else
-                                                        {
-                                                            str += Language.StringByID(StringId.wuren) + ";";
-                                                        }
-
-
+                                                        str = Language.StringByID(StringId.youren);
                                                     }
-                                                    break;
-                                                case "dismantle":
+                                                }
+                                                break;
+                                            case "dismantle":
+                                                {
+                                                    str = Language.StringByID(StringId.buzaixian);
+                                                    if (value == "true")
                                                     {
-                                                        if (value == "true")
-                                                        {
-                                                            str += Language.StringByID(StringId.zaixian);
-                                                        }
-                                                        else
-                                                        {
-                                                            str += Language.StringByID(StringId.buzaixian);
-                                                        }
+                                                        str = Language.StringByID(StringId.zaixian);
                                                     }
-                                                    break;
-
-                                            }
+                                                }
+                                                break;
 
                                         }
                                         inputView.btnState.Text = str;
@@ -329,49 +282,31 @@
                                     break;
                                 case SPK.SenesorMegahealth:
                                     {
-                                        foreach (var dic in dicList)
+                                        string key = this.GetKey(dicList);
+                                        string value = this.GetValue(dicList);
+                                        if (key == "people_status")
                                         {
-                                            string value = dic["value"];
-                                            switch (dic["key"])
+                                            inputView.btnState.Text = Language.StringByID(StringId.wuren);
+                                            if (value == "true")
                                             {
-                                                case "people_status":
-                                                    {
-                                                        if (value == "true")
-                                                        {
-                                                            inputView.btnState.Text = Language.StringByID(StringId.youren);
-                                                        }
-                                                        else
-                                                        {
-                                                            inputView.btnState.Text = Language.StringByID(StringId.wuren);
-                                                        }
-
-                                                    }
-                                                    break;
-                                                case "target_status":
-                                                    {
-                                                        if (value == "4")
-                                                        {
-                                                            inputView.btnState.Text = Language.StringByID(StringId.shi);
-                                                        }
-                                                    }
-                                                    break;
+                                                inputView.btnState.Text = Language.StringByID(StringId.youren);
                                             }
-
                                         }
-                                    }break;
+                                        else if (key == "target_status")
+                                        {
+                                            if (value == "4")
+                                            {
+                                                inputView.btnState.Text = Language.StringByID(StringId.shi);
+                                            }
+                                        }
+                                    }
+                                    break;
                                 case SPK.SenesorMegahealth2:
                                     {
-                                        foreach (var dic in dicList)
-                                        {
-                                            string value = dic["value"];
-                                            if (value == "fall")
-                                            {
-                                                inputView.btnState.Text = Language.StringByID(StringId.diedao);
-                                            }
-                                            else
-                                            {
-                                                inputView.btnState.Text = Language.StringByID(StringId.wuren);
-                                            }
+                                        string value = this.GetValue(dicList);
+                                        inputView.btnState.Text = Language.StringByID(StringId.wuren);
+                                        if (value == "fall") {
+                                            inputView.btnState.Text = Language.StringByID(StringId.diedao);
                                         }
                                     }
                                     break;
@@ -439,13 +374,13 @@
                                 case SPK.SensorTemperature:
                                     {
 
-                                        string str = new InpOrOutLogicMethod { }.GetText(dicList, "temperature");
+                                        string str =this.GetText(dicList, "temperature");
                                         inputView.btnState.Text = str;
                                     }
                                     break;
                                 case SPK.SensorHumidity:
                                     {
-                                        string str = new InpOrOutLogicMethod { }.GetText(dicList, "humidity");
+                                        string str = this.GetText(dicList, "humidity");
                                         inputView.btnState.Text = str;
 
                                     }
@@ -455,26 +390,31 @@
                                 case SPK.SensorTVOC:
                                 case SPK.SensorHcho:
                                     {
-                                        string strvalue = ""; 
-                                        foreach (var dic in dicList)
-                                        {
-                                            strvalue = dic["value"];
-                                            break;
-                                        }
-                                        string str = new PublicInterface().GetSensorLevelText(device, strvalue, true);
+                                        string value = this.GetValue(dicList);
+                                        string str = new PublicInterface().GetSensorLevelText(device, value, true);
                                         inputView.btnState.Text = str;
                                     }
                                     break;
                                 case SPK.DoorLock:
                                     {
-                                        foreach (var dic in dicList)
+                                        string value = this.GetValue(dicList);
+                                        if (value == "open")
                                         {
-                                            string value = dic["value"];
-                                            if (value == "open")
-                                            {
-                                                inputView.btnState.Text = Language.StringByID(StringId.kaiqi);
-                                            }
-
+                                            inputView.btnState.Text = Language.StringByID(StringId.kaiqi);
+                                        }
+                                    }
+                                    break;
+                                case SPK.doorgate:
+                                    {
+                                        if (inputCondition.identifier == "door_call_cloud_event")
+                                        {
+                                            inputView.btnState.Text = Language.StringByID(StringId.shipintonghuahujiao);
+                                        }
+                                        else
+                                        {
+                                            string userId = this.GetKeyValue("user_id",dicList);
+                                            var FaceItem = this.GetFaceItem(userId, device.deviceId);
+                                            inputView.btnState.Text = FaceItem.userName;
                                         }
                                     }
                                     break;
@@ -598,32 +538,24 @@
                     case "8":
                         {
                             inputView.btnIcon.UnSelectedImagePath = "LogicIcon/location.png";
-                            foreach (var dic in dicList)
+                            string value = this.GetValue(dicList);
+                            if (value == "arrive")
                             {
-                                string strtext = "";
-                                string value = dic["value"];
-                                switch (value)
-                                {
-                                    case "arrive":
-                                        {
-                                            strtext = Language.StringByID(StringId.daoda);
-                                        }
-                                        break;
-                                    case "leave":
-                                        {
-                                            strtext = Language.StringByID(StringId.likai);
-                                        }
-                                        break;
-                                }
-                                inputView.btnText.TextID = StringId.likiadaoda;
-                                inputView.btnState.Text = strtext;
+                                value = Language.StringByID(StringId.daoda);
                             }
+                            else if (value == "leave")
+                            {
+                                value = Language.StringByID(StringId.likai);
+                            }
+
+                            inputView.btnText.TextID = StringId.likiadaoda;
+                            inputView.btnState.Text = value;
                         }
                         break;
                     case "10":
                         {
                             //鐢╯id鎵惧埌鍦烘櫙锛�
-                            var scene = LogicMethod.CurrLogicMethod.GetSecne(inputCondition.sid);
+                            var scene = LogicMethod.Current.GetSecne(inputCondition.sid);
                             inputView.btnIcon.UnSelectedImagePath = "LogicIcon/scene.png";
                             inputView.btnNextIcon.Visible = false;
                             inputView.btnClick.Visible = false;
@@ -638,19 +570,19 @@
                 {
                     Button button = (Button)sen;
                     //褰撳墠缂栬緫鐨勬潯浠�
-                    Input ckcliInput = inputView.btnClick.Tag as Input;
+                    Input clickInput = inputView.btnClick.Tag as Input;
                     //鎵惧埌褰撳墠缂栬緫鐨勭储寮�
                     int indexVulae = 0;
                     for (int index = 0; index < Logic.currlogic.input.Count; index++)
                     {
                         Input input = Logic.currlogic.input[index];
-                        if (input.sid == ckcliInput.sid)
+                        if (input.sid == clickInput.sid)
                         {
-                            if (button.Name == "3")
+                            if (button.Name == "3" || button.Name == "9")
                             {
                                 //鏈変簺璁惧姣旇緝鐗规畩锛堜緥濡傦細娴锋灄浼犳劅鍣ㄨ繕鏄鍒ゆ柇灞炴�у�硷紝娓╂箍搴﹀睘鎬ц繕瑕佸垽鏂瘮杈冨叧绯伙紝鎵嶈兘纭鏄惁宸茬粡瀛樺湪璇ユ潯浠讹紝鍏朵粬璁惧鏉′欢鐩存帴鐢╯id鍒ゆ柇鍗冲彲锛�
                                 //鍔犱竴绾у垽鏂槸涓哄吋瀹圭壒娈婅澶�
-                                if (new ConditionDeviceFunList { }.IsContainsAll(ckcliInput.condition, input.condition))
+                                if (new ConditionDeviceFunList { }.IsContainsAll(clickInput.condition, input.condition))
                                 {
                                     //鐢ㄦ埛鍙兘鍒犻櫎鏁版嵁锛屼娇鍒楄〃绱㈠紩鍙戠敓鏀瑰彉锛�
                                     //閫氳繃鍞竴sid閲嶆柊鏌ユ壘鍒扮储寮曚笖鏇存柊绱㈠紩鍊�
@@ -724,17 +656,16 @@
                                 timeTpye.TimeHorizon(fLayout, edit, indexVulae);
                             }
                             break;
+                        case "9":
                         case "3":
                             {
                                 //鐢╯id鎵惧埌璁惧锛�
-                                var device = LogicMethod.CurrLogicMethod.GetDevice(inputCondition.sid);
+                                var device = LogicMethod.Current.GetDevice(inputCondition.sid);
                                 if (device.spk == SPK.SensorEnvironment
                                 || device.spk == SPK.SensorEnvironment2
                                 || device.spk == SPK.SensorEnvironment3
                                 )
                                 {
-                                    //杩欎釜璁惧姣旇緝鐗规畩
-                                    ConditionDeviceFunList conditionDeviceFunList = new ConditionDeviceFunList();
                                     ///褰撳墠鐨勭储寮曞�兼暟鎹璞�
                                     Input inputedit = Logic.currlogic.input[indexVulae];
                                     ///鐘舵�佸��
@@ -758,7 +689,7 @@
                                                     {
                                                         titleInt = StringId.wendudiyu;
                                                     }
-                                                    conditionDeviceFunList.InputBoxAction(device, titleInt, indexVulae, true, stateValue);
+                                                    ConditionDeviceFunList.Current.InputBoxAction(device, titleInt, indexVulae, true, stateValue);
                                                 }
                                                 break;
                                             case "humidity":
@@ -772,27 +703,27 @@
                                                     {
                                                         titleInt = StringId.shidudiyu;
                                                     }
-                                                    conditionDeviceFunList.InputBoxAction(device, titleInt, indexVulae, true, stateValue);
+                                                    ConditionDeviceFunList.Current.InputBoxAction(device, titleInt, indexVulae, true, stateValue);
                                                 }
                                                 break;
                                             case "co2":
                                                 {
-                                                    conditionDeviceFunList.PmCo2TvocAction(thisView, device, "co2", StringId.co2, indexVulae, true, stateValue);
+                                                    ConditionDeviceFunList.Current.PmCo2TvocAction(thisView, device, "co2", StringId.co2, indexVulae, true, stateValue);
                                                 }
                                                 break;
                                             case "pm25":
                                                 {
-                                                    conditionDeviceFunList.PmCo2TvocAction(thisView, device, "pm25", StringId.pm25, indexVulae, true, stateValue);
+                                                    ConditionDeviceFunList.Current.PmCo2TvocAction(thisView, device, "pm25", StringId.pm25, indexVulae, true, stateValue);
                                                 }
                                                 break;
                                             case "tvoc":
                                                 {
-                                                    conditionDeviceFunList.PmCo2TvocAction(thisView, device, "tvoc", StringId.tvoc, indexVulae, true, stateValue);
+                                                    ConditionDeviceFunList.Current.PmCo2TvocAction(thisView, device, "tvoc", StringId.tvoc, indexVulae, true, stateValue);
                                                 }
                                                 break;
                                             case "hcho":
                                                 {
-                                                    conditionDeviceFunList.PmCo2TvocAction(thisView, device, "hcho", StringId.Formaldehyde, indexVulae, true, stateValue);
+                                                    ConditionDeviceFunList.Current.PmCo2TvocAction(thisView, device, "hcho", StringId.Formaldehyde, indexVulae, true, stateValue);
                                                 }
                                                 break;
                                         }
@@ -802,37 +733,37 @@
                                 else if (device.spk == SPK.SensorTemperature)
                                 {
 
-                                    new InpOrOutLogicMethod().SensorView(thisView, device, "temperature", indexVulae);
+                                   this.SensorView(thisView, device, "temperature", indexVulae);
 
                                 }
                                 else if (device.spk == SPK.SensorHumidity)
                                 {
 
-                                    new InpOrOutLogicMethod().SensorView(thisView, device, "humidity", indexVulae);
+                                    this.SensorView(thisView, device, "humidity", indexVulae);
 
                                 }
                                 else if (device.spk == SPK.SensorCO2)
                                 {
 
-                                    new InpOrOutLogicMethod().SensorView(thisView, device, "co2", indexVulae);
+                                    this.SensorView(thisView, device, "co2", indexVulae);
 
                                 }
                                 else if (device.spk == SPK.SensorPm25)
                                 {
 
-                                    new InpOrOutLogicMethod().SensorView(thisView, device, "pm25", indexVulae);
+                                    this.SensorView(thisView, device, "pm25", indexVulae);
 
                                 }
                                 else if (device.spk == SPK.SensorTVOC)
                                 {
 
-                                    new InpOrOutLogicMethod().SensorView(thisView, device, "tvoc", indexVulae);
+                                    this.SensorView(thisView, device, "tvoc", indexVulae);
 
                                 }
                                 else if (device.spk == SPK.SensorHcho)
                                 {
 
-                                    new InpOrOutLogicMethod().SensorView(thisView, device, "hcho", indexVulae);
+                                    this.SensorView(thisView, device, "hcho", indexVulae);
 
                                 }
                                 else
@@ -957,7 +888,7 @@
         /// </summary>
         /// <param name="thisView">褰撳墠鐣岄潰</param>
         /// <param name="viewLayout">涓婁笅婊戝姩鎺т欢</param>
-        public static void OutputTarget(FrameLayout thisView, VerticalScrolViewLayout viewLayout)
+        public void OutputTarget(FrameLayout thisView, VerticalScrolViewLayout viewLayout)
         {
 
             for (int i = 0; i < Logic.currlogic.output.Count; i++)
@@ -980,9 +911,9 @@
                     case "1":
                         {
                             //鐢╯id鎵惧埌璁惧锛�
-                            var device = LogicMethod.CurrLogicMethod.GetDevice(outputTarget.sid);
+                            var device = LogicMethod.Current.GetDevice(outputTarget.sid);
                             //鐢ㄨ澶囩殑functionType绫诲瀷鎵惧埌瀵瑰簲鍥炬爣锛�
-                            targetView.btnIcon.UnSelectedImagePath = LogicMethod.CurrLogicMethod.GetIconPath(device.spk);
+                            targetView.btnIcon.UnSelectedImagePath = LogicMethod.Current.GetIconPath(device.spk);
                             //鏄剧ず璁惧鍚嶇О
                             targetView.btnText.Text = device.name;
                             //鏀瑰彉璁惧鍚嶇О鏄剧ず鎺т欢瀹藉害
@@ -1069,7 +1000,7 @@
                                 case SPK.CurtainRoller:
                                     {
                                         string on_off = GetKeyValue("on_off", dicList);
-                                        string percent = GetKeyValue("percent", dicList); 
+                                        string percent = GetKeyValue("percent", dicList);
                                         if (on_off == "on" && percent != "")
                                         {
                                             stateStr = Language.StringByID(StringId.onLogic) + percent + "%";
@@ -1095,7 +1026,7 @@
                                         if (percent != "" && angle != "")
                                         {
                                             stateStr += Language.StringByID(StringId.onLogic) + percent + "%;";
-                                            stateStr +=Language.StringByID(StringId.Angle)+angle + "掳";
+                                            stateStr += Language.StringByID(StringId.Angle) + angle + "掳";
                                         }
                                         else if (percent != "")
                                         {
@@ -1207,7 +1138,8 @@
 
                                     }
                                     break;
-                                case SPK.FloorHeatStandard:case SPK.HvacFloorHeat:
+                                case SPK.FloorHeatStandard:
+                                case SPK.HvacFloorHeat:
                                     {
                                         string on_off = GetKeyValue("on_off", dicList);
                                         string set_temp = GetKeyValue("set_temp", dicList);
@@ -1339,13 +1271,25 @@
                                         }
                                     }
                                     break;
+                                case SPK.MusicStandard:
+                                case SPK.AvMusic:
+                                    {
+                                        foreach (var dic in dicList)
+                                        {
+                                            if (dic["key"] == "song_name")
+                                            {
+                                                stateStr = dic["value"]?.ToString();
+                                            }
+                                        }
+                                    }
+                                    break;
                             }
                         }
                         break;
                     case "2":
                         {
                             //鐢╯id鎵惧埌鍦烘櫙锛�
-                            var scene = LogicMethod.CurrLogicMethod.GetSecne(outputTarget.sid);
+                            var scene = LogicMethod.Current.GetSecne(outputTarget.sid);
                             targetView.btnIcon.UnSelectedImagePath = "LogicIcon/scene.png";
                             targetView.btnNextIcon.Visible = false;
                             //鏄剧ず鍦烘櫙鍚嶇О
@@ -1355,7 +1299,7 @@
                     case "3":
                         {
                             //鐢╯id鎵惧埌瀹夐槻锛�
-                            var security = LogicMethod.CurrLogicMethod.GetSecurity(outputTarget.sid);
+                            var security = LogicMethod.Current.GetSecurity(outputTarget.sid);
                             targetView.btnIcon.UnSelectedImagePath = "LogicIcon/security.png";
                             targetView.btnDelay.Visible = false;
                             //鏄剧ず瀹夐槻鍚嶇О 
@@ -1387,11 +1331,11 @@
 
                 if (outputTarget.target_type == "1" || outputTarget.target_type == "3")
                 {
-                    targetView.btnState.Text = new InpOrOutLogicMethod { }.GetTimeText(outputTarget.delay) + stateStr;
+                    targetView.btnState.Text = this.GetTimeText(outputTarget.delay) + stateStr;
                 }
                 else
                 {
-                    targetView.btnText.Text = new InpOrOutLogicMethod { }.GetTimeText(outputTarget.delay) + stateStr;
+                    targetView.btnText.Text = this.GetTimeText(outputTarget.delay) + stateStr;
                 }
                 //鍐嶆缂栬緫鏉′欢鐘舵�佺偣鍑讳簨浠�
                 targetView.btnClick.MouseUpEventHandler += (sen, e) =>
@@ -1417,7 +1361,7 @@
                         case "1":
                             {
                                 //鐢╯id鎵惧埌璁惧锛�
-                                var device = LogicMethod.CurrLogicMethod.GetDevice(outputTarget.sid);
+                                var device = LogicMethod.Current.GetDevice(outputTarget.sid);
                                 TargetDeviceFunList deviceFunList = new TargetDeviceFunList();
                                 MainPage.BasePageView.AddChidren(deviceFunList);
                                 deviceFunList.Show(device, indexVulae, edit);
@@ -1448,20 +1392,18 @@
                 //寤舵椂鐐瑰嚮浜嬩欢
                 targetView.btnDelay.MouseUpEventHandler += (sen, e) =>
                 {
-
-                    InpOrOutLogicMethod inpOrOutLogicMethod = new InpOrOutLogicMethod();
-                    inpOrOutLogicMethod.Delayed(thisView, outputTarget.delay, (value) =>
-                    {
-                        outputTarget.delay = value.ToString();
-                        if (outputTarget.target_type == "1")
-                        {
-                            targetView.btnState.Text = new InpOrOutLogicMethod { }.GetTimeText(outputTarget.delay) + stateStr;
-                        }
-                        else
-                        {
-                            targetView.btnText.Text = new InpOrOutLogicMethod { }.GetTimeText(outputTarget.delay) + stateStr;
-                        }
-                    });
+                    this.Delayed(thisView, outputTarget.delay, (value) =>
+                     {
+                         outputTarget.delay = value.ToString();
+                         if (outputTarget.target_type == "1")
+                         {
+                             targetView.btnState.Text = this.GetTimeText(outputTarget.delay) + stateStr;
+                         }
+                         else
+                         {
+                             targetView.btnText.Text = this.GetTimeText(outputTarget.delay) + stateStr;
+                         }
+                     });
 
                 };
                 ///鍒犻櫎鎺т欢
@@ -1479,8 +1421,8 @@
         /// <param name="button1">鏄剧ずBtn</param>
         /// <param name="button2">鏄剧ずBtn</param>
         /// <param name="button3">鏄剧ずBtn</param>
-        /// <param name="button4">鏄剧ずBtn</param>
-        public static void EditState(Entity.Function device, List<Dictionary<string, string>> dicList, Button button1, Button button2, Button button3, Button button4)
+        /// <param name="button4">鏄剧ずBtn</param> 
+        public void EditDeviceState(Entity.Function device, List<Dictionary<string, string>> dicList, Button button1, Button button2, Button button3, Button button4)
         {
             switch (device.spk)
             {
@@ -1611,7 +1553,7 @@
                             }
 
                         }
-                        
+
                     }
                     break;
                 case SPK.CurtainDream:
@@ -1759,7 +1701,8 @@
 
                     }
                     break;
-                case SPK.FloorHeatStandard:case SPK.HvacFloorHeat:
+                case SPK.FloorHeatStandard:
+                case SPK.HvacFloorHeat:
                     {
 
                         foreach (var dic in dicList)
@@ -2057,7 +2000,7 @@
                             string value = dic["value"];
                             switch (dic["key"])
                             {
-                               
+
                                 case "target_status":
                                     {
                                         if (value == "4")
@@ -2109,8 +2052,26 @@
                             {
                                 button1.Text = Language.StringByID(StringId.shi);
                             }
-                           
+
                         }
+                    }
+                    break;
+                case SPK.MusicStandard:
+                case SPK.AvMusic:
+                    {
+                        foreach (var dic in dicList)
+                        {
+                            if (dic["key"] == "song_name")
+                            {
+                                button1.Text = dic["value"]?.ToString();
+                            }
+                        }
+                    }
+                    break;
+                case SPK.doorgate:
+                    {
+                        string value = this.GetKeyValue("user_id", dicList);
+                        button2.Text = this.GetFaceItem(value, device.deviceId).userName;
                     }
                     break;
             }
@@ -2121,7 +2082,7 @@
         /// <param name="keyValue"></param>
         /// <param name="dicList"></param>
         /// <returns></returns>
-        public static string GetKeyValue(string keyValue, List<Dictionary<string, string>> dicList)
+        public string GetKeyValue(string keyValue, List<Dictionary<string, string>> dicList)
         {
 
             string valueStr = "";
@@ -2137,10 +2098,36 @@
             return valueStr;
         }
         /// <summary>
+        /// 鑾峰彇Key鍊�
+        /// </summary>
+        /// <param name="dicList">娉ㄦ剰:姘歌繙榛樿绗竴涓厓绱�</param>
+        /// <returns></returns>
+        public string GetKey(List<Dictionary<string, string>> dicList)
+        {
+            if (dicList.Count == 0)
+            {
+                return "";
+            }
+            return dicList[0]["key"].ToString();
+        }
+        /// <summary>
+        /// 鑾峰彇value鍊�
+        /// </summary>
+        /// <param name="dicList">娉ㄦ剰:姘歌繙榛樿绗竴涓厓绱�</param>
+        /// <returns></returns>
+        public string GetValue(List<Dictionary<string, string>> dicList)
+        {
+            if (dicList.Count == 0)
+            {
+                return "";
+            }
+            return dicList[0]["value"].ToString();
+        }
+        /// <summary>
         ///鑾峰彇鑷姩鍖栧悕绉�
         /// </summary>
         /// <returns> 鏂板缓鑷姩鍖栧懡鍚嶈鍒�</returns>
-        public static string GetLogicName(Logic logic)
+        public string GetLogicName(Logic logic)
         {
 
             string name = "";
@@ -2163,16 +2150,17 @@
                         }
                         break;
                     case "3":
+                    case "9":
                         {
                             //鐢╯id鎵惧埌璁惧锛�
-                            var device = LogicMethod.CurrLogicMethod.GetDevice(inputCondition.sid);
+                            var device = LogicMethod.Current.GetDevice(inputCondition.sid);
                             name = device.name + "-";
                         }
                         break;
                     case "10":
                         {
                             //鐢╯id鎵惧埌鍦烘櫙锛�
-                            var scene = LogicMethod.CurrLogicMethod.GetSecne(inputCondition.sid);
+                            var scene = LogicMethod.Current.GetSecne(inputCondition.sid);
                             name = scene.name + "-";
                         }
                         break;
@@ -2187,7 +2175,7 @@
                     case "1":
                         {
                             //鐢╯id鎵惧埌璁惧锛�
-                            var device = LogicMethod.CurrLogicMethod.GetDevice(outputTarget.sid);
+                            var device = LogicMethod.Current.GetDevice(outputTarget.sid);
                             //鏄剧ず璁惧鍚嶇О
                             name += device.name;
                             string stateStr = "";
@@ -2197,19 +2185,12 @@
                                 case SPK.AirSwitch:
                                 case SPK.LightSwitch:
                                     {//寮�鍏崇伅
-
-                                        foreach (var dic in dicList)
+                                        string value = this.GetValue(dicList);
+                                        stateStr = Language.StringByID(StringId.offLogic);
+                                        if (value == "on")
                                         {
-                                            string value = dic["value"];
-                                            if (value == "on")
-                                            {
-                                                stateStr = Language.StringByID(StringId.onLogic);
+                                            stateStr = Language.StringByID(StringId.onLogic);
 
-                                            }
-                                            else
-                                            {
-                                                stateStr = Language.StringByID(StringId.offLogic);
-                                            }
                                         }
                                     }
                                     break;
@@ -2218,8 +2199,8 @@
                                 case SPK.LightCCT:
                                 case SPK.LightDimming:
                                     {
-                                        string on_off = InpOrOutLogicMethod.GetKeyValue("on_off", dicList);
-                                        string brightness = InpOrOutLogicMethod.GetKeyValue("brightness", dicList);
+                                        string on_off = this.GetKeyValue("on_off", dicList);
+                                        string brightness = this.GetKeyValue("brightness", dicList);
                                         if (on_off == "on" && brightness != "")
                                         {
                                             stateStr = Language.StringByID(StringId.onLogic) + brightness + "%";
@@ -2268,20 +2249,15 @@
                                     break;
                                 case SPK.AcStandard:
                                 case SPK.HvacAC:
-                                case SPK.FloorHeatStandard:case SPK.HvacFloorHeat:
+                                case SPK.FloorHeatStandard:
+                                case SPK.HvacFloorHeat:
                                     {
-                                        foreach (var dic in dicList)
+                                        string value = this.GetValue(dicList);
+                                        stateStr = Language.StringByID(StringId.offLogic);
+                                        if (value == "on")
                                         {
-                                            string value = dic["value"];
-                                            if (value == "on")
-                                            {
-                                                stateStr = Language.StringByID(StringId.onLogic);
+                                            stateStr = Language.StringByID(StringId.onLogic);
 
-                                            }
-                                            else if (value == "off")
-                                            {
-                                                stateStr = Language.StringByID(StringId.offLogic);
-                                            }
                                         }
 
                                     }
@@ -2294,7 +2270,7 @@
                     case "2":
                         {
                             //鐢╯id鎵惧埌鍦烘櫙锛�
-                            var scene = LogicMethod.CurrLogicMethod.GetSecne(outputTarget.sid);
+                            var scene = LogicMethod.Current.GetSecne(outputTarget.sid);
                             name += scene.name;
 
                         }
@@ -2302,7 +2278,7 @@
                     case "3":
                         {
                             //鐢╯id鎵惧埌瀹夐槻锛�
-                            var security = LogicMethod.CurrLogicMethod.GetSecurity(outputTarget.sid);
+                            var security = LogicMethod.Current.GetSecurity(outputTarget.sid);
                             name += security.name;
 
                         }
@@ -2423,7 +2399,7 @@
         /// </summary>
         /// <param name="dicList">鐘舵�佹暟鎹垪琛�</param>
         /// <returns></returns>
-        private string GetText(List<Dictionary<string, string>> dicList,string key)
+        private string GetText(List<Dictionary<string, string>> dicList, string key)
         {
             string strtext = "";
             foreach (var dic in dicList)
@@ -2483,9 +2459,9 @@
             }
             return strtext;
         }
-        private void SensorView(FrameLayout thisView, Function device,string key, int indexVulae) {
+        private void SensorView(FrameLayout thisView, Function device, string key, int indexVulae)
+        {
             //杩欎釜璁惧姣旇緝鐗规畩
-            ConditionDeviceFunList conditionDeviceFunList = new ConditionDeviceFunList();
             ///褰撳墠鐨勭储寮曞�兼暟鎹璞�
             Input inputedit = Logic.currlogic.input[indexVulae];
             ///鐘舵�佸��
@@ -2508,7 +2484,7 @@
                             {
                                 titleInt = StringId.wendudiyu;
                             }
-                            conditionDeviceFunList.InputBoxAction(device, titleInt, indexVulae, true, stateValue);
+                            ConditionDeviceFunList.Current.InputBoxAction(device, titleInt, indexVulae, true, stateValue);
                         }
                         break;
                     case "humidity":
@@ -2522,32 +2498,51 @@
                             {
                                 titleInt = StringId.shidudiyu;
                             }
-                            conditionDeviceFunList.InputBoxAction(device, titleInt, indexVulae, true, stateValue);
+                            ConditionDeviceFunList.Current.InputBoxAction(device, titleInt, indexVulae, true, stateValue);
                         }
                         break;
                     case "co2":
                         {
-                            conditionDeviceFunList.PmCo2TvocAction(thisView, device, "co2", StringId.co2, indexVulae, true, stateValue);
+                            ConditionDeviceFunList.Current.PmCo2TvocAction(thisView, device, "co2", StringId.co2, indexVulae, true, stateValue);
                         }
                         break;
                     case "pm25":
                         {
-                            conditionDeviceFunList.PmCo2TvocAction(thisView, device, "pm25", StringId.pm25, indexVulae, true, stateValue);
+                            ConditionDeviceFunList.Current.PmCo2TvocAction(thisView, device, "pm25", StringId.pm25, indexVulae, true, stateValue);
                         }
                         break;
                     case "tvoc":
                         {
-                            conditionDeviceFunList.PmCo2TvocAction(thisView, device, "tvoc", StringId.tvoc, indexVulae, true, stateValue);
+                            ConditionDeviceFunList.Current.PmCo2TvocAction(thisView, device, "tvoc", StringId.tvoc, indexVulae, true, stateValue);
                         }
                         break;
                     case "hcho":
                         {
-                            conditionDeviceFunList.PmCo2TvocAction(thisView, device, "hcho", StringId.Formaldehyde, indexVulae, true, stateValue);
+                            ConditionDeviceFunList.Current.PmCo2TvocAction(thisView, device, "hcho", StringId.Formaldehyde, indexVulae, true, stateValue);
                         }
                         break;
                 }
             }
         }
+        /// <summary>
+        /// 鏌ユ壘鎸囧畾userId
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <returns></returns> 
+        public Face GetFaceItem(string userId, string deviceId)
+        {
+            if (Send.Current.faceList.Count == 0)
+            {
+                Send.Current.GetListHomeFace(deviceId, false);
+            }
+            var face = Send.Current.faceList.Find((o) => { return o.userId == userId; });
+            if (face == null)
+            {
+                face = new Face();
+            }
+            return face;
+        }
+
     }
 }
 
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/InputPushText.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/InputPushText.cs
index b05e5c7..6325102 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/InputPushText.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/InputPushText.cs
@@ -82,7 +82,7 @@
                 {
                     try
                     {
-                         userList = Send.GetResidenceMemberAccount();
+                         userList = Send.Current.GetResidenceMemberAccount();
                      
                     }
                     catch { }
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/Logic.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/Logic.cs
index 6f70600..370900f 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/Logic.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/Logic.cs
@@ -98,9 +98,14 @@
         /// 鏌愪釜閫昏緫/鍦烘櫙鐨勮緭鍑烘潯浠�=7;
         /// 鍦扮悊鍥存爮=8;
         /// 绌烘皵璐ㄩ噺=9(搴熷純);
+        /// 鍙瀵硅=9;
         /// 鍦烘櫙=10;
         /// </summary>
         public string condition_type = "";
+        /// <summary>
+        /// condition_type=9鏃朵娇鐢�
+        /// </summary>
+        public string identifier = "";
         public List<Dictionary<string, string>> condition = new List<Dictionary<string, string>>();
         /// <summary>
         /// 鍦扮悊鍥存爮閰嶇疆
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs
index 2c645ad..ab8885b 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs
@@ -10,20 +10,20 @@
     {
         /// <summary>
         /// 瀹氫箟涓�涓潤鎬佸璞�
-        /// </summary>
-        private static LogicMethod logicMethod = null;
+        /// </summary> 
+        private static LogicMethod s_Current = null;   
         /// <summary>
         /// 鑾峰彇闈欐�佸璞�
         /// </summary>
-        public static LogicMethod CurrLogicMethod
+        public static LogicMethod Current
         {
             get
             {
-                if (logicMethod == null)
+                if (s_Current == null)
                 {
                     return new LogicMethod();
                 }
-                return logicMethod;
+                return s_Current;
             }
 
         }
@@ -182,9 +182,35 @@
         /// <returns></returns>
         public List<HDL_ON.Entity.Function> GetGatewayDeviceList()
         {
-            var list = Entity.FunctionList.List.GetDeviceFunctionList();
-            //return GetTestDevice(list, true);
+            var list = new List<HDL_ON.Entity.Function>();
+            var list1 = Entity.FunctionList.List.GetDeviceFunctionList();
+            var list2 = this.GetVideoDeviceList();
+            list.AddRange(list1);
+            list.AddRange(list2);
+            GetTestDevice(ref list, true);
             return list;
+        }
+        /// <summary>
+        /// 鑾峰彇鍙瀵硅璁惧鍒楄〃
+        /// </summary>
+        /// <returns></returns>
+        public List<HDL_ON.Entity.Function> GetVideoDeviceList()
+        {
+            var functionList = new List<Function>();
+            foreach (var videoDevice in FunctionList.List.videoIntercom) {
+                Function function = new Function();
+                function.spk = videoDevice.spk;
+                function.name = videoDevice.deviceName;
+                function.deviceId = videoDevice.deviceId;
+                function.online = videoDevice.status== "online";
+                function.sid = videoDevice.sid;
+                var video = functionList.Find((o) => o.deviceId == function.deviceId);
+                if (video == null) {
+                    functionList.Add(function);
+                }
+
+            }
+            return functionList;
         }
         /// <summary>
         /// 鑾峰彇鍦烘櫙鍒楄〃
@@ -326,7 +352,11 @@
             string strPath = "";
             switch (functionType)
             {
-
+                case SPK.doorgate:
+                    {
+                        strPath = "VideoIcon/keshiduijiang.png";
+                    }
+                    break;
                 case SPK.AirSwitch:
                     {
                         strPath = "FunctionIcon/Icon/electricalbreaker.png";
@@ -405,6 +435,12 @@
                 case SPK.DoorLock:
                     {
                         strPath = "FunctionIcon/DoorLock/DoorLock.png";
+                    }
+                    break;
+                case SPK.MusicStandard:
+                case SPK.AvMusic:
+                    {
+                        strPath = "MusicIcon/localMusic.png";
                     }
                     break;
 
@@ -505,6 +541,18 @@
             {
                 deviceStrTypeList.Add(Language.StringByID(StringId.DoorLock));
             }
+            ///闊充箰绫�
+            var music = deviceList.Find((device) => device.spk == SPK.MusicStandard || device.spk == SPK.AvMusic);
+            if (music != null)
+            {
+                deviceStrTypeList.Add(Language.StringByID(StringId.Music));
+            }
+            ///鍙瀵硅
+            var doorgate = deviceList.Find((device) => device.spk == SPK.doorgate);
+            if (doorgate != null)
+            {
+                deviceStrTypeList.Add(Language.StringByID(StringId.VideoIntercom));
+            }
             return deviceStrTypeList;
 
         }
@@ -592,6 +640,17 @@
             {
                 functionTypeList.Add(SPK.DoorLock);
             }
+            ///闊充箰绫�
+            else if (deviceType == Language.StringByID(StringId.Music))
+            {
+                functionTypeList.Add(SPK.MusicStandard);
+                functionTypeList.Add(SPK.AvMusic);
+            }
+            ///HDL鍙瀵硅
+            else if (deviceType == Language.StringByID(StringId.VideoIntercom))
+            {
+                functionTypeList.Add(SPK.doorgate);
+            }
             else
             {
                 //鍏ㄩ儴鍖哄煙
@@ -640,6 +699,10 @@
                 functionTypeList.Add(SPK.SensorHelp);
                 functionTypeList.Add(SPK.DoorLock);
                 functionTypeList.Add(SPK.CurtainDream);
+                functionTypeList.Add(SPK.MusicStandard);
+                functionTypeList.Add(SPK.AvMusic);
+                functionTypeList.Add(SPK.doorgate);
+
             }
 
 
@@ -694,6 +757,7 @@
                         deviceTypeList.Add(SPK.HvacCac);
                         deviceTypeList.Add(SPK.SensorHelp);
                         deviceTypeList.Add(SPK.DoorLock);
+                        deviceTypeList.Add(SPK.doorgate); 
 
                     }
                     break;
@@ -714,6 +778,8 @@
                         deviceTypeList.Add(SPK.PanelSocket);
                         deviceTypeList.Add(SPK.ElectricSocket);
                         deviceTypeList.Add(SPK.CurtainDream);
+                        deviceTypeList.Add(SPK.MusicStandard);
+                        deviceTypeList.Add(SPK.AvMusic);
                     }
                     break;
             }
@@ -948,8 +1014,8 @@
                 try
                 {
                     //鑾峰彇閫昏緫ID鍒楄〃锛岀洰鍓嶉拡瀵规墍鏈�<澶囨敞:濡傛灉鍙拡瀵瑰綋鍓嶆墜鏈虹殑璇濓紝鍙互鐩存帴鎷跨紦瀛樻暟鎹嚜鍔ㄥ寲鍒楄〃閬嶅巻>
-                    var idStr = Send.GetLogicIdList();
-                    if (idStr.Code == "0" && idStr.Data != null && idStr.Data.ToString() != "")
+                    var idStr = Send.Current.GetLogicIdList();
+                    if (idStr != null)
                     {
                         var date = Newtonsoft.Json.JsonConvert.SerializeObject(idStr.Data);
                         logicDataList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<LogicData>>(date);
@@ -993,7 +1059,7 @@
                             if (isPush == null)
                             {
                                 //鎺ㄩ�佺粰浜戠鏄惁鎴愬姛
-                                bool push = Send.GeoFenceStateReport(logicDate.userLogicId, logicDate.sid, direction);
+                                bool push = Send.Current.GetFenceStateReport(logicDate.userLogicId, logicDate.sid, direction);
                                 if (push)
                                 {
                                     ///娣诲姞鍒版帹閫佸垪琛�
@@ -1023,20 +1089,32 @@
         /// </summary>
         /// <param name="isBool">鏄惁寮�鍚�</param>
         /// <returns></returns>
-        private List<Entity.Function> GetTestDevice(List<HDL_ON.Entity.Function> list, bool isBool)
+        private List<Entity.Function> GetTestDevice(ref List<HDL_ON.Entity.Function> list, bool isBool)
         {
             if (isBool)
             {
-                Entity.Function function = new Entity.Function { sid = "0123456789", name = "瓒呭0娉紶鎰熷櫒", spk = Entity.SPK.SensorUtrasonic };
-                var device = list.Find((o) => { return o.sid == function.sid; });
-                if (device == null)
+                //妯℃嫙璁惧
+                var functions = new List<Function> {
+                 //new Entity.Function { sid = "1234567890", name = "瓒呭0娉紶鎰熷櫒", spk = Entity.SPK.SensorUtrasonic },
+                 // new Entity.Function { sid = "1234567891", name = "娓╁害浼犳劅鍣�", spk = Entity.SPK.SensorTemperature },
+                 //  new Entity.Function { sid = "1234567892", name = "婀垮害浼犳劅鍣�", spk = Entity.SPK.SensorHumidity },
+                 //   new Entity.Function { sid = "1234567893", name = "绾㈠瀵瑰皠浼犳劅鍣�", spk = Entity.SPK.SensorDuiShe },
+                 //     new Entity.Function { sid = "1234567895", name = "瓒呭0娉紶鎰熷櫒", spk = Entity.SPK.SensorUtrasonic },
+                      new Entity.Function { sid = "1234567896", name = "姣背娉紶鎰熷櫒", spk = Entity.SPK.SenesorMegahealth },
+                        new Entity.Function { sid = "1234567897", name = "姣背娉紶鎰熷櫒1", spk = Entity.SPK.SenesorMegahealth2 },
+                       new Entity.Function { sid = "1234567899", name = "闂ㄧ浼犳劅鍣�", spk = Entity.SPK.SensorDoorWindow },
+            };
+                foreach (var function in functions)
                 {
-                    list.Add(function);
+                    var device = list.Find((o) => { return o.sid == function.sid; });
+                    if (device == null)
+                    {
+                        list.Add(function);
+                    }
                 }
 
             }
             return list;
-
 
         }
 
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/TipPopView.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/TipPopView.cs
index c842a69..31feff1 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/TipPopView.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/TipPopView.cs
@@ -893,9 +893,12 @@
         /// 淇℃伅鎻愮ず绐楀彛锛岃嚜鍔ㄥ叧闂�
         /// </summary>
         /// <param name="msg">鎻愮ず閿欒鏂囨湰</param>
-        public void FlashingBox(string msg,int time=2)
+        public void FlashingBox(string msg, int time = 2)
         {
-            new PublicAssmebly().TipMsgAutoClose(msg, false, time*1000);
+            Application.RunOnMainThread(() =>
+            {
+                new PublicAssmebly().TipMsgAutoClose(msg, false, time * 1000);
+            });
         }
 
         /// <summary>
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/MainView.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/MainView.cs
index 66fe538..57848d1 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/MainView.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/MainView.cs
@@ -67,13 +67,12 @@
                         logicView.btnSwitchIcon.IsSelected = false;
                         currLogic.enable = "false";
                     }
-                    //Send.switchLogic(currLogic);
                     new System.Threading.Thread(() =>
                     {
                         try
                         {
                             //閫昏緫浣胯兘鐨勫懡浠�
-                            Send.SwitchLogic(currLogic);
+                            Send.Current.EnableLogic(currLogic);
 
                         }
                         catch { }
@@ -268,8 +267,8 @@
             }
             List<string> logicIdList = new List<string>();
             //鑾峰彇閫昏緫ID鍒楄〃
-            var idStr = Send.GetLogicIdList();
-            if (idStr.Code == "0" && idStr.Data != null && idStr.Data.ToString() != "")
+            var idStr = Send.Current.GetLogicIdList();
+            if (idStr != null)
             {
                 var date = Newtonsoft.Json.JsonConvert.SerializeObject(idStr.Data);
                 var dateList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<LogicData>>(date);
@@ -280,17 +279,13 @@
                 }
             }
             //鑾峰彇鑷姩鍖栧垪琛�
-            var logicStr = Send.GetLogic(logicIdList);
-            if (logicStr.Code == "0" && logicStr.Data != null && logicStr.Data.ToString() != "")
+            var logicListStr = Send.Current.GetLogic(logicIdList);
+            if (logicListStr != null)
             {
-                //鑾峰彇閫昏緫璇︾粏杩斿洖鏄竴涓暟缁�(object绫诲瀷杞崲涓烘暟缁�);
-                var jArray = JArray.Parse(logicStr.Data.ToString());
-                for (int a = 0; a < jArray.Count; a++)
+                var logicList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Logic>>(logicListStr.Data.ToString());
+                for (int j = 0; j < logicList.Count; j++)
                 {
-                    var jay = jArray[a];
-                    //鏁版嵁杩斿簭鍒楀寲涓篖ogic瀵硅薄
-                    var str = Newtonsoft.Json.JsonConvert.SerializeObject(jay);
-                    var logic = Newtonsoft.Json.JsonConvert.DeserializeObject<Logic>(str);
+                    var logic = logicList[j];
                     if (logic != null)
                     {
                         //鏌ユ壘鏄惁宸茬粡瀛樺湪璇ラ�昏緫
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/OnePortAutomation.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/OnePortAutomation.cs
index 6da7fb2..e548adf 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/OnePortAutomation.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/OnePortAutomation.cs
@@ -67,7 +67,7 @@
             }
 
             // 鏉′欢澶勭悊鏂规硶
-            InpOrOutLogicMethod.InputCondition(this, viewLayout);
+            InpOrOutLogicMethod.Current.InputCondition(this, viewLayout);
             ///娣诲姞鍥炬爣鐨刅iew
             LogicView.LogicAddView addInputIcon = new LogicView.LogicAddView();
             addInputIcon.frameLayout.SetCornerWithSameRadius(Application.GetRealHeight(12), HDLUtils.RectCornerBottomLeft | HDLUtils.RectCornerBottomRight);
@@ -79,7 +79,7 @@
             LogicView.AddOutputInputTextView addOutpuTextView = new LogicView.AddOutputInputTextView();
             addOutpuTextView.btnIf.TextID = StringId.isExecuted;
             viewLayout.AddChidren(addOutpuTextView.FLayoutView(54, 20));
-            
+
 
             #region  鎵ц鎺ㄩ�� 鍙戦�侀�氱煡
             ///涓婁笅闂撮殧12鍍忕礌
@@ -187,7 +187,7 @@
                 }
                 Loading loading = new Loading();
                 this.AddChidren(loading);
-                HDL_ON.DAL.Server.ResponsePackNew responsePackNew = null;
+                HDL_ON.DAL.Server.ResponsePackNew r = null;
                 if (string.IsNullOrEmpty(Logic.currlogic.userLogicId))
                 {
                     List<string> list = new List<string>();
@@ -195,15 +195,15 @@
                     {
                         list.Add(logic.name);
                     }
-                    new LogicView.TipPopView().InputBox(StringId.editName, InpOrOutLogicMethod.GetLogicName(Logic.currlogic), StringId.nameNull, StringId.NameAlreadyExists, list, (logicName, view) =>
+                    new LogicView.TipPopView().InputBox(StringId.editName, InpOrOutLogicMethod.Current.GetLogicName(Logic.currlogic), StringId.nameNull, StringId.NameAlreadyExists, list, (logicName, view) =>
                     {
                         Logic.currlogic.name = logicName;
-                        Logic.currlogic.sid = LogicMethod.CurrLogicMethod.NewSid();
+                        Logic.currlogic.sid = LogicMethod.Current.NewSid();
                         if (MainPage.NoLoginMode)
                         {
                             Logic.currlogic.userLogicId = Guid.NewGuid().ToString();
                             Logic.LogicList.Add(Logic.currlogic);
-                            LogicMethod.CurrLogicMethod.RemoveAllView();
+                            LogicMethod.Current.RemoveAllView();
                             MainView.MainShow();
                             return;
                         }
@@ -213,8 +213,7 @@
                             try
                             {
                                 //鍙戦�佹柊鍔犻�昏緫鍛戒护锛�
-                                responsePackNew = Send.AddLogic(Logic.currlogic);
-
+                                r = Send.Current.AddLogic(Logic.currlogic, true);
                             }
                             catch { }
                             finally
@@ -222,42 +221,24 @@
                                 Application.RunOnMainThread(() =>
                                 {
                                     loading.Hide();
-                                    if (responsePackNew != null && responsePackNew.Code == "0" && responsePackNew.Data.ToString() != "")
+                                    if (r != null)
                                     {
-
-
-                                        //鑾峰彇閫昏緫璇︾粏杩斿洖鏄竴涓暟缁�(object绫诲瀷杞崲涓烘暟缁�);
-                                        var jArray = Newtonsoft.Json.Linq.JArray.Parse(responsePackNew.Data.ToString());
-                                        for (int a = 0; a < jArray.Count; a++)
+                                        var userLogicIdList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Logic>>(r.Data.ToString());
+                                        for (int i = 0; i < userLogicIdList.Count; i++)
                                         {
-                                            var jay = jArray[a];
-                                            //鏁版嵁杩斿簭鍒楀寲涓篖ogic瀵硅薄
-                                            var str = Newtonsoft.Json.JsonConvert.SerializeObject(jay);
-                                            var logic = Newtonsoft.Json.JsonConvert.DeserializeObject<Logic>(str);
-                                            if (logic.userLogicId != "")
-                                            {
-                                                //鏇存柊浜戠鍞竴鑷姩鍖杋d;
-                                                Logic.currlogic.userLogicId = logic.userLogicId;
-                                            }
-                                            else
+                                            var logic = userLogicIdList[i];
+                                            if (string.IsNullOrEmpty(logic.userLogicId))
                                             {
                                                 //鑷繁鐪嬬殑鎵�浠ヤ笉闇�瑕佹敮鎸佷腑鑻辨枃
                                                 new LogicView.TipPopView().FlashingBox("娌℃湁杩斿洖浜戠鍞竴鑷姩鍖杋d");
                                             }
-
+                                            //鏇存柊浜戠鍞竴鑷姩鍖杋d;
+                                            Logic.currlogic.userLogicId = logic.userLogicId;
                                         }
 
                                         Logic.LogicList.Add(Logic.currlogic);
-                                        LogicMethod.CurrLogicMethod.RemoveAllView();
+                                        LogicMethod.Current.RemoveAllView();
                                         MainView.MainShow();
-                                    }
-                                    else if (responsePackNew != null && responsePackNew.Code == "14005")
-                                    {
-                                        new LogicView.TipPopView().FlashingBox(Language.StringByID(StringId.gatewayNotOnline));
-                                    }
-                                    else
-                                    {
-                                        new LogicView.TipPopView().FlashingBox(Language.StringByID(StringId.saveFail));
                                     }
                                 });
                             }
@@ -277,7 +258,7 @@
                         try
                         {
                             //鍙戦�佷慨鏀归�昏緫鍛戒护锛�
-                            responsePackNew = Send.UpdateLogic(Logic.currlogic);
+                            r = Send.Current.UpdateLogic(Logic.currlogic, true);
 
                         }
                         catch { }
@@ -286,23 +267,14 @@
                             Application.RunOnMainThread(() =>
                             {
                                 loading.Hide();
-                                if (responsePackNew != null && responsePackNew.Code == "0")
+                                if (r != null)
                                 {
-                                    LogicMethod.CurrLogicMethod.RemoveAllView();
+                                    LogicMethod.Current.RemoveAllView();
                                     MainView.MainShow();
                                 }
-                                else if (responsePackNew != null && responsePackNew.Code == "14005")
-                                {
-                                    new LogicView.TipPopView().FlashingBox(Language.StringByID(StringId.gatewayNotOnline));
-                                }
-                                else
-                                {
-                                    new LogicView.TipPopView().FlashingBox(Language.StringByID(StringId.saveFail));
-                                }
+
                             });
                         }
-
-
 
                     })
                     { IsBackground = true }.Start();
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/OutdoorEnvironment.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/OutdoorEnvironment.cs
index 0e7d6c0..5c4ec9f 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/OutdoorEnvironment.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/OutdoorEnvironment.cs
@@ -181,13 +181,13 @@
         public void AddDic(string keyValue, string comparator,string value,string data_type)
         {
             Input input = new Input();
-            input.sid = LogicMethod.CurrLogicMethod.NewSid();
+            input.sid = LogicMethod.Current.NewSid();
             input.condition_type = "6";
             Dictionary<string, string> dic = new Dictionary<string, string>();
-            LogicMethod.CurrLogicMethod.dictionary(dic, "key", keyValue);
-            LogicMethod.CurrLogicMethod.dictionary(dic, "comparator", comparator);
-            LogicMethod.CurrLogicMethod.dictionary(dic, "data_type", data_type);
-            LogicMethod.CurrLogicMethod.dictionary(dic, "value", value);
+            LogicMethod.Current.dictionary(dic, "key", keyValue);
+            LogicMethod.Current.dictionary(dic, "comparator", comparator);
+            LogicMethod.Current.dictionary(dic, "data_type", data_type);
+            LogicMethod.Current.dictionary(dic, "value", value);
             input.condition.Add(dic);
             AddCondition(input, keyValue, comparator);
         }
@@ -227,7 +227,7 @@
                 Logic.currlogic.input.Add(input);
             }
 
-            LogicMethod.CurrLogicMethod.RemoveAllView();
+            LogicMethod.Current.RemoveAllView();
             AddLogic addLogic = new AddLogic();
             MainPage.BasePageView.AddChidren(addLogic);
             addLogic.Show();
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/PublicInterface.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/PublicInterface.cs
index ee921ce..0dc90c0 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/PublicInterface.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/PublicInterface.cs
@@ -261,9 +261,10 @@
         /// </summary>
         /// <param name="frame">鏄剧ず鍦ㄥ摢涓晫闈㈢殑鐖舵帶浠�</param>
         /// <param name="list">鏄剧ず鏁版嵁婧�</param>
+        /// <param name="stateList">涔嬪墠鐘舵�佹暟鎹簮</param>
         /// <param name="titleText">鏍囬</param>
         /// <param name="action">杩斿洖鍊肩储寮曞��</param>
-        public void FrameOrVv(FrameLayout frame, List<string> list, List<string> stateList, int titleText, Action<int> action)
+        public void FrameOrVv(FrameLayout frame, List<string> list, List<string> stateList, string titleText, Action<int> action,bool isIcon=true)
         {
 
             int line = 0;
@@ -284,7 +285,7 @@
             frame.AddChidren(frameLayout);
 
             LogicView.DateView view = new LogicView.DateView();
-            view.btnTitle.TextID = titleText;
+            view.btnTitle.Text = titleText;
             view.FLayoutView(frameLayout, line);
             view.btnCancel.MouseUpEventHandler += (sender, e) =>
             {
@@ -310,7 +311,7 @@
                 verticalRefresh.EndHeaderRefreshing();
             };
 
-            if (list.Count == 0)
+            if (list.Count == 0&&isIcon)
             {
                 Button btnTipNot = new Button
                 {
@@ -367,12 +368,18 @@
                     verticalRefresh.AddChidren(checkView.FLayoutView());
                 }
 
-                if (stateList.Contains(strName))
-                {
-                    checkView.btnCheckIcon.IsSelected = true;
-                }
                 checkView.btnText.Text = strName;
                 checkView.btnClick.Tag = i;//鏍囪
+
+                if (stateList.Contains(strName))
+                {
+                    //checkView.btnCheckIcon.IsSelected = true;
+
+                    checkBtn.IsSelected = false;
+                    checkView.btnCheckIcon.IsSelected = true;
+                    checkBtn = checkView.btnCheckIcon;
+                    checkBtn.Tag = checkView.btnClick.Tag.ToString();
+                }
                 //鐐瑰嚮浜嬩欢
                 checkView.btnClick.MouseUpEventHandler += (sender1, e1) =>
                 {
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/Security.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/Security.cs
index 548c92b..062e4c5 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/Security.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/Security.cs
@@ -28,7 +28,7 @@
                 BackgroundColor = CSS.CSS_Color.viewMiddle,
             };
             this.AddChidren(viewLayout);
-            var securityList = LogicMethod.CurrLogicMethod.GetSecurityList();
+            var securityList = LogicMethod.Current.GetSecurityList();
             for (int i = 0; i < securityList.Count; i++)
             {
                 var security = securityList[i];
@@ -93,7 +93,7 @@
              outputDevice.sid = sid;
              outputDevice.status = new List<Dictionary<string, string>> { new Dictionary<string, string> { { "key", "security" }, { "value", selecttionMode } } };
              AddOutput(outputDevice, true);
-             LogicMethod.CurrLogicMethod.RemoveAllView();
+             LogicMethod.Current.RemoveAllView();
              AddLogic addLogic = new AddLogic();
              MainPage.BasePageView.AddChidren(addLogic);
              addLogic.Show();
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs
index d955285..5a95e83 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs
@@ -8,410 +8,543 @@
 
 namespace HDL_ON.UI.UI2.Intelligence.Automation
 {
-  public class Send
-  {
-
-    /// <summary>
-    /// 璋冪敤鑾峰彇浣忓畢瀛愯处鍙峰垪琛�
-    /// </summary>
-    public static List<ResidenceMemberInfo> GetResidenceMemberAccount()
+    public class Send
     {
-
-      var responePack = new HttpServerRequest().GetResidenceMemberAccount();
-      if (responePack.Code == StateCode.SUCCESS)
-      {
-        return Newtonsoft.Json.JsonConvert.DeserializeObject<List<ResidenceMemberInfo>>(responePack.Data.ToString());
-      }
-      //澶辫触
-      else
-      {
-        //鎻愮ず
-        IMessageCommon.Current.ShowErrorInfoAlter(responePack.Code);
-      }
-      return new List<ResidenceMemberInfo>();
-    }
-    /// <summary>
-    /// 鑾峰彇閫昏緫ID鍒楄〃
-    /// </summary>
-    /// <returns></returns>
-    public static ResponsePackNew GetLogicIdList()
-    {
-      var jObject = new JObject { { "homeId", LogicMethod.CurrLogicMethod.HomeId } };
-      var responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_List);
-      //濡傛灉鏄痶oken杩囨湡鍒欏埛鏂皌oken
-      if (responsePackNew.Code == StateCode.TOKEN_EXPIRED)
-      {
-        RefreshToken();
-        GetLogicIdList();
-      }
-      return responsePackNew;
-    }
-    /// <summary>
-    /// 鑾峰彇閫昏緫
-    /// </summary>
-    /// <param name="listIdList">閫昏緫ID鍒楄〃</param>
-    /// <returns></returns>
-    public static ResponsePackNew GetLogic(List<string> listIdList)
-    {
-      var jArray = new JArray { };
-      for (int i = 0; i < listIdList.Count; i++)
-      {
-        jArray.Add(listIdList[i]);
-      }
-      var jObject = new JObject { { "userLogicIds", jArray } };
-      var responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_Info);
-      //濡傛灉鏄痶oken杩囨湡鍒欏埛鏂皌oken
-      if (responsePackNew.Code == StateCode.TOKEN_EXPIRED)
-      {
-        RefreshToken();
-        GetLogic(listIdList);
-      }
-      return responsePackNew;
-    }
-    /// <summary>
-    /// 娣诲姞鑷姩鍖栧懡浠� 
-    /// </summary>
-    /// <param name="logic"></param>
-    /// <returns></returns>
-    public static ResponsePackNew AddLogic(Logic logic)
-    {
-      ResponsePackNew responsePackNew = null;
-      try
-      {
-
-        var cycleJObject = new JObject { };
-        var cyclevaluejArray = new JArray { };
-        cycleJObject.Add("type", logic.cycle.type);
-        foreach (var dictionary in logic.cycle.value)
+        private static Send s_Current = null;  
+        public static Send Current
         {
-          cyclevaluejArray.Add(dictionary);
-        }
-        cycleJObject.Add("value", cyclevaluejArray);
-
-        var inputArray = new JArray { };
-        foreach (var dictionary in logic.input)
-        {
-          var inputTypeJOb = new JObject { };
-          inputTypeJOb.Add("sid", dictionary.sid);
-          inputTypeJOb.Add("condition_type", dictionary.condition_type);
-
-          var conditionArray = new JArray { };
-          foreach (var dic in dictionary.condition)
-          {
-            var conditionJOb = new JObject { };
-            conditionJOb.Add("key", dic["key"]);
-            conditionJOb.Add("comparator", dic["comparator"]);
-            conditionJOb.Add("data_type", dic["data_type"]);
-            conditionJOb.Add("value", dic["value"]);
-            conditionArray.Add(conditionJOb);
-          }
-          inputTypeJOb.Add("condition", conditionArray);
-          if (dictionary.condition_type == "8")
-          {
-            ///鍦扮悊鍥存爮
-            var geo_fencejob = new JObject();
-            geo_fencejob.Add("longitude", dictionary.geo_fence.longitude);
-            geo_fencejob.Add("latitude", dictionary.geo_fence.latitude);
-            geo_fencejob.Add("radius", dictionary.geo_fence.radius);
-            inputTypeJOb.Add("geo_fence", geo_fencejob);
-          }
-          inputArray.Add(inputTypeJOb);
-        }
-
-        var outputArray = new JArray { };
-        foreach (var dictionary in logic.output)
-        {
-          var outputTypeJOb = new JObject { };
-          outputTypeJOb.Add("sid", dictionary.sid);
-          outputTypeJOb.Add("delay", dictionary.delay);
-          outputTypeJOb.Add("target_type", dictionary.target_type);
-          var statusArray = new JArray { };
-          foreach (var dic in dictionary.status)
-          {
-            var statusJOb = new JObject { };
-            statusJOb.Add("key", dic["key"]);
-            statusJOb.Add("value", dic["value"]);
-            statusArray.Add(statusJOb);
-          }
-          outputTypeJOb.Add("status", statusArray);
-          outputArray.Add(outputTypeJOb);
-        }
-
-
-        var noticeConfigJObject = new JObject();
-        noticeConfigJObject.Add("enable", logic.noticeConfig.enable);
-        noticeConfigJObject.Add("noticeContent", logic.noticeConfig.noticeContent);
-
-        var pushConfigsArray = new JArray { };
-        if (logic.pushConfigs.Count > 0)
-        {   //聽鎺ㄩ�佹枃鏈�
-          foreach (var pushConfig in logic.pushConfigs)
-          {
-
-            var pushConfigJob = new JObject { };
-            pushConfigJob.Add("pushMethod", pushConfig.pushMethod);
-            var accountArray = new JArray { };
-            foreach (var account in pushConfig.pushTarget)
+            get
             {
-              accountArray.Add(account);
+                if (s_Current == null)
+                {
+                    s_Current = new Send();
+                }
+                return s_Current;
             }
-            pushConfigJob.Add("pushTarget", accountArray);
-            pushConfigsArray.Add(pushConfigJob);
-          }
         }
-
-        var logicjArray = new JArray { };
-        var logicIfon = new JObject { };
-        logicIfon.Add("sid", logic.sid);
-        logicIfon.Add("gatewayId", LogicMethod.CurrLogicMethod.GatewayId);
-        logicIfon.Add("tag", logic.tag);
-        logicIfon.Add("name", logic.name);
-        logicIfon.Add("relation", logic.relation);
-        logicIfon.Add("enable", logic.enable);
-        logicIfon.Add("cycle", cycleJObject);
-        logicIfon.Add("input", inputArray);
-        logicIfon.Add("output", outputArray);
-        logicIfon.Add("noticeConfig", noticeConfigJObject);
-        logicIfon.Add("pushConfigs", pushConfigsArray);
-        logicjArray.Add(logicIfon);
-       //string str = logicIfon.ToString();
-        var jObject = new JObject { { "homeId", LogicMethod.CurrLogicMethod.HomeId }, { "logics", logicjArray } };
-        responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_Add, 5);
-        //濡傛灉鏄痶oken杩囨湡鍒欏埛鏂皌oken
-        if (responsePackNew.Code == StateCode.TOKEN_EXPIRED)
+        public List<Face> faceList = new List<Face>();
+        /// <summary>
+        /// 璋冪敤鑾峰彇浣忓畢瀛愯处鍙峰垪琛�
+        /// </summary>
+        public  List<ResidenceMemberInfo> GetResidenceMemberAccount()
         {
-          RefreshToken();
-          AddLogic(logic);
-        }
-      }
-      catch (Exception e)
-      {
-        var dd = e.Message;
-      }
-      return responsePackNew;
-    }
-    /// <summary>
-    /// 缂栬緫鏇存柊閫昏緫
-    /// </summary>
-    /// <param name="logic"></param>
-    /// <returns></returns>
-    public static ResponsePackNew UpdateLogic(Logic logic)
-    {
-      ResponsePackNew responsePackNew = null;
-      try
-      {
-        var cycleJObject = new JObject { };
-        var cyclevaluejArray = new JArray { };
-        cycleJObject.Add("type", logic.cycle.type);
-        foreach (var dictionary in logic.cycle.value)
-        {
-          cyclevaluejArray.Add(dictionary);
-        }
-        cycleJObject.Add("value", cyclevaluejArray);
 
-        var inputArray = new JArray { };
-        foreach (var dictionary in logic.input)
-        {
-          var inputTypeJOb = new JObject { };
-          inputTypeJOb.Add("sid", dictionary.sid);
-          inputTypeJOb.Add("condition_type", dictionary.condition_type);
-
-          var conditionArray = new JArray { };
-          foreach (var dic in dictionary.condition)
-          {
-
-            var conditionJOb = new JObject { };
-            conditionJOb.Add("key", dic["key"]);
-            var c1 = "";
-            dic.TryGetValue("comparator", out c1);
-            c1 = string.IsNullOrEmpty(c1) ? "" : c1;
-            conditionJOb.TryAdd("comparator", c1);
-            conditionJOb.Add("data_type", dic["data_type"]);
-            conditionJOb.Add("value", dic["value"]);
-            conditionArray.Add(conditionJOb);
-            if (dictionary.condition_type == "8")
+            var responePack = new HttpServerRequest().GetResidenceMemberAccount();
+            if (responePack.Code == StateCode.SUCCESS)
             {
-              ///鍦扮悊鍥存爮
-              var geo_fencejob = new JObject();
-              geo_fencejob.Add("longitude", dictionary.geo_fence.longitude);
-              geo_fencejob.Add("latitude", dictionary.geo_fence.latitude);
-              geo_fencejob.Add("radius", dictionary.geo_fence.radius);
-              inputTypeJOb.Add("geo_fence", geo_fencejob);
+                return Newtonsoft.Json.JsonConvert.DeserializeObject<List<ResidenceMemberInfo>>(responePack.Data.ToString());
             }
-          }
-          inputTypeJOb.Add("condition", conditionArray);
-          inputArray.Add(inputTypeJOb);
-        }
-
-        var outputArray = new JArray { };
-        foreach (var dictionary in logic.output)
-        {
-          var outputTypeJOb = new JObject { };
-          outputTypeJOb.Add("sid", dictionary.sid);
-          outputTypeJOb.Add("delay", dictionary.delay);
-          outputTypeJOb.Add("target_type", dictionary.target_type);
-          var statusArray = new JArray { };
-          foreach (var dic in dictionary.status)
-          {
-            var statusJOb = new JObject { };
-            statusJOb.Add("key", dic["key"]);
-            statusJOb.Add("value", dic["value"]);
-            statusArray.Add(statusJOb);
-          }
-          outputTypeJOb.Add("status", statusArray);
-          outputArray.Add(outputTypeJOb);
-        }
-
-        var noticeConfigJObject = new JObject();
-        noticeConfigJObject.Add("enable", logic.noticeConfig.enable);
-        noticeConfigJObject.Add("noticeContent", logic.noticeConfig.noticeContent);
-
-        var pushConfigsArray = new JArray { };
-        if (logic.pushConfigs.Count > 0)
-        {
-          //聽鎺ㄩ�佹枃鏈�
-          foreach (var pushConfig in logic.pushConfigs)
-          {
-
-            var pushConfigJob = new JObject { };
-            pushConfigJob.Add("pushMethod", pushConfig.pushMethod);
-            var accountArray = new JArray { };
-            foreach (var account in pushConfig.pushTarget)
+            //澶辫触
+            else
             {
-              accountArray.Add(account);
+                //鎻愮ず
+                IMessageCommon.Current.ShowErrorInfoAlter(responePack.Code);
             }
-            pushConfigJob.Add("pushTarget", accountArray);
-            pushConfigsArray.Add(pushConfigJob);
-          }
+            return new List<ResidenceMemberInfo>();
         }
-
-        var logicjArray = new JArray { };
-        var logicIfon = new JObject { };
-        logicIfon.Add("userLogicId", logic.userLogicId);
-        logicIfon.Add("sid", logic.sid);
-        logicIfon.Add("gatewayId", LogicMethod.CurrLogicMethod.GatewayId);
-        logicIfon.Add("tag", logic.tag);
-        logicIfon.Add("name", logic.name);
-        logicIfon.Add("relation", logic.relation);
-        logicIfon.Add("enable", logic.enable);
-        logicIfon.Add("cycle", cycleJObject);
-        logicIfon.Add("input", inputArray);
-        logicIfon.Add("output", outputArray);
-        logicIfon.Add("noticeConfig", noticeConfigJObject);
-        logicIfon.Add("pushConfigs", pushConfigsArray);
-
-        logicjArray.Add(logicIfon);
-        var jObject = new JObject { { "homeId", LogicMethod.CurrLogicMethod.HomeId }, { "logics", logicjArray } };
-
-        string str = jObject.ToString();
-        responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_Update, 5);
-        //濡傛灉鏄痶oken杩囨湡鍒欏埛鏂皌oken
-        if (responsePackNew.Code == StateCode.TOKEN_EXPIRED)
+        /// <summary>
+        /// 鑾峰彇閫昏緫ID鍒楄〃
+        /// </summary>
+        /// <returns></returns>
+        public ResponsePackNew GetLogicIdList(bool isTip = false)
         {
-          RefreshToken();
-          UpdateLogic(logic);
+            var jObject = new JObject { { "homeId", LogicMethod.Current.HomeId } };
+            var responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_List, "鑾峰彇閫昏緫ID鍒楄〃");
+            //濡傛灉鏄痶oken杩囨湡鍒欏埛鏂皌oken
+            if (responsePackNew.Code == StateCode.TOKEN_EXPIRED)
+            {
+                RefreshToken();
+                GetLogicIdList(isTip);
+            }
+            if (Check(responsePackNew, isTip) == false)
+            {
+                return null;
+            }
+            return responsePackNew;
         }
-      }
-      catch (Exception e)
-      {
-        var dd = e.Message;
-      }
-      return responsePackNew;
-    }
-    /// <summary>
-    /// 鍒犻櫎閫昏緫
-    /// </summary>
-    /// <returns></returns>
-    public static ResponsePackNew DelLogic(Logic logic)
-    {
-      var jArray = new JArray { };
-      jArray.Add(logic.userLogicId);
-      var jObject = new JObject { { "userLogicIds", jArray } };
-      var responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_Delete);
-      //濡傛灉鏄痶oken杩囨湡鍒欏埛鏂皌oken
-      if (responsePackNew.Code == StateCode.TOKEN_EXPIRED)
-      {
-        RefreshToken();
-        DelLogic(logic);
-      }
-      return responsePackNew;
-    }
-    /// <summary> 
-    /// 閫昏緫寮�鍏�
-    /// </summary>
-    /// <returns></returns>
-    public static ResponsePackNew SwitchLogic(Logic logic)
-    {
-      var jArray = new JArray { };
-      var job = new JObject { { "userLogicId", logic.userLogicId }, { "enable", logic.enable } };
-      jArray.Add(job);
-      var jObject = new JObject { { "logics", jArray } };
-      var responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_Enable);
-      //濡傛灉鏄痶oken杩囨湡鍒欏埛鏂皌oken
-      if (responsePackNew.Code == StateCode.TOKEN_EXPIRED)
-      {
-        RefreshToken();
-        SwitchLogic(logic);
-      }
-      return responsePackNew;
-    }
-    /// <summary> 
-    /// 鑷姩鍖栧湴鐞嗗洿鏍忕姸鎬佷笂鎶�
-    /// </summary>
-    /// <param name="userLogicId">鑷姩鍖栦簯绔痠d<澶囨敞锛歭ogicSid涓巙serLogicId 涓嶈兘鍚屾椂涓虹┖></param>
-    /// <param name="logicSid">鑷姩鍖杝id<澶囨敞锛歭ogicSid涓巙serLogicId 涓嶈兘鍚屾椂涓虹┖></param>
-    /// <param name="direction">arrive:鍒拌揪(杩涘叆) leave锛氱寮�</param>
-    /// <returns></returns>
-    public static bool GeoFenceStateReport(string userLogicId, string logicSid, string direction)
-    {
-      var jObject = new JObject();
-      jObject.Add("homeId", LogicMethod.CurrLogicMethod.HomeId);
-      jObject.Add("userLogicId", userLogicId);
-      jObject.Add("sid", logicSid);
-      jObject.Add("direction", direction);
-      var responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_GeoFenceStateReport);
-      //濡傛灉鏄痶oken杩囨湡鍒欏埛鏂皌oken
-      if (responsePackNew.Code == StateCode.TOKEN_EXPIRED)
-      {
-        RefreshToken();
-        GeoFenceStateReport(userLogicId, logicSid, direction);
-      }
-      if (responsePackNew.Code == "0")
-      {
-        //鎴愬姛
-        return true;
-      }
-      //澶辫触
-      return false;
-    }
+        /// <summary>
+        /// 鑾峰彇鑷姩鍖栬鎯�
+        /// </summary>
+        /// <param name="listIdList">鑷姩鍖朓D鍒楄〃</param>
+        /// <returns></returns>
+        public  ResponsePackNew GetLogic(List<string> listIdList, bool isTip = false)
+        {
+            var jArray = new JArray { };
+            for (int i = 0; i < listIdList.Count; i++)
+            {
+                jArray.Add(listIdList[i]);
+            }
+            var jObject = new JObject { { "userLogicIds", jArray } };
+            var responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_Info, "鑾峰彇鑷姩鍖栬鎯�");
+            //濡傛灉鏄痶oken杩囨湡鍒欏埛鏂皌oken
+            if (responsePackNew.Code == StateCode.TOKEN_EXPIRED)
+            {
+                RefreshToken();
+                GetLogic(listIdList,isTip);
+            }
+            if (Check(responsePackNew, isTip) == false)
+            {
+                return null;
+            }
+            return responsePackNew;
+        }
+        /// <summary>
+        /// 娣诲姞鑷姩鍖栧懡浠� 
+        /// </summary>
+        /// <param name="logic"></param>
+        /// <returns></returns>
+        public  ResponsePackNew AddLogic(Logic logic,bool isTip)
+        {
+            ResponsePackNew responsePackNew = null;
+            try
+            {
 
-    /// <summary>
-    ///璇锋眰鏈嶅姟鍣紙涓庝綇瀹呮湁鍏�:渚嬪锛沨omeId锛� 
-    /// </summary>
-    /// <returns></returns>
-    public static ResponsePackNew RequestServerhomeId(object o, string api_Url, int mTimeout = 3)
-    {
-      var requestJson = HttpUtil.GetSignRequestJson(o);
-      return HttpUtil.RequestHttpsPostFroHome(api_Url, requestJson, mTimeout);
+                var cycleJObject = new JObject { };
+                var cyclevaluejArray = new JArray { };
+                cycleJObject.Add("type", logic.cycle.type);
+                foreach (var dictionary in logic.cycle.value)
+                {
+                    cyclevaluejArray.Add(dictionary);
+                }
+                cycleJObject.Add("value", cyclevaluejArray);
+
+                var inputArray = new JArray { };
+                foreach (var dictionary in logic.input)
+                {
+                    var inputTypeJOb = new JObject { };
+                    inputTypeJOb.Add("sid", dictionary.sid);
+                    inputTypeJOb.Add("condition_type", dictionary.condition_type);
+                    if (dictionary.condition_type=="9") {
+                        inputTypeJOb.Add("identifier", dictionary.identifier);
+                    }
+                    var conditionArray = new JArray { };
+                    foreach (var dic in dictionary.condition)
+                    {
+                        var conditionJOb = new JObject { };
+                        conditionJOb.Add("key", dic["key"]);
+                        conditionJOb.Add("comparator", dic["comparator"]);
+                        conditionJOb.Add("data_type", dic["data_type"]);
+                        conditionJOb.Add("value", dic["value"]);
+                        conditionArray.Add(conditionJOb);
+                    }
+                    inputTypeJOb.Add("condition", conditionArray);
+                    if (dictionary.condition_type == "8")
+                    {
+                        ///鍦扮悊鍥存爮
+                        var geo_fencejob = new JObject();
+                        geo_fencejob.Add("longitude", dictionary.geo_fence.longitude);
+                        geo_fencejob.Add("latitude", dictionary.geo_fence.latitude);
+                        geo_fencejob.Add("radius", dictionary.geo_fence.radius);
+                        inputTypeJOb.Add("geo_fence", geo_fencejob);
+                    }
+                    inputArray.Add(inputTypeJOb);
+                }
+
+                var outputArray = new JArray { };
+                foreach (var dictionary in logic.output)
+                {
+                    var outputTypeJOb = new JObject { };
+                    outputTypeJOb.Add("sid", dictionary.sid);
+                    outputTypeJOb.Add("delay", dictionary.delay);
+                    outputTypeJOb.Add("target_type", dictionary.target_type);
+                    var statusArray = new JArray { };
+                    foreach (var dic in dictionary.status)
+                    {
+                        var statusJOb = new JObject { };
+                        statusJOb.Add("key", dic["key"]);
+                        statusJOb.Add("value", dic["value"]);
+                        statusArray.Add(statusJOb);
+                    }
+                    outputTypeJOb.Add("status", statusArray);
+                    outputArray.Add(outputTypeJOb);
+                }
+
+
+                var noticeConfigJObject = new JObject();
+                noticeConfigJObject.Add("enable", logic.noticeConfig.enable);
+                noticeConfigJObject.Add("noticeContent", logic.noticeConfig.noticeContent);
+
+                var pushConfigsArray = new JArray { };
+                if (logic.pushConfigs.Count > 0)
+                {   //聽鎺ㄩ�佹枃鏈�
+                    foreach (var pushConfig in logic.pushConfigs)
+                    {
+
+                        var pushConfigJob = new JObject { };
+                        pushConfigJob.Add("pushMethod", pushConfig.pushMethod);
+                        var accountArray = new JArray { };
+                        foreach (var account in pushConfig.pushTarget)
+                        {
+                            accountArray.Add(account);
+                        }
+                        pushConfigJob.Add("pushTarget", accountArray);
+                        pushConfigsArray.Add(pushConfigJob);
+                    }
+                }
+
+                var logicjArray = new JArray { };
+                var logicIfon = new JObject { };
+                logicIfon.Add("sid", logic.sid);
+                logicIfon.Add("gatewayId", LogicMethod.Current.GatewayId);
+                logicIfon.Add("tag", logic.tag);
+                logicIfon.Add("name", logic.name);
+                logicIfon.Add("relation", logic.relation);
+                logicIfon.Add("enable", logic.enable);
+                logicIfon.Add("cycle", cycleJObject);
+                logicIfon.Add("input", inputArray);
+                logicIfon.Add("output", outputArray);
+                logicIfon.Add("noticeConfig", noticeConfigJObject);
+                logicIfon.Add("pushConfigs", pushConfigsArray);
+                logicjArray.Add(logicIfon);
+                 var jObject = new JObject { { "homeId", LogicMethod.Current.HomeId }, { "logics", logicjArray } };
+                responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_Add, "娣诲姞鑷姩鍖�", 5);
+                //濡傛灉鏄痶oken杩囨湡鍒欏埛鏂皌oken
+                if (responsePackNew.Code == StateCode.TOKEN_EXPIRED)
+                {
+                    RefreshToken();
+                    AddLogic(logic,isTip);
+                }
+                if (Check(responsePackNew, isTip) == false)
+                {
+                    return null;
+                }
+            }
+            catch (Exception e)
+            {
+                var dd = e.Message;
+            }
+            return responsePackNew;
+        }
+        /// <summary>
+        /// 缂栬緫鏇存柊鑷姩鍖�
+        /// </summary>
+        /// <param name="logic"></param>
+        /// <returns></returns>
+        public  ResponsePackNew UpdateLogic(Logic logic,bool isTip)
+        {
+            ResponsePackNew responsePackNew = null;
+            try
+            {
+                var cycleJObject = new JObject { };
+                var cyclevaluejArray = new JArray { };
+                cycleJObject.Add("type", logic.cycle.type);
+                foreach (var dictionary in logic.cycle.value)
+                {
+                    cyclevaluejArray.Add(dictionary);
+                }
+                cycleJObject.Add("value", cyclevaluejArray);
+
+                var inputArray = new JArray { };
+                foreach (var dictionary in logic.input)
+                {
+                    var inputTypeJOb = new JObject { };
+                    inputTypeJOb.Add("sid", dictionary.sid);
+                    inputTypeJOb.Add("condition_type", dictionary.condition_type);
+                    if (dictionary.condition_type == "9")
+                    {
+                        inputTypeJOb.Add("identifier", dictionary.identifier);
+                    }
+                    var conditionArray = new JArray { };
+                    foreach (var dic in dictionary.condition)
+                    {
+
+                        var conditionJOb = new JObject { };
+                        conditionJOb.Add("key", dic["key"]);
+                        var c1 = "";
+                        dic.TryGetValue("comparator", out c1);
+                        c1 = string.IsNullOrEmpty(c1) ? "" : c1;
+                        conditionJOb.TryAdd("comparator", c1);
+                        conditionJOb.Add("data_type", dic["data_type"]);
+                        conditionJOb.Add("value", dic["value"]);
+                        conditionArray.Add(conditionJOb);
+                        if (dictionary.condition_type == "8")
+                        {
+                            ///鍦扮悊鍥存爮
+                            var geo_fencejob = new JObject();
+                            geo_fencejob.Add("longitude", dictionary.geo_fence.longitude);
+                            geo_fencejob.Add("latitude", dictionary.geo_fence.latitude);
+                            geo_fencejob.Add("radius", dictionary.geo_fence.radius);
+                            inputTypeJOb.Add("geo_fence", geo_fencejob);
+                        }
+                    }
+                    inputTypeJOb.Add("condition", conditionArray);
+                    inputArray.Add(inputTypeJOb);
+                }
+
+                var outputArray = new JArray { };
+                foreach (var dictionary in logic.output)
+                {
+                    var outputTypeJOb = new JObject { };
+                    outputTypeJOb.Add("sid", dictionary.sid);
+                    outputTypeJOb.Add("delay", dictionary.delay);
+                    outputTypeJOb.Add("target_type", dictionary.target_type);
+                    var statusArray = new JArray { };
+                    foreach (var dic in dictionary.status)
+                    {
+                        var statusJOb = new JObject { };
+                        statusJOb.Add("key", dic["key"]);
+                        statusJOb.Add("value", dic["value"]);
+                        statusArray.Add(statusJOb);
+                    }
+                    outputTypeJOb.Add("status", statusArray);
+                    outputArray.Add(outputTypeJOb);
+                }
+
+                var noticeConfigJObject = new JObject();
+                noticeConfigJObject.Add("enable", logic.noticeConfig.enable);
+                noticeConfigJObject.Add("noticeContent", logic.noticeConfig.noticeContent);
+
+                var pushConfigsArray = new JArray { };
+                if (logic.pushConfigs.Count > 0)
+                {
+                    //聽鎺ㄩ�佹枃鏈�
+                    foreach (var pushConfig in logic.pushConfigs)
+                    {
+
+                        var pushConfigJob = new JObject { };
+                        pushConfigJob.Add("pushMethod", pushConfig.pushMethod);
+                        var accountArray = new JArray { };
+                        foreach (var account in pushConfig.pushTarget)
+                        {
+                            accountArray.Add(account);
+                        }
+                        pushConfigJob.Add("pushTarget", accountArray);
+                        pushConfigsArray.Add(pushConfigJob);
+                    }
+                }
+
+                var logicjArray = new JArray { };
+                var logicIfon = new JObject { };
+                logicIfon.Add("userLogicId", logic.userLogicId);
+                logicIfon.Add("sid", logic.sid);
+                logicIfon.Add("gatewayId", LogicMethod.Current.GatewayId);
+                logicIfon.Add("tag", logic.tag);
+                logicIfon.Add("name", logic.name);
+                logicIfon.Add("relation", logic.relation);
+                logicIfon.Add("enable", logic.enable);
+                logicIfon.Add("cycle", cycleJObject);
+                logicIfon.Add("input", inputArray);
+                logicIfon.Add("output", outputArray);
+                logicIfon.Add("noticeConfig", noticeConfigJObject);
+                logicIfon.Add("pushConfigs", pushConfigsArray);
+
+                logicjArray.Add(logicIfon);
+                var jObject = new JObject { { "homeId", LogicMethod.Current.HomeId }, { "logics", logicjArray } };
+
+                string str = jObject.ToString();
+                responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_Update, "缂栬緫鏇存柊鑷姩鍖�", 5);
+                //濡傛灉鏄痶oken杩囨湡鍒欏埛鏂皌oken
+                if (responsePackNew.Code == StateCode.TOKEN_EXPIRED)
+                {
+                    RefreshToken();
+                    UpdateLogic(logic, isTip);
+                }
+                if (Check(responsePackNew, isTip) == false)
+                {
+                    return null;
+                }
+            }
+            catch (Exception e)
+            {
+                return null;
+            }
+            return responsePackNew;
+        }
+       
+        /// <summary>
+        /// 鍒犻櫎鑷姩鍖�
+        /// </summary>
+        /// <param name="logic">褰撳墠瀵硅薄</param>
+        /// <param name="isTip">鏄惁瑕佹彁绀�</param>
+        /// <returns></returns>
+        public ResponsePackNew DelLogic(Logic logic,bool isTip)
+        {
+            var jArray = new JArray { };
+            jArray.Add(logic.userLogicId);
+            var jObject = new JObject { { "userLogicIds", jArray } };
+            var responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_Delete, "鍒犻櫎鑷姩鍖�");
+            //濡傛灉鏄痶oken杩囨湡鍒欏埛鏂皌oken
+            if (responsePackNew.Code == StateCode.TOKEN_EXPIRED)
+            {
+                RefreshToken();
+                DelLogic(logic, isTip);
+            }
+            if (Check(responsePackNew, isTip) == false)
+            {
+                return null;
+            }
+            return responsePackNew;
+        }
+        /// <summary>
+        /// 鑷姩鍖栦娇鑳�
+        /// </summary>
+        /// <param name="logic">褰撳墠瀵硅薄</param>
+        /// <param name="isTip">鏄惁瑕佹彁绀�</param>
+        /// <returns></returns>
+        public ResponsePackNew EnableLogic(Logic logic,bool isTip=false)
+        {
+            var jArray = new JArray { };
+            var job = new JObject { { "userLogicId", logic.userLogicId }, { "enable", logic.enable } };
+            jArray.Add(job);
+            var jObject = new JObject { { "logics", jArray } };
+            var responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_Enable, "鑷姩鍖栧紑鍏�");
+            //濡傛灉鏄痶oken杩囨湡鍒欏埛鏂皌oken
+            if (responsePackNew.Code == StateCode.TOKEN_EXPIRED)
+            {
+                RefreshToken();
+                EnableLogic(logic, isTip);
+            }
+            if (Check(responsePackNew, isTip) == false)
+            {
+                return null;
+            }
+            return responsePackNew;
+        } 
+        /// <summary> 
+        /// 鑷姩鍖栧湴鐞嗗洿鏍忕姸鎬佷笂鎶�
+        /// </summary>
+        /// <param name="userLogicId">鑷姩鍖栦簯绔痠d<澶囨敞锛歭ogicSid涓巙serLogicId 涓嶈兘鍚屾椂涓虹┖></param>
+        /// <param name="logicSid">鑷姩鍖杝id<澶囨敞锛歭ogicSid涓巙serLogicId 涓嶈兘鍚屾椂涓虹┖></param>
+        /// <param name="direction">arrive:鍒拌揪(杩涘叆) leave锛氱寮�</param>
+        /// <returns></returns>
+        public  bool GetFenceStateReport(string userLogicId, string logicSid, string direction)
+        {
+            var jObject = new JObject();
+            jObject.Add("homeId", LogicMethod.Current.HomeId);
+            jObject.Add("userLogicId", userLogicId);
+            jObject.Add("sid", logicSid);
+            jObject.Add("direction", direction);
+            var responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_GeoFenceStateReport, "鑷姩鍖栧湴鐞嗗洿鏍忕姸鎬佷笂鎶�");
+            //濡傛灉鏄痶oken杩囨湡鍒欏埛鏂皌oken
+            if (responsePackNew.Code == StateCode.TOKEN_EXPIRED)
+            {
+                RefreshToken();
+                GetFenceStateReport(userLogicId, logicSid, direction);
+            }
+            if (responsePackNew.Code == "0")
+            {
+                //鎴愬姛
+                return true;
+            }
+            //澶辫触
+            return false;
+        }
+
+        /// <summary> 
+        /// 鑾峰彇浣忓畢宸插綍鍏ヤ汉鑴镐俊鎭紙鍙瀵硅浜鸿劯寮�闂ㄨЕ鍙戣嚜鍔ㄥ寲閰嶇疆鐢級
+        /// </summary>
+        /// <param name="deviceId">鍙瀵硅璁惧id</param>
+        /// <returns></returns>
+        public List<Face> GetListHomeFace(string deviceId, bool isTip)
+        {
+            var jObject = new JObject();
+            jObject.Add("homeId", LogicMethod.Current.HomeId);
+            jObject.Add("deviceId", deviceId);
+            var responsePackNew = RequestServerhomeId(jObject, NewAPI.Api_Post_GetListHomeFace, "鑾峰彇浣忓畢宸插綍鍏ヤ汉鑴镐俊鎭�");
+            //濡傛灉鏄痶oken杩囨湡鍒欏埛鏂皌oken
+            if (responsePackNew.Code == StateCode.TOKEN_EXPIRED)
+            {
+                RefreshToken();
+                GetListHomeFace(deviceId, isTip);
+            }
+            if (Check(responsePackNew, isTip) == false)
+            {
+                return new List<Face>();
+            }
+            var list = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Face>>(responsePackNew.Data.ToString());
+            if (list == null)
+            {
+                list = new List<Face>();
+            }
+            faceList.Clear();
+            faceList.AddRange(list);
+            return list;
+
+        }
+
+        /// <summary>
+        ///璇锋眰鏈嶅姟鍣紙涓庝綇瀹呮湁鍏�:渚嬪锛沨omeId锛� 
+        /// </summary>
+        /// <param name="o">鍙戦�佹暟鎹�</param>
+        /// <param name="api_Url">璇锋眰鍦板潃(涓嶆槸缁濆鍦板潃)</param>
+        /// <param name="tag">鏍囪->鎻忚堪鎺ュ彛(鑷畾涔�)</param>
+        /// <returns></returns>
+        public ResponsePackNew RequestServerhomeId(object o, string api_Url, string tag,int mTimeout = 3)
+        {
+            Log($"{DateTime.Now}->鍙戦��->{tag}", api_Url,o.ToString());
+            var requestJson = HttpUtil.GetSignRequestJson(o);
+            var r= HttpUtil.RequestHttpsPostFroHome(api_Url, requestJson, mTimeout);
+            Log($"{DateTime.Now}->鍥炲->{tag}", "", Newtonsoft.Json.JsonConvert.SerializeObject(r));
+            return r;
+
+        }
+        /// <summary>
+        /// 璇锋眰鏈嶅姟鍣�
+        /// </summary>
+        /// <param name="o">鍙戦�佹暟鎹�</param>
+        /// <param name="api_Url">璇锋眰鍦板潃(涓嶆槸缁濆鍦板潃)</param>
+        /// <param name="tag">鏍囪</param>
+        /// <returns></returns>
+        public  ResponsePackNew RequestServer(object o, string api_Url,string tag)
+        {
+            Log($"鍙戦�佹暟鎹�->{tag}", api_Url, o.ToString());
+            var requestJson = HttpUtil.GetSignRequestJson(o);
+            var r = HttpUtil.RequestHttpsPost(api_Url, requestJson);
+            Log($"鍥炲鏁版嵁->{tag}", "", Newtonsoft.Json.JsonConvert.SerializeObject(r));
+            return r;
+        }
+        /// <summary>
+        /// 鍒锋柊Token
+        /// </summary>
+        public  void RefreshToken()
+        {
+            IMessageCommon.Current.StartRefreshToken();
+        }
+        /// <summary>
+        /// 妫�楠屾暟鎹槸鍚﹀悎娉曠殑
+        /// </summary>
+        /// <param name="r"></param>
+        /// <param name="isTip">鏄惁瑕佸脊绐楋紙榛樿鏄痜alse涓嶉渶瑕侊級</param>
+        /// <returns></returns>
+        public bool Check(ResponsePackNew r, bool isTip)
+        {
+            if (r.Code == "0" && r.Data != null && r.Data.ToString() != "")
+            {
+                return true;
+            }
+            if (r.Code != "0")
+            {
+                //澶辫触鏃舵槸鍚﹁鎻愮ず
+                if (isTip)
+                {
+                    new LogicView.TipPopView().FlashingBox(r.message + $"({r.Code})");
+                }
+            }
+            return false;
+        }
+        /// <summary>
+        /// 鎵撳嵃鏃ュ織
+        /// </summary>
+        /// <param name="tag">鎵撳嵃鏍囪</param>
+        /// <param name="content">鎵撳嵃鍐呭</param>
+        public void Log(string tag,string url, string content)
+        {
+         #if DEBUG
+            Console.WriteLine(tag + $"\r\n{url}\r\n{content}");
+         #endif
+        }
+
 
     }
-    /// <summary>
-    /// 璇锋眰鏈嶅姟鍣�
-    /// </summary>
-    /// <returns></returns>
-    public static ResponsePackNew RequestServer(object o, string api_Url)
+    public class Face
     {
-      var requestJson = HttpUtil.GetSignRequestJson(o);
-      return HttpUtil.RequestHttpsPost(api_Url, requestJson);
-
+        /// <summary>
+        /// 鐢ㄦ埛鍚嶇О
+        /// </summary>
+        public string userName = string.Empty;
+        /// <summary>
+        /// 鐢ㄦ埛浜鸿劯id
+        /// </summary>
+        public string userId = string.Empty;
     }
-    /// <summary>
-    /// 鍒锋柊Token
-    /// </summary>
-    public static void RefreshToken()
-    {
-      IMessageCommon.Current.StartRefreshToken();
-    }
-
-  }
 }
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/Set.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/Set.cs
index 06795e1..bffd42c 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/Set.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/Set.cs
@@ -49,7 +49,7 @@
                 X = Application.GetRealWidth(40),
                 Gravity = Gravity.CenterVertical,
                 TextAlignment = TextAlignment.CenterRight,
-                Text =Logic.currlogic.name,
+                Text = Logic.currlogic.name,
             };
             nameView.frameLayout.AddChidren(btnAutomationName);
 
@@ -57,17 +57,18 @@
             EventHandler<MouseEventArgs> editClick = (sender, e) =>
             {
                 List<string> list = new List<string>();
-                foreach (var logic in Logic.LogicList) {
+                foreach (var logic in Logic.LogicList)
+                {
                     list.Add(logic.name);
                 }
 
-                new LogicView.TipPopView().InputBox(StringId.editName, Logic.currlogic.name, StringId.nameNull, StringId.NameAlreadyExists, list, (logicName,view
+                new LogicView.TipPopView().InputBox(StringId.editName, Logic.currlogic.name, StringId.nameNull, StringId.NameAlreadyExists, list, (logicName, view
                     ) =>
                 {
                     btnAutomationName.Text = logicName;
                     Logic.currlogic.name = logicName;
 
-                },()=> { });
+                }, () => { });
             };
             nameView.btnClick.MouseUpEventHandler += editClick;
             btnAutomationName.MouseUpEventHandler += editClick;
@@ -112,8 +113,7 @@
                         try
                         {
                             //鍙戦�佸垹闄ら�昏緫鍛戒护锛�
-                            responsePackNew = Send.DelLogic(Logic.currlogic);
-
+                            responsePackNew = Send.Current.DelLogic(Logic.currlogic, true);
                         }
                         catch { }
                         finally
@@ -121,27 +121,19 @@
                             Application.RunOnMainThread(() =>
                             {
                                 loading.Hide();
-                                if (responsePackNew != null && responsePackNew.Code == "0")
+                                if (responsePackNew != null)
                                 {
-                                    LogicMethod.CurrLogicMethod.RemoveAllView();
+                                    LogicMethod.Current.RemoveAllView();
                                     Logic.LogicList.Remove(Logic.currlogic);
                                     MainView.MainShow();
                                     //鍙戦�佸垹闄ら�昏緫鍛戒护锛�
-                                }
-                                else if (responsePackNew != null && responsePackNew.Code == "14005")
-                                {
-                                    new LogicView.TipPopView().FlashingBox(Language.StringByID(StringId.gatewayNotOnline));
-                                }
-                                else
-                                {
-                                    new LogicView.TipPopView().FlashingBox(Language.StringByID(StringId.delFail));
                                 }
                             });
                         }
 
                     })
                     { IsBackground = true }.Start();
-                   
+
                 });
 
             };
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/TargetDeviceFunList.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/TargetDeviceFunList.cs
index 1c66bf5..eaa5c14 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/TargetDeviceFunList.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/TargetDeviceFunList.cs
@@ -80,7 +80,7 @@
                         if (edit)
                         {
                             //鏄剧ず缂栬緫涔嬪墠鐨勮澶囩姸鎬�
-                            GetEditState(device, index, lightSwitchView.btnState, null, null, null);
+                            GetEditDeviceState(device, index, lightSwitchView.btnState, null, null, null);
                         }
                         #endregion
                     }
@@ -120,13 +120,35 @@
                         if (edit)
                         {
                             //鏄剧ず缂栬緫涔嬪墠鐨勮澶囩姸鎬�
-                            GetEditState(device, index, lightSwitchView.btnState, brightnessView.btnState, null, null);
+                            GetEditDeviceState(device, index, lightSwitchView.btnState, brightnessView.btnState, null, null);
                         }
                         #endregion
                     }
                     break;
                 //绐楀笜
                 case SPK.CurtainSwitch:
+                    {
+                        #region 鐣岄潰
+                        ///寮�鍏�
+                        LogicView.FunTypeView curtainSwitchView = new LogicView.FunTypeView();
+                        curtainSwitchView.btnText.TextID = StringId.switchLogic;
+                        fLayout.AddChidren(curtainSwitchView.FLayoutView());
+                        DelayView(fLayout, curtainSwitchView.frameLayout.Bottom);
+                        #endregion
+                        #region 鐐瑰嚮浜嬩欢
+                        ///寮�鍏崇偣鍑讳簨浠�
+                        curtainSwitchView.btnClick.MouseUpEventHandler += (sender, e) =>
+                        {
+                            SwitchViewMethod(device, curtainSwitchView.btnState, 3);
+                        };
+                        if (edit)
+                        {
+                            //鏄剧ず缂栬緫涔嬪墠鐨勮澶囩姸鎬�
+                            GetEditDeviceState(device, index, curtainSwitchView.btnState, null, null, null);
+                        }
+                        #endregion
+                    }
+                    break;
                 case SPK.CurtainTrietex:
                 case SPK.CurtainRoller:
                     {
@@ -135,8 +157,14 @@
                         LogicView.FunTypeView curtainSwitchView = new LogicView.FunTypeView();
                         curtainSwitchView.btnText.TextID = StringId.switchLogic;
                         fLayout.AddChidren(curtainSwitchView.FLayoutView());
+                        ///鐧惧垎姣�
+                        LogicView.FunTypeView crtainPercentumView = new LogicView.FunTypeView();
+                        crtainPercentumView.frameLayout.Y = curtainSwitchView.frameLayout.Bottom;
+                        crtainPercentumView.btnText.TextID = StringId.percentum;
+                        fLayout.AddChidren(crtainPercentumView.FLayoutView());
+                        crtainPercentumView.btnState.Text = "5%";//浜у搧缁忕悊鏅撹緣瑕佹眰鏀圭殑 2021-11-06
                         ///璁惧寤舵椂iewv
-                        DelayView(fLayout, curtainSwitchView.frameLayout.Bottom);
+                        DelayView(fLayout, crtainPercentumView.frameLayout.Bottom);
                         #endregion
                         #region 鐐瑰嚮浜嬩欢
                         ///寮�鍏崇偣鍑讳簨浠�
@@ -144,10 +172,15 @@
                         {
                             SwitchViewMethod(device, curtainSwitchView.btnState, 2);
                         };
+                        ///鐧惧垎姣旂偣鍑讳簨浠�
+                        crtainPercentumView.btnClick.MouseUpEventHandler += (sender, e) =>
+                        {
+                            BrightnessMethod(device, crtainPercentumView.btnState, crtainPercentumView.btnText.Text);
+                        };
                         if (edit)
                         {
                             //鏄剧ず缂栬緫涔嬪墠鐨勮澶囩姸鎬�
-                            GetEditState(device, index, curtainSwitchView.btnState, null, null, null);
+                            GetEditDeviceState(device, index, curtainSwitchView.btnState, crtainPercentumView.btnState, null, null);
                         }
                         #endregion
                     }
@@ -184,7 +217,7 @@
                         if (edit)
                         {
                             //鏄剧ず缂栬緫涔嬪墠鐨勮澶囩姸鎬�
-                            GetEditState(device, index, crtainPercentumView.btnState, AngleView.btnState, null, null);
+                            GetEditDeviceState(device, index, crtainPercentumView.btnState, AngleView.btnState, null, null);
                         }
                         #endregion
                     }
@@ -288,13 +321,14 @@
                         if (edit)
                         {
                             //鏄剧ず缂栬緫涔嬪墠鐨勮澶囩姸鎬�
-                            GetEditState(device, index, acSwitchVie.btnState, temperatureView.btnState, acModehView.btnState, acSpeedView.btnState);
+                            GetEditDeviceState(device, index, acSwitchVie.btnState, temperatureView.btnState, acModehView.btnState, acSpeedView.btnState);
                         }
 
                         #endregion
                     }
                     break;
-                case SPK.FloorHeatStandard:case SPK.HvacFloorHeat:
+                case SPK.FloorHeatStandard:
+                case SPK.HvacFloorHeat:
                     {
                         #region 鐣岄潰
                         ///寮�鍏�
@@ -368,7 +402,7 @@
                         if (edit)
                         {
                             //鏄剧ず缂栬緫涔嬪墠鐨勮澶囩姸鎬�
-                            GetEditState(device, index, floorHeatingSwitchVie.btnState, temperatureView.btnState, floorHeatingModehView.btnState, null);
+                            GetEditDeviceState(device, index, floorHeatingSwitchVie.btnState, temperatureView.btnState, floorHeatingModehView.btnState, null);
                         }
 
                         #endregion
@@ -454,7 +488,72 @@
                         if (edit)
                         {
                             //鏄剧ず缂栬緫涔嬪墠鐨勮澶囩姸鎬�
-                            GetEditState(device, index, AirFreshSwitchVie.btnState, AirFreshSpeedView.btnState, null, null);
+                            GetEditDeviceState(device, index, AirFreshSwitchVie.btnState, AirFreshSpeedView.btnState, null, null);
+                        }
+
+                        #endregion
+                    }
+                    break;
+                //闊充箰
+                case SPK.MusicStandard:
+                case SPK.AvMusic:
+                    {
+                        #region 鐣岄潰
+                        //鎻愮ず璇煶
+                        LogicView.FunTypeView funTypeView = new LogicView.FunTypeView();
+                        funTypeView.btnText.TextID = StringId.tishiyin;
+                        fLayout.AddChidren(funTypeView.FLayoutView());
+
+                        ///璁惧寤舵椂iewv
+                        DelayView(fLayout, funTypeView.frameLayout.Bottom);
+                        #endregion
+                        #region 鐐瑰嚮浜嬩欢
+                        ///鎻愮ず璇煶鐐瑰嚮浜嬩欢
+                        funTypeView.btnClick.MouseUpEventHandler += (sender, e) =>
+                        {
+                            selectedState = device.spk + "_";
+                            Loading loading = new Loading();
+                            this.AddChidren(loading);
+                            loading.Start();
+                            System.Threading.Tasks.Task.Run(() =>
+                            {
+                                try
+                                {
+                                    //HDL_ON.DriverLayer.Control.Ins.GetMusicDirectory(device);
+                                    //var palyListName = Music.SendMethod.mMethod.GetListName(device); 
+                                    var palyList= Music.SendMethod.Current.GetListMusic(device, "hdl_special");
+                                    List<string> musicNameList = new List<string>();
+                                    for (int i = 0; i < palyList.songs.Count; i++)
+                                    {
+                                        var music = palyList.songs[i];
+                                        musicNameList.Add(music.name);
+                                    }
+                                    Application.RunOnMainThread(() =>
+                                    {
+                                        loading.Hide();
+                                        PublicInterface publicInterface = new PublicInterface();
+                                        publicInterface.FrameOrVv(this, musicNameList, new List<string> { funTypeView.btnState.Text }, palyList.group, (index) =>
+                                        {
+                                            var musicSelecetd = palyList.songs[index];
+                                            //鐣岄潰鏄剧ず閫変腑鍊�
+                                            funTypeView.btnState.Text = musicSelecetd.name;
+                                            //鏁版嵁灏佽
+                                            AddDictionary("playlist_name", palyList.group);//鍒楄〃鍚�
+                                            AddDictionary("song_name", musicSelecetd.name);//姝屾洸鍚�
+
+                                        },false);
+
+                                    });
+                                }
+                                catch { }
+
+                            });
+                        };
+
+                        if (edit)
+                        {
+                            //鏄剧ず缂栬緫涔嬪墠鐨勮澶囩姸鎬�
+                            GetEditDeviceState(device, index, funTypeView.btnState, null, null, null);
                         }
 
                         #endregion
@@ -471,7 +570,7 @@
                     Output outputDevice = new Output();
                     outputDevice.target_type = "1";
                     outputDevice.sid = device.sid;
-                    outputDevice.delay= strdelay;
+                    outputDevice.delay = strdelay;
                     switch (device.spk)
                     {
                         case SPK.LightDimming:
@@ -505,7 +604,8 @@
                             }
                         case SPK.HvacAC:
                         case SPK.AcStandard:
-                        case SPK.FloorHeatStandard:case SPK.HvacFloorHeat:
+                        case SPK.FloorHeatStandard:
+                        case SPK.HvacFloorHeat:
                             {
                                 //鍋氫簡涓�涓壒娈婂鐞嗭紱
                                 bool _bool = false;
@@ -529,7 +629,7 @@
                                 }
                             }
                             break;
-                      
+
                     }
                     outputDevice.status = dicSateteList;
 
@@ -558,7 +658,7 @@
                     this.RemoveFromParent();
                     return;
                 }
-                LogicMethod.CurrLogicMethod.RemoveAllView();
+                LogicMethod.Current.RemoveAllView();
                 AddLogic addLogic = new AddLogic();
                 MainPage.BasePageView.AddChidren(addLogic);
                 addLogic.Show();
@@ -681,7 +781,7 @@
                         break;
                 }
                 //鏁版嵁灏佽
-                AddDictionary(keyVlaue, brightnesValue);
+                AddDictionary(keyVlaue, brightnesValue); 
             });
             #endregion
 
@@ -695,7 +795,7 @@
         /// <param name="button2">鏄剧ずBtn</param>
         /// <param name="button3">鏄剧ずBtn</param>
         /// <param name="button4">鏄剧ずBtn</param>
-        private void GetEditState(Entity.Function device, int index, Button button1, Button button2, Button button3, Button button4)
+        private void GetEditDeviceState(Entity.Function device, int index, Button button1, Button button2, Button button3, Button button4)
         {
             Output outputs = Logic.currlogic.output[index];
             var dicList = outputs.status;
@@ -712,7 +812,7 @@
                 this.btnDelay.Text = outputs.delay + "s";
                 this.strdelay = outputs.delay;
             }
-            InpOrOutLogicMethod.EditState(device, dicList, button1, button2, button3, button4);
+            InpOrOutLogicMethod.Current.EditDeviceState(device, dicList, button1, button2, button3, button4);
         }
         /// <summary>
         /// 娣诲姞閫変腑鏁版嵁
@@ -723,8 +823,8 @@
         {
             //鏁版嵁灏佽
             Dictionary<string, string> dic = new Dictionary<string, string>();
-            LogicMethod.CurrLogicMethod.dictionary(dic, "key", KeyValue);
-            LogicMethod.CurrLogicMethod.dictionary(dic, "value", selectedValue);
+            LogicMethod.Current.dictionary(dic, "key", KeyValue);
+            LogicMethod.Current.dictionary(dic, "value", selectedValue);
             AddDictionaryList(KeyValue, dic);
         }
         /// <summary>
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/Time3.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/Time3.cs
index 3ace301..19a4a02 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/Time3.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/Time3.cs
@@ -222,13 +222,13 @@
         private void AddDic(string keyValue, string value, bool edit, int index)
         {
             Input inputTime = new Input();
-            inputTime.sid = LogicMethod.CurrLogicMethod.NewSid();
+            inputTime.sid = LogicMethod.Current.NewSid();
             inputTime.condition_type = "1";
             Dictionary<string, string> dic = new Dictionary<string, string>();
-            LogicMethod.CurrLogicMethod.dictionary(dic, "key", keyValue);
-            LogicMethod.CurrLogicMethod.dictionary(dic, "comparator", "=");
-            LogicMethod.CurrLogicMethod.dictionary(dic, "data_type", "string");
-            LogicMethod.CurrLogicMethod.dictionary(dic, "value", value);
+            LogicMethod.Current.dictionary(dic, "key", keyValue);
+            LogicMethod.Current.dictionary(dic, "comparator", "=");
+            LogicMethod.Current.dictionary(dic, "data_type", "string");
+            LogicMethod.Current.dictionary(dic, "value", value);
             inputTime.condition.Add(dic);
             AddCondition(inputTime, edit, index);
         }
@@ -250,7 +250,7 @@
                 //娣诲姞涓�涓柊鐨勬椂闂存潯浠�
                 Logic.currlogic.input.Add(input);
             }
-            LogicMethod.CurrLogicMethod.RemoveAllView();
+            LogicMethod.Current.RemoveAllView();
             AddLogic addLogic = new AddLogic();
             MainPage.BasePageView.AddChidren(addLogic);
             addLogic.Show();
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/TimeTpye.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/TimeTpye.cs
index 2181e67..84822aa 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/TimeTpye.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/TimeTpye.cs
@@ -134,13 +134,13 @@
             timePointView.FLayoutView(fLayout);
             timePointView.TimePoint(fLayout, editTime, (timeValue)=>{
                 Input inputTime = new Input();
-                inputTime.sid = LogicMethod.CurrLogicMethod.NewSid();
+                inputTime.sid = LogicMethod.Current.NewSid();
                 inputTime.condition_type = "1";
                 Dictionary<string, string> dic = new Dictionary<string, string>();
-                LogicMethod.CurrLogicMethod.dictionary(dic, "key", "timepoint");
-                LogicMethod.CurrLogicMethod.dictionary(dic, "comparator", "=");
-                LogicMethod.CurrLogicMethod.dictionary(dic, "data_type", "string");
-                LogicMethod.CurrLogicMethod.dictionary(dic, "value", timeValue);
+                LogicMethod.Current.dictionary(dic, "key", "timepoint");
+                LogicMethod.Current.dictionary(dic, "comparator", "=");
+                LogicMethod.Current.dictionary(dic, "data_type", "string");
+                LogicMethod.Current.dictionary(dic, "value", timeValue);
                 inputTime.condition.Add(dic);
                 AddCondition(inputTime, edit, index);
             });
@@ -257,13 +257,13 @@
                 }
 
                 Input inputTime = new Input();
-                inputTime.sid = LogicMethod.CurrLogicMethod.NewSid();
+                inputTime.sid = LogicMethod.Current.NewSid();
                 inputTime.condition_type = "2";
                 Dictionary<string, string> dic = new Dictionary<string, string>();
-                LogicMethod.CurrLogicMethod.dictionary(dic, "key", "timesection");
-                LogicMethod.CurrLogicMethod.dictionary(dic, "comparator", "=");
-                LogicMethod.CurrLogicMethod.dictionary(dic, "data_type", "string");
-                LogicMethod.CurrLogicMethod.dictionary(dic, "value", btnStartTimeText.Text + "-" + btnEndTimeText.Text);
+                LogicMethod.Current.dictionary(dic, "key", "timesection");
+                LogicMethod.Current.dictionary(dic, "comparator", "=");
+                LogicMethod.Current.dictionary(dic, "data_type", "string");
+                LogicMethod.Current.dictionary(dic, "value", btnStartTimeText.Text + "-" + btnEndTimeText.Text);
                 inputTime.condition.Add(dic);
                 AddCondition(inputTime, edit, index);
 
@@ -354,7 +354,7 @@
                 //娣诲姞涓�涓柊鐨勬椂闂存潯浠�
                 Logic.currlogic.input.Add(input);
             }
-            LogicMethod.CurrLogicMethod.RemoveAllView();
+            LogicMethod.Current.RemoveAllView();
             AddLogic addLogic = new AddLogic();
             MainPage.BasePageView.AddChidren(addLogic);
             addLogic.Show();
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/WeatherCondition.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/WeatherCondition.cs
index f4e8760..d9a1fd1 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/WeatherCondition.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/WeatherCondition.cs
@@ -78,13 +78,13 @@
         private void AddDic(string value)
         {
             Input input = new Input(); 
-            input.sid = LogicMethod.CurrLogicMethod.NewSid();
+            input.sid = LogicMethod.Current.NewSid();
             input.condition_type = "6";
             Dictionary<string, string> dic = new Dictionary<string, string>();
-            LogicMethod.CurrLogicMethod.dictionary(dic, "key", "weather");
-            LogicMethod.CurrLogicMethod.dictionary(dic, "comparator", "=");
-            LogicMethod.CurrLogicMethod.dictionary(dic, "data_type", "string");
-            LogicMethod.CurrLogicMethod.dictionary(dic, "value", value);
+            LogicMethod.Current.dictionary(dic, "key", "weather");
+            LogicMethod.Current.dictionary(dic, "comparator", "=");
+            LogicMethod.Current.dictionary(dic, "data_type", "string");
+            LogicMethod.Current.dictionary(dic, "value", value);
             input.condition.Add(dic);
             AddCondition(input, "weather",  "=");
         }
@@ -122,7 +122,7 @@
                 Logic.currlogic.input.Add(input);
             }
 
-            LogicMethod.CurrLogicMethod.RemoveAllView();
+            LogicMethod.Current.RemoveAllView();
             AddLogic addLogic = new AddLogic();
             MainPage.BasePageView.AddChidren(addLogic);
             addLogic.Show();
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddControlComplete.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddControlComplete.cs
index c770e5a..edbf966 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddControlComplete.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddControlComplete.cs
@@ -82,7 +82,7 @@
             quyuPatchView.frameLayout.Y = namePatchView.frameLayout.Bottom;
             this.AddChidren(quyuPatchView.FLayoutView());
             quyuPatchView.btnText1.TextID = StringId.suoshuquyu;
-            quyuPatchView.btnText2.Text = Intelligence.Automation.LogicMethod.CurrLogicMethod.GetGetRoomName(GetFunction(control.deviceId));
+            quyuPatchView.btnText2.Text = Intelligence.Automation.LogicMethod.Current.GetGetRoomName(GetFunction(control.deviceId));
 
             //缁х画娣诲姞
             Button addBtn = new Button
@@ -137,7 +137,7 @@
                 method.ManagementPosition(GetFunction(control.deviceId), () =>
                 {
                     //鏇存柊鍖哄煙
-                    quyuPatchView.btnText2.Text = Intelligence.Automation.LogicMethod.CurrLogicMethod.GetGetRoomName(GetFunction(control.deviceId));
+                    quyuPatchView.btnText2.Text = Intelligence.Automation.LogicMethod.Current.GetGetRoomName(GetFunction(control.deviceId));
                 });
             };
             //缁х画娣诲姞鐐瑰嚮浜嬩欢
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/EditControl.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/EditControl.cs
index 547e878..8bce9f1 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/EditControl.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/EditControl.cs
@@ -43,7 +43,7 @@
             //閬ユ帶鍣ㄦ墍灞炲尯鍩�:
             FrameLayout50 areaFLayout = new FrameLayout50(); 
             areaFLayout.btnText.Text = Language.StringByID(StringId.yaokongqiquyu);
-            areaFLayout.btnEditText.Text = Intelligence.Automation.LogicMethod.CurrLogicMethod.GetGetRoomName(control);
+            areaFLayout.btnEditText.Text = Intelligence.Automation.LogicMethod.Current.GetGetRoomName(control);
             areaFLayout.frameLayout.Y = editNameFLayout.frameLayout.Bottom;
             viewLayout.AddChidren(areaFLayout.FLayoutView());
             #endregion
@@ -77,7 +77,7 @@
                 method.ManagementPosition(control, () =>
                 {
                     //鏇存柊鍖哄煙
-                    areaFLayout.btnEditText.Text = Intelligence.Automation.LogicMethod.CurrLogicMethod.GetGetRoomName(control);
+                    areaFLayout.btnEditText.Text = Intelligence.Automation.LogicMethod.Current.GetGetRoomName(control);
                 });
             };
             #endregion
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirMain.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirMain.cs
index 38b713e..7a80226 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirMain.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirMain.cs
@@ -197,7 +197,7 @@
                 //閬ユ帶鍣ㄥ悕绉�
                 controlView.nameBtn.Text = control.name;
                 //閬ユ帶鍣ㄥ瓨鏀惧尯鍩�
-                controlView.areaBtn.Text = Intelligence.Automation.LogicMethod.CurrLogicMethod.GetGetRoomName(control);
+                controlView.areaBtn.Text = Intelligence.Automation.LogicMethod.Current.GetGetRoomName(control);
                 //鏍囪閬ユ帶鍣�
                 controlView.delBtn.Tag = control;
                 //鍒犻櫎鐐瑰嚮浜嬩欢
@@ -236,7 +236,7 @@
                     {
                         //鍥炶皟鏇存柊鍚嶅瓧/鍖哄煙
                         controlView.nameBtn.Text = device.name;
-                        controlView.areaBtn.Text = Intelligence.Automation.LogicMethod.CurrLogicMethod.GetGetRoomName(device);
+                        controlView.areaBtn.Text = Intelligence.Automation.LogicMethod.Current.GetGetRoomName(device);
 
                     });
                     MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Acst/AcstParentPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Acst/AcstParentPage.cs
new file mode 100644
index 0000000..9c1d100
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/Acst/AcstParentPage.cs
@@ -0,0 +1,803 @@
+锘縰sing System;
+using System.Collections.Generic;
+using HDL_ON.Entity;
+using Shared;
+
+namespace HDL_ON.UI
+{
+
+
+    /// <summary>
+	/// 缁垮缓绉戞妧绯荤粺
+    /// 鎬绘帶涓婚〉
+	/// </summary>
+    public class AcstParentPage : FrameLayout
+    {
+        static AcstParentPage basePage;
+
+        VerticalScrolViewLayout bodyView;
+
+        #region 澶╂皵鎺т欢
+        Button btnOutdoorTemp;
+        Button btnWeather;
+        TextButton btnHumidityValues;
+        TextButton btnPm25Values;
+        #endregion
+
+        #region 浼犳劅鍣ㄣ�佽�楃數閲忕粍浠�
+        SensorDiyView sensorDiyView_Temp;
+        SensorDiyView sensorDiyView_Humi;
+        SensorDiyView sensorDiyView_Pm25;
+        SensorDiyView sensorDiyView_Co2;
+        SensorDiyView sensorDiyView_Tvoc;
+        SensorDiyView sensorDiyView_EleDay;
+        SensorDiyView sensorDiyView_EleMonth;
+        SensorDiyView sensorDiyView_EleTotal;
+        #endregion
+        /// <summary>
+        /// 瀛愭帶鍖哄煙鍒楄〃
+        /// </summary>
+        Dictionary<string, AcstSubControlView> subViewList;
+
+
+        public override void RemoveFromParent()
+        {
+            base.RemoveFromParent();
+            basePage = null;
+        }
+
+        Function function;
+        /// <summary>
+        /// 褰撳墠鏃舵棰滆壊
+        /// </summary>
+        uint curColor = CSS.CSS_Color.MainColor;
+
+        string imageFolder = "blue";
+
+        public AcstParentPage()
+        {
+            basePage = this;
+            this.function = FunctionList.List.GetAcstParentList()[0];
+            this.BackgroundColor = CSS.CSS_Color.BackgroundColor;
+            bodyView = new VerticalScrolViewLayout();
+            this.AddChidren(bodyView);
+            subViewList = new Dictionary<string, AcstSubControlView>();
+        }
+        /// <summary>
+        /// 鏇存柊澶╂皵淇℃伅
+        /// </summary>
+        public void InitGetWeatherAction()
+        {
+            MainPage.CityWeatherAction = () =>
+            {
+                Application.RunOnMainThread(() =>
+                {
+                    btnOutdoorTemp.Text = MainPage.cityInfo.temperature + "掳";
+                    btnWeather.Text = MainPage.cityInfo.weather;
+                    btnHumidityValues.Text = MainPage.cityInfo.humidity + "%";
+                    btnHumidityValues.Width = btnHumidityValues.GetTextWidth() + Application.GetRealWidth(10);
+                    btnPm25Values.Text = MainPage.cityInfo.pm25;
+                    btnPm25Values.Width = btnPm25Values.GetTextWidth() + Application.GetRealWidth(10);
+                });
+            };
+        }
+        /// <summary>
+        /// 浼犳劅鍣ㄣ�佽�楃數閲忕粍浠�
+        /// </summary>
+        public static void UpdateAcstParentInfo(Function temp)
+        {
+            if (basePage == null)
+            {
+                return;
+            }
+            if (basePage.sensorDiyView_Temp != null)
+                basePage.sensorDiyView_Temp.UpdateValue(temp.GetAttribute(AcstParent_AttrEnum.room_temp.ToString()).curValue.ToString());
+            if (basePage.sensorDiyView_Humi != null)
+                basePage.sensorDiyView_Humi.UpdateValue(temp.GetAttribute(AcstParent_AttrEnum.room_humidity.ToString()).curValue.ToString());
+            if (basePage.sensorDiyView_Pm25 != null)
+                basePage.sensorDiyView_Pm25.UpdateValue(temp.GetAttribute(AcstParent_AttrEnum.pm25.ToString()).curValue.ToString());
+            if (basePage.sensorDiyView_Co2 != null)
+                basePage.sensorDiyView_Co2.UpdateValue(temp.GetAttribute(AcstParent_AttrEnum.co2.ToString()).curValue.ToString());
+            if (basePage.sensorDiyView_Tvoc != null)
+                basePage.sensorDiyView_Tvoc.UpdateValue(temp.GetAttribute(AcstParent_AttrEnum.tvoc.ToString()).curValue.ToString());
+            if (basePage.sensorDiyView_EleDay != null)
+                basePage.sensorDiyView_EleDay.UpdateValue(temp.GetAttribute(AcstParent_AttrEnum.day_electricity.ToString()).curValue.ToString());
+            if (basePage.sensorDiyView_EleMonth != null)
+                basePage.sensorDiyView_EleMonth.UpdateValue(temp.GetAttribute(AcstParent_AttrEnum.month_electricity.ToString()).curValue.ToString());
+            if (basePage.sensorDiyView_EleTotal != null)
+                basePage.sensorDiyView_EleTotal.UpdateValue(temp.GetAttribute(AcstParent_AttrEnum.total_electricity.ToString()).curValue.ToString());
+        }
+
+        /// <summary>
+        /// 鏇存柊瀛愭帶淇℃伅
+        /// </summary>
+        /// <param name="temp"></param>
+        public static void UpdateAcstSubInfo(Function temp)
+        {
+            if(basePage == null)
+            {
+                return;
+            }
+            Application.RunOnMainThread(() => {
+                var view = basePage.subViewList[temp.sid];
+                if(view!= null)
+                {
+                    view.btnSubHumidityValues.Text = temp.GetAttrState(AcstSub_AttrEnum.room_humidity.ToString()) + "%";
+                    view.btnSubTempValues.Text = temp.GetAttrState(AcstSub_AttrEnum.room_humidity.ToString()) + "%";
+                    view.btnSubPower.IsSelected = temp.GetAttrState(AcstSub_AttrEnum.on_off.ToString()) == "on";
+                }
+            });
+        }
+
+        public void LoadPage()
+        {
+            var curTime = DateTime.Now;
+            string helloText = "涓婂崍濂�";
+            if (curTime.Hour >= 8 && curTime.Hour < 12)
+            {
+                helloText = "涓婂崍濂�";
+                curColor = CSS.CSS_Color.MainColor;
+                imageFolder = "blue";
+            }
+            else if (curTime.Hour >= 12 && curTime.Hour < 18)
+            {
+                helloText = "涓嬪崍濂�";
+                curColor = 0xFFE7914F;
+                imageFolder = "orange";
+            }
+            else
+            {
+                helloText = "鏅氫笂濂�";
+                curColor = 0xFF9175F3;
+                imageFolder = "purple";
+            }
+
+            #region 澶撮儴淇℃伅鍖哄煙
+            FrameLayout topView = new FrameLayout()
+            {
+                Height = Application.GetRealHeight(181),
+                BackgroundColor = 0xFFb0eafa,
+                BackgroundImagePath = $"FunctionIcon/Acst/{imageFolder}/TopViewBg.png",
+            };
+            bodyView.AddChidren(topView);
+
+            var backView = new FrameLayout()
+            {
+                Y = Application.GetRealHeight(32),
+                Width = Application.GetRealWidth(100),
+                Height = Application.GetRealHeight(34),
+            };
+            topView.AddChidren(backView);
+
+            Button btnBackIcon = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Width = Application.GetRealWidth(40),
+                Height = Application.GetRealWidth(28),
+                UnSelectedImagePath = "Public/BackIcon.png",
+            };
+            backView.AddChidren(btnBackIcon);
+
+            btnBackIcon.MouseUpEventHandler = (sender, e) => {
+                this.RemoveFromParent();
+            };
+
+            var btnHelloText = new Button()
+            {
+                X = Application.GetRealWidth(25),
+                Y = Application.GetRealHeight(55),
+                Width = Application.GetRealWidth(200),
+                Height = Application.GetRealHeight(38),
+                TextSize = 20,
+                Text = helloText,
+                TextColor = 0xFFFFFFFF,
+                TextAlignment = TextAlignment.CenterLeft,
+            };
+            topView.AddChidren(btnHelloText);
+
+            
+            btnOutdoorTemp = new Button()
+            {
+                X = Application.GetRealWidth(25),
+                Y = Application.GetRealHeight(90),
+                Width = Application.GetRealWidth(85),
+                Height = Application.GetRealHeight(66),
+                TextColor = 0xFFFFFFFF,
+                TextSize = 50,
+                TextAlignment = TextAlignment.TopLeft,
+                Text = MainPage.cityInfo.temperature + "掳"
+            };
+            topView.AddChidren(btnOutdoorTemp);
+
+            btnWeather = new Button()
+            {
+                X = btnOutdoorTemp.Right,
+                Y = Application.GetRealHeight(95),
+                Width = Application.GetRealWidth(80),
+                Height = Application.GetRealHeight(26),
+                Text = MainPage.cityInfo.weather,
+                TextColor = 0xFFFFFFFF,
+                TextSize = 14,
+                TextAlignment = TextAlignment.CenterLeft,
+            };
+            topView.AddChidren(btnWeather);
+
+
+            var environmentalView = new FrameLayout()
+            {
+                Y = Application.GetRealHeight(150),
+                Height = Application.GetRealHeight(32),
+            };
+            topView.AddChidren(environmentalView);
+
+            var btnHumidityIcon = new Button()
+            {
+                X = Application.GetRealWidth(25),
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetMinRealAverage(16),
+                Height = Application.GetMinRealAverage(16),
+                UnSelectedImagePath = "Public/DeviceInfoIcon/HumidityIcon.png",
+            };
+            environmentalView.AddChidren(btnHumidityIcon);
+
+            btnHumidityValues = new TextButton()
+            {
+                X = btnHumidityIcon.Right + Application.GetRealWidth(4),
+                Gravity = Gravity.CenterVertical,
+                TextColor = 0xFFFFFFFF,
+                TextSize = 16,
+                Text = MainPage.cityInfo.humidity + "%",
+                TextAlignment = TextAlignment.CenterLeft,
+            };
+            btnHumidityValues.Width = btnHumidityValues.GetTextWidth();
+            environmentalView.AddChidren(btnHumidityValues);
+
+            var btnPm25Icon = new Button()
+            {
+                X = btnHumidityValues.Right + Application.GetRealWidth(14),
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetMinRealAverage(16),
+                Height = Application.GetMinRealAverage(16),
+                UnSelectedImagePath = "Public/DeviceInfoIcon/Pm25Icon.png",
+            };
+            environmentalView.AddChidren(btnPm25Icon);
+
+            btnPm25Values = new TextButton()
+            {
+                X = btnPm25Icon.Right + Application.GetRealWidth(4),
+                Gravity = Gravity.CenterVertical,
+                TextColor = 0xFFFFFFFF,
+                TextSize = 16,
+                Text = MainPage.cityInfo.pm25,
+                TextAlignment = TextAlignment.CenterLeft,
+            };
+            btnPm25Values.Width = btnPm25Values.GetTextWidth();
+            environmentalView.AddChidren(btnPm25Values);
+
+
+            #endregion
+
+            bodyView.AddChidren(new Button
+            {
+                Height = Application.GetRealHeight(8),
+            });
+
+            #region 鏁版嵁
+            var infoView = new FrameLayout()
+            {
+                Y = topView.Bottom,
+                Height = Application.GetRealHeight(104),
+                BackgroundColor = CSS.CSS_Color.MainBackgroundColor,
+            };
+            bodyView.AddChidren(infoView);
+
+            var infoContentView = new FrameLayout()
+            {
+                Gravity = Gravity.Center,
+                Width = Application.GetRealWidth(343),
+                Height = Application.GetRealHeight(72),
+                BackgroundImagePath = $"FunctionIcon/Acst/{imageFolder}/MsgViewBg.png",
+            };
+            infoView.AddChidren(infoContentView);
+
+            #region 浼犳劅鍣ㄦ暟鎹�
+            int sensorCount = 0;
+            var tempObj = function.GetAttribute(AcstParent_AttrEnum.room_temp.ToString());
+            if(tempObj!= null)
+            {
+                sensorCount++;
+            }
+            var humiObj = function.GetAttribute(AcstParent_AttrEnum.room_humidity.ToString());
+            if(humiObj != null)
+            {
+                sensorCount++;
+            }
+            var pm25Obj = function.GetAttribute(AcstParent_AttrEnum.pm25.ToString());
+            if (pm25Obj != null)
+            {
+                sensorCount++;
+            }
+            var co2Obj = function.GetAttribute(AcstParent_AttrEnum.co2.ToString());
+            if (co2Obj != null)
+            {
+                sensorCount++;
+            }
+            var tvocObj = function.GetAttribute(AcstParent_AttrEnum.tvoc.ToString());
+            if (tvocObj != null)
+            {
+                sensorCount++;
+            }
+
+            var sensorListView = new HorizontalScrolViewLayout()
+            {
+                Width = Application.GetRealWidth(60 * sensorCount),
+                Gravity = Gravity.Center,
+            };
+            infoContentView.AddChidren(sensorListView);
+
+
+            if (tempObj != null)
+            {
+                sensorDiyView_Temp = new SensorDiyView(sensorListView, curColor, tempObj.curValue.ToString() + "掳", "娓╁害");
+            }
+            if (humiObj != null)
+            {
+                sensorDiyView_Humi = new SensorDiyView(sensorListView, curColor, humiObj.curValue.ToString() + "%", "婀垮害");
+            }
+            if (pm25Obj != null)
+            {
+                sensorDiyView_Pm25 = new SensorDiyView(sensorListView, curColor, pm25Obj.curValue.ToString(), "PM2.5");
+            }
+            if (co2Obj != null)
+            {
+                sensorDiyView_Co2 = new SensorDiyView(sensorListView, curColor, co2Obj.curValue.ToString(), "CO2");
+            }
+            if (tvocObj != null)
+            {
+                sensorDiyView_Tvoc = new SensorDiyView(sensorListView, curColor, tvocObj.curValue.ToString(), "TVOC");
+            }
+            #endregion
+
+            #region 鑳借�楁暟鎹�
+            int energyCount = 0;
+            var dayObj = function.GetAttribute(AcstParent_AttrEnum.day_electricity.ToString());
+            if (dayObj != null)
+            {
+                energyCount++;
+            }
+            var monthObj = function.GetAttribute(AcstParent_AttrEnum.month_electricity.ToString());
+            if (monthObj != null)
+            {
+                energyCount++;
+            }
+            var totalObj = function.GetAttribute(AcstParent_AttrEnum.total_electricity.ToString());
+            if (totalObj != null)
+            {
+                energyCount++;
+            }
+
+            var energyListView = new HorizontalScrolViewLayout()
+            {
+                Width = Application.GetRealWidth(60 * energyCount),
+                Gravity = Gravity.Center,
+                Visible = false,
+            };
+            infoContentView.AddChidren(energyListView);
+            if (dayObj != null)
+            {
+                sensorDiyView_EleDay = new SensorDiyView(energyListView, curColor, dayObj.curValue.ToString(), "浠婃棩鑰楃數");
+            }
+            if (monthObj != null)
+            {
+                sensorDiyView_EleMonth = new SensorDiyView(energyListView, curColor, monthObj.curValue.ToString(), "鏈湀鑰楃數");
+            }
+            if (totalObj != null)
+            {
+                sensorDiyView_EleTotal = new SensorDiyView(energyListView, curColor, totalObj.curValue.ToString(), "鎬昏�楃數閲�");
+            }
+
+            var btnChangeClick = new Button();
+            infoView.AddChidren(btnChangeClick);
+
+            bool showSensor = true;
+            EventHandler<MouseEventArgs> changeInfoEvent = (sender, e) => {
+                if (showSensor)
+                {
+                    sensorListView.Visible = false;
+                    showSensor = false;
+                    energyListView.Visible = true;
+                }
+                else
+                {
+                    sensorListView.Visible = true;
+                    showSensor = true;
+                    energyListView.Visible = false;
+                }
+            };
+            btnChangeClick.MouseUpEventHandler = changeInfoEvent;
+
+
+            #endregion
+
+            #endregion
+
+            #region 瀛愭帶鍒楄〃
+
+            var subTitleView = new FrameLayout()
+            {
+                Height = Application.GetRealHeight(54-11),
+            };
+            bodyView.AddChidren(subTitleView);
+
+            var btnCollection = new Button()
+            {
+                X = Application.GetRealWidth(6),
+                Y = Application.GetRealHeight(10),
+                Width = Application.GetRealWidth(39),
+                Height = Application.GetRealWidth(39),
+                IsSelected = function.collect,
+                UnSelectedImagePath = "FunctionIcon/Acst/grey/CollectionIcon.png",
+                SelectedImagePath = $"FunctionIcon/Acst/{imageFolder}/CollectionIcon.png",
+            };
+            subTitleView.AddChidren(btnCollection);
+            //鏀惰棌
+            btnCollection.MouseUpEventHandler = (sender, e) => {
+                function.collect = !function.collect;
+                btnCollection.IsSelected = function.collect;
+
+                //var http = new DAL.Server.HttpServerRequest();
+                //http.CollectDevice(function.deviceId);
+                function.CollectFunction();
+
+            };
+
+            var btnTitleText = new Button()
+            {
+                X = btnCollection.Right,
+                Text = "鎴戠殑瀹跺涵",
+                TextSize = 16,
+                TextColor = 0xFF242424,
+                TextAlignment = TextAlignment.CenterLeft,
+                IsBold = true,
+                Height = Application.GetRealHeight(54),
+            };
+            subTitleView.AddChidren(btnTitleText);
+
+            int subFunctionCount = 0;
+
+            var subFunctionListView = new HorizontalScrolViewLayout()
+            {
+                Height = Application.GetRealHeight(88),
+            };
+            bodyView.AddChidren(subFunctionListView);
+
+
+            subFunctionListView.AddChidren(new Button { Width = Application.GetRealWidth(9) });
+            foreach (var sub in FunctionList.List.GetAcstSubList())
+            {
+                if (subViewList.ContainsKey(sub.sid))
+                {
+                    continue;
+                }
+
+                if (subFunctionCount > 0 && subFunctionCount % 2 == 0)
+                {
+                    subFunctionListView = new HorizontalScrolViewLayout()
+                    {
+                        Height = Application.GetRealHeight(93),
+                    };
+                    bodyView.AddChidren(subFunctionListView);
+                    subFunctionListView.AddChidren(new Button { Width = Application.GetRealWidth(9) });
+                }
+
+                AcstSubControlView subFunctionView = new AcstSubControlView(sub, subFunctionListView,imageFolder);
+
+                subViewList.Add(sub.sid, subFunctionView);
+
+
+
+                subFunctionCount++;
+            }
+
+            #endregion
+
+            bodyView.AddChidren(new Button()
+            {
+                Height = Application.GetRealHeight(72),
+            });
+
+            #region 搴曢儴鎺у埗鏍�
+            var bottomView = new FrameLayout()
+            {
+                Y = Application.GetRealHeight(667 - 56),
+                Height = Application.GetRealHeight(56),
+                BackgroundColor = CSS.CSS_Color.MainBackgroundColor,
+            };
+            this.AddChidren(bottomView);
+
+            var btnModeControl = new Button()
+            {
+                X = Application.GetRealWidth(89),
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetRealWidth(38),
+                Height = Application.GetRealWidth(38),
+                UnSelectedImagePath = "FunctionIcon/Acst/grey/ModeCoolIcon2.png",
+                SelectedImagePath = $"FunctionIcon/Acst/{imageFolder}/ModeCoolIcon2.png",
+                TextAlignment = TextAlignment.Center,
+            };
+            bottomView.AddChidren(btnModeControl);
+            btnModeControl.MouseUpEventHandler = (sender, e) =>
+            {
+                Dialog dialog = new Dialog();
+
+                var dialogView = new FrameLayout();
+                dialog.AddChidren(dialogView);
+                dialogView.MouseUpEventHandler = (sender, e) => {
+                    dialog.Close();
+                };
+
+                var dialogContentView = new FrameLayout() {
+                    X = Application.GetRealWidth(34),
+                    Y = Application.GetRealHeight(291),
+                    Width = Application.GetRealWidth(144),
+                    Height = Application.GetRealHeight(291),
+                    BackgroundImagePath = "FunctionIcon/Acst/BgChooseMode.png",
+                };
+                dialogView.AddChidren(dialogContentView);
+
+                var titleView = new FrameLayout() {
+                    X = Application.GetRealWidth(2),
+                    Y = Application.GetRealHeight(3),
+                    Width = Application.GetRealWidth(144),
+                    Height = Application.GetRealHeight(44),
+                };
+                dialogContentView.AddChidren(titleView);
+                var btnTitleText = new Button()
+                {
+                    X = Application.GetRealWidth(16),
+                    Width = Application.GetRealWidth(100),
+                    Text = "閫夋嫨妯″紡",
+                    TextSize = 16,
+                    TextColor = CSS.CSS_Color.FirstLevelTitleColor,
+                    IsBold = true,
+                    TextAlignment = TextAlignment.CenterLeft,
+                };
+                titleView.AddChidren(btnTitleText);
+
+
+
+
+
+                dialog.Show();
+            };
+
+            var btnPowerControl = new Button()
+            {
+                Gravity = Gravity.Center,
+                Width = Application.GetRealWidth(38),
+                Height = Application.GetRealWidth(38),
+                UnSelectedImagePath = "FunctionIcon/Acst/grey/PowerOffIcon.png",
+                SelectedImagePath = $"FunctionIcon/Acst/{imageFolder}/PowerOnIcon.png",
+                TextAlignment = TextAlignment.Center,
+            };
+            bottomView.AddChidren(btnPowerControl);
+
+
+            var btnWorkSceneControl = new Button()
+            {
+                Gravity = Gravity.CenterVertical,
+                X = Application.GetRealWidth(249),
+                Width = Application.GetRealWidth(38),
+                Height = Application.GetRealWidth(38),
+                UnSelectedImagePath = "FunctionIcon/Acst/grey/SceneSleepIcon2.png",
+                SelectedImagePath = $"FunctionIcon/Acst/{imageFolder}/SceneSleepIcon2.png",
+                TextAlignment = TextAlignment.Center,
+            };
+            bottomView.AddChidren(btnWorkSceneControl);
+
+
+
+
+            #endregion
+
+
+
+
+
+
+
+            InitGetWeatherAction();
+
+        }
+
+
+
+    }
+
+    /// <summary>
+    /// 浼犳劅鍣ㄦ暟鎹粍浠�
+    /// </summary>
+    public class SensorDiyView
+    {
+        private FrameLayout contentView;
+        private Button btnValue;
+        private Button btnText;
+        public string Tag;
+
+        public SensorDiyView(HorizontalScrolViewLayout view,uint color,string value,string text)
+        {
+            ///榛樿Tag 涓轰紶杩涙潵鐨凾ext
+            Tag = text;
+
+            contentView = new FrameLayout()
+            {
+                Width = Application.GetRealWidth(60),
+                Height = Application.GetRealHeight(72),
+            };
+            view.AddChidren(contentView);
+
+            btnValue = new Button()
+            {
+                Y = Application.GetRealHeight(10),
+                Height = Application.GetRealHeight(72 - 37),
+                TextAlignment = TextAlignment.Center,
+                TextColor = color,
+                TextSize = 20,
+                Text = value,
+            };
+            contentView.AddChidren(btnValue);
+
+            btnText = new Button()
+            {
+                Y = Application.GetRealHeight(72 - 37),
+                Height = Application.GetRealHeight(37),
+                TextAlignment = TextAlignment.Center,
+                TextColor = 0xFF949AA5,
+                TextSize = 12,
+                Text = text,
+            };
+            contentView.AddChidren(btnText);
+        }
+
+        public void UpdateValue(string value)
+        {
+            btnText.Text = value;
+        }
+    }
+
+    /// <summary>
+    /// 瀛愭帶鍗$墖缁勪欢
+    /// </summary>
+    public class AcstSubControlView
+    {
+        public TextButton btnSubTempValues;
+        public TextButton btnSubHumidityValues;
+        public Button btnSubPower;
+
+        public AcstSubControlView(Function sub, HorizontalScrolViewLayout subFunctionListView,string imageFolder)
+        {
+            var subFunctionView = new FrameLayout()
+            {
+                Width = Application.GetRealWidth(177),
+                Height = Application.GetRealHeight(93),
+                BackgroundImagePath = "FunctionIcon/Acst/grey/BgSubControlView.png",
+            };
+            subFunctionListView.AddChidren(subFunctionView);
+
+            var btnRoomInfo = new Button()
+            {
+                X = Application.GetRealWidth(18 + 7),
+                Y = Application.GetRealHeight(11),
+                Height = Application.GetRealHeight(40),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = 0xFF1b3053,
+                TextSize = 13,
+                Text = sub.GetRoomListName(),
+            };
+            subFunctionView.AddChidren(btnRoomInfo);
+
+            var btnSubTempIcon = new Button()
+            {
+                X = Application.GetRealWidth(16 + 7),
+                Y = Application.GetRealHeight(47 + 11),
+                Width = Application.GetMinRealAverage(11),
+                Height = Application.GetMinRealAverage(11),
+                UnSelectedImagePath = "FunctionIcon/CAC/HvacCacTempIcon.png",
+            };
+            subFunctionView.AddChidren(btnSubTempIcon);
+
+            btnSubTempValues = new TextButton()
+            {
+                X = btnSubTempIcon.Right,
+                Y = Application.GetRealHeight(45 + 11),
+                Height = Application.GetRealHeight(14),
+                Width = Application.GetRealWidth(22),
+                TextColor = 0xFF1b3035,
+                TextSize = 10,
+                Text = sub.GetAttrState(AcstSub_AttrEnum.room_temp.ToString()) + "掳C",
+                TextAlignment = TextAlignment.CenterLeft,
+            };
+            subFunctionView.AddChidren(btnSubTempValues);
+
+            Button btnSubHumidityIcon = new Button()
+            {
+                X = btnSubTempValues.Right + Application.GetRealWidth(5),
+                Y = Application.GetRealHeight(47 + 11),
+                Width = Application.GetMinRealAverage(11),
+                Height = Application.GetMinRealAverage(11),
+                UnSelectedImagePath = "FunctionIcon/CAC/HvacCacHumidityIcon.png",
+            };
+            subFunctionView.AddChidren(btnSubHumidityIcon);
+
+            btnSubHumidityValues = new TextButton()
+            {
+                X = btnSubHumidityIcon.Right,
+                Y = Application.GetRealHeight(45 + 11),
+                Height = Application.GetRealHeight(14),
+                Width = Application.GetRealWidth(22),
+                TextColor = 0xFF1b3053,
+                TextSize = 10,
+                Text = sub.GetAttrState(AcstSub_AttrEnum.room_humidity.ToString()) + "%",
+                TextAlignment = TextAlignment.CenterLeft,
+            };
+            subFunctionView.AddChidren(btnSubHumidityValues);
+
+            btnSubPower = new Button()
+            {
+                X = Application.GetRealWidth(121 + 7),
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetRealWidth(28),
+                Height = Application.GetRealWidth(28),
+                UnSelectedImagePath = "FunctionIcon/Acst/grey/PowerOffIcon.png",
+                SelectedImagePath = $"FunctionIcon/Acst/{imageFolder}/PowerIcon.png",
+                TextAlignment = TextAlignment.Center,
+            };
+            subFunctionView.AddChidren(btnSubPower);
+
+        }
+    }
+
+
+    public class IconButton : FrameLayout
+    {
+        FrameLayout view;
+
+        public Button btnIcon;
+
+        public Button btnText;
+
+        public IconButton(string iconPath,string iconPath2,string text,uint color,bool isSelect)
+        {
+            view = this;
+            view.Width = Application.GetRealWidth(144);
+            view.Height = Application.GetRealHeight(44);
+
+            btnIcon = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth(24),
+                Height = Application.GetRealWidth(24),
+                UnSelectedImagePath = iconPath,
+                SelectedImagePath = iconPath2,
+                IsSelected = isSelect,
+            };
+            view.AddChidren(btnIcon);
+
+            btnText = new Button()
+            {
+                X = btnIcon.Right + Application.GetRealWidth(12),
+                Width = Application.GetRealWidth(90),
+                TextAlignment = TextAlignment.CenterLeft,
+                Text = text,
+                TextSize = 14,
+                TextColor = CSS.CSS_Color.FirstLevelTitleColor,
+                SelectedTextColor = color,
+                IsSelected = isSelect,
+            };
+            view.AddChidren(btnText);
+
+            
+        }
+    }
+}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Acst/AcstSubPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Acst/AcstSubPage.cs
new file mode 100644
index 0000000..17a0485
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/Acst/AcstSubPage.cs
@@ -0,0 +1,95 @@
+锘縰sing System;
+using Shared;
+
+namespace HDL_ON.UI
+{
+    public class AcstSubPage : FrameLayout
+    {
+        FrameLayout bodyView;
+
+        string imageFolder = "blue";
+
+        public AcstSubPage()
+        {
+            bodyView = this;
+        }
+
+
+
+        public void LoadPage()
+        {
+            //涓�涓儗鏅浘鐗�
+            //var framePic = new FrameLayout();
+            //framePic.Y = Application.GetRealHeight(120);
+            //framePic.Width = Application.GetRealWidth(303);
+            //framePic.Height = Application.GetRealHeight(175);
+            //framePic.Gravity = Gravity.CenterHorizontal;
+            //framePic.BackgroundImagePath = $"FunctionIcon/Acst/{imageFolder}/TempAndHumiBack.png";
+            //this.FrameWhiteCentet1.AddChidren(framePic);
+
+            ////瀹ゅ唴婀垮害 鐨勫鍣�(涓轰簡閲嶆柊璁$畻鍧愭爣浣跨敤)
+            //int frameWidth = framePic.Width / 2 - this.GetPictrueRealSize(21);
+            //var frameHumidity = new FrameLayout();
+            //frameHumidity.X = this.GetPictrueRealSize(21);
+            //frameHumidity.Y = this.GetPictrueRealSize(12);
+            //frameHumidity.Width = frameWidth;
+            //frameHumidity.Height = frameWidth;
+            //framePic.AddChidren(frameHumidity);
+            ////瀹ゅ唴婀垮害鍊�
+            //this.btnHumidity = new NormalViewControl(20, this.GetPicChidrenTextHeight(30), false);
+            //btnHumidity.Y = this.GetPictrueRealSize(39);
+            //btnHumidity.TextSize = 30;
+            //btnHumidity.TextColor = CSS_Color.FirstLevelTitleColor;
+            //btnHumidity.TextAlignment = TextAlignment.TopCenter;
+            //frameHumidity.AddChidren(btnHumidity);
+            ////%
+            //this.btnHumidityUnit = new NormalViewControl(10, 10, true);
+            //btnHumidityUnit.Y = btnHumidity.Y + this.GetPictrueRealSize(8);
+            //btnHumidityUnit.TextColor = CSS_Color.TextualColor;
+            //btnHumidityUnit.Text = "%";
+            //btnHumidityUnit.TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel;
+            //btnHumidityUnit.Width = btnHumidityUnit.GetRealWidthByText();
+            //frameHumidity.AddChidren(btnHumidityUnit);
+            ////瀹ゅ唴婀垮害
+            //var btnHumidityView = new NormalViewControl(frameHumidity.Width, this.GetPicChidrenTextHeight(18), false);
+            //btnHumidityView.Y = btnHumidity.Bottom + this.GetPictrueRealSize(8);
+            //btnHumidityView.TextAlignment = TextAlignment.Center;
+            //btnHumidityView.TextColor = CSS_Color.TextualColor;
+            //btnHumidityView.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
+            //btnHumidityView.TextID = StringId.IndoorHumidity;
+            //frameHumidity.AddChidren(btnHumidityView);
+
+            ////瀹ゅ唴娓╁害 鐨勫鍣�(涓轰簡閲嶆柊璁$畻鍧愭爣浣跨敤)
+            //var frameTemperature = new FrameLayout();
+            //frameTemperature.Y = frameHumidity.Y;
+            //frameTemperature.X = frameHumidity.Right;
+            //frameTemperature.Width = frameWidth;
+            //frameTemperature.Height = frameWidth;
+            //framePic.AddChidren(frameTemperature);
+            ////瀹ゅ唴娓╁害鍊�
+            //this.btnTemperature = new NormalViewControl(20, this.GetPicChidrenTextHeight(30), false);
+            //btnTemperature.Y = btnHumidity.Y;
+            //btnTemperature.TextSize = 30;
+            //btnTemperature.TextColor = CSS_Color.FirstLevelTitleColor;
+            //btnTemperature.TextAlignment = TextAlignment.TopCenter;
+            //btnTemperature.GetRealWidthByText();
+            //frameTemperature.AddChidren(btnTemperature);
+            ////鈩�
+            //this.btnTemperatureUnit = new NormalViewControl(10, 10, true);
+            //btnTemperatureUnit.Y = btnTemperature.Y + this.GetPictrueRealSize(8);
+            //btnTemperatureUnit.TextColor = CSS_Color.TextualColor;
+            //btnTemperatureUnit.Text = "鈩�";
+            //btnTemperatureUnit.TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel;
+            //btnTemperatureUnit.Width = btnTemperatureUnit.GetRealWidthByText();
+            //frameTemperature.AddChidren(btnTemperatureUnit);
+            ////瀹ゅ唴娓╁害
+            //var btnTemperatureView = new NormalViewControl(frameTemperature.Width, this.GetPicChidrenTextHeight(18), false);
+            //btnTemperatureView.Y = btnTemperature.Bottom + this.GetPictrueRealSize(8);
+            //btnTemperatureView.TextAlignment = TextAlignment.Center;
+            //btnTemperatureView.TextColor = CSS_Color.TextualColor;
+            //btnTemperatureView.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
+            //btnTemperatureView.TextID = StringId.IndoorTemp;
+            //frameTemperature.AddChidren(btnTemperatureView);
+        }
+    }
+}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/ArmCenter/PushConfigPage.cs b/HDL_ON/UI/UI2/FuntionControlView/ArmCenter/PushConfigPage.cs
index 6576dcb..39eb4ac 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/ArmCenter/PushConfigPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/ArmCenter/PushConfigPage.cs
@@ -82,7 +82,7 @@
                 {
                     try
                     {
-                        userList = Send.GetResidenceMemberAccount();
+                        userList = Send.Current.GetResidenceMemberAccount();
 
                     }
                     catch { }
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicFileList.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicFileList.cs
index 2982d04..075ace3 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicFileList.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicFileList.cs
@@ -37,7 +37,7 @@
                 {
                     try
                     {
-                        SendMethod.mMethod.GetPalyList(A31MusicModel.Current.functionMusic);
+                        SendMethod.Current.GetPalyList(A31MusicModel.Current.functionMusic);
                     }
                     catch { }
                     finally
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicModel.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicModel.cs
index 40ee2ef..1207c0b 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicModel.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicModel.cs
@@ -16,13 +16,15 @@
             //Refresh();
         }
 
-     
+
         /// <summary>
         /// 闊充箰鍔熻兘
         /// </summary>
         public Function functionMusic = new Function();
-       
-      
+
+
+
+
         /// <summary>
         ///淇濆瓨褰撳墠闊充箰鍒楄〃
         /// </summary>
@@ -50,14 +52,18 @@
             A31MusicModelList.RemoveAll((obj) => obj == null);
         }
 
-     
+
         /// <summary>
         /// 涓婁竴娆℃洿鏂扮殑鏃堕棿
         /// 璁板綍鏁版嵁鍙嶉鐨勬椂闂�(鍥犱负鏈夋椂鍊欑綉缁滃樊鏁版嵁涓嶅洖澶嶏紝瀵艰嚧鍒锋柊褰撳墠鎾斁闊充箰鏃堕棿涓嶆纭�)
         /// ((褰撳墠鏃堕棿)DateTime.Now - (璁板綍鏃堕棿)LastDateTimeLastDateTime).TotalSeconds=璇樊鏃堕棿(绉�)
         /// </summary>
         public DateTime LastDateTime;
-      
+        /// <summary>
+        /// 璁板綍婊戝姩闊抽噺鏉℃椂闂�<鐢ㄦ潵澶勭悊闊抽噺璺冲姩>
+        /// </summary>
+        public static DateTime ProgressDateTime = DateTime.MinValue;
+
         /// <summary>
         /// 闊充箰鎾斁鍣↖D
         /// </summary>
@@ -80,7 +86,7 @@
         /// <summary>
         /// 鍒楄〃
         /// </summary>
-        public List<PalyList> palyLists = new List<PalyList>(); 
+        public List<PalyList> palyLists = new List<PalyList>();
 
         /// <summary>
         ///  鍠滅埍闊充箰鍒楄〃
@@ -96,8 +102,8 @@
         /// </summary>
         public static A31MusicModel Current;
 
-       
-   
+
+
 
         /// <summary>
         /// 鎸囧畾鍒楄〃鍚嶈幏鍙栭煶涔愬垪琛�
@@ -105,19 +111,16 @@
         /// <returns></returns>
         public List<Songs> GetSongList(string listName)
         {
-            var list = palyLists.Find((o)=>o.group==listName);
-            if (list==null) {
+            var list = palyLists.Find((o) => o.group == listName);
+            if (list == null)
+            {
                 return new List<Songs>();
             }
             return list.songs;
         }
-       
+
 
         public Slaves Slave = new Slaves();
-        /// <summary>
-        /// 璁板綍鏃堕棿
-        /// </summary>
-        public static DateTime ProgressDateTime = DateTime.Now;
 
         /// <summary>
         /// 鍒ゆ柇鏄惁鏄痡son鏁版嵁
@@ -224,7 +227,7 @@
         public List<Songs> songs = new List<Songs>();
     }
     [System.Serializable]
-    public class Songs:MusicInfo
+    public class Songs : MusicInfo
     {
         /// <summary>
         /// 姝屾洸鍚嶇О
@@ -242,11 +245,40 @@
         /// 绫诲瀷<鑷繁鐢�>
         /// </summary>
         public string type = string.Empty;
-
-
-
-
+        /// <summary>
+        /// 鍒楄〃鍚嶅拰group缁勫悕鏄竴鏍风殑
+        /// </summary>
+        public string listName = string.Empty;
     }
 
 
+    [System.Serializable]
+    /// <summary>
+    /// 鍒楄〃鍚嶅垪琛�
+    /// </summary>
+    public class GroupList
+    {
+        /// <summary>
+        ///璁惧sid
+        /// </summary>
+        public string sid = string.Empty;
+        /// <summary>
+        /// 鍒楄〃鍚嶉泦鍚�
+        /// </summary>
+        public List<ListName> groupList = new List<ListName>();
+
+    }
+    [System.Serializable]
+    /// <summary>
+    /// 鍒楄〃鍚�
+    /// </summary>
+    public class ListName
+    {
+        /// <summary>
+        /// 缁勫悕=鍒楄〃鍚�
+        /// </summary>
+        public string group = string.Empty;
+
+    }
+
 }
\ No newline at end of file
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicSourcePage.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicSourcePage.cs
index 8dba2e9..0ecebe6 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicSourcePage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicSourcePage.cs
@@ -158,7 +158,7 @@
                     {
                         if (A31MusicModel.Current.palyLists.Count == 0)
                         {
-                           SendMethod.mMethod.GetPalyList(A31MusicModel.Current.functionMusic);
+                           SendMethod.Current.GetPalyList(A31MusicModel.Current.functionMusic);
                            
                         }
                     }
@@ -189,7 +189,7 @@
                     {
                         try
                         {
-                            SendMethod.mMethod.EditDeviceName(A31MusicModel.Current.functionMusic.deviceId,playerName);
+                            SendMethod.Current.EditDeviceName(A31MusicModel.Current.functionMusic.deviceId,playerName);
                         }
                         catch { }
 
@@ -230,11 +230,40 @@
             ///鎴戠殑鍒楄〃浜嬩欢
             myListView.clickBtn.MouseUpEventHandler += (sender, e) =>
             {
-                A31MyList a31MyList = new A31MyList();
-                MainPage.BasePageView.AddChidren(a31MyList);
-                a31MyList.Show();
-                a31MyList.UpdateSelectedFile();
-                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                //A31MyList a31MyList = new A31MyList();
+                //MainPage.BasePageView.AddChidren(a31MyList);
+                //a31MyList.Show();
+                //a31MyList.UpdateSelectedFile();
+                //MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                
+                System.Threading.Tasks.Task.Run(() =>
+                {
+                    try
+                    {
+
+                        //HDL_ON.DriverLayer.Control.Ins.GetMusicDirectory(device);
+                        var palyListName = Music.SendMethod.Current.GetListName(A31MusicModel.Current.functionMusic);
+                        var palyList = Music.SendMethod.Current.GetListMusic(A31MusicModel.Current.functionMusic, "hdl_special");
+                        List<string> musicNameList = new List<string>();
+                        for (int i = 0; i < palyList.songs.Count; i++)
+                        {
+                            var music = palyList.songs[i];
+                            musicNameList.Add(music.name);
+                        }
+                        Application.RunOnMainThread(() =>
+                        {
+                            UI2.Intelligence.Automation.PublicInterface publicInterface = new UI2.Intelligence.Automation.PublicInterface();
+                            publicInterface.FrameOrVv(this, musicNameList, new List<string> { "123" }, palyList.group, (index) =>
+                            {
+                               
+                                
+                            }, false);
+
+                        });
+                    }
+                    catch { }
+
+                });
             };
           
      
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/A31PlayMusicPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/A31PlayMusicPage.cs
index 71d6531..a74585d 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/A31PlayMusicPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/A31PlayMusicPage.cs
@@ -145,7 +145,7 @@
                  Dictionary<string, string> dic = new Dictionary<string, string>();
                  dic.Add(KeyProperty.mode, modeValueString);
                  //鍙戦�佹帶鍒舵寚浠�
-                 SendMethod.mMethod.SendControlCommand(A31MusicModel.Current.functionMusic, dic);
+                 SendMethod.Current.SendControlCommand(A31MusicModel.Current.functionMusic, dic);
              };
             ///娣诲姞鍠滅埍鐐瑰嚮浜嬩欢;
             playView.loveBtn.MouseUpEventHandler += (sender, e) =>
@@ -192,7 +192,7 @@
                             A31MusicModel.Current.palyLists.Clear();
                             if (A31MusicModel.Current.palyLists.Count == 0)
                             {
-                                SendMethod.mMethod.GetPalyList(A31MusicModel.Current.functionMusic);
+                                SendMethod.Current.GetPalyList(A31MusicModel.Current.functionMusic);
 
                             }
                         }
@@ -249,7 +249,7 @@
                     A31MusicModel.Current.functionMusic.SetAttrState(KeyProperty.volume, startVolume);
                     Dictionary<string, string> dic = new Dictionary<string, string>();
                     dic.Add(KeyProperty.volume, startVolume.ToString());
-                    SendMethod.mMethod.SendControlCommand(A31MusicModel.Current.functionMusic, dic);
+                    SendMethod.Current.SendControlCommand(A31MusicModel.Current.functionMusic, dic);
 
                 }
             };
@@ -263,7 +263,7 @@
                 A31MusicModel.Current.functionMusic.SetAttrState(KeyProperty.song_step, ValueProperty.down);
                 Dictionary<string, string> dic = new Dictionary<string, string>();
                 dic.Add(KeyProperty.song_step, ValueProperty.up);
-                SendMethod.mMethod.SendControlCommand(A31MusicModel.Current.functionMusic, dic);
+                SendMethod.Current.SendControlCommand(A31MusicModel.Current.functionMusic, dic);
 
             };
             playView.prevBtn.MouseUpEventHandler += (sender, e) =>
@@ -288,7 +288,7 @@
                 A31MusicModel.Current.functionMusic.SetAttrState(KeyProperty.on_off, status);
                 Dictionary<string, string> dic = new Dictionary<string, string>();
                 dic.Add(KeyProperty.on_off, status);
-                SendMethod.mMethod.SendControlCommand(A31MusicModel.Current.functionMusic, dic);
+                SendMethod.Current.SendControlCommand(A31MusicModel.Current.functionMusic, dic);
             };
             ///涓嬩竴鏇茬偣鍑讳簨浠�
             playView.nextBtn.MouseDownEventHandler += (sender, e) =>
@@ -297,7 +297,7 @@
                 A31MusicModel.Current.functionMusic.SetAttrState(KeyProperty.song_step, ValueProperty.down);
                 Dictionary<string, string> dic = new Dictionary<string, string>();
                 dic.Add(KeyProperty.song_step, ValueProperty.down);
-                SendMethod.mMethod.SendControlCommand(A31MusicModel.Current.functionMusic, dic);
+                SendMethod.Current.SendControlCommand(A31MusicModel.Current.functionMusic, dic);
             };
             playView.nextBtn.MouseUpEventHandler += (sender, e) =>
             {
@@ -614,7 +614,7 @@
                         if (A31MusicModel.Current.palyLists.Count == 0)
                         {
                             //鑾峰彇姝屾洸鍒楄〃
-                            SendMethod.mMethod.GetPalyList(A31MusicModel.Current.functionMusic);
+                            SendMethod.Current.GetPalyList(A31MusicModel.Current.functionMusic);
 
                         }
                     }
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/A31SongPlay.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/A31SongPlay.cs
index 1ec1ba3..f036a0b 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/A31SongPlay.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/A31SongPlay.cs
@@ -78,7 +78,7 @@
                             Dictionary<string, string> dic = new Dictionary<string, string>();
                             dic.Add("song_name", songView.songBtn.Text);
                             dic.Add("playlist_name", listName);
-                            SendMethod.mMethod.SendControlCommand(A31MusicModel.Current.functionMusic, dic);
+                            SendMethod.Current.SendControlCommand(A31MusicModel.Current.functionMusic, dic);
                         });
                     });
                 };
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/MusicMain.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/MusicMain.cs
index fb59e14..b861d56 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/MusicMain.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/MusicMain.cs
@@ -10,16 +10,16 @@
 {
     public class MusicMain : FrameLayout
     {
-        private static MusicMain m_MusicMain = null;
-        public static MusicMain mMusicMain
+        private static MusicMain s_Current = null;  
+        public static MusicMain Current
         {
             get
             {
-                if (m_MusicMain == null)
+                if (s_Current == null)
                 {
-                    m_MusicMain = new MusicMain();
+                    s_Current = new MusicMain();
                 }
-                return m_MusicMain;
+                return s_Current;
             }
 
         }
@@ -36,7 +36,7 @@
         public override void RemoveFromParent()
         {
             base.RemoveFromParent();
-            clearA31Threads();
+            ClearA31Threads();
             //杩涙潵娌℃湁闊充箰琚敹钘忚繃锛岄��鍑烘湁闊充箰琚敹钘忚繃
             //A31MusicModel.ReadMusicStates();
         }
@@ -47,7 +47,7 @@
         /// <summary>
         /// 绉婚櫎绾跨▼
         /// </summary>
-        static void clearA31Threads()
+        static void ClearA31Threads() 
         {
 
             var threads = threadLists.FindAll((obj) => { return obj.Name == "A31"; });
@@ -119,10 +119,10 @@
             {
                 verticalRefresh.RemoveAll();
                 A31MusicModel.A31MusicModelList.Clear();
-                var musicListFunction = FunctionList.List.GetMusicList();
-                for (int i = 0; i < musicListFunction.Count; i++)
+                var musicDeviceList= FunctionList.List.GetMusicList(); 
+                for (int i = 0; i < musicDeviceList.Count; i++)
                 {
-                    var function = musicListFunction[i]; 
+                    var function = musicDeviceList[i]; 
                     var music = A31MusicModel.A31MusicModelList.Find((obj) =>
                    (obj.functionMusic.deviceId == function.deviceId && function.spk == SPK.MusicStandard) || (
                      obj.functionMusic.deviceId == function.deviceId && function.spk == SPK.AvMusic)
@@ -167,7 +167,8 @@
                     {
                         try
                         {
-                            SendMethod.mMethod.RefreshDeviceStatus(new List<string> { a31player.functionMusic.deviceId });
+                            
+                            SendMethod.Current.RefreshDeviceStatus(new List<string> { a31player.functionMusic.deviceId });
                             System.Threading.Thread.Sleep(500);
                         }
                         catch { }
@@ -232,7 +233,7 @@
                 player.functionMusic.SetAttrState(KeyProperty.song_step, ValueProperty.up);
                 Dictionary<string, string> dic = new Dictionary<string, string>();
                 dic.Add(KeyProperty.song_step, ValueProperty.up);
-                SendMethod.mMethod.SendControlCommand(player.functionMusic, dic);
+                SendMethod.Current.SendControlCommand(player.functionMusic, dic);
             };
             musicView.prevBtn.MouseUpEventHandler += (sender, e) =>
             {
@@ -255,7 +256,7 @@
                 player.functionMusic.SetAttrState(KeyProperty.on_off, status);
                 Dictionary<string, string> dic = new Dictionary<string, string>();
                 dic.Add(KeyProperty.on_off, status);
-                SendMethod.mMethod.SendControlCommand(player.functionMusic, dic);
+                SendMethod.Current.SendControlCommand(player.functionMusic, dic);
             };
             ///涓嬩竴鏇茬偣鍑讳簨浠�
             musicView.nextBtn.MouseDownEventHandler += (sender, e) =>
@@ -264,7 +265,7 @@
                 player.functionMusic.SetAttrState(KeyProperty.song_step, ValueProperty.down);
                 Dictionary<string, string> dic = new Dictionary<string, string>();
                 dic.Add(KeyProperty.song_step, ValueProperty.down);
-                SendMethod.mMethod.SendControlCommand(player.functionMusic, dic);
+                SendMethod.Current.SendControlCommand(player.functionMusic, dic);
             };
             musicView.nextBtn.MouseUpEventHandler += (sender, e) =>
             {
@@ -281,7 +282,7 @@
                         continue;
                     }
                     //SendMethod.ReadStatus(player);
-                    SendMethod.mMethod.GetDeviceStatus(ref player, new List<string> { player.functionMusic.deviceId }, player.functionMusic.sid);
+                    SendMethod.Current.GetDeviceStatus(ref player, new List<string> { player.functionMusic.deviceId }, player.functionMusic.sid);
                     System.Threading.Thread.Sleep(1000);
                     Application.RunOnMainThread(() =>
                     {
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/SendMethod.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/SendMethod.cs
index 366b349..50cdc79 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/SendMethod.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/SendMethod.cs
@@ -6,22 +6,23 @@
 using System.Text;
 using HDL_ON.DAL.Server;
 using HDL_ON.Entity;
+using Newtonsoft.Json.Linq;
 using Shared;
 
 namespace HDL_ON.UI.Music
 {
     public class SendMethod
     {
-        private static SendMethod sMethod=null;    
-        public static SendMethod mMethod
+        private static SendMethod s_Current = null;
+        public static SendMethod Current
         {
             get
             {
-                if (sMethod == null)
+                if (s_Current == null)
                 {
-                    sMethod = new SendMethod();
+                    s_Current = new SendMethod();
                 }
-                return sMethod;
+                return s_Current;
             }
 
         }
@@ -44,7 +45,7 @@
         {
             new System.Threading.Thread(() =>
             {
-                DriverLayer.Control.Ins.SendWriteCommand(function, dic,false,0);
+                DriverLayer.Control.Ins.SendWriteCommand(function, dic, false, 0);
             })
             { IsBackground = true }.Start();
         }
@@ -58,8 +59,8 @@
             try
             {
                 //RefreshDeviceStatus(functionIds);
-                a31Music.LastDateTime = DateTime.Now;
-                ///浠庣紦瀛橀噷闈㈡煡鎵鹃煶涔愭挱鏀惧櫒瀵硅薄<缂撳瓨鏁版嵁鏀跺埌鎺ㄩ�佽繃鏉ョ殑鐘舵�佷細鏇存柊缂撳瓨鏁版嵁>
+                //a31Music.LastDateTime = DateTime.Now;
+                ///浠庣紦瀛橀噷闈㈡煡鎵鹃煶涔愭挱鏀惧櫒瀵硅薄<鏀跺埌鎺ㄩ�佽繃鏉ョ殑鐘舵�佷細鏇存柊缂撳瓨鏁版嵁>
                 var allLocalFuntion = FunctionList.List.GetDeviceFunctionList();
                 var localFunction = allLocalFuntion.Find((obj) => obj.sid == sid);
                 if (localFunction == null)
@@ -84,7 +85,7 @@
                 Dictionary<string, object> d = new Dictionary<string, object>();
                 d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
                 d.Add("deviceIds", functionIds);
-                var responsePackNew = RequestServerhomeId(d, NewAPI.Api_Post_RefreshDeviceStatus);
+                var responsePackNew = RequestServerhomeId(d, NewAPI.Api_Post_RefreshDeviceStatus, "鍒锋柊璁惧鐘舵��");
                 if (responsePackNew.Code != "0" || responsePackNew.Data == null || responsePackNew.Data.ToString() == "")
                 {
                     return;
@@ -120,8 +121,8 @@
                 Dictionary<string, object> d = new Dictionary<string, object>();
                 d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
                 d.Add("deviceIds", new List<string> { music.deviceId });
-                var responsePackNew = RequestServerhomeId(d, NewAPI.Api_Post_PlayerList);
-                if (responsePackNew.Code != "0"||responsePackNew.Data == null ||responsePackNew.Data.ToString() == "")
+                var responsePackNew = RequestServerhomeId(d, NewAPI.Api_Post_PlayerList, "鑾峰彇闊充箰鍒楄〃");
+                if (responsePackNew.Code != "0" || responsePackNew.Data == null || responsePackNew.Data.ToString() == "")
                 {
                     return;
                 }
@@ -143,16 +144,96 @@
             }
 
         }
-       
+        /// <summary>
+        /// 鑾峰彇鍒楄〃鍚嶅垪琛�
+        /// </summary>
+        /// <param name="music"></param>
+        /// <returns></returns>
+        public List<GroupList> GetListName(Function music)
+        {
+            try
+            {
+                Dictionary<string, object> d = new Dictionary<string, object>();
+                d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
+                d.Add("gatewayId", DB_ResidenceData.Instance.HomeGateway.gatewayId);
+                d.Add("deviceIds", new List<string> { music.deviceId });
+                var responsePackNew = RequestServerhomeId(d, NewAPI.Api_Post_GroupList, "鑾峰彇鍒楄〃鍚嶅垪琛�");
+                if (responsePackNew.Code != "0" || responsePackNew.Data == null || responsePackNew.Data.ToString() == "")
+                {
+                    return new List<GroupList>();
+                }
+                //鏁版嵁杩斿簭鍒楀寲涓篎unction瀵硅薄
+                var str = Newtonsoft.Json.JsonConvert.SerializeObject(responsePackNew.Data);
+                var groupLists = Newtonsoft.Json.JsonConvert.DeserializeObject<List<GroupList>>(str);
+                if (groupLists == null)
+                {
+                    groupLists = new List<GroupList>();
+                }
+                return groupLists;
+            }
+            catch
+            {
+                return new List<GroupList>();
+            }
+        }
+        /// <summary>
+        /// 鑾峰彇鍒楄〃闊充箰
+        /// </summary>
+        /// <param name="music"></param>
+        /// <param name="listName">鍒楄〃鍚�</param>
+        /// <returns></returns>
+        public PalyList GetListMusic(Function music, string listName)
+        {
+            try
+            {
+                Dictionary<string, object> d = new Dictionary<string, object>();
+                Dictionary<string, object> d1 = new Dictionary<string, object>();
+                Dictionary<string, object> d2 = new Dictionary<string, object>();
+                d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
+                d.Add("gatewayId", DB_ResidenceData.Instance.HomeGateway.gatewayId);
+                d2.Add("group", listName);
+                d1.Add("sid", music.sid);
+                d1.Add("groupList", new List<Dictionary<string, object>> { d2 });
+                d.Add("sidGroups", new List<Dictionary<string, object>> { d1 });
+
+                var responsePackNew = RequestServerhomeId(d, NewAPI.Api_Post_GroupPlayerList, "鑾峰彇鍒楄〃闊充箰");
+                if (responsePackNew.Code != "0" || responsePackNew.Data == null || responsePackNew.Data.ToString() == "")
+                {
+                    return new PalyList();
+                }
+                //鏁版嵁杩斿簭鍒楀寲涓篎unction瀵硅薄
+                var str = Newtonsoft.Json.JsonConvert.SerializeObject(responsePackNew.Data);
+                var palyLists = Newtonsoft.Json.JsonConvert.DeserializeObject<List<PalyListInfo>>(str);
+                if (palyLists == null)
+                {
+                    palyLists = new List<PalyListInfo>();
+                }
+
+                if (palyLists.Count == 0)
+                {
+                    return new PalyList();
+                }
+                //榛樿绗竴涓垪琛ㄩ噷闈㈢涓�涓煶涔愬垪琛�
+                return palyLists[0].playlist.Count > 0 ? palyLists[0].playlist[0] : new PalyList();
+
+            }
+            catch
+            {
+                return new PalyList();
+            }
+        }
+
         /// <summary>
         ///璇锋眰鏈嶅姟鍣紙涓庝綇瀹呮湁鍏�:渚嬪锛沨omeId锛� 
         /// </summary>
+        /// <param name="o">鍙戦�佹暟鎹�</param>
+        /// <param name="api_Url">璇锋眰鍦板潃(涓嶆槸缁濆鍦板潃)</param>
+        /// <param name="tag">鏍囪->鎻忚堪鎺ュ彛(鑷畾涔�)</param>
         /// <returns></returns>
-        public  ResponsePackNew RequestServerhomeId(object o, string api_Url, int mTimeout = 5)
+        public ResponsePackNew RequestServerhomeId(object o, string api_Url, string tag, int mTimeout = 5)
         {
-            var requestJson = HttpUtil.GetSignRequestJson(o);
-            return HttpUtil.RequestHttpsPostFroHome(api_Url, requestJson, mTimeout);
-
+            JObject jobject = JObject.Parse(Newtonsoft.Json.JsonConvert.SerializeObject(o)); 
+            return UI2.Intelligence.Automation.Send.Current.RequestServerhomeId(jobject, api_Url, tag, mTimeout);
         }
     }
 }
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Video/ObjectClass.cs b/HDL_ON/UI/UI2/FuntionControlView/Video/ObjectClass.cs
index 2cdae00..7769a0c 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Video/ObjectClass.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Video/ObjectClass.cs
@@ -169,6 +169,9 @@
         /// </summary>
         public string homeId;
         /// <summary>
+        ///  sid
+        /// </summary>
+        public string sid=string.Empty;
         ///  璁惧缂栧彿锛堢洰鍓嶇敤浜庡叏瑙嗛�氾紝鐩稿綋浜庡叏瑙嗛�歀ocalDirectory瀛楁锛�
         /// </summary>
         public string deviceCode;

--
Gitblit v1.8.0