From 794b0967171bd975bb454287616aca170546f8e1 Mon Sep 17 00:00:00 2001
From: 陈嘉乐 <cjl@hdlchina.com.cn>
Date: 星期二, 16 三月 2021 17:15:09 +0800
Subject: [PATCH] Merge branch 'WJC' of http://172.16.1.23:6688/r/~wxr/HDL_APP_Project into WJC

---
 HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/BrandListPage.cs                                 |  227 ++
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/lightrgbw_blue.png                    |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/lightdimming_blue.png                 |    0 
 HDL-ON_Android/Assets/Language.ini                                                          |  183 +
 HDL_ON/UI/UI0-Public/TopViewDivBLL.cs                                                       |   35 
 HDL_ON/Common/ApiUtlis.cs                                                                   |   15 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/electricalracks.png                           |    0 
 HDL-ON_Android/Assets/Phone/PersonalCenter/AddDevice/UploadToClound.png                     |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/DeviceListPage.cs                                |  164 +
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricaltyqborgovyzytytz_white.png  |    0 
 HDL-ON_iOS/Resources/Phone/PersonalCenter/AddDevice/MiniRemoteControlMenuIcon.png           |    0 
 HDL_ON/HDL_ON.projitems                                                                     |   17 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/curtainroller_white.png               |    0 
 HDL-ON_Android/Assets/Phone/PirIcon/projector.png                                           |    0 
 HDL-ON_iOS/Resources/Phone/PirIcon/adddevice.png                                            |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensortemperature.png                          |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irac.png                                      |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irtv_white.png                       |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/airFreshstandard.png                          |    0 
 HDL-ON_iOS/Resources/Phone/PirIcon/search.png                                               |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPageBLL.cs                                     |   27 
 HDL_ON/UI/UI0-Stan/Controls/NormalControls/NormalViewControl.cs                             |    2 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/lightcct_blue.png                     |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/curtaintrietex_blue.png              |    0 
 HDL_ON/UI/UI0-Public/TopViewDiv.cs                                                          |   28 
 HDL_ON/UI/UI0-Stan/Logic/HdlWifiLogic.cs                                                    |   99 +
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/curtaintrietex_white.png             |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/electricaltyqborgovyzytytz.png                |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/curtainswitch.png                             |    0 
 HDL-ON_Android/Assets/Phone/PirIcon/next.png                                                |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irmodule.png                                   |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/lightswitch_white.png                |    0 
 DLL/IOS/HdlBluWi.dll                                                                        |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/airFreshstandard.png                           |    0 
 HDL-ON_Android/Assets/Phone/PersonalCenter/AddDevice/MiniRemoteControlBigPictrue.png        |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/curtainshades.png                              |    0 
 HDL_ON/UI/UI0-Stan/Form/Base/CommonFormBase.cs                                              |   13 
 HDL_ON/UI/UI2/.DS_Store                                                                     |    0 
 HDL-ON_Android/Assets/Phone/PirIcon/addlbuton.png                                           |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/curtainswitch_white.png               |    0 
 HDL_ON/UI/UI0-Stan/Controls/CompoundControls/ProgressRowBar.cs                              |  251 ++
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalfan_white.png               |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensorsmoke.png                               |    0 
 HDL-ON_iOS/.DS_Store                                                                        |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irac_blue.png                        |    0 
 HDL_ON/UI/UI1-Login/ForgetPasswordPageBLL.cs                                                |    1 
 HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/AddDevciePage.cs                                 |  144 +
 HDL-ON_iOS/Resources/Language.ini                                                           |  184 +
 HDL_ON/UI/UI0-Stan/Logic/HdlBluetoothIOSLogic.cs                                            |  489 +++++
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalQ1RsefNf91tIXyyQ_white.png |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/electricalkoiGhMKwLf2ZP81g.png                 |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalQ1RsefNf91tIXyyQ_white.png  |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/electricalkoiGhMKwLf2ZP81g.png                |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensorgas.png                                 |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/electricalai6HtccKFIw3dxo3.png                |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/musicstandard.png                              |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irac.png                                       |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/electricalQ1RsefNf91tIXyyQ.png                |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection1Page.cs              |   78 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricaltyqborgovyzytytz_white.png |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/lightrgb_blue.png                    |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/electricalQ1RsefNf91tIXyyQ.png                 |    0 
 HDL_ON/Common/FileUtlis.cs                                                                  |    7 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irlearn.png                                   |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/lightrgbw_blue.png                   |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/curtainroller_blue.png                |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/electricalai6HtccKFIw3dxo3.png                 |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensorwater.png                                |    0 
 HDL-ON_iOS/Resources/Phone/PersonalCenter/AddDevice/ConnectSuccess.png                      |    0 
 HDL_ON/.DS_Store                                                                            |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/musicstandard_blue.png                |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/lightswitch.png                               |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/acstandard_white.png                 |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/electricalsocket.png                           |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/floorHeatstandard_blue.png            |    0 
 HDL-ON_iOS/Resources/Phone/PersonalCenter/AddDevice/ConnectSuccessSelect.png                |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/curtainshades_white.png              |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalfan_blue.png               |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irmodule.png                                  |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/lightrgb.png                                  |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection4Page.cs              |  533 +++++
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensorhumidity.png                            |    0 
 HDL-ON_iOS/Info.plist                                                                       |    6 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWeepRobotPage.cs                            |   84 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/lightrgb_blue.png                     |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/floorHeatstandard_blue.png           |    0 
 HDL_ON/Common/HDLCommon.cs                                                                  |    6 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricaltyqborgovyzytytz_blue.png  |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irac_blue.png                         |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/curtainshades_blue.png               |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/curtainswitch_white.png              |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/lightcct_white.png                    |    0 
 HDL_ON/UI/UI1-Login/LoginPage.cs                                                            |    2 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/lightcct.png                                  |    0 
 HDL-ON_Android/Assets/Phone/PirIcon/icon1.png                                               |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/lightrgb_white.png                    |    0 
 HDL_ON/UI/.DS_Store                                                                         |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensorpm25.png                                |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/More.png                                         |    0 
 HDL-ON_iOS/Resources/Phone/PirIcon/projector.png                                            |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensorgas.png                                  |    0 
 HDL-ON_Android/Assets/Phone/PersonalCenter/AddDevice/UploadToCloundSelect.png               |    0 
 HDL-ON_iOS/Resources/Phone/PirIcon/addlbuton.png                                            |    0 
 HDL_ON/Entity/Function/Function.cs                                                          |   69 
 HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs                                       |  139 
 HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection2Page.cs              |  308 +++
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irtv.png                                       |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/lightdimming.png                              |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/lightcct_blue.png                    |    0 
 HDL-ON_Android/Assets/Phone/PirIcon/del.png                                                 |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensorpm25.png                                 |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irlearn_blue.png                      |    0 
 HDL_ON/UI/UI2/FuntionControlView/AC/AcControlPage.cs                                        |  142 +
 HDL_ON/UI/UI0-Stan/Controls/BaseControl/TextInputBase.cs                                    |    2 
 HDL-ON_Android/Assets/Phone/Public/ProgressMsg.png                                          |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/airFreshstandard_blue.png             |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalsocket_white.png           |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irtv_blue.png                         |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/lightrgbw_white.png                   |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/airFreshstandard_white.png           |    0 
 HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs                                                   |    5 
 HDL_ON/UI/UI2/1-HomePage/HomePage.cs                                                        |  108 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/lightswitch.png                                |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/lightdimming.png                               |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/musicstandard_white.png              |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/airFreshstandard_white.png            |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/curtaintrietex_white.png              |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalracks_white.png             |    0 
 HDL-ON_Android/Assets/Phone/PirIcon/tv.png                                                  |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensortvoc.png                                 |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalsocket_white.png            |    0 
 HDL-ON_Android/Assets/Phone/PirIcon/fan.png                                                 |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/acstandard_blue.png                   |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/curtainshades_blue.png                |    0 
 HDL_ON/UI/MainPage.cs                                                                       |   10 
 HDL-ON_Android/Assets/Phone/PirIcon/STB.png                                                 |    0 
 HDL_ON/UI/UI0-Stan/Form/Base/EditorCommonForm.cs                                            |  111 +
 HDL_ON/UI/UI0-Stan/Logic/HdlCloudReceiveLogic.cs                                            |  164 +
 DLL/Android/AndriodBluetoothLibrary.dll                                                     |    0 
 HDL_ON/Entity/FunctionList.cs                                                               |   37 
 HDL-ON_iOS/Resources/Phone/PirIcon/dvd.png                                                  |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/curtainroller.png                             |    0 
 HDL_ON/DAL/Server/NewAPI.cs                                                                 |    4 
 HDL-ON_iOS/Resources/Phone/Public/ProgressMsg.png                                           |    0 
 HDL-ON_Android/Assets/Phone/PirIcon/adddevice.png                                           |    0 
 HDL_ON/Common/R.cs                                                                          |  115 +
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/lightrgb.png                                   |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/electricaltv.png                              |    0 
 HDL-ON_Android/Assets/Phone/PirIcon/air.png                                                 |    0 
 HDL-ON_iOS/Resources/Phone/PersonalCenter/AddDevice/UploadToCloundSelect.png                |    0 
 HDL-ON_iOS/Resources/Phone/PirIcon/delbuton.png                                             |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irac_white.png                        |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalfan_white.png              |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/airFreshstandard_blue.png            |    0 
 HDL-ON_iOS/HDL-ON_iOS.csproj                                                                |  114 +
 HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomClickButton.cs                             |    3 
 HDL-ON_Android/Assets/Phone/PirIcon/search.png                                              |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/AddThirdPartyBrandListpage.cs                    |   22 
 HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs                                                     |    2 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/lightrgbw.png                                 |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalai6HtccKFIw3dxo3_white.png  |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/floorHeatstandard_white.png          |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/electricalfan.png                              |    0 
 HDL-ON_Android/Assets/Phone/PirIcon/failed.png                                              |    0 
 HDL-ON_Android/Resources/Resource.designer.cs                                               |    3 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/lightdimming_white.png                |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensordoorwindow.png                          |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensorhumidity.png                             |    0 
 DLL/IOS/libBlufi.a                                                                          |    0 
 HDL-ON_iOS/Resources/Phone/PersonalCenter/AddDevice/NetConnectSelect.png                    |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/electricaltv.png                               |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/acstandard_white.png                  |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/lightswitch_blue.png                  |    0 
 HDL_ON/DAL/DriverLayer/Control_Udp.cs                                                       |    2 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/curtainroller_blue.png               |    0 
 HDL-ON_Android/Assets/Phone/PirIcon/icon2.png                                               |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/curtainswitch.png                              |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irlearn_white.png                     |    0 
 HDL-ON_Android/Assets/Phone/PirIcon/offline.png                                             |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs                                        |    2 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/lightrgbw_white.png                  |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalsocket_blue.png            |    0 
 HDL-ON_Android/Assets/Phone/PirIcon/dropdown.png                                            |    0 
 HDL-ON_iOS/BlueWifi.cs                                                                      |   17 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/lightswitch_white.png                 |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/acstandard.png                                 |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensortvoc.png                                |    0 
 HDL-ON_iOS/Resources/Phone/PirIcon/online.png                                               |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalai6HtccKFIw3dxo3_white.png |    0 
 HDL_ON/UI/UI2/UserPage.cs                                                                   |   38 
 HDL-ON_iOS/Resources/Phone/PirIcon/custom.png                                               |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/curtainswitch_blue.png               |    0 
 HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomItemSelectControl.cs                       |    2 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/electricalsocket.png                          |    0 
 HDL_ON/UI/UI0-Stan/Logic/HdlBluetoothAndroidLogic.cs                                        |  590 ++++++
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/lightrgbw.png                                  |    0 
 HDL-ON_Android/Assets/Phone/PersonalCenter/AddDevice/ConnectSuccess.png                     |    0 
 HDL_ON/UI/UI1-Login/RegisterPageBLL.cs                                                      |    3 
 HDL-ON_iOS/Resources/Phone/PersonalCenter/AddDevice/UploadToClound.png                      |    0 
 HDL-ON_Android/Assets/Phone/PersonalCenter/AddDevice/ConnectSuccessSelect.png               |    0 
 HDL_ON/DAL/DriverLayer/Control.cs                                                           |   38 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irtv.png                                      |    0 
 HdlBluWi/.DS_Store                                                                          |    0 
 HDL-ON_Android/Assets/Phone/PersonalCenter/AddDevice/NetConnectSelect.png                   |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/curtainswitch_blue.png                |    0 
 HDL-ON_iOS/Resources/Phone/PirIcon/stb.png                                                  |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/curtainshades.png                             |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/lightcct.png                                   |    0 
 HDL-ON_iOS/Resources/Phone/PersonalCenter/AddDevice/MiniRemoteControlBigPictrue.png         |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irtv_blue.png                        |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalfan_blue.png                |    0 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaAirCleanerPage.cs                           |   29 
 HDL-ON_Android/Assets/Phone/FunctionIcon/AC/More.png                                        |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/curtainroller_white.png              |    0 
 HDL_ON/DAL/Server/HttpServerRequest.cs                                                      |   35 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/.DS_Store                                |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/musicstandard.png                             |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/curtaintrietex_blue.png               |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalai6HtccKFIw3dxo3_blue.png   |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalracks_blue.png              |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensorsmoke.png                                |    0 
 ys/Jars/app-release.aar                                                                     |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalracks_blue.png             |    0 
 HDL-ON_Android/Properties/AndroidManifest.xml                                               |    2 
 HDL-ON_Android/Assets/Phone/.DS_Store                                                       |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/floorHeatstandard.png                          |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricaltyqborgovyzytytz_blue.png   |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensorco2.png                                  |    0 
 HDL_ON/DAL/Mqtt/MqttClient.cs                                                               |  120 +
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalkoiGhMKwLf2ZP81g_white.png |    0 
 HDL-ON_Android/HDL-ON_Android.csproj                                                        |  101 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalQ1RsefNf91tIXyyQ_blue.png  |    0 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWaterValvePage.cs                           |   26 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/lightdimming_white.png               |    0 
 HDL-ON_Android/Assets/Phone/PersonalCenter/AddDevice/MiniRemoteControlMenuIcon.png          |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irlearn.png                                    |    0 
 HDL_ON/Entity/Integratedbrand/IntegratedBrand.cs                                            |   81 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irlearn_white.png                    |    0 
 HDL-ON_iOS/Resources/Phone/PirIcon/priequipment.png                                         |    0 
 HDL-ON_iOS/Resources/Phone/PirIcon/del.png                                                  |    0 
 HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs                                        |    5 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/musicstandard_blue.png               |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalkoiGhMKwLf2ZP81g_blue.png   |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/floorHeatstandard_white.png           |    0 
 HDL-ON_iOS/Resources/Phone/PirIcon/next.png                                                 |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/acstandard_blue.png                  |    0 
 HDL-ON_Android/Assets/Phone/PirIcon/succeed.png                                             |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalkoiGhMKwLf2ZP81g_blue.png  |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensorwater.png                               |    0 
 HDL-ON_iOS/Resources/Phone/PirIcon/dropdown.png                                             |    0 
 HDL-ON_Android/Assets/Phone/PirIcon/delbuton.png                                            |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/floorHeatstandard.png                         |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalsocket_blue.png             |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensorco2.png                                 |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/musicstandard_white.png               |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/lightdimming_blue.png                |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/electricaltyqborgovyzytytz.png                 |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensorpir.png                                  |    0 
 HDL-ON_Android/Assets/Phone/PirIcon/custom.png                                              |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/electricalracks.png                            |    0 
 HDL-ON_iOS/Resources/Phone/PirIcon/tv.png                                                   |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalracks_white.png            |    0 
 HDL-ON_Android/Assets/Phone/PirIcon/online.png                                              |    0 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerPage.cs                            |   17 
 HDL-ON_Android/Assets/Phone/PersonalCenter/AddDevice/WifiAndPhoneConnect.png                |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/curtaintrietex.png                            |    0 
 HDL-ON_iOS/Resources/Phone/PersonalCenter/AddDevice/WifiAndPhoneConnect.png                 |    0 
 HDL_ON/DAL/DriverLayer/A_Protocol_Common.cs                                                 |   11 
 HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddThirdPartyDeviceMenuListPage.cs                 |   92 
 HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/ThirdPartyBrandListPage.cs                       |  166 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricaltv_white.png               |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irac_white.png                       |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irlearn_blue.png                     |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/curtaintrietex.png                             |    0 
 HDL_ON/Common/Utlis.cs                                                                      |    3 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/electricalfan.png                             |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/curtainshades_white.png               |    0 
 HDL-ON_iOS/Resources/Phone/PirIcon/Infraredtreasure.png                                     |    0 
 HDL-ON_Android/Assets/Phone/PirIcon/Infraredtreasure.png                                    |    0 
 HDL-ON_iOS/Resources/Phone/PirIcon/offline.png                                              |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/lightcct_white.png                   |    0 
 HDL-ON_Android/Assets/Phone/PirIcon/dvd.png                                                 |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricaltv_blue.png                |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricaltv_white.png                |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricaltv_blue.png                 |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalkoiGhMKwLf2ZP81g_white.png  |    0 
 HDL-ON_iOS/Resources/Phone/PirIcon/air.png                                                  |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalQ1RsefNf91tIXyyQ_blue.png   |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/ResetAccountPassword/ResetPasswordPage.cs                    |    2 
 HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection3Page.cs              |  215 ++
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalai6HtccKFIw3dxo3_blue.png  |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/lightrgb_white.png                   |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/acstandard.png                                |    0 
 HDL-ON_iOS/Resources/Phone/PirIcon/fan.png                                                  |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensorpir.png                                 |    0 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/IrLearnPage.cs                                  |  146 +
 HDL-ON_Android/Assets/Phone/PirIcon/priequipment.png                                        |    0 
 HDL_ON/UI/UI0-Stan/Controls/MessageControls/ShowMsgControl.cs                               |    7 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irtv_white.png                        |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensordoorwindow.png                           |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensortemperature.png                         |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/curtainroller.png                              |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/lightswitch_blue.png                 |    0 
 303 files changed, 5,247 insertions(+), 456 deletions(-)

diff --git a/DLL/Android/AndriodBluetoothLibrary.dll b/DLL/Android/AndriodBluetoothLibrary.dll
new file mode 100644
index 0000000..606ade0
--- /dev/null
+++ b/DLL/Android/AndriodBluetoothLibrary.dll
Binary files differ
diff --git a/DLL/IOS/HdlBluWi.dll b/DLL/IOS/HdlBluWi.dll
index 0380e71..8a88050 100644
--- a/DLL/IOS/HdlBluWi.dll
+++ b/DLL/IOS/HdlBluWi.dll
Binary files differ
diff --git a/DLL/IOS/libBlufi.a b/DLL/IOS/libBlufi.a
index bcbd9d0..eeaebd4 100644
--- a/DLL/IOS/libBlufi.a
+++ b/DLL/IOS/libBlufi.a
Binary files differ
diff --git a/HDL-ON_Android/Assets/Language.ini b/HDL-ON_Android/Assets/Language.ini
index 5d5d311..a042891 100644
--- a/HDL-ON_Android/Assets/Language.ini
+++ b/HDL-ON_Android/Assets/Language.ini
@@ -411,10 +411,92 @@
 426=Air dry time
 427=Disinfect time
 428=Anion Time
+429=H
+430=Min
+431=You are currently adding any platform devices to
+432=Other platform equipment is supported by third party service provider
+433=Water valve
+434=Time switch
+435=Remote control
 
+1000=Indoor Humidity
+1001=V-chip
+1002=Anion
+1003=Sterilization
+1004=Humidification
+1005=Filter Element Reset
+1006=Lighting
+1007=Automatic
+1008=Manual
+1009=Strong
+1010=Sleep
+1011=Timing
+1012=Wind Speed
+1013=Gear
+1014=Please confirm whether the filter element has been reset and operate the equipment according to the instruction manual for the filter element life to be timed again
+1015=Low Gear
+1016=Mid Gear
+1017=High Gear
+1018=Timing Setting
+1019=Hour
+1020=Filter Element Time锛�
+1021=Air Cleaner
+1022=Current wind speed
+1023=Cancel Timing
+1024=Floor Sweeping Robot
+1025=Suction
+1026=1st Gear
+1027=2nd Gear
+1028=3rd Gear
+1029=Charge
+1030=Voice
+1031=Mute
+1032=Cleaning Mode
+1033=Consumables Management
+1034=History
+1035=Automatic
+1036=Random
+1037=Wall
+1038=Spiral
+1039=Total Clean Area
+1040=Total Clean Time
+1041=Remaining life of side brush
+1042=Residual life of roller brush
+1043=Remaining life of filter screen
+1044=Reset edge brush
+1045=Reset roll brush
+1046=Reset screen
+1047=Confirm to Reset edge brush?
+1048=Confirm to Reset roll brush?
+1049=Confirm to Reset screen?
+1050=Add Device
+1051=Mini Intelligent Remote Control
+1052=Add Infrared Remote Control
+1053=Press the infrared remote control button{0}for 10 seconds and the indicator light{0}flashes blue quickly
+1054=Please make sure your Bluetooth{0}is on and searchable
+1055=Next Step
+1056=Device searching...
+1057=No infrared remote control found
+1058=1.Please check whether the device is{0}   powered on normally{0}2.Please check whether the Bluetooth{0}   function is turned on normally{0}3.Please check whether the indicator{0}    light is flashing blue
+1059=Search Again
+1060=Connect WiFi
+1061=At present,it only supports 2.4G WiFi network{0}and does not support WiFi names{0}with Chinese characters
+1062=Password
+1063=Connecting...
+1064=Please make infrared remote control{0}as close as possible to WiFi router
+1065=Network Link
+1066=Upload to cloud
+1067=Connect success
+1068=1.Please check whether the device is{0}   powered on normally{0}2.Please turn on the Bluetooth function{0}3.Press the button for 10s and the indicator{0}   light will be on
+1069=Add Fail
+1070=Add Success
+1071=You can start using the infrared{0}remote control!
+1072=Start using
+1073=Please turn on Bluetooth
+1074=Location information(GBS) unavailable
+1075=Network unavailable
+1076=Select infrared remote control	
 
-1002=Anion 
-	
 5000=Music
 5001=Group
 5002=Setting
@@ -1089,6 +1171,13 @@
 426=椋庡共鏃堕棿
 427=娑堟瘨鏃堕棿
 428=璐熺瀛愭椂闂�
+429=灏忔椂
+430=鍒嗛挓
+431=浣犲綋鍓嶈繕涓烘坊鍔犱换浣曞钩鍙拌澶�
+432=鍏朵粬骞冲彴璁惧鍧囩敱绗笁鏂规湇鍔″晢鎻愪緵鏀寔
+433=姘撮榾
+434=瀹氭椂寮�鍏�
+435=閬ユ帶鍣�
 
 
 1000=瀹ゅ唴婀垮害
@@ -1138,9 +1227,36 @@
 1044=閲嶇疆杈瑰埛
 1045=閲嶇疆婊氬埛
 1046=閲嶇疆婊ょ綉
-1047=鏄惁閲嶇疆杈瑰埛
-1048=鏄惁閲嶇疆婊氬埛
-1049=鏄惁閲嶇疆婊ょ綉
+1047=鏄惁閲嶇疆杈瑰埛?
+1048=鏄惁閲嶇疆婊氬埛?
+1049=鏄惁閲嶇疆婊ょ綉?
+1050=娣诲姞璁惧
+1051=mini鏅鸿兘閬ユ帶鍣�
+1052=娣诲姞绾㈠閬ユ帶
+1053=闀挎寜绾㈠閬ユ帶鍣ㄦ寜閽�10绉掞紝鎸囩ず鐏摑鑹插揩闂�
+1054=璇风‘淇濇偍鐨勮摑鐗欏凡寮�鍚苟澶勪簬鍙互琚悳绱㈢姸鎬�
+1055=涓嬩竴姝�
+1056=璁惧鎼滅储涓�...
+1057=娌℃湁鍙戠幇绾㈠閬ユ帶鍣�
+1058=1銆佽妫�鏌ヨ澶囨槸鍚︽甯搁�氱數{0}2銆佽妫�鏌ヨ摑鐗欏姛鑳芥槸鍚︽甯稿紑鍚瘂0}3銆佽妫�鏌ユ寚绀虹伅鏄惁钃濊壊蹇棯鐘舵��
+1059=閲嶆柊鎼滅储
+1060=杩炴帴WiFi
+1061=鐩墠鍙敮鎸�2.4G WiFi缃戠粶{0}鏆備笉鏀寔甯︽湁涓枃瀛楃鐨刉iFi鍚嶇О
+1062=瀵嗙爜
+1063=姝e湪杩炴帴涓�...
+1064=璇疯绾㈠閬ユ帶灏介噺鎺ヨ繎WIFI璺敱鍣�
+1065=缃戠粶閾炬帴涓�
+1066=涓婁紶鍒颁簯
+1067=杩炴帴鎴愬姛
+1068=1銆佽妫�鏌ヨ澶囨槸鍚︽甯搁�氱數{0}2銆佽寮�鍚摑鐗欏姛鑳絳0}3銆佸苟闀挎寜鎸夐挳10s锛屾寚绀虹伅甯镐寒
+1069=娣诲姞澶辫触
+1070=娣诲姞鎴愬姛
+1071=鍙互寮�濮嬩娇鐢ㄧ孩澶栭仴鎺у姛鑳斤紒
+1072=寮�濮嬩娇鐢�
+1073=璇锋墦寮�钃濈墮
+1074=浣嶇疆淇℃伅(GBS)涓嶅彲鐢�
+1075=缃戠粶涓嶅彲鐢�
+1076=閫夋嫨绾㈠閬ユ帶鍣�
 
 5000=闊充箰
 5001=缁勫悎
@@ -1269,6 +1385,63 @@
 6076=缂栬緫淇℃伅
 
 
+6015=鍦ㄧ嚎
+6016=绂荤嚎
+6017=鐗堟湰鍙�
+6018=璇疯緭鍏ラ仴鎺у櫒鍚嶇О
+6019=鎻愮ず锛氶仴鎺у櫒鍒涘缓鍚庡彲鍦ㄥ姛鑳�-鐢靛櫒鍒嗙被{\r\n}鏌ユ壘浣跨敤
+6020=鎺ㄨ崘鎸夐敭
+6021=璇疯緭鍏ユ寜閿悕绉�
+6022=涓嬩竴姝�
+6023=鐢垫簮
+6024=闊抽噺+
+6025=闊抽噺-
+6026=棰戦亾+
+6027=棰戦亾-
+6028=涓�
+6029=涓�
+6030=宸�
+6031=鍙�
+6032=闈欓煶
+6034=纭
+6035=鎾斁
+6037=閫�鍑�
+6038=鑿滃崟
+6039=鏆傚仠
+6040=杩斿洖
+6041=鍋滄
+6042=涓婚〉
+6043=蹇繘
+6044=蹇��
+6045=瀹氭椂
+6046=澶嶅埗閬ユ帶鍔熻兘
+6047=瀵瑰噯閬ユ帶鍣ㄤ腑蹇冩寜涓嬬浉鍚屾寜閿�
+6048=鏅鸿兘閬ユ帶鍣�
+6049=娣诲姞鎸夐敭
+6050=*闀挎寜鍙繘琛岃嚜瀹氫箟鎺掑簭
+6051=瀹屾垚
+6052=娣诲姞鎴愬姛
+6053=鍙埌鍒嗙被-鍔熻兘-鐢靛櫒鎿嶄綔浣跨敤
+6054=鎵�灞炲垎绫�
+6055=閬ユ帶鍣ㄥ悕绉�
+6056=鎵�灞炲尯鍩�
+6057=缁х画娣诲姞
+6058=鐢靛櫒
+6059=娣诲姞澶辫触
+6060=閲嶈瘯
+6061=鍖归厤閬ユ帶鍣�
+6062=璇风偣鍑讳互涓嬫寜閽�
+6063=纭璁惧鏄惁鏈夊搷搴�
+6064=鎺у埗澶辫触
+6065=鎺у埗鎴愬姛
+6066=鐢垫簮寮�
+6067=妯″紡鍒跺喎
+6068=椋庨�熶腑椋�
+6069=娓╁害26鈩�
+6070=鍒犻櫎璁惧
+6071=淇敼鍚嶅瓧
+6072=纭鍒犻櫎
+6073=鍙栨秷
 
 7000=鏂板缓鑷姩鍖�
 7001=缂栬緫鑷姩鍖�
diff --git a/HDL-ON_Android/Assets/Phone/.DS_Store b/HDL-ON_Android/Assets/Phone/.DS_Store
index 48a1486..b0674c8 100644
--- a/HDL-ON_Android/Assets/Phone/.DS_Store
+++ b/HDL-ON_Android/Assets/Phone/.DS_Store
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/AC/More.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/AC/More.png
new file mode 100644
index 0000000..bc89ac6
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/AC/More.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/acstandard_blue.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/acstandard_blue.png
new file mode 100644
index 0000000..66155c5
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/acstandard_blue.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/acstandard_white.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/acstandard_white.png
new file mode 100644
index 0000000..32e354e
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/acstandard_white.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/airFreshstandard_blue.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/airFreshstandard_blue.png
new file mode 100644
index 0000000..23f6005
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/airFreshstandard_blue.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/airFreshstandard_white.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/airFreshstandard_white.png
new file mode 100644
index 0000000..9a40fd6
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/airFreshstandard_white.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/curtainroller_blue.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/curtainroller_blue.png
new file mode 100644
index 0000000..5ae946e
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/curtainroller_blue.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/curtainroller_white.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/curtainroller_white.png
new file mode 100644
index 0000000..1ff8d10
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/curtainroller_white.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/curtainshades_blue.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/curtainshades_blue.png
new file mode 100644
index 0000000..9053f13
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/curtainshades_blue.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/curtainshades_white.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/curtainshades_white.png
new file mode 100644
index 0000000..01a5a48
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/curtainshades_white.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/curtainswitch_blue.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/curtainswitch_blue.png
new file mode 100644
index 0000000..220ff6e
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/curtainswitch_blue.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/curtainswitch_white.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/curtainswitch_white.png
new file mode 100644
index 0000000..f74c97d
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/curtainswitch_white.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/curtaintrietex_blue.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/curtaintrietex_blue.png
new file mode 100644
index 0000000..e3671a2
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/curtaintrietex_blue.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/curtaintrietex_white.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/curtaintrietex_white.png
new file mode 100644
index 0000000..259e176
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/curtaintrietex_white.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalQ1RsefNf91tIXyyQ_blue.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalQ1RsefNf91tIXyyQ_blue.png
new file mode 100644
index 0000000..3caf309
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalQ1RsefNf91tIXyyQ_blue.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalQ1RsefNf91tIXyyQ_white.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalQ1RsefNf91tIXyyQ_white.png
new file mode 100644
index 0000000..58dbb2d
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalQ1RsefNf91tIXyyQ_white.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalai6HtccKFIw3dxo3_blue.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalai6HtccKFIw3dxo3_blue.png
new file mode 100644
index 0000000..aab3b24
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalai6HtccKFIw3dxo3_blue.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalai6HtccKFIw3dxo3_white.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalai6HtccKFIw3dxo3_white.png
new file mode 100644
index 0000000..48e6784
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalai6HtccKFIw3dxo3_white.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalfan_blue.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalfan_blue.png
new file mode 100644
index 0000000..c59a2e5
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalfan_blue.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalfan_white.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalfan_white.png
new file mode 100644
index 0000000..8c5ead5
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalfan_white.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalkoiGhMKwLf2ZP81g_blue.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalkoiGhMKwLf2ZP81g_blue.png
new file mode 100644
index 0000000..e25af0b
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalkoiGhMKwLf2ZP81g_blue.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalkoiGhMKwLf2ZP81g_white.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalkoiGhMKwLf2ZP81g_white.png
new file mode 100644
index 0000000..4e2f1df
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalkoiGhMKwLf2ZP81g_white.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalracks_blue.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalracks_blue.png
new file mode 100644
index 0000000..0e89579
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalracks_blue.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalracks_white.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalracks_white.png
new file mode 100644
index 0000000..4845fa2
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalracks_white.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalsocket_blue.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalsocket_blue.png
new file mode 100644
index 0000000..84ff63d
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalsocket_blue.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalsocket_white.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalsocket_white.png
new file mode 100644
index 0000000..1fd6e8e
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricalsocket_white.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricaltv_blue.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricaltv_blue.png
new file mode 100644
index 0000000..d28c4af
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricaltv_blue.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricaltv_white.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricaltv_white.png
new file mode 100644
index 0000000..1f42e9f
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricaltv_white.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricaltyqborgovyzytytz_blue.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricaltyqborgovyzytytz_blue.png
new file mode 100644
index 0000000..c59a2e5
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricaltyqborgovyzytytz_blue.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricaltyqborgovyzytytz_white.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricaltyqborgovyzytytz_white.png
new file mode 100644
index 0000000..8c5ead5
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/electricaltyqborgovyzytytz_white.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/floorHeatstandard_blue.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/floorHeatstandard_blue.png
new file mode 100644
index 0000000..d44a273
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/floorHeatstandard_blue.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/floorHeatstandard_white.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/floorHeatstandard_white.png
new file mode 100644
index 0000000..06e28c0
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/floorHeatstandard_white.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irac_blue.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irac_blue.png
new file mode 100644
index 0000000..66155c5
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irac_blue.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irac_white.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irac_white.png
new file mode 100644
index 0000000..32e354e
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irac_white.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irlearn_blue.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irlearn_blue.png
new file mode 100644
index 0000000..50f52ea
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irlearn_blue.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irlearn_white.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irlearn_white.png
new file mode 100644
index 0000000..80addfe
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irlearn_white.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irtv_blue.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irtv_blue.png
new file mode 100644
index 0000000..d28c4af
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irtv_blue.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irtv_white.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irtv_white.png
new file mode 100644
index 0000000..1f42e9f
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irtv_white.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/lightcct_blue.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/lightcct_blue.png
new file mode 100644
index 0000000..5e07518
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/lightcct_blue.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/lightcct_white.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/lightcct_white.png
new file mode 100644
index 0000000..cb36722
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/lightcct_white.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/lightdimming_blue.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/lightdimming_blue.png
new file mode 100644
index 0000000..b40b6d9
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/lightdimming_blue.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/lightdimming_white.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/lightdimming_white.png
new file mode 100644
index 0000000..f18a303
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/lightdimming_white.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/lightrgb_blue.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/lightrgb_blue.png
new file mode 100644
index 0000000..5e07518
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/lightrgb_blue.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/lightrgb_white.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/lightrgb_white.png
new file mode 100644
index 0000000..cb36722
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/lightrgb_white.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/lightrgbw_blue.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/lightrgbw_blue.png
new file mode 100644
index 0000000..5e07518
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/lightrgbw_blue.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/lightrgbw_white.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/lightrgbw_white.png
new file mode 100644
index 0000000..cb36722
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/lightrgbw_white.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/lightswitch_blue.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/lightswitch_blue.png
new file mode 100644
index 0000000..9df7593
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/lightswitch_blue.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/lightswitch_white.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/lightswitch_white.png
new file mode 100644
index 0000000..79b5a76
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/lightswitch_white.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/musicstandard_blue.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/musicstandard_blue.png
new file mode 100644
index 0000000..512f3eb
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/musicstandard_blue.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/musicstandard_white.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/musicstandard_white.png
new file mode 100644
index 0000000..85065ec
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/musicstandard_white.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/acstandard.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/acstandard.png
new file mode 100644
index 0000000..6d7221b
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/acstandard.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/airFreshstandard.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/airFreshstandard.png
new file mode 100644
index 0000000..6657bae
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/airFreshstandard.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/curtainroller.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/curtainroller.png
new file mode 100644
index 0000000..10bdb27
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/curtainroller.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/curtainshades.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/curtainshades.png
new file mode 100644
index 0000000..abeae75
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/curtainshades.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/curtainswitch.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/curtainswitch.png
new file mode 100644
index 0000000..8ce4669
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/curtainswitch.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/curtaintrietex.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/curtaintrietex.png
new file mode 100644
index 0000000..0eeb3a0
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/curtaintrietex.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/electricalQ1RsefNf91tIXyyQ.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/electricalQ1RsefNf91tIXyyQ.png
new file mode 100644
index 0000000..f299156
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/electricalQ1RsefNf91tIXyyQ.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/electricalai6HtccKFIw3dxo3.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/electricalai6HtccKFIw3dxo3.png
new file mode 100644
index 0000000..8486852
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/electricalai6HtccKFIw3dxo3.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/electricalfan.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/electricalfan.png
new file mode 100644
index 0000000..0447c4d
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/electricalfan.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/electricalkoiGhMKwLf2ZP81g.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/electricalkoiGhMKwLf2ZP81g.png
new file mode 100644
index 0000000..ed0735d
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/electricalkoiGhMKwLf2ZP81g.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/electricalracks.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/electricalracks.png
new file mode 100644
index 0000000..6f10d54
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/electricalracks.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/electricalsocket.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/electricalsocket.png
new file mode 100644
index 0000000..6a324db
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/electricalsocket.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/electricaltv.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/electricaltv.png
new file mode 100644
index 0000000..7f9045f
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/electricaltv.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/electricaltyqborgovyzytytz.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/electricaltyqborgovyzytytz.png
new file mode 100644
index 0000000..0447c4d
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/electricaltyqborgovyzytytz.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/floorHeatstandard.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/floorHeatstandard.png
new file mode 100644
index 0000000..c067812
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/floorHeatstandard.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irac.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irac.png
new file mode 100644
index 0000000..6d7221b
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irac.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irlearn.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irlearn.png
new file mode 100644
index 0000000..f6654d9
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irlearn.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irmodule.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irmodule.png
new file mode 100644
index 0000000..5bb5bb2
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irmodule.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irtv.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irtv.png
new file mode 100644
index 0000000..7f9045f
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irtv.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/lightcct.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/lightcct.png
new file mode 100644
index 0000000..9fabb8e
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/lightcct.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/lightdimming.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/lightdimming.png
new file mode 100644
index 0000000..6fd97b5
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/lightdimming.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/lightrgb.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/lightrgb.png
new file mode 100644
index 0000000..9fabb8e
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/lightrgb.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/lightrgbw.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/lightrgbw.png
new file mode 100644
index 0000000..9fabb8e
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/lightrgbw.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/lightswitch.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/lightswitch.png
new file mode 100644
index 0000000..0aa1f98
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/lightswitch.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/musicstandard.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/musicstandard.png
new file mode 100644
index 0000000..d522bf3
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/musicstandard.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensorco2.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensorco2.png
new file mode 100644
index 0000000..4d52fc1
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensorco2.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensordoorwindow.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensordoorwindow.png
new file mode 100644
index 0000000..6f82b1f
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensordoorwindow.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensorgas.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensorgas.png
new file mode 100644
index 0000000..6e05b01
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensorgas.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensorhumidity.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensorhumidity.png
new file mode 100644
index 0000000..3549ac7
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensorhumidity.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensorpir.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensorpir.png
new file mode 100644
index 0000000..5afa201
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensorpir.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensorpm25.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensorpm25.png
new file mode 100644
index 0000000..2f07a0b
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensorpm25.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensorsmoke.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensorsmoke.png
new file mode 100644
index 0000000..245f9de
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensorsmoke.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensortemperature.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensortemperature.png
new file mode 100644
index 0000000..d852749
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensortemperature.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensortvoc.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensortvoc.png
new file mode 100644
index 0000000..a37cc0e
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensortvoc.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensorwater.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensorwater.png
new file mode 100644
index 0000000..57b566a
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensorwater.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PersonalCenter/AddDevice/ConnectSuccess.png b/HDL-ON_Android/Assets/Phone/PersonalCenter/AddDevice/ConnectSuccess.png
new file mode 100644
index 0000000..8c6b86e
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/PersonalCenter/AddDevice/ConnectSuccess.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PersonalCenter/AddDevice/ConnectSuccessSelect.png b/HDL-ON_Android/Assets/Phone/PersonalCenter/AddDevice/ConnectSuccessSelect.png
new file mode 100644
index 0000000..224fd3f
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/PersonalCenter/AddDevice/ConnectSuccessSelect.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PersonalCenter/AddDevice/MiniRemoteControlBigPictrue.png b/HDL-ON_Android/Assets/Phone/PersonalCenter/AddDevice/MiniRemoteControlBigPictrue.png
new file mode 100644
index 0000000..a6ccf0a
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/PersonalCenter/AddDevice/MiniRemoteControlBigPictrue.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PersonalCenter/AddDevice/MiniRemoteControlMenuIcon.png b/HDL-ON_Android/Assets/Phone/PersonalCenter/AddDevice/MiniRemoteControlMenuIcon.png
new file mode 100644
index 0000000..be9906d
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/PersonalCenter/AddDevice/MiniRemoteControlMenuIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PersonalCenter/AddDevice/NetConnectSelect.png b/HDL-ON_Android/Assets/Phone/PersonalCenter/AddDevice/NetConnectSelect.png
new file mode 100644
index 0000000..1c6cbfe
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/PersonalCenter/AddDevice/NetConnectSelect.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PersonalCenter/AddDevice/UploadToClound.png b/HDL-ON_Android/Assets/Phone/PersonalCenter/AddDevice/UploadToClound.png
new file mode 100644
index 0000000..ffef099
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/PersonalCenter/AddDevice/UploadToClound.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PersonalCenter/AddDevice/UploadToCloundSelect.png b/HDL-ON_Android/Assets/Phone/PersonalCenter/AddDevice/UploadToCloundSelect.png
new file mode 100644
index 0000000..fe57fe5
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/PersonalCenter/AddDevice/UploadToCloundSelect.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PersonalCenter/AddDevice/WifiAndPhoneConnect.png b/HDL-ON_Android/Assets/Phone/PersonalCenter/AddDevice/WifiAndPhoneConnect.png
new file mode 100644
index 0000000..4039574
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/PersonalCenter/AddDevice/WifiAndPhoneConnect.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/Infraredtreasure.png b/HDL-ON_Android/Assets/Phone/PirIcon/Infraredtreasure.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/STB.png b/HDL-ON_Android/Assets/Phone/PirIcon/STB.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/adddevice.png b/HDL-ON_Android/Assets/Phone/PirIcon/adddevice.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/addlbuton.png b/HDL-ON_Android/Assets/Phone/PirIcon/addlbuton.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/air.png b/HDL-ON_Android/Assets/Phone/PirIcon/air.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/custom.png b/HDL-ON_Android/Assets/Phone/PirIcon/custom.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/del.png b/HDL-ON_Android/Assets/Phone/PirIcon/del.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/delbuton.png b/HDL-ON_Android/Assets/Phone/PirIcon/delbuton.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/dropdown.png b/HDL-ON_Android/Assets/Phone/PirIcon/dropdown.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/dvd.png b/HDL-ON_Android/Assets/Phone/PirIcon/dvd.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/failed.png b/HDL-ON_Android/Assets/Phone/PirIcon/failed.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/fan.png b/HDL-ON_Android/Assets/Phone/PirIcon/fan.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/icon1.png b/HDL-ON_Android/Assets/Phone/PirIcon/icon1.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/icon2.png b/HDL-ON_Android/Assets/Phone/PirIcon/icon2.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/next.png b/HDL-ON_Android/Assets/Phone/PirIcon/next.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/offline.png b/HDL-ON_Android/Assets/Phone/PirIcon/offline.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/online.png b/HDL-ON_Android/Assets/Phone/PirIcon/online.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/priequipment.png b/HDL-ON_Android/Assets/Phone/PirIcon/priequipment.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/projector.png b/HDL-ON_Android/Assets/Phone/PirIcon/projector.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/search.png b/HDL-ON_Android/Assets/Phone/PirIcon/search.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/succeed.png b/HDL-ON_Android/Assets/Phone/PirIcon/succeed.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PirIcon/tv.png b/HDL-ON_Android/Assets/Phone/PirIcon/tv.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/Public/ProgressMsg.png b/HDL-ON_Android/Assets/Phone/Public/ProgressMsg.png
new file mode 100644
index 0000000..e0255b8
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/Public/ProgressMsg.png
Binary files differ
diff --git a/HDL-ON_Android/HDL-ON_Android.csproj b/HDL-ON_Android/HDL-ON_Android.csproj
index 75f234a..c8c0871 100644
--- a/HDL-ON_Android/HDL-ON_Android.csproj
+++ b/HDL-ON_Android/HDL-ON_Android.csproj
@@ -125,6 +125,9 @@
     <Reference Include="Shared.Droid.JLCountryCode">
       <HintPath>..\DLL\Android\Shared.Droid.JLCountryCode.dll</HintPath>
     </Reference>
+    <Reference Include="AndriodBluetoothLibrary">
+      <HintPath>..\DLL\Android\AndriodBluetoothLibrary.dll</HintPath>
+    </Reference>
   </ItemGroup>
   <ItemGroup>
     <Compile Include="MainActivity.cs" />
@@ -830,12 +833,98 @@
     <AndroidAsset Include="Assets\Phone\PirIcon\icon2.png" />
     <AndroidAsset Include="Assets\Phone\PirIcon\succeed.png" />
     <AndroidAsset Include="Assets\Phone\LogicIcon\selected+.png" />
-    <AndroidAsset Include="Assets\Phone\PirIcon\1.png" />
-    <AndroidAsset Include="Assets\Phone\PirIcon\2.png" />
-    <AndroidAsset Include="Assets\Phone\PirIcon\3.png" />
-    <AndroidAsset Include="Assets\Phone\PirIcon\4.png" />
-    <AndroidAsset Include="Assets\Phone\PirIcon\left.png" />
-    <AndroidAsset Include="Assets\Phone\PirIcon\right.png" />
+    <AndroidAsset Include="Assets\Phone\Public\ProgressMsg.png" />
+    <AndroidAsset Include="Assets\Phone\PersonalCenter\AddDevice\UploadToClound.png" />
+    <AndroidAsset Include="Assets\Phone\PersonalCenter\AddDevice\NetConnectSelect.png" />
+    <AndroidAsset Include="Assets\Phone\PersonalCenter\AddDevice\ConnectSuccess.png" />
+    <AndroidAsset Include="Assets\Phone\PersonalCenter\AddDevice\ConnectSuccessSelect.png" />
+    <AndroidAsset Include="Assets\Phone\PersonalCenter\AddDevice\MiniRemoteControlBigPictrue.png" />
+    <AndroidAsset Include="Assets\Phone\PersonalCenter\AddDevice\UploadToCloundSelect.png" />
+    <AndroidAsset Include="Assets\Phone\PersonalCenter\AddDevice\MiniRemoteControlMenuIcon.png" />
+    <AndroidAsset Include="Assets\Phone\PersonalCenter\AddDevice\WifiAndPhoneConnect.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\sensortvoc.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\irmodule.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\sensorpir.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\electricalai6HtccKFIw3dxo3.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\lightrgb.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\airFreshstandard.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\electricalracks.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\electricalfan.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\sensorpm25.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\acstandard.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\electricalsocket.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\sensorgas.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\sensorhumidity.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\electricalkoiGhMKwLf2ZP81g.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\lightcct.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\curtainroller.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\irlearn.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\lightdimming.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\sensorco2.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\electricaltv.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\floorHeatstandard.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\curtainswitch.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\curtainshades.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\electricaltyqborgovyzytytz.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\musicstandard.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\sensordoorwindow.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\lightrgbw.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\sensortemperature.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\curtaintrietex.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\sensorsmoke.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\electricalQ1RsefNf91tIXyyQ.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\irac.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\sensorwater.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\lightswitch.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\irtv.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\lightrgbw_blue.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\irac_white.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\electricaltv_white.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\electricalai6HtccKFIw3dxo3_white.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\curtaintrietex_white.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\floorHeatstandard_blue.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\musicstandard_blue.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\electricalfan_white.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\curtainswitch_blue.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\lightdimming_white.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\lightrgbw_white.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\electricaltyqborgovyzytytz_white.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\airFreshstandard_white.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\lightrgb_white.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\irtv_blue.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\irlearn_blue.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\musicstandard_white.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\electricalfan_blue.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\curtainshades_white.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\electricalkoiGhMKwLf2ZP81g_white.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\irac_blue.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\electricalkoiGhMKwLf2ZP81g_blue.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\acstandard_white.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\lightcct_white.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\electricalracks_blue.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\electricalai6HtccKFIw3dxo3_blue.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\lightswitch_blue.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\curtaintrietex_blue.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\airFreshstandard_blue.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\floorHeatstandard_white.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\curtainshades_blue.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\electricalQ1RsefNf91tIXyyQ_white.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\electricaltyqborgovyzytytz_blue.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\lightcct_blue.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\lightrgb_blue.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\curtainroller_white.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\curtainroller_blue.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\electricalQ1RsefNf91tIXyyQ_blue.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\irtv_white.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\electricalsocket_white.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\lightswitch_white.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\lightdimming_blue.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\electricaltv_blue.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\electricalsocket_blue.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\acstandard_blue.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\irlearn_white.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\curtainswitch_white.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\electricalracks_white.png" />
   </ItemGroup>
   <ItemGroup>
     <AndroidNativeLibrary Include="libs\armeabi-v7a\libelianjni.so" />
diff --git a/HDL-ON_Android/Properties/AndroidManifest.xml b/HDL-ON_Android/Properties/AndroidManifest.xml
index 00724b4..b63337c 100644
--- a/HDL-ON_Android/Properties/AndroidManifest.xml
+++ b/HDL-ON_Android/Properties/AndroidManifest.xml
@@ -1,5 +1,5 @@
 锘�<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="202103051" android:versionName="1.1.202103051" package="com.hdl.onpro">
+<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="202103101" android:versionName="1.1.202103101" package="com.hdl.onpro">
 	<uses-sdk android:minSdkVersion="26" android:targetSdkVersion="26" />
 	<!--  瀹氫綅鏉冮檺-->
 	<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
diff --git a/HDL-ON_Android/Resources/Resource.designer.cs b/HDL-ON_Android/Resources/Resource.designer.cs
index ade11c4..5d2ca39 100644
--- a/HDL-ON_Android/Resources/Resource.designer.cs
+++ b/HDL-ON_Android/Resources/Resource.designer.cs
@@ -2,7 +2,6 @@
 //------------------------------------------------------------------------------
 // <auto-generated>
 //     This code was generated by a tool.
-//     Runtime Version:4.0.30319.42000
 //
 //     Changes to this file may cause incorrect behavior and will be lost if
 //     the code is regenerated.
@@ -15,7 +14,7 @@
 {
 	
 	
-	[System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "1.0.0.0")]
+	[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "1.0.0.0")]
 	public partial class Resource
 	{
 		
diff --git a/HDL-ON_iOS/.DS_Store b/HDL-ON_iOS/.DS_Store
index 6ebc3fa..96513b5 100644
--- a/HDL-ON_iOS/.DS_Store
+++ b/HDL-ON_iOS/.DS_Store
Binary files differ
diff --git a/HDL-ON_iOS/BlueWifi.cs b/HDL-ON_iOS/BlueWifi.cs
index e5eeff6..aad7a0c 100644
--- a/HDL-ON_iOS/BlueWifi.cs
+++ b/HDL-ON_iOS/BlueWifi.cs
@@ -6,7 +6,7 @@
 namespace HDL_ON
 {
 
-    public class MyBlufiClient 
+    public class MyBlufiClient
     {
 
         HdlBluWi share;
@@ -29,7 +29,7 @@
 
         //public string GetPer()
         //{
-            //share.
+        //share.
         //}
 
 
@@ -40,11 +40,12 @@
         /// <summary>
         /// 璁惧鎼滅储鍒拌摑鐗欒澶囦箣鍚庡埌浠g悊浜嬩欢
         /// </summary>
-        public void SetBlufiDeviceDelegate(Action<string,string> action)
+        public void SetBlufiDeviceDelegate(Action<string, string> action)
         {
-            getBlufiDeviceDelegate = new FBYBleDeviceBackBlock((arg0) => {
-                action?.Invoke(arg0.Name,arg0.Uuid.ToString());
-                if (!string.IsNullOrEmpty(arg0.Name)&& arg0.Name.Contains("BLU"))
+            getBlufiDeviceDelegate = new FBYBleDeviceBackBlock((arg0) =>
+            {
+                action?.Invoke(arg0.Name, arg0.Uuid.ToString());
+                if (!string.IsNullOrEmpty(arg0.Name) && arg0.Name.Contains("BLU"))
                 {
                     Console.WriteLine($"{arg0.Name}  :  {arg0.Uuid}");
                 }
@@ -179,7 +180,7 @@
 
             public override void Blufi_gattPrepared(HdlBlufi.BlufiClient client, BlufiStatusCode status, CBService service, CBCharacteristic writeChar, CBCharacteristic notifyChar)
             {
-                if(status == BlufiStatusCode.Success)
+                if (status == BlufiStatusCode.Success)
                 {
                     MainPage.Log("钃濈墮杩炴帴鎴愬姛");
                 }
@@ -195,7 +196,7 @@
         {
             public override void UpdatedState(CBCentralManager central)
             {
-                
+
                 //throw new NotImplementedException();
             }
             //public override void 
diff --git a/HDL-ON_iOS/HDL-ON_iOS.csproj b/HDL-ON_iOS/HDL-ON_iOS.csproj
index e375828..eb0fd00 100644
--- a/HDL-ON_iOS/HDL-ON_iOS.csproj
+++ b/HDL-ON_iOS/HDL-ON_iOS.csproj
@@ -1057,26 +1057,102 @@
       <BundleResource Include="Resources\Phone\PirIcon\adddevice.png" />
       <BundleResource Include="Resources\Phone\PirIcon\next.png" />
       <BundleResource Include="Resources\Phone\LogicIcon\selected+.png" />
-      <BundleResource Include="Resources\Phone\PirIcon\1.png" />
-      <BundleResource Include="Resources\Phone\PirIcon\2.png" />
-      <BundleResource Include="Resources\Phone\PirIcon\3.png" />
-      <BundleResource Include="Resources\Phone\PirIcon\4.png" />
-      <BundleResource Include="Resources\Phone\PirIcon\failed.png" />
-      <BundleResource Include="Resources\Phone\PirIcon\icon1.png" />
-      <BundleResource Include="Resources\Phone\PirIcon\icon2.png" />
-      <BundleResource Include="Resources\Phone\PirIcon\left.png" />
-      <BundleResource Include="Resources\Phone\PirIcon\right.png" />
-      <BundleResource Include="Resources\Phone\PirIcon\succeed.png" />
+      <BundleResource Include="Resources\Phone\Public\ProgressMsg.png" />
+      <BundleResource Include="Resources\Phone\PersonalCenter\AddDevice\UploadToClound.png" />
+      <BundleResource Include="Resources\Phone\PersonalCenter\AddDevice\NetConnectSelect.png" />
+      <BundleResource Include="Resources\Phone\PersonalCenter\AddDevice\ConnectSuccess.png" />
+      <BundleResource Include="Resources\Phone\PersonalCenter\AddDevice\ConnectSuccessSelect.png" />
+      <BundleResource Include="Resources\Phone\PersonalCenter\AddDevice\MiniRemoteControlBigPictrue.png" />
+      <BundleResource Include="Resources\Phone\PersonalCenter\AddDevice\UploadToCloundSelect.png" />
+      <BundleResource Include="Resources\Phone\PersonalCenter\AddDevice\MiniRemoteControlMenuIcon.png" />
+      <BundleResource Include="Resources\Phone\PersonalCenter\AddDevice\WifiAndPhoneConnect.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\sensortvoc.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\sensorpir.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\electricalai6HtccKFIw3dxo3.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\lightrgb.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\airFreshstandard.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\electricalracks.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\electricalfan.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\sensorpm25.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\acstandard.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\electricalsocket.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\sensorgas.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\sensorhumidity.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\electricalkoiGhMKwLf2ZP81g.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\lightcct.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\curtainroller.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\irlearn.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\lightdimming.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\sensorco2.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\electricaltv.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\floorHeatstandard.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\curtainswitch.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\curtainshades.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\electricaltyqborgovyzytytz.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\musicstandard.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\sensordoorwindow.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\lightrgbw.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\sensortemperature.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\curtaintrietex.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\sensorsmoke.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\electricalQ1RsefNf91tIXyyQ.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\irac.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\sensorwater.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\lightswitch.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\irtv.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\lightrgbw_blue.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\irac_white.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\electricaltv_white.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\electricalai6HtccKFIw3dxo3_white.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\curtaintrietex_white.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\floorHeatstandard_blue.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\musicstandard_blue.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\electricalfan_white.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\curtainswitch_blue.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\lightdimming_white.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\lightrgbw_white.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\electricaltyqborgovyzytytz_white.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\airFreshstandard_white.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\lightrgb_white.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\irtv_blue.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\irlearn_blue.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\musicstandard_white.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\electricalfan_blue.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\curtainshades_white.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\electricalkoiGhMKwLf2ZP81g_white.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\irac_blue.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\electricalkoiGhMKwLf2ZP81g_blue.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\acstandard_white.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\lightcct_white.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\electricalracks_blue.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\electricalai6HtccKFIw3dxo3_blue.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\lightswitch_blue.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\curtaintrietex_blue.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\airFreshstandard_blue.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\floorHeatstandard_white.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\curtainshades_blue.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\electricalQ1RsefNf91tIXyyQ_white.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\electricaltyqborgovyzytytz_blue.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\lightcct_blue.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\lightrgb_blue.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\curtainroller_white.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\curtainroller_blue.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\electricalQ1RsefNf91tIXyyQ_blue.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\irtv_white.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\electricalsocket_white.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\lightswitch_white.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\lightdimming_blue.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\electricaltv_blue.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\electricalsocket_blue.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\acstandard_blue.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\irlearn_white.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\curtainswitch_white.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\electricalracks_white.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\irmodule.png" />
     </ItemGroup>
     <ItemGroup>
       <ITunesArtwork Include="iTunesArtwork" />
       <ITunesArtwork Include="iTunesArtwork%402x" />
-    </ItemGroup>
-    <ItemGroup>
-      <ProjectReference Include="..\HdlBluWi\Blufi.csproj">
-        <Project>{2DDF4C3C-6998-432E-9F43-6786D82F0630}</Project>
-        <Name>Blufi</Name>
-      </ProjectReference>
     </ItemGroup>
     <ItemGroup>
       <ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Contents.json" />
@@ -1112,6 +1188,12 @@
       <ImageAsset Include="Assets.xcassets\LaunchImage.launchimage\640960-1.png" />
       <ImageAsset Include="Assets.xcassets\LaunchImage.launchimage\6401136-1.png" />
     </ItemGroup>
+    <ItemGroup>
+      <ProjectReference Include="..\HdlBluWi\Blufi.csproj">
+        <Project>{2DDF4C3C-6998-432E-9F43-6786D82F0630}</Project>
+        <Name>Blufi</Name>
+      </ProjectReference>
+    </ItemGroup>
     <Import Project="..\HDL_ON\HDL_ON.projitems" Label="Shared" Condition="Exists('..\HDL_ON\HDL_ON.projitems')" />
     <Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.CSharp.targets" />
     <ProjectExtensions>
diff --git a/HDL-ON_iOS/Info.plist b/HDL-ON_iOS/Info.plist
index d5aace1..52e5b75 100644
--- a/HDL-ON_iOS/Info.plist
+++ b/HDL-ON_iOS/Info.plist
@@ -70,6 +70,8 @@
 	<key>UISupportedInterfaceOrientations</key>
 	<array>
 		<string>UIInterfaceOrientationPortrait</string>
+		<string>UIInterfaceOrientationLandscapeLeft</string>
+		<string>UIInterfaceOrientationLandscapeRight</string>
 	</array>
 	<key>UIAppFonts</key>
 	<array>
@@ -102,9 +104,9 @@
 	<key>UIStatusBarStyle</key>
 	<string>UIStatusBarStyleLightContent</string>
 	<key>CFBundleShortVersionString</key>
-	<string>1.1.202103051</string>
+	<string>1.1.202103101</string>
 	<key>CFBundleVersion</key>
-	<string>202103051</string>
+	<string>202103101</string>
 	<key>NSLocationWhenInUseUsageDescription</key>
 	<string>Use geographic location to provide services such as weather</string>
 	<key>NSAppleMusicUsageDescription</key>
diff --git a/HDL-ON_iOS/Resources/Language.ini b/HDL-ON_iOS/Resources/Language.ini
index b52d360..765e310 100644
--- a/HDL-ON_iOS/Resources/Language.ini
+++ b/HDL-ON_iOS/Resources/Language.ini
@@ -411,12 +411,93 @@
 426=Air dry time
 427=Disinfect time
 428=Anion Time
-429=h
-430=m
 
+429=H
+430=Min
+431=You are currently adding any platform devices to
+432=Other platform equipment is supported by third party service provider
+433=Water valve
+434=Time switch
+435=Remote control
 
-1002=Anion 
-	
+1000=Indoor Humidity
+1001=V-chip
+1002=Anion
+1003=Sterilization
+1004=Humidification
+1005=Filter Element Reset
+1006=Lighting
+1007=Automatic
+1008=Manual
+1009=Strong
+1010=Sleep
+1011=Timing
+1012=Wind Speed
+1013=Gear
+1014=Please confirm whether the filter element has been reset and operate the equipment according to the instruction manual for the filter element life to be timed again
+1015=Low Gear
+1016=Mid Gear
+1017=High Gear
+1018=Timing Setting
+1019=Hour
+1020=Filter Element Time锛�
+1021=Air Cleaner
+1022=Current wind speed
+1023=Cancel Timing
+1024=Floor Sweeping Robot
+1025=Suction
+1026=1st Gear
+1027=2nd Gear
+1028=3rd Gear
+1029=Charge
+1030=Voice
+1031=Mute
+1032=Cleaning Mode
+1033=Consumables Management
+1034=History
+1035=Automatic
+1036=Random
+1037=Wall
+1038=Spiral
+1039=Total Clean Area
+1040=Total Clean Time
+1041=Remaining life of side brush
+1042=Residual life of roller brush
+1043=Remaining life of filter screen
+1044=Reset edge brush
+1045=Reset roll brush
+1046=Reset screen
+1047=Confirm to Reset edge brush?
+1048=Confirm to Reset roll brush?
+1049=Confirm to Reset screen?
+1050=Add Device
+1051=Mini Intelligent Remote Control
+1052=Add Infrared Remote Control
+1053=Press the infrared remote control button{0}for 10 seconds and the indicator light{0}flashes blue quickly
+1054=Please make sure your Bluetooth{0}is on and searchable
+1055=Next Step
+1056=Device searching...
+1057=No infrared remote control found
+1058=1.Please check whether the device is{0}   powered on normally{0}2.Please check whether the Bluetooth{0}   function is turned on normally{0}3.Please check whether the indicator{0}    light is flashing blue
+1059=Search Again
+1060=Connect WiFi
+1061=At present,it only supports 2.4G WiFi network{0}and does not support WiFi names{0}with Chinese characters
+1062=Password
+1063=Connecting...
+1064=Please make infrared remote control{0}as close as possible to WiFi router
+1065=Network Link
+1066=Upload to cloud
+1067=Connect success
+1068=1.Please check whether the device is{0}   powered on normally{0}2.Please turn on the Bluetooth function{0}3.Press the button for 10s and the indicator{0}   light will be on
+1069=Add Fail
+1070=Add Success
+1071=You can start using the infrared{0}remote control!
+1072=Start using
+1073=Please turn on Bluetooth
+1074=Location information(GBS) unavailable
+1075=Network unavailable
+1076=Select infrared remote control	
+
 5000=Music
 5001=Group
 5002=Setting
@@ -1093,6 +1174,11 @@
 428=璐熺瀛愭椂闂�
 429=灏忔椂
 430=鍒嗛挓
+431=浣犲綋鍓嶈繕涓烘坊鍔犱换浣曞钩鍙拌澶�
+432=鍏朵粬骞冲彴璁惧鍧囩敱绗笁鏂规湇鍔″晢鎻愪緵鏀寔
+433=姘撮榾
+434=瀹氭椂寮�鍏�
+435=閬ユ帶鍣�
 
 
 1000=瀹ゅ唴婀垮害
@@ -1142,9 +1228,36 @@
 1044=閲嶇疆杈瑰埛
 1045=閲嶇疆婊氬埛
 1046=閲嶇疆婊ょ綉
-1047=鏄惁閲嶇疆杈瑰埛
-1048=鏄惁閲嶇疆婊氬埛
-1049=鏄惁閲嶇疆婊ょ綉
+1047=鏄惁閲嶇疆杈瑰埛?
+1048=鏄惁閲嶇疆婊氬埛?
+1049=鏄惁閲嶇疆婊ょ綉?
+1050=娣诲姞璁惧
+1051=mini鏅鸿兘閬ユ帶鍣�
+1052=娣诲姞绾㈠閬ユ帶
+1053=闀挎寜绾㈠閬ユ帶鍣ㄦ寜閽�10绉掞紝鎸囩ず鐏摑鑹插揩闂�
+1054=璇风‘淇濇偍鐨勮摑鐗欏凡寮�鍚苟澶勪簬鍙互琚悳绱㈢姸鎬�
+1055=涓嬩竴姝�
+1056=璁惧鎼滅储涓�...
+1057=娌℃湁鍙戠幇绾㈠閬ユ帶鍣�
+1058=1銆佽妫�鏌ヨ澶囨槸鍚︽甯搁�氱數{0}2銆佽妫�鏌ヨ摑鐗欏姛鑳芥槸鍚︽甯稿紑鍚瘂0}3銆佽妫�鏌ユ寚绀虹伅鏄惁钃濊壊蹇棯鐘舵��
+1059=閲嶆柊鎼滅储
+1060=杩炴帴WiFi
+1061=鐩墠鍙敮鎸�2.4G WiFi缃戠粶{0}鏆備笉鏀寔甯︽湁涓枃瀛楃鐨刉iFi鍚嶇О
+1062=瀵嗙爜
+1063=姝e湪杩炴帴涓�...
+1064=璇疯绾㈠閬ユ帶灏介噺鎺ヨ繎WIFI璺敱鍣�
+1065=缃戠粶閾炬帴涓�
+1066=涓婁紶鍒颁簯
+1067=杩炴帴鎴愬姛
+1068=1銆佽妫�鏌ヨ澶囨槸鍚︽甯搁�氱數{0}2銆佽寮�鍚摑鐗欏姛鑳絳0}3銆佸苟闀挎寜鎸夐挳10s锛屾寚绀虹伅甯镐寒
+1069=娣诲姞澶辫触
+1070=娣诲姞鎴愬姛
+1071=鍙互寮�濮嬩娇鐢ㄧ孩澶栭仴鎺у姛鑳斤紒
+1072=寮�濮嬩娇鐢�
+1073=璇锋墦寮�钃濈墮
+1074=浣嶇疆淇℃伅(GBS)涓嶅彲鐢�
+1075=缃戠粶涓嶅彲鐢�
+1076=閫夋嫨绾㈠閬ユ帶鍣�
 
 5000=闊充箰
 5001=缁勫悎
@@ -1273,6 +1386,63 @@
 6076=缂栬緫淇℃伅
 
 
+6015=鍦ㄧ嚎
+6016=绂荤嚎
+6017=鐗堟湰鍙�
+6018=璇疯緭鍏ラ仴鎺у櫒鍚嶇О
+6019=鎻愮ず锛氶仴鎺у櫒鍒涘缓鍚庡彲鍦ㄥ姛鑳�-鐢靛櫒鍒嗙被{\r\n}鏌ユ壘浣跨敤
+6020=鎺ㄨ崘鎸夐敭
+6021=璇疯緭鍏ユ寜閿悕绉�
+6022=涓嬩竴姝�
+6023=鐢垫簮
+6024=闊抽噺+
+6025=闊抽噺-
+6026=棰戦亾+
+6027=棰戦亾-
+6028=涓�
+6029=涓�
+6030=宸�
+6031=鍙�
+6032=闈欓煶
+6034=纭
+6035=鎾斁
+6037=閫�鍑�
+6038=鑿滃崟
+6039=鏆傚仠
+6040=杩斿洖
+6041=鍋滄
+6042=涓婚〉
+6043=蹇繘
+6044=蹇��
+6045=瀹氭椂
+6046=澶嶅埗閬ユ帶鍔熻兘
+6047=瀵瑰噯閬ユ帶鍣ㄤ腑蹇冩寜涓嬬浉鍚屾寜閿�
+6048=鏅鸿兘閬ユ帶鍣�
+6049=娣诲姞鎸夐敭
+6050=*闀挎寜鍙繘琛岃嚜瀹氫箟鎺掑簭
+6051=瀹屾垚
+6052=娣诲姞鎴愬姛
+6053=鍙埌鍒嗙被-鍔熻兘-鐢靛櫒鎿嶄綔浣跨敤
+6054=鎵�灞炲垎绫�
+6055=閬ユ帶鍣ㄥ悕绉�
+6056=鎵�灞炲尯鍩�
+6057=缁х画娣诲姞
+6058=鐢靛櫒
+6059=娣诲姞澶辫触
+6060=閲嶈瘯
+6061=鍖归厤閬ユ帶鍣�
+6062=璇风偣鍑讳互涓嬫寜閽�
+6063=纭璁惧鏄惁鏈夊搷搴�
+6064=鎺у埗澶辫触
+6065=鎺у埗鎴愬姛
+6066=鐢垫簮寮�
+6067=妯″紡鍒跺喎
+6068=椋庨�熶腑椋�
+6069=娓╁害26鈩�
+6070=鍒犻櫎璁惧
+6071=淇敼鍚嶅瓧
+6072=纭鍒犻櫎
+6073=鍙栨秷
 
 7000=鏂板缓鑷姩鍖�
 7001=缂栬緫鑷姩鍖�
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/More.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/More.png
new file mode 100644
index 0000000..bc89ac6
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/AC/More.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/.DS_Store b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/.DS_Store
index 3f51231..76483dd 100644
--- a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/.DS_Store
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/.DS_Store
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/acstandard_blue.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/acstandard_blue.png
new file mode 100644
index 0000000..66155c5
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/acstandard_blue.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/acstandard_white.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/acstandard_white.png
new file mode 100644
index 0000000..32e354e
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/acstandard_white.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/airFreshstandard_blue.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/airFreshstandard_blue.png
new file mode 100644
index 0000000..23f6005
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/airFreshstandard_blue.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/airFreshstandard_white.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/airFreshstandard_white.png
new file mode 100644
index 0000000..9a40fd6
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/airFreshstandard_white.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/curtainroller_blue.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/curtainroller_blue.png
new file mode 100644
index 0000000..5ae946e
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/curtainroller_blue.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/curtainroller_white.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/curtainroller_white.png
new file mode 100644
index 0000000..1ff8d10
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/curtainroller_white.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/curtainshades_blue.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/curtainshades_blue.png
new file mode 100644
index 0000000..9053f13
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/curtainshades_blue.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/curtainshades_white.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/curtainshades_white.png
new file mode 100644
index 0000000..01a5a48
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/curtainshades_white.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/curtainswitch_blue.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/curtainswitch_blue.png
new file mode 100644
index 0000000..220ff6e
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/curtainswitch_blue.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/curtainswitch_white.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/curtainswitch_white.png
new file mode 100644
index 0000000..f74c97d
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/curtainswitch_white.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/curtaintrietex_blue.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/curtaintrietex_blue.png
new file mode 100644
index 0000000..e3671a2
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/curtaintrietex_blue.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/curtaintrietex_white.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/curtaintrietex_white.png
new file mode 100644
index 0000000..259e176
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/curtaintrietex_white.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalQ1RsefNf91tIXyyQ_blue.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalQ1RsefNf91tIXyyQ_blue.png
new file mode 100644
index 0000000..3caf309
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalQ1RsefNf91tIXyyQ_blue.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalQ1RsefNf91tIXyyQ_white.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalQ1RsefNf91tIXyyQ_white.png
new file mode 100644
index 0000000..58dbb2d
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalQ1RsefNf91tIXyyQ_white.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalai6HtccKFIw3dxo3_blue.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalai6HtccKFIw3dxo3_blue.png
new file mode 100644
index 0000000..aab3b24
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalai6HtccKFIw3dxo3_blue.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalai6HtccKFIw3dxo3_white.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalai6HtccKFIw3dxo3_white.png
new file mode 100644
index 0000000..48e6784
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalai6HtccKFIw3dxo3_white.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalfan_blue.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalfan_blue.png
new file mode 100644
index 0000000..c59a2e5
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalfan_blue.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalfan_white.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalfan_white.png
new file mode 100644
index 0000000..8c5ead5
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalfan_white.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalkoiGhMKwLf2ZP81g_blue.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalkoiGhMKwLf2ZP81g_blue.png
new file mode 100644
index 0000000..e25af0b
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalkoiGhMKwLf2ZP81g_blue.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalkoiGhMKwLf2ZP81g_white.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalkoiGhMKwLf2ZP81g_white.png
new file mode 100644
index 0000000..4e2f1df
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalkoiGhMKwLf2ZP81g_white.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalracks_blue.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalracks_blue.png
new file mode 100644
index 0000000..0e89579
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalracks_blue.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalracks_white.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalracks_white.png
new file mode 100644
index 0000000..4845fa2
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalracks_white.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalsocket_blue.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalsocket_blue.png
new file mode 100644
index 0000000..84ff63d
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalsocket_blue.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalsocket_white.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalsocket_white.png
new file mode 100644
index 0000000..1fd6e8e
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricalsocket_white.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricaltv_blue.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricaltv_blue.png
new file mode 100644
index 0000000..d28c4af
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricaltv_blue.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricaltv_white.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricaltv_white.png
new file mode 100644
index 0000000..1f42e9f
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricaltv_white.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricaltyqborgovyzytytz_blue.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricaltyqborgovyzytytz_blue.png
new file mode 100644
index 0000000..c59a2e5
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricaltyqborgovyzytytz_blue.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricaltyqborgovyzytytz_white.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricaltyqborgovyzytytz_white.png
new file mode 100644
index 0000000..8c5ead5
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/electricaltyqborgovyzytytz_white.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/floorHeatstandard_blue.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/floorHeatstandard_blue.png
new file mode 100644
index 0000000..d44a273
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/floorHeatstandard_blue.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/floorHeatstandard_white.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/floorHeatstandard_white.png
new file mode 100644
index 0000000..06e28c0
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/floorHeatstandard_white.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irac_blue.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irac_blue.png
new file mode 100644
index 0000000..66155c5
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irac_blue.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irac_white.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irac_white.png
new file mode 100644
index 0000000..32e354e
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irac_white.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irlearn_blue.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irlearn_blue.png
new file mode 100644
index 0000000..50f52ea
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irlearn_blue.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irlearn_white.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irlearn_white.png
new file mode 100644
index 0000000..80addfe
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irlearn_white.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irtv_blue.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irtv_blue.png
new file mode 100644
index 0000000..d28c4af
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irtv_blue.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irtv_white.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irtv_white.png
new file mode 100644
index 0000000..1f42e9f
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irtv_white.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/lightcct_blue.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/lightcct_blue.png
new file mode 100644
index 0000000..5e07518
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/lightcct_blue.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/lightcct_white.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/lightcct_white.png
new file mode 100644
index 0000000..cb36722
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/lightcct_white.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/lightdimming_blue.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/lightdimming_blue.png
new file mode 100644
index 0000000..b40b6d9
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/lightdimming_blue.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/lightdimming_white.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/lightdimming_white.png
new file mode 100644
index 0000000..f18a303
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/lightdimming_white.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/lightrgb_blue.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/lightrgb_blue.png
new file mode 100644
index 0000000..5e07518
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/lightrgb_blue.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/lightrgb_white.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/lightrgb_white.png
new file mode 100644
index 0000000..cb36722
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/lightrgb_white.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/lightrgbw_blue.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/lightrgbw_blue.png
new file mode 100644
index 0000000..5e07518
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/lightrgbw_blue.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/lightrgbw_white.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/lightrgbw_white.png
new file mode 100644
index 0000000..cb36722
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/lightrgbw_white.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/lightswitch_blue.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/lightswitch_blue.png
new file mode 100644
index 0000000..9df7593
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/lightswitch_blue.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/lightswitch_white.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/lightswitch_white.png
new file mode 100644
index 0000000..79b5a76
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/lightswitch_white.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/musicstandard_blue.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/musicstandard_blue.png
new file mode 100644
index 0000000..512f3eb
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/musicstandard_blue.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/musicstandard_white.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/musicstandard_white.png
new file mode 100644
index 0000000..85065ec
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/musicstandard_white.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/acstandard.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/acstandard.png
new file mode 100644
index 0000000..6d7221b
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/acstandard.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/airFreshstandard.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/airFreshstandard.png
new file mode 100644
index 0000000..6657bae
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/airFreshstandard.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/curtainroller.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/curtainroller.png
new file mode 100644
index 0000000..10bdb27
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/curtainroller.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/curtainshades.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/curtainshades.png
new file mode 100644
index 0000000..abeae75
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/curtainshades.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/curtainswitch.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/curtainswitch.png
new file mode 100644
index 0000000..8ce4669
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/curtainswitch.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/curtaintrietex.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/curtaintrietex.png
new file mode 100644
index 0000000..0eeb3a0
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/curtaintrietex.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/electricalQ1RsefNf91tIXyyQ.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/electricalQ1RsefNf91tIXyyQ.png
new file mode 100644
index 0000000..f299156
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/electricalQ1RsefNf91tIXyyQ.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/electricalai6HtccKFIw3dxo3.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/electricalai6HtccKFIw3dxo3.png
new file mode 100644
index 0000000..8486852
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/electricalai6HtccKFIw3dxo3.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/electricalfan.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/electricalfan.png
new file mode 100644
index 0000000..0447c4d
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/electricalfan.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/electricalkoiGhMKwLf2ZP81g.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/electricalkoiGhMKwLf2ZP81g.png
new file mode 100644
index 0000000..ed0735d
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/electricalkoiGhMKwLf2ZP81g.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/electricalracks.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/electricalracks.png
new file mode 100644
index 0000000..6f10d54
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/electricalracks.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/electricalsocket.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/electricalsocket.png
new file mode 100644
index 0000000..6a324db
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/electricalsocket.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/electricaltv.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/electricaltv.png
new file mode 100644
index 0000000..7f9045f
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/electricaltv.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/electricaltyqborgovyzytytz.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/electricaltyqborgovyzytytz.png
new file mode 100644
index 0000000..0447c4d
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/electricaltyqborgovyzytytz.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/floorHeatstandard.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/floorHeatstandard.png
new file mode 100644
index 0000000..c067812
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/floorHeatstandard.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irac.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irac.png
new file mode 100644
index 0000000..6d7221b
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irac.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irlearn.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irlearn.png
new file mode 100644
index 0000000..f6654d9
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irlearn.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irmodule.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irmodule.png
new file mode 100644
index 0000000..5bb5bb2
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irmodule.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irtv.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irtv.png
new file mode 100644
index 0000000..7f9045f
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irtv.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/lightcct.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/lightcct.png
new file mode 100644
index 0000000..9fabb8e
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/lightcct.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/lightdimming.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/lightdimming.png
new file mode 100644
index 0000000..6fd97b5
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/lightdimming.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/lightrgb.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/lightrgb.png
new file mode 100644
index 0000000..9fabb8e
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/lightrgb.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/lightrgbw.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/lightrgbw.png
new file mode 100644
index 0000000..9fabb8e
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/lightrgbw.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/lightswitch.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/lightswitch.png
new file mode 100644
index 0000000..0aa1f98
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/lightswitch.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/musicstandard.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/musicstandard.png
new file mode 100644
index 0000000..d522bf3
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/musicstandard.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensorco2.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensorco2.png
new file mode 100644
index 0000000..4d52fc1
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensorco2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensordoorwindow.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensordoorwindow.png
new file mode 100644
index 0000000..6f82b1f
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensordoorwindow.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensorgas.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensorgas.png
new file mode 100644
index 0000000..6e05b01
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensorgas.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensorhumidity.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensorhumidity.png
new file mode 100644
index 0000000..3549ac7
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensorhumidity.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensorpir.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensorpir.png
new file mode 100644
index 0000000..5afa201
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensorpir.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensorpm25.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensorpm25.png
new file mode 100644
index 0000000..2f07a0b
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensorpm25.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensorsmoke.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensorsmoke.png
new file mode 100644
index 0000000..245f9de
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensorsmoke.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensortemperature.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensortemperature.png
new file mode 100644
index 0000000..d852749
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensortemperature.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensortvoc.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensortvoc.png
new file mode 100644
index 0000000..a37cc0e
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensortvoc.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensorwater.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensorwater.png
new file mode 100644
index 0000000..57b566a
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensorwater.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PersonalCenter/AddDevice/ConnectSuccess.png b/HDL-ON_iOS/Resources/Phone/PersonalCenter/AddDevice/ConnectSuccess.png
new file mode 100644
index 0000000..8c6b86e
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/PersonalCenter/AddDevice/ConnectSuccess.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PersonalCenter/AddDevice/ConnectSuccessSelect.png b/HDL-ON_iOS/Resources/Phone/PersonalCenter/AddDevice/ConnectSuccessSelect.png
new file mode 100644
index 0000000..224fd3f
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/PersonalCenter/AddDevice/ConnectSuccessSelect.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PersonalCenter/AddDevice/MiniRemoteControlBigPictrue.png b/HDL-ON_iOS/Resources/Phone/PersonalCenter/AddDevice/MiniRemoteControlBigPictrue.png
new file mode 100644
index 0000000..a6ccf0a
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/PersonalCenter/AddDevice/MiniRemoteControlBigPictrue.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PersonalCenter/AddDevice/MiniRemoteControlMenuIcon.png b/HDL-ON_iOS/Resources/Phone/PersonalCenter/AddDevice/MiniRemoteControlMenuIcon.png
new file mode 100644
index 0000000..be9906d
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/PersonalCenter/AddDevice/MiniRemoteControlMenuIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PersonalCenter/AddDevice/NetConnectSelect.png b/HDL-ON_iOS/Resources/Phone/PersonalCenter/AddDevice/NetConnectSelect.png
new file mode 100644
index 0000000..1c6cbfe
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/PersonalCenter/AddDevice/NetConnectSelect.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PersonalCenter/AddDevice/UploadToClound.png b/HDL-ON_iOS/Resources/Phone/PersonalCenter/AddDevice/UploadToClound.png
new file mode 100644
index 0000000..ffef099
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/PersonalCenter/AddDevice/UploadToClound.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PersonalCenter/AddDevice/UploadToCloundSelect.png b/HDL-ON_iOS/Resources/Phone/PersonalCenter/AddDevice/UploadToCloundSelect.png
new file mode 100644
index 0000000..fe57fe5
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/PersonalCenter/AddDevice/UploadToCloundSelect.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PersonalCenter/AddDevice/WifiAndPhoneConnect.png b/HDL-ON_iOS/Resources/Phone/PersonalCenter/AddDevice/WifiAndPhoneConnect.png
new file mode 100644
index 0000000..4039574
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/PersonalCenter/AddDevice/WifiAndPhoneConnect.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/Infraredtreasure.png b/HDL-ON_iOS/Resources/Phone/PirIcon/Infraredtreasure.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/adddevice.png b/HDL-ON_iOS/Resources/Phone/PirIcon/adddevice.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/addlbuton.png b/HDL-ON_iOS/Resources/Phone/PirIcon/addlbuton.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/air.png b/HDL-ON_iOS/Resources/Phone/PirIcon/air.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/custom.png b/HDL-ON_iOS/Resources/Phone/PirIcon/custom.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/del.png b/HDL-ON_iOS/Resources/Phone/PirIcon/del.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/delbuton.png b/HDL-ON_iOS/Resources/Phone/PirIcon/delbuton.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/dropdown.png b/HDL-ON_iOS/Resources/Phone/PirIcon/dropdown.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/dvd.png b/HDL-ON_iOS/Resources/Phone/PirIcon/dvd.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/fan.png b/HDL-ON_iOS/Resources/Phone/PirIcon/fan.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/next.png b/HDL-ON_iOS/Resources/Phone/PirIcon/next.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/offline.png b/HDL-ON_iOS/Resources/Phone/PirIcon/offline.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/online.png b/HDL-ON_iOS/Resources/Phone/PirIcon/online.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/priequipment.png b/HDL-ON_iOS/Resources/Phone/PirIcon/priequipment.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/projector.png b/HDL-ON_iOS/Resources/Phone/PirIcon/projector.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/search.png b/HDL-ON_iOS/Resources/Phone/PirIcon/search.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/stb.png b/HDL-ON_iOS/Resources/Phone/PirIcon/stb.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PirIcon/tv.png b/HDL-ON_iOS/Resources/Phone/PirIcon/tv.png
old mode 100755
new mode 100644
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/Public/ProgressMsg.png b/HDL-ON_iOS/Resources/Phone/Public/ProgressMsg.png
new file mode 100644
index 0000000..e0255b8
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/Public/ProgressMsg.png
Binary files differ
diff --git a/HDL_ON/.DS_Store b/HDL_ON/.DS_Store
index 369c06c..b92307c 100644
--- a/HDL_ON/.DS_Store
+++ b/HDL_ON/.DS_Store
Binary files differ
diff --git a/HDL_ON/Common/ApiUtlis.cs b/HDL_ON/Common/ApiUtlis.cs
index 3141f5d..1517a67 100644
--- a/HDL_ON/Common/ApiUtlis.cs
+++ b/HDL_ON/Common/ApiUtlis.cs
@@ -356,12 +356,15 @@
                 catch { }
                 finally
                 {
-                    #region 璇诲彇鏈湴鏁版嵁
-                    //璇诲彇闊充箰淇℃伅
-                    UI.Music.A31MusicModel.ReadMusicStates();
-                    //鎼滅储缃戝叧
-                    DriverLayer.Control.Ins.SearchLoaclGateway();
-                    #endregion
+                    if (DB_ResidenceData.Instance.CurrentRegion != null)
+                    {
+                        #region 璇诲彇鏈湴鏁版嵁
+                        //璇诲彇闊充箰淇℃伅
+                        UI.Music.A31MusicModel.ReadMusicStates();
+                        //鎼滅储缃戝叧
+                        DriverLayer.Control.Ins.SearchLoaclGateway();
+                        #endregion
+                    }
                 }
             })
             { IsBackground = true }.Start();
diff --git a/HDL_ON/Common/FileUtlis.cs b/HDL_ON/Common/FileUtlis.cs
index 0d3e2f2..63a3e07 100644
--- a/HDL_ON/Common/FileUtlis.cs
+++ b/HDL_ON/Common/FileUtlis.cs
@@ -48,6 +48,10 @@
         {
             get
             {
+                if(DB_ResidenceData.Instance.CurrentRegion == null || DB_ResidenceData.Instance.CurrentRegion.RegionID == null)
+                {
+                    return AccountPath;
+                }
                 if (string.IsNullOrEmpty(regionPath) || !regionPath.Contains(DB_ResidenceData.Instance.CurrentRegion.RegionID ))
                 {
                     regionPath = Path.Combine(AccountPath, DB_ResidenceData.Instance.CurrentRegion.RegionID);
@@ -305,6 +309,9 @@
                         }
                     }
                 });
+            }else
+            {
+                action?.Invoke();
             }
         }
 
diff --git a/HDL_ON/Common/HDLCommon.cs b/HDL_ON/Common/HDLCommon.cs
index a19d240..70b5864 100644
--- a/HDL_ON/Common/HDLCommon.cs
+++ b/HDL_ON/Common/HDLCommon.cs
@@ -537,6 +537,12 @@
                                     if (b)
                                     {
                                         Android.Content.Intent intent = new Android.Content.Intent();
+                                        var bundle = new Android.OS.Bundle();
+                                        //浼犻�抧ame鍙傛暟涓簍inyphp
+                                        bundle.PutString("Token", ezChildAccessToken.accessToken);
+                                        bundle.PutString("HdlToken", UserInfo.Current.LoginTokenString);
+                                        bundle.PutString("Url", OnAppConfig.Instance.RequestHttpsHost);
+                                        intent.PutExtras(bundle);
                                         intent.SetComponent(new Android.Content.ComponentName(Shared.Application.Activity, "com.videogo.MainActivity"));
                                         Shared.Application.Activity.StartActivity(intent);
                                     }
diff --git a/HDL_ON/Common/R.cs b/HDL_ON/Common/R.cs
index ab3559c..3d2d9c9 100644
--- a/HDL_ON/Common/R.cs
+++ b/HDL_ON/Common/R.cs
@@ -4,6 +4,11 @@
 {
     public static class StringId
     {
+        public const int RemoteControl = 435;
+        public const int TimeSwitch = 434;
+        public const int WaterValve = 433;
+        public const int Use3tyBrandListTip = 432;
+        public const int Not3tyBrandListTip = 431;
         public const int MinuteUint = 430;
         public const int HourUint = 429;
         public const int AnionTime = 428;
@@ -622,7 +627,115 @@
         /// <summary>
         /// 鏄惁閲嶇疆婊ょ綉
         /// </summary>
-        public const int ResetFilterScreenMsg = 1049;
+        public const int ResetFilterScreenMsg = 1049;
+        /// <summary>
+        /// 娣诲姞璁惧
+        /// </summary>
+        public const int AddDevice = 1050;
+        /// <summary>
+        /// mini鏅鸿兘閬ユ帶鍣�
+        /// </summary>
+        public const int MiniIntelligentRemoteControl = 1051;
+        /// <summary>
+        /// 娣诲姞绾㈠閬ユ帶
+        /// </summary>
+        public const int AddInfraredRemoteControl = 1052;
+        /// <summary>
+        /// 闀挎寜绾㈠閬ユ帶鍣ㄦ寜閽�10绉掞紝鎸囩ず鐏摑鑹插揩闂�
+        /// </summary>
+        public const int AddInfraredRemoteControlMsg1 = 1053;
+        /// <summary>
+        /// 璇风‘淇濇偍鐨勮摑鐗欏凡寮�鍚苟澶勪簬鍙互琚悳绱㈢姸鎬�
+        /// </summary>
+        public const int AddInfraredRemoteControlMsg2 = 1054;
+        /// <summary>
+        /// 涓嬩竴姝�
+        /// </summary>
+        public const int Next = 1055;
+        /// <summary>
+        /// 璁惧鎼滅储涓�...
+        /// </summary>
+        public const int SearchingDevice = 1056;
+        /// <summary>
+        /// 娌℃湁鍙戠幇绾㈠閬ユ帶鍣�
+        /// </summary>
+        public const int NoInfraredRemoteControlFound = 1057;
+        /// <summary>
+        /// 1銆佽妫�鏌ヨ澶囨槸鍚︽甯搁�氱數{0}2銆佽妫�鏌ヨ摑鐗欏姛鑳芥槸鍚︽甯稿紑鍚瘂0}3銆佽妫�鏌ユ寚绀虹伅鏄惁钃濊壊蹇棯鐘舵��
+        /// </summary>
+        public const int AddInfraredRemoteControlMsg3 = 1058;
+        /// <summary>
+        /// 閲嶆柊鎼滅储
+        /// </summary>
+        public const int ReSearch = 1059;
+        /// <summary>
+        /// 杩炴帴WiFi
+        /// </summary>
+        public const int ConnectWiFi = 1060;
+        /// <summary>
+        /// 鐩墠鍙敮鎸�2.4G WiFi缃戠粶{0}鏆備笉鏀寔甯︽湁涓枃瀛楃鐨刉iFi鍚嶇О
+        /// </summary>
+        public const int AddInfraredRemoteControlMsg4 = 1061;
+        /// <summary>
+        /// 瀵嗙爜
+        /// </summary>
+        public const int Password = 1062;
+        /// <summary>
+        /// 姝e湪杩炴帴涓�...
+        /// </summary>
+        public const int NowConnectting = 1063;
+        /// <summary>
+        /// 璇疯绾㈠閬ユ帶灏介噺鎺ヨ繎WIFI璺敱鍣�
+        /// </summary>
+        public const int AddInfraredRemoteControlMsg5 = 1064;
+        /// <summary>
+        /// 缃戠粶閾炬帴涓�
+        /// </summary>
+        public const int InTheNetworkLink = 1065;
+        /// <summary>
+        /// 涓婁紶鍒颁簯
+        /// </summary>
+        public const int UploadToCloud = 1066;
+        /// <summary>
+        /// 杩炴帴鎴愬姛
+        /// </summary>
+        public const int ConnectSuccess = 1067;
+        /// <summary>
+        /// 1銆佽妫�鏌ヨ澶囨槸鍚︽甯搁�氱數{0}2銆佽寮�鍚摑鐗欏姛鑳絳0}3銆佸苟闀挎寜鎸夐挳10s锛屾寚绀虹伅甯镐寒
+        /// </summary>
+        public const int AddInfraredRemoteControlMsg6 = 1068;
+        /// <summary>
+        /// 娣诲姞澶辫触
+        /// </summary>
+        public const int AddFail = 1069;
+        /// <summary>
+        /// 娣诲姞鎴愬姛
+        /// </summary>
+        public const int AddSuccess = 1070;
+        /// <summary>
+        /// 鍙互寮�濮嬩娇鐢ㄧ孩澶栭仴鎺у姛鑳斤紒
+        /// </summary>
+        public const int AddInfraredRemoteControlMsg7 = 1071;
+        /// <summary>
+        /// 寮�濮嬩娇鐢�
+        /// </summary>
+        public const int StartUse = 1072;
+        /// <summary>
+        /// 璇锋墦寮�钃濈墮
+        /// </summary>
+        public const int PleaseTurnOnBluetooth = 1073;
+        /// <summary>
+        /// 浣嶇疆淇℃伅(GBS)涓嶅彲鐢�
+        /// </summary>
+        public const int GbsIsNotAvailable = 1074;
+        /// <summary>
+        /// 缃戠粶涓嶅彲鐢�
+        /// </summary>
+        public const int NetworkIsNotAvailable = 1075;
+        /// <summary>
+        /// 閫夋嫨绾㈠閬ユ帶鍣�
+        /// </summary>
+        public const int ChooseInfraredRemoteControl = 1076;
 
 
 
diff --git a/HDL_ON/Common/Utlis.cs b/HDL_ON/Common/Utlis.cs
index e2c5604..37e1aa8 100644
--- a/HDL_ON/Common/Utlis.cs
+++ b/HDL_ON/Common/Utlis.cs
@@ -42,6 +42,7 @@
 			{
 				Text = mes,
 				CloseTime = closeTime,
+				MaxWidth = Application.GetRealWidth(300),
 				Direction = AMPopTipDirection.None
 			};
 			tip.Show(MainPage.BaseView);
@@ -273,7 +274,7 @@
 		}
 
 		/// <summary>
-        /// 
+        /// 鏃堕棿鎴宠浆鏃堕棿瀛楃涓�
         /// </summary>
         /// <param name="unixTimeStamp"></param>
         /// <param name="format"></param>
diff --git a/HDL_ON/DAL/DriverLayer/A_Protocol_Common.cs b/HDL_ON/DAL/DriverLayer/A_Protocol_Common.cs
index be70231..ecd149d 100644
--- a/HDL_ON/DAL/DriverLayer/A_Protocol_Common.cs
+++ b/HDL_ON/DAL/DriverLayer/A_Protocol_Common.cs
@@ -86,6 +86,17 @@
             }
         }
         /// <summary>
+        /// 鏈湴鎺у埗绾㈠璁惧鍔熻兘涓婚
+        /// </summary>
+        public string ControlIrFunctionTopic
+        {
+            get
+            {
+                return $"/base/${Control.Ins.GatewayId}/thing/property/down";
+            }
+        }
+
+        /// <summary>
         /// 璇诲彇鍔熻兘鐘舵��
         /// </summary>
         public string ReadStatus
diff --git a/HDL_ON/DAL/DriverLayer/Control.cs b/HDL_ON/DAL/DriverLayer/Control.cs
index 106ed8e..de9a955 100644
--- a/HDL_ON/DAL/DriverLayer/Control.cs
+++ b/HDL_ON/DAL/DriverLayer/Control.cs
@@ -50,15 +50,15 @@
                 return _msg_id++;
             }
         }
-        /// <summary>
-        /// 鑾峰彇13浣嶆椂闂存埑
-        /// </summary>
-        /// <returns></returns>
-        public string Get_TimeStamp()
-        {
-            long t = DateTime.Now.Ticks / 10000;
-            return t.ToString();
-        }
+        ///// <summary>
+        ///// 鑾峰彇13浣嶆椂闂存埑
+        ///// </summary>
+        ///// <returns></returns>
+        //public string Get_TimeStamp()
+        //{
+        //    long t = DateTime.Now.Ticks / 10000;
+        //    return t.ToString();
+        //}
 
         /// <summary>
         /// 鏄惁鎼滅储鏈湴缃戝叧鎴愬姛
@@ -229,7 +229,7 @@
         public void SearchLoaclGateway()
         {
             //2021-01-15 : 浣忓畢娌℃湁缁戝畾缃戝叧鐨勬椂鍊欎笉鐢ㄦ悳绱紝骞朵笖涓嶈兘閾炬帴mqtt
-            if(DB_ResidenceData.Instance.HomeGateway == null)
+            if(DB_ResidenceData.Instance.HomeGateway == null || string.IsNullOrEmpty(DB_ResidenceData.Instance.HomeGateway.gatewayId))
             {
                 return;
             }
@@ -603,6 +603,7 @@
                 }
 
                 MainPage.Log($"灞�鍩熺綉淇℃伅: {receiveObj.Topic}");
+                MainPage.Log($"鍐呭: {res[1]}");
 
 
                 //楠岃瘉鏈夋晥鏁版嵁闀垮害
@@ -613,13 +614,14 @@
                 //}
                 receiveObj.BodyDataString = res[1];
 
-                var bodyJObj = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponsePack>(res[1]);
-                if (bodyJObj == null)
-                {
-                    return receiveObj;
-                }
                 if (receiveObj.Topic == CommunicationTopic.SearchLoaclGatewayReply)
                 {
+                    var bodyJObj = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponsePack>(res[1]);
+                    if (bodyJObj == null)
+                    {
+                        return receiveObj;
+                    }
+
                     var device = Newtonsoft.Json.JsonConvert.DeserializeObject<DeviceModule>(bodyJObj.objects.ToString());
                     if (device.device_mac == DB_ResidenceData.Instance.residenceGatewayMAC)
                     {
@@ -643,6 +645,11 @@
                 {
                     //TODO 鏆傛椂涓嶄紶姝g‘鐨勬暟鎹笂鍘伙紝濡傛灉鍚庨潰瑕佷紭鍖栧墠闈㈣繖浜涗唬鐮�
                     UpdataFunctionStatus(receiveObj.BodyDataString, null);
+                }
+                else
+                {
+                    //涓�浜涚壒娈婄殑涓婚澶勭悊(涓轰簡鎵ц閫熷害,灏藉彲鑳界殑鍒姞鑰楁椂鐨勬搷浣�)
+                    Stan.HdlCloudReceiveLogic.Current.CloudOverallMsgReceiveEx(receiveObj.Topic, receiveObj.BodyDataString);
                 }
             }
             return receiveObj;
@@ -689,6 +696,7 @@
                         MainPage.Log($"A鍗忚鏇存柊鐘舵��:{revString}");
                         foreach (var attr in updateTemp.status)
                         {
+                            localFunction.time_stamp = temp.time_stamp;
                             localFunction.SetAttrState(attr.key, attr.value);
                         }
 
diff --git a/HDL_ON/DAL/DriverLayer/Control_Udp.cs b/HDL_ON/DAL/DriverLayer/Control_Udp.cs
index d4762a2..35e8539 100644
--- a/HDL_ON/DAL/DriverLayer/Control_Udp.cs
+++ b/HDL_ON/DAL/DriverLayer/Control_Udp.cs
@@ -957,7 +957,7 @@
         {
             try
             {
-                var sendJob = new JObject { { "id", Control.Ins.msg_id.ToString() }, { "time_stamp", (DateTime.Now.Ticks / 100000).ToString() } };
+                var sendJob = new JObject { { "id", Control.Ins.msg_id.ToString() }, { "time_stamp", Utlis.GetTimestamp ()} };
                 var bodyString = JsonConvert.SerializeObject(sendJob);
                 
                 var sendBytes = Control.Ins.ConvertSendBodyData(CommunicationTopic.SearchLoaclGateway, bodyString);
diff --git a/HDL_ON/DAL/Mqtt/MqttClient.cs b/HDL_ON/DAL/Mqtt/MqttClient.cs
index a3fe1fe..61ca982 100644
--- a/HDL_ON/DAL/Mqtt/MqttClient.cs
+++ b/HDL_ON/DAL/Mqtt/MqttClient.cs
@@ -11,6 +11,7 @@
 using HDL_ON.DriverLayer;
 using HDL_ON.Entity;
 using HDL_ON.UI;
+using HDL_ON.DAL.Server;
 
 namespace HDL_ON.DAL.Mqtt
 {
@@ -198,16 +199,37 @@
                         QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce
                     };
                     //App璁㈤槄閬ユ帶鍣ㄨ嚜瀛︽寜閿涔犳垚鍔熼�氱煡
-                    var study = new MqttTopicFilter()
+                    var pirStudy = new MqttTopicFilter()
                     {
                         Topic = $"/user/{DB_ResidenceData.Instance.CurrentRegion.RegionID}/app/thing/event/irCodeStudyDone/up",
                         QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce
                     };
+                    #region 鏁版嵁鏇存柊鎺ㄩ�佷富棰�
+                    //appHomeRefresh锛氫綇瀹呮暟鎹埛鏂伴�氱煡
+                    var appHomeRefresh = new MqttTopicFilter()
+                    {
+                        Topic = $"/user/{DB_ResidenceData.Instance.CurrentRegion.RegionID}/app/thing/event/appHomeRefresh/up",
+                        QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce
+                    };
+                    //appRoomRefresh锛氭埧闂存暟鎹埛鏂伴�氱煡
+                    var appRoomRefresh = new MqttTopicFilter()
+                    {
+                        Topic = $"/user/{DB_ResidenceData.Instance.CurrentRegion.RegionID}/app/thing/event/appRoomRefresh/up",
+                        QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce
+                    };
+                    //appDeviceRefresh锛氳澶囨暟鎹埛鏂伴�氱煡
+                    var appDeviceRefresh = new MqttTopicFilter()
+                    {
+                        Topic = $"/user/{DB_ResidenceData.Instance.CurrentRegion.RegionID}/app/thing/event/appDeviceRefresh/up",
+                        QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce
+                    };
+                    #endregion
+
 
                     Utlis.WriteLine("寮�濮嬭闃咃紒");
                     var result = await RemoteMqttClient.SubscribeAsync(new MqttTopicFilter[] {
-                        pirStatus,
-                         study,
+                        pirStatus,pirStudy,
+                        appDeviceRefresh,appHomeRefresh,appRoomRefresh,
                         topicFilterPush2, topicAlinkStatus });
                     if (result.Items[0].ResultCode == MQTTnet.Client.Subscribing.MqttClientSubscribeResultCode.GrantedQoS0)
                     {
@@ -233,6 +255,10 @@
             }
 
             if (!UserInfo.Current.IsLogin)
+            {
+                return;
+            }
+            if(DB_ResidenceData.Instance.CurrentRegion == null || DB_ResidenceData.Instance.CurrentRegion.RegionID == null)
             {
                 return;
             }
@@ -287,6 +313,12 @@
                                     }
                                 }
 
+                                //涓�浜涚壒娈婄殑涓婚澶勭悊(涓轰簡鎵ц閫熷害,灏藉彲鑳界殑鍒姞鑰楁椂鐨勬搷浣� true:鎵ц浜嗙壒娈婂鐞� false:娌℃湁鎵ц鐗规畩澶勭悊)
+                                if (Stan.HdlCloudReceiveLogic.Current.CloudOverallMsgReceiveEx(topic, e.ApplicationMessage.Payload, mqttEncryptKey, tuyaEncryptKey) == true)
+                                {
+                                    return;
+                                }
+
                                 if (topic == $"/BusGateWayToClient/{UserInfo.Current.ID}" + PushNotifySqueeze)
                                 {
                                     var mMes = Encoding.UTF8.GetString(e.ApplicationMessage.Payload);
@@ -299,18 +331,88 @@
                                     var bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, tuyaEncryptKey);
                                     var revString = Encoding.UTF8.GetString(bytes);
                                     HDL_ON.UI.UI2.PersonalCenter.PirDevice.Method.controldata = revString;
-                                    //ReceiveCheckGateway(ss);
-                                    //return;
                                 }
                                 //App璁㈤槄閬ユ帶鍣ㄨ嚜瀛︽寜閿涔犳垚鍔熼�氱煡
                                 else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.RegionID}/app/thing/event/irCodeStudyDone/up")
                                 {
                                     var bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, tuyaEncryptKey);
                                     var revString = Encoding.UTF8.GetString(bytes);
-                                    HDL_ON.UI.UI2.PersonalCenter.PirDevice.Method.buttondata = revString;
-                                    //ReceiveCheckGateway(ss);
-                                    //return;
+                                    UI.UI2.PersonalCenter.PirDevice.Method.controldata = revString;
                                 }
+                                #region 鏁版嵁鏇存柊鎺ㄩ�佷富棰�
+                                //appHomeRefresh锛氫綇瀹呮暟鎹埛鏂伴�氱煡
+                                else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.RegionID}/app/thing/event/appHomeRefresh/up") {
+                                    MainPage.Log("浣忓畢鏁版嵁鍒锋柊閫氱煡");
+                                    new HttpServerRequest().GetHomePager();
+                                }
+                                //appRoomRefresh锛氭埧闂存暟鎹埛鏂伴�氱煡
+                                else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.RegionID}/app/thing/event/appRoomRefresh/up"){
+                                    MainPage.Log("鎴块棿鏁版嵁鍒锋柊閫氱煡");
+                                    var roomResult = new HttpServerRequest().GetRoomList();
+                                    if (roomResult.Code == StateCode.SUCCESS)
+                                    {
+                                        MainPage.Log($"璇诲彇鎴块棿淇℃伅鎴愬姛");
+                                        var revData = Newtonsoft.Json.JsonConvert.DeserializeObject<SpatialApiPack>(roomResult.Data.ToString());
+                                        if (revData == null)
+                                        {
+                                            revData = new SpatialApiPack();
+                                        }
+                                        {
+                                            SpatialInfo.CurrentSpatial.UpdateSpatialList(revData.list);
+                                        }
+                                    }
+                                    else
+                                    {
+                                        MainPage.Log($"璇诲彇鎴块棿鏁版嵁澶辫触:Code:{roomResult.Code}; msg:{roomResult.message}");
+                                    }
+                                }
+                                //appDeviceRefresh锛氳澶囨暟鎹埛鏂伴�氱煡
+                                else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.RegionID}/app/thing/event/appDeviceRefresh/up") {
+                                    MainPage.Log("璁惧鏁版嵁鍒锋柊閫氱煡");
+                                    var deviceResult = new HttpServerRequest().GetDeviceList();
+                                    if (deviceResult.Code == StateCode.SUCCESS)
+                                    {
+                                        MainPage.Log($"璇诲彇璁惧淇℃伅鎴愬姛");
+                                        var deviceList = Newtonsoft.Json.JsonConvert.DeserializeObject<DevcieApiPack>(deviceResult.Data.ToString());
+                                        if (deviceList == null)
+                                        {
+                                            deviceList = new DevcieApiPack();
+                                        }
+                                        string delFile = "";
+                                        if (FunctionList.List.GetDeviceFunctionList().Count > 0)
+                                        {
+                                            for (int i = 0; i < FunctionList.List.GetDeviceFunctionList().Count;)
+                                            {
+                                                var localFunction = FunctionList.List.GetDeviceFunctionList()[i];
+                                                if (localFunction.Spk_Prefix == FunctionCategory.Music || string.IsNullOrEmpty(localFunction.Spk_Prefix))
+                                                {
+                                                    i++;
+                                                    continue;
+                                                }
+                                                var newFunction = deviceList.list.Find((obj) => obj.deviceId == localFunction.deviceId);
+
+                                                if (delFile == localFunction.savePath)
+                                                {
+                                                    i++;
+                                                    continue;
+                                                }
+                                                delFile = localFunction.savePath;
+                                                FunctionList.List.DeleteFunction(localFunction);
+                                            }
+                                        }
+                                        //澶勭悊鍓╀笅鐨勬柊澧炲姛鑳�
+                                        foreach (var newFunction in deviceList.list)
+                                        {
+                                            newFunction.SaveFunctionFile();
+                                            FunctionList.List.IniFunctionList(newFunction.savePath);
+                                        }
+                                    }
+                                    else
+                                    {
+                                        MainPage.Log($"璇诲彇浜戠璁惧鏁版嵁澶辫触:Code:{deviceResult.Code};  Msg:{deviceResult.message}");
+                                    }
+                                }
+                                #endregion
                                 //A缃戝叧璁惧鐘舵��-鍖呭惈娑傞甫璁惧
                                 else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.RegionID}/app/thing/property/send")
                                 {
@@ -322,7 +424,7 @@
                                 else
                                 {
                                     //SetGatewayOnlineResetCheck();
-                                    var bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, mqttEncryptKey);
+                                    //var bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, mqttEncryptKey);
                                     //bus鏁版嵁瑙f瀽
                                     var packet = new Packet();
 
diff --git a/HDL_ON/DAL/Server/HttpServerRequest.cs b/HDL_ON/DAL/Server/HttpServerRequest.cs
index 55f94be..7dd8e14 100644
--- a/HDL_ON/DAL/Server/HttpServerRequest.cs
+++ b/HDL_ON/DAL/Server/HttpServerRequest.cs
@@ -1781,6 +1781,41 @@
             return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_GetDevcieList, requestJson);
         }
         /// <summary>
+        /// 鑾峰彇鎸囧畾绗笁鏂瑰搧鐗岀殑缁戝畾杩囩殑璁惧鍒楄〃
+        /// </summary>
+        /// <param name="productPlatform"></param>
+        /// <param name="productBrand"></param>
+        /// <returns></returns>
+        public ResponsePackNew Get3TyBrandBindDeviceList(string productPlatform, string productBrand)
+        {
+            Dictionary<string, object> d = new Dictionary<string, object>();
+            d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.RegionID);
+            d.Add("productPlatform", productPlatform);
+            d.Add("productBrand", productBrand);
+
+            var requestJson = HttpUtil.GetSignRequestJson(d);
+            return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_GetDevcieList, requestJson);
+        }
+        /// <summary>
+        /// 鑾峰彇鎸囧畾绗笁鏂瑰搧鐗岀殑璁惧鍒楄〃
+        /// </summary>
+        /// <param name="productPlatform"></param>
+        /// <param name="productBrand"></param>
+        /// <returns></returns>
+        public ResponsePackNew Get3TyBrandDeviceList(string productPlatform,string productBrand)
+        {
+            Dictionary<string, object> d = new Dictionary<string, object>();
+            d.Add("categoryType", 1);
+            d.Add("productPlatform", productPlatform);
+            d.Add("productBrand", productBrand);
+
+            var requestJson = HttpUtil.GetSignRequestJson(d);
+            return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_Get3tyBrandDevcieList, requestJson);
+        }
+
+
+
+        /// <summary>
         /// 鑾峰彇璁惧璇︽儏鍒楄〃
         /// </summary>
         /// <returns></returns>
diff --git a/HDL_ON/DAL/Server/NewAPI.cs b/HDL_ON/DAL/Server/NewAPI.cs
index 86fce77..e016870 100644
--- a/HDL_ON/DAL/Server/NewAPI.cs
+++ b/HDL_ON/DAL/Server/NewAPI.cs
@@ -322,6 +322,10 @@
         /// </summary>
         public const string Api_Post_GetDevcieList = "/home-wisdom/app/device/list";
         /// <summary>
+        /// 鑾峰彇绗笁鏂瑰搧鐗岃澶囧垪琛�
+        /// </summary>
+        public const string Api_Post_Get3tyBrandDevcieList = "/home-wisdom/app/product/list";
+        /// <summary>
         /// 鑾峰彇璁惧璇︽儏
         /// </summary>
         public const string Api_Post_GetDevcieInfoList = "/home-wisdom/app/device/info";
diff --git a/HDL_ON/Entity/Function/Function.cs b/HDL_ON/Entity/Function/Function.cs
index 0216ac5..0997ffa 100644
--- a/HDL_ON/Entity/Function/Function.cs
+++ b/HDL_ON/Entity/Function/Function.cs
@@ -65,6 +65,22 @@
 
         #region 浼樺寲鍖哄煙 2021-02-25
         /// <summary>
+        /// 鏇存柊鐨勬渶鍚庢椂闂�
+        /// </summary>
+        public string time_stamp = "1615261019796";
+
+        public string GeteTime()
+        {
+            try
+            {
+                DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); // 褰撳湴鏃跺尯
+                return startTime.AddMilliseconds(Convert.ToDouble(time_stamp)).ToString("s");
+            }
+            catch {
+                return DateTime.MinValue.ToString("s");
+            }
+        }
+        /// <summary>
         /// 鑾峰彇灞炴�у垪琛�
         /// </summary>
         /// <returns></returns>
@@ -124,8 +140,16 @@
             return true;
         }
 
-
-
+        /// <summary>
+        /// icon鏂囦欢鍚嶇О
+        /// </summary>
+        public string IconName
+        {
+            get
+            {
+                return spk.Replace(".","");
+            }
+        }
 
         /// <summary>
         /// 涓婁竴娆℃墦寮�鐨勪寒搴�
@@ -512,9 +536,7 @@
         {
             var sendDataObj = new AlinkFunctionStatusObj();
             sendDataObj.id = Control.Ins.msg_id.ToString();
-            sendDataObj.time_stamp = Control.Ins.Get_TimeStamp();
-
-
+            sendDataObj.time_stamp = Utlis.GetTimestamp();
             var acd = new AlinkStatusData();
             acd.sid = sid;
             foreach (var dic in commandDictionary)
@@ -524,9 +546,7 @@
                 aca.value = dic.Value;
                 acd.status.Add(aca);
             }
-
             sendDataObj.objects.Add(acd);
-
             return sendDataObj;
         }
         /// <summary>
@@ -701,9 +721,22 @@
         /// </summary>
         public const string FanSpeed = "fan";
         /// <summary>
+        /// 鎵嬪姩椋庡悜
+        /// </summary>
+        public const string FanManual = "fan_manual";
+        /// <summary>
+        /// 鑷姩椋庡悜
+        /// </summary>
+        public const string FanAuto = "fan_auto";
+
+        /// <summary>
         /// 璁剧疆娓╁害
         /// </summary>
         public const string SetTemp = "set_temp";
+        /// <summary>
+        /// 娓╁害鍔犲噺
+        /// </summary>
+        public const string SetTempStep = "set_temp_step";
         /// <summary>
         /// 娓╁害妯″紡
         /// 绌鸿皟銆佸湴鐑�//app鑷姞
@@ -802,6 +835,10 @@
         /// 鎵撳紑鐧昏(椋庢墖)
         /// </summary>
         public const string OpenLevel = "openLevel";
+        /// <summary>
+        /// 绾㈠鎸夐敭
+        /// </summary>
+        public const string Key = "key";
 
 
         #region tuya
@@ -988,9 +1025,13 @@
         /// </summary>
         public const string ElectricTV = "electrical.tv";
         /// <summary>
+        /// 绾㈠銆佺數瑙�
+        /// </summary>
+        public const string TvIr = "ir.tv";
+        /// <summary>
         /// 瀹剁數銆侀鎵�
         /// </summary>
-        public const string ElectricFan = "electrical.fan";
+        public const string ElectricFan = "electrical.fan";
         /// <summary>
         /// 瀹剁數銆佹秱楦︾┖姘斿噣鍖栧櫒
         /// </summary>
@@ -998,7 +1039,7 @@
         /// <summary>
         /// 瀹剁數銆佹秱楦︾數椋庢墖
         /// </summary>
-        public const string ElectricTuyaFan = "electrical.tyqborgovyzytytz";
+        public const string ElectricTuyaFan = "electrical.tyqborgovyzytytz";
         /// <summary>
         /// 瀹剁數銆佹秱楦︽壂鍦版満鍣ㄤ汉
         /// </summary>
@@ -1016,9 +1057,9 @@
         /// </summary>
         public const string IrModule = "ir.module";
         /// <summary>
-        /// 绾㈠鐢佃
+        /// 绾㈠閬ユ帶鍣�
         /// </summary>
-        public const string TvIr = "ir.tv"; 
+        public const string IrLearn = "ir.learn";
 
 
         /// <summary>
@@ -1100,8 +1141,12 @@
         /// 瀹剁數
         /// </summary>
         public const string Electric = "electrical";
+        /// <summary>
+        /// 绾㈠璁惧
+        /// </summary>
+        public const string IR = "ir";
 
-        //Music = 0x09,
+
 
 
     }
diff --git a/HDL_ON/Entity/FunctionList.cs b/HDL_ON/Entity/FunctionList.cs
index 8d83075..0d05bdb 100644
--- a/HDL_ON/Entity/FunctionList.cs
+++ b/HDL_ON/Entity/FunctionList.cs
@@ -41,7 +41,7 @@
         /// <returns></returns>
         public List<Function> GetAcList()
         {
-            return Functions.FindAll((obj) => obj.spk == SPK.AcStandard);
+            return Functions.FindAll((obj) => obj.spk == SPK.AcStandard || obj.spk == SPK.AcIr);
         }
 
         /// <summary>
@@ -97,11 +97,21 @@
 
             return Functions.FindAll((obj) => obj.spk == SPK.ElectricFan || obj.spk == SPK.ElectricTuyaFan
                 || obj.spk == SPK.ElectricSocket
+                || obj.spk == SPK.IrLearn
+                || obj.spk == SPK.TvIr
                 || obj.spk == SPK.ElectricTV
                 || obj.spk == SPK.ElectricTuyaAirCleaner
                 || obj.spk == SPK.ElectricTuyaWeepRobot
                 || obj.spk == SPK.ElectricTuyaWaterValve
                 || obj.spk == SPK.ClothesHanger);
+        }
+        /// <summary>
+        /// 閬ユ帶鍣ㄥ垪琛�
+        /// </summary>
+        /// <returns></returns>
+        public List<Function> GetIrLearinList()
+        {
+            return Functions.FindAll((obj) => obj.spk == SPK.IrLearn);
         }
         /// <summary>
         /// 椋庢墖鍒楄〃
@@ -115,7 +125,7 @@
         /// </summary>
         public List<Function> GetTVList()
         {
-            return Functions.FindAll((obj) => obj.spk == SPK.ElectricTV);
+            return Functions.FindAll((obj) => obj.spk == SPK.ElectricTV || obj.spk == SPK.TvIr);
         }
         /// <summary>
         /// 瀹剁數鎻掑骇鍒楄〃
@@ -191,7 +201,11 @@
         /// 鍔犺浇鍔熻兘鍒楄〃
         /// </summary>
         /// <param name="filePath"></param>
-        public void IniFunctionList(string filePath)
+        /// <param name="checkRepeat">
+        /// <para>鑰冭檻鍒版�ц兘闂杩藉姞姝ゅ彉閲�,鏄惁妫�娴嬮噸澶�,鍙function鏈夋晥</para>
+        /// <para>true:褰撻噸澶嶅瓨鍦ㄦ椂,鏇挎崲鎺�</para>
+        /// <para>false:鐩存帴鏃犳潯浠舵坊鍔�</para></param>
+        public void IniFunctionList(string filePath, bool checkRepeat = false)
         {
             // todo 澧炲姞璁惧锛屽鍔犲姛鑳借繘鍔熻兘鍒楄〃
             if (filePath.StartsWith("FunctionData_"))
@@ -204,10 +218,21 @@
                     FileUtlis.Files.DeleteFile(filePath);
                     return;
                 }
-
-
+                if (checkRepeat == true)
+                {
+                    //妫�娴嬮噸澶�
+                    for (int i = 0; i < Functions.Count; i++)
+                    {
+                        if (Functions[i].deviceId == tempFunction.deviceId)
+                        {
+                            //鍏堢Щ闄ゆ帀鍐嶅姞
+                            Functions.RemoveAt(i);
+                            Functions.Add(tempFunction);
+                            return;
+                        }
+                    }
+                }
                 Functions.Add(tempFunction);
-
             }
             if (filePath.StartsWith("SceneData_"))
             {
diff --git a/HDL_ON/Entity/Integratedbrand/IntegratedBrand.cs b/HDL_ON/Entity/Integratedbrand/IntegratedBrand.cs
index 70be6aa..ca7519b 100644
--- a/HDL_ON/Entity/Integratedbrand/IntegratedBrand.cs
+++ b/HDL_ON/Entity/Integratedbrand/IntegratedBrand.cs
@@ -25,9 +25,82 @@
         /// 骞冲彴鏍囪瘑
         /// </summary>
         public string productPlatform;
-
-
-
-
     }
+
+    /// <summary>
+    /// 绗笁鏂硅澶囦俊鎭�
+    /// </summary>
+    public class IntegratedBrandDevice
+    {
+
+        /// <summary>
+        /// 浜у搧鍞竴鏍囪瘑
+        /// </summary>
+        public string productId;
+
+        /// <summary>
+        /// 浜у搧鍚嶇О
+        /// </summary>
+        public string productName;
+
+        /// <summary>
+        /// 浜у搧鍘傚晢
+        /// </summary>
+        public string productSupplier;
+
+        /// <summary>
+        /// 浜у搧鍝佺墝锛堝搧鐗屾爣璇嗭級
+        /// </summary>
+        public string productBrand;
+
+        /// <summary>
+        /// 浜у搧绫诲瀷
+        /// </summary>
+        public string productType;
+
+        /// <summary>
+        /// 绗簩鍝佺被鍚�
+        /// </summary>
+        public string categorySecondName;
+
+        /// <summary>
+        /// 绗簩鍝佺被code
+        /// </summary>
+        public string categorySecondCode;
+
+        /// <summary>
+        /// 绗竴鍝佺被code
+        /// </summary>
+        public string categoryFirstCode;
+
+        /// <summary>
+        /// 绗竴鍝佺被鍚嶇О
+        /// </summary>
+        public string categoryFirstName;
+        /// <summary>
+        /// 浜у搧鍨嬪彿
+        /// </summary>
+        public string productVersion;
+
+        /// <summary>
+        /// 浜у搧骞冲彴锛堝钩鍙版爣璇嗭級
+        /// </summary>
+        public string productPlatform;
+
+        /// <summary>
+        /// 浜у搧鍥剧墖
+        /// </summary>
+        public string productPic;
+
+        /// <summary>
+        /// 鍔熻兘绫诲瀷Key
+        /// </summary>
+        public string spk;
+
+        /// <summary>
+        /// 璁惧缁戝畾鏂瑰紡 WIFI銆丵RSCAN銆乑IG_BEE銆丒THERNET
+        /// </summary>
+        public string bindType;
+    }
+
 }
diff --git a/HDL_ON/HDL_ON.projitems b/HDL_ON/HDL_ON.projitems
index 7518066..b64ad47 100644
--- a/HDL_ON/HDL_ON.projitems
+++ b/HDL_ON/HDL_ON.projitems
@@ -26,6 +26,8 @@
     <Compile Include="$(MSBuildThisFileDirectory)Entity\Function\Function.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Public\PublicAssmebly.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\CSS\CSS.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Stan\Logic\HdlBluetoothAndroidLogic.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Stan\Logic\HdlBluetoothIOSLogic.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\UserPageBLL.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\UserPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\2-Classification\ClassificationPage.cs" />
@@ -357,17 +359,28 @@
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Electrical\ClothesHangerSetTimePage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\ArmSensor\ArmSensorHistroyPaging.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\AC\AcControlPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Stan\Logic\HdlCloudReceiveLogic.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Stan\Logic\HdlWifiLogic.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Stan\Controls\CompoundControls\ProgressRowBar.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\AddMiniRemoteControlDirection3Page.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\AddMiniRemoteControlDirection1Page.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\AddMiniRemoteControlDirection2Page.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\AddMiniRemoteControlDirection4Page.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\AddThirdPartyDeviceMenuListPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\Matching.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\View\PirNameView.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddFunction\BrandListPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Electrical\IrLearnPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\EditControl.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\View\FrameLayout50.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\View\PirView.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\View\ControlView.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddFunction\AddDevciePage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddFunction\DeviceListPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\View\MainView.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\View\HeigthChangeView.cs" />
   </ItemGroup>
   <ItemGroup>
-    <Folder Include="$(MSBuildThisFileDirectory)UI\" />
     <Folder Include="$(MSBuildThisFileDirectory)DAL\" />
     <Folder Include="$(MSBuildThisFileDirectory)DAL\Mqtt\" />
     <Folder Include="$(MSBuildThisFileDirectory)Common\" />
@@ -405,4 +418,4 @@
     <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\" />
     <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\View\" />
   </ItemGroup>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/HDL_ON/UI/.DS_Store b/HDL_ON/UI/.DS_Store
index bdfddd3..aa35eb6 100644
--- a/HDL_ON/UI/.DS_Store
+++ b/HDL_ON/UI/.DS_Store
Binary files differ
diff --git a/HDL_ON/UI/MainPage.cs b/HDL_ON/UI/MainPage.cs
index 7ee9323..1850d6b 100644
--- a/HDL_ON/UI/MainPage.cs
+++ b/HDL_ON/UI/MainPage.cs
@@ -26,7 +26,7 @@
         /// <summary>
         /// 鐗堟湰鍙�
         /// </summary>
-        public static string VersionString = "1.1.0305";
+        public static string VersionString = "1.1.0310";
         ///// <summary>
         ///// 瀹㈡埛绔被鍨�
         ///// </summary>
@@ -53,6 +53,14 @@
         /// 鏄惁杩涘叆鍚庡彴
         /// </summary>
         public static bool IsEnterBackground = false;
+        /// <summary>
+        /// 褰撳墠鍒嗛〉绱㈠紩
+        /// 0:鏀惰棌
+        /// 1:鍒嗙被
+        /// 2:鏅鸿兘
+        /// 3:涓汉
+        /// </summary>
+        public static int CurPageIndex = 9999;
 
         ///// <summary>
         ///// 鍏徃浠g爜
diff --git a/HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs b/HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs
index 564ed4d..f8dae98 100644
--- a/HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs
+++ b/HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs
@@ -75,6 +75,7 @@
                         MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                         break;
                     case SPK.ElectricTV:
+                    case SPK.TvIr:
                         var tvView = new TVPage(function);
                         MainPage.BasePageView.AddChidren(tvView);
                         tvView.LoadPage(btnCollectionIcon, btnName, btnFromFloor);
@@ -138,6 +139,10 @@
                         var acPage = new AcControlPage();
                         acPage.AddForm(function, btnCollectionIcon, btnName, btnFromFloor);
                         break;
+                    case SPK.IrLearn:
+                        var irLearinPage = new IrLearnPage();
+                        irLearinPage.AddForm(function, btnCollectionIcon, btnName, btnFromFloor);
+                        break;
                 }
             };
             return eventHandler;
diff --git a/HDL_ON/UI/UI0-Public/TopViewDiv.cs b/HDL_ON/UI/UI0-Public/TopViewDiv.cs
index 556ac0f..080a209 100644
--- a/HDL_ON/UI/UI0-Public/TopViewDiv.cs
+++ b/HDL_ON/UI/UI0-Public/TopViewDiv.cs
@@ -242,7 +242,33 @@
 
             btnAddIcon.MouseUpEventHandler += (sender, e) =>
             {
-                LoadEvent_AddEvent(type, callBack);
+                if (type == "floors")
+                {
+                    Action<string> callBackAction = (floorName) =>
+                    {
+                        callBack("add", floorName);
+                    };
+                    string newFloorName = "1F";
+                    for (int i = 0; i < SpatialInfo.CurrentSpatial.FloorList.Count + 1;)
+                    {
+                        newFloorName = ++i + "F";
+                        if (null == SpatialInfo.CurrentSpatial.FloorList.Find((obj) => obj.roomName == newFloorName))
+                        {
+                            break;
+                        }
+                    }
+                    var fs = new List<string>();
+                    foreach (var f in SpatialInfo.CurrentSpatial.FloorList)
+                    {
+                        fs.Add(f.roomName);
+                    }
+                    new PublicAssmebly().LoadDialog_EditParater(StringId.AddFloors, newFloorName, callBackAction, StringId.FloorNameCannotBeEmpty,
+                        StringId.AddFloorFailed_FloorAlreadyExist, fs);
+                }
+                else
+                {
+                    callBack("", "");
+                }
             };
         }
 
diff --git a/HDL_ON/UI/UI0-Public/TopViewDivBLL.cs b/HDL_ON/UI/UI0-Public/TopViewDivBLL.cs
index 4620b7a..00106dd 100644
--- a/HDL_ON/UI/UI0-Public/TopViewDivBLL.cs
+++ b/HDL_ON/UI/UI0-Public/TopViewDivBLL.cs
@@ -36,38 +36,11 @@
         /// <param name="type">娣诲姞鎸夐挳鐨勫姛鑳界被鍨�</param>
         void LoadEvent_AddEvent(string type,Action <string,string> callBack)
         {
-            switch (type)
-            {
-                case "floors":
-                    Action<string> callBackAction = (floorName) =>
-                    {
-                        callBack("add", floorName);
-                    };
-                    string newFloorName = "1F";
-                    for (int i = 0; i < SpatialInfo.CurrentSpatial.FloorList.Count + 1; )
-                    {
-                        newFloorName = ++i + "F";
-                        if (null == SpatialInfo.CurrentSpatial.FloorList.Find((obj)=>obj.roomName ==  newFloorName))
-                        {
-                            break;
-                        }
-                    }
-                    var fs = new List<string>();
-                    foreach(var f in SpatialInfo.CurrentSpatial.FloorList)
-                    {
-                        fs.Add(f.roomName);
-                    }
-                    new PublicAssmebly().LoadDialog_EditParater(StringId.AddFloors,newFloorName , callBackAction,StringId.FloorNameCannotBeEmpty,
-                        StringId.AddFloorFailed_FloorAlreadyExist,fs);
-                    break;
-                case "rooms":
-                    callBack("", "");
-                    break;
-                case "Member":
-                    callBack("","");
-                    break;
+            //switch (type)
+            //{
                 
-            }
+                
+            //}
         }
 
     }
diff --git a/HDL_ON/UI/UI0-Stan/Controls/BaseControl/TextInputBase.cs b/HDL_ON/UI/UI0-Stan/Controls/BaseControl/TextInputBase.cs
index 29d8059..b377db9 100644
--- a/HDL_ON/UI/UI0-Stan/Controls/BaseControl/TextInputBase.cs
+++ b/HDL_ON/UI/UI0-Stan/Controls/BaseControl/TextInputBase.cs
@@ -7,7 +7,7 @@
 namespace HDL_ON.Stan
 {
     /// <summary>
-    /// 杈撳叆妗嗘帶浠剁殑鏈�鍒濆師鍨�(涓嶅缓璁慨鏀瑰拰鐩存帴浣跨敤):鏍囧噯瀛椾綋棰滆壊锛屾枃瀛楀悜宸﹂潬榻�,14鍙峰瓧
+    /// 杈撳叆妗嗘帶浠剁殑鏈�鍒濆師鍨�(涓嶅缓璁慨鏀瑰拰鐩存帴浣跨敤):鏍囧噯瀛椾綋棰滆壊(0xFF798394)锛屾枃瀛楀悜宸﹂潬榻�,14鍙峰瓧
     /// </summary>
     public class TextInputBase : EditText
     {
diff --git a/HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomClickButton.cs b/HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomClickButton.cs
index d1ec836..1476dd3 100644
--- a/HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomClickButton.cs
+++ b/HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomClickButton.cs
@@ -22,7 +22,7 @@
         /// <param name="i_width">鏈変簺鐣岄潰寰堢壒娈�,涓嶇粺涓�鎸夐敭瀹藉害,鎵�浠ラ鐣欐鍙傛暟</param>
         public BottomClickButton(int i_width = 188)
         {
-            this.Yaxis = Application.GetRealHeight(539);
+            this.Yaxis = Application.GetRealHeight(543);
 
             //杩欎釜鏄竴鑸綅缃�
             this.Y = this.Yaxis;
@@ -33,6 +33,7 @@
             this.Gravity = Gravity.CenterHorizontal;
             this.Radius = (uint)Application.GetRealHeight(44) / 2;
             this.TextSize = CSS_FontSize.SubheadingFontSize;
+            this.BackgroundColor = CSS_Color.MainColor;
             this.IsBold = true;
         }
     }
diff --git a/HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomItemSelectControl.cs b/HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomItemSelectControl.cs
index aaff1c0..ec3f199 100644
--- a/HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomItemSelectControl.cs
+++ b/HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomItemSelectControl.cs
@@ -100,7 +100,7 @@
         /// 娣诲姞鑿滃崟琛�
         /// </summary>
         /// <param name="i_listText">鏄剧ず鐨勫垪琛ㄦ枃瀛�</param>
-        /// <param name="i_listSelect">榛樿閫夋嫨</param>
+        /// <param name="i_listSelect">榛樿閫夋嫨(璇峰嬁璁剧疆涓簄ull)</param>
         public void AddRowMenu(List<string> i_listText, List<int> i_listSelect)
         {
             foreach (var index in i_listSelect)
diff --git a/HDL_ON/UI/UI0-Stan/Controls/CompoundControls/ProgressRowBar.cs b/HDL_ON/UI/UI0-Stan/Controls/CompoundControls/ProgressRowBar.cs
new file mode 100644
index 0000000..f110e78
--- /dev/null
+++ b/HDL_ON/UI/UI0-Stan/Controls/CompoundControls/ProgressRowBar.cs
@@ -0,0 +1,251 @@
+锘縰sing HDL_ON.Stan;
+using Shared;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace HDL_ON.UI
+{
+    /// <summary>
+    /// 琛屾潯绫诲瀷鐨勮繘搴︽潯鎺т欢
+    /// </summary>
+    public class ProgressRowBar : FrameLayout
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 杩涘害鏉¤兘鍚﹀線鍥炶蛋(榛樿涓嶅彲浠�)
+        /// </summary>
+        public bool ProgressBarGoback = false;
+        /// <summary>
+        /// 浼氱Щ鍔ㄧ殑杩涘害鏉�
+        /// </summary>
+        private FrameLayout btnProgressBar = null;
+        /// <summary>
+        /// 鏄剧ず鏁板�肩櫨鍒嗘瘮鐨勬帶浠�
+        /// </summary>
+        private NormalViewControl btnProgressTextView = null;
+        /// <summary>
+        /// 绾跨▼鏄惁杩愯
+        /// </summary>
+        private bool isThreadAction = false;
+        /// <summary>
+        /// 妯″紡鍖哄垎
+        /// </summary>
+        private int m_ModeDiv = -1;
+
+        /// <summary>
+        /// 杩涘害鏉℃槸鍚﹀彲瑙�
+        /// </summary>
+        public new bool Visible
+        {
+            get { return base.Visible; }
+            set
+            {
+                if (this.btnProgressTextView != null)
+                {
+                    this.btnProgressTextView.Visible = value;
+                }
+                base.Visible = value;
+            }
+        }
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 琛屾潯绫诲瀷鐨勮繘搴︽潯鎺т欢
+        /// </summary>
+        /// <param name="width">
+        /// <para>妯″紡1:浼氬姩鐨勯偅涓繘搴︽潯鐨勫搴�(闈炵湡瀹炲��)</para>
+        /// <para>妯″紡2:杩涘害鏉″湪鎸佺画鏃犻檺鐨勬潵鍥炵Щ鍔ㄧ殑鍖哄煙瀹藉害(闈炵湡瀹炲��)</para>
+        /// </param>
+        /// <param name="height">
+        /// <para>妯″紡1:浼氬姩鐨勯偅涓繘搴︽潯鐨勯珮搴�(闈炵湡瀹炲��)</para>
+        /// <para>妯″紡2:杩涘害鏉″湪鎸佺画鏃犻檺鐨勬潵鍥炵Щ鍔ㄧ殑楂樺害(闈炵湡瀹炲��)</para>
+        /// </param>
+        public ProgressRowBar(int width, int height)
+        {
+            this.Height = Application.GetRealHeight(height);
+            this.Width = Application.GetRealWidth(width);
+            this.BackgroundColor = UI.CSS.CSS_Color.BackgroundColor;
+            this.Radius = (uint)Application.GetRealHeight(height) / 2;
+        }
+
+        #endregion
+
+        #region 鈻� 妯″紡1______________________________
+
+        /// <summary>
+        /// 妯″紡1  璇ユā寮忎负锛氭墜鍔ㄥ~鍐欒繘搴﹀��
+        /// </summary>
+        /// <param name="showText">
+        /// <para>鏄惁鍦ㄨ繘搴︽潯涓婃柟鏄剧ず鏁板�肩櫨鍒嗘瘮</para>
+        /// <para>璇风‘淇濇帶浠剁殑涓婃柟鏈夎冻澶熺殑鍖哄煙(娉�:璇蜂笉瑕佹墿澶ф鎺т欢鐨勯珮搴�)</para>
+        /// </param>
+        public void StartMode1(bool showText = false)
+        {
+            if (m_ModeDiv != -1) { return; }
+            this.m_ModeDiv = 1;
+
+            //浼氱Щ鍔ㄧ殑杩涘害鏉�
+            this.btnProgressBar = new FrameLayout();
+            btnProgressBar.Width = 0;
+            btnProgressBar.Height = this.Height;
+            btnProgressBar.BackgroundColor = UI.CSS.CSS_Color.MainColor;
+            btnProgressBar.Radius = (uint)this.Height / 2;
+            this.AddChidren(btnProgressBar);
+
+            if (showText == true)
+            {
+                //杩涘害鍊兼枃鏈�
+                this.btnProgressTextView = new NormalViewControl(32, 22, true);
+                btnProgressTextView.Y = this.Y - Application.GetRealHeight(22 + 10);//10:瀹冧笌杩涘害鏉$殑闂磋窛
+                btnProgressTextView.X = this.X - Application.GetRealWidth(32) / 2;
+                btnProgressTextView.UnSelectedImagePath = "Public/ProgressMsg.png";
+                btnProgressTextView.TextSize = CSS.CSS_FontSize.PromptFontSize_SecondaryLevel;
+                btnProgressTextView.TextColor= CSS.CSS_Color.FirstLevelTitleColor;
+                btnProgressTextView.TextAlignment = TextAlignment.Center;
+                btnProgressTextView.Text = "0%";
+                this.Parent.AddChidren(btnProgressTextView);
+            }
+        }
+
+        /// <summary>
+        /// 閲嶇疆杩涘害鏉�(鍙妯″紡1鏈夋晥)
+        /// </summary>
+        public void ResetProgressBar()
+        {
+            if (this.m_ModeDiv == 1 && this.btnProgressBar != null)
+            {
+                this.btnProgressBar.Width = 0;
+            }
+        }
+
+        /// <summary>
+        /// 璁剧疆杩涘害鍊�
+        /// </summary>
+        /// <param name="value">姝ゅ�间负鐧惧垎姣斿��(涔熷氨鏄皬浜庢垨鑰呯瓑浜�1鐨�)</param>
+        public void SetValue(decimal value)
+        {
+            this.SetValueEx(value);
+        }
+
+        /// <summary>
+        /// 璁剧疆杩涘害鍊�
+        /// </summary>
+        /// <param name="value">杩涘害鍊�,鍐呴儴浼氶櫎浠axValue</param>
+        /// <param name="maxValue">鏈�澶у��</param>
+        public void SetValue(decimal value, decimal maxValue)
+        {
+            decimal result = value / maxValue;
+            this.SetValueEx(result);
+        }
+
+        /// <summary>
+        /// 璁剧疆杩涘害鍊�
+        /// </summary>
+        /// <param name="value"></param>
+        private void SetValueEx(decimal value)
+        {
+            if (btnProgressBar == null || this.m_ModeDiv != 1)
+            {
+                return;
+            }
+            if (value > 1) { value = 1; }
+
+            HdlThreadLogic.Current.RunMain(() =>
+            {
+                int width = (int)(value * this.Width);
+                if (this.ProgressBarGoback == false && btnProgressBar.Width >= width)
+                {
+                    //涓嶈兘璁╄繘搴︽潯寰�鍥炶蛋
+                    return;
+                }
+                btnProgressBar.Width = width;
+                if (this.btnProgressTextView != null)
+                {
+                    //鏂囨湰鏄剧ず
+                    btnProgressTextView.Text = ((int)(value * 100)) + "%";
+                    //鏂囨湰鏄剧ず鐨勯偅涓浘鐗囨绉诲姩
+                    this.btnProgressTextView.X = this.X + btnProgressBar.Right - btnProgressTextView.Width / 2;
+                }
+            });
+        }
+
+        #endregion
+
+        #region 鈻� 妯″紡2______________________________
+
+        /// <summary>
+        /// 妯″紡2  璇ユā寮忎负锛氫笉鑳芥墜鍔ㄦ寚瀹氳繘搴﹀��,鐢卞唴閮ㄧ嚎绋嬪鐞�,杩涘害鏉″湪鎸佺画鏃犻檺鐨勬潵鍥炵Щ鍔�
+        /// </summary>
+        /// <param name="proWidth">鎸佺画鏃犻檺鐨勬潵鍥炵Щ鍔ㄧ殑杩涘害鏉$殑瀹藉害(闈炵湡瀹炲��)</param>
+        public void StartMode2(int proWidth = 100)
+        {
+            if (m_ModeDiv != -1) { return; }
+            this.m_ModeDiv = 2;
+
+            //浼氱Щ鍔ㄧ殑杩涘害鏉�
+            this.btnProgressBar = new FrameLayout();
+            btnProgressBar.Width = Application.GetRealWidth(proWidth);
+            btnProgressBar.Height = this.Height;
+            btnProgressBar.BackgroundColor = 0xfffb744a;
+            btnProgressBar.Radius = (uint)this.Height / 2;
+            this.AddChidren(btnProgressBar);
+
+            //寮�鍚ā寮�2鐨勭嚎绋�
+            this.StartMode2Thread();
+        }
+
+        /// <summary>
+        /// 閲嶆柊寮�鍚ā寮�2
+        /// </summary>
+        public void ReStartMode2()
+        {
+            //寮�鍚ā寮�2鐨勭嚎绋�
+            this.StartMode2Thread();
+        }
+
+        /// <summary>
+        /// 鏆傚仠妯″紡2
+        /// </summary>
+        public void StopMode2()
+        {
+            this.isThreadAction = false;
+        }
+
+        /// <summary>
+        /// 寮�鍚ā寮�2鐨勭嚎绋�
+        /// </summary>
+        private void StartMode2Thread()
+        {
+            if (this.isThreadAction == true)
+            {
+                return;
+            }
+            this.isThreadAction = true;
+            int moveLength = Application.GetRealWidth(30);
+            HdlThreadLogic.Current.RunThread(() =>
+            {
+                while (this.Parent != null && isThreadAction == true)
+                {
+                    HdlThreadLogic.Current.RunMain(() =>
+                    {
+                        if (this.btnProgressBar.X >= this.Width)
+                        {
+                            //瓒呭嚭鍙宠竟涔嬪悗,鍐嶆浠庡乏杈瑰惊鐜�
+                            this.btnProgressBar.X = -this.btnProgressBar.Width;
+                            return;
+                        }
+                        this.btnProgressBar.X += moveLength;
+                    }, ShowErrorMode.NO);
+                    System.Threading.Thread.Sleep(150);
+                }
+            });
+        }
+
+        #endregion
+    }
+}
diff --git a/HDL_ON/UI/UI0-Stan/Controls/MessageControls/ShowMsgControl.cs b/HDL_ON/UI/UI0-Stan/Controls/MessageControls/ShowMsgControl.cs
index 521bfb9..3081f6f 100644
--- a/HDL_ON/UI/UI0-Stan/Controls/MessageControls/ShowMsgControl.cs
+++ b/HDL_ON/UI/UI0-Stan/Controls/MessageControls/ShowMsgControl.cs
@@ -120,6 +120,13 @@
             btnTemp.Text = msgText.Replace("\r\n", string.Empty);
             //鑾峰彇杩欎釜鏄剧ず鐨勫唴瀹圭殑楂樺害
             int rowCount = btnTemp.GetRealRowCountByText();
+            //鍐嶇湅鐪嬪畠鍘熸潵鎸夋崲琛岀鍒嗗壊涓哄嚑琛�
+            var myArry = msgText.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
+            //鐪嬬湅璋佺殑琛屾暟澶�,灏辩敤璋佺殑
+            if (myArry.Length > rowCount)
+            {
+                rowCount = myArry.Length;
+            }
             int contentHeight = rowCount * Application.GetRealHeight(18);
             if (rowCount <= 2)
             {
diff --git a/HDL_ON/UI/UI0-Stan/Controls/NormalControls/NormalViewControl.cs b/HDL_ON/UI/UI0-Stan/Controls/NormalControls/NormalViewControl.cs
index 7ebb328..b16a121 100644
--- a/HDL_ON/UI/UI0-Stan/Controls/NormalControls/NormalViewControl.cs
+++ b/HDL_ON/UI/UI0-Stan/Controls/NormalControls/NormalViewControl.cs
@@ -11,7 +11,7 @@
     public class NormalViewControl : ButtonCtrBase
     {
         /// <summary>
-        /// 骞冲嚒鏅�氱殑鎺т欢,鍩烘湰鍙槸鐢ㄦ潵鏄剧ず(姝e父鏂囨湰瀛椾綋棰滆壊,鏂囧瓧鍚戝乏闈犻綈)
+        /// 骞冲嚒鏅�氱殑鎺т欢,鍩烘湰鍙槸鐢ㄦ潵鏄剧ず(姝e父鏂囨湰瀛椾綋棰滆壊(0xFF798394),鏂囧瓧鍚戝乏闈犻綈)
         /// </summary>
         /// <param name="i_Width">瀹藉害</param>
         /// <param name="i_Height">楂樺害</param>
diff --git a/HDL_ON/UI/UI0-Stan/Form/Base/CommonFormBase.cs b/HDL_ON/UI/UI0-Stan/Form/Base/CommonFormBase.cs
index 86e2b4e..814f7d7 100644
--- a/HDL_ON/UI/UI0-Stan/Form/Base/CommonFormBase.cs
+++ b/HDL_ON/UI/UI0-Stan/Form/Base/CommonFormBase.cs
@@ -53,19 +53,6 @@
             return;
         }
 
-        /// <summary>
-        /// 娣诲姞鎸囧畾鐢婚潰锛屽苟绉婚櫎褰撳墠鐢婚潰锛屽惎鍔ㄥ弬鏁扮敱鎸囧畾鐢婚潰鐨凷howForm鍑芥暟鎵�鎸囧畾
-        /// </summary>
-        /// <param name="form">鐩爣鐣岄潰</param>
-        /// <param name="parameter">鍚姩鍙傛暟锛氬弬鏁扮敱鎸囧畾鐢婚潰鐨凷howForm鍑芥暟鎵�鎸囧畾</param>
-        public void AddFormAndCloseNowForm(CommonFormBase form, params object[] parameter)
-        {
-            //绉婚櫎褰撳墠鐢婚潰
-            this.CloseForm();
-            //娣诲姞鐢婚潰
-            form.AddForm(parameter);
-        }
-
         #endregion
 
         #region 鈻� 鍏抽棴鐣岄潰___________________________
diff --git a/HDL_ON/UI/UI0-Stan/Form/Base/EditorCommonForm.cs b/HDL_ON/UI/UI0-Stan/Form/Base/EditorCommonForm.cs
index 0f0e916..31bdbe3 100644
--- a/HDL_ON/UI/UI0-Stan/Form/Base/EditorCommonForm.cs
+++ b/HDL_ON/UI/UI0-Stan/Form/Base/EditorCommonForm.cs
@@ -287,6 +287,117 @@
 
         #endregion
 
+        #region 鈻� 娣诲姞鍒楄〃娑堟伅鏄剧ず鎺т欢_______________
+
+        /// <summary>
+        /// 娣诲姞鍒楄〃娑堟伅鏄剧ず鎺т欢,杩斿洖鐨勬槸鏈�鍚庝竴涓帶浠剁殑搴曢儴鍧愭爣
+        /// </summary>
+        /// <param name="frameTable">妗屽竷瀹瑰櫒鎺т欢</param>
+        /// <param name="i_msg">鏄剧ず鐨勬秷鎭�(鎹㈣璇蜂娇鐢ㄣ�恵0}銆戣繘琛屽垎鍓�)</param>
+        /// <param name="i_fontSize">瀛椾綋澶у皬</param>
+        /// <param name="i_fontColor">瀛椾綋棰滆壊</param>
+        /// <param name="i_height">鎺т欢楂樺害(鐪熷疄鍊�)</param>
+        /// <param name="i_yy">Y杞村垵濮嬪潗鏍�(鐪熷疄鍊�)</param>
+        /// <param name="alignment">鏂囧瓧瀵归綈鏂瑰紡</param>
+        /// <param name="special">
+        /// <para>娉細闄や簡鏂板缓杩欎釜鍑芥暟鐨勫紑鍙戣�呬互澶栵紝閮戒笉寤鸿鎶婅繖涓�间笉璁剧疆涓簍rue</para>
+        /// <para>璇存槑锛氫互鏈�闀跨殑鎺т欢鐨刋杞翠负鍩哄噯,鎵�鏈夋帶浠剁殑X杞撮兘鍙樻垚涓�鑷�</para>
+        /// </param>
+        /// <returns></returns>
+        public int AddListMsgControls(FrameLayout frameTable, string i_msg, int i_fontSize, uint i_fontColor, int i_height,
+            int i_yy, TextAlignment alignment = TextAlignment.Center, bool special = false)
+        {
+            var listMsg = i_msg.Split(new string[] { "{0}" }, StringSplitOptions.RemoveEmptyEntries);
+            int defultWidth = this.bodyFrameLayout.Width - HdlControlResourse.XXLeft * 2;
+
+            var listContr = new List<NormalViewControl>();
+            int minXX = 10086;//鎺т欢闆嗗悎鏈�灏忕殑X杞�
+            foreach (var strMsg in listMsg)
+            {
+                //娑堟伅鏄剧ず鎺т欢
+                var btnMsg = new NormalViewControl(defultWidth, i_height, false);
+                btnMsg.Y = i_yy;
+                btnMsg.Gravity = Gravity.CenterHorizontal;
+                btnMsg.TextAlignment = alignment;
+                btnMsg.TextColor = i_fontColor;
+                btnMsg.TextSize = i_fontSize;
+                btnMsg.Text = strMsg;
+
+                //鐗规畩澶勭悊
+                if (special == true && alignment == TextAlignment.Center)
+                {
+                    //璁剧疆瀹冪殑鐪熷疄瀹藉害(瀵箂pecial鍙橀噺鏈夌敤)
+                    int realWidth = btnMsg.GetRealWidthByText();
+                    btnMsg.Width = realWidth > defultWidth ? defultWidth : realWidth;
+                }
+                frameTable.AddChidren(btnMsg);
+
+                //鏀堕泦鎺т欢
+                listContr.Add(btnMsg);
+
+                //璁板綍鎺т欢闆嗗悎X杞存渶灏忕殑鍊�
+                if (btnMsg.X < minXX) { minXX = btnMsg.X; }
+
+                //涓よ涔嬮棿鐨勯棿璺濅负4
+                i_yy = btnMsg.Bottom + Application.GetRealHeight(4);
+            }
+            //鐗规畩澶勭悊
+            if (special == true && alignment == TextAlignment.Center)
+            {
+                foreach (var contr in listContr)
+                {
+                    //浠ユ渶闀跨殑鎺т欢鐨刋杞翠负鍩哄噯,鎵�鏈夋帶浠剁殑X杞撮兘鍙樻垚涓�鑷�
+                    contr.X = minXX;
+                }
+            }
+
+            return i_yy - Application.GetRealHeight(4);
+        }
+
+        #endregion
+
+        #region 鈻� 娣诲姞搴曢儴鐐瑰嚮鎸夐挳鎺т欢_______________
+
+        /// <summary>
+        /// 娣诲姞搴曢儴鐐瑰嚮鎸夐挳鎺т欢
+        /// </summary>
+        /// <param name="i_text">鏄剧ず鐨勬枃鏈�</param>
+        /// <returns></returns>
+        public BottomClickButton AddBottomClickButton(string i_text)
+        {
+            //瀹瑰櫒鎺т欢
+            var frameBack = new FrameLayout();
+            frameBack.Height = Application.GetRealHeight(76);
+            frameBack.Gravity = Gravity.BottomCenter;
+            bodyFrameLayout.AddChidren(frameBack);
+            //鐒跺悗鍦ㄩ《閮ㄦ坊鍔犱竴涓湁杈规鐨勪笢瑗�
+            var frameLine = new FrameLayout();
+            frameLine.Height = Application.GetRealHeight(50);
+            frameLine.BorderWidth = 1;
+            frameLine.BackgroundColor = UI.CSS.CSS_Color.MainBackgroundColor;
+            frameLine.BorderColor = UI.CSS.CSS_Color.DividingLineColor;
+            frameLine.SetCornerWithSameRadius(Application.GetRealHeight(24), HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
+            frameBack.AddChidren(frameLine);
+            //鏈�鍚庡啀鏁翠釜鐧借壊鐨勪笢瑗块伄浣忓畠鐨勪笅閮�
+            var frameWite = new FrameLayout();
+            frameWite.Height = frameBack.Height - Application.GetRealHeight(24 - 10);//闇�瑕佽秴杩囧畠
+            frameWite.Width = frameBack.Width + Application.GetRealWidth(6);
+            frameWite.X = -Application.GetRealWidth(3);
+            frameWite.Y = Application.GetRealHeight(24);
+            frameWite.BackgroundColor = UI.CSS.CSS_Color.MainBackgroundColor;
+            frameBack.AddChidren(frameWite);
+
+            //鎸夐挳
+            var btnOk = new BottomClickButton(220);
+            btnOk.Gravity = Gravity.Center;
+            btnOk.Text = i_text;
+            frameBack.AddChidren(btnOk);
+
+            return btnOk;
+        }
+
+        #endregion
+
         #region 鈻� 涓�鑸殑鏂规硶_________________________
 
         /// <summary>
diff --git a/HDL_ON/UI/UI0-Stan/Logic/HdlBluetoothAndroidLogic.cs b/HDL_ON/UI/UI0-Stan/Logic/HdlBluetoothAndroidLogic.cs
new file mode 100644
index 0000000..b416038
--- /dev/null
+++ b/HDL_ON/UI/UI0-Stan/Logic/HdlBluetoothAndroidLogic.cs
@@ -0,0 +1,590 @@
+锘縰sing Shared;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace HDL_ON.Stan
+{
+#if __Android__
+    public class HdlBluetoothLogic
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 瀹夊崜钃濈墮鐨勯�昏緫
+        /// </summary>
+        private static HdlBluetoothLogic m_Current = null;
+        /// <summary>
+        /// 瀹夊崜钃濈墮鐨勯�昏緫
+        /// </summary>
+        public static HdlBluetoothLogic Current
+        {
+            get
+            {
+                if (m_Current == null)
+                {
+                    m_Current = new HdlBluetoothLogic();
+                }
+                return m_Current;
+            }
+        }
+
+        /// <summary>
+        /// 褰撳墠钃濈墮瀹㈡埛绔�
+        /// </summary>
+        private Blufi.Espressif.BlufiClient nowBlufiClient = null;
+        /// <summary>
+        /// 鎺ユ敹浜嬩欢
+        /// </summary>
+        private Action<string> ReceiveEvent = null;
+        /// <summary>
+        /// 鍙戦�佺姸鎬�(0:鍙戦�佸け璐� 1:鍙戦�佹垚鍔�)
+        /// </summary>
+        private int sendStatuValue = -1;
+
+        #endregion
+
+        #region 鈻� 钃濈墮鎵�闇�鍔熻兘妫�娴媉__________________
+
+        /// <summary>
+        /// 妫�娴嬫槸鍚﹁兘澶熸悳绱㈣摑鐗�(鍐呴儴浼氬脊鍑篗sg妗�,鍥犱负鍐呴儴闇�瑕佹娴嬬郴缁熸潈闄�,鎵�浠ュ弬鏁伴噰鐢ㄥ洖璋冪殑鏂瑰紡)
+        /// </summary>
+        /// <param name="resultEvent">妫�娴嬬粨鏋滀簨浠�</param>
+        public void CheckCanScanBluetooth(Action<bool> resultEvent)
+        {
+            var adapter = Android.Bluetooth.BluetoothAdapter.DefaultAdapter;
+            var scanner = adapter.BluetoothLeScanner;
+            if (adapter.IsEnabled == false || scanner == null)
+            {
+                HdlMessageLogic.Current.ShowMassage(ShowMsgType.Tip, Language.StringByID(StringId.PleaseTurnOnBluetooth));
+                resultEvent?.Invoke(false);
+                return;
+            }
+            //妫�娴嬫槸鍚︽墦寮�浜嗙郴缁熷姛鑳�
+            if (Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.M)
+            {
+                var locationManager = (Android.Locations.LocationManager)Application.Activity.GetSystemService(Android.Content.Context.LocationService);
+                if (locationManager == null)
+                {
+                    //浣嶇疆淇℃伅(GBS)涓嶅彲鐢�
+                    HdlMessageLogic.Current.ShowMassage(ShowMsgType.Tip, Language.StringByID(StringId.GbsIsNotAvailable));
+                    resultEvent?.Invoke(false);
+                    return;
+                }
+                if (locationManager.IsProviderEnabled("network") == false)
+                {
+                    HdlMessageLogic.Current.ShowMassage(ShowMsgType.Tip, Language.StringByID(StringId.NetworkIsNotAvailable));
+                    resultEvent?.Invoke(false);
+                    return;
+                }
+                if (locationManager.IsProviderEnabled("gps") == false)
+                {
+                    //浣嶇疆淇℃伅(GBS)涓嶅彲鐢�
+                    HdlMessageLogic.Current.ShowMassage(ShowMsgType.Tip, Language.StringByID(StringId.GbsIsNotAvailable));
+                    resultEvent?.Invoke(false);
+                    return;
+                }
+            }
+            //妫�娴嬭摑鐗欓渶瑕佺殑鏉冮檺
+            ((BaseActivity)Application.Activity).SetPermission((result1) =>
+            {
+                if (result1 == false) 
+                {
+                    resultEvent?.Invoke(false);
+                    return;
+                }
+                ((BaseActivity)Application.Activity).SetPermission((result2) =>
+                {
+                    if (result2 == false)
+                    {
+                        resultEvent?.Invoke(false);
+                        return;
+                    }
+                    //鍏ㄩ儴閫氳繃
+                    resultEvent?.Invoke(true);
+
+                }, "android.permission.ACCESS_FINE_LOCATION");
+
+            }, "android.permission.ACCESS_COARSE_LOCATION");
+        }
+
+        #endregion
+
+        #region 鈻� 钃濈墮鎵弿___________________________
+
+        /// <summary>
+        /// 鎼滅储钃濈墮
+        /// </summary>
+        /// <param name="waitTime">鎼滅储鏃堕棿(绉�)</param>
+        /// <param name="FinishEvent">鎼滅储缁撴潫鐨勪簨浠�</param>
+        public void ScanBluetooth(int waitTime, Action<List<BluetoothInfo>> FinishEvent)
+        {
+            HdlThreadLogic.Current.RunMain(() =>
+            {
+                //鍐嶆妫�娴嬫槸鍚﹁兘澶熸悳绱㈣摑鐗�
+                this.CheckCanScanBluetooth((result) =>
+                {
+                    if (result == true)
+                    {
+                        HdlThreadLogic.Current.RunThread(() =>
+                        {
+                            //寮�濮嬫悳绱㈣摑鐗�
+                            this.DoScanBluetooth(waitTime, FinishEvent);
+                        });
+                    }
+                });
+            });
+        }
+
+        /// <summary>
+        /// 寮�濮嬫悳绱㈣摑鐗�
+        /// </summary>
+        /// <param name="waitTime">鎼滅储鏃堕棿(绉�)</param>
+        /// <param name="FinishEvent">鎼滅储缁撴潫鐨勪簨浠�</param>
+        private void DoScanBluetooth(int waitTime, Action<List<BluetoothInfo>> FinishEvent)
+        {
+            var listBluetoothInfo = new List<BluetoothInfo>();
+
+            BluetoothScanCallback scanCallback = null;
+            Android.Bluetooth.BluetoothAdapter adapter = null;
+            Android.Bluetooth.LE.BluetoothLeScanner scanner = null;
+
+            //浠ラ槻涓囦竴,钃濈墮閮戒涪鍦ㄤ富绾跨▼涓繍琛�
+            HdlThreadLogic.Current.RunMain(() =>
+            {
+                adapter = Android.Bluetooth.BluetoothAdapter.DefaultAdapter;
+                scanner = adapter.BluetoothLeScanner;
+
+                scanCallback = new BluetoothScanCallback();
+                scanner.StartScan(null, new Android.Bluetooth.LE.ScanSettings.Builder().SetScanMode(Android.Bluetooth.LE.ScanMode.LowLatency).Build(), scanCallback);
+            }, ShowErrorMode.NO);
+
+            //绛夊緟
+            System.Threading.Thread.Sleep(waitTime * 1000);
+
+            HdlThreadLogic.Current.RunMain(() =>
+            {
+                scanner.StopScan(scanCallback);
+                adapter.Dispose();
+
+                foreach (var data in scanCallback.listData)
+                {
+                    listBluetoothInfo.Add(data);
+                }
+                scanCallback.listData.Clear();
+
+                FinishEvent?.Invoke(listBluetoothInfo);
+            });
+        }
+
+        /// <summary>
+        /// 钃濈墮鐨勫洖璋冨璞�
+        /// </summary>
+        private class BluetoothScanCallback : Android.Bluetooth.LE.ScanCallback
+        {
+            /// <summary>
+            /// 钃濈墮鍒楄〃
+            /// </summary>
+            public List<BluetoothInfo> listData = new List<BluetoothInfo>();
+            /// <summary>
+            /// 閲嶅妫�娴�
+            /// </summary>
+            private List<string> listCheck = new List<string>();
+
+            /// <summary>
+            /// 钃濈墮缁撴灉鎺ユ敹
+            /// </summary>
+            /// <param name="listResult"></param>
+            public override void OnBatchScanResults(IList<Android.Bluetooth.LE.ScanResult> listResult)
+            {
+                foreach (var result in listResult)
+                {
+                    this.AddBluetoothResult(result);
+                }
+            }
+
+            /// <summary>
+            /// 钃濈墮缁撴灉鎺ユ敹
+            /// </summary>
+            /// <param name="callbackType"></param>
+            /// <param name="result"></param>
+            public override void OnScanResult(Android.Bluetooth.LE.ScanCallbackType callbackType, Android.Bluetooth.LE.ScanResult result)
+            {
+                this.AddBluetoothResult(result);
+            }
+
+            /// <summary>
+            /// 娣诲姞钃濈墮缂撳瓨
+            /// </summary>
+            /// <param name="result"></param>
+            private void AddBluetoothResult(Android.Bluetooth.LE.ScanResult result)
+            {
+                var device = result.Device;
+                if (device == null || listCheck.Contains(device.Address) == true)
+                {
+                    return;
+                }
+                listCheck.Add(device.Address);
+
+                var data = new BluetoothInfo();
+                data.Name = device.Name;
+                if (data.Name == null) { data.Name = string.Empty; }
+                data.Address = device.Address;
+                data.Device = device;
+                listData.Add(data);
+            }
+        }
+
+        #endregion
+
+        #region 鈻� 钃濈墮閾炬帴___________________________
+
+        /// <summary>
+        /// 钃濈墮閾炬帴(false:杩炴帴澶辫触 true:杩炴帴鎴愬姛)
+        /// </summary>
+        /// <param name="bluetooth">闇�瑕侀摼鎺ョ殑钃濈墮瀵硅薄</param>
+        /// <param name="connectEvent">鍥犱负闇�瑕佸鏂瑰弽棣�,鎵�浠ヤ娇鐢ㄥ洖璋�(閾炬帴缁撴灉 false:杩炴帴澶辫触 true:杩炴帴鎴愬姛)</param>
+        public void ContectBluetooth(BluetoothInfo bluetooth, Action<bool> connectEvent)
+        {
+            HdlThreadLogic.Current.RunMain(() =>
+            {
+                try
+                {
+                    this.nowBlufiClient = new Blufi.Espressif.BlufiClient(Application.Activity, bluetooth.Device);
+
+                    //涓�涓洖璋冧簨浠�
+                    var callback = new InnerGattCallback();
+                    callback.ConnectionStateEvent += (div, newState) =>
+                    {
+                        if (div == 1)
+                        {
+                            if (newState == Android.Bluetooth.ProfileState.Connected)
+                            {
+                                //閾炬帴寤虹珛鎴愬姛
+                                connectEvent?.Invoke(true);
+                                //鍙�氱煡涓�娆�
+                                connectEvent = null;
+                            }
+                            else if (newState == Android.Bluetooth.ProfileState.Disconnected)
+                            {
+                                //鍏抽棴閾炬帴
+                                this.DisContectBluetooth();
+                                connectEvent?.Invoke(false);
+                                //鍙�氱煡涓�娆�
+                                connectEvent = null;
+                            }
+                        }
+                        else if (div == -1)
+                        {
+                            //鍏抽棴閾炬帴
+                            this.DisContectBluetooth();
+                            connectEvent?.Invoke(false);
+                            //鍙�氱煡涓�娆�
+                            connectEvent = null;
+                        }
+                    };
+                    nowBlufiClient.SetGattCallback(callback);
+
+                    //鍙﹀涓�涓洖璋冧簨浠�
+                    var blufiCall = new BlufiCallbackMain();
+                    blufiCall.StateEvent += (div, data) =>
+                    {
+                        //-1:寮傚父 1:姝e父 2:鍙戦�佹暟鎹垚鍔� 3:鍙戦�佹暟鎹け璐�
+                        if (div == StatuEnum.A寮傚父)
+                        {
+                            //鍏抽棴閾炬帴
+                            this.DisContectBluetooth();
+                            connectEvent?.Invoke(false);
+                            //鍙�氱煡涓�娆�
+                            connectEvent = null;
+                        }
+                        else if (div == StatuEnum.A鍙戦�佹垚鍔� || div == StatuEnum.A鍙戦�佸け璐�)
+                        {
+                            sendStatuValue = div == StatuEnum.A鍙戦�佹垚鍔� ? 1 : 0;
+                        }
+                        else if (div == StatuEnum.A钃濈墮鍙嶉)
+                        {
+                            //钃濈墮杩斿洖鐨勭粨鏋�
+                            this.ReceiveEvent?.Invoke(data);
+                        }
+                    };
+                    nowBlufiClient.SetBlufiCallback(blufiCall);
+                    //鎵ц閾炬帴
+                    nowBlufiClient.Connect();
+                }
+                catch
+                {
+                    connectEvent?.Invoke(false);
+                    connectEvent = null;
+                }
+            });
+        }
+
+        /// <summary>
+        /// 鍏堣繖涔堝畾涔変竴涓┖鐨勭户鎵�
+        /// </summary>
+        private class InnerGattCallback : Android.Bluetooth.BluetoothGattCallback
+        {
+            /// <summary>
+            /// 鐘舵�佷簨浠跺洖璋�(-1:寮傚父 1:OnConnectionStateChange)
+            /// </summary>
+            public Action<int,Android.Bluetooth.ProfileState> ConnectionStateEvent = null;
+            /// <summary>
+            /// 閾炬帴鐘舵�佹敼鍙�
+            /// </summary>
+            /// <param name="gatt"></param>
+            /// <param name="status"></param>
+            /// <param name="newState"></param>
+            public override void OnConnectionStateChange(Android.Bluetooth.BluetoothGatt gatt, Android.Bluetooth.GattStatus status, Android.Bluetooth.ProfileState newState)
+            {
+                if (status == Android.Bluetooth.GattStatus.Success)
+                {
+                    //鍥炶皟浜嬩欢
+                    this.ConnectionStateEvent?.Invoke(1, newState);
+                }
+                else
+                {
+                    //鍥炶皟浜嬩欢
+                    this.ConnectionStateEvent?.Invoke(-1, 0);
+                }
+            }
+
+            /// <summary>
+            /// 鎴愬姛鍙戠幇璁惧鐨剆ervices鏃讹紝璋冪敤姝ゆ柟娉�
+            /// </summary>
+            /// <param name="gatt"></param>
+            /// <param name="status"></param>
+            public override void OnServicesDiscovered(Android.Bluetooth.BluetoothGatt gatt, Android.Bluetooth.GattStatus status)
+            {
+                if (status != Android.Bluetooth.GattStatus.Success)
+                {
+                    //鍥炶皟浜嬩欢
+                    this.ConnectionStateEvent?.Invoke(-1, 0);
+                }
+            }
+
+            /// <summary>
+            /// 搴旇鏄啓鍏ヤ簨浠跺惂
+            /// </summary>
+            /// <param name="gatt"></param>
+            /// <param name="characteristic"></param>
+            /// <param name="status"></param>
+            public override void OnCharacteristicWrite(Android.Bluetooth.BluetoothGatt gatt, Android.Bluetooth.BluetoothGattCharacteristic characteristic, Android.Bluetooth.GattStatus status)
+            {
+                if (status != Android.Bluetooth.GattStatus.Success)
+                {
+                    //鍥炶皟浜嬩欢
+                    this.ConnectionStateEvent?.Invoke(-1, 0);
+                }
+            }
+        }
+
+        /// <summary>
+        /// 鎶凷DK鐨勶紝鎴戜篃涓嶇煡閬撹繖涓槸浠�涔�
+        /// </summary>
+        private class BlufiCallbackMain : Blufi.Espressif.BlufiCallback
+        {
+            /// <summary>
+            /// 鐘舵�佷簨浠跺洖璋� 褰撶涓�涓弬鏁颁负"A钃濈墮鍙嶉"鏃�,绗簩涓弬鏁颁负钃濈墮杩斿洖鐨勪俊鎭�
+            /// </summary>
+            public Action<StatuEnum, string> StateEvent = null;
+
+            /// <summary>
+            /// 鎶凷DK鐨勶紝鎴戜篃涓嶇煡閬撹繖涓槸浠�涔�
+            /// </summary>
+            /// <param name="client"></param>
+            /// <param name="gatt"></param>
+            /// <param name="service"></param>
+            /// <param name="writeChar"></param>
+            /// <param name="notifyChar"></param>
+            public override void OnGattPrepared(Blufi.Espressif.BlufiClient client, Android.Bluetooth.BluetoothGatt gatt, Android.Bluetooth.BluetoothGattService service,
+                Android.Bluetooth.BluetoothGattCharacteristic writeChar, Android.Bluetooth.BluetoothGattCharacteristic notifyChar)
+            {
+                if (service == null || writeChar == null || notifyChar == null)
+                {
+                    StateEvent?.Invoke(StatuEnum.A寮傚父, null);
+                    return;
+                }
+
+                try
+                {
+                    int mtu = 128;
+                    if ((int)Android.OS.Build.VERSION.SdkInt == 29
+                      && Android.OS.Build.Manufacturer.ToLower().StartsWith("samsung") == true)
+                    {
+                        mtu = 23;
+                    }
+
+                    var requestMtu = gatt.RequestMtu(mtu);
+                    if (!requestMtu)
+                    {
+                        //Request mtu failed
+                        client.SetPostPackageLengthLimit(20);
+                    }
+                    StateEvent?.Invoke(StatuEnum.A姝e父, null); ;
+                }
+                catch
+                {
+                    StateEvent?.Invoke(StatuEnum.A寮傚父, null);
+                    return;
+                }
+            }
+
+            /// <summary>
+            /// 鎵嬫満绔彂閫佹暟鎹埌钃濈墮鐨勭粨鏋�
+            /// </summary>
+            /// <param name="client"></param>
+            /// <param name="status">0:鎴愬姛 鍏朵粬閮芥槸澶辫触</param>
+            /// <param name="data">鎵嬫満绔彂閫佺殑鏁版嵁</param>
+            public override void OnPostCustomDataResult(Blufi.Espressif.BlufiClient client, int status, byte[] data)
+            {
+                StateEvent?.Invoke(status == 0 ? StatuEnum.A鍙戦�佹垚鍔� : StatuEnum.A鍙戦�佸け璐�, null);
+            }
+
+            /// <summary>
+            /// 钃濈墮鍥炲鐨勭粨鏋�
+            /// </summary>
+            /// <param name="client"></param>
+            /// <param name="status">0:鎴愬姛 鍏朵粬閮芥槸澶辫触</param>
+            /// <param name="data">钃濈墮鍥炲鐨勬暟鎹�</param>
+            public override void OnReceiveCustomData(Blufi.Espressif.BlufiClient client, int status, byte[] data)
+            {
+                if (status == 0)
+                {
+                    var receiveData = System.Text.Encoding.UTF8.GetString(data);
+                    StateEvent?.Invoke(StatuEnum.A钃濈墮鍙嶉, receiveData);
+                }
+            }
+        }
+
+        #endregion
+
+        #region 鈻� 钃濈墮鍏抽棴___________________________
+
+        /// <summary>
+        ///  鍏抽棴钃濈墮閾炬帴
+        /// </summary>
+        public void DisContectBluetooth()
+        {
+            HdlThreadLogic.Current.RunMain(() =>
+            {
+                this.nowBlufiClient?.RequestCloseConnection();
+                this.nowBlufiClient = null;
+
+                m_Current = null;
+
+            }, ShowErrorMode.NO);
+        }
+
+        /// <summary>
+        /// 鎽ф瘉
+        /// </summary>
+        public void Dispone()
+        {
+            //鍏抽棴钃濈墮閾炬帴
+            this.DisContectBluetooth();
+            this.ReceiveEvent = null;
+            m_Current = null;
+        }
+
+        #endregion
+
+        #region 鈻� 鍙戦�佹暟鎹甠__________________________
+
+        /// <summary>
+        /// 鍙戦�佹暟鎹粰钃濈墮
+        /// </summary>
+        /// <param name="i_data">鍙戦�佺殑鏁版嵁</param>
+        /// <param name="waiTime">绛夊緟鏃堕棿(绉�),濡傛灉璁剧疆涓�0,鍒欏彧瑕佸彂閫佷笉鍑虹幇寮傚父,鐩存帴鍒ゅ畾涓烘垚鍔�</param>
+        public bool SendData(string i_data, int waiTime = 0)
+        {
+            if (this.nowBlufiClient == null)
+            {
+                return false;
+            }
+
+            try
+            {
+                this.sendStatuValue = -1;
+                HdlThreadLogic.Current.RunMain(() =>
+                {
+                    //鍙戦�佹暟鎹�
+                    var byteData = System.Text.Encoding.UTF8.GetBytes(i_data);
+                    this.nowBlufiClient.PostCustomData(byteData);
+
+                }, ShowErrorMode.NO);
+
+                if (waiTime == 0) { return true; }
+
+                waiTime *= 5;
+                while (this.sendStatuValue == -1 && waiTime > 0)
+                {
+                    System.Threading.Thread.Sleep(200);
+                    waiTime--;
+                }
+                return this.sendStatuValue == 1;
+            }
+            catch { return false; }
+        }
+
+        #endregion
+
+        #region 鈻� 涓�鑸柟娉昣__________________________
+
+        /// <summary>
+        /// 娣诲姞钃濈墮鐨勬帴鏀朵簨浠�
+        /// </summary>
+        /// <param name="i_ReceiveEvent">钃濈墮鎺ユ敹浜嬩欢</param>
+        public void AddReceiveEvent(Action<string> i_ReceiveEvent)
+        {
+            this.ReceiveEvent = i_ReceiveEvent;
+        }
+
+        /// <summary>
+        /// 绉婚櫎钃濈墮鐨勬帴鏀朵簨浠�
+        /// </summary>
+        public void RemoveReceiveEvent()
+        {
+            this.ReceiveEvent = null;
+        }
+
+        #endregion
+
+        #region 鈻� 缁撴瀯浣揰____________________________
+
+        /// <summary>
+        /// 钃濈墮杩斿洖鐨勪俊鎭�
+        /// </summary>
+        public class BluetoothInfo
+        {
+            /// <summary>
+            /// 鍚嶅瓧(姝ゅ悕瀛椾笉浼歯ull,濡傛灉瀹冩湰韬槸null,鍙細鏄痵tring.empty)
+            /// </summary>
+            public string Name = string.Empty;
+            /// <summary>
+            /// 鍦板潃
+            /// </summary>
+            public string Address = string.Empty;
+            /// <summary>
+            /// 钃濈墮璁惧
+            /// </summary>
+            public Android.Bluetooth.BluetoothDevice Device = null;
+        }
+
+        /// <summary>
+        /// 鐘舵�佹灇涓�
+        /// </summary>
+        private enum StatuEnum
+        {
+            A寮傚父 = -1,
+            A姝e父 = 1,
+            A鍙戦�佹垚鍔� = 2,
+            A鍙戦�佸け璐� = 3,
+            A钃濈墮鍙嶉 = 4
+        }
+
+        #endregion
+    }
+#endif
+}
+
diff --git a/HDL_ON/UI/UI0-Stan/Logic/HdlBluetoothIOSLogic.cs b/HDL_ON/UI/UI0-Stan/Logic/HdlBluetoothIOSLogic.cs
new file mode 100644
index 0000000..8900504
--- /dev/null
+++ b/HDL_ON/UI/UI0-Stan/Logic/HdlBluetoothIOSLogic.cs
@@ -0,0 +1,489 @@
+锘縰sing System;
+using System.Collections.Generic;
+
+namespace HDL_ON.Stan
+{
+#if __IOS__
+    /// <summary>
+    /// IOS钃濈墮鐨勯�昏緫
+    /// </summary>
+    public class HdlBluetoothLogic
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 瀹夊崜钃濈墮鐨勯�昏緫
+        /// </summary>
+        private static HdlBluetoothLogic m_Current = null;
+        /// <summary>
+        /// 瀹夊崜钃濈墮鐨勯�昏緫
+        /// </summary>
+        public static HdlBluetoothLogic Current
+        {
+            get
+            {
+                if (m_Current == null)
+                {
+                    m_Current = new HdlBluetoothLogic();
+                }
+                return m_Current;
+            }
+        }
+        /// <summary>
+        /// 鎴戜篃涓嶇煡閬撹繖鏄粈涔堜笢瑗�
+        /// </summary>
+        private HdlBlufi.HdlBluWi hdlBluWiShare;
+        /// <summary>
+        /// 鎴戜篃涓嶇煡閬撹繖鏄粈涔堜笢瑗�
+        /// </summary>
+        private HdlBlufi.BlufiClient blufiClient;
+        /// <summary>
+        /// 鎺ユ敹浜嬩欢
+        /// </summary>
+        private Action<string> ReceiveEvent = null;
+        /// <summary>
+        /// 鍙戦�佺姸鎬�(0:鍙戦�佸け璐� 1:鍙戦�佹垚鍔�)
+        /// </summary>
+        private int sendStatuValue = -1;
+        /// <summary>
+        /// 钃濈墮鏄惁鎵撳紑
+        /// </summary>
+        private bool IsBlufiOpen = false;
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹__________________________
+
+        /// <summary>
+        /// 鍒濆鍖�
+        /// </summary>
+        private bool InitHdlBlufi()
+        {
+            if (hdlBluWiShare != null) { return true; }
+
+            try
+            {
+                this.hdlBluWiShare = HdlBlufi.HdlBluWi.Share();
+                this.blufiClient = new HdlBlufi.BlufiClient();
+
+                blufiClient.CentralManagerDelete = new BlueCBCentralManagerDelegate();
+                //娣诲姞鍥炶皟浜嬩欢
+                ((BlueCBCentralManagerDelegate)blufiClient.CentralManagerDelete).StateEvent += (div, data) =>
+                {
+                    //-1:寮傚父 1:姝e父
+                    if (div == StatuEnum.A寮傚父)
+                    {
+                        //钃濈墮娌℃湁鎵撳紑
+                        this.IsBlufiOpen = false;
+                    }
+                    else if (div == StatuEnum.A姝e父)
+                    {
+                        //钃濈墮鎵撳紑鐫�
+                        this.IsBlufiOpen = true;
+                    }
+                };
+
+                blufiClient.BlufiDelegate = new BlueWifiDelegate();
+                return true;
+            }
+            catch { return false; }
+        }
+
+        #endregion
+
+        #region 鈻� 钃濈墮鎵�闇�鍔熻兘妫�娴媉__________________
+
+        /// <summary>
+        /// 妫�娴嬫槸鍚﹁兘澶熸悳绱㈣摑鐗�(鍐呴儴浼氬脊鍑篗sg妗�,鍥犱负鍐呴儴闇�瑕佹娴嬬郴缁熸潈闄�,鎵�浠ュ弬鏁伴噰鐢ㄥ洖璋冪殑鏂瑰紡)
+        /// </summary>
+        /// <param name="resultEvent">妫�娴嬬粨鏋滀簨浠�</param>
+        public void CheckCanScanBluetooth(Action<bool> resultEvent)
+        {
+            try聽
+            {
+                //鍏堝垵濮嬪寲
+                if (this.InitHdlBlufi() == false)
+                {
+                    resultEvent?.Invoke(false);
+                    //璇锋墦寮�钃濈墮
+                    HdlMessageLogic.Current.ShowMassage(ShowMsgType.Tip, Shared.Language.StringByID(StringId.PleaseTurnOnBluetooth));
+                    return;
+                }
+                   
+                if (this.IsBlufiOpen == true)
+                {
+                    //鍥犱负鏄竴鐩寸洃鍚潃锛屾墍浠ュ鏋滄槸true锛岀洿鎺ヨ繑鍥�
+                    resultEvent?.Invoke(this.IsBlufiOpen);
+                    return;
+                }
+
+                HdlThreadLogic.Current.RunThread(() =>
+                {
+                    //ios闇�瑕佺洃鍚墠鑳藉鑾峰緱钃濈墮鐨勭姸鎬�
+                    System.Threading.Thread.Sleep(500);
+                    if (this.IsBlufiOpen == false)
+                    {
+                        //璇锋墦寮�钃濈墮
+                        HdlMessageLogic.Current.ShowMassage(ShowMsgType.Tip, Shared.Language.StringByID(StringId.PleaseTurnOnBluetooth));
+                    }
+                    HdlThreadLogic.Current.RunMain(() =>
+                    {
+                        resultEvent?.Invoke(this.IsBlufiOpen);
+                    });
+                }, ShowErrorMode.NO);
+            }
+            catch
+            {
+                resultEvent?.Invoke(false);
+                //璇锋墦寮�钃濈墮
+                HdlMessageLogic.Current.ShowMassage(ShowMsgType.Tip, Shared.Language.StringByID(StringId.PleaseTurnOnBluetooth));
+            }
+        }
+
+        #endregion
+
+        #region 鈻� 钃濈墮鎵弿___________________________
+
+        /// <summary>
+        /// 鎼滅储钃濈墮
+        /// </summary>
+        /// <param name="waitTime">鎼滅储鏃堕棿(绉�)</param>
+        /// <param name="FinishEvent">鎼滅储缁撴潫鐨勪簨浠�</param>
+        public void ScanBluetooth(int waitTime, Action<List<BluetoothInfo>> FinishEvent)
+        {
+            HdlThreadLogic.Current.RunMain(() =>
+            {
+                //鍐嶆妫�娴嬫槸鍚﹁兘澶熸悳绱㈣摑鐗�
+                this.CheckCanScanBluetooth((result) =>
+                {
+                    if (result == true)
+                    {
+                        HdlThreadLogic.Current.RunThread(() =>
+                        {
+                            //寮�濮嬫悳绱㈣摑鐗�
+                            this.DoScanBluetooth(waitTime, FinishEvent);
+                        });
+                    }
+                });
+            });
+        }
+
+        /// <summary>
+        /// 寮�濮嬫悳绱㈣摑鐗�
+        /// </summary>
+        /// <param name="waitTime">鎼滅储鏃堕棿(绉�)</param>
+        /// <param name="FinishEvent">鎼滅储缁撴潫鐨勪簨浠�</param>
+        private void DoScanBluetooth(int waitTime, Action<List<BluetoothInfo>> FinishEvent)
+        {
+            //钃濈墮鍒楄〃
+            var listData = new List<BluetoothInfo>();
+            //閲嶅妫�娴�
+            var listCheck = new List<string>();
+            //瀹炵幇钃濈墮鎺ユ敹浜嬩欢
+            var ReceiveBlufiDeviceEvent = new HdlBlufi.FBYBleDeviceBackBlock((arg0) =>
+            {
+                var address = arg0.Uuid.ToString();
+                if (listCheck.Contains(address) == false)
+                {
+                    listCheck.Add(address);
+                    var data = new BluetoothInfo();
+                    data.Address = address;
+                    data.Name = arg0.Name == null ? string.Empty : arg0.Name;
+                    listData.Add(data);
+                }
+            });
+            HdlThreadLogic.Current.RunMain(() =>
+            {
+                //寮�鍚摑鐗欐悳绱�
+                this.hdlBluWiShare.StartScan(ReceiveBlufiDeviceEvent);
+            }, ShowErrorMode.NO);
+            System.Threading.Thread.Sleep(waitTime * 1000);
+
+            HdlThreadLogic.Current.RunMain(() =>
+            {
+                //鍏抽棴钃濈墮鎼滅储
+                this.hdlBluWiShare.StopScan();
+                ReceiveBlufiDeviceEvent = null;
+
+            }, ShowErrorMode.NO);
+            //鍥炶皟浜嬩欢
+            FinishEvent?.Invoke(listData);
+        }
+
+        #endregion
+
+        #region 鈻� 钃濈墮閾炬帴___________________________
+
+        /// <summary>
+        /// 钃濈墮閾炬帴(false:杩炴帴澶辫触 true:杩炴帴鎴愬姛)
+        /// </summary>
+        /// <param name="bluetooth">闇�瑕侀摼鎺ョ殑钃濈墮瀵硅薄</param>
+        /// <param name="connectEvent">鍥犱负闇�瑕佸鏂瑰弽棣�,鎵�浠ヤ娇鐢ㄥ洖璋�(閾炬帴缁撴灉 false:杩炴帴澶辫触 true:杩炴帴鎴愬姛)</param>
+        public void ContectBluetooth(BluetoothInfo bluetooth, Action<bool> connectEvent)
+        {
+            HdlThreadLogic.Current.RunMain(() =>
+            {
+                try
+                {
+                    //娣诲姞浜嬩欢
+                    ((BlueWifiDelegate)blufiClient.BlufiDelegate).StateEvent += (div, data) =>
+                    {
+                        //-1:寮傚父 1:姝e父 2:鍙戦�佹暟鎹垚鍔� 3:鍙戦�佹暟鎹け璐�
+                        if (div == StatuEnum.A寮傚父)
+                        {
+                            //鍏抽棴閾炬帴
+                            this.DisContectBluetooth();
+                            connectEvent?.Invoke(false);
+                            //鍙�氱煡涓�娆�
+                            connectEvent = null;
+                        }
+                        else if (div == StatuEnum.A姝e父)
+                        {
+                            //閾炬帴寤虹珛鎴愬姛
+                            connectEvent?.Invoke(true);
+                            //鍙�氱煡涓�娆�
+                            connectEvent = null;
+                        }
+                        else if (div == StatuEnum.A鍙戦�佹垚鍔� || div == StatuEnum.A鍙戦�佸け璐�)
+                        {
+                            sendStatuValue = div == StatuEnum.A鍙戦�佹垚鍔� ? 1 : 0;
+                        }
+                        else if (div == StatuEnum.A钃濈墮鍙嶉)
+                        {
+                            //钃濈墮杩斿洖鐨勭粨鏋�
+                            this.ReceiveEvent?.Invoke(data);
+                        }
+                    };
+                    //鎵ц閾炬帴
+                    this.blufiClient.Connect(bluetooth.Address);
+                }
+                catch
+                {
+                    connectEvent?.Invoke(false);
+                    connectEvent = null;
+                }
+            });
+        }
+
+        #endregion
+
+        #region 鈻� 钃濈墮鍏抽棴___________________________
+
+        /// <summary>
+        ///  鍏抽棴钃濈墮閾炬帴
+        /// </summary>
+        public void DisContectBluetooth()
+        {
+            HdlThreadLogic.Current.RunMain(() =>
+            {
+                this.blufiClient?.Close();
+                this.blufiClient = null;
+                this.hdlBluWiShare = null;
+
+            }, ShowErrorMode.NO);
+        }
+
+        /// <summary>
+        /// 鎽ф瘉
+        /// </summary>
+        public void Dispone()
+        {
+            //鍏抽棴钃濈墮閾炬帴
+            this.DisContectBluetooth();
+            this.ReceiveEvent = null;
+            m_Current = null;
+        }
+
+        #endregion
+
+        #region 鈻� 鍙戦�佹暟鎹甠__________________________
+
+        /// <summary>
+        /// 鍙戦�佹暟鎹粰钃濈墮
+        /// </summary>
+        /// <param name="i_data">鍙戦�佺殑鏁版嵁</param>
+        /// <param name="waiTime">绛夊緟鏃堕棿(绉�),濡傛灉璁剧疆涓�0,鍒欏彧瑕佸彂閫佷笉鍑虹幇寮傚父,鐩存帴鍒ゅ畾涓烘垚鍔�</param>
+        public bool SendData(string i_data, int waiTime = 0)
+        {
+            if (this.blufiClient == null)
+            {
+                return false;
+            }
+
+            try
+            {
+                this.sendStatuValue = -1;
+                HdlThreadLogic.Current.RunMain(() =>
+                {
+                    //鍙戦�佹暟鎹�
+                    var data = new Foundation.NSData();
+                    data = i_data;
+                    blufiClient.PostCustomData(data);
+
+                }, ShowErrorMode.NO);
+
+                if (waiTime == 0) { return true; }
+
+                waiTime *= 5;
+                while (this.sendStatuValue == -1 && waiTime > 0)
+                {
+                    System.Threading.Thread.Sleep(200);
+                    waiTime--;
+                }
+                return this.sendStatuValue == 1;
+            }
+            catch { return false; }
+        }
+
+        #endregion
+
+        #region 鈻� 涓�鑸柟娉昣__________________________
+
+        /// <summary>
+        /// 娣诲姞钃濈墮鐨勬帴鏀朵簨浠�
+        /// </summary>
+        /// <param name="i_ReceiveEvent">钃濈墮鎺ユ敹浜嬩欢</param>
+        public void AddReceiveEvent(Action<string> i_ReceiveEvent)
+        {
+            this.ReceiveEvent = i_ReceiveEvent;
+        }
+
+        /// <summary>
+        /// 绉婚櫎钃濈墮鐨勬帴鏀朵簨浠�
+        /// </summary>
+        public void RemoveReceiveEvent()
+        {
+            this.ReceiveEvent = null;
+        }
+
+        #endregion
+
+        #region 鈻� 绯荤粺钃濈墮鍥炶皟_______________________
+
+        private class BlueWifiDelegate : HdlBlufi.BlufiDelegate
+        {
+            /// <summary>
+            /// 鐘舵�佷簨浠跺洖璋� 褰撶涓�涓弬鏁颁负"A钃濈墮鍙嶉"鏃�,绗簩涓弬鏁颁负钃濈墮杩斿洖鐨勪俊鎭�
+            /// </summary>
+            public Action<StatuEnum, string> StateEvent = null;
+
+            public override void Blufi_didNegotiateSecurity(HdlBlufi.BlufiClient client, HdlBlufi.BlufiStatusCode status)
+            {
+                //Console.WriteLine("Blufi_didNegotiateSecurity");
+            }
+
+            public override void Blufi_didPostCustomData(HdlBlufi.BlufiClient client, Foundation.NSData data, HdlBlufi.BlufiStatusCode status)
+            {
+                if (status == HdlBlufi.BlufiStatusCode.Success)
+                {
+                    //鍙戦�佽摑鐗欐暟鎹垚鍔�
+                    StateEvent?.Invoke(StatuEnum.A鍙戦�佹垚鍔�, null);
+                }
+                else
+                {
+                    //鍙戦�佽摑鐗欐暟鎹け璐�
+                    StateEvent?.Invoke(StatuEnum.A鍙戦�佸け璐�, null);
+                }
+            }
+
+            public override void Blufi_didReceiveDeviceScanResponse(HdlBlufi.BlufiClient client, HdlBlufi.BlufiScanResponse[] scanResults, HdlBlufi.BlufiStatusCode status)
+            {
+                //Console.WriteLine("Blufi_didReceiveDeviceScanResponse");
+            }
+
+            public override void Blufi_didReceiveDeviceVersionResponse(HdlBlufi.BlufiClient client, HdlBlufi.BlufiVersionResponse response, HdlBlufi.BlufiStatusCode status)
+            {
+                //Console.WriteLine("Blufi_didReceiveDeviceVersionResponse");
+            }
+
+            public override void Blufi_didPostConfigureParams(HdlBlufi.BlufiClient client, HdlBlufi.BlufiStatusCode status)
+            {
+                //Console.WriteLine("Blufi_didPostConfigureParams");
+            }
+
+            public override void Blufi_didReceiveCustomData(HdlBlufi.BlufiClient client, Foundation.NSData data, HdlBlufi.BlufiStatusCode status)
+            {
+                //鎺ユ敹钃濈墮鍙戦�佽繃鏉ョ殑鏁版嵁
+                StateEvent?.Invoke(StatuEnum.A钃濈墮鍙嶉, data.ToString());
+            }
+
+            public override void Blufi_didReceiveDeviceStatusResponse(HdlBlufi.BlufiClient client, HdlBlufi.BlufiStatusResponse response, HdlBlufi.BlufiStatusCode status)
+            {
+                //Console.WriteLine("Blufi_didReceiveDeviceStatusResponse");
+            }
+
+            public override void Blufi_didReceiveError(HdlBlufi.BlufiClient client, nint errCode)
+            {
+                //Console.WriteLine("Blufi_didReceiveError");
+            }
+
+            public override void Blufi_gattPrepared(HdlBlufi.BlufiClient client, HdlBlufi.BlufiStatusCode status, CoreBluetooth.CBService service, CoreBluetooth.CBCharacteristic writeChar, CoreBluetooth.CBCharacteristic notifyChar)
+            {
+                if (status == HdlBlufi.BlufiStatusCode.Success)
+                {
+                    //钃濈墮杩炴帴鎴愬姛
+                    StateEvent?.Invoke(StatuEnum.A姝e父, null);
+                }
+                else
+                {
+                    //钃濈墮杩炴帴澶辫触
+                    StateEvent?.Invoke(StatuEnum.A寮傚父, null);
+                }
+            }
+        }
+
+        private class BlueCBCentralManagerDelegate : CoreBluetooth.CBCentralManagerDelegate
+        {
+            /// <summary>
+            /// 鐘舵�佷簨浠跺洖璋�
+            /// </summary>
+            public Action<StatuEnum, string> StateEvent = null;
+
+            public override void UpdatedState(CoreBluetooth.CBCentralManager central)
+            {
+                //鍙娌℃湁鎵撳紑钃濈墮锛岄兘绠楀紓甯稿鐞�
+                if (central.State == CoreBluetooth.CBCentralManagerState.PoweredOn)
+                {
+                    StateEvent?.Invoke(StatuEnum.A姝e父, null);
+                }
+                else
+                {
+                    StateEvent?.Invoke(StatuEnum.A寮傚父, null);
+                }
+            }
+        }
+        #endregion
+
+        #region 鈻� 缁撴瀯浣揰____________________________
+
+        /// <summary>
+        /// 钃濈墮杩斿洖鐨勪俊鎭�
+        /// </summary>
+        public class BluetoothInfo
+        {
+            /// <summary>
+            /// 鍚嶅瓧(姝ゅ悕瀛椾笉浼歯ull,濡傛灉瀹冩湰韬槸null,鍙細鏄痵tring.empty)
+            /// </summary>
+            public string Name = string.Empty;
+            /// <summary>
+            /// 鍦板潃
+            /// </summary>
+            public string Address = string.Empty;
+        }
+
+        /// <summary>
+        /// 鐘舵�佹灇涓�
+        /// </summary>
+        private enum StatuEnum
+        {
+            A寮傚父 = -1,
+            A姝e父 = 1,
+            A鍙戦�佹垚鍔� = 2,
+            A鍙戦�佸け璐� = 3,
+            A钃濈墮鍙嶉 = 4
+        }
+
+        #endregion
+    }
+#endif
+}
diff --git a/HDL_ON/UI/UI0-Stan/Logic/HdlCloudReceiveLogic.cs b/HDL_ON/UI/UI0-Stan/Logic/HdlCloudReceiveLogic.cs
new file mode 100644
index 0000000..81c4959
--- /dev/null
+++ b/HDL_ON/UI/UI0-Stan/Logic/HdlCloudReceiveLogic.cs
@@ -0,0 +1,164 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace HDL_ON.Stan
+{
+    //搴旇涔熶笉澶�,灏卞啓鍦ㄨ繖閲屼簡
+
+    /// <summary>
+    /// 浜戠鎺ㄩ�佹灇涓�
+    /// </summary>
+    public enum CloudPushEnum
+    {
+        A鏂拌澶囦笂鎶� = 1,
+    }
+
+    /// <summary>
+    /// 鍏ㄥ眬鎺ユ敹浜戠鎺ㄩ�佺殑鐨勯�昏緫(涓轰簡鎵ц閫熷害,灏藉彲鑳界殑鍒姞鑰楁椂鐨勬搷浣�)
+    /// </summary>
+    public class HdlCloudReceiveLogic
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 鍏ㄥ眬鎺ユ敹浜戠鎺ㄩ�佺殑鐨勯�昏緫
+        /// </summary>
+        private static HdlCloudReceiveLogic m_Current = null;
+        /// <summary>
+        /// 鍏ㄥ眬鎺ユ敹浜戠鎺ㄩ�佺殑鐨勯�昏緫
+        /// </summary>
+        public static HdlCloudReceiveLogic Current
+        {
+            get
+            {
+                if (m_Current == null)
+                {
+                    m_Current = new HdlCloudReceiveLogic();
+                }
+                return m_Current;
+            }
+        }
+
+        /// <summary>
+        /// 浜戠鎺ユ敹浜嬩欢闆嗗悎
+        /// </summary>
+        private List<CloudReceiveEventClass> ListCloudEvent = new List<CloudReceiveEventClass>();
+
+        #endregion
+
+        #region 鈻� 鍏ㄥ眬鎺ユ敹___________________________
+
+        /// <summary>
+        /// 鐗规畩鍏ㄥ眬鎺ユ敹浜戠鎺ㄩ�佺殑鐨勯�昏緫(涓轰簡鎵ц閫熷害,灏藉彲鑳界殑鍒姞鑰楁椂鐨勬搷浣� true:鎵ц浜嗙壒娈婂鐞� false:娌℃湁鎵ц鐗规畩澶勭悊)
+        /// </summary>
+        /// <param name="topic">鏁翠釜涓婚</param>
+        /// <param name="byteData">鎺ユ敹鐨勬暟鎹�</param>
+        /// <param name="mqttEncryptKey">Mqtt鐨勮В瀵嗗瘑閽�</param>
+        /// <param name="homeIdEncryptKey">浣忓畢鍊掑簭鐨勮В瀵嗗瘑閽�</param>
+        public bool CloudOverallMsgReceiveEx(string topic, byte[] byteData, string mqttEncryptKey, string homeIdEncryptKey)
+        {
+            //璁惧鍏ョ綉涓婃姤涓婚
+            if (topic == $"/user/{Entity.DB_ResidenceData.Instance.CurrentRegion.RegionID}/app/thing/topo/found")
+            {
+                if (string.IsNullOrEmpty(homeIdEncryptKey) == false)
+                {
+                    //瑙e瘑
+                    byteData = Securitys.EncryptionService.AesDecryptPayload(byteData, homeIdEncryptKey);
+                }
+                string msgData = Encoding.UTF8.GetString(byteData);
+                //杩欓噷鐗规畩,鍒�ョ潃杞瓧绗︿覆,鍏堝垽鏂富棰樺啀杞�
+                return this.CloudOverallMsgReceiveEx(topic, msgData);
+            }
+            return false;
+        }
+
+        /// <summary>
+        /// 鐗规畩鍏ㄥ眬鎺ユ敹浜戠鎺ㄩ�佺殑鐨勯�昏緫(涓轰簡鎵ц閫熷害,灏藉彲鑳界殑鍒姞鑰楁椂鐨勬搷浣� true:鎵ц浜嗙壒娈婂鐞� false:娌℃湁鎵ц鐗规畩澶勭悊)
+        /// </summary>
+        /// <param name="topic">鏁翠釜涓婚</param>
+        /// <param name="msgData">鎺ユ敹鐨勬暟鎹�</param>
+        public bool CloudOverallMsgReceiveEx(string topic, string msgData)
+        {
+            //娌℃湁浠讳綍鐩戝惉
+            if (ListCloudEvent.Count == 0) { return false; }
+
+            //璁惧鍏ョ綉涓婃姤涓婚(鐩墠鍙湁绾㈠瀹�)
+            if (topic == $"/user/{Entity.DB_ResidenceData.Instance.CurrentRegion.RegionID}/app/thing/topo/found")
+            {
+                for (int i = 0; i < this.ListCloudEvent.Count; i++)
+                {
+                    //鍥炶皟浜嬩欢
+                    this.ListCloudEvent[i].CloudReceiveEvent(CloudPushEnum.A鏂拌澶囦笂鎶�, msgData);
+                }
+                return true;
+            }
+            return false;
+        }
+
+        #endregion
+
+        #region 鈻� 娣诲姞浜戠鐩戝惉_______________________
+
+        /// <summary>
+        /// 娣诲姞浜戠鎺ユ敹浜嬩欢
+        /// </summary>
+        /// <param name="i_mainKey">鏍囪瘑浜嬩欢鐨勪富閿�(鍙互闅忎究濉�,涓昏鏄拡瀵瑰涓晫闈竴璧蜂娇鐢ㄧ殑鎯呭喌)</param>
+        /// <param name="action">(鍙傛暟1:鏋氫妇 鍙傛暟2:鎺ㄩ�佹秷鎭�)</param>
+        public void AddCloudReceiveEvent(string i_mainKey, Action<CloudPushEnum, string> action)
+        {
+            try
+            {
+                var eventClass = new CloudReceiveEventClass();
+                eventClass.MainKey = i_mainKey;
+                eventClass.CloudReceiveEvent = action;
+                this.ListCloudEvent.Add(eventClass);
+            }
+            catch { }
+        }
+        #endregion
+
+        #region 鈻� 绉婚櫎浜戠鐩戝惉_______________________
+
+        /// <summary>
+        /// 绉婚櫎浜戠鎺ユ敹浜嬩欢
+        /// </summary>
+        /// <param name="i_mainKey">鏍囪瘑浜嬩欢鐨勪富閿�(鍙互闅忎究濉�,涓昏鏄拡瀵瑰涓晫闈竴璧蜂娇鐢ㄧ殑鎯呭喌)</param>
+        public void RemoveCloudReceiveEvent(string i_mainKey)
+        {
+            try
+            {
+                for (int i = 0; i < this.ListCloudEvent.Count; i++)
+                {
+                    if (this.ListCloudEvent[i].MainKey == i_mainKey)
+                    {
+                        this.ListCloudEvent.RemoveAt(i);
+                        i--;
+                    }
+                }
+            }
+            catch { }
+        }
+
+        #endregion
+
+        #region 鈻� 缁撴瀯浣揰____________________________
+
+        /// <summary>
+        /// 浜戠鎺ユ敹浜嬩欢绫�
+        /// </summary>
+        private class CloudReceiveEventClass
+        {
+            /// <summary>
+            /// 鏍囪瘑浜嬩欢鐨勪富閿�(鍙互闅忎究濉�,涓昏鏄拡瀵瑰涓晫闈竴璧蜂娇鐢ㄧ殑鎯呭喌)
+            /// </summary>
+            public string MainKey = string.Empty;
+            /// <summary>
+            /// 浜戠鎺ユ敹浜嬩欢(鍙傛暟1:鏋氫妇 鍙傛暟2:鎺ㄩ�佹秷鎭�)
+            /// </summary>
+            public Action<CloudPushEnum, string> CloudReceiveEvent = null;
+        }
+
+        #endregion
+    }
+}
diff --git a/HDL_ON/UI/UI0-Stan/Logic/HdlWifiLogic.cs b/HDL_ON/UI/UI0-Stan/Logic/HdlWifiLogic.cs
new file mode 100644
index 0000000..b4af0db
--- /dev/null
+++ b/HDL_ON/UI/UI0-Stan/Logic/HdlWifiLogic.cs
@@ -0,0 +1,99 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace HDL_ON.Stan
+{
+    /// <summary>
+    /// WiFi鐨勯�昏緫
+    /// </summary>
+    public class HdlWifiLogic
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// WiFi鐨勯�昏緫
+        /// </summary>
+        private static HdlWifiLogic m_Current = null;
+        /// <summary>
+        /// WiFi鐨勯�昏緫
+        /// </summary>
+        public static HdlWifiLogic Current
+        {
+            get
+            {
+                if (m_Current == null)
+                {
+                    m_Current = new HdlWifiLogic();
+                }
+                return m_Current;
+            }
+        }
+
+        /// <summary>
+        /// 褰撳墠wifi鐨凷SID,涔熷彨Wifi鐨勫悕瀛�(鍙栦笉鍒版椂,浼氳繑鍥瀗ull)
+        /// </summary>
+        public string SSID
+        {
+            get
+            {
+#if __IOS__
+                string ssiD = Shared.WiimuUPnP.SSID;
+                if (string.IsNullOrEmpty(ssiD) == false && ssiD.StartsWith("\"") && ssiD.EndsWith("\""))
+                {
+                    ssiD = ssiD.Substring(1, ssiD.Length - 2);
+                }
+                return ssiD;
+#endif
+#if __Android__
+                string ssiD = null;
+                HdlThreadLogic.Current.RunThread(() =>
+                {
+                    Shared.Net.NetWiFi.GetWIFISSID((strId) =>
+                    {
+                        ssiD = strId;
+                    });
+                }, ShowErrorMode.NO);
+                int count = 0;
+                while (ssiD == null)
+                {
+                    System.Threading.Thread.Sleep(50);
+                    count++;
+                    if (count == 20)
+                    {
+                        //1绉掕秴鏃�
+                        return null;
+                    }
+                }
+                if (string.IsNullOrEmpty(ssiD) == false && ssiD.StartsWith("\"") && ssiD.EndsWith("\""))
+                {
+                    ssiD = ssiD.Substring(1, ssiD.Length - 2);
+                }
+                return ssiD;
+#endif
+            }
+        }
+
+        #endregion
+
+        #region 鈻� 涓�鑸柟娉昣__________________________
+
+        /// <summary>
+        /// 鎵撳紑鎵嬫満wifi璁剧疆鐣岄潰
+        /// </summary>
+        public void OpenAppWifiSettion()
+        {
+            if (Shared.Application.DeviceType == Shared.Device.Android)
+            {
+                ///鎵撳紑WI-IF鐣岄潰
+                Shared.CommonClass.OpenAction("android.settings.WIFI_SETTINGS");
+            }
+            else
+            {
+                Shared.CommonClass.OpenAction("App-Prefs:root=WIFI");
+            }
+        }
+
+        #endregion
+    }
+}
diff --git a/HDL_ON/UI/UI1-Login/ForgetPasswordPageBLL.cs b/HDL_ON/UI/UI1-Login/ForgetPasswordPageBLL.cs
index 04f312e..79dced0 100644
--- a/HDL_ON/UI/UI1-Login/ForgetPasswordPageBLL.cs
+++ b/HDL_ON/UI/UI1-Login/ForgetPasswordPageBLL.cs
@@ -271,6 +271,7 @@
                         {
                             CloseTime = 1,
                             Direction = AMPopTipDirection.None,
+                            MaxWidth = Application.GetRealWidth(300),
                             Text = Language.StringByID(StringId.IncorrectRepeatPassword)
                         }.Show(bodyView);
                     }
diff --git a/HDL_ON/UI/UI1-Login/LoginPage.cs b/HDL_ON/UI/UI1-Login/LoginPage.cs
index 06ff41a..1110798 100644
--- a/HDL_ON/UI/UI1-Login/LoginPage.cs
+++ b/HDL_ON/UI/UI1-Login/LoginPage.cs
@@ -197,7 +197,7 @@
                 }
                 else
                 {
-                    etAccount.Text = "15971583093";//鍑夐湼"18666455392";//13375012446//13602944661//tzy 18778381374
+                    etAccount.Text = "15622703419";//鍑夐湼"18666455392";//13375012446//13602944661//tzy 18778381374
                     //15971583093 gs
                 }
                 b = !b;
diff --git a/HDL_ON/UI/UI1-Login/RegisterPageBLL.cs b/HDL_ON/UI/UI1-Login/RegisterPageBLL.cs
index 9dbc24a..4e2b8ce 100644
--- a/HDL_ON/UI/UI1-Login/RegisterPageBLL.cs
+++ b/HDL_ON/UI/UI1-Login/RegisterPageBLL.cs
@@ -299,7 +299,8 @@
                             {
                                 CloseTime = 1,
                                 Direction = AMPopTipDirection.None,
-                                Text = Language.StringByID(StringId.IncorrectRepeatPassword)
+                                Text = Language.StringByID(StringId.IncorrectRepeatPassword),
+                                MaxWidth = Application.GetRealWidth(300),
                             }.Show(bodyView);
                         }
                         else
diff --git a/HDL_ON/UI/UI2/.DS_Store b/HDL_ON/UI/UI2/.DS_Store
index 249ba1d..1f6e40e 100644
--- a/HDL_ON/UI/UI2/.DS_Store
+++ b/HDL_ON/UI/UI2/.DS_Store
Binary files differ
diff --git a/HDL_ON/UI/UI2/1-HomePage/HomePage.cs b/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
index 265043e..9366529 100644
--- a/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
+++ b/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
@@ -877,58 +877,62 @@
                     };
                     view.AddChidren(btnSwitch);
 
-                    switch (function.Spk_Prefix)
-                    {
-                        //todo 澧炲姞璁惧锛屼富椤垫敹钘忓浘鏍�
-                        case FunctionCategory.Light:
-                            #region 鐏厜 Light
-                            btnIcon.UnSelectedImagePath = "FunctionIcon/Light/LightIcon.png";
-                            btnIcon.SelectedImagePath = "FunctionIcon/Light/LightOnIcon.png";
-                            UpdataFunctionStates(function);
-                            #endregion
-                            break;
-                        case FunctionCategory.AC:
-                            #region 绌鸿皟 AC
-                            btnIcon.UnSelectedImagePath = "FunctionIcon/AC/AcIcon.png";
-                            btnIcon.SelectedImagePath = "FunctionIcon/AC/AcOnIcon.png";
-                            #endregion
-                            break;
-                        case FunctionCategory.FloorHeat:
-                            #region 鍦扮儹
-                            btnIcon.UnSelectedImagePath = "FunctionIcon/FloorHeating/FloorHeatingIcon.png";
-                            btnIcon.SelectedImagePath = "FunctionIcon/FloorHeating/FloorHeatingOnIcon.png";
-                            #endregion
-                            break;
-                        case FunctionCategory.Electric:
-                            switch (function.spk)
-                            {
-                                case SPK.ElectricSocket:
-                                    btnIcon.UnSelectedImagePath = "FunctionIcon/Socket/SocketIcon.png";
-                                    btnIcon.SelectedImagePath = "FunctionIcon/Socket/SocketOnIcon.png";
-                                    break;
-                                case SPK.ElectricFan:
-                                    btnIcon.UnSelectedImagePath = "FunctionIcon/Electrical/FanIcon.png";
-                                    btnIcon.SelectedImagePath = "FunctionIcon/Electrical/FanOnIcon.png";
-                                    break;
-                                case SPK.ElectricTuyaAirCleaner:
-                                    btnIcon.SelectedImagePath = "FunctionIcon/HomePageIcon/AirCleanerIcon.png";
-                                    btnIcon.UnSelectedImagePath = "FunctionIcon/HomePageIcon/AirCleanerIconOn.png";
-                                    break;
-                                case SPK.ElectricTuyaFan:
-                                    btnIcon.SelectedImagePath = "FunctionIcon/HomePageIcon/FanIcon.png";
-                                    btnIcon.UnSelectedImagePath = "FunctionIcon/HomePageIcon/FanIconOn.png";
-                                    break;
-                                case SPK.ElectricTuyaWaterValve:
-                                    btnIcon.SelectedImagePath = "FunctionIcon/HomePageIcon/WaterValveIcon.png";
-                                    btnIcon.UnSelectedImagePath = "FunctionIcon/HomePageIcon/WaterValveIconOn.png";
-                                    break;
-                                case SPK.ElectricTuyaWeepRobot:
-                                    btnIcon.SelectedImagePath = "FunctionIcon/HomePageIcon/WeepRobotIcon.png";
-                                    btnIcon.UnSelectedImagePath = "FunctionIcon/HomePageIcon/WeepRobotIconOn.png";
-                                    break;
-                            }
-                            break;
-                    }
+
+                    btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_blue.png";
+                    btnIcon.SelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_white.png";
+
+                    //switch (function.Spk_Prefix)
+                    //{
+                    //    //todo 澧炲姞璁惧锛屼富椤垫敹钘忓浘鏍�
+                    //    case FunctionCategory.Light:
+                    //        #region 鐏厜 Light
+                    //        btnIcon.UnSelectedImagePath = "FunctionIcon/Light/LightIcon.png";
+                    //        btnIcon.SelectedImagePath = "FunctionIcon/Light/LightOnIcon.png";
+                    //        UpdataFunctionStates(function);
+                    //        #endregion
+                    //        break;
+                    //    case FunctionCategory.AC:
+                    //        #region 绌鸿皟 AC
+                    //        btnIcon.UnSelectedImagePath = "FunctionIcon/AC/AcIcon.png";
+                    //        btnIcon.SelectedImagePath = "FunctionIcon/AC/AcOnIcon.png";
+                    //        #endregion
+                    //        break;
+                    //    case FunctionCategory.FloorHeat:
+                    //        #region 鍦扮儹
+                    //        btnIcon.UnSelectedImagePath = "FunctionIcon/FloorHeating/FloorHeatingIcon.png";
+                    //        btnIcon.SelectedImagePath = "FunctionIcon/FloorHeating/FloorHeatingOnIcon.png";
+                    //        #endregion
+                    //        break;
+                    //    case FunctionCategory.Electric:
+                    //        switch (function.spk)
+                    //        {
+                    //            case SPK.ElectricSocket:
+                    //                btnIcon.UnSelectedImagePath = "FunctionIcon/Socket/SocketIcon.png";
+                    //                btnIcon.SelectedImagePath = "FunctionIcon/Socket/SocketOnIcon.png";
+                    //                break;
+                    //            case SPK.ElectricFan:
+                    //                btnIcon.UnSelectedImagePath = "FunctionIcon/Electrical/FanIcon.png";
+                    //                btnIcon.SelectedImagePath = "FunctionIcon/Electrical/FanOnIcon.png";
+                    //                break;
+                    //            case SPK.ElectricTuyaAirCleaner:
+                    //                btnIcon.SelectedImagePath = "FunctionIcon/HomePageIcon/AirCleanerIcon.png";
+                    //                btnIcon.UnSelectedImagePath = "FunctionIcon/HomePageIcon/AirCleanerIconOn.png";
+                    //                break;
+                    //            case SPK.ElectricTuyaFan:
+                    //                btnIcon.SelectedImagePath = "FunctionIcon/HomePageIcon/FanIcon.png";
+                    //                btnIcon.UnSelectedImagePath = "FunctionIcon/HomePageIcon/FanIconOn.png";
+                    //                break;
+                    //            case SPK.ElectricTuyaWaterValve:
+                    //                btnIcon.SelectedImagePath = "FunctionIcon/HomePageIcon/WaterValveIcon.png";
+                    //                btnIcon.UnSelectedImagePath = "FunctionIcon/HomePageIcon/WaterValveIconOn.png";
+                    //                break;
+                    //            case SPK.ElectricTuyaWeepRobot:
+                    //                btnIcon.SelectedImagePath = "FunctionIcon/HomePageIcon/WeepRobotIcon.png";
+                    //                btnIcon.UnSelectedImagePath = "FunctionIcon/HomePageIcon/WeepRobotIconOn.png";
+                    //                break;
+                    //        }
+                    //        break;
+                    //}
                     LoadEvent_SwitchFunction(function, btnSwitch);
                 }
                 //鍙栨秷鏀惰棌浜嬩欢
diff --git a/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs b/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs
index f2c7f27..f18f109 100644
--- a/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs
+++ b/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs
@@ -26,7 +26,7 @@
         /// </summary>
         public static void RefreshFunctionView()
         {
-            if (bodyView != null)
+            if (bodyView != null && MainPage.CurPageIndex==0)
             {
                 bodyView.LoadDeviceFunctionControlZone();
             }
diff --git a/HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs b/HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs
index 63256f0..2290c5f 100644
--- a/HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs
+++ b/HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs
@@ -755,12 +755,7 @@
                         btnName.TextID = StringId.SecurityMonitoring;
                         btnFunctionViewBg.MouseUpEventHandler = (sender, e) =>
                         {
-                          
-#if __IOS__
-                            EZSDK.IOS.EZSDK.Go2EZvizMonitor();
-#else  //瀹夊崜鎽勫儚澶�
                             HDLCommon.Current.Go2EZvizMonitor(bodyView);
-#endif
                         };
                         break;
                     case ShowFunction.Sensor:
diff --git a/HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs b/HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs
index 4727b80..c8b1509 100644
--- a/HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs
+++ b/HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs
@@ -61,6 +61,69 @@
             }
             LoadDiv();
 
+            //switch (function.spk)
+            //{
+            //    case SPK.CurtainSwitch:
+            //        btnIcon.UnSelectedImagePath = "FunctionIcon/Curtain/CurtainThinIcon.png";
+            //        break;
+            //    case SPK.CurtainTrietex:
+            //        btnIcon.UnSelectedImagePath = "FunctionIcon/Curtain/MotorCurtainIcon.png";
+            //        break;
+            //    case SPK.CurtainRoller:
+            //        btnIcon.UnSelectedImagePath = "FunctionIcon/Curtain/RollingShutterIcon.png";
+            //        break;
+            //    case SPK.SensorPir:
+            //        btnIcon.UnSelectedImagePath = "FunctionIcon/ArmSensor/ArmSensorPirIcon.png";
+            //        break;
+            //    case SPK.SensorWater:
+            //        btnIcon.UnSelectedImagePath = "FunctionIcon/ArmSensor/ArmSensorWaterImmersionIcon.png";
+            //        break;
+            //    case SPK.SensorSmoke:
+            //        btnIcon.UnSelectedImagePath = "FunctionIcon/ArmSensor/ArmSensorSmokeIcon.png";
+            //        break;
+            //    case SPK.SensorDoorWindow:
+            //        btnIcon.UnSelectedImagePath = "FunctionIcon/ArmSensor/ArmSensorDoorIcon.png";
+            //        break;
+            //    case SPK.MusicStandard:
+            //        btnIcon.UnSelectedImagePath = "FunctionIcon/Music/MusicThinIcon.png";
+            //        break;
+            //    case SPK.ClothesHanger:
+            //        btnIcon.UnSelectedImagePath = "FunctionIcon/Electrical/ClothesHanger/ClothesHangerGrayIcon.png";
+            //        break;
+            //    case SPK.ElectricSocket:
+            //        btnIcon.UnSelectedImagePath = "FunctionIcon/Socket/SocketThinIcon.png";
+            //        break;
+            //    case SPK.ElectricFan:
+            //    case SPK.ElectricTuyaFan:
+            //        btnIcon.UnSelectedImagePath = "FunctionIcon/Electrical/FanThinIcon.png";
+            //        break;
+            //    case SPK.ElectricTV:
+            //        btnIcon.UnSelectedImagePath = "FunctionIcon/Electrical/TVThinIcon.png";
+            //        break;
+            //    case SPK.ElectricTuyaAirCleaner:
+            //        btnIcon.UnSelectedImagePath = "FunctionIcon/Electrical/AirCleanerThiinIcon.png";
+            //        break;
+            //    case SPK.ElectricTuyaWeepRobot:
+            //        btnIcon.UnSelectedImagePath = "FunctionIcon/Electrical/WeepRobotThinIcon.png";
+            //        break;
+            //    case SPK.ElectricTuyaWaterValve:
+            //        btnIcon.UnSelectedImagePath = "FunctionIcon/Electrical/WaterValve/WaterValveIcon.png";
+            //        break;
+            //    case SPK.AcStandard:
+            //        btnIcon.UnSelectedImagePath = "FunctionIcon/AC/AcThinIcon1.png";
+            //        break;
+            //    case SPK.AcIr:
+            //        btnIcon.UnSelectedImagePath = "FunctionIcon/AC/AcThinIcon1.png";
+            //        break;
+            //    case SPK.FloorHeatStandard:
+            //        btnIcon.UnSelectedImagePath = "FunctionIcon/FloorHeating/FloorHeatingThinIcon.png";
+            //        break;
+            //    default:
+            //        btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/{function.IconName}.png";
+            //        break;
+            //}
+            btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/{function.IconName}.png";
+
             if (function.Spk_Prefix == FunctionCategory.Curtain//绐楀笜娌℃湁寮�鍏虫寜閽�
                 || function.Spk_Prefix == FunctionCategory.Music//闊充箰娌℃湁寮�鍏虫寜閽�
                 || function.Spk_Prefix == FunctionCategory.Sensor//浼犳劅鍣ㄦ病鏈夊紑鍏虫寜閽�
@@ -69,39 +132,10 @@
                 switch (function.Spk_Prefix)
                 {
                     case FunctionCategory.Curtain:
-                        switch (function.spk)
-                        {
-                            case SPK.CurtainSwitch:
-                                btnIcon.UnSelectedImagePath = "FunctionIcon/Curtain/CurtainThinIcon.png";
-                                break;
-                            case SPK.CurtainTrietex:
-                                btnIcon.UnSelectedImagePath = "FunctionIcon/Curtain/MotorCurtainIcon.png";
-                                break;
-                            case SPK.CurtainRoller:
-                                btnIcon.UnSelectedImagePath = "FunctionIcon/Curtain/RollingShutterIcon.png";
-                                break;
-                        }
+                      
                         CurtainFragment();
                         break;
                     case FunctionCategory.Sensor:
-                        switch (function.spk)
-                        {
-                            case SPK.SensorPir:
-                                btnIcon.UnSelectedImagePath = "FunctionIcon/ArmSensor/ArmSensorPirIcon.png";
-                                break;
-                            case SPK.SensorWater:
-                                btnIcon.UnSelectedImagePath = "FunctionIcon/ArmSensor/ArmSensorWaterImmersionIcon.png";
-                                break;
-                            case SPK.SensorSmoke:
-                                btnIcon.UnSelectedImagePath = "FunctionIcon/ArmSensor/ArmSensorSmokeIcon.png";
-                                break;
-                            case SPK.SensorDoorWindow:
-                                btnIcon.UnSelectedImagePath = "FunctionIcon/ArmSensor/ArmSensorDoorIcon.png";
-                                break;
-                            default:
-
-                                break;
-                        }
                         var powerLowTipAttr = function.attributes.Find((obj) => obj.key == FunctionAttributeKey.BatteryState);
                         if (powerLowTipAttr != null)
                         {
@@ -122,7 +156,6 @@
 
                         break;
                     case FunctionCategory.Music:
-                        btnIcon.UnSelectedImagePath = "FunctionIcon/Music/MusicThinIcon.png";
                         MusicFragment();
                         break;
 
@@ -132,7 +165,6 @@
             {
                 if (function.spk == SPK.ClothesHanger)//鏅捐。鏋�
                 {
-                    btnIcon.UnSelectedImagePath = "FunctionIcon/Electrical/ClothesHanger/ClothesHangerGrayIcon.png";
                     ClothesHangerFragment();
                 }
                 else
@@ -181,51 +213,20 @@
                     switch (function.Spk_Prefix)
                     {
                         case FunctionCategory.AC:
-                            switch (function.spk)
-                            {
-                                case SPK.AcStandard:
-                                    btnIcon.UnSelectedImagePath = "FunctionIcon/AC/AcThinIcon1.png";
-                                    LoadLastStatesButton();
-                                    break;
-                            }
+                            LoadLastStatesButton();
+                            break;
+                        case FunctionCategory.IR:
+                            LoadLastStatesButton();
                             break;
                         case FunctionCategory.FloorHeat:
-                            switch (function.spk)
-                            {
-                                case SPK.FloorHeatStandard:
-                                    btnIcon.UnSelectedImagePath = "FunctionIcon/FloorHeating/FloorHeatingThinIcon.png";
-                                    LoadLastStatesButton();
-                                    break;
-                            }
+                            LoadLastStatesButton();
                             break;
                         case FunctionCategory.Light:
-                            btnIcon.UnSelectedImagePath = "FunctionIcon/Light/LightThinIcon.png";
+                            //btnIcon.UnSelectedImagePath = "FunctionIcon/Light/LightThinIcon.png";
                             btnSwitch.IsSelected = function.trait_on_off.curValue.ToString() == "on";
                             LoadLightControl();
                             break;
                         case FunctionCategory.Electric:
-                            switch (function.spk)
-                            {
-                                case SPK.ElectricSocket:
-                                    btnIcon.UnSelectedImagePath = "FunctionIcon/Socket/SocketThinIcon.png";
-                                    break;
-                                case SPK.ElectricFan:
-                                case SPK.ElectricTuyaFan:
-                                    btnIcon.UnSelectedImagePath = "FunctionIcon/Electrical/FanThinIcon.png";
-                                    break;
-                                case SPK.ElectricTV:
-                                    btnIcon.UnSelectedImagePath = "FunctionIcon/Electrical/TVThinIcon.png";
-                                    break;
-                                case SPK.ElectricTuyaAirCleaner:
-                                    btnIcon.UnSelectedImagePath = "FunctionIcon/Electrical/AirCleanerThiinIcon.png";
-                                    break;
-                                case SPK.ElectricTuyaWeepRobot:
-                                    btnIcon.UnSelectedImagePath = "FunctionIcon/Electrical/WeepRobotThinIcon.png";
-                                    break;
-                                case SPK.ElectricTuyaWaterValve:
-                                    btnIcon.UnSelectedImagePath = "FunctionIcon/Electrical/WaterValve/WaterValveIcon.png";
-                                    break;
-                            }
                             btnSwitch.IsSelected = function.trait_on_off.curValue.ToString() == "on";
                             break;
                     }
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection1Page.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection1Page.cs
new file mode 100644
index 0000000..17c9dc1
--- /dev/null
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection1Page.cs
@@ -0,0 +1,78 @@
+锘縰sing HDL_ON.Stan;
+using Shared;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace HDL_ON.UI
+{
+    /// <summary>
+    /// 娣诲姞Evoyo鐨凪ini鏅鸿兘閬ユ帶鍣ㄦ楠�1鐣岄潰
+    /// </summary>
+    public class AddMiniRemoteControlDirection1Page : EditorCommonForm
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
+        /// </summary>
+        public void ShowForm()
+        {
+            //璁剧疆澶撮儴淇℃伅
+            base.SetTitleText(Language.StringByID(StringId.AddInfraredRemoteControl));
+            //杩欎釜鐣岄潰鐨勮儗鏅渶瑕佺櫧鑹�
+            bodyFrameLayout.BackgroundColor = UI.CSS.CSS_Color.MainBackgroundColor;
+
+            //鍒濆鍖栦腑閮ㄤ俊鎭�
+            this.InitMiddleFrame();
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栦腑閮ㄤ俊鎭�
+        /// </summary>
+        private void InitMiddleFrame()
+        {
+            //鍥剧墖
+            var btnPic = new PicViewControl(149, 95);
+            btnPic.Y = Application.GetRealHeight(99);
+            btnPic.Gravity = Gravity.CenterHorizontal;
+            btnPic.UnSelectedImagePath = "PersonalCenter/AddDevice/MiniRemoteControlBigPictrue.png";
+            bodyFrameLayout.AddChidren(btnPic);
+
+            //闀挎寜绾㈠閬ユ帶鍣ㄦ寜閽�10绉掞紝鎸囩ず鐏摑鑹插揩闂�
+            var strMsg = Language.StringByID(StringId.AddInfraredRemoteControlMsg1);
+            var intYY = this.AddListMsgControls(bodyFrameLayout, strMsg, CSS.CSS_FontSize.TextFontSize,
+                CSS.CSS_Color.FirstLevelTitleColor, Application.GetRealHeight(20), Application.GetRealHeight(408));
+
+            //璇风‘淇濇偍鐨勮摑鐗欏凡寮�鍚苟澶勪簬鍙互琚悳绱㈢姸鎬�
+            strMsg = Language.StringByID(StringId.AddInfraredRemoteControlMsg2);
+            this.AddListMsgControls(bodyFrameLayout, strMsg, CSS.CSS_FontSize.PromptFontSize_FirstLevel,
+                CSS.CSS_Color.PromptingColor1, Application.GetRealHeight(18), intYY + Application.GetRealHeight(4));
+
+            //涓嬩竴姝�
+            var btnNext = this.AddBottomClickButton(Language.StringByID(StringId.Next));
+            btnNext.ButtonClickEvent += (sender, e) =>
+            {
+                //妫�娴嬭摑鐗欓渶瑕佺殑涓滆タ
+                btnNext.CanClick = false;
+                HdlBluetoothLogic.Current.CheckCanScanBluetooth((result) =>
+                {
+                    btnNext.CanClick = true;
+                    if (result == true)
+                    {
+                        this.CloseForm();
+                        var form = new AddMiniRemoteControlDirection2Page();
+                        //鍒濆wifi鍜屽瘑鐮佷负绌�
+                        form.AddForm(string.Empty, string.Empty);
+                    }
+                });
+            };
+        }
+
+        #endregion
+    }
+}
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection2Page.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection2Page.cs
new file mode 100644
index 0000000..8f46dd9
--- /dev/null
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection2Page.cs
@@ -0,0 +1,308 @@
+锘縰sing HDL_ON.Stan;
+using Shared;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace HDL_ON.UI
+{
+    /// <summary>
+    /// 娣诲姞Evoyo鐨凪ini鏅鸿兘閬ユ帶鍣ㄦ楠�2鐣岄潰
+    /// </summary>
+    public class AddMiniRemoteControlDirection2Page : EditorCommonForm
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// wifi鍚�
+        /// </summary>
+        private string wifiName = string.Empty;
+        /// <summary>
+        /// wifi瀵嗙爜
+        /// </summary>
+        private string wifiPassword = string.Empty;
+        /// <summary>
+        /// 钃濈墮璁惧
+        /// </summary>
+        private List<HdlBluetoothLogic.BluetoothInfo> listDevice = new List<HdlBluetoothLogic.BluetoothInfo>();
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
+        /// </summary>
+        /// <param name="i_wifiName">wifi鍚�(鍒殑鐣岄潰浼犺繃鏉ョ殑)</param>
+        /// <param name="i_wifiPassword">(鍒殑鐣岄潰浼犺繃鏉ョ殑)</param>
+        public void ShowForm(string i_wifiName, string i_wifiPassword)
+        {
+            this.wifiName = i_wifiName;
+            this.wifiPassword = i_wifiPassword;
+
+            //璁剧疆澶撮儴淇℃伅
+            base.SetTitleText(Language.StringByID(StringId.AddInfraredRemoteControl));
+            //杩欎釜鐣岄潰鐨勮儗鏅渶瑕佺櫧鑹�
+            bodyFrameLayout.BackgroundColor = UI.CSS.CSS_Color.MainBackgroundColor;
+
+            //鍒濆鍖栦腑閮ㄤ俊鎭�
+            this.InitMiddleFrame();
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栦腑閮ㄤ俊鎭�
+        /// </summary>
+        private void InitMiddleFrame()
+        {
+            //娓呯┖body
+            this.ClearBodyFrame();
+
+            //杩涘害鏉�
+            var btnProgress = new ProgressRowBar(180, 6);
+            btnProgress.Y = Application.GetRealHeight(218);
+            btnProgress.Gravity = Gravity.CenterHorizontal;
+            bodyFrameLayout.AddChidren(btnProgress);
+            btnProgress.StartMode1(true);
+
+            //璁惧鎼滅储涓�...
+            var btnSearch = new NormalViewControl(bodyFrameLayout.Width, Application.GetRealHeight(20), false);
+            btnSearch.Y = btnProgress.Bottom + Application.GetRealHeight(40);
+            btnSearch.TextColor = CSS.CSS_Color.FirstLevelTitleColor;
+            btnSearch.TextID = StringId.SearchingDevice;
+            btnSearch.TextAlignment = TextAlignment.Center;
+            bodyFrameLayout.AddChidren(btnSearch);
+
+            //璇风‘淇濇偍鐨勮摑鐗欏凡寮�鍚苟澶勪簬鍙互琚悳绱㈢姸鎬�
+            var strMsg = Language.StringByID(StringId.AddInfraredRemoteControlMsg2);
+            this.AddListMsgControls(bodyFrameLayout, strMsg, CSS.CSS_FontSize.TextFontSize,
+                CSS.CSS_Color.FirstLevelTitleColor, Application.GetRealHeight(20), btnSearch.Bottom + Application.GetRealHeight(4));
+
+            //寮�鍚繘搴︽潯鐗规晥
+            this.StartProgressSpecialEffects(btnProgress);
+        }
+
+        #endregion
+
+        #region 鈻� 鎼滅储钃濈墮___________________________
+
+        /// <summary>
+        /// 鎼滅储钃濈墮
+        /// </summary>
+        private void StartSearchBluetooth()
+        {
+            //寮�濮嬫悳绱㈣摑鐗�
+            HdlBluetoothLogic.Current.ScanBluetooth(2, (listBluetooth) =>
+            {
+                foreach (var device in listBluetooth)
+                {
+                    //鍙湁杩欎釜鏍囪瘑,鎵嶆槸绾㈠瀹�
+                    if (device.Name.StartsWith("MIR01R-LK.10") == true)
+                    {
+                        //鏄寚瀹氱殑绾㈠瀹濊澶�
+                        listDevice.Add(device);
+                    }
+                }
+                if (listDevice.Count == 0)
+                {
+                    //鎽ф瘉钃濈墮缂撳瓨
+                    HdlBluetoothLogic.Current.Dispone();
+                }
+                else if (listDevice.Count == 1)
+                {
+                    //濡傛灉鍙娴嬪埌涓�涓�,鍒欑洿鎺ヨ繛鎺�
+                    HdlBluetoothLogic.Current.ContectBluetooth(listDevice[0], (result) =>
+                    {
+                        if (result == true && this.Parent != null)
+                        {
+                            //杩炴帴鎴愬姛,鍒欒烦杞埌涓嬩竴涓晫闈�
+                            HdlThreadLogic.Current.RunMain(() =>
+                            {
+                                this.CloseForm();
+                                var form = new AddMiniRemoteControlDirection3Page();
+                                form.AddForm(this.wifiName, this.wifiPassword);
+                            });
+                        }
+                        else
+                        {
+                            HdlBluetoothLogic.Current.Dispone();
+                        }
+                    });
+                }
+                else
+                {
+                    var listName = new List<string>();
+                    foreach (var device in listDevice)
+                    {
+                        listName.Add(device.Name);
+                    }
+                    //鏄剧ず閫夋嫨钃濈墮鍒楄〃鐨勭晫闈�(褰撳尮閰嶅埌澶氫釜钃濈墮鐨勬椂鍊欎娇鐢�)
+                    this.ShowBluetoothListView(listName, (index) =>
+                    {
+                        //濡傛灉鍙娴嬪埌涓�涓�,鍒欑洿鎺ヨ繛鎺�
+                        HdlBluetoothLogic.Current.ContectBluetooth(listDevice[index], (result) =>
+                        {
+                            if (result == true)
+                            {
+                                //杩炴帴鎴愬姛,鍒欒烦杞埌涓嬩竴涓晫闈�
+                                HdlThreadLogic.Current.RunMain(() =>
+                                {
+                                    this.CloseForm();
+                                    var form = new AddMiniRemoteControlDirection3Page();
+                                    form.AddForm(this.wifiName, this.wifiPassword);
+                                });
+                            }
+                            else
+                            {
+                                HdlBluetoothLogic.Current.Dispone();
+                            }
+                        });
+                    });
+                }
+            });
+        }
+
+        /// <summary>
+        /// 寮�鍚繘搴︽潯鐗规晥
+        /// </summary>
+        private void StartProgressSpecialEffects(ProgressRowBar btnProgress)
+        {
+            //鎼滅储鏃堕棿(绉�)
+            int searchTime = 180;
+            HdlThreadLogic.Current.RunThread(() =>
+            {
+                //杩涘害鏉$壒鏁�
+                for (int i = 1; i <= searchTime; i++)
+                {
+                    System.Threading.Thread.Sleep(1000);
+                    HdlThreadLogic.Current.RunMain(() =>
+                    {
+                        //杩涘害鏉$壒鏁�
+                        btnProgress.SetValue(i, searchTime);
+                    });
+
+                    //鐣岄潰鍏抽棴
+                    if (this.Parent == null)
+                    {
+                        break;
+                    }
+                    //濡傛灉宸茬粡鎼滅储鍒拌摑鐗�,鍒欑洿鎺ュ埌100%
+                    if (listDevice.Count > 0)
+                    {
+                        HdlThreadLogic.Current.RunMain(() =>
+                        {
+                            btnProgress.SetValue(searchTime, searchTime);
+                        });
+                        break;
+                    }
+                    if (i % 5 == 1)
+                    {
+                        //姣�5绉掓悳绱竴娆�
+                        this.StartSearchBluetooth();
+                    }
+                    //瓒呮椂
+                    if (i >= searchTime)
+                    {
+                        System.Threading.Thread.Sleep(3000);
+                        //鏈�鍚庣殑鏃堕棿杩樻槸鎼滀笉鍒扮殑璇�
+                        if (listDevice.Count == 0)
+                        {
+                            //鏄剧ず澶辫触鐣岄潰
+                            HdlThreadLogic.Current.RunMain(() =>
+                            {
+                                this.ShowFailView();
+                            });
+                        }
+                        break;
+                    }
+                }
+            });
+        }
+
+        #endregion
+
+        #region 鈻� 鏄剧ず閫夋嫨钃濈墮鍒楄〃鐨勭晫闈____________
+
+        /// <summary>
+        /// 鏄剧ず閫夋嫨钃濈墮鍒楄〃鐨勭晫闈�(褰撳尮閰嶅埌澶氫釜钃濈墮鐨勬椂鍊欎娇鐢�)
+        /// </summary>
+        /// <param name="listName">钃濈墮鍚嶅瓧鍒楄〃</param>
+        /// <param name="selectEvent">閫夋嫨浜嬩欢(鑰冭檻鍒癐os鍜屽畨鍗�,鎵�浠ヨ繖鏍峰畾鍙傛暟)</param>
+        private void ShowBluetoothListView(List<string> listName, Action<int> selectEvent)
+        {
+            if (this.Parent == null) { return; }
+
+            HdlThreadLogic.Current.RunMain(() =>
+            {
+                var contr = new BottomItemSelectControl(listName.Count, Language.StringByID(StringId.ChooseInfraredRemoteControl), false);
+                //鍒濆鍖�
+                contr.AddRowMenu(listName, new List<int>());
+                contr.FinishOnlyEvent += (div, value) =>
+                {
+                    if (div == 0)
+                    {
+                        //濡傛灉鐐瑰嚮浜嗗彇娑�,鍒欏叧闂繖涓晫闈�,涓嶇浜�
+                        this.CloseForm();
+                    }
+                    else
+                    {
+                        //璋冪敤鍥炶皟鍑芥暟
+                        selectEvent?.Invoke(value);
+                    }
+                };
+            });
+        }
+
+        #endregion
+
+        #region 鈻� 鏄剧ず澶辫触鐣岄潰_______________________
+
+        /// <summary>
+        /// 鏄剧ず澶辫触鐣岄潰
+        /// </summary>
+        private void ShowFailView()
+        {
+            //娓呯┖body
+            this.ClearBodyFrame();
+            //鍥剧墖
+            var btnPic = new PicViewControl(180, 180);
+            btnPic.Y = Application.GetRealHeight(48);
+            btnPic.Gravity = Gravity.CenterHorizontal;
+            btnPic.UnSelectedImagePath = "Public/TipIcon_Failed.png";
+            bodyFrameLayout.AddChidren(btnPic);
+            //娌℃湁鍙戠幇绾㈠閬ユ帶鍣�
+            var btnMsgNot = new NormalViewControl(bodyFrameLayout.Width, Application.GetRealHeight(22), false);
+            btnMsgNot.Y = btnPic.Bottom + Application.GetRealHeight(16);
+            btnMsgNot.TextAlignment = TextAlignment.Center;
+            btnMsgNot.TextColor = CSS.CSS_Color.AuxiliaryColor2;
+            btnMsgNot.TextSize = CSS.CSS_FontSize.SubheadingFontSize;
+            btnMsgNot.TextID = StringId.NoInfraredRemoteControlFound;
+            bodyFrameLayout.AddChidren(btnMsgNot);
+            //1銆佽妫�鏌ヨ澶囨槸鍚︽甯搁�氱數
+            //2銆佽妫�鏌ヨ摑鐗欏姛鑳芥槸鍚︽甯稿紑鍚�
+            //3銆佽妫�鏌ユ寚绀虹伅鏄惁钃濊壊蹇棯鐘舵��
+            var strMsg = Language.StringByID(StringId.AddInfraredRemoteControlMsg3);
+            this.AddListMsgControls(bodyFrameLayout, strMsg, CSS.CSS_FontSize.TextFontSize,
+                CSS.CSS_Color.TextualColor, Application.GetRealHeight(20), btnMsgNot.Bottom + Application.GetRealHeight(8),
+                 TextAlignment.Center, true);
+
+            //閲嶆柊鎼滅储
+            var btnReSearch = this.AddBottomClickButton(Language.StringByID(StringId.ReSearch));
+            btnReSearch.ButtonClickEvent += (sender, e) =>
+            {
+                //妫�娴嬭摑鐗欓渶瑕佺殑涓滆タ
+                btnReSearch.CanClick = false;
+                HdlBluetoothLogic.Current.CheckCanScanBluetooth((result) =>
+                {
+                    btnReSearch.CanClick = true;
+                    if (result == true)
+                    {
+                        //鍒濆鍖栦腑閮ㄤ俊鎭�
+                        this.InitMiddleFrame();
+                    }
+                });
+            };
+        }
+
+        #endregion
+    }
+}
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection3Page.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection3Page.cs
new file mode 100644
index 0000000..3d08125
--- /dev/null
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection3Page.cs
@@ -0,0 +1,215 @@
+锘縰sing HDL_ON.Stan;
+using Shared;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace HDL_ON.UI
+{
+    /// <summary>
+    /// 娣诲姞Evoyo鐨凪ini鏅鸿兘閬ユ帶鍣ㄦ楠�3鐣岄潰
+    /// </summary>
+    public class AddMiniRemoteControlDirection3Page : EditorCommonForm
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 褰撳墠wifi鐨勫悕瀛�
+        /// </summary>
+        private string NowWifiName = string.Empty;
+        /// <summary>
+        /// wifi鐨勭嚎绋嬫槸鍚﹀惎鍔�
+        /// </summary>
+        private bool WifiThreadAction = false;
+        /// <summary>
+        /// wifi鍚�(鍒殑鐣岄潰浼犺繃鏉ョ殑)
+        /// </summary>
+        private string wifiName = string.Empty;
+        /// <summary>
+        /// wifi瀵嗙爜(鍒殑鐣岄潰浼犺繃鏉ョ殑)
+        /// </summary>
+        private string wifiPassword = string.Empty;
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
+        /// </summary>
+        /// <param name="i_wifiName">wifi鍚�(鍒殑鐣岄潰浼犺繃鏉ョ殑)</param>
+        /// <param name="i_wifiPassword">(鍒殑鐣岄潰浼犺繃鏉ョ殑)</param>
+        public void ShowForm(string i_wifiName, string i_wifiPassword)
+        {
+            this.wifiName = i_wifiName;
+            this.wifiPassword = i_wifiPassword;
+
+            //璁剧疆澶撮儴淇℃伅
+            base.SetTitleText(Language.StringByID(StringId.AddInfraredRemoteControl));
+            //杩欎釜鐣岄潰鐨勮儗鏅渶瑕佺櫧鑹�
+            bodyFrameLayout.BackgroundColor = UI.CSS.CSS_Color.MainBackgroundColor;
+
+            //鍒濆鍖栦腑閮ㄤ俊鎭�
+            this.InitMiddleFrame();
+
+            //閲嶅啓搴曞眰鐨勮繑鍥炴寜閿�
+            this.BackButtonClickEvent += () =>
+            {
+                //鍏虫帀钃濈墮
+                HdlBluetoothLogic.Current.Dispone();
+                this.CloseForm();
+            };
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栦腑閮ㄤ俊鎭�
+        /// </summary>
+        private void InitMiddleFrame()
+        {
+            //杩炴帴WiFi
+            var btnWifi = new NormalViewControl(200, 28, true);
+            btnWifi.X = HdlControlResourse.XXLeft;
+            btnWifi.Y = Application.GetRealHeight(16);
+            btnWifi.IsBold = true;
+            btnWifi.TextColor = CSS.CSS_Color.FirstLevelTitleColor;
+            btnWifi.TextSize = CSS.CSS_FontSize.EmphasisFontSize_Secondary;
+            btnWifi.TextID = StringId.ConnectWiFi;
+            bodyFrameLayout.AddChidren(btnWifi);
+            //鐩墠鍙敮鎸�2.4G WiFi缃戠粶
+            //鏆備笉鏀寔甯︽湁涓枃瀛楃鐨刉iFi鍚嶇О
+            var strMsg = Language.StringByID(StringId.AddInfraredRemoteControlMsg4);
+            int yy = this.AddListMsgControls(bodyFrameLayout, strMsg, CSS.CSS_FontSize.TextFontSize, CSS.CSS_Color.TextualColor,
+                Application.GetRealHeight(20), btnWifi.Bottom + Application.GetRealHeight(16), TextAlignment.CenterLeft);
+
+            //wifi琛�
+            var rowWifi = new RowLayoutControl();
+            rowWifi.Y = yy + Application.GetRealHeight(32);
+            bodyFrameLayout.AddChidren(rowWifi);
+            //wifi鍚嶅瓧
+            var txtWifi = rowWifi.frameTable.AddLeftInput(wifiName, 200);
+            txtWifi.TextColor = CSS.CSS_Color.FirstLevelTitleColor;
+            //搴曠嚎
+            rowWifi.frameTable.AddBottomLine();
+            //鍚戝彸鍥炬爣
+            var btnRight = rowWifi.frameTable.AddMostRightEmptyIcon(24, 24);
+            btnRight.UnSelectedImagePath = "Public/Right.png";
+            btnRight.ButtonClickEvent += (sender, e) =>
+            {
+                //鎵撳紑鎵嬫満wifi璁剧疆鐣岄潰
+                HdlWifiLogic.Current.OpenAppWifiSettion();
+                //鍒锋柊wifi鍚嶅瓧
+                this.RefreshWifiName(txtWifi);
+            };
+            if (this.wifiName != string.Empty)
+            {
+                //杩欎釜鏃跺�欐槸閲嶈瘯妯″紡,涓嶅厑璁哥偣鍑�
+                btnRight.CanClick = false;
+            }
+
+            //瀵嗙爜琛�
+            var rowPsw = new RowLayoutControl();
+            rowPsw.Y = rowWifi.Bottom;
+            bodyFrameLayout.AddChidren(rowPsw);
+            //瀵嗙爜
+            var txtPsw = rowPsw.frameTable.AddLeftInput(wifiPassword, 200);
+            txtPsw.TextColor = CSS.CSS_Color.FirstLevelTitleColor;
+            txtPsw.PlaceholderText = Language.StringByID(StringId.Password);
+            txtPsw.SecureTextEntry = true;
+            //搴曠嚎
+            rowPsw.frameTable.AddBottomLine();
+            //鐪肩潧鍥炬爣
+            var btnView = rowPsw.frameTable.AddMostRightEmptyIcon(24, 24);
+            btnView.UnSelectedImagePath = "LoginIcon/HidePasswordIcon.png";
+            btnView.SelectedImagePath = "LoginIcon/ShowPasswordIcon.png";
+            btnView.ButtonClickEvent += (sender, e) =>
+            {
+                btnView.IsSelected = !btnView.IsSelected;
+                txtPsw.SecureTextEntry = !btnView.IsSelected;
+            };
+            if (this.wifiName != string.Empty)
+            {
+                //杩欎釜鏃跺�欐槸閲嶈瘯妯″紡,涓嶉渶瑕佺偣鍑�
+                HdlThreadLogic.Current.RunThread(() =>
+                {
+                    System.Threading.Thread.Sleep(1000);
+                    HdlThreadLogic.Current.RunMain(() =>
+                    {
+                        //杩涘叆涓嬩竴涓晫闈�
+                        this.CloseForm();
+                        var form = new AddMiniRemoteControlDirection4Page();
+                        form.AddForm(wifiName, wifiPassword);
+                    });
+                });
+                return;
+            }
+
+            //涓嬩竴姝�
+            var btnNext = this.AddBottomClickButton(Language.StringByID(StringId.Next));
+            btnNext.ButtonClickEvent += (sender, e) =>
+            {
+                if (txtWifi.Text.Trim() == string.Empty || txtPsw.Text.Trim() == string.Empty)
+                {
+                    return;
+                }
+
+                //杩涘叆涓嬩竴涓晫闈�
+                this.CloseForm();
+                var form = new AddMiniRemoteControlDirection4Page();
+                form.AddForm(txtWifi.Text.Trim(), txtPsw.Text);
+            };
+
+            HdlThreadLogic.Current.RunThread(() =>
+            {
+                //鎵撳紑杩涘害鏉�,鍗″畠涓�涓�
+                this.ShowProgressBar();
+                //鑾峰彇褰撳墠wifi鍚嶅瓧(閲岄潰鍙兘浼氬崱)
+                this.NowWifiName = HdlWifiLogic.Current.SSID;
+                HdlThreadLogic.Current.RunMain(() =>
+                {
+                    txtWifi.Text = NowWifiName;
+                });
+
+                this.CloseProgressBar();
+            });
+        }
+
+        #endregion
+
+        #region 鈻� 涓�鑸柟娉昣__________________________
+
+        /// <summary>
+        /// 鍒锋柊wifi鍚嶅瓧
+        /// </summary>
+        private void RefreshWifiName(TextInputControl textInput)
+        {
+            if (this.WifiThreadAction == true) { return; }
+            this.WifiThreadAction = true;
+
+            HdlThreadLogic.Current.RunThread(() =>
+            {
+                //杩欎釜绾跨▼涓嶄細琚腑鏂�
+                while (this.Parent != null)
+                {
+                    System.Threading.Thread.Sleep(1500);
+                    string wifiName = string.Empty;
+                    try
+                    {
+                        //鑾峰彇褰撳墠wifi鍚嶅瓧(閲岄潰鍙兘浼氬崱)
+                        wifiName = HdlWifiLogic.Current.SSID;
+                    }
+                    catch { continue; }
+                    if (wifiName != this.NowWifiName)
+                    {
+                        this.NowWifiName = wifiName;
+                        HdlThreadLogic.Current.RunMain(() =>
+                        {
+                            textInput.Text = this.NowWifiName;
+                        });
+                    }
+                }
+            });
+        }
+
+        #endregion
+    }
+}
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection4Page.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection4Page.cs
new file mode 100644
index 0000000..3d66b86
--- /dev/null
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection4Page.cs
@@ -0,0 +1,533 @@
+锘縰sing HDL_ON.Stan;
+using Shared;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace HDL_ON.UI
+{
+    /// <summary>
+    /// 娣诲姞Evoyo鐨凪ini鏅鸿兘閬ユ帶鍣ㄦ楠�4鐣岄潰
+    /// </summary>
+    public class AddMiniRemoteControlDirection4Page : EditorCommonForm
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// wifi鍚嶅瓧
+        /// </summary>
+        private string wifiName = string.Empty;
+        /// <summary>
+        /// wifi瀵嗙爜
+        /// </summary>
+        private string wifiPsw = string.Empty;
+        /// <summary>
+        /// 瓒呮椂绾跨▼鏄惁杩愯
+        /// </summary>
+        private bool timeoutThreadActivity = false;
+        /// <summary>
+        /// 涓婁紶鍒颁簯鐨勫浘鏍�
+        /// </summary>
+        private IconViewControl btnClound = null;
+        /// <summary>
+        /// 涓婁紶鍒颁簯
+        /// </summary>
+        private NormalViewControl btnCloundView = null;
+        /// <summary>
+        /// 杩炴帴鎴愬姛鐨勫浘鏍�
+        /// </summary>
+        private IconViewControl btnConnect = null;
+        /// <summary>
+        /// 杩炴帴鎴愬姛
+        /// </summary>
+        private NormalViewControl btnConnetView = null;
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
+        /// </summary>
+        /// <param name="i_wifiName">wifi鍚嶅瓧</param>
+        /// <param name="i_wifiPsw">wifi瀵嗙爜</param>
+        public void ShowForm(string i_wifiName, string i_wifiPsw)
+        {
+            this.wifiName = i_wifiName;
+            this.wifiPsw = i_wifiPsw;
+
+            //璁剧疆澶撮儴淇℃伅
+            base.SetTitleText(Language.StringByID(StringId.AddInfraredRemoteControl));
+            //杩欎釜鐣岄潰鐨勮儗鏅渶瑕佺櫧鑹�
+            bodyFrameLayout.BackgroundColor = UI.CSS.CSS_Color.MainBackgroundColor;
+
+            //娣诲姞鎺ユ敹钃濈墮鍙嶉鐨勪簨浠�
+            HdlBluetoothLogic.Current.AddReceiveEvent(this.BluetoothReceiveEvent);
+
+            //娣诲姞浜戠鍙嶉浜嬩欢
+            HdlCloudReceiveLogic.Current.AddCloudReceiveEvent("AddMiniRemoteControlDirection4Page", this.CloudReceiveEvent);
+
+            //鍒濆鍖栦腑閮ㄤ俊鎭�
+            this.InitMiddleFrame();
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栦腑閮ㄤ俊鎭�
+        /// </summary>
+        private void InitMiddleFrame()
+        {
+            //娓呯┖body
+            this.ClearBodyFrame();
+            //鍥剧墖
+            var btnPic = new PicViewControl(282, 121);
+            btnPic.Y = Application.GetRealHeight(122);
+            btnPic.Gravity = Gravity.CenterHorizontal;
+            btnPic.UnSelectedImagePath = "PersonalCenter/AddDevice/WifiAndPhoneConnect.png";
+            bodyFrameLayout.AddChidren(btnPic);
+            //姝e湪杩炴帴涓�...
+            var btnSearch = new NormalViewControl(bodyFrameLayout.Width, Application.GetRealHeight(20), false);
+            btnSearch.Y = btnPic.Bottom + Application.GetRealHeight(40);
+            btnSearch.TextColor = CSS.CSS_Color.FirstLevelTitleColor;
+            btnSearch.TextID = StringId.NowConnectting;
+            btnSearch.TextAlignment = TextAlignment.Center;
+            bodyFrameLayout.AddChidren(btnSearch);
+            //璇疯绾㈠閬ユ帶灏介噺鎺ヨ繎WIFI璺敱鍣�
+            var strMsg = Language.StringByID(StringId.AddInfraredRemoteControlMsg5);
+            this.AddListMsgControls(bodyFrameLayout, strMsg, CSS.CSS_FontSize.TextFontSize,
+                CSS.CSS_Color.PromptingColor1, Application.GetRealHeight(20), btnSearch.Bottom + Application.GetRealHeight(4));
+
+            //缃戠粶杩炴帴涓�
+            var btnNetIcon = new IconViewControl(20);
+            btnNetIcon.X = Application.GetRealWidth(60);
+            btnNetIcon.Y = btnPic.Bottom + Application.GetRealHeight(265);
+            btnNetIcon.UnSelectedImagePath = "PersonalCenter/AddDevice/NetConnectSelect.png";
+            bodyFrameLayout.AddChidren(btnNetIcon);
+            var btnNetView = new NormalViewControl(140, 18, true);//宸﹀彸闂磋窛40鍐嶅姞鏂囨湰60
+            btnNetView.Y = btnNetIcon.Bottom + Application.GetRealHeight(16);
+            btnNetView.TextSize = CSS.CSS_FontSize.PromptFontSize_FirstLevel;
+            btnNetView.TextColor = CSS.CSS_Color.FirstLevelTitleColor;
+            btnNetView.TextAlignment = TextAlignment.Center;
+            btnNetView.TextID = StringId.InTheNetworkLink;
+            bodyFrameLayout.AddChidren(btnNetView);
+
+            //涓�鏉℃í绾�
+            var btnLine1 = new NormalViewControl(Application.GetRealWidth(92), 2, false);
+            btnLine1.X = btnNetIcon.Right + Application.GetRealWidth(3);
+            btnLine1.Y = btnNetIcon.Y + (btnNetIcon.Height + 2) / 2;
+            btnLine1.BackgroundColor = CSS.CSS_Color.PromptingColor1;
+            bodyFrameLayout.AddChidren(btnLine1);
+
+            //涓婁紶鍒颁簯
+            this.btnClound = new IconViewControl(20);
+            btnClound.Gravity = Gravity.CenterHorizontal;
+            btnClound.Y = btnNetIcon.Y;
+            btnClound.UnSelectedImagePath = "PersonalCenter/AddDevice/UploadToClound.png";
+            btnClound.SelectedImagePath = "PersonalCenter/AddDevice/UploadToCloundSelect.png";
+            bodyFrameLayout.AddChidren(btnClound);
+            this.btnCloundView = new NormalViewControl(btnNetView.Width, btnNetView.Height, false);
+            btnCloundView.Y = btnNetView.Y;
+            btnCloundView.Gravity = Gravity.CenterHorizontal;
+            btnCloundView.TextSize = CSS.CSS_FontSize.PromptFontSize_FirstLevel;
+            btnCloundView.TextColor = CSS.CSS_Color.PromptingColor1;
+            btnCloundView.TextAlignment = TextAlignment.Center;
+            btnCloundView.TextID = StringId.UploadToCloud;
+            bodyFrameLayout.AddChidren(btnCloundView);
+
+            //涓�鏉℃í绾�
+            var btnLine2 = new NormalViewControl(btnLine1.Width, btnLine1.Height, false);
+            btnLine2.X = btnClound.Right + Application.GetRealWidth(3);
+            btnLine2.Y = btnLine1.Y;
+            btnLine2.BackgroundColor = CSS.CSS_Color.PromptingColor1;
+            bodyFrameLayout.AddChidren(btnLine2);
+
+            //杩炴帴鎴愬姛
+            this.btnConnect = new IconViewControl(20);
+            btnConnect.X = bodyFrameLayout.Width - btnNetIcon.X - btnConnect.IconSize;
+            btnConnect.Y = btnNetIcon.Y;
+            btnConnect.UnSelectedImagePath = "PersonalCenter/AddDevice/ConnectSuccess.png";
+            btnConnect.SelectedImagePath = "PersonalCenter/AddDevice/ConnectSuccessSelect.png";
+            bodyFrameLayout.AddChidren(btnConnect);
+            this.btnConnetView = new NormalViewControl(btnNetView.Width, btnNetView.Height, false);
+            btnConnetView.X = bodyFrameLayout.Width - btnNetView.Width - btnNetView.X;
+            btnConnetView.Y = btnNetView.Y;
+            btnConnetView.TextSize = CSS.CSS_FontSize.PromptFontSize_FirstLevel;
+            btnConnetView.TextColor = CSS.CSS_Color.PromptingColor1;
+            btnConnetView.TextAlignment = TextAlignment.Center;
+            btnConnetView.TextID = StringId.ConnectSuccess;
+            bodyFrameLayout.AddChidren(btnConnetView);
+
+            HdlThreadLogic.Current.RunThread(() =>
+            {
+                System.Threading.Thread.Sleep(2000);
+                HdlThreadLogic.Current.RunMain(() =>
+                {
+                    //鍙戦�佽处鍙峰拰瀵嗙爜缁欒摑鐗�
+                    this.SendAccountAndPswToBluetooth();
+                });
+                //鍚姩瓒呮椂绾跨▼
+                this.StartTimeoutThread();
+            });
+        }
+
+        #endregion
+
+        #region 鈻� 鏄剧ず鎴愬姛鐣岄潰_______________________
+
+        /// <summary>
+        /// 鏄剧ず鎴愬姛鐣岄潰
+        /// </summary>
+        private void ShowSuccessView()
+        {
+            //娓呯┖body
+            this.ClearBodyFrame();
+
+            //鍥剧墖
+            var btnPic = new PicViewControl(180, 180);
+            btnPic.Y = Application.GetRealHeight(48);
+            btnPic.Gravity = Gravity.CenterHorizontal;
+            btnPic.UnSelectedImagePath = "Public/TipIcon_Successfully.png";
+            bodyFrameLayout.AddChidren(btnPic);
+
+            //娣诲姞鎴愬姛
+            var btnFail = new NormalViewControl(bodyFrameLayout.Width, Application.GetRealHeight(22), false);
+            btnFail.Y = btnPic.Bottom + Application.GetRealHeight(16);
+            btnFail.TextSize = CSS.CSS_FontSize.SubheadingFontSize;
+            btnFail.TextColor = CSS.CSS_Color.MainColor;
+            btnFail.TextAlignment = TextAlignment.Center;
+            btnFail.TextID = StringId.AddSuccess;
+            bodyFrameLayout.AddChidren(btnFail);
+
+            //鍙互寮�濮嬩娇鐢ㄧ孩澶栭仴鎺у姛鑳斤紒
+            var strMsg = Language.StringByID(StringId.AddInfraredRemoteControlMsg7);
+            int yy = this.AddListMsgControls(bodyFrameLayout, strMsg, CSS.CSS_FontSize.TextFontSize, CSS.CSS_Color.TextualColor,
+                Application.GetRealHeight(20), btnFail.Bottom + Application.GetRealHeight(8));
+
+            //寮�濮嬩娇鐢�
+            var btnUse = new BottomClickButton(220);
+            btnUse.Y = yy + Application.GetRealHeight(60);
+            btnUse.TextID = StringId.StartUse;
+            bodyFrameLayout.AddChidren(btnUse);
+            btnUse.ButtonClickEvent += (sender, e) =>
+            {
+                //鍏虫帀鐣岄潰
+                this.CloseForm();
+                HdlFormLogic.Current.CloseFormByFormName("AddThirdPartyDeviceMenuListPage");
+                HDL_ON.UI.UI2.PersonalCenter.PirDevice.Method.GetPirDeviceList(this, () =>
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        var page = new UI2.PersonalCenter.PirDevice.PirMain();
+                        MainPage.BasePageView.AddChidren(page);
+                        page.Show();
+                        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                    });
+                });
+            };
+        }
+
+        #endregion
+
+        #region 鈻� 鏄剧ず澶辫触鐣岄潰_______________________
+
+        /// <summary>
+        /// 鏄剧ず澶辫触鐣岄潰
+        /// </summary>
+        private void ShowFailView()
+        {
+            //娓呯┖body
+            this.ClearBodyFrame();
+
+            //鍥剧墖
+            var btnPic = new PicViewControl(180, 180);
+            btnPic.Y = Application.GetRealHeight(48);
+            btnPic.Gravity = Gravity.CenterHorizontal;
+            btnPic.UnSelectedImagePath = "Public/TipIcon_Failed.png";
+            bodyFrameLayout.AddChidren(btnPic);
+
+            //娣诲姞澶辫触
+            var btnFail = new NormalViewControl(bodyFrameLayout.Width, Application.GetRealHeight(22), false);
+            btnFail.Y = btnPic.Bottom + Application.GetRealHeight(16);
+            btnFail.TextSize = CSS.CSS_FontSize.SubheadingFontSize;
+            btnFail.TextColor = CSS.CSS_Color.AuxiliaryColor2;
+            btnFail.TextAlignment = TextAlignment.Center;
+            btnFail.TextID = StringId.AddFail;
+            bodyFrameLayout.AddChidren(btnFail);
+            //1銆佽妫�鏌ヨ澶囨槸鍚︽甯搁�氱數
+            //2銆佽寮�鍚摑鐗欏姛鑳�
+            //3銆佸苟闀挎寜鎸夐挳10s锛屾寚绀虹伅甯镐寒
+            var strMsg = Language.StringByID(StringId.AddInfraredRemoteControlMsg6);
+            this.AddListMsgControls(bodyFrameLayout, strMsg, CSS.CSS_FontSize.TextFontSize, CSS.CSS_Color.TextualColor,
+                Application.GetRealHeight(20), btnFail.Bottom + Application.GetRealHeight(8),
+                 TextAlignment.Center, true);
+
+            //閲嶈瘯
+            var btnReDo = this.AddBottomClickButton(Language.StringByID(StringId.Retry));
+            btnReDo.ButtonClickEvent += (sender, e) =>
+            {
+                //閲嶆柊鍒濆鍖栦腑閮ㄤ俊鎭�
+                this.CloseForm();
+                var form = new AddMiniRemoteControlDirection2Page();
+                form.AddForm(this.wifiName, this.wifiPsw);
+            };
+        }
+
+        #endregion
+
+        #region 鈻� 鍙戦�佽处鍙峰拰瀵嗙爜缁欒摑鐗檁______________
+
+        /// <summary>
+        /// 鍙戦�佽处鍙峰拰瀵嗙爜缁欒摑鐗�
+        /// </summary>
+        private void SendAccountAndPswToBluetooth()
+        {
+            //鑾峰彇鍙戦�佸埌钃濈墮鐨勬暟鎹�
+            var sendData = this.GetSendToBluetoothData();
+            //涓嶇瓑寰�
+            HdlBluetoothLogic.Current.SendData(sendData);
+        }
+
+        #endregion
+
+        #region 鈻� 绾㈠瀹濈浉鍏虫柟娉昣____________________
+
+        /// <summary>
+        /// 妫�娴嬫槸鍚︽槸鏂扮殑绾㈠瀹�
+        /// </summary>
+        /// <param name="pushEnum">鎺ㄩ�佹灇涓�</param>
+        /// <param name="i_data">鎺ㄩ�佺殑鏁版嵁</param>
+        /// <returns></returns>
+        private bool CheckIsNewMiniRemoteControl(CloudPushEnum pushEnum, string i_data)
+        {
+            if (pushEnum != CloudPushEnum.A鏂拌澶囦笂鎶�) { return false; }
+
+            try
+            {
+                var strSpk = string.Empty;
+                //杞负json
+                var json = Newtonsoft.Json.Linq.JObject.Parse(i_data);
+                var linqArry = json["objects"] as Newtonsoft.Json.Linq.JArray;
+                if (linqArry != null)
+                {
+                    //鏁扮粍绫诲瀷
+                    if (linqArry.Count == 0) { return false; }
+                    strSpk = linqArry[0]["spk"].ToString();
+                }
+                else
+                {
+                    //闈炴暟缁勭被鍨�
+                    strSpk = json["objects"]["spk"].ToString();
+                }
+                if (strSpk != Entity.SPK.IrModule)
+                {
+                    //濡傛灉涓嶆槸绾㈠瀹濈殑璇�
+                    return false;
+                }
+                return true;
+            }
+            catch { return false; }
+        }
+
+        /// <summary>
+        /// 鍒锋柊绾㈠瀹濅俊鎭�
+        /// </summary>
+        /// <param name="successEvent">鎴愬姛鐨勫洖璋冧簨浠�</param>
+        private void RefreshMiniRemoteControlInfo(Action successEvent)
+        {
+            var pra = new Dictionary<string, object>();
+            pra.Add("homeId", Entity.DB_ResidenceData.Instance.CurrentRegion.RegionID);
+            pra.Add("spk", Entity.SPK.IrModule);
+
+            var requestJson = DAL.Server.HttpUtil.GetSignRequestJson(pra);
+            HdlThreadLogic.Current.RunThread(() =>
+            {
+                int count = 0;
+                while (this.Parent != null)
+                {
+                    try
+                    {
+                        //瓒呰繃5娆¢兘涓嶆垚鍔�,鐪熶笉澶勭悊浜�
+                        count++;
+                        if (count > 5) { return; }
+
+                        //鑾峰彇鍏ㄩ儴绾㈠瀹濆垪琛�
+                        var result = DAL.Server.HttpUtil.RequestHttpsPostFroHome(DAL.Server.NewAPI.Api_Post_GetDevcieList, requestJson);
+                        if (result == null || result.Code != DAL.Server.StateCode.SUCCESS)
+                        {
+                            System.Threading.Thread.Sleep(3000);
+                            continue;
+                        }
+                        var listDevice = Newtonsoft.Json.JsonConvert.DeserializeObject<Entity.DevcieApiPack>(result.Data.ToString());
+                        foreach (var newFunction in listDevice.list)
+                        {
+                            //娣诲姞鍒扮紦瀛樺綋涓�
+                            newFunction.SaveFunctionFile();
+                            Entity.FunctionList.List.IniFunctionList(newFunction.savePath, true);
+                        }
+                        //璋冪敤鍥炶皟鍑芥暟
+                        successEvent?.Invoke();
+                        return;
+                    }
+                    catch
+                    {
+                        System.Threading.Thread.Sleep(3000);
+                    }
+                }
+            });
+        }
+
+        #endregion
+
+        #region 鈻� 浜戠鍙嶉___________________________
+
+        /// <summary>
+        /// 浜戠鍙嶉
+        /// </summary>
+        /// <param name="pushEnum">鏋氫妇</param>
+        /// <param name="i_data">鎺ㄩ�佺殑鍐呭</param>
+        private void CloudReceiveEvent(CloudPushEnum pushEnum, string i_data)
+        {
+            //妫�娴嬫槸鍚︽槸鏂扮殑绾㈠瀹�
+            if (this.CheckIsNewMiniRemoteControl(pushEnum, i_data) == false)
+            {
+                return;
+            }
+            //鍒锋柊绾㈠瀹濅俊鎭�
+            this.RefreshMiniRemoteControlInfo(() =>
+            {
+                //绉婚櫎杩欎釜浜嬩欢
+                HdlCloudReceiveLogic.Current.RemoveCloudReceiveEvent("AddMiniRemoteControlDirection4Page");
+                //鍋滄绾跨▼
+                this.timeoutThreadActivity = false;
+
+                //娣诲姞璁惧鎴愬姛涔嬪悗,澶勭悊涓�浜涗笢瑗�
+                this.DoSomethingAfterAddDeviceSuccess();
+            });
+        }
+
+        /// <summary>
+        /// 娣诲姞璁惧鎴愬姛涔嬪悗,澶勭悊涓�浜涗笢瑗�
+        /// </summary>
+        private void DoSomethingAfterAddDeviceSuccess()
+        {
+            HdlThreadLogic.Current.RunThread(() =>
+            {
+                //鏁寸偣鐗规晥鑰屽凡
+                for (int i = 1; i <= 6; i++)
+                {
+                    System.Threading.Thread.Sleep(1000);
+                    if (i == 1)
+                    {
+                        HdlThreadLogic.Current.RunMain(() =>
+                        {
+                            //鏁寸偣鐗规晥鑰屽凡
+                            this.btnClound.IsSelected = true;
+                            this.btnCloundView.TextColor = CSS.CSS_Color.FirstLevelTitleColor;
+                        });
+                    }
+                    else if (i == 4)
+                    {
+                        HdlThreadLogic.Current.RunMain(() =>
+                        {
+                            //鏁寸偣鐗规晥鑰屽凡
+                            this.btnConnect.IsSelected = true;
+                            this.btnConnetView.TextColor = CSS.CSS_Color.FirstLevelTitleColor;
+                        });
+                    }
+                    else if (i == 6)
+                    {
+                        HdlThreadLogic.Current.RunMain(() =>
+                        {
+                            //鏄剧ず鎴愬姛鐣岄潰
+                            this.ShowSuccessView();
+                        });
+                    }
+                }
+            });
+        }
+
+        #endregion
+
+        #region 鈻� 钃濈墮鍙嶉___________________________
+
+        /// <summary>
+        /// 钃濈墮鍙嶉
+        /// </summary>
+        /// <param name="i_receviceData">钃濈墮鍙嶉鐨勬暟鎹�</param>
+        private void BluetoothReceiveEvent(string i_receviceData)
+        {
+#if DEBUG
+            System.Console.WriteLine("钃濈墮杩斿洖锛�" + i_receviceData);
+#endif
+        }
+
+        #endregion
+
+        #region 鈻� 瓒呮椂绾跨▼___________________________
+
+        /// <summary>
+        /// 鍚姩瓒呮椂绾跨▼
+        /// </summary>
+        private void StartTimeoutThread()
+        {
+            HdlThreadLogic.Current.RunThread(() =>
+            {
+                //360绉掕秴鏃�
+                int timeout = 360;
+                while (this.timeoutThreadActivity == false && this.Parent != null)
+                {
+                    System.Threading.Thread.Sleep(1000);
+                    timeout--;
+                    if (timeout == 0)
+                    {
+                        break;
+                    }
+                }
+                if (timeout <= 0)
+                {
+                    //鏄剧ず澶辫触鐣岄潰
+                    HdlThreadLogic.Current.RunMain(() =>
+                    {
+                        this.ShowFailView();
+                    });
+                }
+            });
+        }
+
+        #endregion
+
+        #region 鈻� 鐣岄潰鍏抽棴___________________________
+
+        /// <summary>
+        /// 鐣岄潰鍏抽棴
+        /// </summary>
+        public override void CloseFormBefore()
+        {
+            //鎽ф瘉钃濈墮
+            HdlBluetoothLogic.Current.Dispone();
+            HdlCloudReceiveLogic.Current.RemoveCloudReceiveEvent("AddMiniRemoteControlDirection4Page");
+
+            base.CloseFormBefore();
+        }
+
+        #endregion
+
+        #region 鈻� 涓�鑸柟娉昣__________________________
+
+        /// <summary>
+        /// 鑾峰彇鍙戦�佸埌钃濈墮鐨勬暟鎹�
+        /// </summary>
+        /// <returns></returns>
+        private string GetSendToBluetoothData()
+        {
+            var pra = new { id = "id010203", ssid = this.wifiName, password = this.wifiPsw };
+            var praData = Newtonsoft.Json.JsonConvert.SerializeObject(pra);
+
+            var sendData = "Topic:/user/id/custom/wifi/set\r\n";
+            sendData += "Length:" + praData.Length + "\r\n\r\n";
+            sendData += praData;
+            return sendData;
+        }
+
+        #endregion
+    }
+}
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddThirdPartyDeviceMenuListPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddThirdPartyDeviceMenuListPage.cs
new file mode 100644
index 0000000..58b0c30
--- /dev/null
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddThirdPartyDeviceMenuListPage.cs
@@ -0,0 +1,92 @@
+锘縰sing HDL_ON.Stan;
+using Shared;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace HDL_ON.UI
+{
+    /// <summary>
+    /// 娣诲姞绗笁鏂硅澶囩殑鑿滃崟鍒楄〃鐣岄潰
+    /// </summary>
+    public class AddThirdPartyDeviceMenuListPage : EditorCommonForm
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
+        /// </summary>
+        /// <param name="i_div">
+        /// <para>Evoyo:Evoyo鐨勮澶�</para>
+        /// <para>Yingshi:钀ょ煶璁惧</para>
+        /// <para>Tuya:娑傞甫璁惧</para></param>
+        public void ShowForm(string i_div)
+        {
+            //璁剧疆澶撮儴淇℃伅
+            base.SetTitleText(Language.StringByID(StringId.AddDevice));
+
+            //鍒濆鍖栦腑閮ㄤ俊鎭�
+            this.InitMiddleFrame(i_div);
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栦腑閮ㄤ俊鎭�
+        /// </summary>
+        private void InitMiddleFrame(string i_div)
+        {
+            //鍒楄〃瀹瑰櫒
+            var listView = new VerticalListControl();
+            listView.BackgroundColor = CSS.CSS_Color.MainBackgroundColor;
+            listView.Height = bodyFrameLayout.Height;
+            bodyFrameLayout.AddChidren(listView);
+
+            //Evoyo鐨勮澶�
+            if (i_div == "Evoyo")
+            {
+                //鍒濆鍖朎voyo璁惧鑿滃崟
+                this.InitEvoyoDeviceListMenu(listView);
+            }
+            //钀ょ煶璁惧
+            else if (i_div == "Yingshi")
+            {
+            }
+            //娑傞甫璁惧
+            else if (i_div == "Tuya")
+            {
+            }
+        }
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朎voyo璁惧鑿滃崟________________
+
+        /// <summary>
+        /// 鍒濆鍖朎voyo璁惧鑿滃崟
+        /// </summary>
+        /// <param name="listView"></param>
+        private void InitEvoyoDeviceListMenu(VerticalListControl listView)
+        {
+            //mini鏅鸿兘閬ユ帶鍣�
+            var rowMini = new RowLayoutControl();
+            listView.AddChidren(rowMini);
+            rowMini.frameTable.AddLeftIcon(32, "PersonalCenter/AddDevice/MiniRemoteControlMenuIcon.png");
+            var btnMiniView = rowMini.frameTable.AddLeftCaption(Language.StringByID(StringId.MiniIntelligentRemoteControl), 250);
+            btnMiniView.TextColor = CSS.CSS_Color.FirstLevelTitleColor;
+            rowMini.frameTable.AddRightArrow();
+            rowMini.frameTable.ButtonClickEvent += (sender, e) =>
+            {
+                var form = new AddMiniRemoteControlDirection1Page();
+                form.AddForm();
+            };
+
+            //璋冩暣妗屽竷鐪熷疄楂樺害
+            listView.AdjustRealHeight(0);
+        }
+
+        #endregion
+    }
+}
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/AddDevciePage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/AddDevciePage.cs
new file mode 100644
index 0000000..a876af9
--- /dev/null
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/AddDevciePage.cs
@@ -0,0 +1,144 @@
+锘縰sing System;
+using System.Collections.Generic;
+using HDL_ON.Entity;
+using HDL_ON.UI.CSS;
+using Shared;
+namespace HDL_ON.UI
+{
+    public class AddDevciePage : FrameLayout
+    {
+        FrameLayout bodyView;
+        IntegratedBrand brand;
+        VerticalRefreshLayout contentView;
+
+        public AddDevciePage(IntegratedBrand integratedBrand)
+        {
+            bodyView = this;
+            brand = integratedBrand;
+        }
+
+        public void LoadPage()
+        {
+            new TopViewDiv(bodyView, Language.StringByID(StringId.AddDevice)).LoadTopView();
+            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
+
+            contentView = new VerticalRefreshLayout()
+            {
+                Y = Application.GetRealHeight(64),
+                Height = Application.GetRealHeight(667 - 64),
+                VerticalScrollBarEnabled = false,
+            };
+            bodyView.AddChidren(contentView);
+
+
+
+            Load3tyBrandDeviceList();
+
+        }
+
+        void Load3tyBrandDeviceList()
+        {
+            var waitPage = new Loading();
+            waitPage.Start();
+            new System.Threading.Thread(() => {
+                try
+                {
+                    var pm = new DAL.Server.HttpServerRequest();
+                    //var result = pm.Get3tyBindBrandList
+                    var pack = pm.Get3TyBrandDeviceList(brand.productPlatform, brand.productBrand);
+                    if (pack.Code == DAL.Server.StateCode.SUCCESS)
+                    {
+                        var revData = Newtonsoft.Json.JsonConvert.DeserializeObject<List<IntegratedBrandDevice>>(pack.Data.ToString());
+                        Application.RunOnMainThread(() =>
+                        {
+                            LoadRow(revData);
+                        });
+                    }
+                }
+                catch (Exception ex)
+                {
+                    MainPage.Log("1--::" + ex.Message);
+                }
+                finally
+                {
+                    Application.RunOnMainThread(() => { waitPage.Hide(); });
+                }
+            })
+            { IsBackground = true }.Start();
+        }
+
+        void LoadRow(List<IntegratedBrandDevice> deviceList)
+        {
+            contentView.RemoveAll();
+            bool isFrist = true;
+            foreach (var device in deviceList)
+            {
+                FrameLayout row = new FrameLayout()
+                {
+                    Height = Application.GetRealHeight(50),
+                    BackgroundColor = CSS_Color.MainBackgroundColor,
+                };
+                contentView.AddChidren(row);
+
+                if (isFrist)
+                {
+                    isFrist = false;
+                }
+                else
+                {
+                    Button btnLine = new Button()
+                    {
+                        X = Application.GetRealWidth(56),
+                        Width = Application.GetRealWidth(303),
+                        Height = 1,
+                        BackgroundColor = CSS_Color.DividingLineColor,
+                    };
+                    row.AddChidren(btnLine);
+                }
+
+                var btnIcon = new Button()
+                {
+                    X = Application.GetRealWidth(12),
+                    Gravity = Gravity.CenterVertical,
+                    Width = Application.GetRealWidth(32),
+                    Height = Application.GetRealWidth(32),
+                    Radius = (uint)Application.GetRealWidth(4),
+                    UnSelectedImagePath = $"FunctionIcon/Icon/{device.spk.Replace(".","")}.png",
+                };
+                row.AddChidren(btnIcon);
+                Button btnRight = new Button()
+                {
+                    X = Application.GetRealWidth(339),
+                    Gravity = Gravity.CenterVertical,
+                    Width = Application.GetMinRealAverage(16),
+                    Height = Application.GetMinRealAverage(16),
+                    UnSelectedImagePath = "Public/Right.png",
+                };
+                row.AddChidren(btnRight);
+
+                Button btnName = new Button()
+                {
+                    X = Application.GetRealWidth(56),
+                    Width = Application.GetRealWidth(303),
+                    TextAlignment = TextAlignment.CenterLeft,
+                    TextColor = CSS_Color.FirstLevelTitleColor,
+                    TextSize = CSS_FontSize.TextFontSize,
+                    Text = device.productName,
+                };
+                row.AddChidren(btnName);
+
+                btnName.MouseUpEventHandler = (sender, e) => {
+                    switch (device.spk)
+                    {
+                        case SPK.IrModule:
+                            var form = new AddMiniRemoteControlDirection1Page();
+                            form.AddForm();
+                            break;
+                    }
+                };
+            }
+
+        }
+
+    }
+}
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/AddThirdPartyBrandListpage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/AddThirdPartyBrandListpage.cs
index c66cb3f..f73971c 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/AddThirdPartyBrandListpage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/AddThirdPartyBrandListpage.cs
@@ -10,10 +10,11 @@
     {
         FrameLayout bodyView;
         VerticalRefreshLayout contentView;
-        List<IntegratedBrand> brandList = new List<IntegratedBrand>();
-        public AddThirdPartyBrandListpage()
+        List<IntegratedBrand> brandList;
+        public AddThirdPartyBrandListpage(List<IntegratedBrand> list)
         {
             bodyView = this;
+            brandList = list;
         }
 
         public void LoadPage()
@@ -26,6 +27,7 @@
             {
                 Y = Application.GetRealHeight(64),
                 Height = Application.GetRealHeight(667 - 64),
+                VerticalScrollBarEnabled = false,
             };
             bodyView.AddChidren(contentView);
 
@@ -60,7 +62,6 @@
                     Button btnLine = new Button()
                     {
                         X = Application.GetRealWidth(56),
-                        Y = Application.GetRealHeight(49),
                         Width = Application.GetRealWidth(303),
                         Height = 1,
                         BackgroundColor = CSS_Color.DividingLineColor,
@@ -101,6 +102,13 @@
                 row.AddChidren(btnName);
                 //涓嬭浇绗笁鏂瑰搧鐗宨con
                 ImageUtlis.Current.Load3tyBrandIconImages(brand.brandName, brand.brandIcon, btnIcon);
+
+                btnName.MouseUpEventHandler = (sender, e) => {
+                    var page = new AddDevciePage(brand);
+                    MainPage.BasePageView.AddChidren(page);
+                    page.LoadPage();
+                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                };
             }
 
         }
@@ -133,5 +141,13 @@
                 }
             }) { IsBackground = true }.Start();
         }
+        /// <summary>
+        /// 璺宠浆娣诲姞璁惧鐣岄潰
+        /// </summary>
+        /// <param name="bandType">鍝佺墝绫诲瀷</param>
+        void SkipPage_AddDevice()
+        {
+        
+        }
     }
 }
\ No newline at end of file
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/BrandListPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/BrandListPage.cs
new file mode 100644
index 0000000..ae8c28d
--- /dev/null
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/BrandListPage.cs
@@ -0,0 +1,227 @@
+锘縰sing System;
+using System.Collections.Generic;
+using HDL_ON.Entity;
+using HDL_ON.UI.CSS;
+using Shared;
+namespace HDL_ON.UI
+{
+    public class BrandListPage : FrameLayout
+    {
+        FrameLayout bodyView;
+
+        VerticalScrolViewLayout contentView;
+
+        List<IntegratedBrand> brandList;
+
+        public BrandListPage()
+        {
+            bodyView = this;
+            brandList = new List<IntegratedBrand>();
+        }
+
+        public void LoadPage()
+        {
+            Action<string,string> action = (s,a) => {
+                var page = new AddThirdPartyBrandListpage(brandList);
+                MainPage.BasePageView.AddChidren(page);
+                page.LoadPage();
+                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+            };
+            new TopViewDiv(bodyView, Language.StringByID(StringId.FunctionBrand)).LoadTopView_AddIcon("3ty",action);
+
+            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
+
+            contentView = new  VerticalScrolViewLayout()
+            {
+                Y = Application.GetRealHeight(64),
+                Height = Application.GetRealHeight(603),
+            };
+            bodyView.AddChidren(contentView);
+
+            GetBindList();
+
+        }
+        /// <summary>
+        /// 鑾峰彇缁戝畾鍒楄〃
+        /// </summary>
+        void GetBindList()
+        {
+            var waitPage = new Loading();
+            waitPage.Start();
+            new System.Threading.Thread(() => {
+                try
+                {
+                    var pm = new DAL.Server.HttpServerRequest();
+                    var pack = pm.Get3tyBrandList();
+                    if (pack.Code == DAL.Server.StateCode.SUCCESS)
+                    {
+                        brandList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<IntegratedBrand>>(pack.Data.ToString());
+                        if (brandList.Count > 0)
+                        {
+                            Application.RunOnMainThread(() =>
+                            {
+                                LoadRow();
+                            });
+                        }else
+                        {
+                            Application.RunOnMainThread(() =>
+                            {
+                                NotListTipView();
+                              
+                            });
+                        }
+                    }
+                }
+                catch (Exception ex)
+                {
+                    MainPage.Log("2--::" + ex.Message);
+                }
+                finally
+                {
+                    Application.RunOnMainThread(() => { waitPage.Hide(); });
+                }
+            })
+            { IsBackground = true }.Start();
+        }
+
+
+        void LoadRow()
+        {
+            contentView.RemoveAll();
+            bool isFrist = true;
+            foreach (var brand in brandList)
+            {
+                var row = new RowLayout()
+                {
+                    Height = Application.GetRealHeight(50),
+                    BackgroundColor = CSS_Color.MainBackgroundColor,
+                    LineColor = 0x00000000,
+                };
+                contentView.AddChidren(row);
+
+                if (isFrist)
+                {
+                    isFrist = false;
+                }
+                else
+                {
+                    Button btnLine = new Button()
+                    {
+                        X = Application.GetRealWidth(56),
+                        Width = Application.GetRealWidth(303),
+                        Height = 1,
+                        BackgroundColor = CSS_Color.DividingLineColor,
+                    };
+                    row.AddChidren(btnLine);
+                }
+
+                ImageView btnIcon = new ImageView()
+                {
+                    X = Application.GetRealWidth(12),
+                    Gravity = Gravity.CenterVertical,
+                    Width = Application.GetRealWidth(32),
+                    Height = Application.GetRealWidth(32),
+                    Radius = (uint)Application.GetRealWidth(4),
+                    BackgroundColor = CSS_Color.PromptingColor1
+                };
+                row.AddChidren(btnIcon);
+                Button btnRight = new Button()
+                {
+                    X = Application.GetRealWidth(339),
+                    Gravity = Gravity.CenterVertical,
+                    Width = Application.GetMinRealAverage(16),
+                    Height = Application.GetMinRealAverage(16),
+                    UnSelectedImagePath = "Public/Right.png",
+                };
+                row.AddChidren(btnRight);
+
+                Button btnName = new Button()
+                {
+                    X = Application.GetRealWidth(56),
+                    Width = Application.GetRealWidth(303),
+                    TextAlignment = TextAlignment.CenterLeft,
+                    TextColor = CSS_Color.FirstLevelTitleColor,
+                    TextSize = CSS_FontSize.TextFontSize,
+                    Text = brand.brandName,
+                };
+                row.AddChidren(btnName);
+                //涓嬭浇绗笁鏂瑰搧鐗宨con
+                ImageUtlis.Current.Load3tyBrandIconImages(brand.brandName, brand.brandIcon, btnIcon);
+
+                btnName.MouseUpEventHandler = (sender, e) => {
+                    var page = new DeviceListPage(brand);
+                    MainPage.BasePageView.AddChidren(page);
+                    page.LoadPage();
+                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                };
+            }
+
+        }
+
+        void NotListTipView()
+        {
+            contentView.RemoveAll();
+            var btnTip = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealHeight(108),
+                Width = Application.GetRealWidth(180),
+                Height = Application.GetRealWidth(180),
+                UnSelectedImagePath = "TipNot.png",
+            };
+            contentView.AddChidren(btnTip);
+
+            var btnTipText = new Button()
+            {
+                Y = Application.GetRealHeight(292),
+                Height = Application.GetRealHeight(52),
+                TextSize = CSS_FontSize.TextFontSize,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextAlignment = TextAlignment.Center,
+                TextID = StringId.Not3tyBrandListTip,
+            };
+            contentView.AddChidren(btnTipText);
+
+            var btnTipText1 = new Button()
+            {
+                Y = Application.GetRealHeight(459),
+                Height = Application.GetRealHeight(41),
+                TextSize = CSS_FontSize.TextFontSize,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextAlignment = TextAlignment.Center,
+                TextID = StringId.Use3tyBrandListTip,
+            };
+            contentView.AddChidren(btnTipText1);
+
+            var btnAdd = new Button()
+            {
+                Y = Application.GetRealHeight(500),
+                Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth(220),
+                Height = Application.GetRealWidth(44),
+                BackgroundColor = CSS_Color.MainColor,
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.MainBackgroundColor,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                IsBold = true,
+                Radius = (uint)Application.GetRealWidth(22),
+                BorderColor = 0x00000000,
+                BorderWidth = 0,
+                TextID = StringId.Add,
+            };
+            contentView.AddChidren(btnAdd);
+
+
+            btnAdd.MouseUpEventHandler = (sender, e) => {
+                var page = new AddThirdPartyBrandListpage(brandList);
+                MainPage.BasePageView.AddChidren(page);
+                page.LoadPage();
+                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                this.RemoveFromParent();
+            };
+
+
+
+        }
+    }
+}
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/DeviceListPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/DeviceListPage.cs
new file mode 100644
index 0000000..df95071
--- /dev/null
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/DeviceListPage.cs
@@ -0,0 +1,164 @@
+锘縰sing System;
+using System.Collections.Generic;
+using HDL_ON.Entity;
+using HDL_ON.UI.CSS;
+using Shared;
+namespace HDL_ON.UI
+{
+    public class DeviceListPage  : FrameLayout
+    {
+        FrameLayout bodyView;
+        VerticalRefreshLayout contentView;
+
+        IntegratedBrand brand;
+        public DeviceListPage(IntegratedBrand integratedBrand)
+        {
+            bodyView = this;
+            brand = integratedBrand;
+        }
+
+
+        public void LoadPage()
+        {
+            new TopViewDiv(bodyView, Language.StringByID(StringId.AddDevice)).LoadTopView();
+            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
+
+            contentView = new VerticalRefreshLayout()
+            {
+                Y = Application.GetRealHeight(64),
+                Height = Application.GetRealHeight(667 - 64),
+                VerticalScrollBarEnabled = false,
+            };
+            bodyView.AddChidren(contentView);
+
+
+
+            Load3tyBrandDeviceList();
+
+        }
+
+        void Load3tyBrandDeviceList()
+        {
+            var waitPage = new Loading();
+            waitPage.Start();
+            new System.Threading.Thread(() => {
+                try
+                {
+                    var pm = new DAL.Server.HttpServerRequest();
+                    var pack = pm.Get3TyBrandBindDeviceList(brand.productPlatform, brand.productBrand);
+                    if (pack.Code == DAL.Server.StateCode.SUCCESS)
+                    {
+                        var revData = Newtonsoft.Json.JsonConvert.DeserializeObject<Function3tyBrandObj>(pack.Data.ToString());
+                        Application.RunOnMainThread(() =>
+                        {
+                            LoadRow(revData.list);
+                        });
+                    }
+                }
+                catch (Exception ex)
+                {
+                    MainPage.Log("1--::" + ex.Message);
+                }
+                finally
+                {
+                    Application.RunOnMainThread(() => { waitPage.Hide(); });
+                }
+            })
+            { IsBackground = true }.Start();
+        }
+
+        void LoadRow(List<Function> deviceList)
+        {
+            deviceList.Add(new Function() { name ="娴嬭瘯绾㈠瀹�",spk = SPK.IrModule});
+
+            contentView.RemoveAll();
+            bool isFrist = true;
+            foreach (var device in deviceList)
+            {
+                FrameLayout row = new FrameLayout()
+                {
+                    Height = Application.GetRealHeight(50),
+                    BackgroundColor = CSS_Color.MainBackgroundColor,
+                };
+                contentView.AddChidren(row);
+
+                if (isFrist)
+                {
+                    isFrist = false;
+                }
+                else
+                {
+                    Button btnLine = new Button()
+                    {
+                        X = Application.GetRealWidth(56),
+                        Width = Application.GetRealWidth(303),
+                        Height = 1,
+                        BackgroundColor = CSS_Color.DividingLineColor,
+                    };
+                    row.AddChidren(btnLine);
+                }
+
+                var btnIcon = new Button()
+                {
+                    X = Application.GetRealWidth(12),
+                    Gravity = Gravity.CenterVertical,
+                    Width = Application.GetRealWidth(32),
+                    Height = Application.GetRealWidth(32),
+                    Radius = (uint)Application.GetRealWidth(4),
+                    UnSelectedImagePath = $"FunctionIcon/Icon/{device.spk.Replace(".", "")}.png",
+                };
+                row.AddChidren(btnIcon);
+                Button btnRight = new Button()
+                {
+                    X = Application.GetRealWidth(339),
+                    Gravity = Gravity.CenterVertical,
+                    Width = Application.GetMinRealAverage(16),
+                    Height = Application.GetMinRealAverage(16),
+                    UnSelectedImagePath = "Public/Right.png",
+                };
+                row.AddChidren(btnRight);
+
+                Button btnName = new Button()
+                {
+                    X = Application.GetRealWidth(56),
+                    Width = Application.GetRealWidth(303),
+                    TextAlignment = TextAlignment.CenterLeft,
+                    TextColor = CSS_Color.FirstLevelTitleColor,
+                    TextSize = CSS_FontSize.TextFontSize,
+                    Text = device.name,
+                };
+                row.AddChidren(btnName);
+
+                btnName.MouseUpEventHandler = (sender, e) => {
+                    switch (device.spk)
+                    {
+                        case SPK.IrModule:
+                            UI2.PersonalCenter.PirDevice.Method.GetPirDeviceList(this, () =>
+                            {
+                                Application.RunOnMainThread(() =>
+                                {
+                                    var page = new UI2.PersonalCenter.PirDevice.PirMain();
+                                    MainPage.BasePageView.AddChidren(page);
+                                    page.Show();
+                                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                                });
+                            });
+                            break;
+                    }
+                };
+            }
+
+        }
+
+    }
+
+
+    /// <summary>
+    /// 浜戠杩斿洖鐨勭涓夋柟璁惧鍒楄〃鏁版嵁
+    /// </summary>
+    public class Function3tyBrandObj
+    {
+        public List<Function> list = new List<Function>();
+    }
+         
+}
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/ThirdPartyBrandListPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/ThirdPartyBrandListPage.cs
index bc6f542..b292e9d 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/ThirdPartyBrandListPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/ThirdPartyBrandListPage.cs
@@ -1,93 +1,93 @@
-锘縰sing System;
-using System.Collections.Generic;
-using HDL_ON.Entity;
-using HDL_ON.UI.CSS;
-using Shared;
-namespace HDL_ON.UI
-{
-    public class ThirdPartyBrandListPage : FrameLayout
-    {
+锘�//using System;
+//using System.Collections.Generic;
+//using HDL_ON.Entity;
+//using HDL_ON.UI.CSS;
+//using Shared;
+//namespace HDL_ON.UI
+//{
+//    public class ThirdPartyBrandListPage : FrameLayout
+//    {
 
-        FrameLayout bodyView;
-        FrameLayout contentView;
-        Button btnAdd;
+//        FrameLayout bodyView;
+//        FrameLayout contentView;
+//        Button btnAdd;
 
-        public ThirdPartyBrandListPage()
-        {
-            bodyView = this;
-        }
+//        public ThirdPartyBrandListPage()
+//        {
+//            bodyView = this;
+//        }
 
-        public void LoadPage()
-        {
-            new TopViewDiv(bodyView, Language.StringByID(StringId.FunctionBrand)).LoadTopView();
+//        public void LoadPage()
+//        {
+//            new TopViewDiv(bodyView, Language.StringByID(StringId.FunctionBrand)).LoadTopView();
 
-            contentView = new FrameLayout()
-            {
-                Y = Application.GetRealHeight(64),
-                Height = Application.GetRealHeight(667-64),
-                BackgroundColor = CSS_Color.MainBackgroundColor,
-            };
-            bodyView.AddChidren(contentView);
+//            contentView = new FrameLayout()
+//            {
+//                Y = Application.GetRealHeight(64),
+//                Height = Application.GetRealHeight(667-64),
+//                BackgroundColor = CSS_Color.MainBackgroundColor,
+//            };
+//            bodyView.AddChidren(contentView);
 
-            AddEmptyTipView();
+//            AddEmptyTipView();
 
-            Button btnTipMsg = new Button()
-            {
-                Height = Application.GetRealHeight(17 + 24),
-                Y = Application.GetRealHeight(535 - 12),
-                TextColor = CSS_Color.TextualColor,
-                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                TextAlignment = TextAlignment.Center,
-                TextID = StringId.TipAddThirdPartyDeviceMsg,
-            };
-            bodyView.AddChidren(btnTipMsg);
+//            Button btnTipMsg = new Button()
+//            {
+//                Height = Application.GetRealHeight(17 + 24),
+//                Y = Application.GetRealHeight(535 - 12),
+//                TextColor = CSS_Color.TextualColor,
+//                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+//                TextAlignment = TextAlignment.Center,
+//                TextID = StringId.TipAddThirdPartyDeviceMsg,
+//            };
+//            bodyView.AddChidren(btnTipMsg);
 
-            btnAdd = new Button()
-            {
-                Gravity = Gravity.CenterHorizontal,
-                Y = Application.GetRealHeight(564),
-                Width = Application.GetRealWidth(220),
-                Height = Application.GetRealWidth(44),
-                Radius = (uint)Application.GetRealWidth(22),
-                BackgroundColor = CSS_Color.MainColor,
-                TextAlignment = TextAlignment.Center,
-                TextColor = CSS_Color.MainBackgroundColor,
-                TextID = StringId.Add,
-            };
-            bodyView.AddChidren(btnAdd);
+//            btnAdd = new Button()
+//            {
+//                Gravity = Gravity.CenterHorizontal,
+//                Y = Application.GetRealHeight(564),
+//                Width = Application.GetRealWidth(220),
+//                Height = Application.GetRealWidth(44),
+//                Radius = (uint)Application.GetRealWidth(22),
+//                BackgroundColor = CSS_Color.MainColor,
+//                TextAlignment = TextAlignment.Center,
+//                TextColor = CSS_Color.MainBackgroundColor,
+//                TextID = StringId.Add,
+//            };
+//            bodyView.AddChidren(btnAdd);
 
-            LoadEvent_SikpAddBrand();
-        }
+//            LoadEvent_SikpAddBrand();
+//        }
 
-        /// <summary>
-        /// 娣诲姞鍐呭涓虹┖鎻愮ず椤甸潰
-        /// </summary>
-        void AddEmptyTipView()
-        {
-           var emptyTipView = new FrameLayout()
-            {
-                Height =Application.GetRealWidth(470),
-                Width = contentView.Width,
-            };
-            contentView.AddChidren(emptyTipView);
+//        /// <summary>
+//        /// 娣诲姞鍐呭涓虹┖鎻愮ず椤甸潰
+//        /// </summary>
+//        void AddEmptyTipView()
+//        {
+//           var emptyTipView = new FrameLayout()
+//            {
+//                Height =Application.GetRealWidth(470),
+//                Width = contentView.Width,
+//            };
+//            contentView.AddChidren(emptyTipView);
 
-            var tipView = new EmptyTipView(Language.StringByID(StringId.TipNotThirdPartyDevice))
-            {
-                Gravity = Gravity.Center
-            };
-            emptyTipView.AddChidren(tipView);
-        }
-        /// <summary>
-        /// 璺宠浆缁戝畾绗笁鏂瑰搧鐗岀晫闈�
-        /// </summary>
-        void LoadEvent_SikpAddBrand()
-        {
-            btnAdd.MouseUpEventHandler = (sender, e) => {
-                var page = new AddThirdPartyBrandListpage();
-                MainPage.BasePageView.AddChidren(page);
-                page.LoadPage();
-                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-            }; 
-        }
-    }
-}
+//            var tipView = new EmptyTipView(Language.StringByID(StringId.TipNotThirdPartyDevice))
+//            {
+//                Gravity = Gravity.Center
+//            };
+//            emptyTipView.AddChidren(tipView);
+//        }
+//        /// <summary>
+//        /// 璺宠浆缁戝畾绗笁鏂瑰搧鐗岀晫闈�
+//        /// </summary>
+//        void LoadEvent_SikpAddBrand()
+//        {
+//            btnAdd.MouseUpEventHandler = (sender, e) => {
+//                var page = new AddThirdPartyBrandListpage();
+//                MainPage.BasePageView.AddChidren(page);
+//                page.LoadPage();
+//                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+//            }; 
+//        }
+//    }
+//}
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs
index 15e23fb..c73aa4f 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs
@@ -339,7 +339,7 @@
             userTypeView.AddChidren(btnUserTypeName);
             #endregion
             #region 浣忓畢绠$悊
-          
+
             if (!DB_ResidenceData.Instance.CurrentRegion.IsOthreShare)
             {
                 #region ---浣忓畢绠$悊鍖哄煙
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPageBLL.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPageBLL.cs
index 17453a7..7a96fac 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPageBLL.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPageBLL.cs
@@ -260,20 +260,21 @@
         {
             EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
             {
-                // var page = new ThirdPartyBrandListPage();
-                // MainPage.BasePageView.AddChidren(page);
-                // page.LoadPage();
+                var page = new BrandListPage();// AddThirdPartyBrandListpage(); // BrandListPage();
+                MainPage.BasePageView.AddChidren(page);
+                page.LoadPage();
+                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                 //鑾峰彇鍒楄〃
-                HDL_ON.UI.UI2.PersonalCenter.PirDevice.Method.GetPirDeviceList(this, () =>
-                {
-                    Application.RunOnMainThread(() =>
-                    {
-                        var page = new UI2.PersonalCenter.PirDevice.PirMain();
-                        MainPage.BasePageView.AddChidren(page);
-                        page.Show();
-                        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-                    });
-                });
+                //HDL_ON.UI.UI2.PersonalCenter.PirDevice.Method.GetPirDeviceList(this, () =>
+                //{
+                //    Application.RunOnMainThread(() =>
+                //    {
+                //        var page = new UI2.PersonalCenter.PirDevice.PirMain();
+                //        MainPage.BasePageView.AddChidren(page);
+                //        page.Show();
+                //        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                //    });
+                //});
             };
             btnResidenceAddFunctionIcon.MouseUpEventHandler = eventHandler;
             btnResidenceAddFunctionText.MouseUpEventHandler = eventHandler;
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/ResetAccountPassword/ResetPasswordPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/ResetAccountPassword/ResetPasswordPage.cs
index 54bad8f..61fff82 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/ResetAccountPassword/ResetPasswordPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/ResetAccountPassword/ResetPasswordPage.cs
@@ -195,6 +195,7 @@
                 {
                     CloseTime = 1,
                     Direction = AMPopTipDirection.None,
+                    MaxWidth = Application.GetRealWidth(300),
                     Text = Language.StringByID(StringId.IncorrectRepeatPassword)
                 }.Show(bodyView);
 
@@ -310,6 +311,7 @@
                         {
                             CloseTime = 1,
                             Direction = AMPopTipDirection.None,
+                            MaxWidth = Application.GetRealWidth(300),
                             Text = Language.StringByID(StringId.IncorrectRepeatPassword)
                         }.Show(bodyView);
                     }
diff --git a/HDL_ON/UI/UI2/FuntionControlView/AC/AcControlPage.cs b/HDL_ON/UI/UI2/FuntionControlView/AC/AcControlPage.cs
index 629a706..4874520 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/AC/AcControlPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/AC/AcControlPage.cs
@@ -206,6 +206,8 @@
 
             LoadEvent_TempChange();
             LoadEvent_AcStatesChange();
+
+            LoadDiv_IrView();
         }
 
         /// <summary>
@@ -445,6 +447,146 @@
             dialog.Show();
         }
 
+        /// <summary>
+        /// 鍔犺浇绾㈠閬ユ帶鍣紝棰濆鎸夐挳
+        /// </summary>
+        void LoadDiv_IrView()
+        {
+            if (device.spk == SPK.AcIr)
+            {
+                var btnMore = new Button()
+                {
+                    Gravity = Gravity.CenterHorizontal,
+                    Y = Application.GetRealHeight(334),
+                    Width = Application.GetRealWidth(30),
+                    Height = Application.GetRealWidth(30),
+                    UnSelectedImagePath = "FunctionIcon/AC/More.png",
+                };
+                FrameWhiteCentet1.AddChidren(btnMore);
+
+                btnMore.MouseUpEventHandler = (sender, e) => {
+                    LoadDialog_IrMoreView();
+                };
+            }
+        }
+        /// <summary>
+        /// 鍔犺浇棰濆瀵圭孩澶栨寜閽晫闈�
+        /// </summary>
+        void LoadDialog_IrMoreView()
+        {
+            Dialog dialog = new Dialog();
+
+            var div = new FrameLayout();
+            dialog.AddChidren(div);
+            div.MouseUpEventHandler = (sender, e) => {
+                dialog.Close();
+            };
+
+            var bodyView = new FrameLayout()
+            {
+                Y = Application.GetRealHeight(463),
+                Height = Application.GetRealHeight(375),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+            };
+            div.AddChidren(bodyView);
+
+            var contentView = new FrameLayout()
+            {
+                Y = Application.GetRealHeight(16),
+                Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth(296),
+            };
+            bodyView.AddChidren(contentView);
+
+                var row = new FrameLayout()
+                {
+                    Height = Application.GetRealHeight(60),
+                };
+                contentView.AddChidren(row);
+
+                int index = 0;
+            foreach (var attr in device.attributes)
+            {
+                if (attr.key == FunctionAttributeKey.Mode
+                    || attr.key == FunctionAttributeKey.OnOff
+                    || attr.key == FunctionAttributeKey.SetTemp
+                    || attr.key == FunctionAttributeKey.SetTempStep
+                    || attr.key == FunctionAttributeKey.FanSpeed
+                    || attr.key == FunctionAttributeKey.FanManual
+                    || attr.key == FunctionAttributeKey.FanAuto
+                    )
+                {
+                    continue;
+                }
+                if (index != 0 && index % 3 == 0)
+                {
+                    row = new FrameLayout()
+                    {
+                        Width = Application.GetRealWidth(200),
+                        Height = Application.GetRealHeight(56),
+                    };
+                    contentView.AddChidren(row);
+                }
+
+                var btn = new Button()
+                {
+                    Gravity = Gravity.CenterVertical,
+                    Width = Application.GetRealWidth(88),
+                    Height = Application.GetRealHeight(40),
+                    Radius = (uint)Application.GetRealHeight(18),
+                    BorderColor = CSS_Color.PromptingColor1,
+                    BorderWidth = (uint)Application.GetRealWidth(2),
+                    TextAlignment = TextAlignment.Center,
+                    TextSize = CSS_FontSize.TextFontSize,
+                    TextColor = CSS_Color.FirstLevelTitleColor,
+                    SelectedTextColor = CSS_Color.MainBackgroundColor,
+                    SelectedBackgroundColor = CSS_Color.MainColor,
+                };
+                if (attr.value.Count > 0)
+                {
+                    btn.Text = attr.value[0];
+                }
+                if (index % 3 == 1)
+                {
+                    btn.Gravity = Gravity.Center;
+                }
+                else if (index % 3 == 2)
+                {
+                    btn.X = Application.GetRealWidth(208);
+                }
+                row.AddChidren(btn);
+
+                btn.MouseUpEventHandler = (sender, e) =>
+                {
+                    System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
+                    d.Add(FunctionAttributeKey.Key, attr.key);
+                    Control.Ins.SendWriteCommand(device, d);
+
+                    new System.Threading.Thread(() =>
+                    {
+                        System.Threading.Thread.Sleep(2000);
+                        Application.RunOnMainThread(() =>
+                        {
+                            btn.IsSelected = false;
+                        });
+                    })
+                    { IsBackground = true }.Start();
+                };
+
+
+
+                index++;
+            }
+
+
+
+
+
+
+            dialog.Show();
+        }
+
+
         #endregion
 
         #region 鈻� 璁惧鐘舵�佸弽棣坃______________________
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerPage.cs
index 57119a2..aa73f74 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerPage.cs
@@ -405,6 +405,7 @@
                 {
                     lightingView.SetViewStatus(lightTemp.state == "on");
                 }
+                Console.WriteLine($"鏃堕棿鎴筹細{device.time_stamp}  鏃堕棿锛歿device.GeteTime()} 鐑樺共:{hotDryTemp.state} 椋庡共:{windDryTemp.state} 娑堟瘨:{disinfectTemp.state} 鐏厜鐘舵�侊細{lightTemp.state}");
                 #endregion
 
                 #region 淇敼鏃堕棿
@@ -492,10 +493,26 @@
         public void ChangeTime(string newTime)
         {
             int.TryParse(newTime, out leftTime);
+            if (leftTime > 0)
+            {
+                Application.RunOnMainThread(() =>
+                {
+                    btnTime.Text = new TimeSpan(0, leftTime, 0).ToString().Remove(5, 3);
+                });
+                leftTime--;
+            }
+            else if (leftTime == 0)
+            {
+                Application.RunOnMainThread(() =>
+                {
+                    btnTime.Text = "";
+                });
+            }
             if (countdownThread == null)
             {
                 countdownThread = new System.Threading.Thread(() =>
                 {
+
                     while (true)
                     {
                         if (leftTime > 0)
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/IrLearnPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/IrLearnPage.cs
new file mode 100644
index 0000000..aef5a45
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/IrLearnPage.cs
@@ -0,0 +1,146 @@
+锘縰sing System;
+using HDL_ON.DriverLayer;
+using HDL_ON.Entity;
+using HDL_ON.Stan;
+using HDL_ON.UI.CSS;
+using Shared;
+
+namespace HDL_ON.UI
+{
+    public class IrLearnPage : DeviceFunctionCardCommonForm
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鍒濆鍖栫櫧鑹插尯鍩熺殑鍐呭
+        /// </summary>
+        public override void InitFrameWhiteContent()
+        {
+
+            base.ShowColltionButton = false;
+            base.SetTitleText(Language.StringByID(StringId.RemoteControl));
+
+            //鍒濆鍖栫涓�涓储寮曢〉鐨勫唴瀹�
+            this.InitFrameWhiteContent1();
+
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栫涓�涓储寮曢〉鐨勫唴瀹�
+        /// </summary>
+        private void InitFrameWhiteContent1()
+        {
+            var contentView = new VerticalScrolViewLayout()
+            {
+                Y = Application.GetRealHeight(94),
+                Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth(296),
+                Height = Application.GetRealHeight(376),
+            };
+            FrameWhiteCentet1.AddChidren(contentView);
+
+            var row = new FrameLayout()
+            {
+                //Width = Application.GetRealWidth(200),
+                Height = Application.GetRealHeight(56),
+            };
+            contentView.AddChidren(row);
+
+            int index = 0;
+            foreach(var attr in device.attributes)
+            {
+                if(index != 0 && index%3==0)
+                {
+                    row = new FrameLayout()
+                    {
+                        Width = Application.GetRealWidth(200),
+                        Height = Application.GetRealHeight(56),
+                    };
+                    contentView.AddChidren(row);
+                }
+
+                var btn = new Button()
+                {
+                    Width = Application.GetRealWidth(88),
+                    Height = Application.GetRealHeight(40),
+                    Radius = (uint)Application.GetRealHeight(18),
+                    BorderColor = CSS_Color.PromptingColor1,
+                    BorderWidth = (uint)Application.GetRealWidth(2),
+                    TextAlignment = TextAlignment.Center,
+                    TextSize = CSS_FontSize.TextFontSize,
+                    TextColor = CSS_Color.FirstLevelTitleColor,
+                    SelectedTextColor = CSS_Color.MainBackgroundColor,
+                    SelectedBackgroundColor = CSS_Color.MainColor,
+                };
+                if (attr.value.Count > 0)
+                {
+                    btn.Text = attr.value[0];
+                }
+                if (index % 3 == 1)
+                {
+                    btn.Gravity = Gravity.CenterHorizontal;
+                }
+                else if (index % 3 == 2)
+                {
+                    btn.X = Application.GetRealWidth(208);
+                }
+                row.AddChidren(btn);
+
+                btn.MouseUpEventHandler = (sender, e) => {
+                    System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
+                    d.Add(attr.key, "");
+                    Control.Ins.SendWriteCommand(device, d);
+
+                    new System.Threading.Thread(() => {
+                        System.Threading.Thread.Sleep(2000);
+                        Application.RunOnMainThread(() => {
+                            btn.IsSelected = false;
+                        });
+                    }) { IsBackground = true }.Start();
+                };
+
+
+
+                index++;
+            }
+
+        }
+
+
+        #endregion
+
+        #region 鈻� 璁惧鐘舵�佸弽棣坃______________________
+
+        /// <summary>
+        /// 璁惧鐘舵�佸弽棣�
+        /// </summary>
+        /// <param name="i_LocalDevice"></param>
+        public override void DeviceStatuPush(Function i_LocalDevice)
+        {
+            return;
+        }
+
+        #endregion
+
+        #region 鈻� 鍙戦�佸悇绉嶅懡浠______________________
+         
+        #endregion
+
+        #region 鈻� 鍒锋柊鐣岄潰鐘舵�乢______________________
+
+        /// <summary>
+        /// 鍒锋柊鐣岄潰鐘舵��
+        /// </summary>
+        private void RefreshFormStatu()
+        {
+            return;
+        }
+
+        #endregion
+
+    }
+}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaAirCleanerPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaAirCleanerPage.cs
index 171e369..d0199bb 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaAirCleanerPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaAirCleanerPage.cs
@@ -73,9 +73,9 @@
         /// </summary>
         private MostRightIconControl btnAnionSwitch = null;
         /// <summary>
-        /// 婊よ姱澶嶄綅寮�鍏虫帶浠�
+        /// 婊よ姱澶嶄綅寮�鍏虫帶浠� 2021.03.09鎺т欢鍙樻洿
         /// </summary>
-        private MostRightIconControl btnResetSwitch = null;
+        //private MostRightIconControl btnResetSwitch = null;
         /// <summary>
         /// 绌烘皵璐ㄩ噺鏁版嵁
         /// </summary>
@@ -328,12 +328,11 @@
             rowReset.Height = Application.GetRealHeight(50);
             rowReset.Width = FrameWhiteCentet2.Width;
             rowReset.Y = rowAnion.Bottom;
-            FrameWhiteCentet2.AddChidren(rowReset);
+            //FrameWhiteCentet2.AddChidren(rowReset);
             rowReset.AddLeftCaption(Language.StringByID(StringId.FilterElementReset), 200);
             rowReset.AddBottomLine();
-            this.btnResetSwitch = rowReset.AddMostRightSwitchIcon();
-            btnResetSwitch.IsSelected = this.airCleanerData.FilterReset;
-            btnResetSwitch.ButtonClickEvent += (sender, e) =>
+            rowReset.AddRightArrow();
+            rowReset.ButtonClickEvent += (sender, e) =>
             {
                 if (this.btnSwitch.IsSelected == false)
                 {
@@ -345,7 +344,7 @@
                 this.ShowMassage(ShowMsgType.Confirm, msg, () =>
                 {
                     //鍙戦�佷娇鑳藉懡浠�
-                    this.SendEnableComand(btnResetSwitch, "filter_reset", btnResetSwitch.IsSelected == true ? "false" : "true");
+                    this.SendEnableComand(null, "filter_reset", "true");
                 });
             };
         }
@@ -624,12 +623,18 @@
         /// </summary>
         private void SendEnableComand(MostRightIconControl btnSwitch, string sendKey, string value)
         {
-            btnSwitch.CanClick = false;
+            if (btnSwitch != null)
+            {
+                btnSwitch.CanClick = false;
+            }
             HdlThreadLogic.Current.RunThread(() =>
             {
                 var dic = new Dictionary<string, string>();
                 dic.Add(sendKey, value);
                 Control.Ins.SendWriteCommand(this.device, dic, true);
+
+                if (btnSwitch == null) { return; }
+
                 HdlThreadLogic.Current.RunMain(() =>
                 {
                     btnSwitch.CanClick = true;
@@ -769,10 +774,10 @@
                 this.btnAnionSwitch.IsSelected = this.airCleanerData.Anion;
             }
             //婊よ姱澶嶄綅
-            if (this.btnResetSwitch.IsSelected != this.airCleanerData.FilterReset)
-            {
-                this.btnResetSwitch.IsSelected = this.airCleanerData.FilterReset;
-            }
+            //if (this.btnResetSwitch.IsSelected != this.airCleanerData.FilterReset)
+            //{
+            //    this.btnResetSwitch.IsSelected = this.airCleanerData.FilterReset;
+            //}
         }
 
         #endregion
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWaterValvePage.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWaterValvePage.cs
index 89d188b..73e6c7a 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWaterValvePage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWaterValvePage.cs
@@ -42,12 +42,18 @@
         /// </summary>
         public override void InitFrameWhiteContent()
         {
-            base.SetTitleText(Language.StringByID(StringId.AirCleaner));
+            base.SetTitleText(Language.StringByID(StringId.WaterValve));
 
             //鍒濆鍖栫涓�涓储寮曢〉鐨勫唴瀹�
             this.InitFrameWhiteContent1();
             //鍒锋柊鐣岄潰鐘舵��
             this.RefreshFormStatu();
+            //璇诲彇鐘舵��
+            new System.Threading.Thread(() =>
+            {
+                Control.Ins.ReadFunctionsInfo(new List<string>() { device.deviceId});
+            })
+            { IsBackground = true }.Start();
         }
 
         /// <summary>
@@ -104,6 +110,21 @@
             btnTimeSet.ButtonClickEvent = (sender, e) => {
                 SetControlTime();
             };
+
+
+            var btnTimeSetTip = new NormalViewControl(300, 30, true)
+            {
+                Y = btnTimeSet.Bottom ,
+                Gravity = Gravity.CenterHorizontal,
+                TextAlignment = TextAlignment.Center,
+                TextSize = CSS_FontSize.TextFontSize,
+                //TextColor = 0x00000000,
+                SelectedTextColor = CSS_Color.TextualColor,
+                TextColor = CSS_Color.TextualColor,
+                TextID = StringId.TimeSwitch,
+            };
+            FrameWhiteCentet1.AddChidren(btnTimeSetTip);
+
 
             //寮�鍏冲浘鏍�
             this.btnSwitch = new IconViewControl(40);
@@ -187,7 +208,7 @@
                     {
                         btnControlTip.TextID = StringId.ControllerNotOn;
                     }
-                    this.btnSwitch.IsSelected = this.btnPictrue.IsSelected = onoffStatu.value.ToString() == "on";
+                    this.btnSwitch.IsSelected = this.btnPictrue.IsSelected = onoffStatu.state.ToString() == "on";
                 }
                 if (timeStatu != null)
                 {
@@ -252,6 +273,7 @@
         private void SetControlTime()
         {
             var timeControl = new BottomTimeSelectControl();
+            timeControl.RowCount = 5;
             timeControl.InitControl(0,0);
             timeControl.FinishEvent = (type,hours,min) => {
                 if (type == 1)//0:鍙栨秷锛�1:纭畾
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWeepRobotPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWeepRobotPage.cs
index f5028ec..2368509 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWeepRobotPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWeepRobotPage.cs
@@ -127,7 +127,7 @@
             //鍚稿姏璋冭妭
             this.btnSuctionIcon = new IconViewControl(28);
             btnSuctionIcon.Y = ImageControl.Bottom + Application.GetRealHeight(64);
-            btnSuctionIcon.X = Application.GetRealWidth(33);
+            //btnSuctionIcon.X = Application.GetRealWidth(33);
             btnSuctionIcon.UnSelectedImagePath = "FunctionIcon/Electrical/WeepRobot/Suction.png";
             btnSuctionIcon.SelectedImagePath = "FunctionIcon/Electrical/WeepRobot/SuctionSelect.png";
             FrameWhiteCentet1.AddChidren(btnSuctionIcon);
@@ -138,7 +138,7 @@
             };
             this.btnSuctionView = new NormalViewControl(80, 54, true);
             btnSuctionView.Y = btnSuctionIcon.Bottom + Application.GetRealHeight(10);
-            btnSuctionView.X = btnSuctionIcon.X - (Application.GetRealWidth(80) - btnSuctionIcon.Width) / 2;
+            //btnSuctionView.X = btnSuctionIcon.X - (Application.GetRealWidth(80) - btnSuctionIcon.Width) / 2;
             btnSuctionView.TextAlignment = TextAlignment.TopCenter;
             btnSuctionView.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
             btnSuctionView.Text = Language.StringByID(StringId.SuctionAdjustment);
@@ -149,7 +149,8 @@
             this.btnChargeIcon = new IconViewControl(28);
             btnChargeIcon.UnSelectedImagePath = "FunctionIcon/Electrical/WeepRobot/ChargeSelect.png";
             btnChargeIcon.Y = btnSuctionIcon.Y;
-            btnChargeIcon.X = btnSuctionIcon.Right + Application.GetRealWidth(50);
+            //btnChargeIcon.X = btnSuctionIcon.Right + Application.GetRealWidth(50);
+            btnChargeIcon.Gravity = Gravity.CenterHorizontal;
             FrameWhiteCentet1.AddChidren(btnChargeIcon);
             btnChargeIcon.ButtonClickEvent += (sender, e) =>
             {
@@ -164,6 +165,10 @@
             btnChargeView.TextID = StringId.Charge;
             FrameWhiteCentet1.AddChidren(btnChargeView);
 
+            //2021.03.09 鑸嶅純鎺夐潤闊冲姛鑳�
+            btnSuctionIcon.X = btnChargeIcon.X - btnSuctionIcon.IconSize - Application.GetRealWidth(50);
+            btnSuctionView.X = btnSuctionIcon.X - (Application.GetRealWidth(80) - btnSuctionIcon.Width) / 2;
+
             //澹伴煶鍥炬爣
             this.btnVoiceIcon = new IconViewControl(28);
             btnVoiceIcon.Y = btnSuctionIcon.Y;
@@ -171,7 +176,7 @@
             btnVoiceIcon.UnSelectedImagePath = "FunctionIcon/Electrical/WeepRobot/Voice.png";
             btnVoiceIcon.SelectedImagePath = "FunctionIcon/Electrical/WeepRobot/VoiceSelect.png";
             btnVoiceIcon.IsSelected = true;
-            FrameWhiteCentet1.AddChidren(btnVoiceIcon);
+            //FrameWhiteCentet1.AddChidren(btnVoiceIcon);
             btnVoiceIcon.ButtonClickEvent += (sender, e) =>
             {
                 //鍙戦�侀潤闊冲懡浠�
@@ -183,12 +188,13 @@
             btnVoiceView.TextAlignment = TextAlignment.TopCenter;
             btnVoiceView.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
             btnVoiceView.TextID = StringId.Mute;
-            FrameWhiteCentet1.AddChidren(btnVoiceView);
+            //FrameWhiteCentet1.AddChidren(btnVoiceView);
 
             //娓呮壂妯″紡鍥炬爣
             this.btnModeIcon = new IconViewControl(28);
             btnModeIcon.Y = btnSuctionIcon.Y;
-            btnModeIcon.X = btnVoiceIcon.Right + Application.GetRealWidth(50);
+            //btnModeIcon.X = btnVoiceIcon.Right + Application.GetRealWidth(50);
+            btnModeIcon.X = btnChargeIcon.Right + Application.GetRealWidth(50);
             btnModeIcon.UnSelectedImagePath = "FunctionIcon/Electrical/WeepRobot/Clean.png";
             FrameWhiteCentet1.AddChidren(btnModeIcon);
             btnModeIcon.ButtonClickEvent += (sender, e) =>
@@ -220,26 +226,28 @@
             btnTitleName.TextID = StringId.WeepRobot;
             FrameWhiteCentet2.AddChidren(btnTitleName);
 
+            //2021.03.09 鑸嶅純鑰楁潗绠$悊
             //鑰楁潗绠$悊
-            var rowManment = new FrameRowControl();
-            rowManment.Height = Application.GetRealHeight(50);
-            rowManment.Width = FrameWhiteCentet2.Width;
-            rowManment.Y = Application.GetRealHeight(75);
-            FrameWhiteCentet2.AddChidren(rowManment);
-            rowManment.AddLeftCaption(Language.StringByID(StringId.ConsumablesManagement), 200);
-            rowManment.AddBottomLine();
-            rowManment.AddRightArrow();
-            rowManment.ButtonClickEvent += (sender, e) =>
-            {
-                var form = new TuyaWeepRobotConsumablesMagPage();
-                form.AddForm(this.device, this.weepRobotData);
-            };
+            //var rowManment = new FrameRowControl();
+            //rowManment.Height = Application.GetRealHeight(50);
+            //rowManment.Width = FrameWhiteCentet2.Width;
+            //rowManment.Y = Application.GetRealHeight(75);
+            //FrameWhiteCentet2.AddChidren(rowManment);
+            //rowManment.AddLeftCaption(Language.StringByID(StringId.ConsumablesManagement), 200);
+            //rowManment.AddBottomLine();
+            //rowManment.AddRightArrow();
+            //rowManment.ButtonClickEvent += (sender, e) =>
+            //{
+            //    var form = new TuyaWeepRobotConsumablesMagPage();
+            //    form.AddForm(this.device, this.weepRobotData);
+            //};
 
             //鍘嗗彶璁板綍
             var rowHistory = new FrameRowControl();
             rowHistory.Height = Application.GetRealHeight(50);
             rowHistory.Width = FrameWhiteCentet2.Width;
-            rowHistory.Y = rowManment.Bottom;
+            //rowHistory.Y = rowManment.Bottom;
+            rowHistory.Y = Application.GetRealHeight(75);
             FrameWhiteCentet2.AddChidren(rowHistory);
             rowHistory.AddLeftCaption(Language.StringByID(StringId.HistoryLog), 200);
             rowHistory.AddBottomLine();
@@ -327,12 +335,15 @@
             };
             frameBack.Show();
 
+            //2021.03.09 鑸嶅純闅忔満娓呮壂
             //鑿滃崟鎺т欢(娓呮壂妯″紡)
-            var menuContr = new DialogTitleMenuControl(4, Language.StringByID(StringId.CleanMode));
+            //var menuContr = new DialogTitleMenuControl(4, Language.StringByID(StringId.CleanMode));
+            var menuContr = new DialogTitleMenuControl(3, Language.StringByID(StringId.CleanMode));
             menuContr.X = Application.GetRealWidth(210);
             menuContr.Y = Application.GetRealHeight(197);
             menuContr.Width = Application.GetRealWidth(160);
-            menuContr.Height = Application.GetRealHeight(243);
+            //menuContr.Height = Application.GetRealHeight(243);
+            menuContr.Height = Application.GetRealHeight(203);
             dialogBody.AddChidren(menuContr);
 
             //鑷姩娓呮壂
@@ -345,13 +356,13 @@
             });
 
             //闅忔満娓呮壂
-            iconPath = this.weepRobotData.Mode == "random" ? "FunctionIcon/Electrical/WeepRobot/FixedPointModeSelect.png" : "FunctionIcon/Electrical/WeepRobot/FixedPointMode.png";
-            menuContr.AddRowMenu(Language.StringByID(StringId.RandomClean), iconPath, this.weepRobotData.Mode == "random", () =>
-            {
-                frameBack.Close();
-                //鍙戦�佹ā寮忓懡浠�
-                this.SendComand("mode", "random");
-            });
+            //iconPath = this.weepRobotData.Mode == "random" ? "FunctionIcon/Electrical/WeepRobot/FixedPointModeSelect.png" : "FunctionIcon/Electrical/WeepRobot/FixedPointMode.png";
+            //menuContr.AddRowMenu(Language.StringByID(StringId.RandomClean), iconPath, this.weepRobotData.Mode == "random", () =>
+            //{
+            //    frameBack.Close();
+            //    //鍙戦�佹ā寮忓懡浠�
+            //    this.SendComand("mode", "random");
+            //});
 
             //铻烘棆娓呮壂
             iconPath = this.weepRobotData.Mode == "spiral" ? "FunctionIcon/Electrical/WeepRobot/AreaModeSelect.png" : "FunctionIcon/Electrical/WeepRobot/AreaMode.png";
@@ -520,13 +531,14 @@
                 this.btnModeIcon.SelectedImagePath = "FunctionIcon/Electrical/WeepRobot/AutoModeSelect.png";
                 this.btnModeView.TextID = StringId.AutoClean;
             }
-            else if (this.weepRobotData.Mode == "smart")
-            {
-                //闅忔満娓呮壂
-                this.btnModeIcon.UnSelectedImagePath = "FunctionIcon/Electrical/WeepRobot/FixedPointMode.png";
-                this.btnModeIcon.SelectedImagePath = "FunctionIcon/Electrical/WeepRobot/FixedPointModeSelect.png";
-                this.btnModeView.TextID = StringId.RandomClean;
-            }
+            //2021.03.09 鑸嶅純闅忔満娓呮壂
+            //else if (this.weepRobotData.Mode == "smart")
+            //{
+            //    //闅忔満娓呮壂
+            //    this.btnModeIcon.UnSelectedImagePath = "FunctionIcon/Electrical/WeepRobot/FixedPointMode.png";
+            //    this.btnModeIcon.SelectedImagePath = "FunctionIcon/Electrical/WeepRobot/FixedPointModeSelect.png";
+            //    this.btnModeView.TextID = StringId.RandomClean;
+            //}
             else if (this.weepRobotData.Mode == "wall_follow")
             {
                 //娌垮娓呮壂
diff --git a/HDL_ON/UI/UI2/UserPage.cs b/HDL_ON/UI/UI2/UserPage.cs
index 51a7e42..4397173 100644
--- a/HDL_ON/UI/UI2/UserPage.cs
+++ b/HDL_ON/UI/UI2/UserPage.cs
@@ -86,14 +86,6 @@
         #endregion
         #endregion
 
-        /// <summary>
-        /// 褰撳墠鍔ㄧ敾鏁堟灉
-        /// 0:鏀惰棌
-        /// 1:鍒嗙被
-        /// 2:鏅鸿兘
-        /// 3:涓汉
-        /// </summary>
-        int CurAnimationEffect = 0;
 
         public void LoadPage()
         {
@@ -307,9 +299,9 @@
         /// <summary>
         /// 鍒囨崲鍒版敹钘忕晫闈�
         /// </summary>
-        void ChooseCollection(bool qiangzhishuaxin = false)
+        void ChooseCollection()
         {
-            if (CurAnimationEffect == 0 || qiangzhishuaxin)
+            if (MainPage.CurPageIndex == 0)
             {
                 return;
             }
@@ -337,10 +329,10 @@
             distance /= total;
             new System.Threading.Thread(() => {
                 int index = 0;
-                CurAnimationEffect = 0;
+                MainPage.CurPageIndex = 0;
                 while (index < total+1)
                 {
-                    if (CurAnimationEffect != 0)
+                    if (MainPage.CurPageIndex != 0)
                     {
                         break;
                     }
@@ -391,7 +383,7 @@
         /// </summary>
         void ChooseClassification()
         {
-            if (CurAnimationEffect == 1)
+            if (MainPage.CurPageIndex == 1)
             {
                 return;
             }
@@ -413,15 +405,15 @@
             distance /= total;
             new System.Threading.Thread(() =>
             {
-                if (CurAnimationEffect == 1)
+                if (MainPage.CurPageIndex == 1)
                 {
                     return;
                 }
-                CurAnimationEffect = 1;
+                MainPage.CurPageIndex = 1;
                 int index = 0;
                 while (index < total+1)
                 {
-                    if (CurAnimationEffect != 1)
+                    if (MainPage.CurPageIndex != 1)
                     {
                         break;
                     }
@@ -482,7 +474,7 @@
         /// </summary>
         void ChooseIntellectualization()
         {
-            if (CurAnimationEffect == 2)
+            if (MainPage.CurPageIndex == 2)
             {
                 return;
             }
@@ -503,15 +495,15 @@
             }
             distance /= total;
             new System.Threading.Thread(() => {
-                if (CurAnimationEffect == 2)
+                if (MainPage.CurPageIndex == 2)
                 {
                     return;
                 }
-                CurAnimationEffect = 2;
+                MainPage.CurPageIndex = 2;
                 int index = 0;
                 while (index < total+1)
                 {
-                    if(CurAnimationEffect!=2)
+                    if(MainPage.CurPageIndex!=2)
                     {
                         break;
                     }
@@ -579,7 +571,7 @@
                 return;
             }
 #endif
-            if (CurAnimationEffect == 3)
+            if (MainPage.CurPageIndex == 3)
             {
                 return;
             }
@@ -605,11 +597,11 @@
             }
             distance /= total;
             new System.Threading.Thread(() => {
-                CurAnimationEffect = 3;
+                MainPage.CurPageIndex = 3;
                 int index = 0;
                 while (index < total+1)
                 {
-                    if (CurAnimationEffect != 3)
+                    if (MainPage.CurPageIndex != 3)
                     {
                         break;
                     }
diff --git a/HdlBluWi/.DS_Store b/HdlBluWi/.DS_Store
index 39659c2..8752578 100644
--- a/HdlBluWi/.DS_Store
+++ b/HdlBluWi/.DS_Store
Binary files differ
diff --git a/ys/Jars/app-release.aar b/ys/Jars/app-release.aar
index 3479f41..f612de8 100644
--- a/ys/Jars/app-release.aar
+++ b/ys/Jars/app-release.aar
Binary files differ

--
Gitblit v1.8.0