From 4c586bb23cdcae56ae4e4c62e90e148dc10b9d90 Mon Sep 17 00:00:00 2001
From: wxr <464027401@qq.com>
Date: 星期二, 17 五月 2022 14:19:31 +0800
Subject: [PATCH] Merge branch 'Dev-Branch' into wxr1215

---
 SiriIntents/SiriIntents.csproj                                                     |    7 
 DLL/LC/Android/Shared.Droid.LCVideoSDK.dll                                         |    0 
 HDL-ON_Android/Assets/Language.ini                                                 | 1184 ++++
 HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/CacControlPage.cs                    |  657 ++
 HDL-ON_iOS/HDL-ON_iOS.csproj                                                       |   18 
 HDL-ON_Android/Assets/Phone/FunctionIcon/CAC/DataIcon.png                          |    0 
 HDL_ON/UI/UI2/FuntionControlView/ArmCenter/AddOutputPage.cs                        |  229 
 HDL_ON/HDL_ON.projitems                                                            |   13 
 HDL_ON/UI/UI2/FuntionControlView/Panel/EnvironmentPanelPage.cs                     |  174 
 HDL_ON/UI/UI2/FuntionControlView/Music/SendMethod.cs                               |   23 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Panel/PanelHelpNormalBgIcon.png            |    0 
 HDL_ON/Entity/Function/Sensor.cs                                                   |  165 
 HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs                                            |  200 
 HDL_ON/DAL/Server/NewApiRes.cs                                                     |    4 
 HDL_ON/UI/UI0-Stan/Form/DeviceFunction4CardCommonForm.cs                           |  452 +
 HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs                             | 1737 +++---
 HDL_ON/UI/UI2/FuntionControlView/Curtain/RollingShutterPageBLL.cs                  |   60 
 HDL-ON_Android/Resources/Resource.designer.cs                                      |  917 +-
 HDL_ON/UI/UI0-Public/PublicAssmebly.cs                                             |   93 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/sensorhelp_blue.png         |    0 
 HDL_ON/UI/UI2/FuntionControlView/Video/VideoSend.cs                                |   38 
 HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs                               |   50 
 HDL_ON/UI/UI2/3-Intelligence/Scene/SceneEditPage.cs                                |    2 
 HDL_ON/UI/UI2/FuntionControlView/Curtain/MotorCurtainPageBLL.cs                    |   59 
 HDL-ON_Android/Resources/values-zh/strings.xml                                     |    2 
 HDL_ON/Common/ImageUtlis.cs                                                        |   41 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/StbPage.cs                             |  362 
 HDL_ON/UI/UI2/3-Intelligence/Automation/FunTpye.cs                                 |  100 
 HDL_ON/UI/UI2/FuntionControlView/ContentView/FhContentView.cs                      |  540 +
 HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs                                    |    1 
 HDL-ON_Android/LeChengVideo/Form/ReverseCallFragment.cs                            |    2 
 HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs                               |    8 
 HDL_ON/UI/UI2/FuntionControlView/Panel/PanelHelpPage.cs                            |  142 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Panel/PanelEnviBg.png                      |    0 
 HDL_ON/DAL/ThirdPartySdk/ESOnVideo.cs                                              |    4 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/PjtPage.cs                             |  260 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/hvaccac_blue.png            |    0 
 HDL_ON/DAL/ThirdPartySdk/HDLLinphone.cs                                            |   86 
 HDL_ON/UI/UI2/3-Intelligence/Scene/SceneAddPage.cs                                 |    4 
 HDL_ON/UI/UI2/FuntionControlView/Light/DimmerPageBLL.cs                            |   23 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/sensorhelp_white.png         |    0 
 HDL-ON_iOS/AppDelegate.cs                                                          |    4 
 HDL-ON_iOS/Resources/Phone/Public/MsgIcon/HangUpIcon.png                           |    0 
 HDL-ON_Android/LeChengVideoActivity.cs                                             |   12 
 HDL_ON/UI/UI2/FuntionControlView/ArmSensor/ArmSensorHistroyPaging.cs               |   10 
 HDL-ON_iOS/Resources/Language.ini                                                  | 1184 ++++
 HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWeepRobotConsumablesMagPage.cs     |   20 
 HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/CacDayHistoryPage.cs                 |  199 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/screenpanel.png                       |    0 
 HDL_ON/UI/UI2/2-Classification/ClassificaitionPublicBLL.cs                         |    2 
 HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/A_EnvironmentalDataCenter.cs | 1876 +++---
 HDL-ON_iOS/Resources/Phone/FunctionIcon/CAC/JinMaoIcon.png                         |    0 
 HDL_ON/DAL/DriverLayer/Control.cs                                                  |    9 
 HDL_ON/UI/UI2/FuntionControlView/Video/WanderingAlarmPage.cs                       |  188 
 SiriIntentsUI/SiriIntentsUI.csproj                                                 |    1 
 DLL/Linphone/Android/Shared.Droid.HDLLinphone.dll                                  |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Panel/PanelEnviBg.png                     |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/hvaccac_blue.png             |    0 
 HDL-ON_Android/Assets/Phone/Public/MsgIcon/AnswerIcon.png                          |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/hvaccac_white.png            |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/hvaccac_white.png           |    0 
 HDL_ON/UI/UI2/FuntionControlView/Curtain/CurtainModulePage.cs                      |    4 
 HDL_ON/UI/UI2/3-Intelligence/Automation/TargetDeviceFunList.cs                     |   47 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Panel/PanelHelpAlarmBgIcon.png            |    0 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaAirCleanerPage.cs                  |  100 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Panel/PanelHelpAlarmBgIcon.png             |    0 
 HDL_ON/DAL/Server/HttpServerRequest.cs                                             |   31 
 HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPageBLL.cs                |   20 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensorhelp.png                        |    0 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/AirSwitchPage.cs                       |   40 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/screenpanel.png                      |    0 
 HDL-ON_Android/Properties/AndroidManifest.xml                                      |    4 
 HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs                  |   18 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerSetTimePage.cs            |   80 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/TVPageBLL.cs                           |   20 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Panel/PanelHelpNormalBgIcon.png           |    0 
 HDL_ON/UI/UI0-Public/AppUnlockPage.cs                                              |   21 
 HDL_ON/DAL/Mqtt/MqttClient.cs                                                      |   31 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/hvaccac.png                          |    0 
 HDL-ON_Android/HDL-ON_Android.csproj                                               |   24 
 HDL_ON/UI/UI2/FuntionControlView/FunctionBaseInfoSetPage.cs                        |   51 
 HDL-ON_iOS/Info.plist                                                              |    4 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWeepRobotPage.cs                   |   20 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/CAC/DataIcon.png                           |    0 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWaterValvePage.cs                  |   40 
 HDL_ON/Common/HDLCommon.cs                                                         |   43 
 HDL_ON/UI/UI2/FuntionControlView/Music/A31PlayMusicPage.cs                         |   40 
 HDL_ON/UI/UI2/FuntionControlView/Light/RelayPage.cs                                |    2 
 HDL-ON_Android/Assets/Phone/FunctionIcon/CAC/JinMaoIcon.png                        |    0 
 HDL_ON/UI/UI2/2-Classification/FunctionControlZoneBLL.cs                           |  140 
 HDL_ON/UI/UI1-Login/LoginPage.cs                                                   |   18 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/sensorhelp_blue.png          |    0 
 HDL-ON_iOS/Resources/Phone/Public/MsgIcon/AnswerIcon.png                           |    0 
 HDL_ON/UI/UI2/FuntionControlView/Video/VideoMainView.cs                            |  309 +
 HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/CacHistoryChoosePage.cs              |  108 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/sensorhelp_white.png        |    0 
 HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSensorPage.cs   |  756 +-
 HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs                               |   73 
 DLL/Linphone/Android/Shared.Droid.HDLLinphone2022-03-31.dll                        |    0 
 HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/CacWeekHistoryPage.cs                |  424 +
 HDL_ON/Entity/Function/Function.cs                                                 |  145 
 HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs                              |  203 
 HDL_ON/UI/UI2/2-Classification/FunctionPage.cs                                     |   32 
 HDL_ON/DAL/Server/HttpUtil.cs                                                      |    6 
 HDL_ON/Common/UserInfo.cs                                                          |   29 
 HDL_ON/UI/UI2/FuntionControlView/Music/MusicMain.cs                                |    2 
 HDL-ON_Android/Assets/Phone/Public/MsgIcon/HangUpIcon.png                          |    0 
 HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs                                          |   13 
 HDL_ON/UI/UI2/1-HomePage/HomePage.cs                                               |  124 
 HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs                     |  116 
 HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EchartsOption_BrokenLine.cs  |    2 
 HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalPage.cs         |   36 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerPage.cs                   |  142 
 HDL-ON_iOS/Resources/Phone/Public/MsgIcon/CallIcon.png                             |    0 
 HDL_ON/UI/UI2/FuntionControlView/Light/ColorTureLampPageBLL.cs                     |   66 
 HDL-ON_Android/SplashActivity.cs                                                   |   18 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/SocketPage.cs                          |   40 
 HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/FhControlPage.cs                     |   58 
 HDL_ON/UI/MainPage.cs                                                              |    4 
 DLL/Scan/HDL.Shared.IOS.ScanQRCode.dll                                             |    0 
 HDL-ON_Android/Application.cs                                                      |   13 
 HDL_ON/UI/UI2/FuntionControlView/Curtain/CurtainModulePageBLL.cs                   |   54 
 HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AirFreshControlPage.cs               |   40 
 HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs                     |  130 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaFanPage.cs                         |   22 
 HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AirFreshRelayControlPage.cs          |   42 
 HDL_ON/UI/UI2/FuntionControlView/Music/MusicProperty.cs                            |    8 
 HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicModel.cs                            |   12 
 HDL_ON/UI/UI2/FuntionControlView/Light/RelayPageBLL.cs                             |   40 
 HDL-ON_iOS/Resources/Phone/Public/dialogBg2.png                                    |    0 
 HDL_ON/UI/UI2/FuntionControlView/Video/ObjectClass.cs                              |    5 
 HDL-ON_Android/Assets/Phone/Public/dialogBg2.png                                   |    0 
 HDL_ON/Entity/FunctionList.cs                                                      |    9 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/FanPageBLL.cs                          |   42 
 HDL_ON/DAL/Server/NewAPI.cs                                                        |   15 
 HDL_ON/UI/UI2/FuntionControlView/ContentView/AcContentView.cs                      | 1110 ++++
 HDL-ON_Android/Assets/Phone/Public/MsgIcon/CallIcon.png                            |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensorhelp.png                       |    0 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/IrLearnPage.cs                         |   20 
 HDL_ON/Common/R.cs                                                                 |   50 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/hvaccac.png                           |    0 
 HDL-ON_Android/Other/JPush/JPushReceiver.cs                                        |  125 
 142 files changed, 12,138 insertions(+), 4,265 deletions(-)

diff --git a/DLL/LC/Android/Shared.Droid.LCVideoSDK.dll b/DLL/LC/Android/Shared.Droid.LCVideoSDK.dll
index b67911f..abd06cf 100644
--- a/DLL/LC/Android/Shared.Droid.LCVideoSDK.dll
+++ b/DLL/LC/Android/Shared.Droid.LCVideoSDK.dll
Binary files differ
diff --git a/DLL/Linphone/Android/Shared.Droid.HDLLinphone.dll b/DLL/Linphone/Android/Shared.Droid.HDLLinphone.dll
index 38d92a5..07ff54e 100644
--- a/DLL/Linphone/Android/Shared.Droid.HDLLinphone.dll
+++ b/DLL/Linphone/Android/Shared.Droid.HDLLinphone.dll
Binary files differ
diff --git a/DLL/Linphone/Android/Shared.Droid.HDLLinphone2022-03-31.dll b/DLL/Linphone/Android/Shared.Droid.HDLLinphone2022-03-31.dll
new file mode 100644
index 0000000..38d92a5
--- /dev/null
+++ b/DLL/Linphone/Android/Shared.Droid.HDLLinphone2022-03-31.dll
Binary files differ
diff --git a/DLL/Scan/HDL.Shared.IOS.ScanQRCode.dll b/DLL/Scan/HDL.Shared.IOS.ScanQRCode.dll
new file mode 100644
index 0000000..8d81fa4
--- /dev/null
+++ b/DLL/Scan/HDL.Shared.IOS.ScanQRCode.dll
Binary files differ
diff --git a/HDL-ON_Android/Application.cs b/HDL-ON_Android/Application.cs
index dbb5630..cf341fe 100644
--- a/HDL-ON_Android/Application.cs
+++ b/HDL-ON_Android/Application.cs
@@ -84,6 +84,7 @@
                 BusSocketStart();
                 //鍚庡彴鍥炲埌鍓嶅彴
                 new HDL_ON.UI.AppUnlockPage().LoadPage();
+
             }
         }
 
@@ -93,6 +94,10 @@
             mCount--;
             if (mCount == 0)
             {
+                //if(activity.GetType().Name.Contains("LeChengVideoActivity"))
+                //{
+                //    //UserInfo.Current.PushMesLogTime = DateTime.MinValue;
+                //}
                 Console.WriteLine("HHH OnActivityStopped锛� background");
                 BusSocketStop();
                 //杩涘叆鍚庡彴
@@ -110,11 +115,6 @@
 
         public int mCount;
 
-        ///// <summary>
-        ///// 鏄惁杩涘叆鍚庡彴
-        ///// </summary>
-        //public bool IsEnterBackground = false;
-
         /// <summary>
         /// 杩涘叆鍚庡彴鐨勬椂闂�
         /// </summary>
@@ -125,7 +125,6 @@
         /// </summary>
         void BusSocketStop()
         {
-            //IsEnterBackground = true;
             CloseTime = DateTime.Now;
             MainPage.IsEnterBackground = true;
             //杩涘叆鍚庡彴mqtt姝e湪杩炴帴閲嶇疆鐘舵��
@@ -139,8 +138,6 @@
         /// </summary>
         void BusSocketStart()
         {
-            //IsEnterBackground = false;
-
             if (CloseTime.AddSeconds(10) < DateTime.Now)
             {
                 //鍚庡彴瓒呰繃10s灏辨柇寮�MQTT閲嶈繛
diff --git a/HDL-ON_Android/Assets/Language.ini b/HDL-ON_Android/Assets/Language.ini
index a48482d..dd65978 100644
--- a/HDL-ON_Android/Assets/Language.ini
+++ b/HDL-ON_Android/Assets/Language.ini
@@ -518,6 +518,16 @@
 530=In order to prevent the wrong touch and click of opening and closing the door and ensure family safety, please enter your door lock password.
 531=Password free unlocking within five minutes
 532=The device is offline and cannot be operated temporarily
+533=Statistical Chart
+534=Data
+535=Dew point temperature
+536=Temperature statistics
+537=Humidity statistics
+538=Uint
+539=Smart panel
+540=In Alarm
+541=Monitoring
+542=Wandering alarm
 
 
 1000=Room Humidity
@@ -1030,6 +1040,10 @@
 7152=Leave or arrive at a place
 7153=Leave
 7154=Arrive
+7155=Distress/Normal
+7156=Distress
+
+
 
 
 
@@ -1659,8 +1673,19 @@
 530=涓洪槻姝㈠紑鍏抽棬鐨勮瑙︾偣鍑伙紝淇濊瘉瀹跺涵瀹夊叏锛岃杈撳叆鎮ㄧ殑闂ㄩ攣寮�闂ㄥ瘑鐮併��
 531=浜斿垎閽熷唴鍏嶅瘑鐮佸紑閿�
 532=璁惧绂荤嚎涓紝鏆傛椂鏃犳硶鎿嶄綔
-533=璁垮绠$悊
+2533=璁垮绠$悊
 
+533=24灏忔椂缁熻鍥�
+534=鏁版嵁
+535=闇茬偣娓╁害
+536=娓╁害缁熻鍥�
+537=婀垮害缁熻鍥�
+538=鍗曚綅
+539=鏅鸿兘闈㈡澘
+540=鎶ヨ涓�
+541=鐩戞帶涓�
+542=寰樺緤鎶ヨ
+ 
 1000=瀹ゅ唴婀垮害
 1001=绔ラ攣
 1002=璐熺瀛�
@@ -2154,7 +2179,8 @@
 7152=绂诲紑鎴栧埌杈炬煇鍦�
 7153=绂诲紑
 7154=鍒拌揪
-
+7155=姹傛晳/姝e父
+7156=姹傛晳
 
 
  
@@ -2782,6 +2808,16 @@
 530=In order to prevent the wrong touch and click of opening and closing the door and ensure family safety, please enter your door lock password.
 531=Password free unlocking within five minutes
 532=The device is offline and cannot be operated temporarily
+533=Statistical Chart
+534=Data
+535=Dew point temperature
+536=Temperature statistics
+537=Humidity statistics
+538=Uint
+539=Smart panel
+540=袧芯褉屑邪谢褜薪褘泄
+541=Monitoring
+542=Wandering alarm
 
 
 
@@ -3404,3 +3440,1147 @@
 10031=校褋褌褉芯泄褋褌胁芯 薪械 写芯谢卸薪芯 斜褘褌褜 锌褍褋褌褘屑.
 10032=校 锌芯谢褜蟹芯胁邪褌械谢褟 薪械褌 褉邪蟹褉械褕械薪懈褟.
 10033=校褋褌褉芯泄褋褌胁芯 薪械 褋褍褖械褋褌胁褍械褌.
+
+
+
+[Spanish]
+1=Ingresar
+2=N煤mero de tel茅fono
+3=Luz
+4=Correo
+5=Por favor ingrese numero de cuenta 
+6=Contrase帽a
+7=Olvidar
+8=Registrarse
+9=Iniciar sesi贸n
+10=Espere鈥�
+11=Cerrar
+12=C贸digo de verificaci贸n
+13=Contrase帽a de acceso
+14=Registrarse
+15=N煤mero de tel茅fono
+16=Ingrese la contrase帽a
+17=Ingrese la contrase帽a nuevamente
+18=C贸digo de verificaci贸n
+19=N煤mero de tel茅fono incorrecto, ingrese nuevamente
+20=L a contrase帽a y la confirmaci贸n no coinciden. Ingrese la contrase帽a nuevamente
+21=El formato de la contrase帽a no cumple con los requisitos. Ingrese la contrase帽a nuevamente
+22=El usuario ya existe. Puede ingresar directamete
+23=C贸digo de verificaci贸n incorrecto, vuelva a ingresarlo. 
+24=N煤mero de cuenta incorrrecta, por favor ingrese el correo correcto 
+25=Correo
+26=Residencia
+27=Miembro
+28=Desarmar
+29=Armar
+30=Copia de seguridad
+31=Funci贸n auxiliar
+32=A帽adir funciones
+33=Modo noche
+34=Configuraci贸n general
+35=Soporte
+36=Casa
+37=Categor铆a
+38=Inteligente
+39=Individual
+40=Inicio de sesi贸n fallido, n煤mero de cuenta o contrase帽a incorrectos
+41=Error al enviar el codigo de verificaci贸n
+42=Error de red
+43=Error en el registo, int茅ntelo de nuevo
+44=Confirmar reinicio
+45=El numero de cuenta no existe, por favor aseg煤rese de estar registrado
+46=Inicio de sesion inv谩lido, iniciar sesion nuevamente
+47=Centro Personal
+48=Nombre
+49=C贸digo QR
+50=Tel茅fono
+51=Correo
+52=No enlazado
+53=Autorizaci贸n de terceros
+54=Cambiar contrase帽a
+55=Configuraci贸n de desbloqueo
+56=Establecer contrase帽a, gesto, huella digital o identificaci贸n facil para proteger su provacidad
+57=Salir
+58=Habitaci贸n
+59=Equipo
+60=Funci贸n
+61=Brillo
+62=Configuraci贸n
+63=Locaci贸n 
+64=Compartir 
+65=A帽adir acceso directo al escritorio
+66=Cambiar nombre
+67=Cancelar 
+68=Confirmar 
+69=Todo
+70=Cortina
+71=Nombre
+72=Address
+73=Gesti贸n de plantas
+74=Gesti贸n de habitaciones
+75=Migraci贸n de administrador 
+76=Migraci贸n de privilegios 
+77=Priviligio de depuraci贸n
+78=El administrador migra a otro usuario
+79=Toda los datos de la residencia migran al nuevo usuario
+80=Permitir que el personal visite su casa de forma remota
+81=Piso
+82=A帽adir piso
+83=Cambiar nombre de piso
+84=Error al a帽adir, el piso ya existe
+85=Escena 
+86=Borrar 
+87=Inmediata
+88=Eliminar el piso o no? 
+89=A帽adir habitaci贸n 
+90=Cmabiar la informacion de la habitaci贸n 
+91=Informaci贸n de la habitanci贸n 
+92=Nombre
+93=Piso
+94=Gesti贸n funcionamiento
+95=Guardar
+96=Eliminar la habitaci贸n 
+97=Galeria por defecto 
+98=Camara
+99=Seleccionar de la galeria 
+100=No asignado 
+101=Asignado
+102=No asignado 
+103=Eliminar la habitaci贸n o no? 
+104=Tiempo de transici贸n 
+105=Temperatura interna 
+106=AC
+107=Videoportero
+108=Sensor
+109=Monitor de seguridad 
+110=Panel Inteligente
+111=Musica 
+112=Aire fresco 
+113=Ambiental 
+114=Monitoreo de energ铆a 
+115=Electrodom茅sticos
+116=Bloqueo inteligente 
+117=Calefacci贸n 
+118=Abrir 
+119=Refrigeraci贸n 
+120=Calefacci贸n 
+121=Deshumidificar
+122=Auto
+123=Suministro de aire
+124=Alto 
+125=Medio 
+126=Bajo 
+127=Modo
+128=Velocidad del ventilador 
+129=Estas seguro de apagar todas las funciones de la habitaci贸n? 
+130=Abierta
+131=A帽adido a favoritos
+132=Felicitaciones! Registro exitoso 
+133=Inicio de sesion autom谩tico pronto鈥�.
+134=El numero de no esta registrado, por favor registrese e ingrese nuevamente
+135=Por favor, obtener codigo de verificaci贸n 
+136=La contrase帽a ha sido cambiada
+137=La direccion rsidencial no puede estar en blanco 
+138=El nombre de la residencia no puede estar en blanco 
+139=El nombre de la habitaci贸n no puede estar en blanco 
+140=El nombre del piso no puede estar en blanco 
+141=No se pudo revisar, el piso ya existe
+142=El nombre del equipo no puede estar en blanco 
+143=El nombre del usuario no puede estar en blanco 
+144=Nombre de usuario 
+145=Seleccione la p谩gina para bloquear 
+146=Puede seleccionar varias paginas que le gustaria mantener
+147=Error en codigo de verificaci贸n
+148=No protegido 
+149=Cuando empieza 
+150=Armar/Desarmar 
+151=Desbloquear remotamente 
+152=No se necesita contrase帽a/gesto al iniciar el software
+153=Iniciar sesi贸n 5 minutos despues de salir de la p谩gina, se requiere el m茅todo de desbloqueo correspondiente.
+154=Centro de miembros - utiliza para debloquear la funci贸n de seguridad como armar/desarmar
+155=Usado para desbloquear la cerradura inteligente 
+156=Configuraci贸n de desbloqueo
+157=Solo valido para host
+158=Desbloquear con contrase帽a
+159=Desbloquear con gesto 
+160=Desbloquear con huella 
+161=Desbloquear con identificaci贸n facial 
+162=Configuraci贸n de contrase帽a num茅rica
+163=Configuraci贸n exitosa
+164=Configuraci贸n de gestos
+165=Por favor dibuja tu patron de desbloqueo
+166=Requiere al menos una conexi贸n de 4 puntos, dibuje nuevamente 
+167=El patron y la corfirmacion que dibujaste no coincide, dibuje nuevamente
+168=Por favor dibuje su patr贸n nuevamente
+169=Desbloquear con huella o no? 
+170=Desbloquar con identificacion facial o no? 
+171=Verificar la contrase帽a num茅rica 
+172=Verificar el gesto 
+173=Por favor ingrese el gesto original 
+174=Por favor ingrese la contrase帽a num茅rica original 
+175=Verificaci贸n fallida, error en la contrase帽a
+176=Cambiar la contrase帽a num茅rica 
+177=Cambiar el gesto 
+178=Cerrar la configuraci贸n de desbloqueo o no? 
+179=Por favor verifique la huella 
+180=Verificaci贸n fallida, error en el gesto
+181=General 
+182=Dia 
+183=Noche 
+184=Abandonar 
+185=Por favor enlace el piso
+186=Ajuste de la velocidad del ventilador 
+187=Ventilador 
+188=Enchufe 
+189=Nivel 
+190=Chl
+191=Vol
+192=TV
+193=La habitanci贸n existe, error al cambiar 
+194=Medio Ambiente
+195=Contaminaci贸n fuerte
+196=Contaminaci贸n leve 
+197=Bueno
+198=Excelente
+199=Frio helado
+200=Frio
+201=Frio
+202=Confort
+203=Tibio 
+204=Caliente
+205=Extremadamente caliente 
+206=Hasta el estandar 
+207=Contaminaci贸n leve 
+208=Contaminaci贸n media
+209=Contaminaci贸n fuerte
+210=Fresco 
+211=Turbidez
+212=Hipoxia
+213=Hipoxia severa
+214=H煤medo 
+215=H煤medo 
+216=Seco 
+217=Temperatura
+218=Humedad 
+219=Rango 
+220=Nivel 
+221=Valor de color 
+222=PM1.0
+223=PM2.5
+224=Ruido
+225=Fuerza del viento
+226=CO2
+227=TV02
+228=Dia 
+229=Semana
+230=Mes
+231=Otra regi贸n 
+232=Administraci贸n de miembros 
+233=Apodo 
+234=Autoridad Administrativa
+235=Crear una escena
+236=Apodo no puede quedar en blanco 
+237=Editar apodo 
+238=La regi贸n utilizada 
+239=A帽adir miembro 
+240=Por favor ingrese el n煤mero de cuenta del miembro 
+
+241=Escanear codigo QR 
+242=Confirmar la invitaci贸n 
+243=Error en n煤mero de cuenta, por favor chequear 
+244=Agregue correctamente al miembro
+245=Error de datos, por favor intente de nuevo 
+246=Error al a帽adir, el numero de cuenta del miembro no esta registrada
+
+247=No puedes agregarte a ti mismo.
+248=El usuario no existe en esta residencia 
+249=Se ha agregado el n煤mero de cuenta del miembro, por lo que no se puede volver a agregar.
+
+250=Error de operaci贸n 
+251=Error al agregar, autoridad no valida 
+252=Guardado correctamente
+253=Guardando鈥spere un momento. 
+254=Adopo editado 
+255=Eliminar este miembro 
+256=Sin favoritos 
+257=Introduzca el contenido 
+258=Bienvenido al nuevo miembro 
+259=Esta seguro de elimianr este miembro? 
+260=Introduzca la contrase帽a de inicio de sesi贸n 
+261=Cambio de residencia exitoso
+262=Seleccionar todo 
+263=Compartir la selecci贸n funcional 
+264=Confirmar uso compartido 
+265=Compartir en 
+266=Error de uso compartido funcional 
+267=Uso compartido funcional exitoso 
+268=Correo 
+269=Cambiar el enlace 
+270=Eliminar el enlace
+271=Correo 
+272=Cambiar la direcci贸n de correo 
+273=Cambiar el m茅todo de verificaci贸n 
+274=El c贸digo de verificaci贸n ha sido enviado, por favor ingrese
+275=Reenviar 
+276=Verificaci贸n correcta 
+277=Correo 
+278=Por favor ingrese el nuevo correo 
+279=Enlazar correctamente su correo electr贸nico a su cuenta
+280=No vincular su correo electr贸nica a su cuenta 
+281=Eliminar el enlace de correo electr贸nico 
+282=Eliminaci贸n correcta de enlace 
+283=N煤mero de telefono
+284=N煤mero de telefono
+285=N煤mero de telefono
+286=Vincular correctamente su numero de tel茅fono a su cuenta
+287=No puede vincular su numero de tel茅fono a su cuenta 
+288=Cambiar el enlace 
+289=Quitar el enlace 
+290=No se puede obtener el historial 
+291=Sin favoritos 
+292=Acerca de ON+
+293=Miembro
+294=Administrador 
+295=Cambiar la contrase帽a
+296=Antes de cambiar la contrase帽a iniciar sesion
+297=Por favor verifique ID
+298=Verificaci贸n telefonica 
+299=Verificaci贸n de correo electronico 
+300=No se ha enlazado a la direcci贸n de correo electronico, no puede verificar 
+301=No se ha enlazado a un numero telefonico, no se puede verificar  
+302=Proceder al enlace 
+303=Eliminado correctamente el enlace a su numero de telefono 
+304=El codigo de verificaci贸n se ha enviado a: 
+305=Telefono 
+306=Correo 
+307=Recibi贸 nuevos datos, esta seguro de anularlos? 
+308=Automatizaci贸n 
+309=Crear una escena
+310=A帽adir escena 
+311=Configuraci贸n basica 
+312=Nombre
+313=Region 
+314=Completo
+315=Vista completa de la residencia
+316=Sleccionar 
+317=Ya a帽adido
+318=Conmutador 
+319=Velocidad del ventilador 
+320=Modo
+321=Encendido
+322=Apagado
+323=Escena 
+324=Retardo de escena
+325=Configuraci贸n de retardo
+326=Retardo 
+327=Capturar la escena
+328=Escena de pelicula 
+329=General 
+330=Modo autom谩tico 
+331=Potencia calentamiento suelo
+332=Refrigeraci贸n suelo
+333=Potencia de refrigeraci贸n del suelo
+334=Ajustar el porcentaje
+335=Sin retardo
+336=No hay escena disponible. A帽ade uno! 
+337=Editar la escena
+338=El nombre de la escena no puede estar en blanco
+339=El nombre de la escena ya existe, por favor revise 
+340=El nombre de la habitaci贸n ya existe, por favor revise
+341=Eliminar esta escena o no? 
+342=La puerta de enlace esta fuera de linea, falla de conexi贸n remota
+343=Error MAC, error de conexi贸n remota. 
+344=Error de conexi贸n remota. 
+345=Telefono 
+346=Correo 
+347=Ingrese el nuevo numero de telefono ceular 
+348=Ya se ha utilizado el numero de telefono celular 
+349=Ya se ha utilizado la direccion de correo electronico 
+350=La direcci贸n de correo electr贸nico es la misma que la actual, sin necesidad de cambiar.
+351=El n煤mero de tel茅fono es la mismo que la actual, sin necesidad de cambiar.
+352=Asignaci贸n de piso 
+353=Separar 
+354=Cerrar
+355=Acerca de
+356=Numero de version 
+357=Esta funcion no esta disponible! 
+358=Telefono 
+359=Correo 
+360=Escena de panel 
+361=No a帽adido
+362=Seleccionar todo 
+363=No se puede comunicar con el servidor, no se puede editar la informaci贸n del dispositivo
+364=No se puede comunicar con el servidor, no se puede editar la informaci贸n de la habitaci贸n
+365=No se puede comunicar con el servidor, no se puede editar la informaci贸n de la escena
+366=No se puede comunicar con el servidor, no se puede eliminar la escena
+367=No se puede comunicar con el servidor, no se puede eliminar el piso
+368=Bienvenido a disfrutar de ON+ 
+369=A帽adir residencia
+370=Convi茅rtete en miembro de la familia
+371=No se puede utilizar la funcion, por favor verifique su conexi贸n 
+372=No se puede crear una escena, por favro verifique su conexi贸n 
+373=Error al agregar un piso 
+374=Los datos residenciales se han eliminado, APP cambiar谩 autom谩ticamente a otra residencia.
+375=El gateway no esta conectado al servidor, no se puede crear la escena 
+376=No se puede introducir un car谩cter especial
+377=Toda la residencia 
+378=Tiempo de transici贸n 
+379=Velocidad de transicion 
+380=Esta funcion no esta disponible! 
+381=Recargar
+400=Bienvenido a casa
+401=Codigo de barras no v谩lido, intentelo de nuevo 
+402=Int茅ntelo de nuevo
+403=Temperatura de color 
+404=Ajuste r谩pido 
+405=Acogedor 
+406=Reuni贸n 
+407=Lectura
+408=A帽adir
+409=Marca de funci贸n 
+410=No ha agregado ningun dispositov de pataforma en la actualidad 
+411=Otros dispositivos de plataforma son compatibles con proveedores de serviciso externos 
+412=A帽adir
+413=Controlador no activado
+414=Controlador activado
+415=Alguien
+416=Registro
+417=Fuga de agua 
+418=En alarma 
+419=Normal 
+420=Seco caliente
+421=Secado al aire
+422=Desinfectar
+423=Iluminaci贸n
+424=Tiempo
+425=Tiempo seco caliente
+426=Tiempo de secado al aire
+427=Tiempo de desinfecci贸n 
+428=Tiempo Ani贸n
+429=H
+430=Min
+431=Actualmente esta agregando cualquier dispositivos de plataforma a
+432=Otros dispositivos de plataforma son compatibles con proveedores de serviciso externos 
+433=Valvula de agua 
+434=Interruptor de tiempo
+435=Control remoto 
+436=Dispositivos a帽adido 
+437=Lista de dispositivos 
+438=humedad:{0}% aire:viento {1}:{2}
+439=Tiempo real: {0} kw
+440=Siguiente paso
+441=Seleccione todas las 谩reas de estado de captura
+442=Generar escena
+443=Implementaci贸n personalizada
+444=Centro de seguridad
+445=Defensa de la casa
+446=Defensa en casa
+447=Defensa de vacaciones 
+448=Implementaci贸n fija 
+449=*Deshacer defensa no afecta
+450=Defensa contra desastres
+451=Defensa de 24 horas 
+452=Alarma antirrobo
+453=Silenciar alarma
+454=Informaci贸n de implementaci贸n
+455=El nombre no puede estar en blanco 
+456=Lienzo
+457=Consumo de energ铆a 
+458=Fecha
+459=Consumo de energ铆a en tiempo real 
+460=Consumo energ茅tico de este mes 
+461=Exterior/Interior
+462=Aun no has a帽adido ningun dispositivo
+
+463=Introduzca el c贸digo SN del dispositivo
+464=Puede empezar a usar la onda milim茅trica Zhaoguan
+465=Eliminar dispositivo
+466=STB
+467=Proyector
+468=Alguien cay贸
+469=Alguien est谩 en
+
+470=Bajo protecci贸n 
+471=Sensor de onda milim茅trica
+472=Exterior
+473=Columpio 
+474=Oscilaci贸n hacia arriba y hacia abajo 
+475=Gira a izquierda y derecha
+476=A帽adir residencia 
+477=Columpio 
+478=Patr贸n
+479=Velocidad
+480=Sensor ambiental 
+481=Puede empezar a usar el sensor ambiental 
+482=Sensor de gas
+483=Introduzca el c贸digo MAC del dispositivo
+484=Abierto
+485=Comprobar/Modificar
+486=Funci贸n de defensa/Estado de alarma 
+487=Objetivo de alarma despues de la activaci贸n 
+488=Paso de rostro
+489=Aplicar identificaci贸n facil a: 
+490=Control de acceso a la comunidad
+491=Acerda de identificacion facil y privacidad 
+492=Borrar datos 
+493=Resetear identificaci贸n facial 
+494=Establecer identificaci贸n facial 
+495=Configuraci贸n paso de rostro
+496=No hay ningun estado de implementacion de tareas asociado 
+497=Personalizado
+498=Implementaci贸n retrasada
+499=Agregar funci贸n de defensa
+500=Agregar destino de alarma
+501=Alarma de seguridad: se activa en {0}
+502=Borrar la alarma de seguridad?
+503=Exceso de estandar 
+504=Bueno
+505=Excelente
+506=Indentificacion facil ingresada correctamente
+507=Ingreso identificaci贸n facil fallida
+508=Formaldeh铆do
+509=Introduzca el nombre de seguridad
+510=Seleccione el destino de implementaci贸n 
+511=Atenuaci贸n combinada
+512=Mensajes no estan habilitados, vaya a configuraci贸n
+513=Introduzca el codigo de emparejamiento
+514=La informaci贸n de la ubicaci贸n del gateway no est谩 configurada
+515=Agregar seguridad
+516=Withdrawal
+------
+517=Instantaneous value
+518=Cumulative power consumption
+519=Voltage (V)
+520=Electric Current (A)
+521=Power (W)
+522=Refresh
+523=Delay alarm
+524=Bypass
+525=Enable
+526=Cancel account
+527=Homekit support notes
+528=Firmware update
+529=
+530=In order to prevent the wrong touch and click of opening and closing the door and ensure family safety, please enter your door lock password.
+531=Password free unlocking within five minutes
+532=The device is offline and cannot be operated temporarily
+533=Statistical Chart
+534=Data
+535=Dew point temperature
+536=Temperature statistics  
+537=Humidity statistics
+538=Uint
+539=Smart panel
+540=En alarma
+541=Monitoring
+542=Wandering alarm
+
+
+1000=Humedad de ambiente
+1001=V-chip
+1002=Ani贸n
+1003=Estirilizaci贸n
+1004=Humidificar
+1005=Restablecimiento del elemento de filtro
+1006=Iluminaci贸n
+1007=Autom谩tico
+1008=Manual
+1009=Fuerte
+1010=Dormir
+1011=Tiempo
+1012=Velocidad del viento
+1013=Engranaje 
+1014=Confirme si el elemento filtrante se ha restablecido y opere el equipo de acuerdo con el manual de instrucciones para que la vida 煤til del elemento filtrante se vuelva a cronometrar
+1015=Marcha baja
+1016=Engranaje medio
+1017=Marcha alta
+1018=Configuraci贸n de temportizaci贸n 
+1019=Hora
+1020=Tiempo del elemento de filtro: 
+1021=Filtro de aire
+1022=Velocidad actual del viento 
+1023=Cancelar tiempo 
+1024=Robot de barrido de pisos 
+1025=Succi贸n 
+1026=1掳 Marcha 
+1027=2掳 Marcha 
+1028=3掳 Marcha 
+1029=Carga 
+1030=Voz 
+1031=Silenciar 
+1032=Modo de limpieza
+1033=Gestion de consumibles
+1034=Historia
+1035=Autom谩tico
+1036=Aleatorio
+1037=Muro
+1038=Espiral
+1039=脕rea total limpia
+1040=Tiempo total de limpieza
+1041=Vida 煤til restante del cepillo lateral 
+1042=Vida 煤til residual del cepillo de rodillos 
+1043=Vida 煤til restante de la pantalla de filtro
+1044=Restablecer pincel de bordes
+1045=Restablecer cepillo de rollo
+1046=Restablecer pantalla
+1047=Confirmar para restablecer el pincel de bordes? 
+1048=Confirmar para restablecer el cepillo de rollo? 
+1049=Confirmar para restablecer la pantalla? 
+1050=Agregar dispositivo
+1051=Mini control remoto inteligente
+1052=Agregar control remoto por infrarrojos 
+1053=Presione el bot贸n del control remoto infrarrojo{0} durante 3 segundos y la luz indicadora{0} se enciende en azul r谩pidamente
+1054=Aseg煤rese de que su Bluetooth{0} est茅 activado y se pueda buscar
+1055=Siguiente paso
+1056=Buscando dispositivo鈥�
+1057=No se ha encontrado ning煤n mando a distancia por infrarrojos
+1058=1.Compruebe si el dispositivo est谩{0} encendido normalmente{0}2.Compruebe si la funci贸n Bluetooth{0} est谩 activada normalmente{0}3.Compruebe si el indicador{0} luz parpadea en azul
+1059=Buscar de nuevo
+1060=Conectar WiFi
+1061=En la actualidad, solo es compatible con la red WiFi 2.4G{0} y no admite nombres WiFi{0} con caracteres chinos
+1062=Contrase帽a
+1063=Conectando鈥�
+1064=Haga que el control remoto por infrarrojos{0} lo m谩s cerca posible del enrutador WiFi
+1065=Enlace de red
+1066=Subir a nube
+1067=Conectado con 茅xito 
+1068=1.Compruebe si el dispositivo est谩{0} encendido normalmente{0}2.Active la funci贸n Bluetooth{0}3.Presione el bot贸n durante 10 s y el indicador{0} luz estar谩 encendida
+1069=Error al agregar 
+1070=Agregado con 茅xito
+1071=隆Puedes empezar a usar el control infrarrojo{0}remote!
+1072=Empezar a usar 
+1073=Por favor encender Bluethooth
+1074=Informaci贸n de ubicaci贸n (GBS) no disponible
+1075=Red no disponible
+1076=Seleccione el mando a distancia por infrarrojos
+1077=Aire fresco
+1078=Pantalla de filtro residual 
+1079=Energia 
+1080=Ventilado
+;鍒�
+1081=1掳 Marcha 
+1082=2掳 Marcha 
+1083=3掳 Marcha 
+1084=1掳 Marcha 
+1085=2掳 Marcha 
+1086=3掳 Marcha 
+1087=Desbloquear 
+1088=Temp. Contrase帽a
+1089=Conectado 
+1090=Desconectado 
+1091=Generar 
+1092=Tiempo efectivo 
+1093=Tiempo de caducidad
+1094=Seleccionar hora 
+1095=Seleccionar fecha
+1096=Generar 
+1097=Se ha copiado la contrase帽a actual 
+1098=Borrar contrase帽a?
+1099=El tiempo de caducidad debe ser posterior al tiempo efectivo 
+1100=M茅todo de desbloqueo
+1101=Se sincronizar谩 con el bloqueo real, 驴confirmar para eliminar?
+1102=Borrar 
+1103=Comentar 
+1104=El comentario no puede estar en blanco
+1105=Asignar a: 
+1106=Escena de destino no existe 
+1107=Seleccionar escena
+1108=Desbloquear 
+1109=Siempre encendido
+1110=Configuraci贸n
+1111=Automatizaci贸n 
+1112=Activar el modo "Siempre encendido" 
+1113=Desactivar el modo "Siempre encendido"
+1114=Editar 
+1115=Siempre Encendido estar谩 apagado {0}
+1116=Condici贸n
+1117=Movimiento 
+1118=Siempre encendido
+1119=Bloquear 
+1120=Usuario
+1121=M茅todo de desbloqueo
+1122=Huella digital 
+1123=Tarjeta 
+1124=Clave
+1125=Informaci贸n
+1126=Desbloquear 
+1127=Alarma 
+1128=Sin conexi贸n 
+1129=Para el primer usuario, introduzca la contrase帽a.
+1130=Introduzca la contrase帽a de administrador
+1131=Enlace correcto
+1132=Saltar a la contrase帽a personal para desbloquear 
+1133=Saltar 
+1134=Por favor, dibuja tu patr贸n 
+1135=El bloqueo estar谩 siempre encendido despu茅s de la configuraci贸n, confirme para continuar
+1136=Confirmar 
+1137=Caducar 
+1138=Siempre Encendido caducar谩 despues de {0} horas
+1139=Introduzca el tiempo de caducidad 
+1140=El tiempo de caducidad no debe ser superior a 72 horas
+1141=El tiempo de caducidad no debe ser inferior a 1 hora
+1142=Error al establecer conexi贸n, intentelo de nuevo 
+1143=No se puede verificar el ID de administrador, vuelva a iniciar sesi贸n en la cuenta
+1144=Su residencia est谩 siendo migrada a otro HDL
+1145=Nota: 
+1. Todos sus datos de residencia se migrar谩n a un nuevo usuario. {0} 2. Despu茅s de la migraci贸n, el miembro original ser谩{0}autom谩ticamente desvinculado de esta residencia. {0} 3. La nueva cuenta es una HDL v谩lida. {0} 4. La cuenta del receptor no puede ser la misma{0} que la del lado de la migraci贸n.
+1147=Confirmar 
+1148=Cuenta del receptor de entrada
+1149=Perfil 
+1150=Confirmar migraci贸n de administrador de {0} a {1}
+1151=La cuenta no existe
+1152=No transferir la propiedad a usted mismo
+1153=Terminar
+1154=Transferir al usuario, por favor espere...
+1155={0} se ha convertido en administrador residencial
+1156=Los datos de residencia se eliminar谩n de su cuenta
+1157=No se puede migrar
+1158=Int茅ntelo de nuevo
+1159=Migraci贸n de la autoridad de administraci贸n
+1160=Su autoridad de administraci贸n se est谩 migrando a otros miembros
+1161=1.Sus datos (datos en la nube) de la residencia ser谩n{0}migrabados al nuevo administrador{0}2.Sus datos se intercambiar谩n con el miembro objetivo{0}y su permiso se cambiar谩 al miembro objetivo{0}
+1162=Confirmar
+1163=No hay miembros para elegir
+1164=Confirmar la migraci贸n de la autoridad de administraci贸n de {0} a {1}
+1165=Migrar correctamente
+1166=No se puede migrar
+1167=Migrar correctamente, y sus permisos se convertir谩n en miembros normales
+
+4000=Videoportero
+4001=Registro de llamadas 
+4002=*Los registros en la nube solo se conservan durante 30 d铆as
+4003=Llamada telef贸nica a domicilio
+4004=Contestado
+4005=Desbloqueado
+4006=A帽o
+4007=De
+4008=Llamada
+4009=Desbloqueado
+4010=Perdido
+4011=Rechazado
+4012=隆Los par谩metros de configuraci贸n son anormales!
+4013=C贸digo QR de control de acceso
+4014=Contrase帽a temporal 
+
+
+
+
+
+5000=Musica 
+5001=Grupo 
+5002=Configuracion 
+5003=Informaci贸n general 
+5004=Reproductor multimedia 
+5005=Bluetooth
+5006=Region 
+5007=Lista de canciones
+5008=Mis favoritos
+5009=Mi lista 
+5010=Seleccionar fuente 
+5011=Local
+5012=USB
+5013=Radio en linea
+5014=QQ musica
+5015=Bluetooth
+5016=Entrada de linea 
+5017=Revisar el nombre 
+5018=Individual
+5019=Juego aleatorio
+5020=Lista
+5021=Ha cambiado a: 
+5022=Cancelar 
+5023=Borrar 
+5024=Editar 
+5025=El nombre de la lista es el mismo
+5026=El nombre de la lista esta en blanco 
+5027=Introduzca el nombre de la lista 
+5028=Agregar nueva lista 
+5029=Preguntar 
+5030=Eliminar la carpeta o no? 
+5031=Confirmar 
+5032=El nombre est谩 en blanco 
+5033=A帽adido a la lista de canciones
+5034=Radio
+5035=Seleccionar grupo 
+5036=Play
+5037=Seleccione al menos mas de 2 reproductores multimedia
+5038=No se pueden seleccionar 2 o m谩s de 2 reproductores multimedia principales para convertirse en un grupo
+5039=No ha seleccionado el reproductor multimedia 
+5040=Seleccione esta opci贸n para quitar el reproductor multimedia 
+5041=No se ha seleccionado quitar el reproductor multimedia 
+5042=Configurando 
+5043=Borrando鈥�
+5044=Volumen
+5045=Volumen general
+5046=Ajustar volumen 
+5047="QQ music" no se ha instalado en su tel茅fono celular, proceda en el Centro de aplicaciones.
+
+6000=Normal 
+6001=Estado del dispositivo
+6002=piezas
+6003=Dispositivo de control IR actual
+6004=Se ha a帽adido el mando a distancia 
+6005=AC
+6006=TV 
+6007=Ventilador 
+6008=Decodificador
+6009=DVD
+6010=Proyector 
+6011=Personalizado
+6012=IR Control
+6013=Administraci贸n de dispositivos 
+6014=Agregar mando de distancia
+6015=En linea 
+6016=Sin conexi贸n 
+6017=N煤mero de version
+6018=Introduzca el nombre de mando a distancia 
+6019=Recordatorio: Despu茅s de crear el mando a distancia, se puede encontrar y utilizar en Function-Electrical Category{\r\n}
+6020=Boton recomendado
+6021=Introduzca el nombre del bot贸n 
+6022=Siguiente
+6023=Potencia
+6024=Volumen+
+6025=Volumen-
+6026=Channel+
+6027=Channel-
+6028=Subir 
+6029=Bajar
+6030=Izquierda
+6031=Derecha
+6032=Silenciar
+6034=Confirmar
+6035=Reproducir
+6037=Salir 
+6038=Menu
+6039=Pausar
+6040=Volver
+6041=Detener
+6042=Pagina de inicio
+6043=Avance r谩pido 
+6044=Rebobinar 
+6045=Tiempo 
+6046=Copiar funcion de control remoto
+6047=Apunta al centro del mando a distancia y pulsa el mismo bot贸n
+6048=Mando a distancia inteligente
+6049=Agregar bot贸n 
+6050=*Pulsaci贸n larga para la clasificaci贸n personalizada
+6051=Hecho
+6052=Agregado correctmente 
+6053=Se puede clasificar -funcion-operaci贸n electrica y uso 
+6054=Clasificaci贸n
+6055=Nombre del mando a distancia 
+6056=Regi贸n 
+6057=Continuar agregando
+6058=El茅ctrico
+6059=Error al agregar 
+6060=Reintentar
+6061=Hacer coincidir el mando a distancia
+6062=Haga clic en el bot贸n de abajo
+6063=Confirmar si el dispositivo esta respondiendo
+6064=Error de control 
+6065=Control exitoso 
+6066=Encendido 
+6067=Modo de enfriamiento
+6068=
+6069=Temperatura 26掳
+6070=Eliminar dispositivo
+6071=Modificar nombre
+6072=Confirmar eliminaci贸n 
+6073=Cancelar
+6074=El mando a distancia no puede superar los 10 puntos
+6075=El 谩rea donde pertenece el control remoto: 
+6076=Editar informaci贸n
+6077=Actualizaci贸n de la versi贸n 
+6078=El sistema est谩 en mantenimiento ~ Int茅ntelo de nuevo m谩s tarde ~
+6079=Error al obtener datos
+6080=Esta funcion no se admite temporalmente
+6081=Seleccionar banda IR
+6082=
+6083=Baja velocidad
+6084=Interruptor de velocidad del viento
+6085=Alta velocidad 
+6086=Auto
+6087=Temperatura+
+6088=Temperatura-
+6089=Purificador de aire
+6090=Calentador de agua
+6091=Producto no existe
+6092=El dispositivo no existe
+6093=El dispositivo no esta en linea
+6094=El dispositivo de puerta de enlace no existe
+6095=Mas de 30 botondes de adici贸n 
+6000=Renombrar
+6001=Introduzca el nombre
+6002=Xiaodu
+6003=aispeech
+6004=El sistema est谩 en mantenimiento ~ Int茅ntelo de nuevo m谩s tarde ~
+6005=Desvinculado
+6006=Altavoz inteligente
+6007=Controlar contenido
+6008=Error al cagar datos 
+6009=Error al configurar datos 
+6010="Todav铆a no hay altavoz", "Vaya a la aplicaci贸n de terceros para vincular el altavoz inteligente".
+6011=La modificaci贸n de los comentarios no tiene 茅xito
+6012=Quieres desvincularte? 
+6013=Desvinculaci贸n 
+6014=transferir a app de terceros 
+6015=A帽adir altavoces
+7000=Crear automatizaci贸n
+7001=Etidar automatizaci贸n
+7002=Si
+7003=Cuando cumple las siguientes condiciones al mismo tiempo
+7004=Cundo cumple una de las condiciones siguintes
+7005=Continuar con la ejecuci贸n 
+7006=L asiguiente acci贸n 
+7007=M茅todo de reciclaje 
+7008=Ejecutar una vez
+7009=Todos los d铆as
+7010=Cada semana 
+7011=Cada mes
+7012=Guardar
+7013=Mensaje push
+7014=Enviar notificaci贸n 
+7015=Seleccionar la condici贸n 
+7016=Momento 
+7017=Seleccione la condici贸n de tiempo 
+7018=Hora
+7019=Intervalo de tiempo 
+7020=Hora 
+7021=Minuto 
+7022=Segundo 
+7023=Cancelar 
+7024=Seguro 
+7025=*Debe ejecutar la automatizaci贸n que establezca una vez durante el intervalo de tiempo establecido.
+7026=Hora de inicio
+7027=Hora de finalizaci贸n 
+7028=Funci贸n
+7029=Seleccionar condici贸n funcional
+7030=Toda la regi贸n 
+7031=Toda la funci贸n 
+7032=Encendido
+7033=Apagado
+7034=Conmutador 
+7035=Completo
+7036=Agregar ejecuci贸n 
+7037=Lunes 
+7038=Martes
+7039=Mi茅rcoles
+7040=Jueves
+7041=Viernes
+7042=S谩bado
+7043=Domingo 
+7044=Cumplir con la condici贸n 
+7045=Configuraci贸n 
+7046=Nombre
+7047=Cambiar el nombre
+7048=El nombre de la automatizaci贸n ya existe 
+7049=Eliminar automatizaci贸n o no? 
+7050=Agregar escena
+7051=Retraso
+7052=No se puede guardar, int茅ntelo de nuevo
+7053=No se puede eliminar, int茅ntelo de nuevo
+7054=Pausar
+7055=Brillo
+7056=Porcentaje 
+7057=Modo
+7058=Enfriamiento
+7059=Calefacci贸n 
+7060=Autom谩tico
+7061=Deshumidificar 
+7062=Temperatura 
+7063=Velocidad de ventilador 
+7064=D铆a 
+7065=Noche 
+7066=Abandonar 
+7067=General 
+7068=Tiempo 
+7069=No ha configurado la automatizaci贸n, procesa a configurar 
+7070=Nada est谩 aqu铆 
+7071=No se ha establecido la hora de inicio, por favor configurar 
+7072=La hora de finalizaci贸n no se ha establecido, por favor estableza 
+7073=La hora de inicio y la hora de finalizacion no deben ser las mismas
+7074=La hora de inicio no debe ser mayor a la hora de finalizaci贸n 
+7075=La condicion no debe estar en blanco 
+7076=Target no debe estar en blanco 
+7077=La hora no se ha establecido, por favor establezca 
+7078=L a condici贸n o el objetivo no deben estar en blanco 
+7079=L a puerta de enlace esta fuera de l铆nea 
+7080=Salida/Puesta de sol/Mediod铆a
+7081=Amanecer 
+7082=Puesta de sol 
+7083=Mediod铆a 
+7084=A tiempo 
+7085=Avance 
+7086=Minutos
+7087=Cambio exterior 
+7088=Seleccionar condicion de cambio al aire libre
+7089=Temperatura exterior, humedad, cambio de PM2.5
+7090=Cambio de clima (clima urbano) 
+7091=Cambio en el entorno exterior 
+7092=Temperatura superior a 
+7093=Temperatura inferior
+7094=Humedad superior a 
+7095=Humedad por debajo 
+7096=PM2.5 supeior a
+7097=PM2.5 por debajo 
+7098=D铆a soleado
+7099=Nublado 
+7100=
+7101=*Establezca el valor en este rango (1 ~ 100).
+7102=Sin valor establecido 
+7103=Excelente: 0 ~ 35ug/m3
+7104=Bueno: 36 ~ 75ug/m3
+7105=Contaminaci贸n lum铆nica: 76 ~ 115ug/m3
+7106=Contaminaci贸n moderada: 116 ~ 150ug/m3
+7107=Contaminaci贸n intensa: > 150ug/m3
+7108=Fuga/Sin fuga
+7109=Fuga
+7110=Sin fuga
+7111=Fuga de agua/sin fugas de agua
+7112=Fuga de agua 
+7113=Sin fuga de agua 
+7114=Alguien/Nadie
+7115=Alguien
+7116=Nadie
+7117=Abierto/Cerrado
+7118=Activado
+7119=Cerrar
+7120=Funci贸n anti-desmantelamiento
+7121=En linea 
+7122=Fuera de linea 
+7123=Calidad del aire
+7124=Excelente
+7125=Bueno
+7126=Pobre
+7127=Enviar notificaci贸n 
+7128=Contenido de la notificaci贸n 
+7129=(dentro de los 100 caracteres)
+7130=Selecci贸n de cuenta
+7131=Aplicaci贸n push 
+7132=Automatizaci贸n 
+7133=Ejecutado
+7134=Estado de destino
+7135=Ca铆da
+7136=Temperatura
+7137=Humedad 
+7138=PM2.5
+7139=CO2
+7140=TVOC
+7141=Exceder 
+7142=Grave
+7143=Alto 
+7144=Excelencia 
+7145=Seguridad 
+7146=A帽adir seguridad
+7147=Armado 
+7148=Desarmado
+7149=Manualmente
+7150=Inteligente
+7151=Bueno 
+7152=Dejar o Arrivar a un lugar 
+7153=Salir 
+7154=Llegar 
+9000=Inicio sesi贸n con un nuevo n煤mero de tel茅fono celular 
+9001=Inicie sesi贸n con una nueva direcci贸n de correo el茅ctr贸nico 
+9002=Nuevo numero de celular revisado
+9003=Nuevo numero de celular enlazado
+9004=Nueva direcci贸n de correo electr贸nico revisado
+9005=Nueva direcci贸n de correo electr贸nico enlazado 
+9006=El c贸digo de verificaci贸n puede enviarse m谩s tarde, espere.
+9007=Por favor, espere
+9008=Volver 
+9009=El usuario no desea ser nombrado
+9010=Nueva contrase帽a 
+9011=Introduzca la nueva contrase帽a nuevamente
+9012=De acuerdo 
+9013=Acuerdo de servicio 
+9014=Normativa de protecci贸n de la informaci贸n del usuario
+9015=y
+9016=Lea y acepte el Acuerdo de servicio del usuario y las regulaciones de protecci贸n de la informaci贸n del usuario.
+9017=Esta seguro de cerrar sesi贸n?
+9018=Seleccione pais/regi贸n 
+9019=Actualizar ahora
+9020=Ahora no 
+9021=Pa铆s/regi贸n 
+9022=Informaci贸n del servidor 
+9023=Servidor actual 
+9024=*El servidor hace referencia a la base de datos para la nube, sin necesidad alguna, no se recomienda realizar migraci贸n de datos.
+9025=Si es necesaria la migraci贸n de datos, marque
+9026=Introducci贸n a la funci贸n 
+9027=Quejas 
+9028=Actualizaci贸n de la versi贸n 
+9029=(por favor indique "quejas" en el t铆tulo, luego procesaremos en prioridad.)
+9030=Copia realizada
+9031=No hay nada aqu铆 
+9032=Obtener nueva versi贸n 
+9033=脷ltima versi贸n 
+9034=Que puedo hacer por ti? 
+9035=Problema de funci贸n 
+9036=Problema de escena
+9037=Soporte de aplicaciones 
+9038=(Preguntas frecuentes) 
+9039=Compartir y funci贸n 
+9040=Alertas 
+9041=Informaci贸n del sistema 
+9042=Centro de informaci贸n 
+9043=Tenga en cuenta que su n煤mero de cuenta ha iniciado sesi贸n en otro lugar. Si no lo hace usted mismo, cambie la contrase帽a de inmediato.
+9044=Cargado correctamente
+9045=No se puede cargar 
+9046=Revisado correctamente
+9047=La contrase帽a que ha revisado ha entrado en vigor, vuelva a iniciar sesi贸n.
+9048=Iniciar sesion con la contrase帽a del numero de cuenta 
+9049=Contrase帽a incorrecta para muchas veces, 隆el n煤mero de cuenta est谩 bloqueado!
+9050=Verificar la identificaci贸n facial 
+9051=Error al guardar la identificaci贸n facial del usuario 
+9052=La notificaci贸n push de registro esta disponible 
+9053=La notificaci贸n push de registro es anormal 
+9054=Verificaci贸n numerica de contrase帽a 
+9055=Verificaci贸n de gestos 
+9056=A帽o 
+9057=Sin funci贸n regional 
+9058=Guardar o no?
+9059=No compartir ahora 
+9060=Usos-permiso 
+9061=Encuentra tu contrase帽a haciendo clic en "Olvid茅 mi contrase帽a", o int茅ntalo de nuevo en {0} minuto.
+9062=Comprobar 
+9063=Todav铆a tienes {0} veces.
+9064=Altavoz inteligente
+9065=Gesti贸n de datos 
+9066=Comentarios
+9067=Los comentarios no pueden estar en blanco 
+9068=Desea desvincularse? 
+9069=Aviso de propiedad
+10000=Contrasela no v谩lida, vuelva a iniciar sesi贸n 
+10001=Error al solicitar el servidor, int茅ntelo de nuevo m谩s tarde.
+10002=Mantenimiento del sistema, int茅ntalo de nuevo mas tarde 
+10003=No puede iniciar sesi贸n, agregue la residencia al principio.
+10004=El n煤mero de cuenta ya existe
+10005=Env铆as el c贸digo de verificaci贸n con demasiada frecuencia, int茅ntalo de nuevo m谩s tarde.
+10006=Error de firma 
+10007=Sistema ocupado, intentelo de nuevo mas tarde! 
+10008=Contrasea no v谩lida para iniciar sesi贸n 
+10009=El usuario ha sido deshabilitado 
+10010=Error de contrase帽a original 
+10011=El n煤mero de subcuenta ya existe 
+10012=El npumero de subcuenta no existe 
+10013=No esta permitido agregarse como miembro 
+10014=La residencia actual no pertenece al este n煤mero de cuenta 
+10015=El nombre de la residencia ya existe 
+10016=La residencia no existe 
+10017=Error de solicitud, par谩metro anormal! 
+10018=El n煤mero que enlazaste es duplicado 
+10019=Enlazar el gateway primero 
+10020=El gateway no existe 
+10021=El gateway esta fuera de l铆nea
+10022=El dispositivo est谩 fuera de l铆nea 
+10023=Error de control 
+10024=La escena ya existe 
+10025=La automatizaci贸n ya existe 
+10026=Spk no admite esta funci贸n 
+10027=Spk no admite este valor funcional 
+10028=No tienes permiso 
+10029=El destino del dispositivo est谩 duplicado 
+10030=No tiene permiso para el control remoto 
+10031=El dispositivo no debe estar en blanco 
+10032=El usuario no  tiene permiso 
+10033=El dispositivo no existe
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/CAC/DataIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/CAC/DataIcon.png
new file mode 100644
index 0000000..9832d06
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/CAC/DataIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/CAC/JinMaoIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/CAC/JinMaoIcon.png
new file mode 100644
index 0000000..b5e26bf
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/CAC/JinMaoIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/hvaccac_blue.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/hvaccac_blue.png
new file mode 100644
index 0000000..addcd70
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/hvaccac_blue.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/hvaccac_white.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/hvaccac_white.png
new file mode 100644
index 0000000..c63e9e3
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/hvaccac_white.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/sensorhelp_blue.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/sensorhelp_blue.png
new file mode 100644
index 0000000..7e5e4ac
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/sensorhelp_blue.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/sensorhelp_white.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/sensorhelp_white.png
new file mode 100644
index 0000000..448b3c8
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/sensorhelp_white.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/hvaccac.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/hvaccac.png
new file mode 100644
index 0000000..5b8b9fa
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/hvaccac.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/screenpanel.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/screenpanel.png
new file mode 100644
index 0000000..56ba0c5
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/screenpanel.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensorhelp.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensorhelp.png
new file mode 100644
index 0000000..cbb1b1c
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensorhelp.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Panel/PanelEnviBg.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Panel/PanelEnviBg.png
new file mode 100644
index 0000000..d6482d3
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Panel/PanelEnviBg.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Panel/PanelHelpAlarmBgIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Panel/PanelHelpAlarmBgIcon.png
new file mode 100644
index 0000000..72ece8b
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Panel/PanelHelpAlarmBgIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Panel/PanelHelpNormalBgIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Panel/PanelHelpNormalBgIcon.png
new file mode 100644
index 0000000..a55c35e
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Panel/PanelHelpNormalBgIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/Public/MsgIcon/AnswerIcon.png b/HDL-ON_Android/Assets/Phone/Public/MsgIcon/AnswerIcon.png
new file mode 100644
index 0000000..89096a9
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/Public/MsgIcon/AnswerIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/Public/MsgIcon/CallIcon.png b/HDL-ON_Android/Assets/Phone/Public/MsgIcon/CallIcon.png
new file mode 100644
index 0000000..843101e
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/Public/MsgIcon/CallIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/Public/MsgIcon/HangUpIcon.png b/HDL-ON_Android/Assets/Phone/Public/MsgIcon/HangUpIcon.png
new file mode 100644
index 0000000..e516074
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/Public/MsgIcon/HangUpIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/Public/dialogBg2.png b/HDL-ON_Android/Assets/Phone/Public/dialogBg2.png
new file mode 100644
index 0000000..2c28530
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/Public/dialogBg2.png
Binary files differ
diff --git a/HDL-ON_Android/HDL-ON_Android.csproj b/HDL-ON_Android/HDL-ON_Android.csproj
index cbc8b17..d236f95 100644
--- a/HDL-ON_Android/HDL-ON_Android.csproj
+++ b/HDL-ON_Android/HDL-ON_Android.csproj
@@ -169,9 +169,6 @@
     <Reference Include="Square.OkIO">
       <HintPath>..\DLL\EZvizMonitor\Square.OkIO.dll</HintPath>
     </Reference>
-    <Reference Include="Shared.Droid.HDLLinphone">
-      <HintPath>..\DLL\Linphone\Android\Shared.Droid.HDLLinphone.dll</HintPath>
-    </Reference>
     <Reference Include="Shared.Droid.LCVideoSDK">
       <HintPath>..\DLL\LC\Android\Shared.Droid.LCVideoSDK.dll</HintPath>
     </Reference>
@@ -183,6 +180,9 @@
     </Reference>
     <Reference Include="ScanSdk">
       <HintPath>..\DLL\Scan\ScanSdk.dll</HintPath>
+    </Reference>
+    <Reference Include="Shared.Droid.HDLLinphone">
+      <HintPath>..\DLL\Linphone\Android\Shared.Droid.HDLLinphone.dll</HintPath>
     </Reference>
   </ItemGroup>
   <ItemGroup>
@@ -227,6 +227,22 @@
     <AndroidAsset Include="Assets\Phone\FunctionIcon\EnvironmentalScience\HistoryOpionBg3.png" />
     <AndroidAsset Include="Assets\Phone\FunctionIcon\EnvironmentalScience\HistoryOpionBg4.png" />
     <AndroidAsset Include="Assets\Phone\Collection\FunctionOfflineBg.png" />
+    <AndroidAsset Include="Assets\Phone\Public\MsgIcon\CallIcon.png" />
+    <AndroidAsset Include="Assets\Phone\Public\MsgIcon\AnswerIcon.png" />
+    <AndroidAsset Include="Assets\Phone\Public\MsgIcon\HangUpIcon.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\CAC\DataIcon.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\CAC\JinMaoIcon.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\hvaccac.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\hvaccac_blue.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\hvaccac_white.png" />
+    <AndroidAsset Include="Assets\Phone\Public\dialogBg2.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\sensorhelp.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\sensorhelp_blue.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\sensorhelp_white.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Panel\PanelHelpAlarmBgIcon.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Panel\PanelHelpNormalBgIcon.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\screenpanel.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Panel\PanelEnviBg.png" />
   </ItemGroup>
   <ItemGroup>
     <AndroidResource Include="Resources\values\colors.xml" />
@@ -1433,6 +1449,8 @@
   <ItemGroup>
     <Folder Include="libs\arm64-v8a\" />
     <Folder Include="Zxing\" />
+    <Folder Include="Assets\Phone\FunctionIcon\CAC\" />
+    <Folder Include="Assets\Phone\FunctionIcon\Panel\" />
   </ItemGroup>
   <Import Project="..\HDL_ON\HDL_ON.projitems" Label="Shared" Condition="Exists('..\HDL_ON\HDL_ON.projitems')" />
   <Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
diff --git a/HDL-ON_Android/LeChengVideo/Form/ReverseCallFragment.cs b/HDL-ON_Android/LeChengVideo/Form/ReverseCallFragment.cs
index 68073cc..cbf292c 100644
--- a/HDL-ON_Android/LeChengVideo/Form/ReverseCallFragment.cs
+++ b/HDL-ON_Android/LeChengVideo/Form/ReverseCallFragment.cs
@@ -256,7 +256,7 @@
                     d.Add("callStatus", "RECEIVED");//鍙敤鍊�:MISSED,RECEIVED,REJECT
                     // d.Add("callDuration", Time);//閫氳瘽鏃堕暱锛堢锛�
                     d.Add("interphoneTypeEnum", "IMOUVISIAL");//鍙敤鍊�:FLVI,IMOUVISIAL
-                    string jsonString = HttpUtil.GetSignRequestJson(d);
+                    string jsonString = HttpUtil.GetSignRequestJson(d); 
 
                     string url = "/home-wisdom/platform/imou/updateCallStatus";
                     ResponsePackNew response = HttpUtil.RequestHttpsPost(url, jsonString);
diff --git a/HDL-ON_Android/LeChengVideoActivity.cs b/HDL-ON_Android/LeChengVideoActivity.cs
index 1d26881..4c04acd 100644
--- a/HDL-ON_Android/LeChengVideoActivity.cs
+++ b/HDL-ON_Android/LeChengVideoActivity.cs
@@ -19,6 +19,8 @@
 using Com.Lechange.Opensdk.Device;
 using Com.Lechange.Opensdk.Listener;
 using Com.Lechange.Opensdk.Media;
+using HDL_ON;
+using Com.Lechange.Opensdk.Utils;
 using HDL_ON.DAL.Server;
 using HDL_ON_Android.LeChengView.Form;
 using Java.IO;
@@ -129,9 +131,9 @@
             }else {
                 URL = URL_LC_CHINA;
             }
-
-            InitParams initParams = new InitParams(this, URL, AccessToken);
+             InitParams initParams = new InitParams(this, URL, AccessToken);
             LCOpenSDK_Api.InitOpenApi(initParams);
+            LogUtils.OpenLog();
         }
 
         /// <summary>
@@ -166,11 +168,12 @@
         /// </summary>
         public void StartTalk()
         {
+            UserInfo.Current.inVideo = true;
             CloseAudio();// 鍏抽棴Audio
             LCOpenSDK_Talk.Listener = new AudioTalkerListener();//璁剧疆瀵硅鐩戝惉
             //2021-10-29 瀵硅璇锋眰绫诲瀷锛宑all鍛煎彨锛屽鏋滀笉浼狅紝榛樿涓簍alk
             string talkType = "talk";
-            if (Type == 1)//0鐩戞帶锛�1瀵硅
+            //if (Type == 1)//0鐩戞帶锛�1瀵硅
             {
                 talkType = "call";
             }
@@ -184,6 +187,8 @@
         /// </summary>
         public void StopTalk()
         {
+            UserInfo.Current.inCall = DateTime.MinValue;
+            UserInfo.Current.inVideo = false;
             LCOpenSDK_Talk.StopTalk();
             LCOpenSDK_Talk.Listener = null;
         }
@@ -338,6 +343,7 @@
         {
             if (v.Equals(ivBack))
             {
+                StopTalk();
                 this.Finish();
             }
         }
diff --git a/HDL-ON_Android/Other/JPush/JPushReceiver.cs b/HDL-ON_Android/Other/JPush/JPushReceiver.cs
index 9438176..3b0cf2b 100644
--- a/HDL-ON_Android/Other/JPush/JPushReceiver.cs
+++ b/HDL-ON_Android/Other/JPush/JPushReceiver.cs
@@ -37,8 +37,13 @@
             //2020-12-23 瑙e喅鐐瑰嚮閫氱煡鏍忔墦寮�涓嶄簡APP闂
             //base.OnNotifyMessageOpened(context, notificationMessage);
 
+            //NotificationManager NotifyManager = (NotificationManager)GetSystemService(Context.NotificationService);
+            //NotificationManager notificationManager = NotifyManager;
+
             OpenNotification(context, notificationMessage);
         }
+
+       static int msgId = 0;
 
         /// <summary>
         /// 鏀跺埌閫氱煡鍥炶皟
@@ -47,34 +52,59 @@
         /// <param name="p1"></param>
         public override void OnNotifyMessageArrived(Context context, NotificationMessage notificationMessage)
         {
-            base.OnNotifyMessageArrived(context, notificationMessage);
-
-            var pushMes = new JPushMessageInfo()
+            try
             {
-                Title = notificationMessage.NotificationTitle,
-                Content = notificationMessage.NotificationContent,
-                Extras = notificationMessage.NotificationExtras
-            };
 
-            var jpushExpandData = GetJPushExpandData(pushMes);
-            if (jpushExpandData != null && jpushExpandData.messageType != null)
-            {
-                pushMes.messageType = jpushExpandData.messageType;
-                pushMes.expantContent = jpushExpandData.expantContent;
-                pushMes.HomeId = jpushExpandData.homeId;
-                Utlis.WriteLine("PushMes messageType : " + pushMes.messageType);
+                NotificationManager nMgr = (NotificationManager)Shared.Application.Activity.GetSystemService(Context.NotificationService);
+                if (msgId != 0)
+                    nMgr.Cancel(msgId);
+                msgId = notificationMessage.NotificationId;
+                base.OnNotifyMessageArrived(context, notificationMessage); Console.WriteLine("123456789ghjsdjfasdfk");
+
+                var pushMes = new JPushMessageInfo()
+                {
+                    Title = notificationMessage.NotificationTitle,
+                    Content = notificationMessage.NotificationContent,
+                    Extras = notificationMessage.NotificationExtras
+                };
+
+                var jpushExpandData = GetJPushExpandData(pushMes);
+                if (jpushExpandData != null && jpushExpandData.messageType != null)
+                {
+                    pushMes.messageType = jpushExpandData.messageType;
+                    pushMes.expantContent = jpushExpandData.expantContent;//spk
+                    pushMes.HomeId = jpushExpandData.homeId;
+                    Utlis.WriteLine("PushMes messageType : " + pushMes.messageType);
+                }
+
+                Utlis.WriteLine("PushMes title : " + pushMes.Title);
+                Utlis.WriteLine("PushMes message : " + pushMes.Content);
+                Utlis.WriteLine("PushMes extras : " + pushMes.Extras);
+                Utlis.WriteLine("PushMes HomeId : " + pushMes.HomeId);
+
+                //UserInfo.Current.PushMesTitle = pushMes.Title;
+                //UserInfo.Current.PushMesMessage = pushMes.Content;
+                //UserInfo.Current.PushMesExtras = pushMes.Extras;
+                //UserInfo.Current.pushMesMessageType = pushMes.messageType;
+                //UserInfo.Current.pushMesExpantContent = pushMes.expantContent;
+                //UserInfo.Current.PushMesHomeId = pushMes.HomeId;
+                UserInfo.Current.pushMessageInfo = pushMes;
+                if (!string.IsNullOrEmpty(pushMes.spk))//鑷爺鍙瀵硅闇�瑕佽褰曟椂闂村弽鍛�
+                    UserInfo.Current.inCall = DateTime.Now;
+
+                if (!MainPage.IsEnterBackground)
+                {
+                    //NotificationManager nMgr = (NotificationManager)Shared.Application.Activity.GetSystemService(Context.NotificationService);
+                    //nMgr.CancelAll();
+                    Shared.Application.RunOnMainThread(() =>
+                    {
+                        HDLCommon.Current.AdjustPushMessage(pushMes);
+                    });
+                }
             }
-
-            Utlis.WriteLine("PushMes title : " + pushMes.Title);
-            Utlis.WriteLine("PushMes message : " + pushMes.Content);
-            Utlis.WriteLine("PushMes extras : " + pushMes.Extras);
-            Utlis.WriteLine("PushMes HomeId : " + pushMes.HomeId);
-
-            Shared.Application.RunOnMainThread(() =>
-            {
-                HDLCommon.Current.AdjustPushMessage(pushMes);
-            });
-
+            catch (Exception wexx) {
+                Console.WriteLine("safsdf"+wexx.Message);
+            }
         }
 
         /// <summary>
@@ -183,25 +213,30 @@
                 i.SetFlags(ActivityFlags.NewTask);
                 context.StartActivity(i);
                 //瑙f瀽msg
-                AdjustPushMessage(pushMes);
-
-                //Shared.Application.RunOnMainThread(() =>
-                //{
-                //    if (Shared.Application.Activity == null)
-                //    {
-                //        var tempIntent = new Intent(context, typeof(Shared.BaseActivity));//Intent intent=new Intent( 璧峰缁勪欢瀵硅薄 , 鐩爣 Service.class);
-                //        tempIntent.SetFlags(ActivityFlags.BroughtToFront);
-                //        context.StartActivity(tempIntent);
-
-                //        HDLCommon.Current.AdjustPushMessage(pushMes);
-                //    }
-                //    else
-                //    {
-
-                //        (Shared.Application.Activity as BaseActivity).MoveToFront();
-                //        HDLCommon.Current.AdjustPushMessage(pushMes);
-                //    }
-                //});
+                AdjustPushMessage(pushMes);
+
+                //Shared.Application.RunOnMainThread(() =>
+                //{
+                //    if (Shared.Application.Activity == null)
+                //    {
+                //        var tempIntent = new Intent(context, typeof(Shared.BaseActivity));//Intent intent=new Intent( 璧峰缁勪欢瀵硅薄 , 鐩爣 Service.class);
+                //        tempIntent.SetFlags(ActivityFlags.BroughtToFront);
+                //        context.StartActivity(tempIntent);
+
+                //        HDLCommon.Current.AdjustPushMessage(pushMes);
+                //    }
+                //    else
+                //    {
+
+                //        (Shared.Application.Activity as BaseActivity).MoveToFront();
+                //        HDLCommon.Current.AdjustPushMessage(pushMes);
+                //    }
+                //});
+                if (!MainPage.IsEnterBackground)
+                {
+                    NotificationManager nMgr = (NotificationManager)Shared.Application.Activity.GetSystemService(Context.NotificationService);
+                    nMgr.CancelAll();
+                }
             }
             catch
             {
@@ -222,7 +257,7 @@
             {
                 while (MainPage.BasePageView == null)
                 {
-                    System.Threading.Thread.Sleep(300);
+                    System.Threading.Thread.Sleep(300);
                 }
                 Shared.Application.RunOnMainThread(() =>
                 {
diff --git a/HDL-ON_Android/Properties/AndroidManifest.xml b/HDL-ON_Android/Properties/AndroidManifest.xml
index bdc6cdf..ca8cbe2 100644
--- a/HDL-ON_Android/Properties/AndroidManifest.xml
+++ b/HDL-ON_Android/Properties/AndroidManifest.xml
@@ -1,6 +1,6 @@
 锘�<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="202203111" android:versionName="1.5.5" package="com.hdl.onpro" xmlns:tools="http://schemas.android.com/tools">
-	<uses-sdk android:minSdkVersion="28" android:targetSdkVersion="30" />
+<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="1.5.6" package="com.hdl.onpro" xmlns:tools="http://schemas.android.com/tools" android:versionCode="202205161">
+	<uses-sdk android:minSdkVersion="28" android:targetSdkVersion="28" />
 	<!--鍙嬬洘-->
 	<!--<uses-sdk android:minSdkVersion="8"></uses-sdk>-->
 	<!--<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>-->
diff --git a/HDL-ON_Android/Resources/Resource.designer.cs b/HDL-ON_Android/Resources/Resource.designer.cs
index 5a58a59..99ad7d8 100644
--- a/HDL-ON_Android/Resources/Resource.designer.cs
+++ b/HDL-ON_Android/Resources/Resource.designer.cs
@@ -12200,1105 +12200,1108 @@
 			public const int lp_screenshotStr = 2131689860;
 			
 			// aapt resource value: 0x7F0F0185
-			public const int lp_tipStr = 2131689861;
-			
-			// aapt resource value: 0x7F0F0188
-			public const int lp_unlockfailureStr = 2131689864;
+			public const int lp_sipAccount_null = 2131689861;
 			
 			// aapt resource value: 0x7F0F0186
-			public const int lp_unlockStr = 2131689862;
-			
-			// aapt resource value: 0x7F0F0187
-			public const int lp_unlockSuccessfullyStr = 2131689863;
+			public const int lp_tipStr = 2131689862;
 			
 			// aapt resource value: 0x7F0F0189
-			public const int main_tab_second_tab = 2131689865;
+			public const int lp_unlockfailureStr = 2131689865;
+			
+			// aapt resource value: 0x7F0F0187
+			public const int lp_unlockStr = 2131689863;
+			
+			// aapt resource value: 0x7F0F0188
+			public const int lp_unlockSuccessfullyStr = 2131689864;
 			
 			// aapt resource value: 0x7F0F018A
-			public const int message_come_from_tip = 2131689866;
+			public const int main_tab_second_tab = 2131689866;
 			
 			// aapt resource value: 0x7F0F018B
-			public const int message_encrypt_inputpsw_tip_title = 2131689867;
+			public const int message_come_from_tip = 2131689867;
 			
 			// aapt resource value: 0x7F0F018C
-			public const int message_live = 2131689868;
+			public const int message_encrypt_inputpsw_tip_title = 2131689868;
 			
 			// aapt resource value: 0x7F0F018D
-			public const int message_no_data_text = 2131689869;
+			public const int message_live = 2131689869;
 			
 			// aapt resource value: 0x7F0F018E
-			public const int message_refresh_fail_network_exception = 2131689870;
+			public const int message_no_data_text = 2131689870;
 			
 			// aapt resource value: 0x7F0F018F
-			public const int message_refresh_fail_server_exception = 2131689871;
+			public const int message_refresh_fail_network_exception = 2131689871;
 			
 			// aapt resource value: 0x7F0F0190
-			public const int message_video = 2131689872;
+			public const int message_refresh_fail_server_exception = 2131689872;
 			
 			// aapt resource value: 0x7F0F0191
-			public const int modify_online_schedule = 2131689873;
+			public const int message_video = 2131689873;
 			
 			// aapt resource value: 0x7F0F0192
-			public const int month = 2131689874;
+			public const int modify_online_schedule = 2131689874;
 			
 			// aapt resource value: 0x7F0F0193
-			public const int more = 2131689875;
+			public const int month = 2131689875;
 			
 			// aapt resource value: 0x7F0F0194
-			public const int more_local_image = 2131689876;
+			public const int more = 2131689876;
 			
 			// aapt resource value: 0x7F0F0195
-			public const int more_setting = 2131689877;
+			public const int more_local_image = 2131689877;
 			
 			// aapt resource value: 0x7F0F0196
-			public const int my_collect = 2131689878;
+			public const int more_setting = 2131689878;
 			
 			// aapt resource value: 0x7F0F0197
-			public const int my_devices = 2131689879;
+			public const int my_collect = 2131689879;
 			
 			// aapt resource value: 0x7F0F0198
-			public const int network_error_retry_prompt = 2131689880;
+			public const int my_devices = 2131689880;
 			
 			// aapt resource value: 0x7F0F0199
-			public const int network_exception = 2131689881;
+			public const int network_error_retry_prompt = 2131689881;
 			
 			// aapt resource value: 0x7F0F019A
-			public const int network_video_recorder = 2131689882;
+			public const int network_exception = 2131689882;
 			
 			// aapt resource value: 0x7F0F019B
-			public const int newest_version = 2131689883;
+			public const int network_video_recorder = 2131689883;
 			
 			// aapt resource value: 0x7F0F019C
-			public const int next_button_txt = 2131689884;
-			
-			// aapt resource value: 0x7F0F01A3
-			public const int not_find_any_devices = 2131689891;
-			
-			// aapt resource value: 0x7F0F01A4
-			public const int not_now = 2131689892;
-			
-			// aapt resource value: 0x7F0F01A5
-			public const int not_recognized_fingerprint_hint = 2131689893;
+			public const int newest_version = 2131689884;
 			
 			// aapt resource value: 0x7F0F019D
-			public const int no_event_device_prompt = 2131689885;
+			public const int next_button_txt = 2131689885;
 			
-			// aapt resource value: 0x7F0F019E
-			public const int no_leave_device_prompt = 2131689886;
+			// aapt resource value: 0x7F0F01A4
+			public const int not_find_any_devices = 2131689892;
 			
-			// aapt resource value: 0x7F0F019F
-			public const int no_more_alarm_tip = 2131689887;
-			
-			// aapt resource value: 0x7F0F01A0
-			public const int no_more_leave_tip = 2131689888;
-			
-			// aapt resource value: 0x7F0F01A1
-			public const int no_remote_data = 2131689889;
-			
-			// aapt resource value: 0x7F0F01A2
-			public const int no_result_text = 2131689890;
+			// aapt resource value: 0x7F0F01A5
+			public const int not_now = 2131689893;
 			
 			// aapt resource value: 0x7F0F01A6
-			public const int offline_warn_text = 2131689894;
+			public const int not_recognized_fingerprint_hint = 2131689894;
 			
-			// aapt resource value: 0x7F0F01A8
-			public const int online_time = 2131689896;
+			// aapt resource value: 0x7F0F019E
+			public const int no_event_device_prompt = 2131689886;
+			
+			// aapt resource value: 0x7F0F019F
+			public const int no_leave_device_prompt = 2131689887;
+			
+			// aapt resource value: 0x7F0F01A0
+			public const int no_more_alarm_tip = 2131689888;
+			
+			// aapt resource value: 0x7F0F01A1
+			public const int no_more_leave_tip = 2131689889;
+			
+			// aapt resource value: 0x7F0F01A2
+			public const int no_remote_data = 2131689890;
+			
+			// aapt resource value: 0x7F0F01A3
+			public const int no_result_text = 2131689891;
 			
 			// aapt resource value: 0x7F0F01A7
-			public const int on_the_phone = 2131689895;
+			public const int offline_warn_text = 2131689895;
 			
 			// aapt resource value: 0x7F0F01A9
-			public const int open_camera_fail = 2131689897;
+			public const int online_time = 2131689897;
+			
+			// aapt resource value: 0x7F0F01A8
+			public const int on_the_phone = 2131689896;
 			
 			// aapt resource value: 0x7F0F01AA
-			public const int open_camera_lens = 2131689898;
+			public const int open_camera_fail = 2131689898;
 			
 			// aapt resource value: 0x7F0F01AB
-			public const int open_source_localization = 2131689899;
+			public const int open_camera_lens = 2131689899;
 			
 			// aapt resource value: 0x7F0F01AC
-			public const int open_ys_service = 2131689900;
+			public const int open_source_localization = 2131689900;
 			
 			// aapt resource value: 0x7F0F01AD
-			public const int open_ys_service_fail = 2131689901;
+			public const int open_ys_service = 2131689901;
 			
 			// aapt resource value: 0x7F0F01AE
-			public const int open_ys_service_success = 2131689902;
+			public const int open_ys_service_fail = 2131689902;
 			
 			// aapt resource value: 0x7F0F01AF
-			public const int operational_fail = 2131689903;
+			public const int open_ys_service_success = 2131689903;
 			
 			// aapt resource value: 0x7F0F01B0
-			public const int option_support_web = 2131689904;
+			public const int operational_fail = 2131689904;
 			
 			// aapt resource value: 0x7F0F01B1
-			public const int password_et_hint = 2131689905;
+			public const int option_support_web = 2131689905;
 			
 			// aapt resource value: 0x7F0F01B2
-			public const int password_security_txt = 2131689906;
+			public const int password_et_hint = 2131689906;
 			
 			// aapt resource value: 0x7F0F01B3
-			public const int password_toggle_content_description = 2131689907;
+			public const int password_security_txt = 2131689907;
 			
 			// aapt resource value: 0x7F0F01B4
-			public const int path_password_eye = 2131689908;
+			public const int password_toggle_content_description = 2131689908;
 			
 			// aapt resource value: 0x7F0F01B5
-			public const int path_password_eye_mask_strike_through = 2131689909;
+			public const int path_password_eye = 2131689909;
 			
 			// aapt resource value: 0x7F0F01B6
-			public const int path_password_eye_mask_visible = 2131689910;
+			public const int path_password_eye_mask_strike_through = 2131689910;
 			
 			// aapt resource value: 0x7F0F01B7
-			public const int path_password_strike_through = 2131689911;
+			public const int path_password_eye_mask_visible = 2131689911;
 			
 			// aapt resource value: 0x7F0F01B8
-			public const int pickerview_cancel = 2131689912;
+			public const int path_password_strike_through = 2131689912;
 			
 			// aapt resource value: 0x7F0F01B9
-			public const int pickerview_day = 2131689913;
+			public const int pickerview_cancel = 2131689913;
 			
 			// aapt resource value: 0x7F0F01BA
-			public const int pickerview_hours = 2131689914;
+			public const int pickerview_day = 2131689914;
 			
 			// aapt resource value: 0x7F0F01BB
-			public const int pickerview_minutes = 2131689915;
+			public const int pickerview_hours = 2131689915;
 			
 			// aapt resource value: 0x7F0F01BC
-			public const int pickerview_month = 2131689916;
+			public const int pickerview_minutes = 2131689916;
 			
 			// aapt resource value: 0x7F0F01BD
-			public const int pickerview_seconds = 2131689917;
+			public const int pickerview_month = 2131689917;
 			
 			// aapt resource value: 0x7F0F01BE
-			public const int pickerview_submit = 2131689918;
+			public const int pickerview_seconds = 2131689918;
 			
 			// aapt resource value: 0x7F0F01BF
-			public const int pickerview_year = 2131689919;
-			
-			// aapt resource value: 0x7F0F01C1
-			public const int platform_login_button_txt = 2131689921;
+			public const int pickerview_submit = 2131689919;
 			
 			// aapt resource value: 0x7F0F01C0
-			public const int plat_connected = 2131689920;
+			public const int pickerview_year = 2131689920;
 			
 			// aapt resource value: 0x7F0F01C2
-			public const int play_hour = 2131689922;
+			public const int platform_login_button_txt = 2131689922;
+			
+			// aapt resource value: 0x7F0F01C1
+			public const int plat_connected = 2131689921;
 			
 			// aapt resource value: 0x7F0F01C3
-			public const int please_connect_the_power = 2131689923;
-			
-			// aapt resource value: 0x7F0F01C5
-			public const int please_input_phonenumber_txt = 2131689925;
+			public const int play_hour = 2131689923;
 			
 			// aapt resource value: 0x7F0F01C4
-			public const int please_input_phone_txt = 2131689924;
+			public const int please_connect_the_power = 2131689924;
 			
 			// aapt resource value: 0x7F0F01C6
-			public const int please_input_platform_accesstoken_txt = 2131689926;
+			public const int please_input_phonenumber_txt = 2131689926;
+			
+			// aapt resource value: 0x7F0F01C5
+			public const int please_input_phone_txt = 2131689925;
 			
 			// aapt resource value: 0x7F0F01C7
-			public const int please_input_sign_get_sms_txt = 2131689927;
+			public const int please_input_platform_accesstoken_txt = 2131689927;
 			
 			// aapt resource value: 0x7F0F01C8
-			public const int please_input_sign_txt = 2131689928;
+			public const int please_input_sign_get_sms_txt = 2131689928;
 			
 			// aapt resource value: 0x7F0F01C9
-			public const int please_input_userid_txt = 2131689929;
+			public const int please_input_sign_txt = 2131689929;
 			
 			// aapt resource value: 0x7F0F01CA
-			public const int please_open_wifi_network = 2131689930;
+			public const int please_input_userid_txt = 2131689930;
 			
 			// aapt resource value: 0x7F0F01CB
-			public const int please_open_wifi_network_sadp = 2131689931;
+			public const int please_open_wifi_network = 2131689931;
 			
 			// aapt resource value: 0x7F0F01CC
-			public const int please_operate_after_select_any_record = 2131689932;
+			public const int please_open_wifi_network_sadp = 2131689932;
 			
 			// aapt resource value: 0x7F0F01CD
-			public const int please_try_connect_device_hotspot_manually = 2131689933;
+			public const int please_operate_after_select_any_record = 2131689933;
 			
 			// aapt resource value: 0x7F0F01CE
-			public const int plug = 2131689934;
+			public const int please_try_connect_device_hotspot_manually = 2131689934;
 			
 			// aapt resource value: 0x7F0F01CF
-			public const int pm = 2131689935;
+			public const int plug = 2131689935;
 			
 			// aapt resource value: 0x7F0F01D0
-			public const int press_again_to_exit = 2131689936;
+			public const int pm = 2131689936;
 			
 			// aapt resource value: 0x7F0F01D1
-			public const int press_to_talk_release_to_listen = 2131689937;
+			public const int press_again_to_exit = 2131689937;
 			
 			// aapt resource value: 0x7F0F01D2
-			public const int privacy_policy_and_service_agreement = 2131689938;
+			public const int press_to_talk_release_to_listen = 2131689938;
 			
 			// aapt resource value: 0x7F0F01D3
-			public const int probe_not_support_tip = 2131689939;
+			public const int privacy_policy_and_service_agreement = 2131689939;
 			
 			// aapt resource value: 0x7F0F01D4
-			public const int promptUserToActivate = 2131689940;
+			public const int probe_not_support_tip = 2131689940;
 			
 			// aapt resource value: 0x7F0F01D5
-			public const int ptz = 2131689941;
+			public const int promptUserToActivate = 2131689941;
 			
 			// aapt resource value: 0x7F0F01D6
-			public const int ptz_control_timeout_cruise_track_failed = 2131689942;
+			public const int ptz = 2131689942;
 			
 			// aapt resource value: 0x7F0F01D7
-			public const int ptz_control_timeout_sound_lacalization_failed = 2131689943;
+			public const int ptz_control_timeout_cruise_track_failed = 2131689943;
 			
 			// aapt resource value: 0x7F0F01D8
-			public const int ptz_is_preseting = 2131689944;
+			public const int ptz_control_timeout_sound_lacalization_failed = 2131689944;
 			
 			// aapt resource value: 0x7F0F01D9
-			public const int ptz_mirroring_failed = 2131689945;
+			public const int ptz_is_preseting = 2131689945;
 			
 			// aapt resource value: 0x7F0F01DA
-			public const int ptz_operation_failed = 2131689946;
+			public const int ptz_mirroring_failed = 2131689946;
 			
 			// aapt resource value: 0x7F0F01DB
-			public const int ptz_operation_too_frequently = 2131689947;
+			public const int ptz_operation_failed = 2131689947;
 			
 			// aapt resource value: 0x7F0F01DC
-			public const int ptz_preset_current_position_failed = 2131689948;
+			public const int ptz_operation_too_frequently = 2131689948;
 			
 			// aapt resource value: 0x7F0F01DD
-			public const int ptz_preset_exceed_maxnum_failed = 2131689949;
+			public const int ptz_preset_current_position_failed = 2131689949;
 			
 			// aapt resource value: 0x7F0F01DE
-			public const int ptz_preset_invalid_position_failed = 2131689950;
+			public const int ptz_preset_exceed_maxnum_failed = 2131689950;
 			
 			// aapt resource value: 0x7F0F01DF
-			public const int ptz_preset_sound_localization_failed = 2131689951;
+			public const int ptz_preset_invalid_position_failed = 2131689951;
 			
 			// aapt resource value: 0x7F0F01E0
-			public const int ptz_privacying_failed = 2131689952;
+			public const int ptz_preset_sound_localization_failed = 2131689952;
 			
 			// aapt resource value: 0x7F0F01E1
-			public const int push_cat_body = 2131689953;
+			public const int ptz_privacying_failed = 2131689953;
 			
 			// aapt resource value: 0x7F0F01E2
-			public const int push_cat_head = 2131689954;
+			public const int push_cat_body = 2131689954;
 			
 			// aapt resource value: 0x7F0F01E3
-			public const int push_event_alarm_title = 2131689955;
+			public const int push_cat_head = 2131689955;
 			
 			// aapt resource value: 0x7F0F01E4
-			public const int push_event_from = 2131689956;
+			public const int push_event_alarm_title = 2131689956;
 			
 			// aapt resource value: 0x7F0F01E5
-			public const int push_event_get = 2131689957;
+			public const int push_event_from = 2131689957;
 			
 			// aapt resource value: 0x7F0F01E6
-			public const int push_event_get_count = 2131689958;
+			public const int push_event_get = 2131689958;
 			
 			// aapt resource value: 0x7F0F01E7
-			public const int push_out_event_alarm_title = 2131689959;
+			public const int push_event_get_count = 2131689959;
 			
 			// aapt resource value: 0x7F0F01E8
-			public const int pwd_not_contain_chinese = 2131689960;
+			public const int push_out_event_alarm_title = 2131689960;
 			
 			// aapt resource value: 0x7F0F01E9
-			public const int qrcode_card = 2131689961;
+			public const int pwd_not_contain_chinese = 2131689961;
 			
 			// aapt resource value: 0x7F0F01EA
-			public const int quality_balanced = 2131689962;
+			public const int qrcode_card = 2131689962;
 			
 			// aapt resource value: 0x7F0F01EB
-			public const int quality_flunet = 2131689963;
+			public const int quality_balanced = 2131689963;
 			
 			// aapt resource value: 0x7F0F01EC
-			public const int quality_hd = 2131689964;
+			public const int quality_flunet = 2131689964;
 			
 			// aapt resource value: 0x7F0F01ED
-			public const int quality_super_hd = 2131689965;
-			
-			// aapt resource value: 0x7F0F01F4
-			public const int querying_camera_text = 2131689972;
+			public const int quality_hd = 2131689965;
 			
 			// aapt resource value: 0x7F0F01EE
-			public const int query_camera_fail = 2131689966;
-			
-			// aapt resource value: 0x7F0F01EF
-			public const int query_camera_fail_network_exception = 2131689967;
-			
-			// aapt resource value: 0x7F0F01F0
-			public const int query_camera_fail_network_exception_or_server_exception = 2131689968;
-			
-			// aapt resource value: 0x7F0F01F1
-			public const int query_camera_fail_not_exit = 2131689969;
-			
-			// aapt resource value: 0x7F0F01F2
-			public const int query_camera_fail_repeat_error = 2131689970;
-			
-			// aapt resource value: 0x7F0F01F3
-			public const int query_camera_fail_server_exception = 2131689971;
-			
-			// aapt resource value: 0x7F0F01F6
-			public const int readed = 2131689974;
+			public const int quality_super_hd = 2131689966;
 			
 			// aapt resource value: 0x7F0F01F5
-			public const int read_privacy_policy_and_service_agreement_tip = 2131689973;
+			public const int querying_camera_text = 2131689973;
+			
+			// aapt resource value: 0x7F0F01EF
+			public const int query_camera_fail = 2131689967;
+			
+			// aapt resource value: 0x7F0F01F0
+			public const int query_camera_fail_network_exception = 2131689968;
+			
+			// aapt resource value: 0x7F0F01F1
+			public const int query_camera_fail_network_exception_or_server_exception = 2131689969;
+			
+			// aapt resource value: 0x7F0F01F2
+			public const int query_camera_fail_not_exit = 2131689970;
+			
+			// aapt resource value: 0x7F0F01F3
+			public const int query_camera_fail_repeat_error = 2131689971;
+			
+			// aapt resource value: 0x7F0F01F4
+			public const int query_camera_fail_server_exception = 2131689972;
 			
 			// aapt resource value: 0x7F0F01F7
-			public const int realplay = 2131689975;
+			public const int readed = 2131689975;
+			
+			// aapt resource value: 0x7F0F01F6
+			public const int read_privacy_policy_and_service_agreement_tip = 2131689974;
 			
 			// aapt resource value: 0x7F0F01F8
-			public const int realplay_close_sound_localization_fail = 2131689976;
+			public const int realplay = 2131689976;
 			
 			// aapt resource value: 0x7F0F01F9
-			public const int realplay_encrypt_password_error_message = 2131689977;
+			public const int realplay_close_sound_localization_fail = 2131689977;
 			
 			// aapt resource value: 0x7F0F01FA
-			public const int realplay_encrypt_password_error_title = 2131689978;
+			public const int realplay_encrypt_password_error_message = 2131689978;
 			
 			// aapt resource value: 0x7F0F01FB
-			public const int realplay_fail_connect_device = 2131689979;
+			public const int realplay_encrypt_password_error_title = 2131689979;
 			
 			// aapt resource value: 0x7F0F01FC
-			public const int realplay_fail_device_not_exist = 2131689980;
+			public const int realplay_fail_connect_device = 2131689980;
 			
 			// aapt resource value: 0x7F0F01FD
-			public const int realplay_full_talk_start_tip = 2131689981;
+			public const int realplay_fail_device_not_exist = 2131689981;
 			
 			// aapt resource value: 0x7F0F01FE
-			public const int realplay_loading = 2131689982;
+			public const int realplay_full_talk_start_tip = 2131689982;
 			
 			// aapt resource value: 0x7F0F01FF
-			public const int realplay_login_password_error = 2131689983;
+			public const int realplay_loading = 2131689983;
 			
 			// aapt resource value: 0x7F0F0200
-			public const int realplay_login_password_msg = 2131689984;
+			public const int realplay_login_password_error = 2131689984;
 			
 			// aapt resource value: 0x7F0F0201
-			public const int realplay_no_encrypt_password_error = 2131689985;
+			public const int realplay_login_password_msg = 2131689985;
 			
 			// aapt resource value: 0x7F0F0202
-			public const int realplay_no_permission = 2131689986;
+			public const int realplay_no_encrypt_password_error = 2131689986;
 			
 			// aapt resource value: 0x7F0F0203
-			public const int realplay_open_sound_localization_fail = 2131689987;
+			public const int realplay_no_permission = 2131689987;
 			
 			// aapt resource value: 0x7F0F0204
-			public const int realplay_password_error_message1 = 2131689988;
+			public const int realplay_open_sound_localization_fail = 2131689988;
 			
 			// aapt resource value: 0x7F0F0205
-			public const int realplay_password_error_message3 = 2131689989;
+			public const int realplay_password_error_message1 = 2131689989;
 			
 			// aapt resource value: 0x7F0F0206
-			public const int realplay_password_error_message4 = 2131689990;
+			public const int realplay_password_error_message3 = 2131689990;
 			
 			// aapt resource value: 0x7F0F0207
-			public const int realplay_password_error_title = 2131689991;
+			public const int realplay_password_error_message4 = 2131689991;
 			
 			// aapt resource value: 0x7F0F0208
-			public const int realplay_play_fail = 2131689992;
+			public const int realplay_password_error_title = 2131689992;
 			
 			// aapt resource value: 0x7F0F0209
-			public const int realplay_play_fail_becauseof_network = 2131689993;
+			public const int realplay_play_fail = 2131689993;
 			
 			// aapt resource value: 0x7F0F020A
-			public const int realplay_play_no_video_source = 2131689994;
+			public const int realplay_play_fail_becauseof_network = 2131689994;
 			
 			// aapt resource value: 0x7F0F020B
-			public const int realplay_play_talkback_fail = 2131689995;
+			public const int realplay_play_no_video_source = 2131689995;
 			
 			// aapt resource value: 0x7F0F020C
-			public const int realplay_play_talkback_fail_ison = 2131689996;
+			public const int realplay_play_talkback_fail = 2131689996;
 			
 			// aapt resource value: 0x7F0F020D
-			public const int realplay_play_talkback_fail_privacy = 2131689997;
+			public const int realplay_play_talkback_fail_ison = 2131689997;
 			
 			// aapt resource value: 0x7F0F020E
-			public const int realplay_play_talkback_network_exception = 2131689998;
+			public const int realplay_play_talkback_fail_privacy = 2131689998;
 			
 			// aapt resource value: 0x7F0F020F
-			public const int realplay_play_talkback_request_timeout = 2131689999;
+			public const int realplay_play_talkback_network_exception = 2131689999;
 			
 			// aapt resource value: 0x7F0F0210
-			public const int realplay_set_fail_network = 2131690000;
+			public const int realplay_play_talkback_request_timeout = 2131690000;
 			
 			// aapt resource value: 0x7F0F0211
-			public const int realplay_set_fail_status = 2131690001;
+			public const int realplay_set_fail_network = 2131690001;
 			
 			// aapt resource value: 0x7F0F0212
-			public const int realplay_set_vediomode_fail = 2131690002;
+			public const int realplay_set_fail_status = 2131690002;
 			
 			// aapt resource value: 0x7F0F0213
-			public const int realplay_share_no_permission = 2131690003;
+			public const int realplay_set_vediomode_fail = 2131690003;
 			
 			// aapt resource value: 0x7F0F0214
-			public const int realplay_share_time_over = 2131690004;
+			public const int realplay_share_no_permission = 2131690004;
 			
 			// aapt resource value: 0x7F0F0215
-			public const int realplay_verifycode_error_message0 = 2131690005;
+			public const int realplay_share_time_over = 2131690005;
 			
 			// aapt resource value: 0x7F0F0216
-			public const int realplay_verifycode_error_placehold = 2131690006;
+			public const int realplay_verifycode_error_message0 = 2131690006;
 			
 			// aapt resource value: 0x7F0F0217
-			public const int receice_leave_msg_audio = 2131690007;
+			public const int realplay_verifycode_error_placehold = 2131690007;
 			
 			// aapt resource value: 0x7F0F0218
-			public const int receice_leave_msg_video = 2131690008;
+			public const int receice_leave_msg_audio = 2131690008;
 			
 			// aapt resource value: 0x7F0F0219
-			public const int record = 2131690009;
+			public const int receice_leave_msg_video = 2131690009;
 			
 			// aapt resource value: 0x7F0F021A
-			public const int refresh = 2131690010;
+			public const int record = 2131690010;
 			
 			// aapt resource value: 0x7F0F021B
-			public const int refresh_empty_hint = 2131690011;
+			public const int refresh = 2131690011;
 			
 			// aapt resource value: 0x7F0F021C
-			public const int refresh_fail_hint = 2131690012;
-			
-			// aapt resource value: 0x7F0F021E
-			public const int remoteplayback_capture_fail = 2131690014;
-			
-			// aapt resource value: 0x7F0F021F
-			public const int remoteplayback_capture_fail_for_memory = 2131690015;
-			
-			// aapt resource value: 0x7F0F0220
-			public const int remoteplayback_connect_device_error = 2131690016;
-			
-			// aapt resource value: 0x7F0F0221
-			public const int remoteplayback_connect_server_error = 2131690017;
-			
-			// aapt resource value: 0x7F0F0222
-			public const int remoteplayback_fail = 2131690018;
-			
-			// aapt resource value: 0x7F0F0223
-			public const int remoteplayback_norecordfile = 2131690019;
-			
-			// aapt resource value: 0x7F0F0224
-			public const int remoteplayback_norecordfile_alarm = 2131690020;
-			
-			// aapt resource value: 0x7F0F0225
-			public const int remoteplayback_over_link = 2131690021;
-			
-			// aapt resource value: 0x7F0F0226
-			public const int remoteplayback_record_fail = 2131690022;
-			
-			// aapt resource value: 0x7F0F0227
-			public const int remoteplayback_record_fail_for_memory = 2131690023;
+			public const int refresh_empty_hint = 2131690012;
 			
 			// aapt resource value: 0x7F0F021D
-			public const int remoteplayback_SDCard_disable_use = 2131690013;
+			public const int refresh_fail_hint = 2131690013;
+			
+			// aapt resource value: 0x7F0F021F
+			public const int remoteplayback_capture_fail = 2131690015;
+			
+			// aapt resource value: 0x7F0F0220
+			public const int remoteplayback_capture_fail_for_memory = 2131690016;
+			
+			// aapt resource value: 0x7F0F0221
+			public const int remoteplayback_connect_device_error = 2131690017;
+			
+			// aapt resource value: 0x7F0F0222
+			public const int remoteplayback_connect_server_error = 2131690018;
+			
+			// aapt resource value: 0x7F0F0223
+			public const int remoteplayback_fail = 2131690019;
+			
+			// aapt resource value: 0x7F0F0224
+			public const int remoteplayback_norecordfile = 2131690020;
+			
+			// aapt resource value: 0x7F0F0225
+			public const int remoteplayback_norecordfile_alarm = 2131690021;
+			
+			// aapt resource value: 0x7F0F0226
+			public const int remoteplayback_over_link = 2131690022;
+			
+			// aapt resource value: 0x7F0F0227
+			public const int remoteplayback_record_fail = 2131690023;
 			
 			// aapt resource value: 0x7F0F0228
-			public const int remoteplayback_searchfile_fail_for_device = 2131690024;
+			public const int remoteplayback_record_fail_for_memory = 2131690024;
+			
+			// aapt resource value: 0x7F0F021E
+			public const int remoteplayback_SDCard_disable_use = 2131690014;
 			
 			// aapt resource value: 0x7F0F0229
-			public const int remoteplayback_searchfile_fail_for_network = 2131690025;
+			public const int remoteplayback_searchfile_fail_for_device = 2131690025;
 			
 			// aapt resource value: 0x7F0F022A
-			public const int reset_10_sec_to_release = 2131690026;
+			public const int remoteplayback_searchfile_fail_for_network = 2131690026;
 			
 			// aapt resource value: 0x7F0F022B
-			public const int reset_device = 2131690027;
+			public const int reset_10_sec_to_release = 2131690027;
 			
 			// aapt resource value: 0x7F0F022C
-			public const int result_txt = 2131690028;
+			public const int reset_device = 2131690028;
 			
 			// aapt resource value: 0x7F0F022D
-			public const int retry = 2131690029;
-			
-			// aapt resource value: 0x7F0F022F
-			public const int router = 2131690031;
+			public const int result_txt = 2131690029;
 			
 			// aapt resource value: 0x7F0F022E
-			public const int route_status_light = 2131690030;
+			public const int retry = 2131690030;
 			
 			// aapt resource value: 0x7F0F0230
-			public const int sadp_activate_state1 = 2131690032;
+			public const int router = 2131690032;
+			
+			// aapt resource value: 0x7F0F022F
+			public const int route_status_light = 2131690031;
 			
 			// aapt resource value: 0x7F0F0231
-			public const int sadp_activate_state2 = 2131690033;
+			public const int sadp_activate_state1 = 2131690033;
 			
 			// aapt resource value: 0x7F0F0232
-			public const int sadp_password_input_hint = 2131690034;
+			public const int sadp_activate_state2 = 2131690034;
 			
 			// aapt resource value: 0x7F0F0233
-			public const int sadp_password_toast = 2131690035;
+			public const int sadp_password_input_hint = 2131690035;
 			
 			// aapt resource value: 0x7F0F0234
-			public const int sadp_password_too_weak = 2131690036;
+			public const int sadp_password_toast = 2131690036;
 			
 			// aapt resource value: 0x7F0F0235
-			public const int sadp_quit_activate = 2131690037;
+			public const int sadp_password_too_weak = 2131690037;
 			
 			// aapt resource value: 0x7F0F0236
-			public const int save_encrypt_password_fail_network_exception = 2131690038;
+			public const int sadp_quit_activate = 2131690038;
 			
 			// aapt resource value: 0x7F0F0237
-			public const int scan_add = 2131690039;
+			public const int save_encrypt_password_fail_network_exception = 2131690039;
 			
 			// aapt resource value: 0x7F0F0238
-			public const int scan_connet_network = 2131690040;
+			public const int scan_add = 2131690040;
 			
 			// aapt resource value: 0x7F0F0239
-			public const int scan_cue_txt = 2131690041;
+			public const int scan_connet_network = 2131690041;
 			
 			// aapt resource value: 0x7F0F023A
-			public const int scan_device_add_by_others = 2131690042;
+			public const int scan_cue_txt = 2131690042;
 			
 			// aapt resource value: 0x7F0F023B
-			public const int scan_device_search = 2131690043;
+			public const int scan_device_add_by_others = 2131690043;
 			
 			// aapt resource value: 0x7F0F023C
-			public const int scan_device_serial_no = 2131690044;
+			public const int scan_device_search = 2131690044;
 			
 			// aapt resource value: 0x7F0F023D
-			public const int scan_network_unavailible = 2131690045;
+			public const int scan_device_serial_no = 2131690045;
 			
 			// aapt resource value: 0x7F0F023E
-			public const int scan_probe_qrcode_error = 2131690046;
+			public const int scan_network_unavailible = 2131690046;
 			
 			// aapt resource value: 0x7F0F023F
-			public const int scan_search_probe_qrcode = 2131690047;
+			public const int scan_probe_qrcode_error = 2131690047;
 			
 			// aapt resource value: 0x7F0F0240
-			public const int scan_title_txt = 2131690048;
+			public const int scan_search_probe_qrcode = 2131690048;
 			
 			// aapt resource value: 0x7F0F0241
-			public const int screenshot_fail = 2131690049;
+			public const int scan_title_txt = 2131690049;
 			
 			// aapt resource value: 0x7F0F0242
-			public const int screenshot_success = 2131690050;
+			public const int screenshot_fail = 2131690050;
 			
 			// aapt resource value: 0x7F0F0243
-			public const int sdk_is_init = 2131690051;
+			public const int screenshot_success = 2131690051;
 			
 			// aapt resource value: 0x7F0F0244
-			public const int search = 2131690052;
+			public const int sdk_is_init = 2131690052;
 			
 			// aapt resource value: 0x7F0F0245
-			public const int search_menu_title = 2131690053;
+			public const int search = 2131690053;
 			
 			// aapt resource value: 0x7F0F0246
-			public const int secure_validate = 2131690054;
-			
-			// aapt resource value: 0x7F0F0248
-			public const int secure_validatee_fail = 2131690056;
+			public const int search_menu_title = 2131690054;
 			
 			// aapt resource value: 0x7F0F0247
-			public const int secure_validate_success = 2131690055;
+			public const int secure_validate = 2131690055;
 			
 			// aapt resource value: 0x7F0F0249
-			public const int seek_camera_fail_device_not_support_shipin7 = 2131690057;
+			public const int secure_validatee_fail = 2131690057;
+			
+			// aapt resource value: 0x7F0F0248
+			public const int secure_validate_success = 2131690056;
 			
 			// aapt resource value: 0x7F0F024A
-			public const int select_all = 2131690058;
+			public const int seek_camera_fail_device_not_support_shipin7 = 2131690058;
 			
 			// aapt resource value: 0x7F0F024B
-			public const int select_date = 2131690059;
+			public const int select_all = 2131690059;
 			
 			// aapt resource value: 0x7F0F024C
-			public const int serial_add_hint = 2131690060;
+			public const int select_date = 2131690060;
 			
 			// aapt resource value: 0x7F0F024D
-			public const int serial_add_password_error_title = 2131690061;
+			public const int serial_add_hint = 2131690061;
 			
 			// aapt resource value: 0x7F0F024E
-			public const int serial_input_text = 2131690062;
+			public const int serial_add_password_error_title = 2131690062;
 			
 			// aapt resource value: 0x7F0F024F
-			public const int serial_number_error = 2131690063;
+			public const int serial_input_text = 2131690063;
 			
 			// aapt resource value: 0x7F0F0250
-			public const int serial_number_is_null = 2131690064;
+			public const int serial_number_error = 2131690064;
 			
 			// aapt resource value: 0x7F0F0251
-			public const int serial_number_put_the_right_no = 2131690065;
+			public const int serial_number_is_null = 2131690065;
 			
 			// aapt resource value: 0x7F0F0252
-			public const int server_area = 2131690066;
-			
-			// aapt resource value: 0x7F0F0257
-			public const int setting = 2131690071;
-			
-			// aapt resource value: 0x7F0F0258
-			public const int setting_video_level = 2131690072;
+			public const int serial_number_put_the_right_no = 2131690066;
 			
 			// aapt resource value: 0x7F0F0253
-			public const int set_defence_plan = 2131690067;
+			public const int server_area = 2131690067;
 			
-			// aapt resource value: 0x7F0F0254
-			public const int set_device_wifi_network_need_reset_the_device = 2131690068;
-			
-			// aapt resource value: 0x7F0F0255
-			public const int set_ptz_flip_fail = 2131690069;
-			
-			// aapt resource value: 0x7F0F0256
-			public const int set_ptz_flip_success = 2131690070;
+			// aapt resource value: 0x7F0F0258
+			public const int setting = 2131690072;
 			
 			// aapt resource value: 0x7F0F0259
-			public const int share_devices = 2131690073;
+			public const int setting_video_level = 2131690073;
+			
+			// aapt resource value: 0x7F0F0254
+			public const int set_defence_plan = 2131690068;
+			
+			// aapt resource value: 0x7F0F0255
+			public const int set_device_wifi_network_need_reset_the_device = 2131690069;
+			
+			// aapt resource value: 0x7F0F0256
+			public const int set_ptz_flip_fail = 2131690070;
+			
+			// aapt resource value: 0x7F0F0257
+			public const int set_ptz_flip_success = 2131690071;
 			
 			// aapt resource value: 0x7F0F025A
-			public const int sms_verify_bind_error = 2131690074;
+			public const int share_devices = 2131690074;
 			
 			// aapt resource value: 0x7F0F025B
-			public const int sms_verify_code_received = 2131690075;
+			public const int sms_verify_bind_error = 2131690075;
 			
 			// aapt resource value: 0x7F0F025C
-			public const int source_detection_off = 2131690076;
+			public const int sms_verify_code_received = 2131690076;
 			
 			// aapt resource value: 0x7F0F025D
-			public const int source_detection_on = 2131690077;
+			public const int source_detection_off = 2131690077;
 			
 			// aapt resource value: 0x7F0F025E
-			public const int specified_device = 2131690078;
+			public const int source_detection_on = 2131690078;
 			
 			// aapt resource value: 0x7F0F025F
-			public const int srl_component_falsify = 2131690079;
+			public const int specified_device = 2131690079;
 			
 			// aapt resource value: 0x7F0F0260
-			public const int srl_content_empty = 2131690080;
+			public const int srl_component_falsify = 2131690080;
 			
 			// aapt resource value: 0x7F0F0261
-			public const int srl_footer_failed = 2131690081;
+			public const int srl_content_empty = 2131690081;
 			
 			// aapt resource value: 0x7F0F0262
-			public const int srl_footer_finish = 2131690082;
+			public const int srl_footer_failed = 2131690082;
 			
 			// aapt resource value: 0x7F0F0263
-			public const int srl_footer_loading = 2131690083;
+			public const int srl_footer_finish = 2131690083;
 			
 			// aapt resource value: 0x7F0F0264
-			public const int srl_footer_nothing = 2131690084;
+			public const int srl_footer_loading = 2131690084;
 			
 			// aapt resource value: 0x7F0F0265
-			public const int srl_footer_pulling = 2131690085;
+			public const int srl_footer_nothing = 2131690085;
 			
 			// aapt resource value: 0x7F0F0266
-			public const int srl_footer_refreshing = 2131690086;
+			public const int srl_footer_pulling = 2131690086;
 			
 			// aapt resource value: 0x7F0F0267
-			public const int srl_footer_release = 2131690087;
+			public const int srl_footer_refreshing = 2131690087;
 			
 			// aapt resource value: 0x7F0F0268
-			public const int srl_header_failed = 2131690088;
+			public const int srl_footer_release = 2131690088;
 			
 			// aapt resource value: 0x7F0F0269
-			public const int srl_header_finish = 2131690089;
+			public const int srl_header_failed = 2131690089;
 			
 			// aapt resource value: 0x7F0F026A
-			public const int srl_header_loading = 2131690090;
+			public const int srl_header_finish = 2131690090;
 			
 			// aapt resource value: 0x7F0F026B
-			public const int srl_header_pulling = 2131690091;
+			public const int srl_header_loading = 2131690091;
 			
 			// aapt resource value: 0x7F0F026C
-			public const int srl_header_refreshing = 2131690092;
+			public const int srl_header_pulling = 2131690092;
 			
 			// aapt resource value: 0x7F0F026D
-			public const int srl_header_release = 2131690093;
+			public const int srl_header_refreshing = 2131690093;
 			
 			// aapt resource value: 0x7F0F026E
-			public const int srl_header_secondary = 2131690094;
+			public const int srl_header_release = 2131690094;
 			
 			// aapt resource value: 0x7F0F026F
-			public const int srl_header_update = 2131690095;
+			public const int srl_header_secondary = 2131690095;
 			
 			// aapt resource value: 0x7F0F0270
-			public const int start_cloud = 2131690096;
+			public const int srl_header_update = 2131690096;
 			
 			// aapt resource value: 0x7F0F0271
-			public const int start_to_experience = 2131690097;
+			public const int start_cloud = 2131690097;
 			
 			// aapt resource value: 0x7F0F0272
-			public const int start_voice_talk = 2131690098;
+			public const int start_to_experience = 2131690098;
 			
 			// aapt resource value: 0x7F0F0273
-			public const int status_bar_notification_info_overflow = 2131690099;
+			public const int start_voice_talk = 2131690099;
 			
 			// aapt resource value: 0x7F0F0274
-			public const int step3_adding_device_to_account = 2131690100;
+			public const int status_bar_notification_info_overflow = 2131690100;
 			
 			// aapt resource value: 0x7F0F0275
-			public const int storage_status = 2131690101;
+			public const int step3_adding_device_to_account = 2131690101;
 			
 			// aapt resource value: 0x7F0F0276
-			public const int stream_type = 2131690102;
-			
-			// aapt resource value: 0x7F0F0279
-			public const int string_apiurl = 2131690105;
+			public const int storage_status = 2131690102;
 			
 			// aapt resource value: 0x7F0F0277
-			public const int string_ap_connection = 2131690103;
-			
-			// aapt resource value: 0x7F0F0278
-			public const int string_ap_connection_normal = 2131690104;
+			public const int stream_type = 2131690103;
 			
 			// aapt resource value: 0x7F0F027A
-			public const int string_authurl = 2131690106;
+			public const int string_apiurl = 2131690106;
 			
-			// aapt resource value: 0x7F0F027C
-			public const int string_deviceserial = 2131690108;
+			// aapt resource value: 0x7F0F0278
+			public const int string_ap_connection = 2131690104;
+			
+			// aapt resource value: 0x7F0F0279
+			public const int string_ap_connection_normal = 2131690105;
 			
 			// aapt resource value: 0x7F0F027B
-			public const int string_device_network_mode = 2131690107;
+			public const int string_authurl = 2131690107;
 			
 			// aapt resource value: 0x7F0F027D
-			public const int string_ezopenurl = 2131690109;
+			public const int string_deviceserial = 2131690109;
+			
+			// aapt resource value: 0x7F0F027C
+			public const int string_device_network_mode = 2131690108;
 			
 			// aapt resource value: 0x7F0F027E
-			public const int string_get_device_version_fail = 2131690110;
+			public const int string_ezopenurl = 2131690110;
 			
 			// aapt resource value: 0x7F0F027F
-			public const int string_smart_and_sound_wave_connection = 2131690111;
+			public const int string_get_device_version_fail = 2131690111;
 			
 			// aapt resource value: 0x7F0F0280
-			public const int string_smart_connection = 2131690112;
+			public const int string_smart_and_sound_wave_connection = 2131690112;
 			
 			// aapt resource value: 0x7F0F0281
-			public const int string_smart_connection_normal = 2131690113;
+			public const int string_smart_connection = 2131690113;
 			
 			// aapt resource value: 0x7F0F0282
-			public const int string_sound_wave_connection = 2131690114;
+			public const int string_smart_connection_normal = 2131690114;
 			
 			// aapt resource value: 0x7F0F0283
-			public const int string_wired_connection = 2131690115;
+			public const int string_sound_wave_connection = 2131690115;
 			
 			// aapt resource value: 0x7F0F0284
-			public const int submit_secure_validate = 2131690116;
+			public const int string_wired_connection = 2131690116;
 			
 			// aapt resource value: 0x7F0F0285
-			public const int submit_sms_code = 2131690117;
+			public const int submit_secure_validate = 2131690117;
 			
 			// aapt resource value: 0x7F0F0286
-			public const int switch_to_handset = 2131690118;
+			public const int submit_sms_code = 2131690118;
 			
 			// aapt resource value: 0x7F0F0287
-			public const int switch_to_speaker = 2131690119;
+			public const int switch_to_handset = 2131690119;
 			
 			// aapt resource value: 0x7F0F0288
-			public const int system_default_channel = 2131690120;
+			public const int switch_to_speaker = 2131690120;
 			
 			// aapt resource value: 0x7F0F0289
-			public const int tab_more = 2131690121;
+			public const int system_default_channel = 2131690121;
 			
 			// aapt resource value: 0x7F0F028A
-			public const int talk = 2131690122;
-			
-			// aapt resource value: 0x7F0F028D
-			public const int talking = 2131690125;
+			public const int tab_more = 2131690122;
 			
 			// aapt resource value: 0x7F0F028B
-			public const int talk_open_failed = 2131690123;
-			
-			// aapt resource value: 0x7F0F028C
-			public const int talk_open_success = 2131690124;
+			public const int talk = 2131690123;
 			
 			// aapt resource value: 0x7F0F028E
-			public const int tip_heard_voice = 2131690126;
+			public const int talking = 2131690126;
+			
+			// aapt resource value: 0x7F0F028C
+			public const int talk_open_failed = 2131690124;
+			
+			// aapt resource value: 0x7F0F028D
+			public const int talk_open_success = 2131690125;
 			
 			// aapt resource value: 0x7F0F028F
-			public const int tip_login_out = 2131690127;
+			public const int tip_heard_voice = 2131690127;
 			
 			// aapt resource value: 0x7F0F0290
-			public const int tip_of_added_by_yourself_and_online = 2131690128;
+			public const int tip_login_out = 2131690128;
 			
 			// aapt resource value: 0x7F0F0291
-			public const int tip_of_bad_net = 2131690129;
+			public const int tip_of_added_by_yourself_and_online = 2131690129;
 			
 			// aapt resource value: 0x7F0F0292
-			public const int tip_playback_again = 2131690130;
+			public const int tip_of_bad_net = 2131690130;
 			
 			// aapt resource value: 0x7F0F0293
-			public const int tip_specified_device = 2131690131;
+			public const int tip_playback_again = 2131690131;
 			
 			// aapt resource value: 0x7F0F0294
-			public const int title_activate_device = 2131690132;
+			public const int tip_specified_device = 2131690132;
 			
 			// aapt resource value: 0x7F0F0295
-			public const int title_activate_device_fail = 2131690133;
+			public const int title_activate_device = 2131690133;
 			
 			// aapt resource value: 0x7F0F0296
-			public const int title_activity_connect_device_wifi = 2131690134;
+			public const int title_activate_device_fail = 2131690134;
 			
 			// aapt resource value: 0x7F0F0297
-			public const int title_activity_ezupgrade_device = 2131690135;
+			public const int title_activity_connect_device_wifi = 2131690135;
 			
 			// aapt resource value: 0x7F0F0298
-			public const int today = 2131690136;
+			public const int title_activity_ezupgrade_device = 2131690136;
 			
 			// aapt resource value: 0x7F0F0299
-			public const int touch_fingerprint_sensor_hint = 2131690137;
+			public const int today = 2131690137;
 			
 			// aapt resource value: 0x7F0F029A
-			public const int touch_to_load = 2131690138;
+			public const int touch_fingerprint_sensor_hint = 2131690138;
 			
 			// aapt resource value: 0x7F0F029B
-			public const int try_again = 2131690139;
+			public const int touch_to_load = 2131690139;
 			
 			// aapt resource value: 0x7F0F029C
-			public const int ui_call_demo_txt = 2131690140;
+			public const int try_again = 2131690140;
 			
 			// aapt resource value: 0x7F0F029D
-			public const int unable_identify_two_dimensional_code_tip = 2131690141;
+			public const int ui_call_demo_txt = 2131690141;
 			
 			// aapt resource value: 0x7F0F029E
-			public const int unbind_to_bind = 2131690142;
+			public const int unable_identify_two_dimensional_code_tip = 2131690142;
 			
 			// aapt resource value: 0x7F0F029F
-			public const int unknow_ssid = 2131690143;
+			public const int unbind_to_bind = 2131690143;
 			
 			// aapt resource value: 0x7F0F02A0
-			public const int unlock_fail = 2131690144;
+			public const int unknow_ssid = 2131690144;
 			
 			// aapt resource value: 0x7F0F02A1
-			public const int unlock_success = 2131690145;
+			public const int unlock_fail = 2131690145;
 			
 			// aapt resource value: 0x7F0F02A2
-			public const int unnamed = 2131690146;
+			public const int unlock_success = 2131690146;
 			
 			// aapt resource value: 0x7F0F02A3
-			public const int update_exit = 2131690147;
+			public const int unnamed = 2131690147;
 			
 			// aapt resource value: 0x7F0F02A4
-			public const int upgrade = 2131690148;
+			public const int update_exit = 2131690148;
 			
 			// aapt resource value: 0x7F0F02A5
-			public const int upgrade_fail = 2131690149;
+			public const int upgrade = 2131690149;
 			
 			// aapt resource value: 0x7F0F02A6
-			public const int upgrade_progress = 2131690150;
+			public const int upgrade_fail = 2131690150;
 			
 			// aapt resource value: 0x7F0F02A7
-			public const int upgrade_success = 2131690151;
+			public const int upgrade_progress = 2131690151;
 			
 			// aapt resource value: 0x7F0F02A8
-			public const int upgrade_success_progress = 2131690152;
-			
-			// aapt resource value: 0x7F0F02AD
-			public const int upsdk_appstore_install = 2131690157;
-			
-			// aapt resource value: 0x7F0F02AE
-			public const int upsdk_apptouch_store_url = 2131690158;
+			public const int upgrade_success = 2131690152;
 			
 			// aapt resource value: 0x7F0F02A9
-			public const int upsdk_app_download_info_new = 2131690153;
+			public const int upgrade_success_progress = 2131690153;
 			
-			// aapt resource value: 0x7F0F02AA
-			public const int upsdk_app_download_installing = 2131690154;
-			
-			// aapt resource value: 0x7F0F02AB
-			public const int upsdk_app_size = 2131690155;
-			
-			// aapt resource value: 0x7F0F02AC
-			public const int upsdk_app_version = 2131690156;
+			// aapt resource value: 0x7F0F02AE
+			public const int upsdk_appstore_install = 2131690158;
 			
 			// aapt resource value: 0x7F0F02AF
-			public const int upsdk_cancel = 2131690159;
+			public const int upsdk_apptouch_store_url = 2131690159;
+			
+			// aapt resource value: 0x7F0F02AA
+			public const int upsdk_app_download_info_new = 2131690154;
+			
+			// aapt resource value: 0x7F0F02AB
+			public const int upsdk_app_download_installing = 2131690155;
+			
+			// aapt resource value: 0x7F0F02AC
+			public const int upsdk_app_size = 2131690156;
+			
+			// aapt resource value: 0x7F0F02AD
+			public const int upsdk_app_version = 2131690157;
 			
 			// aapt resource value: 0x7F0F02B0
-			public const int upsdk_checking_update_prompt = 2131690160;
+			public const int upsdk_cancel = 2131690160;
 			
 			// aapt resource value: 0x7F0F02B1
-			public const int upsdk_choice_update = 2131690161;
+			public const int upsdk_checking_update_prompt = 2131690161;
 			
 			// aapt resource value: 0x7F0F02B2
-			public const int upsdk_detail = 2131690162;
+			public const int upsdk_choice_update = 2131690162;
 			
 			// aapt resource value: 0x7F0F02B3
-			public const int upsdk_getting_message_fail_prompt_toast = 2131690163;
+			public const int upsdk_detail = 2131690163;
 			
 			// aapt resource value: 0x7F0F02B4
-			public const int upsdk_mobile_dld_warn = 2131690164;
+			public const int upsdk_getting_message_fail_prompt_toast = 2131690164;
 			
 			// aapt resource value: 0x7F0F02B5
-			public const int upsdk_no_available_network_prompt_toast = 2131690165;
+			public const int upsdk_mobile_dld_warn = 2131690165;
 			
 			// aapt resource value: 0x7F0F02B6
-			public const int upsdk_ota_app_name = 2131690166;
+			public const int upsdk_no_available_network_prompt_toast = 2131690166;
 			
 			// aapt resource value: 0x7F0F02B7
-			public const int upsdk_ota_cancel = 2131690167;
+			public const int upsdk_ota_app_name = 2131690167;
 			
 			// aapt resource value: 0x7F0F02B8
-			public const int upsdk_ota_force_cancel_new = 2131690168;
+			public const int upsdk_ota_cancel = 2131690168;
 			
 			// aapt resource value: 0x7F0F02B9
-			public const int upsdk_ota_notify_updatebtn = 2131690169;
+			public const int upsdk_ota_force_cancel_new = 2131690169;
 			
 			// aapt resource value: 0x7F0F02BA
-			public const int upsdk_ota_title = 2131690170;
+			public const int upsdk_ota_notify_updatebtn = 2131690170;
 			
 			// aapt resource value: 0x7F0F02BB
-			public const int upsdk_storage_utils = 2131690171;
+			public const int upsdk_ota_title = 2131690171;
 			
 			// aapt resource value: 0x7F0F02BC
-			public const int upsdk_store_url = 2131690172;
+			public const int upsdk_storage_utils = 2131690172;
 			
 			// aapt resource value: 0x7F0F02BD
-			public const int upsdk_third_app_dl_cancel_download_prompt_ex = 2131690173;
+			public const int upsdk_store_url = 2131690173;
 			
 			// aapt resource value: 0x7F0F02BE
-			public const int upsdk_third_app_dl_install_failed = 2131690174;
+			public const int upsdk_third_app_dl_cancel_download_prompt_ex = 2131690174;
 			
 			// aapt resource value: 0x7F0F02BF
-			public const int upsdk_third_app_dl_sure_cancel_download = 2131690175;
+			public const int upsdk_third_app_dl_install_failed = 2131690175;
 			
 			// aapt resource value: 0x7F0F02C0
-			public const int upsdk_update_check_no_new_version = 2131690176;
+			public const int upsdk_third_app_dl_sure_cancel_download = 2131690176;
 			
 			// aapt resource value: 0x7F0F02C1
-			public const int user_name_txt = 2131690177;
+			public const int upsdk_update_check_no_new_version = 2131690177;
 			
 			// aapt resource value: 0x7F0F02C2
-			public const int verify_code_error = 2131690178;
+			public const int user_name_txt = 2131690178;
 			
 			// aapt resource value: 0x7F0F02C3
-			public const int verify_sms_code_fail = 2131690179;
+			public const int verify_code_error = 2131690179;
 			
 			// aapt resource value: 0x7F0F02C4
-			public const int verify_sms_code_success = 2131690180;
+			public const int verify_sms_code_fail = 2131690180;
 			
 			// aapt resource value: 0x7F0F02C5
-			public const int version_newest = 2131690181;
+			public const int verify_sms_code_success = 2131690181;
 			
 			// aapt resource value: 0x7F0F02C6
-			public const int video_answer = 2131690182;
+			public const int version_newest = 2131690182;
 			
 			// aapt resource value: 0x7F0F02C7
-			public const int video_box = 2131690183;
+			public const int video_answer = 2131690183;
 			
 			// aapt resource value: 0x7F0F02C8
-			public const int video_confirm = 2131690184;
+			public const int video_box = 2131690184;
 			
 			// aapt resource value: 0x7F0F02C9
-			public const int video_device = 2131690185;
+			public const int video_confirm = 2131690185;
 			
 			// aapt resource value: 0x7F0F02CA
-			public const int video_fail = 2131690186;
+			public const int video_device = 2131690186;
 			
 			// aapt resource value: 0x7F0F02CB
-			public const int video_hang_up = 2131690187;
+			public const int video_fail = 2131690187;
 			
 			// aapt resource value: 0x7F0F02CC
-			public const int video_icon = 2131690188;
+			public const int video_hang_up = 2131690188;
 			
 			// aapt resource value: 0x7F0F02CD
-			public const int video_not_answer = 2131690189;
+			public const int video_icon = 2131690189;
 			
 			// aapt resource value: 0x7F0F02CE
-			public const int video_screenshot = 2131690190;
+			public const int video_not_answer = 2131690190;
 			
 			// aapt resource value: 0x7F0F02CF
-			public const int video_square = 2131690191;
+			public const int video_screenshot = 2131690191;
 			
 			// aapt resource value: 0x7F0F02D0
-			public const int video_success = 2131690192;
+			public const int video_square = 2131690192;
 			
 			// aapt resource value: 0x7F0F02D1
-			public const int video_talk_call_cancel = 2131690193;
+			public const int video_success = 2131690193;
 			
 			// aapt resource value: 0x7F0F02D2
-			public const int video_talk_call_is_accepted = 2131690194;
+			public const int video_talk_call_cancel = 2131690194;
 			
 			// aapt resource value: 0x7F0F02D3
-			public const int video_talk_is_playing = 2131690195;
+			public const int video_talk_call_is_accepted = 2131690195;
 			
 			// aapt resource value: 0x7F0F02D4
-			public const int video_talk_sdk_toast_hang_up = 2131690196;
+			public const int video_talk_is_playing = 2131690196;
 			
 			// aapt resource value: 0x7F0F02D5
-			public const int video_talk_sdk_toast_nobody = 2131690197;
+			public const int video_talk_sdk_toast_hang_up = 2131690197;
 			
 			// aapt resource value: 0x7F0F02D6
-			public const int video_talk_signal_weak = 2131690198;
+			public const int video_talk_sdk_toast_nobody = 2131690198;
 			
 			// aapt resource value: 0x7F0F02D7
-			public const int video_talk_watch_is_busy = 2131690199;
+			public const int video_talk_signal_weak = 2131690199;
 			
 			// aapt resource value: 0x7F0F02D8
-			public const int video_talk_watch_temperature_high_hang = 2131690200;
+			public const int video_talk_watch_is_busy = 2131690200;
 			
 			// aapt resource value: 0x7F0F02D9
-			public const int video_talk_watch_temperature_high_hint = 2131690201;
+			public const int video_talk_watch_temperature_high_hang = 2131690201;
 			
 			// aapt resource value: 0x7F0F02DA
-			public const int video_talk_watch_temperature_high_reject = 2131690202;
+			public const int video_talk_watch_temperature_high_hint = 2131690202;
 			
 			// aapt resource value: 0x7F0F02DB
-			public const int video_talk_watch_temperature_high_warn = 2131690203;
+			public const int video_talk_watch_temperature_high_reject = 2131690203;
 			
 			// aapt resource value: 0x7F0F02DC
-			public const int video_tip = 2131690204;
+			public const int video_talk_watch_temperature_high_warn = 2131690204;
 			
 			// aapt resource value: 0x7F0F02DD
-			public const int video_unlock = 2131690205;
+			public const int video_tip = 2131690205;
 			
 			// aapt resource value: 0x7F0F02DE
-			public const int wait = 2131690206;
+			public const int video_unlock = 2131690206;
 			
 			// aapt resource value: 0x7F0F02DF
-			public const int web_login_button_txt = 2131690207;
+			public const int wait = 2131690207;
 			
 			// aapt resource value: 0x7F0F02E0
-			public const int wechat_interconnect = 2131690208;
+			public const int web_login_button_txt = 2131690208;
 			
 			// aapt resource value: 0x7F0F02E1
-			public const int wifi_connected = 2131690209;
+			public const int wechat_interconnect = 2131690209;
 			
 			// aapt resource value: 0x7F0F02E2
-			public const int wifi_connection_finish_need_refresh = 2131690210;
+			public const int wifi_connected = 2131690210;
 			
 			// aapt resource value: 0x7F0F02E3
-			public const int wifi_set = 2131690211;
+			public const int wifi_connection_finish_need_refresh = 2131690211;
 			
 			// aapt resource value: 0x7F0F02E4
-			public const int wifi_setting = 2131690212;
+			public const int wifi_set = 2131690212;
 			
 			// aapt resource value: 0x7F0F02E5
-			public const int wired_connection = 2131690213;
-			
-			// aapt resource value: 0x7F0F02E7
-			public const int xlistview_footer_hint_normal = 2131690215;
+			public const int wifi_setting = 2131690213;
 			
 			// aapt resource value: 0x7F0F02E6
-			public const int xlistview_footer_hint_no_more_device = 2131690214;
+			public const int wired_connection = 2131690214;
 			
 			// aapt resource value: 0x7F0F02E8
-			public const int xlistview_footer_hint_ready = 2131690216;
+			public const int xlistview_footer_hint_normal = 2131690216;
+			
+			// aapt resource value: 0x7F0F02E7
+			public const int xlistview_footer_hint_no_more_device = 2131690215;
 			
 			// aapt resource value: 0x7F0F02E9
-			public const int xlistview_footer_no_more = 2131690217;
+			public const int xlistview_footer_hint_ready = 2131690217;
 			
 			// aapt resource value: 0x7F0F02EA
-			public const int xlistview_footer_no_more_msg = 2131690218;
+			public const int xlistview_footer_no_more = 2131690218;
 			
 			// aapt resource value: 0x7F0F02EB
-			public const int xlistview_header_hint_loading = 2131690219;
+			public const int xlistview_footer_no_more_msg = 2131690219;
 			
 			// aapt resource value: 0x7F0F02EC
-			public const int xlistview_header_hint_more = 2131690220;
+			public const int xlistview_header_hint_loading = 2131690220;
 			
 			// aapt resource value: 0x7F0F02ED
-			public const int xlistview_header_hint_normal = 2131690221;
+			public const int xlistview_header_hint_more = 2131690221;
 			
 			// aapt resource value: 0x7F0F02EE
-			public const int xlistview_header_hint_ready = 2131690222;
+			public const int xlistview_header_hint_normal = 2131690222;
 			
 			// aapt resource value: 0x7F0F02EF
-			public const int xlistview_header_last_time = 2131690223;
+			public const int xlistview_header_hint_ready = 2131690223;
 			
 			// aapt resource value: 0x7F0F02F0
-			public const int zxing_app_name = 2131690224;
+			public const int xlistview_header_last_time = 2131690224;
 			
 			// aapt resource value: 0x7F0F02F1
-			public const int zxing_button_ok = 2131690225;
+			public const int zxing_app_name = 2131690225;
 			
 			// aapt resource value: 0x7F0F02F2
-			public const int zxing_msg_camera_framework_bug = 2131690226;
+			public const int zxing_button_ok = 2131690226;
 			
 			// aapt resource value: 0x7F0F02F3
-			public const int zxing_msg_default_status = 2131690227;
+			public const int zxing_msg_camera_framework_bug = 2131690227;
+			
+			// aapt resource value: 0x7F0F02F4
+			public const int zxing_msg_default_status = 2131690228;
 			
 			static String()
 			{
diff --git a/HDL-ON_Android/Resources/values-zh/strings.xml b/HDL-ON_Android/Resources/values-zh/strings.xml
index 8bba32d..52267b1 100644
--- a/HDL-ON_Android/Resources/values-zh/strings.xml
+++ b/HDL-ON_Android/Resources/values-zh/strings.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <resources>
-	<string name="app_name">ON_Plus</string>
+	<string name="app_name">On_Pro</string>
 	<string name="action_settings">璁剧疆</string>
 	<string name="video_screenshot">鎴浘</string>
 	<string name="video_unlock">寮�閿�</string>
diff --git a/HDL-ON_Android/SplashActivity.cs b/HDL-ON_Android/SplashActivity.cs
index afcbe50..ac78c22 100644
--- a/HDL-ON_Android/SplashActivity.cs
+++ b/HDL-ON_Android/SplashActivity.cs
@@ -84,7 +84,7 @@
             JPushInterface.Init(this);
 
 
-            BaseActivity.OnCreateActoin += (activity, application) =>
+            BaseActivity.OnCreateActoin = (activity, application) =>
             {
                 //鑾峰彇鏋佸厜鎺ㄩ�両D
                 GetJPushRegistrationID(activity);
@@ -133,7 +133,7 @@
                 }
             };
 
-            BaseActivity.OnCreateActoin += (activity, application) =>
+            BaseActivity.OnCreateActoin = (activity, application) =>
             {
                 Language.CurrentLanguage = "Chinese";
                 Locale locale1 = Locale.Default;
@@ -141,6 +141,10 @@
                 if (localeList.Language == "zh")
                 {
                     Language.CurrentLanguage = "Chinese";
+                }
+                else if(localeList.Language == "es")
+                {
+                    Language.CurrentLanguage = "Spanish";
                 }
                 else
                 {
@@ -169,16 +173,16 @@
                     HDLCommon.Current.UpdateInternetStatus((int)internetStatus, MainPage.IsEnterBackground);
                 };
             };
-            BaseActivity.RefreshUIAction += (activity) =>
+            BaseActivity.RefreshUIAction = (activity) =>
             {
                 MainPage.Show();
                 checkSomeInfo();
             };
-            BaseActivity.OnResumeAction += (activity) =>
+            BaseActivity.OnResumeAction = (activity) =>
             {
                 checkSomeInfo();
             };
-            BaseActivity.OnDestroyAction += (activity) =>
+            BaseActivity.OnDestroyAction = (activity) =>
             {
                 Console.WriteLine("OnDestroyAction");
                 //BusSocket.Stop();
@@ -225,7 +229,7 @@
             {
                 //淇濆瓨鑾峰彇鐨勬瀬鍏夋湇鍔″櫒涓婄殑娉ㄥ唽ID鍒版湰鍦版枃浠�
                 var tokenID = JPushInterface.GetRegistrationID(activity);
-                Console.WriteLine("RegistrationID:  " + tokenID);
+                Console.WriteLine("RegistrationID1:  " + tokenID);
                 if (!string.IsNullOrEmpty(tokenID) && OnAppConfig.Instance.PushDeviceToken != tokenID)
                 {
                     OnAppConfig.Instance.PushDeviceToken = tokenID;
@@ -246,7 +250,7 @@
                             break;
                         }
                     }
-                    Console.WriteLine("RegistrationID:  " + tokenID);
+                    Console.WriteLine("RegistrationID2:  " + tokenID);
                     if (!string.IsNullOrEmpty(tokenID) && OnAppConfig.Instance.PushDeviceToken != tokenID)
                     {
                         OnAppConfig.Instance.PushDeviceToken = tokenID;
diff --git a/HDL-ON_iOS/AppDelegate.cs b/HDL-ON_iOS/AppDelegate.cs
index 2669b27..d41c1ac 100644
--- a/HDL-ON_iOS/AppDelegate.cs
+++ b/HDL-ON_iOS/AppDelegate.cs
@@ -262,6 +262,10 @@
                 //{
                 //    Language.CurrentLanguage = "russian";
                 //}
+                else if (NSLocale.PreferredLanguages[0].Contains("es-"))
+                {
+                    Language.CurrentLanguage = "Spanish";
+                }
                 else
                 {
                     Language.CurrentLanguage = "English";
diff --git a/HDL-ON_iOS/HDL-ON_iOS.csproj b/HDL-ON_iOS/HDL-ON_iOS.csproj
index 73a83b1..f8fd1bc 100644
--- a/HDL-ON_iOS/HDL-ON_iOS.csproj
+++ b/HDL-ON_iOS/HDL-ON_iOS.csproj
@@ -488,6 +488,8 @@
         <Folder Include="Resources\Phone\PersonalCenter\FacePassage\" />
         <Folder Include="Resources\Phone\FunctionIcon\Electrical\AirSwitch\" />
         <Folder Include="Base.lproj\" />
+        <Folder Include="Resources\Phone\FunctionIcon\CAC\" />
+        <Folder Include="Resources\Phone\FunctionIcon\Panel\" />
     </ItemGroup>
     <ItemGroup>
         <InterfaceDefinition Include="LaunchScreen.storyboard" />
@@ -1389,6 +1391,22 @@
       <BundleResource Include="Resources\Phone\FunctionIcon\EnvironmentalScience\HistoryOpionBg3.png" />
       <BundleResource Include="Resources\Phone\FunctionIcon\EnvironmentalScience\HistoryOpionBg4.png" />
       <BundleResource Include="Resources\Phone\Collection\FunctionOfflineBg.png" />
+      <BundleResource Include="Resources\Phone\Public\MsgIcon\CallIcon.png" />
+      <BundleResource Include="Resources\Phone\Public\MsgIcon\AnswerIcon.png" />
+      <BundleResource Include="Resources\Phone\Public\MsgIcon\HangUpIcon.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\CAC\DataIcon.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\CAC\JinMaoIcon.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\hvaccac.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\hvaccac_blue.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\hvaccac_white.png" />
+      <BundleResource Include="Resources\Phone\Public\dialogBg2.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\sensorhelp.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\sensorhelp_blue.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\sensorhelp_white.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Panel\PanelHelpAlarmBgIcon.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Panel\PanelHelpNormalBgIcon.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\screenpanel.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Panel\PanelEnviBg.png" />
     </ItemGroup>
     <ItemGroup>
       <ITunesArtwork Include="iTunesArtwork" />
diff --git a/HDL-ON_iOS/Info.plist b/HDL-ON_iOS/Info.plist
index fa24946..fb0e6ed 100644
--- a/HDL-ON_iOS/Info.plist
+++ b/HDL-ON_iOS/Info.plist
@@ -100,9 +100,9 @@
 	<key>UIStatusBarStyle</key>
 	<string>UIStatusBarStyleLightContent</string>
 	<key>CFBundleShortVersionString</key>
-	<string>1.5.502203111</string>
+	<string>1.5.502204211</string>
 	<key>CFBundleVersion</key>
-	<string>1.5.503111</string>
+	<string>1.5.504211</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 73f20e4..ead9511 100644
--- a/HDL-ON_iOS/Resources/Language.ini
+++ b/HDL-ON_iOS/Resources/Language.ini
@@ -518,6 +518,16 @@
 530=In order to prevent the wrong touch and click of opening and closing the door and ensure family safety, please enter your door lock password.
 531=Password free unlocking within five minutes
 532=The device is offline and cannot be operated temporarily
+533=Statistical Chart
+534=Data
+535=Dew point temperature
+536=Temperature statistics
+537=Humidity statistics
+538=Uint
+539=Smart panel
+540=In Alarm
+541=Monitoring
+542=Wandering alarm
 
 
 1000=Room Humidity
@@ -1030,6 +1040,10 @@
 7152=Leave or arrive at a place
 7153=Leave
 7154=Arrive
+7155=Distress/Normal
+7156=Distress
+
+
 
 
 
@@ -1659,9 +1673,20 @@
 530=涓洪槻姝㈠紑鍏抽棬鐨勮瑙︾偣鍑伙紝淇濊瘉瀹跺涵瀹夊叏锛岃杈撳叆鎮ㄧ殑闂ㄩ攣寮�闂ㄥ瘑鐮併��
 531=浜斿垎閽熷唴鍏嶅瘑鐮佸紑閿�
 532=璁惧绂荤嚎涓紝鏆傛椂鏃犳硶鎿嶄綔
-533=璁垮绠$悊
+2533=璁垮绠$悊
 
 
+533=24灏忔椂缁熻鍥�
+534=鏁版嵁
+535=闇茬偣娓╁害
+536=娓╁害缁熻鍥�
+537=婀垮害缁熻鍥�
+538=鍗曚綅
+539=鏅鸿兘闈㈡澘
+540=鎶ヨ涓�
+541=鐩戞帶涓�
+542=寰樺緤鎶ヨ
+ 
 1000=瀹ゅ唴婀垮害
 1001=绔ラ攣
 1002=璐熺瀛�
@@ -2155,7 +2180,8 @@
 7152=绂诲紑鎴栧埌杈炬煇鍦�
 7153=绂诲紑
 7154=鍒拌揪
-
+7155=姹傛晳/姝e父
+7156=姹傛晳
 
 
  
@@ -2783,6 +2809,16 @@
 530=In order to prevent the wrong touch and click of opening and closing the door and ensure family safety, please enter your door lock password.
 531=Password free unlocking within five minutes
 532=The device is offline and cannot be operated temporarily
+533=Statistical Chart
+534=Data
+535=Dew point temperature
+536=Temperature statistics
+537=Humidity statistics
+538=Uint
+539=Smart panel
+540=袧芯褉屑邪谢褜薪褘泄
+541=Monitoring
+542=Wandering alarm
 
 
 
@@ -3405,3 +3441,1147 @@
 10031=校褋褌褉芯泄褋褌胁芯 薪械 写芯谢卸薪芯 斜褘褌褜 锌褍褋褌褘屑.
 10032=校 锌芯谢褜蟹芯胁邪褌械谢褟 薪械褌 褉邪蟹褉械褕械薪懈褟.
 10033=校褋褌褉芯泄褋褌胁芯 薪械 褋褍褖械褋褌胁褍械褌.
+
+
+
+[Spanish]
+1=Ingresar
+2=N煤mero de tel茅fono
+3=Luz
+4=Correo
+5=Por favor ingrese numero de cuenta 
+6=Contrase帽a
+7=Olvidar
+8=Registrarse
+9=Iniciar sesi贸n
+10=Espere鈥�
+11=Cerrar
+12=C贸digo de verificaci贸n
+13=Contrase帽a de acceso
+14=Registrarse
+15=N煤mero de tel茅fono
+16=Ingrese la contrase帽a
+17=Ingrese la contrase帽a nuevamente
+18=C贸digo de verificaci贸n
+19=N煤mero de tel茅fono incorrecto, ingrese nuevamente
+20=L a contrase帽a y la confirmaci贸n no coinciden. Ingrese la contrase帽a nuevamente
+21=El formato de la contrase帽a no cumple con los requisitos. Ingrese la contrase帽a nuevamente
+22=El usuario ya existe. Puede ingresar directamete
+23=C贸digo de verificaci贸n incorrecto, vuelva a ingresarlo. 
+24=N煤mero de cuenta incorrrecta, por favor ingrese el correo correcto 
+25=Correo
+26=Residencia
+27=Miembro
+28=Desarmar
+29=Armar
+30=Copia de seguridad
+31=Funci贸n auxiliar
+32=A帽adir funciones
+33=Modo noche
+34=Configuraci贸n general
+35=Soporte
+36=Casa
+37=Categor铆a
+38=Inteligente
+39=Individual
+40=Inicio de sesi贸n fallido, n煤mero de cuenta o contrase帽a incorrectos
+41=Error al enviar el codigo de verificaci贸n
+42=Error de red
+43=Error en el registo, int茅ntelo de nuevo
+44=Confirmar reinicio
+45=El numero de cuenta no existe, por favor aseg煤rese de estar registrado
+46=Inicio de sesion inv谩lido, iniciar sesion nuevamente
+47=Centro Personal
+48=Nombre
+49=C贸digo QR
+50=Tel茅fono
+51=Correo
+52=No enlazado
+53=Autorizaci贸n de terceros
+54=Cambiar contrase帽a
+55=Configuraci贸n de desbloqueo
+56=Establecer contrase帽a, gesto, huella digital o identificaci贸n facil para proteger su provacidad
+57=Salir
+58=Habitaci贸n
+59=Equipo
+60=Funci贸n
+61=Brillo
+62=Configuraci贸n
+63=Locaci贸n 
+64=Compartir 
+65=A帽adir acceso directo al escritorio
+66=Cambiar nombre
+67=Cancelar 
+68=Confirmar 
+69=Todo
+70=Cortina
+71=Nombre
+72=Address
+73=Gesti贸n de plantas
+74=Gesti贸n de habitaciones
+75=Migraci贸n de administrador 
+76=Migraci贸n de privilegios 
+77=Priviligio de depuraci贸n
+78=El administrador migra a otro usuario
+79=Toda los datos de la residencia migran al nuevo usuario
+80=Permitir que el personal visite su casa de forma remota
+81=Piso
+82=A帽adir piso
+83=Cambiar nombre de piso
+84=Error al a帽adir, el piso ya existe
+85=Escena 
+86=Borrar 
+87=Inmediata
+88=Eliminar el piso o no? 
+89=A帽adir habitaci贸n 
+90=Cmabiar la informacion de la habitaci贸n 
+91=Informaci贸n de la habitanci贸n 
+92=Nombre
+93=Piso
+94=Gesti贸n funcionamiento
+95=Guardar
+96=Eliminar la habitaci贸n 
+97=Galeria por defecto 
+98=Camara
+99=Seleccionar de la galeria 
+100=No asignado 
+101=Asignado
+102=No asignado 
+103=Eliminar la habitaci贸n o no? 
+104=Tiempo de transici贸n 
+105=Temperatura interna 
+106=AC
+107=Videoportero
+108=Sensor
+109=Monitor de seguridad 
+110=Panel Inteligente
+111=Musica 
+112=Aire fresco 
+113=Ambiental 
+114=Monitoreo de energ铆a 
+115=Electrodom茅sticos
+116=Bloqueo inteligente 
+117=Calefacci贸n 
+118=Abrir 
+119=Refrigeraci贸n 
+120=Calefacci贸n 
+121=Deshumidificar
+122=Auto
+123=Suministro de aire
+124=Alto 
+125=Medio 
+126=Bajo 
+127=Modo
+128=Velocidad del ventilador 
+129=Estas seguro de apagar todas las funciones de la habitaci贸n? 
+130=Abierta
+131=A帽adido a favoritos
+132=Felicitaciones! Registro exitoso 
+133=Inicio de sesion autom谩tico pronto鈥�.
+134=El numero de no esta registrado, por favor registrese e ingrese nuevamente
+135=Por favor, obtener codigo de verificaci贸n 
+136=La contrase帽a ha sido cambiada
+137=La direccion rsidencial no puede estar en blanco 
+138=El nombre de la residencia no puede estar en blanco 
+139=El nombre de la habitaci贸n no puede estar en blanco 
+140=El nombre del piso no puede estar en blanco 
+141=No se pudo revisar, el piso ya existe
+142=El nombre del equipo no puede estar en blanco 
+143=El nombre del usuario no puede estar en blanco 
+144=Nombre de usuario 
+145=Seleccione la p谩gina para bloquear 
+146=Puede seleccionar varias paginas que le gustaria mantener
+147=Error en codigo de verificaci贸n
+148=No protegido 
+149=Cuando empieza 
+150=Armar/Desarmar 
+151=Desbloquear remotamente 
+152=No se necesita contrase帽a/gesto al iniciar el software
+153=Iniciar sesi贸n 5 minutos despues de salir de la p谩gina, se requiere el m茅todo de desbloqueo correspondiente.
+154=Centro de miembros - utiliza para debloquear la funci贸n de seguridad como armar/desarmar
+155=Usado para desbloquear la cerradura inteligente 
+156=Configuraci贸n de desbloqueo
+157=Solo valido para host
+158=Desbloquear con contrase帽a
+159=Desbloquear con gesto 
+160=Desbloquear con huella 
+161=Desbloquear con identificaci贸n facial 
+162=Configuraci贸n de contrase帽a num茅rica
+163=Configuraci贸n exitosa
+164=Configuraci贸n de gestos
+165=Por favor dibuja tu patron de desbloqueo
+166=Requiere al menos una conexi贸n de 4 puntos, dibuje nuevamente 
+167=El patron y la corfirmacion que dibujaste no coincide, dibuje nuevamente
+168=Por favor dibuje su patr贸n nuevamente
+169=Desbloquear con huella o no? 
+170=Desbloquar con identificacion facial o no? 
+171=Verificar la contrase帽a num茅rica 
+172=Verificar el gesto 
+173=Por favor ingrese el gesto original 
+174=Por favor ingrese la contrase帽a num茅rica original 
+175=Verificaci贸n fallida, error en la contrase帽a
+176=Cambiar la contrase帽a num茅rica 
+177=Cambiar el gesto 
+178=Cerrar la configuraci贸n de desbloqueo o no? 
+179=Por favor verifique la huella 
+180=Verificaci贸n fallida, error en el gesto
+181=General 
+182=Dia 
+183=Noche 
+184=Abandonar 
+185=Por favor enlace el piso
+186=Ajuste de la velocidad del ventilador 
+187=Ventilador 
+188=Enchufe 
+189=Nivel 
+190=Chl
+191=Vol
+192=TV
+193=La habitanci贸n existe, error al cambiar 
+194=Medio Ambiente
+195=Contaminaci贸n fuerte
+196=Contaminaci贸n leve 
+197=Bueno
+198=Excelente
+199=Frio helado
+200=Frio
+201=Frio
+202=Confort
+203=Tibio 
+204=Caliente
+205=Extremadamente caliente 
+206=Hasta el estandar 
+207=Contaminaci贸n leve 
+208=Contaminaci贸n media
+209=Contaminaci贸n fuerte
+210=Fresco 
+211=Turbidez
+212=Hipoxia
+213=Hipoxia severa
+214=H煤medo 
+215=H煤medo 
+216=Seco 
+217=Temperatura
+218=Humedad 
+219=Rango 
+220=Nivel 
+221=Valor de color 
+222=PM1.0
+223=PM2.5
+224=Ruido
+225=Fuerza del viento
+226=CO2
+227=TV02
+228=Dia 
+229=Semana
+230=Mes
+231=Otra regi贸n 
+232=Administraci贸n de miembros 
+233=Apodo 
+234=Autoridad Administrativa
+235=Crear una escena
+236=Apodo no puede quedar en blanco 
+237=Editar apodo 
+238=La regi贸n utilizada 
+239=A帽adir miembro 
+240=Por favor ingrese el n煤mero de cuenta del miembro 
+
+241=Escanear codigo QR 
+242=Confirmar la invitaci贸n 
+243=Error en n煤mero de cuenta, por favor chequear 
+244=Agregue correctamente al miembro
+245=Error de datos, por favor intente de nuevo 
+246=Error al a帽adir, el numero de cuenta del miembro no esta registrada
+
+247=No puedes agregarte a ti mismo.
+248=El usuario no existe en esta residencia 
+249=Se ha agregado el n煤mero de cuenta del miembro, por lo que no se puede volver a agregar.
+
+250=Error de operaci贸n 
+251=Error al agregar, autoridad no valida 
+252=Guardado correctamente
+253=Guardando鈥spere un momento. 
+254=Adopo editado 
+255=Eliminar este miembro 
+256=Sin favoritos 
+257=Introduzca el contenido 
+258=Bienvenido al nuevo miembro 
+259=Esta seguro de elimianr este miembro? 
+260=Introduzca la contrase帽a de inicio de sesi贸n 
+261=Cambio de residencia exitoso
+262=Seleccionar todo 
+263=Compartir la selecci贸n funcional 
+264=Confirmar uso compartido 
+265=Compartir en 
+266=Error de uso compartido funcional 
+267=Uso compartido funcional exitoso 
+268=Correo 
+269=Cambiar el enlace 
+270=Eliminar el enlace
+271=Correo 
+272=Cambiar la direcci贸n de correo 
+273=Cambiar el m茅todo de verificaci贸n 
+274=El c贸digo de verificaci贸n ha sido enviado, por favor ingrese
+275=Reenviar 
+276=Verificaci贸n correcta 
+277=Correo 
+278=Por favor ingrese el nuevo correo 
+279=Enlazar correctamente su correo electr贸nico a su cuenta
+280=No vincular su correo electr贸nica a su cuenta 
+281=Eliminar el enlace de correo electr贸nico 
+282=Eliminaci贸n correcta de enlace 
+283=N煤mero de telefono
+284=N煤mero de telefono
+285=N煤mero de telefono
+286=Vincular correctamente su numero de tel茅fono a su cuenta
+287=No puede vincular su numero de tel茅fono a su cuenta 
+288=Cambiar el enlace 
+289=Quitar el enlace 
+290=No se puede obtener el historial 
+291=Sin favoritos 
+292=Acerca de ON+
+293=Miembro
+294=Administrador 
+295=Cambiar la contrase帽a
+296=Antes de cambiar la contrase帽a iniciar sesion
+297=Por favor verifique ID
+298=Verificaci贸n telefonica 
+299=Verificaci贸n de correo electronico 
+300=No se ha enlazado a la direcci贸n de correo electronico, no puede verificar 
+301=No se ha enlazado a un numero telefonico, no se puede verificar  
+302=Proceder al enlace 
+303=Eliminado correctamente el enlace a su numero de telefono 
+304=El codigo de verificaci贸n se ha enviado a: 
+305=Telefono 
+306=Correo 
+307=Recibi贸 nuevos datos, esta seguro de anularlos? 
+308=Automatizaci贸n 
+309=Crear una escena
+310=A帽adir escena 
+311=Configuraci贸n basica 
+312=Nombre
+313=Region 
+314=Completo
+315=Vista completa de la residencia
+316=Sleccionar 
+317=Ya a帽adido
+318=Conmutador 
+319=Velocidad del ventilador 
+320=Modo
+321=Encendido
+322=Apagado
+323=Escena 
+324=Retardo de escena
+325=Configuraci贸n de retardo
+326=Retardo 
+327=Capturar la escena
+328=Escena de pelicula 
+329=General 
+330=Modo autom谩tico 
+331=Potencia calentamiento suelo
+332=Refrigeraci贸n suelo
+333=Potencia de refrigeraci贸n del suelo
+334=Ajustar el porcentaje
+335=Sin retardo
+336=No hay escena disponible. A帽ade uno! 
+337=Editar la escena
+338=El nombre de la escena no puede estar en blanco
+339=El nombre de la escena ya existe, por favor revise 
+340=El nombre de la habitaci贸n ya existe, por favor revise
+341=Eliminar esta escena o no? 
+342=La puerta de enlace esta fuera de linea, falla de conexi贸n remota
+343=Error MAC, error de conexi贸n remota. 
+344=Error de conexi贸n remota. 
+345=Telefono 
+346=Correo 
+347=Ingrese el nuevo numero de telefono ceular 
+348=Ya se ha utilizado el numero de telefono celular 
+349=Ya se ha utilizado la direccion de correo electronico 
+350=La direcci贸n de correo electr贸nico es la misma que la actual, sin necesidad de cambiar.
+351=El n煤mero de tel茅fono es la mismo que la actual, sin necesidad de cambiar.
+352=Asignaci贸n de piso 
+353=Separar 
+354=Cerrar
+355=Acerca de
+356=Numero de version 
+357=Esta funcion no esta disponible! 
+358=Telefono 
+359=Correo 
+360=Escena de panel 
+361=No a帽adido
+362=Seleccionar todo 
+363=No se puede comunicar con el servidor, no se puede editar la informaci贸n del dispositivo
+364=No se puede comunicar con el servidor, no se puede editar la informaci贸n de la habitaci贸n
+365=No se puede comunicar con el servidor, no se puede editar la informaci贸n de la escena
+366=No se puede comunicar con el servidor, no se puede eliminar la escena
+367=No se puede comunicar con el servidor, no se puede eliminar el piso
+368=Bienvenido a disfrutar de ON+ 
+369=A帽adir residencia
+370=Convi茅rtete en miembro de la familia
+371=No se puede utilizar la funcion, por favor verifique su conexi贸n 
+372=No se puede crear una escena, por favro verifique su conexi贸n 
+373=Error al agregar un piso 
+374=Los datos residenciales se han eliminado, APP cambiar谩 autom谩ticamente a otra residencia.
+375=El gateway no esta conectado al servidor, no se puede crear la escena 
+376=No se puede introducir un car谩cter especial
+377=Toda la residencia 
+378=Tiempo de transici贸n 
+379=Velocidad de transicion 
+380=Esta funcion no esta disponible! 
+381=Recargar
+400=Bienvenido a casa
+401=Codigo de barras no v谩lido, intentelo de nuevo 
+402=Int茅ntelo de nuevo
+403=Temperatura de color 
+404=Ajuste r谩pido 
+405=Acogedor 
+406=Reuni贸n 
+407=Lectura
+408=A帽adir
+409=Marca de funci贸n 
+410=No ha agregado ningun dispositov de pataforma en la actualidad 
+411=Otros dispositivos de plataforma son compatibles con proveedores de serviciso externos 
+412=A帽adir
+413=Controlador no activado
+414=Controlador activado
+415=Alguien
+416=Registro
+417=Fuga de agua 
+418=En alarma 
+419=Normal 
+420=Seco caliente
+421=Secado al aire
+422=Desinfectar
+423=Iluminaci贸n
+424=Tiempo
+425=Tiempo seco caliente
+426=Tiempo de secado al aire
+427=Tiempo de desinfecci贸n 
+428=Tiempo Ani贸n
+429=H
+430=Min
+431=Actualmente esta agregando cualquier dispositivos de plataforma a
+432=Otros dispositivos de plataforma son compatibles con proveedores de serviciso externos 
+433=Valvula de agua 
+434=Interruptor de tiempo
+435=Control remoto 
+436=Dispositivos a帽adido 
+437=Lista de dispositivos 
+438=humedad:{0}% aire:viento {1}:{2}
+439=Tiempo real: {0} kw
+440=Siguiente paso
+441=Seleccione todas las 谩reas de estado de captura
+442=Generar escena
+443=Implementaci贸n personalizada
+444=Centro de seguridad
+445=Defensa de la casa
+446=Defensa en casa
+447=Defensa de vacaciones 
+448=Implementaci贸n fija 
+449=*Deshacer defensa no afecta
+450=Defensa contra desastres
+451=Defensa de 24 horas 
+452=Alarma antirrobo
+453=Silenciar alarma
+454=Informaci贸n de implementaci贸n
+455=El nombre no puede estar en blanco 
+456=Lienzo
+457=Consumo de energ铆a 
+458=Fecha
+459=Consumo de energ铆a en tiempo real 
+460=Consumo energ茅tico de este mes 
+461=Exterior/Interior
+462=Aun no has a帽adido ningun dispositivo
+
+463=Introduzca el c贸digo SN del dispositivo
+464=Puede empezar a usar la onda milim茅trica Zhaoguan
+465=Eliminar dispositivo
+466=STB
+467=Proyector
+468=Alguien cay贸
+469=Alguien est谩 en
+
+470=Bajo protecci贸n 
+471=Sensor de onda milim茅trica
+472=Exterior
+473=Columpio 
+474=Oscilaci贸n hacia arriba y hacia abajo 
+475=Gira a izquierda y derecha
+476=A帽adir residencia 
+477=Columpio 
+478=Patr贸n
+479=Velocidad
+480=Sensor ambiental 
+481=Puede empezar a usar el sensor ambiental 
+482=Sensor de gas
+483=Introduzca el c贸digo MAC del dispositivo
+484=Abierto
+485=Comprobar/Modificar
+486=Funci贸n de defensa/Estado de alarma 
+487=Objetivo de alarma despues de la activaci贸n 
+488=Paso de rostro
+489=Aplicar identificaci贸n facil a: 
+490=Control de acceso a la comunidad
+491=Acerda de identificacion facil y privacidad 
+492=Borrar datos 
+493=Resetear identificaci贸n facial 
+494=Establecer identificaci贸n facial 
+495=Configuraci贸n paso de rostro
+496=No hay ningun estado de implementacion de tareas asociado 
+497=Personalizado
+498=Implementaci贸n retrasada
+499=Agregar funci贸n de defensa
+500=Agregar destino de alarma
+501=Alarma de seguridad: se activa en {0}
+502=Borrar la alarma de seguridad?
+503=Exceso de estandar 
+504=Bueno
+505=Excelente
+506=Indentificacion facil ingresada correctamente
+507=Ingreso identificaci贸n facil fallida
+508=Formaldeh铆do
+509=Introduzca el nombre de seguridad
+510=Seleccione el destino de implementaci贸n 
+511=Atenuaci贸n combinada
+512=Mensajes no estan habilitados, vaya a configuraci贸n
+513=Introduzca el codigo de emparejamiento
+514=La informaci贸n de la ubicaci贸n del gateway no est谩 configurada
+515=Agregar seguridad
+516=Withdrawal
+------
+517=Instantaneous value
+518=Cumulative power consumption
+519=Voltage (V)
+520=Electric Current (A)
+521=Power (W)
+522=Refresh
+523=Delay alarm
+524=Bypass
+525=Enable
+526=Cancel account
+527=Homekit support notes
+528=Firmware update
+529=
+530=In order to prevent the wrong touch and click of opening and closing the door and ensure family safety, please enter your door lock password.
+531=Password free unlocking within five minutes
+532=The device is offline and cannot be operated temporarily
+533=Statistical Chart
+534=Data
+535=Dew point temperature
+536=Temperature statistics  
+537=Humidity statistics
+538=Uint
+539=Smart panel
+540=En alarma
+541=Monitoring
+542=Wandering alarm
+
+
+1000=Humedad de ambiente
+1001=V-chip
+1002=Ani贸n
+1003=Estirilizaci贸n
+1004=Humidificar
+1005=Restablecimiento del elemento de filtro
+1006=Iluminaci贸n
+1007=Autom谩tico
+1008=Manual
+1009=Fuerte
+1010=Dormir
+1011=Tiempo
+1012=Velocidad del viento
+1013=Engranaje 
+1014=Confirme si el elemento filtrante se ha restablecido y opere el equipo de acuerdo con el manual de instrucciones para que la vida 煤til del elemento filtrante se vuelva a cronometrar
+1015=Marcha baja
+1016=Engranaje medio
+1017=Marcha alta
+1018=Configuraci贸n de temportizaci贸n 
+1019=Hora
+1020=Tiempo del elemento de filtro: 
+1021=Filtro de aire
+1022=Velocidad actual del viento 
+1023=Cancelar tiempo 
+1024=Robot de barrido de pisos 
+1025=Succi贸n 
+1026=1掳 Marcha 
+1027=2掳 Marcha 
+1028=3掳 Marcha 
+1029=Carga 
+1030=Voz 
+1031=Silenciar 
+1032=Modo de limpieza
+1033=Gestion de consumibles
+1034=Historia
+1035=Autom谩tico
+1036=Aleatorio
+1037=Muro
+1038=Espiral
+1039=脕rea total limpia
+1040=Tiempo total de limpieza
+1041=Vida 煤til restante del cepillo lateral 
+1042=Vida 煤til residual del cepillo de rodillos 
+1043=Vida 煤til restante de la pantalla de filtro
+1044=Restablecer pincel de bordes
+1045=Restablecer cepillo de rollo
+1046=Restablecer pantalla
+1047=Confirmar para restablecer el pincel de bordes? 
+1048=Confirmar para restablecer el cepillo de rollo? 
+1049=Confirmar para restablecer la pantalla? 
+1050=Agregar dispositivo
+1051=Mini control remoto inteligente
+1052=Agregar control remoto por infrarrojos 
+1053=Presione el bot贸n del control remoto infrarrojo{0} durante 3 segundos y la luz indicadora{0} se enciende en azul r谩pidamente
+1054=Aseg煤rese de que su Bluetooth{0} est茅 activado y se pueda buscar
+1055=Siguiente paso
+1056=Buscando dispositivo鈥�
+1057=No se ha encontrado ning煤n mando a distancia por infrarrojos
+1058=1.Compruebe si el dispositivo est谩{0} encendido normalmente{0}2.Compruebe si la funci贸n Bluetooth{0} est谩 activada normalmente{0}3.Compruebe si el indicador{0} luz parpadea en azul
+1059=Buscar de nuevo
+1060=Conectar WiFi
+1061=En la actualidad, solo es compatible con la red WiFi 2.4G{0} y no admite nombres WiFi{0} con caracteres chinos
+1062=Contrase帽a
+1063=Conectando鈥�
+1064=Haga que el control remoto por infrarrojos{0} lo m谩s cerca posible del enrutador WiFi
+1065=Enlace de red
+1066=Subir a nube
+1067=Conectado con 茅xito 
+1068=1.Compruebe si el dispositivo est谩{0} encendido normalmente{0}2.Active la funci贸n Bluetooth{0}3.Presione el bot贸n durante 10 s y el indicador{0} luz estar谩 encendida
+1069=Error al agregar 
+1070=Agregado con 茅xito
+1071=隆Puedes empezar a usar el control infrarrojo{0}remote!
+1072=Empezar a usar 
+1073=Por favor encender Bluethooth
+1074=Informaci贸n de ubicaci贸n (GBS) no disponible
+1075=Red no disponible
+1076=Seleccione el mando a distancia por infrarrojos
+1077=Aire fresco
+1078=Pantalla de filtro residual 
+1079=Energia 
+1080=Ventilado
+;鍒�
+1081=1掳 Marcha 
+1082=2掳 Marcha 
+1083=3掳 Marcha 
+1084=1掳 Marcha 
+1085=2掳 Marcha 
+1086=3掳 Marcha 
+1087=Desbloquear 
+1088=Temp. Contrase帽a
+1089=Conectado 
+1090=Desconectado 
+1091=Generar 
+1092=Tiempo efectivo 
+1093=Tiempo de caducidad
+1094=Seleccionar hora 
+1095=Seleccionar fecha
+1096=Generar 
+1097=Se ha copiado la contrase帽a actual 
+1098=Borrar contrase帽a?
+1099=El tiempo de caducidad debe ser posterior al tiempo efectivo 
+1100=M茅todo de desbloqueo
+1101=Se sincronizar谩 con el bloqueo real, 驴confirmar para eliminar?
+1102=Borrar 
+1103=Comentar 
+1104=El comentario no puede estar en blanco
+1105=Asignar a: 
+1106=Escena de destino no existe 
+1107=Seleccionar escena
+1108=Desbloquear 
+1109=Siempre encendido
+1110=Configuraci贸n
+1111=Automatizaci贸n 
+1112=Activar el modo "Siempre encendido" 
+1113=Desactivar el modo "Siempre encendido"
+1114=Editar 
+1115=Siempre Encendido estar谩 apagado {0}
+1116=Condici贸n
+1117=Movimiento 
+1118=Siempre encendido
+1119=Bloquear 
+1120=Usuario
+1121=M茅todo de desbloqueo
+1122=Huella digital 
+1123=Tarjeta 
+1124=Clave
+1125=Informaci贸n
+1126=Desbloquear 
+1127=Alarma 
+1128=Sin conexi贸n 
+1129=Para el primer usuario, introduzca la contrase帽a.
+1130=Introduzca la contrase帽a de administrador
+1131=Enlace correcto
+1132=Saltar a la contrase帽a personal para desbloquear 
+1133=Saltar 
+1134=Por favor, dibuja tu patr贸n 
+1135=El bloqueo estar谩 siempre encendido despu茅s de la configuraci贸n, confirme para continuar
+1136=Confirmar 
+1137=Caducar 
+1138=Siempre Encendido caducar谩 despues de {0} horas
+1139=Introduzca el tiempo de caducidad 
+1140=El tiempo de caducidad no debe ser superior a 72 horas
+1141=El tiempo de caducidad no debe ser inferior a 1 hora
+1142=Error al establecer conexi贸n, intentelo de nuevo 
+1143=No se puede verificar el ID de administrador, vuelva a iniciar sesi贸n en la cuenta
+1144=Su residencia est谩 siendo migrada a otro HDL
+1145=Nota: 
+1. Todos sus datos de residencia se migrar谩n a un nuevo usuario. {0} 2. Despu茅s de la migraci贸n, el miembro original ser谩{0}autom谩ticamente desvinculado de esta residencia. {0} 3. La nueva cuenta es una HDL v谩lida. {0} 4. La cuenta del receptor no puede ser la misma{0} que la del lado de la migraci贸n.
+1147=Confirmar 
+1148=Cuenta del receptor de entrada
+1149=Perfil 
+1150=Confirmar migraci贸n de administrador de {0} a {1}
+1151=La cuenta no existe
+1152=No transferir la propiedad a usted mismo
+1153=Terminar
+1154=Transferir al usuario, por favor espere...
+1155={0} se ha convertido en administrador residencial
+1156=Los datos de residencia se eliminar谩n de su cuenta
+1157=No se puede migrar
+1158=Int茅ntelo de nuevo
+1159=Migraci贸n de la autoridad de administraci贸n
+1160=Su autoridad de administraci贸n se est谩 migrando a otros miembros
+1161=1.Sus datos (datos en la nube) de la residencia ser谩n{0}migrabados al nuevo administrador{0}2.Sus datos se intercambiar谩n con el miembro objetivo{0}y su permiso se cambiar谩 al miembro objetivo{0}
+1162=Confirmar
+1163=No hay miembros para elegir
+1164=Confirmar la migraci贸n de la autoridad de administraci贸n de {0} a {1}
+1165=Migrar correctamente
+1166=No se puede migrar
+1167=Migrar correctamente, y sus permisos se convertir谩n en miembros normales
+
+4000=Videoportero
+4001=Registro de llamadas 
+4002=*Los registros en la nube solo se conservan durante 30 d铆as
+4003=Llamada telef贸nica a domicilio
+4004=Contestado
+4005=Desbloqueado
+4006=A帽o
+4007=De
+4008=Llamada
+4009=Desbloqueado
+4010=Perdido
+4011=Rechazado
+4012=隆Los par谩metros de configuraci贸n son anormales!
+4013=C贸digo QR de control de acceso
+4014=Contrase帽a temporal 
+
+
+
+
+
+5000=Musica 
+5001=Grupo 
+5002=Configuracion 
+5003=Informaci贸n general 
+5004=Reproductor multimedia 
+5005=Bluetooth
+5006=Region 
+5007=Lista de canciones
+5008=Mis favoritos
+5009=Mi lista 
+5010=Seleccionar fuente 
+5011=Local
+5012=USB
+5013=Radio en linea
+5014=QQ musica
+5015=Bluetooth
+5016=Entrada de linea 
+5017=Revisar el nombre 
+5018=Individual
+5019=Juego aleatorio
+5020=Lista
+5021=Ha cambiado a: 
+5022=Cancelar 
+5023=Borrar 
+5024=Editar 
+5025=El nombre de la lista es el mismo
+5026=El nombre de la lista esta en blanco 
+5027=Introduzca el nombre de la lista 
+5028=Agregar nueva lista 
+5029=Preguntar 
+5030=Eliminar la carpeta o no? 
+5031=Confirmar 
+5032=El nombre est谩 en blanco 
+5033=A帽adido a la lista de canciones
+5034=Radio
+5035=Seleccionar grupo 
+5036=Play
+5037=Seleccione al menos mas de 2 reproductores multimedia
+5038=No se pueden seleccionar 2 o m谩s de 2 reproductores multimedia principales para convertirse en un grupo
+5039=No ha seleccionado el reproductor multimedia 
+5040=Seleccione esta opci贸n para quitar el reproductor multimedia 
+5041=No se ha seleccionado quitar el reproductor multimedia 
+5042=Configurando 
+5043=Borrando鈥�
+5044=Volumen
+5045=Volumen general
+5046=Ajustar volumen 
+5047="QQ music" no se ha instalado en su tel茅fono celular, proceda en el Centro de aplicaciones.
+
+6000=Normal 
+6001=Estado del dispositivo
+6002=piezas
+6003=Dispositivo de control IR actual
+6004=Se ha a帽adido el mando a distancia 
+6005=AC
+6006=TV 
+6007=Ventilador 
+6008=Decodificador
+6009=DVD
+6010=Proyector 
+6011=Personalizado
+6012=IR Control
+6013=Administraci贸n de dispositivos 
+6014=Agregar mando de distancia
+6015=En linea 
+6016=Sin conexi贸n 
+6017=N煤mero de version
+6018=Introduzca el nombre de mando a distancia 
+6019=Recordatorio: Despu茅s de crear el mando a distancia, se puede encontrar y utilizar en Function-Electrical Category{\r\n}
+6020=Boton recomendado
+6021=Introduzca el nombre del bot贸n 
+6022=Siguiente
+6023=Potencia
+6024=Volumen+
+6025=Volumen-
+6026=Channel+
+6027=Channel-
+6028=Subir 
+6029=Bajar
+6030=Izquierda
+6031=Derecha
+6032=Silenciar
+6034=Confirmar
+6035=Reproducir
+6037=Salir 
+6038=Menu
+6039=Pausar
+6040=Volver
+6041=Detener
+6042=Pagina de inicio
+6043=Avance r谩pido 
+6044=Rebobinar 
+6045=Tiempo 
+6046=Copiar funcion de control remoto
+6047=Apunta al centro del mando a distancia y pulsa el mismo bot贸n
+6048=Mando a distancia inteligente
+6049=Agregar bot贸n 
+6050=*Pulsaci贸n larga para la clasificaci贸n personalizada
+6051=Hecho
+6052=Agregado correctmente 
+6053=Se puede clasificar -funcion-operaci贸n electrica y uso 
+6054=Clasificaci贸n
+6055=Nombre del mando a distancia 
+6056=Regi贸n 
+6057=Continuar agregando
+6058=El茅ctrico
+6059=Error al agregar 
+6060=Reintentar
+6061=Hacer coincidir el mando a distancia
+6062=Haga clic en el bot贸n de abajo
+6063=Confirmar si el dispositivo esta respondiendo
+6064=Error de control 
+6065=Control exitoso 
+6066=Encendido 
+6067=Modo de enfriamiento
+6068=
+6069=Temperatura 26掳
+6070=Eliminar dispositivo
+6071=Modificar nombre
+6072=Confirmar eliminaci贸n 
+6073=Cancelar
+6074=El mando a distancia no puede superar los 10 puntos
+6075=El 谩rea donde pertenece el control remoto: 
+6076=Editar informaci贸n
+6077=Actualizaci贸n de la versi贸n 
+6078=El sistema est谩 en mantenimiento ~ Int茅ntelo de nuevo m谩s tarde ~
+6079=Error al obtener datos
+6080=Esta funcion no se admite temporalmente
+6081=Seleccionar banda IR
+6082=
+6083=Baja velocidad
+6084=Interruptor de velocidad del viento
+6085=Alta velocidad 
+6086=Auto
+6087=Temperatura+
+6088=Temperatura-
+6089=Purificador de aire
+6090=Calentador de agua
+6091=Producto no existe
+6092=El dispositivo no existe
+6093=El dispositivo no esta en linea
+6094=El dispositivo de puerta de enlace no existe
+6095=Mas de 30 botondes de adici贸n 
+6000=Renombrar
+6001=Introduzca el nombre
+6002=Xiaodu
+6003=aispeech
+6004=El sistema est谩 en mantenimiento ~ Int茅ntelo de nuevo m谩s tarde ~
+6005=Desvinculado
+6006=Altavoz inteligente
+6007=Controlar contenido
+6008=Error al cagar datos 
+6009=Error al configurar datos 
+6010="Todav铆a no hay altavoz", "Vaya a la aplicaci贸n de terceros para vincular el altavoz inteligente".
+6011=La modificaci贸n de los comentarios no tiene 茅xito
+6012=Quieres desvincularte? 
+6013=Desvinculaci贸n 
+6014=transferir a app de terceros 
+6015=A帽adir altavoces
+7000=Crear automatizaci贸n
+7001=Etidar automatizaci贸n
+7002=Si
+7003=Cuando cumple las siguientes condiciones al mismo tiempo
+7004=Cundo cumple una de las condiciones siguintes
+7005=Continuar con la ejecuci贸n 
+7006=L asiguiente acci贸n 
+7007=M茅todo de reciclaje 
+7008=Ejecutar una vez
+7009=Todos los d铆as
+7010=Cada semana 
+7011=Cada mes
+7012=Guardar
+7013=Mensaje push
+7014=Enviar notificaci贸n 
+7015=Seleccionar la condici贸n 
+7016=Momento 
+7017=Seleccione la condici贸n de tiempo 
+7018=Hora
+7019=Intervalo de tiempo 
+7020=Hora 
+7021=Minuto 
+7022=Segundo 
+7023=Cancelar 
+7024=Seguro 
+7025=*Debe ejecutar la automatizaci贸n que establezca una vez durante el intervalo de tiempo establecido.
+7026=Hora de inicio
+7027=Hora de finalizaci贸n 
+7028=Funci贸n
+7029=Seleccionar condici贸n funcional
+7030=Toda la regi贸n 
+7031=Toda la funci贸n 
+7032=Encendido
+7033=Apagado
+7034=Conmutador 
+7035=Completo
+7036=Agregar ejecuci贸n 
+7037=Lunes 
+7038=Martes
+7039=Mi茅rcoles
+7040=Jueves
+7041=Viernes
+7042=S谩bado
+7043=Domingo 
+7044=Cumplir con la condici贸n 
+7045=Configuraci贸n 
+7046=Nombre
+7047=Cambiar el nombre
+7048=El nombre de la automatizaci贸n ya existe 
+7049=Eliminar automatizaci贸n o no? 
+7050=Agregar escena
+7051=Retraso
+7052=No se puede guardar, int茅ntelo de nuevo
+7053=No se puede eliminar, int茅ntelo de nuevo
+7054=Pausar
+7055=Brillo
+7056=Porcentaje 
+7057=Modo
+7058=Enfriamiento
+7059=Calefacci贸n 
+7060=Autom谩tico
+7061=Deshumidificar 
+7062=Temperatura 
+7063=Velocidad de ventilador 
+7064=D铆a 
+7065=Noche 
+7066=Abandonar 
+7067=General 
+7068=Tiempo 
+7069=No ha configurado la automatizaci贸n, procesa a configurar 
+7070=Nada est谩 aqu铆 
+7071=No se ha establecido la hora de inicio, por favor configurar 
+7072=La hora de finalizaci贸n no se ha establecido, por favor estableza 
+7073=La hora de inicio y la hora de finalizacion no deben ser las mismas
+7074=La hora de inicio no debe ser mayor a la hora de finalizaci贸n 
+7075=La condicion no debe estar en blanco 
+7076=Target no debe estar en blanco 
+7077=La hora no se ha establecido, por favor establezca 
+7078=L a condici贸n o el objetivo no deben estar en blanco 
+7079=L a puerta de enlace esta fuera de l铆nea 
+7080=Salida/Puesta de sol/Mediod铆a
+7081=Amanecer 
+7082=Puesta de sol 
+7083=Mediod铆a 
+7084=A tiempo 
+7085=Avance 
+7086=Minutos
+7087=Cambio exterior 
+7088=Seleccionar condicion de cambio al aire libre
+7089=Temperatura exterior, humedad, cambio de PM2.5
+7090=Cambio de clima (clima urbano) 
+7091=Cambio en el entorno exterior 
+7092=Temperatura superior a 
+7093=Temperatura inferior
+7094=Humedad superior a 
+7095=Humedad por debajo 
+7096=PM2.5 supeior a
+7097=PM2.5 por debajo 
+7098=D铆a soleado
+7099=Nublado 
+7100=
+7101=*Establezca el valor en este rango (1 ~ 100).
+7102=Sin valor establecido 
+7103=Excelente: 0 ~ 35ug/m3
+7104=Bueno: 36 ~ 75ug/m3
+7105=Contaminaci贸n lum铆nica: 76 ~ 115ug/m3
+7106=Contaminaci贸n moderada: 116 ~ 150ug/m3
+7107=Contaminaci贸n intensa: > 150ug/m3
+7108=Fuga/Sin fuga
+7109=Fuga
+7110=Sin fuga
+7111=Fuga de agua/sin fugas de agua
+7112=Fuga de agua 
+7113=Sin fuga de agua 
+7114=Alguien/Nadie
+7115=Alguien
+7116=Nadie
+7117=Abierto/Cerrado
+7118=Activado
+7119=Cerrar
+7120=Funci贸n anti-desmantelamiento
+7121=En linea 
+7122=Fuera de linea 
+7123=Calidad del aire
+7124=Excelente
+7125=Bueno
+7126=Pobre
+7127=Enviar notificaci贸n 
+7128=Contenido de la notificaci贸n 
+7129=(dentro de los 100 caracteres)
+7130=Selecci贸n de cuenta
+7131=Aplicaci贸n push 
+7132=Automatizaci贸n 
+7133=Ejecutado
+7134=Estado de destino
+7135=Ca铆da
+7136=Temperatura
+7137=Humedad 
+7138=PM2.5
+7139=CO2
+7140=TVOC
+7141=Exceder 
+7142=Grave
+7143=Alto 
+7144=Excelencia 
+7145=Seguridad 
+7146=A帽adir seguridad
+7147=Armado 
+7148=Desarmado
+7149=Manualmente
+7150=Inteligente
+7151=Bueno 
+7152=Dejar o Arrivar a un lugar 
+7153=Salir 
+7154=Llegar 
+9000=Inicio sesi贸n con un nuevo n煤mero de tel茅fono celular 
+9001=Inicie sesi贸n con una nueva direcci贸n de correo el茅ctr贸nico 
+9002=Nuevo numero de celular revisado
+9003=Nuevo numero de celular enlazado
+9004=Nueva direcci贸n de correo electr贸nico revisado
+9005=Nueva direcci贸n de correo electr贸nico enlazado 
+9006=El c贸digo de verificaci贸n puede enviarse m谩s tarde, espere.
+9007=Por favor, espere
+9008=Volver 
+9009=El usuario no desea ser nombrado
+9010=Nueva contrase帽a 
+9011=Introduzca la nueva contrase帽a nuevamente
+9012=De acuerdo 
+9013=Acuerdo de servicio 
+9014=Normativa de protecci贸n de la informaci贸n del usuario
+9015=y
+9016=Lea y acepte el Acuerdo de servicio del usuario y las regulaciones de protecci贸n de la informaci贸n del usuario.
+9017=Esta seguro de cerrar sesi贸n?
+9018=Seleccione pais/regi贸n 
+9019=Actualizar ahora
+9020=Ahora no 
+9021=Pa铆s/regi贸n 
+9022=Informaci贸n del servidor 
+9023=Servidor actual 
+9024=*El servidor hace referencia a la base de datos para la nube, sin necesidad alguna, no se recomienda realizar migraci贸n de datos.
+9025=Si es necesaria la migraci贸n de datos, marque
+9026=Introducci贸n a la funci贸n 
+9027=Quejas 
+9028=Actualizaci贸n de la versi贸n 
+9029=(por favor indique "quejas" en el t铆tulo, luego procesaremos en prioridad.)
+9030=Copia realizada
+9031=No hay nada aqu铆 
+9032=Obtener nueva versi贸n 
+9033=脷ltima versi贸n 
+9034=Que puedo hacer por ti? 
+9035=Problema de funci贸n 
+9036=Problema de escena
+9037=Soporte de aplicaciones 
+9038=(Preguntas frecuentes) 
+9039=Compartir y funci贸n 
+9040=Alertas 
+9041=Informaci贸n del sistema 
+9042=Centro de informaci贸n 
+9043=Tenga en cuenta que su n煤mero de cuenta ha iniciado sesi贸n en otro lugar. Si no lo hace usted mismo, cambie la contrase帽a de inmediato.
+9044=Cargado correctamente
+9045=No se puede cargar 
+9046=Revisado correctamente
+9047=La contrase帽a que ha revisado ha entrado en vigor, vuelva a iniciar sesi贸n.
+9048=Iniciar sesion con la contrase帽a del numero de cuenta 
+9049=Contrase帽a incorrecta para muchas veces, 隆el n煤mero de cuenta est谩 bloqueado!
+9050=Verificar la identificaci贸n facial 
+9051=Error al guardar la identificaci贸n facial del usuario 
+9052=La notificaci贸n push de registro esta disponible 
+9053=La notificaci贸n push de registro es anormal 
+9054=Verificaci贸n numerica de contrase帽a 
+9055=Verificaci贸n de gestos 
+9056=A帽o 
+9057=Sin funci贸n regional 
+9058=Guardar o no?
+9059=No compartir ahora 
+9060=Usos-permiso 
+9061=Encuentra tu contrase帽a haciendo clic en "Olvid茅 mi contrase帽a", o int茅ntalo de nuevo en {0} minuto.
+9062=Comprobar 
+9063=Todav铆a tienes {0} veces.
+9064=Altavoz inteligente
+9065=Gesti贸n de datos 
+9066=Comentarios
+9067=Los comentarios no pueden estar en blanco 
+9068=Desea desvincularse? 
+9069=Aviso de propiedad
+10000=Contrasela no v谩lida, vuelva a iniciar sesi贸n 
+10001=Error al solicitar el servidor, int茅ntelo de nuevo m谩s tarde.
+10002=Mantenimiento del sistema, int茅ntalo de nuevo mas tarde 
+10003=No puede iniciar sesi贸n, agregue la residencia al principio.
+10004=El n煤mero de cuenta ya existe
+10005=Env铆as el c贸digo de verificaci贸n con demasiada frecuencia, int茅ntalo de nuevo m谩s tarde.
+10006=Error de firma 
+10007=Sistema ocupado, intentelo de nuevo mas tarde! 
+10008=Contrasea no v谩lida para iniciar sesi贸n 
+10009=El usuario ha sido deshabilitado 
+10010=Error de contrase帽a original 
+10011=El n煤mero de subcuenta ya existe 
+10012=El npumero de subcuenta no existe 
+10013=No esta permitido agregarse como miembro 
+10014=La residencia actual no pertenece al este n煤mero de cuenta 
+10015=El nombre de la residencia ya existe 
+10016=La residencia no existe 
+10017=Error de solicitud, par谩metro anormal! 
+10018=El n煤mero que enlazaste es duplicado 
+10019=Enlazar el gateway primero 
+10020=El gateway no existe 
+10021=El gateway esta fuera de l铆nea
+10022=El dispositivo est谩 fuera de l铆nea 
+10023=Error de control 
+10024=La escena ya existe 
+10025=La automatizaci贸n ya existe 
+10026=Spk no admite esta funci贸n 
+10027=Spk no admite este valor funcional 
+10028=No tienes permiso 
+10029=El destino del dispositivo est谩 duplicado 
+10030=No tiene permiso para el control remoto 
+10031=El dispositivo no debe estar en blanco 
+10032=El usuario no  tiene permiso 
+10033=El dispositivo no existe
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/CAC/DataIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/CAC/DataIcon.png
new file mode 100644
index 0000000..9832d06
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/CAC/DataIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/CAC/JinMaoIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/CAC/JinMaoIcon.png
new file mode 100644
index 0000000..b5e26bf
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/CAC/JinMaoIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/hvaccac_blue.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/hvaccac_blue.png
new file mode 100644
index 0000000..addcd70
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/hvaccac_blue.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/hvaccac_white.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/hvaccac_white.png
new file mode 100644
index 0000000..c63e9e3
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/hvaccac_white.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/sensorhelp_blue.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/sensorhelp_blue.png
new file mode 100644
index 0000000..7e5e4ac
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/sensorhelp_blue.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/sensorhelp_white.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/sensorhelp_white.png
new file mode 100644
index 0000000..448b3c8
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/sensorhelp_white.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/hvaccac.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/hvaccac.png
new file mode 100644
index 0000000..5b8b9fa
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/hvaccac.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/screenpanel.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/screenpanel.png
new file mode 100644
index 0000000..56ba0c5
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/screenpanel.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensorhelp.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensorhelp.png
new file mode 100644
index 0000000..cbb1b1c
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensorhelp.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Panel/PanelEnviBg.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Panel/PanelEnviBg.png
new file mode 100644
index 0000000..d6482d3
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Panel/PanelEnviBg.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Panel/PanelHelpAlarmBgIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Panel/PanelHelpAlarmBgIcon.png
new file mode 100644
index 0000000..72ece8b
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Panel/PanelHelpAlarmBgIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Panel/PanelHelpNormalBgIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Panel/PanelHelpNormalBgIcon.png
new file mode 100644
index 0000000..a55c35e
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Panel/PanelHelpNormalBgIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/Public/MsgIcon/AnswerIcon.png b/HDL-ON_iOS/Resources/Phone/Public/MsgIcon/AnswerIcon.png
new file mode 100644
index 0000000..89096a9
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/Public/MsgIcon/AnswerIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/Public/MsgIcon/CallIcon.png b/HDL-ON_iOS/Resources/Phone/Public/MsgIcon/CallIcon.png
new file mode 100644
index 0000000..843101e
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/Public/MsgIcon/CallIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/Public/MsgIcon/HangUpIcon.png b/HDL-ON_iOS/Resources/Phone/Public/MsgIcon/HangUpIcon.png
new file mode 100644
index 0000000..e516074
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/Public/MsgIcon/HangUpIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/Public/dialogBg2.png b/HDL-ON_iOS/Resources/Phone/Public/dialogBg2.png
new file mode 100644
index 0000000..2c28530
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/Public/dialogBg2.png
Binary files differ
diff --git a/HDL_ON/Common/HDLCommon.cs b/HDL_ON/Common/HDLCommon.cs
index 88ca761..28ec31e 100644
--- a/HDL_ON/Common/HDLCommon.cs
+++ b/HDL_ON/Common/HDLCommon.cs
@@ -337,12 +337,33 @@
                             eSVideoInfo.Lc_DeviceId = json["deviceId"].ToString();
                             eSVideoInfo.DeviceName = json["deviceName"].ToString();
                             eSVideoInfo.deviceSipAccount = json["deviceSipAccount"].ToString();
-                            eSVideoInfo.spk = json["spk"].ToString();
 
-                            //ShowAlert("鐙勮�愬厠闂ㄥ彛鏈哄懠鍙�");
-                            //鎵撳紑鍛煎彨椤甸潰
-                            HDLLinphone.Current.ShowESVideoIntercom(eSVideoInfo);
-                            return;
+                            if (json.ContainsKey("spk"))
+                            {
+                                if (json["spk"].ToString() == "door.gate")
+                                {
+                                    new PublicAssmebly().TipLinphoneCall("\""+ eSVideoInfo.DeviceName + "\"鍛煎彨", eSVideoInfo);
+
+                                    //HDLLinphone.Current.ShowESVideoIntercom(eSVideoInfo,true);
+                                    return;
+                                }
+                                else
+                                {
+                                    //HDL Linphone 鐙勮�愬厠
+                                    //ShowAlert("鐙勮�愬厠闂ㄥ彛鏈哄懠鍙�");
+                                    //鎵撳紑鍛煎彨椤甸潰
+                                    HDLLinphone.Current.ShowESVideoIntercom(eSVideoInfo,false);
+                                    return;
+                                }
+                            }
+                                else
+                                {
+                                    //HDL Linphone 鐙勮�愬厠
+                                    //ShowAlert("鐙勮�愬厠闂ㄥ彛鏈哄懠鍙�");
+                                    //鎵撳紑鍛煎彨椤甸潰
+                                    HDLLinphone.Current.ShowESVideoIntercom(eSVideoInfo,false);
+                                    return;
+                                }
                         }
 
                         //3.鎵撳紑鍛煎彨椤甸潰
@@ -405,13 +426,14 @@
             //璐﹀彿鍦ㄥ埆澶勭櫥闄嗭紝琚涪涓嬬嚎 璺宠浆鍒扮櫥褰曢〉闈�
             new Alert(Language.StringByID(StringId.Tip), Language.StringByID(StringId.LoggedOnOtherDevices), Language.StringByID(StringId.Close)).Show();
 
-            Logout();
+            Logout(false);
         }
 
         /// <summary>
         /// 閫�鍑虹櫥褰曟搷浣�
+        /// signOutPush 鏄惁鍒犻櫎鎺ㄩ�乼oken
         /// </summary>
-        public void Logout()
+        public void Logout(bool signOutPush = true)
         {
             //鍔犺浇Loading鏁堟灉
             var waitPage = new Loading();
@@ -422,8 +444,11 @@
             {
                 try
                 {
-                    //2.娉ㄩ攢鎺ㄩ��
-                    new HttpServerRequest().SignOutPush();
+                    if (signOutPush)
+                    {
+                        //2.娉ㄩ攢鎺ㄩ��
+                        new HttpServerRequest().SignOutPush();
+                    }
                     //3.璺宠浆鐧诲綍椤甸潰
                     UserInfo.Current.LastTime = DateTime.MinValue;
                     UserInfo.Current.SaveUserInfo();
diff --git a/HDL_ON/Common/ImageUtlis.cs b/HDL_ON/Common/ImageUtlis.cs
index 918483d..fe739d5 100644
--- a/HDL_ON/Common/ImageUtlis.cs
+++ b/HDL_ON/Common/ImageUtlis.cs
@@ -466,6 +466,47 @@
             }
         }
 
+
+
+        /// <summary>
+        /// 涓嬭浇鐢ㄦ埛澶村儚
+        /// </summary>
+        /// <param name="imageUrl"></param>
+        /// <param name="ignoreCache">蹇界暐缂撳瓨</param>
+        /// <param name="regionUrl">鎸囧畾鏈嶅姟鍣ㄥ煙鍚�,浼犵┖涓轰娇鐢ㄥ綋鍓嶇敤鎴峰湴鍧�</param>
+        /// <returns></returns>
+        public byte[] DownImageByImageUrl(string imageUrl, bool ignoreCache = false)
+        {
+            try
+            {
+                if (string.IsNullOrEmpty(imageUrl)) return null;
+
+                byte[] imageBytes;
+                if (!ignoreCache && Exists(imageUrl))
+                {
+                    //鏈湴鏈夌紦瀛�
+                    imageBytes = ReadFile(imageUrl);
+                }
+                else
+                {
+                    //涓嬭浇
+                    imageBytes = HttpUtil.HttpsDownload(imageUrl);
+                    if (imageBytes != null)
+                    {
+                        //淇濆瓨鍒版湰鍦�
+                        WriteFileByBytes(imageUrl, imageBytes);
+                    }
+
+                }
+                return imageBytes;
+            }
+            catch
+            {
+                return null;
+            }
+        }
+
+
         #endregion
     }
 }
diff --git a/HDL_ON/Common/R.cs b/HDL_ON/Common/R.cs
index b290247..ac65982 100644
--- a/HDL_ON/Common/R.cs
+++ b/HDL_ON/Common/R.cs
@@ -9,6 +9,47 @@
         /// </summary>
         public const int VisitorManage = 533;
         /// <summary>
+        /// 寰樺緤鎶ヨ
+        /// </summary>
+        public const int WanderingAlarm = 542;
+        /// <summary>
+        /// 鐩戞帶涓�
+        /// </summary>
+        public const int Monitoring = 541;
+        /// <summary>
+        /// 鎶ヨ涓�
+        /// </summary>
+        public const int InAlarming = 540;
+        /// <summary>
+        /// 鏅鸿兘闈㈡澘
+        /// </summary>
+        public const int SmartPanel = 539;
+        /// <summary>
+        /// 鍗曚綅
+        /// </summary>
+        public const int Uint = 538;
+        /// <summary>
+        /// 婀垮害缁熻鍥�
+        /// </summary>
+        public const int HumidityStatistics = 537;
+
+        /// <summary>
+        /// 娓╁害缁熻鍥�
+        /// </summary>
+        public const int TemperatureStatistics = 536;
+        /// <summary>
+        /// 闇茬偣娓╁害
+        /// </summary>
+        public const int DewPointTemp = 535;
+        /// <summary>
+        /// 鏁版嵁
+        /// </summary>
+        public const int Data = 534;
+        /// <summary>
+        /// 24灏忔椂缁熻鍥�
+        /// </summary>
+        public const int StatisticalChart24Hour = 533;
+        /// <summary>
         /// 璁惧绂荤嚎涓紝鏆傛椂鏃犳硶鎿嶄綔
         /// </summary>
         public const int DeviceOfflineCannotOption = 532;
@@ -2707,7 +2748,14 @@
         /// 鍒拌揪
         /// </summary>
         public const int daoda = 7154;
-
+        /// <summary>
+        /// 姹傛晳/姝e父
+        /// </summary>
+        public const int qiujiuandzhengchang = 7155;
+        /// <summary>
+        /// 姹傛晳
+        /// </summary>
+        public const int qiujiu = 7156;
 
 
         #region LE鏂板
diff --git a/HDL_ON/Common/UserInfo.cs b/HDL_ON/Common/UserInfo.cs
index 5ba0686..30e8267 100644
--- a/HDL_ON/Common/UserInfo.cs
+++ b/HDL_ON/Common/UserInfo.cs
@@ -322,5 +322,34 @@
             return path + "/";
         }
 
+
+        /// <summary>
+        /// 鎺ㄩ�佹秷鎭褰� 
+        /// </summary>
+        public JPushMessageInfo pushMessageInfo = new JPushMessageInfo();
+        /// <summary>
+        /// 鏄惁宸茬粡鍔犺浇鍛煎彨寮圭獥
+        /// </summary>
+        public bool alreadyShowCallInDialog = false;
+
+        //[Newtonsoft.Json.JsonIgnore]
+        //public string PushMesTitle;
+        //[Newtonsoft.Json.JsonIgnore]
+        //public string PushMesMessage;
+        //[Newtonsoft.Json.JsonIgnore]
+        //public string PushMesExtras;
+        //[Newtonsoft.Json.JsonIgnore]
+        //public string PushMesHomeId;
+        //[Newtonsoft.Json.JsonIgnore]
+        //public string pushMesMessageType;
+        //[Newtonsoft.Json.JsonIgnore]
+        //public string pushMesExpantContent;
+
+        [Newtonsoft.Json.JsonIgnore]
+        public bool inVideo = false;
+        [Newtonsoft.Json.JsonIgnore]
+        public DateTime inCall = DateTime.MinValue;
+
+
     }
 }
\ No newline at end of file
diff --git a/HDL_ON/DAL/DriverLayer/Control.cs b/HDL_ON/DAL/DriverLayer/Control.cs
index f14125b..bd24f80 100644
--- a/HDL_ON/DAL/DriverLayer/Control.cs
+++ b/HDL_ON/DAL/DriverLayer/Control.cs
@@ -460,6 +460,7 @@
                         var sendBytes = Ins.ConvertSendBodyData(CommunicationTopic.ct.ControlFunctionTopic, functionControlDataJson);
                         new Control_Udp().SendLocalHdlLinkData(sendBytes, functionControlDataObj.id,resend);
                         MainPage.Log($"鏈湴閫氳 鍙戦�丠DL-Link鏁版嵁:{functionControlDataJson}");
+                        //Control.Ins.MsgInfoList.Add($"鏈湴閫氳 鍙戦�丠DL-Link鏁版嵁:{functionControlDataJson}"+"\r\n");
                     }
                 }
                 //杩滅▼閫氳
@@ -666,7 +667,7 @@
                  gatewayId = DB_ResidenceData.Instance.HomeGateway.gatewayId,
                   sid = securityAlarm.sid, status = state, userSecurityId = securityAlarm.userSecurityId
                 } });
-                MainPage.Log($"瀹夐槻鎺у埗缁撴灉:{result.Code}");
+                MainPage.Log($"瀹夐槻鎺у埗缁撴灉:code锛歿result.Code}锛沵sg锛歿result.message}");
             }
             else
             {
@@ -951,6 +952,7 @@
         /// <summary>
         /// 鏇存柊璁惧鐘舵��
         /// A鍗忚鏁版嵁
+        /// Tag Link鐘舵�佸鐞�
         /// </summary>
         /// <param name="updateBytes"></param>
         public void UpdataFunctionStatus(string revString, byte[] usefulBytes,bool isCloudData = false)
@@ -1065,6 +1067,10 @@
                                 RollingShutterPage.UpdataState(localFunction);
                                 break;
                             case SPK.CurtainShades:
+                                break;
+                            case SPK.HvacCac:
+                                Stan.HdlDeviceStatuPushLogic.Current.UpdateDeviceStatu(updateTemp.sid, updateTemp.status);
+                               
                                 break;
                             case SPK.AcStandard:
                             case SPK.HvacAC:
@@ -1190,6 +1196,7 @@
                             case SPK.AirFreshStandard:
                             case SPK.HvacAirFresh:
                             case SPK.SensorGas:
+                            case SPK.SensorHelp:
                                 //璁惧鐘舵�佹帹閫�
                                 //鐘舵�佹洿鏂�
                                 Stan.HdlDeviceStatuPushLogic.Current.UpdateDeviceStatu(updateTemp.sid, updateTemp.status);
diff --git a/HDL_ON/DAL/Mqtt/MqttClient.cs b/HDL_ON/DAL/Mqtt/MqttClient.cs
index 2adbeba..1f26a36 100644
--- a/HDL_ON/DAL/Mqtt/MqttClient.cs
+++ b/HDL_ON/DAL/Mqtt/MqttClient.cs
@@ -357,20 +357,20 @@
                                 {
                                     try
                                     {
-                                        var mMes = Encoding.UTF8.GetString(e.ApplicationMessage.Payload);
-                                        Newtonsoft.Json.Linq.JObject pairs = Newtonsoft.Json.Linq.JObject.Parse(mMes);
-                                        var pairSid = pairs.GetValue("sid").ToString();
-                                        var pairOnline = pairs.GetValue("online");
-                                        if (!string.IsNullOrEmpty(pairSid.ToString()))
-                                        {
-                                            var function_online = FunctionList.List.Functions.Find((obj) => obj.sid == pairSid);
-                                            if (function_online != null){
-                                                function_online.online = (bool)pairOnline;
-                                                HomePage.LoadEvent_RefreshDevcieOnline(function_online);
-                                                FunctionPage.UpdataOnline(function_online);
-                                                RoomPage.UpdataOnline(function_online);
-                                            }
-                                        }
+                                        //var mMes = Encoding.UTF8.GetString(e.ApplicationMessage.Payload);
+                                        //Newtonsoft.Json.Linq.JObject pairs = Newtonsoft.Json.Linq.JObject.Parse(mMes);
+                                        //var pairSid = pairs.GetValue("sid").ToString();
+                                        //var pairOnline = pairs.GetValue("online");
+                                        //if (!string.IsNullOrEmpty(pairSid.ToString()))
+                                        //{
+                                        //    var function_online = FunctionList.List.Functions.Find((obj) => obj.sid == pairSid);
+                                        //    if (function_online != null){
+                                        //        function_online.online = (bool)pairOnline;
+                                        //        HomePage.LoadEvent_RefreshDevcieOnline(function_online);
+                                        //        FunctionPage.UpdataOnline(function_online);
+                                        //        RoomPage.UpdataOnline(function_online);
+                                        //    }
+                                        //}
 
                                     }
                                     catch(Exception ex)
@@ -511,12 +511,15 @@
                                 }
                                 #endregion
                                 //A缃戝叧璁惧鐘舵��-鍖呭惈娑傞甫璁惧
+                                //Tag 缃戠粶鐘舵�佽В鏋�
                                 else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/thing/property/send")
                                 {
                                     var bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, tuyaEncryptKey);
                                     var revString = Encoding.UTF8.GetString(bytes);
                                     MainPage.Log($"mqtt 鐘舵�佹洿鏂�:{revString}");
                                     Control.Ins.UpdataFunctionStatus(revString, null, true);
+                                    //Control.Ins.MsgInfoList.Add($"mqtt 鐘舵�佹洿鏂�:{revString}");
+
                                     //Control.Ins.MsgInfoList.Add(revString + "\r\n");
                                 }
                                 //涓�绔彛鏁版嵁瑙f瀽
diff --git a/HDL_ON/DAL/Server/HttpServerRequest.cs b/HDL_ON/DAL/Server/HttpServerRequest.cs
index 8efd6e5..4e3ed71 100644
--- a/HDL_ON/DAL/Server/HttpServerRequest.cs
+++ b/HDL_ON/DAL/Server/HttpServerRequest.cs
@@ -46,13 +46,17 @@
         /// <param name="deviceId">璁惧ID</param>
         /// <param name="deviceKey">鍔熻兘鏌ヨ绫诲瀷锛歱m25</param>
         /// <returns></returns>
-        public ResponsePackNew GetSensorHistory(string qType, string deviceId, string deviceKey)
+        public ResponsePackNew GetSensorHistory(string qType, string deviceId, string deviceKey,string time = "")
         {
             Dictionary<string, object> d = new Dictionary<string, object>();
             d.Add("type", qType);
             d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
             d.Add("deviceId", deviceId);
             d.Add("key", deviceKey);
+            if(time!= "")
+            {
+                d.Add("time", time);
+            }
 
             var requestJson = HttpUtil.GetSignRequestJson(d);
             return HttpUtil.RequestHttpsPost(NewAPI.Api_Post_EnvironmentalSensorHistoricalData, requestJson);
@@ -1030,10 +1034,10 @@
 #endif
                 //鏄惁鐢熶骇妯″紡
                 bool isProduce = true;
-#if DEBUG
-                isProduce = true;
-#endif
-
+                if (HttpUtil.GlobalRequestHttpsHost == "https://test-gz.hdlcontrol.com")
+                {
+                    isProduce = false;
+                }
                 if (string.IsNullOrEmpty(OnAppConfig.Instance.PushDeviceToken))
                 {
                     Utlis.WriteLine("PushDeviceToken 涓虹┖");
@@ -2624,6 +2628,23 @@
             var pack = HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_FL_Check, requestJson);
             return pack;
         }
+        /// <summary>
+        /// 鑾峰彇闂ㄥ彛鏈哄緲寰婃姤璀︽暟鎹�
+        /// </summary>
+        /// <param name="deviceId"></param>
+        /// <returns></returns>
+        public ResponsePackNew GetAlarmRecords(string deviceId,string alarmType = "PROWLER_ALARM")
+        {
+            Dictionary<string, object> d = new Dictionary<string, object>();
+            d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
+            d.Add("deviceId", deviceId);
+            d.Add("alarmType", alarmType);
+            var requestJson = HttpUtil.GetSignRequestJson(d);
+            var pack = HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_ALARM_RECORDS, requestJson);
+            return pack;
+
+        }
+
         #endregion
 
         #region 鈻� 闂ㄩ攣鐩稿叧____________________________
diff --git a/HDL_ON/DAL/Server/HttpUtil.cs b/HDL_ON/DAL/Server/HttpUtil.cs
index 72fa068..ce16936 100644
--- a/HDL_ON/DAL/Server/HttpUtil.cs
+++ b/HDL_ON/DAL/Server/HttpUtil.cs
@@ -31,9 +31,9 @@
         /// 鐗规畩鎺ュ彛璇锋眰瓒呮椂鏃堕棿
         /// </summary>
         public const int TIME_OUT_LONG = 20;
-        /////// <summary>
-        /////// Bearer 鏆傛椂璁句负绌猴紝浠庣櫥闄嗘垚鍔熺殑杩斿洖鐨刪eaderPrefix鍙傛暟鍔ㄦ�佽幏鍙�
-        /////// </summary>
+        ///// <summary>
+        ///// Bearer 鏆傛椂璁句负绌猴紝浠庣櫥闄嗘垚鍔熺殑杩斿洖鐨刪eaderPrefix鍙傛暟鍔ㄦ�佽幏鍙�
+        ///// </summary>
         //public const string TOKEN_BEARER = "Bearer ";
 
         #endregion
diff --git a/HDL_ON/DAL/Server/NewAPI.cs b/HDL_ON/DAL/Server/NewAPI.cs
index d1d23bb..b569143 100644
--- a/HDL_ON/DAL/Server/NewAPI.cs
+++ b/HDL_ON/DAL/Server/NewAPI.cs
@@ -668,6 +668,21 @@
         /// 鍔ㄦ�佸瘑鐮�/浜岀淮鐮佸紑閿�
         /// </summary>
         public const string API_POST_FL_QRcode = "http://112.74.164.111:180/api.php/Device/setdynamicpwd";
+        /// <summary>
+        /// 涓存椂瀵嗙爜
+        /// 浜岀淮鐮�
+        /// </summary>
+        public const string API_Post_Temporary_Password = "/home-wisdom/app/freeview/temppwd/add";
+        /// <summary>
+        /// 鑾峰彇闂ㄧ浜岀淮鐮�
+        /// </summary>
+        public const string API_POST_OwnerQRCode = "/community-wisdom/doorDevice/getOwnerQRCode";
+        /// <summary>
+        /// 寰樺緤鎶ヨ
+        /// </summary>
+        public const string API_POST_ALARM_RECORDS = "/home-wisdom/app/device/alarmRecords/listByPage";
+                                                      
+
         #endregion
 
 
diff --git a/HDL_ON/DAL/Server/NewApiRes.cs b/HDL_ON/DAL/Server/NewApiRes.cs
index a3973e3..26e6e40 100644
--- a/HDL_ON/DAL/Server/NewApiRes.cs
+++ b/HDL_ON/DAL/Server/NewApiRes.cs
@@ -1507,7 +1507,7 @@
         /// <summary>
         /// 浣忓畢ID
         /// </summary>
-        public string homeId;
+        public string homeId ;
         /// <summary>
         /// 闄勫姞鍐呭
         /// </summary>
@@ -1516,6 +1516,8 @@
         ///  淇℃伅绫诲瀷
         /// </summary>
         public string messageType;
+
+        public string spk;
     }
 
     /// <summary>
diff --git a/HDL_ON/DAL/ThirdPartySdk/ESOnVideo.cs b/HDL_ON/DAL/ThirdPartySdk/ESOnVideo.cs
index dd1c235..d9b9d70 100644
--- a/HDL_ON/DAL/ThirdPartySdk/ESOnVideo.cs
+++ b/HDL_ON/DAL/ThirdPartySdk/ESOnVideo.cs
@@ -163,7 +163,7 @@
             else if (interphoneType == InterphoneType.HDL.ToString())
             {
                 //HDLLinphone 鐙勮�愬厠
-                HDLLinphone.Current.ShowESVideoMonitor(mESVideoInfo);
+                HDLLinphone.Current.ShowESVideoMonitor(mESVideoInfo,false);
             }
             else
             {
@@ -173,7 +173,7 @@
           
 
 #endif
-        }
+            }
 
         /// <summary>
         /// 琚懠鍙〉闈�
diff --git a/HDL_ON/DAL/ThirdPartySdk/HDLLinphone.cs b/HDL_ON/DAL/ThirdPartySdk/HDLLinphone.cs
index 04910cd..62b7c8e 100644
--- a/HDL_ON/DAL/ThirdPartySdk/HDLLinphone.cs
+++ b/HDL_ON/DAL/ThirdPartySdk/HDLLinphone.cs
@@ -103,6 +103,7 @@
             HDLLinphoneKit.Instance.InitLinphone(Application.Activity);
             //璁剧疆鏀跺埌鏉ョ數鍚庛�佹槸鍚﹂渶鑷姩璺宠浆鍛煎彨椤甸潰鏂规
             HDLLinphoneKit.Instance.AutoJumpCallView = IsAutoJumpCallView;
+            //HDLLinphoneKit.Instance.HangUp();//鎸傛柇
             //璁剧疆Listener鐩戝惉
             setOnHDLLinphoneCallListener();
 #endif
@@ -201,8 +202,6 @@
         {
             try
             {
-
-
                 //鍏堟竻绌哄懠鍙拰鐩戣璁惧淇℃伅
                 if (clearCallInfo)
                 {
@@ -376,13 +375,14 @@
         }
         #endregion
 
-     
+
         #region 鈻�  --  璺宠浆鐩戞帶椤甸潰_______________________________
         /// <summary>
         /// 璺宠浆鐩戞帶椤甸潰
         /// </summary>
         /// <param name="mESVideoInfo"></param>
-        public void ShowESVideoMonitor(ESVideoInfo mESVideoInfo)
+        /// <param name="enableMic">鏄惁鎵撳紑楹﹀厠椋�</param>
+        public void ShowESVideoMonitor(ESVideoInfo mESVideoInfo,bool enableMic,bool isCallIn = false)
         {
             InitLinphone();
             //sip璐﹀彿涓虹┖
@@ -400,6 +400,25 @@
             mHDLCallVideoInfo.DeviceSipAccount = mESVideoInfo.deviceSipAccount;//鐩戣涓诲姩鍛煎彨闂ㄥ彛鏈烘椂鐢ㄥ埌
             InitCallInfo(mHDLCallVideoInfo);
 
+            if (isCallIn)
+            {
+#if __IOS__
+#else
+                HDLLinphoneKit.Instance.HangUp();
+#endif
+            }
+            else
+            {
+                openMonitorPage(enableMic);
+            }
+        }
+
+        /// <summary>
+        /// 鎵撳紑鐩戣鐣岄潰
+        /// </summary>
+        void openMonitorPage(bool enableMic)
+        {
+
 #if __IOS__
 
             HDLLinPhoneSDK.Instance().CallWithUserName(mHDLCallVideoInfo.DeviceSipAccount, mHDLCallVideoInfo.DeviceName);
@@ -410,19 +429,26 @@
             //2.璺宠浆鎵撳紑鐩戞帶椤甸潰
             var intent = new Intent(Shared.Application.Activity, typeof(Com.Hdl.Hdllinphonesdk.Activity.HDLLinphoneMonitorActivity)); ;
             intent.PutExtra(HDLLinphoneKit.KeyTitleName, mHDLCallVideoInfo.DeviceName);//浼犲叆璁惧鍚嶇О涓烘樉绀烘爣棰�
+            intent.PutExtra(HDLLinphoneKit.Enablemic, enableMic);//鏄惁鎵撳紑楹﹀厠椋�
             Shared.Application.Activity.StartActivity(intent);
+
+
+
 #endif
 
         }
-        #endregion
 
 
-        #region 鈻�  --  璺宠浆鍛煎彨椤甸潰_______________________________
+#endregion
+
+
+#region 鈻�  --  璺宠浆鍛煎彨椤甸潰_______________________________
         /// <summary>
         /// 鏀跺埌鎺ㄩ�侊紝鍚庡垽鏂懠鍙綇瀹呮槸鍚︿负褰撳墠浣忓畢锛屼笉鏄殑璇濋噸鏂拌幏鍙朣IP璐﹀彿骞剁櫥褰�
         /// </summary>
         /// <param name="mESVideoInfo"></param>
-        public void ShowESVideoIntercom(ESVideoInfo mESVideoInfo)
+        /// <param name="isHdlLinphone">鏄惁鏄嚜鐮斿彲瑙嗗璁�</param>
+        public void ShowESVideoIntercom(ESVideoInfo mESVideoInfo,bool isHdlLinphone)
         {
             InitLinphone();
 
@@ -436,26 +462,36 @@
             mHDLCallVideoInfo.spk = mESVideoInfo.spk;
             InitCallInfo(mHDLCallVideoInfo);
 
-            //褰撳墠鍛煎彨鏉ョ數鐨勪綇瀹呭拰涔嬪墠娉ㄥ唽鐧诲綍鐨勪綇瀹呬竴鑷寸殑鎯呭喌涓�
-            if (currentHDLSipInfo != null && currentHDLSipInfo.homeId == mESVideoInfo.HomeId)
+            if (isHdlLinphone)
             {
-                Utlis.WriteLine("CALL 鏀跺埌鎺ㄩ�� 鎺ㄩ�佷綇瀹呭拰涔嬪墠娉ㄥ唽鐧诲綍鐨勪綇瀹呬竴鑷�");
-                CheckCallStateAndGotoPage();
-            }
-            else
-            {
-                //娉ㄦ剰锛氫箣鍓嶆病鐧诲綍SIP璐﹀彿鎴栬�呬綇瀹呬笉涓�鑷寸殑鎯呭喌涓嬮渶瑕侀噸鏂拌幏鍙朣IP璐﹀彿
-                //鑾峰彇鍛煎彨浣忓畢鐨凷IP璐﹀彿骞剁櫥褰�
-                Utlis.WriteLine("CALL 鏀跺埌鎺ㄩ�� 鍏朵粬浣忓畢锛岄噸鏂拌幏鍙栧懠鍙綇瀹呯殑SIP璐﹀彿骞剁櫥褰�");
-                new Thread(() =>
+                //褰撳墠鍛煎彨鏉ョ數鐨勪綇瀹呭拰涔嬪墠娉ㄥ唽鐧诲綍鐨勪綇瀹呬竴鑷寸殑鎯呭喌涓�
+                if (currentHDLSipInfo != null && currentHDLSipInfo.homeId == mESVideoInfo.HomeId)
                 {
-                    GetHDLSipInfoAndInitSDK(mESVideoInfo.HomeId, false);
-                })
-                { IsBackground = false }.Start();
+                    Utlis.WriteLine("CALL 鏀跺埌鎺ㄩ�� 鎺ㄩ�佷綇瀹呭拰涔嬪墠娉ㄥ唽鐧诲綍鐨勪綇瀹呬竴鑷�");
+                    CheckCallStateAndGotoPage(true);
+                }
+            }
+            else {
+                //褰撳墠鍛煎彨鏉ョ數鐨勪綇瀹呭拰涔嬪墠娉ㄥ唽鐧诲綍鐨勪綇瀹呬竴鑷寸殑鎯呭喌涓�
+                if (currentHDLSipInfo != null && currentHDLSipInfo.homeId == mESVideoInfo.HomeId)
+                {
+                    Utlis.WriteLine("CALL 鏀跺埌鎺ㄩ�� 鎺ㄩ�佷綇瀹呭拰涔嬪墠娉ㄥ唽鐧诲綍鐨勪綇瀹呬竴鑷�");
+                    CheckCallStateAndGotoPage();
+                }
+                else
+                {
+                    //娉ㄦ剰锛氫箣鍓嶆病鐧诲綍SIP璐﹀彿鎴栬�呬綇瀹呬笉涓�鑷寸殑鎯呭喌涓嬮渶瑕侀噸鏂拌幏鍙朣IP璐﹀彿
+                    //鑾峰彇鍛煎彨浣忓畢鐨凷IP璐﹀彿骞剁櫥褰�
+                    Utlis.WriteLine("CALL 鏀跺埌鎺ㄩ�� 鍏朵粬浣忓畢锛岄噸鏂拌幏鍙栧懠鍙綇瀹呯殑SIP璐﹀彿骞剁櫥褰�");
+                    new Thread(() =>
+                    {
+                        GetHDLSipInfoAndInitSDK(mESVideoInfo.HomeId, false);
+                    })
+                    { IsBackground = false }.Start();
 
-                //
-                CheckCallStateAndGotoPage();
-
+                    //
+                    CheckCallStateAndGotoPage();
+                }
             }
 
         }
@@ -464,7 +500,7 @@
         /// 妫�娴嬫潵鐢电姸鎬侊紝鍒ゆ柇鏄惁椹笂鎵撳紑鍛煎彨椤甸潰锛屽鏋滆繕娌℃潵鐢靛垯寮�鍚嚎绋嬫娴嬬瓑寰�
         /// </summary>
         /// <param name="mESVideoInfo"></param>
-        public void CheckCallStateAndGotoPage()
+        public void CheckCallStateAndGotoPage(bool isHdlLinphone = false)
         {
             if (mHDLCallVideoInfo.spk == "door.gate")
             {
diff --git a/HDL_ON/Entity/Function/Function.cs b/HDL_ON/Entity/Function/Function.cs
index b64d1e6..a142825 100644
--- a/HDL_ON/Entity/Function/Function.cs
+++ b/HDL_ON/Entity/Function/Function.cs
@@ -88,7 +88,7 @@
         {
             var attrs = new List<string>();
 
-            foreach(var attr in  attributes)
+            foreach (var attr in attributes)
             {
                 attrs.Add(attr.key);
             }
@@ -111,12 +111,34 @@
         /// <returns></returns>
         public string GetAttrState(string key)
         {
+            //涓�绾ф煡璇eyValue鍊�
             var attrState = attributes.Find((s) => s.key == key.ToString());
-            if (attrState == null || string.IsNullOrEmpty(attrState.state))
+            if (attrState == null)
             {
                 return "0";
             }
+            if (string.IsNullOrEmpty(attrState.state))
+            {
+                //浜岀骇鏌ヨkeyValue鍊�
+                return GetOriginalState(key);
+            }
             return attrState.state;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鍒濆鐘舵��
+        /// 榛樿鍊硷細0
+        /// </summary>
+        /// <param name="key">璇泙瀹氫箟鐨勫睘鎬у��</param>
+        /// <returns></returns>
+        public string GetOriginalState(string key)
+        {
+            var originalState = status.Find((s) => s.key == key.ToString());
+            if (originalState == null || string.IsNullOrEmpty(originalState.value))
+            {
+                return "0";
+            }
+            return originalState.value;
         }
         /// <summary>
         /// 璁剧疆灞炴�х姸鎬�
@@ -327,6 +349,26 @@
         public List<string> roomIds = new List<string>();
 
         /// <summary>
+        /// 瀛樺偍灞炴�ч厤缃�
+        /// 鐜浼犳劅鍣ㄧ殑绛夌骇
+        /// </summary>
+        public List<AttrKeyConfig> attrKeyConfigs = new List<AttrKeyConfig>();
+
+        public List<AttrKeyConfig> GetAttrKeyConfigs(string key)
+        {
+            if (attrKeyConfigs.Count == 0)
+            {
+                switch (key)
+                {
+                    case "pm2.5":
+
+                        break;
+                }
+            }
+            return attrKeyConfigs;
+        }
+
+        /// <summary>
         /// bus鍗忚鏁版嵁鏍煎紡
         /// 浣跨敤A鍗忚鎺у埗鏃讹紝鏀瑰睘鎬т负绌�
         /// </summary>
@@ -339,6 +381,11 @@
         /// 鏄惁鍦ㄧ嚎
         /// </summary>
         public bool online = true;
+
+        /// <summary>
+        /// 鐜闈㈡澘 缁戝畾鐨� 璁惧鐩爣sid鍒楄〃
+        /// </summary>
+        public List<string> targetSids = new List<string>();
         /// <summary>
         /// 浜戠鏁版嵁鍒涘缓鐨勬椂闂�
         /// </summary>
@@ -381,7 +428,7 @@
                         _trait_on_off.curValue = "off";
                     }
                 }
-                if(_trait_on_off.curValue.ToString() != "on"&& _trait_on_off.curValue.ToString() != "off" && _trait_on_off.curValue.ToString() != "stop")
+                if (_trait_on_off.curValue.ToString() != "on" && _trait_on_off.curValue.ToString() != "off" && _trait_on_off.curValue.ToString() != "stop")
                 {
                     _trait_on_off.curValue = "off";
                 }
@@ -448,7 +495,7 @@
                         collect = !collect;
                         IMessageCommon.Current.ShowErrorInfoAlter(result);
                     });
-                }else
+                } else
                 {
                     Application.RunOnMainThread(() =>
                     {
@@ -473,7 +520,7 @@
                 }
                 else
                 {
-                    result = ApiUtlis.Ins.HttpRequest.UnbindDeviceToRoom(deviceId,roomId);
+                    result = ApiUtlis.Ins.HttpRequest.UnbindDeviceToRoom(deviceId, roomId);
                 }
                 //鎻愮ず閿欒
                 if (result != StateCode.SUCCESS)
@@ -516,9 +563,9 @@
                 {
                     roomNameList += ",";
                 }
-                roomNameList += findRoom.floorName +"-"+ findRoom.roomName;
+                roomNameList += findRoom.floorName + "-" + findRoom.roomName;
             }
-            if (roomNameList == "" )
+            if (roomNameList == "")
             {
                 roomNameList = Language.StringByID(StringId.WholeZone);
             }
@@ -631,14 +678,14 @@
                     case FunctionAttributeKey.Percent:
                     case FunctionAttributeKey.CCT:
                     case FunctionAttributeKey.RGB:
-                    //case FunctionAttributeKey.FadeTime:
+                        //case FunctionAttributeKey.FadeTime:
                         if (attr.curValue.ToString() == "{}")
                         {
                             if (attr.key == FunctionAttributeKey.OnOff)
                             {
                                 attr.curValue = "off";
                             }
-                            else if (attr.key == FunctionAttributeKey.Mode )
+                            else if (attr.key == FunctionAttributeKey.Mode)
                             {
                                 if (DB_ResidenceData.Instance.GatewayType == 0)
                                 {
@@ -656,7 +703,7 @@
                                     }
                                 }
                             }
-                            else 
+                            else
                             {
                                 attr.curValue = "0";
                             }
@@ -709,7 +756,7 @@
             return sendDataObj;
         }
 
-        public AlinkDoorlockObj GetGatewayAlinkDoorlockData(string userId,string extStr)
+        public AlinkDoorlockObj GetGatewayAlinkDoorlockData(string userId, string extStr)
         {
             var sendDataObj = new AlinkDoorlockObj();
             sendDataObj.id = Control.Ins.msg_id.ToString();
@@ -1140,7 +1187,7 @@
                 try
                 {
                     return Convert.ToByte(loopId, 16);
-                }catch
+                } catch
                 {
                     return 0;
                 }
@@ -1244,11 +1291,15 @@
         /// <summary>
         /// 锛堢孩澶栫┖璋冿級
         /// </summary>
-        public const string AcIr= "ir.ac";
+        public const string AcIr = "ir.ac";
         /// <summary>
         /// 绌鸿皟
         /// </summary>
         public const string HvacAC = "hvac.ac";
+        /// <summary>
+        /// 姣涚粏绠$┖璋�
+        /// </summary>
+        public const string HvacCac = "hvac.cac";
 
         /// <summary>
         /// 绌鸿皟spk鍒楄〃
@@ -1260,6 +1311,7 @@
             spkList.Add(AcStandard);
             spkList.Add(HvacAC);
             spkList.Add(AcIr);
+            spkList.Add(HvacCac);
             return spkList;
         }
         #endregion
@@ -1415,6 +1467,10 @@
         public const string SenesorMegahealth = "sensor.megahealth";
         public const string SenesorMegahealth2 = "sensor.megahealth.zg";
         /// <summary>
+        /// 绱ф�ュ懠鍙�
+        /// </summary>
+        public const string SensorHelp = "sensor.help";
+        /// <summary>
         /// 瀹夐槻浼犳劅鍣╯pk鍒楄〃
         /// </summary>
         /// <returns></returns>
@@ -1437,6 +1493,19 @@
             return spkList;
         }
         #endregion
+
+        public const string PanelEnvironment = "screen.panel";
+        /// <summary>
+        /// 闈㈡澘spk鍒楄〃
+        /// </summary>
+        /// <returns></returns>
+        public static List<string> PanelSpkList()
+        {
+            var spkList = new List<string>();
+            spkList.Add(SensorHelp);
+            spkList.Add(PanelEnvironment);
+            return spkList;
+        }
 
         #region 鐜浼犳劅鍣�
         /// <summary>
@@ -1797,9 +1866,49 @@
     //}
 
 
-public class VersionInfo
-{
-    public string module = "";
-    public string version = "";
-}
+    public class VersionInfo
+    {
+        public string module = "";
+        public string version = "";
+    }
+
+    /// <summary>
+    /// 鍔熻兘灞炴�х浉鍏抽厤缃俊鎭�
+    /// 鐜浼犳劅鍣ㄧ瓑绾т娇鐢�
+    /// </summary>
+    public class AttrKeyConfig
+    {
+        public string key = string.Empty;
+        /// <summary>
+        /// 閰嶇疆绫诲瀷
+        /// interval 鍖洪棿
+        /// 鐩墠鍙敮鎸侊細interval
+        /// </summary>
+        public string type = string.Empty;
+
+        public string unit = string.Empty;
+
+        public List<AttrKeyInfo> configs = new List<AttrKeyInfo>();
+
+    }
+
+    public class AttrKeyInfo
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public string start = string.Empty;
+        /// <summary>
+        /// 
+        /// </summary>
+        public string end = string.Empty;
+        /// <summary>
+        /// 
+        /// </summary>
+        public string color = string.Empty;
+        /// <summary>
+        /// 鎻忚堪
+        /// </summary>
+        public string desc = string.Empty;
+    }
 }
diff --git a/HDL_ON/Entity/Function/Sensor.cs b/HDL_ON/Entity/Function/Sensor.cs
index 82ed611..581343d 100644
--- a/HDL_ON/Entity/Function/Sensor.cs
+++ b/HDL_ON/Entity/Function/Sensor.cs
@@ -1,5 +1,6 @@
 锘縰sing System;
 using System.Collections.Generic;
+using Shared;
 
 namespace HDL_ON.Entity
 {
@@ -81,9 +82,30 @@
         /// <summary>
         /// 姣忎釜绛夌骇瀵瑰尯闂村��
         /// </summary>
-        public List<string> GetIntervalValue(string spk)
+        public List<string> GetIntervalValue(Function function)
         {
             var _intervalValue = new List<string>();
+
+
+            if (function.attrKeyConfigs.Count > 0)
+            {
+
+                foreach (var attrKey in function.attrKeyConfigs)
+                {
+                    if (function.spk.Replace(".", "").Contains(attrKey.key.Replace(".", "")))
+                    {
+                        foreach (var info in attrKey.configs)
+                        {
+                            _intervalValue.Add(info.start + " ~ " + info.end);
+                        }
+                    }
+                }
+                if (_intervalValue.Count > 0)
+                    return _intervalValue;
+            }
+
+
+            string spk = function.spk;
             switch (spk)
             {
                 case SPK.SensorPm25:
@@ -128,12 +150,72 @@
             return _intervalValue;
         }
 
+        public string Unit(Function  function)
+        {
+            string unit = "";
+
+            if (function.attrKeyConfigs.Count > 0)
+            {
+
+                foreach (var attrKey in function.attrKeyConfigs)
+                {
+                    if (function.spk.Replace(".", "").Contains(attrKey.key.Replace(".", "")))
+                    {
+                        if (string.IsNullOrEmpty(attrKey.unit))
+                            return attrKey.unit;
+                    }
+                }
+            }
+
+            switch (function.spk)
+            {
+                case SPK.SensorPm25:
+                    unit = "ug/m虏";
+                    break;
+                case SPK.SensorTemperature:
+                    unit =  "掳C";
+                    break;
+                case SPK.SensorTVOC:
+                    unit = "PPB";
+                    break;
+                case SPK.SensorCO2:
+                    unit = "PPM";
+                    break;
+                case SPK.SensorHumidity:
+                    unit = "%";
+                    break;
+                case SPK.SensorHcho:
+                    unit = "mg/m3";
+                    break;
+            }
+
+            return unit;
+        }
+
         /// <summary>
         /// 姣忎釜绛夌骇鐨勯鑹插��
         /// </summary>
-        public List<uint> GetLevelColorList(string spk)
+        public List<uint> GetLevelColorList(Function function)
         {
             var _levelColorList = new List<uint>();
+            if (function.attrKeyConfigs.Count > 0)
+            {
+
+                foreach (var attrKey in function.attrKeyConfigs)
+                {
+                    if (function.spk.Replace(".", "").Contains(attrKey.key.Replace(".", "")))
+                    {
+                        foreach (var info in attrKey.configs)
+                        {
+                            _levelColorList.Add(Convert.ToUInt32(info.color, 16));
+                        }
+                    }
+                }
+                if (_levelColorList.Count > 0)
+                    return _levelColorList;
+            }
+
+            string spk = function.spk;
             switch (spk)
             {
                 case SPK.SensorPm25:
@@ -187,52 +269,71 @@
         /// <summary>
         /// 姣忎釜绛夌骇鐨勫悕绉�
         /// </summary>
-        public List<int> GetLevelTextList(string spk)
+        public List<string> GetLevelTextList(Function function)
         {
-            var _levelTextList = new List<int>();
+            var _levelTextList = new List<string>();
+
+            if (function.attrKeyConfigs.Count > 0)
+            {
+
+                foreach (var attrKey in function.attrKeyConfigs)
+                {
+                    if (function.spk.Replace(".", "").Contains(attrKey.key.Replace(".", "")))
+                    {
+                        foreach (var info in attrKey.configs)
+                        {
+                            _levelTextList.Add(info.desc);
+                        }
+                    }
+                }
+                if (_levelTextList.Count > 0)
+                    return _levelTextList;
+            }
+
+            string spk = function.spk;
             switch (spk)
             {
                 case SPK.SensorPm25:
-                    _levelTextList.Add(StringId.Great);
-                    _levelTextList.Add(StringId.Good);
-                    _levelTextList.Add(StringId.MildPollution);
-                    _levelTextList.Add(StringId.HeavyPollution);
+                    _levelTextList.Add(Language.StringByID(StringId.Great));
+                    _levelTextList.Add(Language.StringByID(StringId.Good));
+                    _levelTextList.Add(Language.StringByID(StringId.MildPollution));
+                    _levelTextList.Add(Language.StringByID(StringId.HeavyPollution));
                     break;
                 case SPK.SensorCO2:
-                    _levelTextList.Add(StringId.SensorReferenceTipCO2Level1);
-                    _levelTextList.Add(StringId.SensorReferenceTipCO2Level2);
-                    _levelTextList.Add(StringId.SensorReferenceTipCO2Level3);
-                    _levelTextList.Add(StringId.SensorReferenceTipCO2Level4);
+                    _levelTextList.Add(Language.StringByID(StringId.SensorReferenceTipCO2Level1));
+                    _levelTextList.Add(Language.StringByID(StringId.SensorReferenceTipCO2Level2));
+                    _levelTextList.Add(Language.StringByID(StringId.SensorReferenceTipCO2Level3));
+                    _levelTextList.Add(Language.StringByID(StringId.SensorReferenceTipCO2Level4));
                     break;
                 case SPK.SensorTemperature:
-                    _levelTextList.Add(StringId.ExtremelyCold);
-                    _levelTextList.Add(StringId.Cold);
-                    _levelTextList.Add(StringId.SlightlyCold);
-                    _levelTextList.Add(StringId.Comfortable);
-                    _levelTextList.Add(StringId.TepidFever);
-                    _levelTextList.Add(StringId.Heat_SensorTip);
-                    _levelTextList.Add(StringId.ExtremeHeat);
+                    _levelTextList.Add(Language.StringByID(StringId.ExtremelyCold));
+                    _levelTextList.Add(Language.StringByID(StringId.Cold));
+                    _levelTextList.Add(Language.StringByID(StringId.SlightlyCold));
+                    _levelTextList.Add(Language.StringByID(StringId.Comfortable));
+                    _levelTextList.Add(Language.StringByID(StringId.TepidFever));
+                    _levelTextList.Add(Language.StringByID(StringId.Heat_SensorTip));
+                    _levelTextList.Add(Language.StringByID(StringId.ExtremeHeat));
                     break;
                 case SPK.SensorTVOC:
-                    _levelTextList.Add(StringId.SensorReferenceTVOCTipLevel1);
-                    _levelTextList.Add(StringId.SensorReferenceTVOCTipLevel2);
-                    _levelTextList.Add(StringId.SensorReferenceTVOCTipLevel3);
-                    _levelTextList.Add(StringId.SensorReferenceTVOCTipLevel4);
+                    _levelTextList.Add(Language.StringByID(StringId.SensorReferenceTVOCTipLevel1));
+                    _levelTextList.Add(Language.StringByID(StringId.SensorReferenceTVOCTipLevel2));
+                    _levelTextList.Add(Language.StringByID(StringId.SensorReferenceTVOCTipLevel3));
+                    _levelTextList.Add(Language.StringByID(StringId.SensorReferenceTVOCTipLevel4));
                     break;
                 case SPK.SensorHumidity:
-                    _levelTextList.Add(StringId.SensorReferenceHumidityTipLevel1);
-                    _levelTextList.Add(StringId.SensorReferenceHumidityTipLevel2);
-                    _levelTextList.Add(StringId.SensorReferenceHumidityTipLevel3);
+                    _levelTextList.Add(Language.StringByID(StringId.SensorReferenceHumidityTipLevel1));
+                    _levelTextList.Add(Language.StringByID(StringId.SensorReferenceHumidityTipLevel2));
+                    _levelTextList.Add(Language.StringByID(StringId.SensorReferenceHumidityTipLevel3));
                     break;
                 case SPK.SensorHcho:
-                    _levelTextList.Add(StringId.Class_I_BuildingStandard);
-                    _levelTextList.Add(StringId.SecondaryBuildingStandard);
-                    _levelTextList.Add(StringId.ExceedingTheStandard);
+                    _levelTextList.Add(Language.StringByID(StringId.Class_I_BuildingStandard));
+                    _levelTextList.Add(Language.StringByID(StringId.SecondaryBuildingStandard));
+                    _levelTextList.Add(Language.StringByID(StringId.ExceedingTheStandard));
                     break;
                 default:
-                    _levelTextList.Add(99999999);
-                    _levelTextList.Add(99999999);
-                    _levelTextList.Add(99999999);
+                    _levelTextList.Add("");
+                    _levelTextList.Add("");
+                    _levelTextList.Add("");
                     break;
             }
             return _levelTextList;
diff --git a/HDL_ON/Entity/FunctionList.cs b/HDL_ON/Entity/FunctionList.cs
index 55d26a3..208eb41 100644
--- a/HDL_ON/Entity/FunctionList.cs
+++ b/HDL_ON/Entity/FunctionList.cs
@@ -87,6 +87,15 @@
             var spkList = SPK.AirFreshSpkList();
             return Functions.FindAll((obj) => spkList.Contains(obj.spk));
         }
+        /// <summary>
+        /// 闈㈡澘鍒楄〃
+        /// </summary>
+        /// <returns></returns>
+        public List<Function> GetPanelList()
+        {
+            var spkList = SPK.PanelSpkList();
+            return Functions.FindAll((obj) => spkList.Contains(obj.spk));
+        }
 
         /// <summary>
         /// 鑳芥簮鍒楄〃
diff --git a/HDL_ON/HDL_ON.projitems b/HDL_ON/HDL_ON.projitems
index f17e8e8..948c13d 100644
--- a/HDL_ON/HDL_ON.projitems
+++ b/HDL_ON/HDL_ON.projitems
@@ -383,7 +383,6 @@
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\AirQuality.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\MainView.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\OnePortAutomation.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\LogicMethod.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\Time3.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\AddLogic.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\Set.cs" />
@@ -489,6 +488,17 @@
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AboutOn\SupportHomeKitNotesPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AboutOn\FirmwareUpdateView.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\DoorLock\DoorLockUnlockPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\1ContorlPage\CacControlPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\1ContorlPage\CacWeekHistoryPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\1ContorlPage\CacDayHistoryPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\1ContorlPage\CacHistoryChoosePage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Automation\LogicMethod.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Panel\PanelHelpPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Panel\EnvironmentPanelPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Stan\Form\DeviceFunction4CardCommonForm.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\ContentView\FhContentView.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\ContentView\AcContentView.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Video\WanderingAlarmPage.cs" />
   </ItemGroup>
   <ItemGroup>
     <Folder Include="$(MSBuildThisFileDirectory)Entity\Device\" />
@@ -515,5 +525,6 @@
     <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\SenesorEnvironment\" />
     <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Light\LightScene\" />
     <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\FaceManagement\" />
+    <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\ContentView\" />
   </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/HDL_ON/UI/MainPage.cs b/HDL_ON/UI/MainPage.cs
index 3acd47a..b9b9bb8 100644
--- a/HDL_ON/UI/MainPage.cs
+++ b/HDL_ON/UI/MainPage.cs
@@ -26,7 +26,7 @@
     /// <summary>
     /// 鐗堟湰鍙�
     /// </summary>
-    public static string VersionString = "1.5.5";
+    public static string VersionString = "1.5.6";
     ///// <summary>
     ///// 瀹㈡埛绔被鍨�
     ///// </summary>
@@ -111,6 +111,7 @@
             SPK.AirFreshStandard,SPK.HvacAirFresh,
             SPK.AirSwitch,
             SPK.PanelSocket,SPK.ElectricSocket,
+            SPK.HvacCac
         };
 
 
@@ -132,6 +133,7 @@
           _RoomNotSupportFunctionList.Add(SPK.ElectricEnergy);
           _RoomNotSupportFunctionList.AddRange(SPK.EnvironDeviceSpkList());
           _RoomNotSupportFunctionList.AddRange(SPK.ArmSensorSpkList());
+          _RoomNotSupportFunctionList.AddRange(SPK.PanelSpkList());
         }
         return _RoomNotSupportFunctionList;
       }
diff --git a/HDL_ON/UI/UI0-Public/AppUnlockPage.cs b/HDL_ON/UI/UI0-Public/AppUnlockPage.cs
index 637798b..1129e4a 100644
--- a/HDL_ON/UI/UI0-Public/AppUnlockPage.cs
+++ b/HDL_ON/UI/UI0-Public/AppUnlockPage.cs
@@ -1,4 +1,5 @@
 锘縰sing System;
+using HDL_ON.DAL.Server;
 using Shared;
 namespace HDL_ON.UI
 {
@@ -75,6 +76,26 @@
                 {
                     if (UserInfo.Current.unlockTime.AddMinutes(5) > DateTime.Now || UserInfo.Current.appUnlockPasswrod == "" || UserInfo.Current.appUnlockPage.Count == 0)
                     {
+                        if(UserInfo.Current.inCall.AddMinutes(30) > DateTime.Now ||
+                            UserInfo.Current.inVideo)
+                        {
+                            //UserInfo.Current.PushMesLogTime = DateTime.MinValue;
+
+                            //var pushMes = new JPushMessageInfo()
+                            //{
+                            //    Title = UserInfo.Current.PushMesTitle,
+                            //    Content = UserInfo.Current.PushMesMessage,
+                            //    Extras = UserInfo.Current.PushMesExtras,
+                            //    messageType = UserInfo.Current.pushMesMessageType,
+                            //    expantContent = UserInfo.Current.pushMesExpantContent,
+                            //    HomeId = UserInfo.Current.PushMesHomeId,
+                            //};
+                            Shared.Application.RunOnMainThread(() =>
+                            {
+                                HDLCommon.Current.AdjustPushMessage(UserInfo.Current.pushMessageInfo);
+                            });
+                        }
+
                         return;
                     }
                 }
diff --git a/HDL_ON/UI/UI0-Public/PublicAssmebly.cs b/HDL_ON/UI/UI0-Public/PublicAssmebly.cs
index b070e69..40d3b05 100644
--- a/HDL_ON/UI/UI0-Public/PublicAssmebly.cs
+++ b/HDL_ON/UI/UI0-Public/PublicAssmebly.cs
@@ -422,6 +422,99 @@
             })
             { IsBackground = true }.Start();
         }
+
+        /// <summary>
+        /// 鍙瀵硅鍛煎彨寮圭獥
+        /// </summary>
+        public void TipLinphoneCall(String msg, ESVideoInfo mESVideoInfo)
+        {
+            if (UserInfo.Current.alreadyShowCallInDialog)
+            {
+                return;
+            }
+            UserInfo.Current.alreadyShowCallInDialog = true;
+            Dialog dialog = new Dialog();
+
+            FrameLayout dialogBody = new FrameLayout();
+            dialog.AddChidren(dialogBody);
+          
+
+            FrameLayout frame = new FrameLayout()
+            {
+                Gravity = Gravity.Center,
+                Width = Application.GetRealWidth(263),
+                Height = Application.GetRealHeight(145),
+                BackgroundColor = 0xE6FFFFFF ,
+                Radius = (uint)Application.GetRealWidth(12),
+            };
+            dialog.AddChidren(frame);
+
+            Button btnTipIcon = new Button()
+            {
+                X = Application.GetRealWidth(26),
+                Y = Application.GetRealHeight(20),
+                Width = Application.GetRealWidth(32),
+                Height = Application.GetRealWidth(32),
+                UnSelectedImagePath = "Public/MsgIcon/CallIcon.png" ,
+            };
+            frame.AddChidren(btnTipIcon);
+
+            Button btnTipMsg = new Button()
+            {
+                Y = Application.GetRealHeight(5),
+                X = Application.GetRealWidth(60),
+                Height = Application.GetRealHeight(52),
+                Width = Application.GetRealWidth(160),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextSize = CSS_FontSize.TextFontSize,
+                TextColor =  CSS_Color.FirstLevelTitleColor ,
+                IsMoreLines = true,
+                Text = msg
+            };
+            frame.AddChidren(btnTipMsg);
+
+
+            Button btnHangUpIcon = new Button()
+            {
+                X = Application.GetRealWidth(45),
+                Y = Application.GetRealHeight(78),
+                Width = Application.GetRealWidth(52),
+                Height = Application.GetRealWidth(52),
+                UnSelectedImagePath = "Public/MsgIcon/HangUpIcon.png",
+            };
+            frame.AddChidren(btnHangUpIcon);
+            btnHangUpIcon.MouseUpEventHandler = (sender, e) => {
+                HDLLinphone.Current.ShowESVideoMonitor(mESVideoInfo, true,true);
+                //Com.Hdl.Hdllinphonesdk.HDLLinphoneKit.Instance.HangUp();
+                UserInfo.Current.alreadyShowCallInDialog = false;
+
+
+                dialog.Close();
+            };
+
+
+            Button btnAnswerIcon = new Button()
+            {
+                X = Application.GetRealWidth(167),
+                Y = Application.GetRealHeight(78),
+                Width = Application.GetRealWidth(52),
+                Height = Application.GetRealWidth(52),
+                UnSelectedImagePath = "Public/MsgIcon/AnswerIcon.png",
+            };
+            frame.AddChidren(btnAnswerIcon);
+            btnAnswerIcon.MouseUpEventHandler = (sender, e) => {
+                HDLLinphone.Current.ShowESVideoMonitor(mESVideoInfo,true);
+                UserInfo.Current.alreadyShowCallInDialog = false;
+
+                dialog.Close();
+            };
+
+
+
+            dialog.Show();
+        }
+
+
         /// <summary>
         /// 鍔犺浇鎻愮ず寮圭獥
         /// </summary>
diff --git a/HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs b/HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs
index 3cbd914..736410b 100644
--- a/HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs
+++ b/HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs
@@ -182,6 +182,10 @@
                         var acPage = new AcControlPage();
                         acPage.AddForm(function, btnCollectionIcon, btnName, btnFromFloor);
                         break;
+                    case SPK.HvacCac:
+                        var cacPage = new CacControlPage();
+                        cacPage.AddForm(function, btnCollectionIcon, btnName, btnFromFloor);
+                        break;
                     case SPK.IrLearn:
                         var irLearinPage = new IrLearnPage();
                         irLearinPage.AddForm(function, btnCollectionIcon, btnName, btnFromFloor);
@@ -200,6 +204,15 @@
                         var doorLockPage = new DoorLockPage();
                         doorLockPage.AddForm(function, btnCollectionIcon, btnName, btnFromFloor);
                         break;
+                    case SPK.SensorHelp:
+                        var panelHelpPage = new UI2.FuntionControlView.Panel.PanelHelpPage();
+                        panelHelpPage.AddForm(function, btnCollectionIcon, btnName, btnFromFloor);
+                        break;
+                    case SPK.PanelEnvironment:
+                        var panelEnvironmentPage = new EnvironmentPanelPage();
+                        panelEnvironmentPage.AddForm(function, btnCollectionIcon, btnName, btnFromFloor);
+                        break;
+                         
                 }
             };
             return eventHandler;
diff --git a/HDL_ON/UI/UI0-Stan/Form/DeviceFunction4CardCommonForm.cs b/HDL_ON/UI/UI0-Stan/Form/DeviceFunction4CardCommonForm.cs
new file mode 100644
index 0000000..dacaea3
--- /dev/null
+++ b/HDL_ON/UI/UI0-Stan/Form/DeviceFunction4CardCommonForm.cs
@@ -0,0 +1,452 @@
+锘縰sing HDL_ON.Entity;
+using HDL_ON.UI.CSS;
+using Shared;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace HDL_ON.Stan
+{
+    /// <summary>
+    /// 璁惧鍔熻兘鍗$墖鐨勫簳灞傜晫闈�
+    /// </summary>
+    public class DeviceFunction4CardCommonForm : EditorCommonForm
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 褰撳墠鍥炶矾瀵硅薄
+        /// </summary>
+        public Function device = null;
+        /// <summary>
+        /// 鍙充笂瑙掗厤缃粨鏉熺殑浜嬩欢
+        /// </summary>
+        public Action SettionFinishEvent = null;
+        /// <summary>
+        /// 宸﹀彸缈婚〉鐨勬帶浠剁殑浜嬩欢
+        /// </summary>
+        public Action<int> PageChangeEvent = null;
+        /// <summary>
+        /// 宸﹀彸鏁翠釜缈婚〉鐨勬帶浠�
+        /// </summary>
+        private PageLayout pageLayout = null;
+        /// <summary>
+        /// 璁惧鍚嶅瓧鎺т欢(鍒锋柊鐢ㄥ埌)
+        /// </summary>
+        public NormalViewControl btnDeviceName = null;
+        /// <summary>
+        /// 鎴块棿鍚嶅瓧鎺т欢(鍒锋柊鐢ㄥ埌)
+        /// </summary>
+        public NormalViewControl btnRoomName = null;
+        /// <summary>
+        /// 搴曢儴蹇嵎鎸夐挳1
+        /// </summary>
+        private NormalViewControl btnBottomOne = null;
+        /// <summary>
+        /// 搴曢儴蹇嵎鎸夐挳2
+        /// </summary>
+        private NormalViewControl btnBottomTwo = null;
+        private NormalViewControl btnBottom3 = null;
+        private NormalViewControl btnBottom4 = null;
+        /// <summary>
+        /// 绗竴绱㈠紩鐨勭櫧鑹插尯鍩熺殑妗屽竷鎺т欢
+        /// </summary>
+        public NormalFrameLayout FrameWhiteCentet1 = null;
+        /// <summary>
+        /// 绗簩绱㈠紩鐨勭櫧鑹插尯鍩熺殑妗屽竷鎺т欢(璇峰厛璋冪敤AddSecondPage鍑芥暟瀹屾垚娣诲姞)
+        /// </summary>
+        public NormalFrameLayout FrameWhiteCentet2 = null;
+        public NormalFrameLayout FrameWhiteCentet3 = null;
+        public NormalFrameLayout FrameWhiteCentet4 = null;
+
+        /// <summary>
+        /// 鏄惁鏄剧ず鏀惰棌鎸夐挳
+        /// </summary>
+        public bool ShowColltionButton = true;
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
+        /// </summary>
+        /// <param name="i_device">璁惧瀵硅薄</param>
+        /// <param name="btnHigherCollection">涓婁竴绾х晫闈㈢殑鏀惰棌鎺т欢(鍘熸潵on鐨勬鏋跺お鍧�)</param>
+        /// <param name="btnHigherDeviceName">涓婁竴绾х晫闈㈢殑璁惧鍚嶅瓧鎺т欢(鍘熸潵on鐨勬鏋跺お鍧�)</param>
+        /// <param name="btnHigherRoom">涓婁竴绾х晫闈㈢殑鎴块棿鍚嶅瓧鎺т欢(鍘熸潵on鐨勬鏋跺お鍧�)</param>
+        public void ShowForm(Function i_device, Button btnHigherCollection, Button btnHigherDeviceName, Button btnHigherRoom)
+        {
+            this.device = i_device;
+
+            //娣诲姞澶撮儴銆愯缃�戝浘鏍�
+            this.AddTopSettingIcon(btnHigherDeviceName, btnHigherRoom);
+
+            //鍒濆鍖栦腑閮ㄤ俊鎭�
+            this.InitMiddleFrame(btnHigherCollection);
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栦腑閮ㄤ俊鎭�
+        /// </summary>
+        /// <param name="btnHigherCollection">涓婁竴绾х晫闈㈢殑鏀惰棌鎺т欢</param>
+        private void InitMiddleFrame(Button btnHigherCollection)
+        {
+            //娓呯┖bodyFrame
+            this.ClearBodyFrame();
+
+            //宸﹀彸鏁翠釜缈婚〉鐨勬帶浠�
+            this.pageLayout = new PageLayout();
+            pageLayout.IsShowPoint = false;
+            pageLayout.ScrollEnabled = false;
+            bodyFrameLayout.AddChidren(pageLayout);
+            pageLayout.PageChange += (sender, index) =>
+            {
+                //璁剧疆搴曢儴涓や釜鎸夐挳鐨勭姸鎬�
+                this.SetBottomTwoButtonStatu();
+                this.PageChangeEvent?.Invoke(index);
+            };
+
+            //鍒濆鍖栫涓�涓储寮曠殑妗屽竷
+            this.InitFrameWhiteContent1(btnHigherCollection);
+            //鍒濆鍖栫櫧鑹插唴瀹�(闇�瑕佽嚜涓诲疄鐜�)
+            this.InitFrameWhiteContent();
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栫涓�涓储寮曠殑妗屽竷
+        /// </summary>
+        /// <param name="btnHigherCollection">涓婁竴绾х晫闈㈢殑鏀惰棌鎺т欢</param>
+        private void InitFrameWhiteContent1(Button btnHigherCollection)
+        {
+            //绗竴涓储寮曟甯冩槸蹇呭畾瀛樺湪鐨�
+            var frameTable1 = new FrameLayout();
+            frameTable1.Width = pageLayout.Width;
+            frameTable1.Height = pageLayout.Height;
+            pageLayout.AddChidren(frameTable1);
+            //绗竴涓储寮曠殑鐧借壊妗屽竷
+            this.FrameWhiteCentet1 = new NormalFrameLayout();
+            FrameWhiteCentet1.Gravity = Gravity.CenterHorizontal;
+            FrameWhiteCentet1.Y = Application.GetRealHeight(22);
+            FrameWhiteCentet1.Width = Application.GetRealWidth(327);
+            FrameWhiteCentet1.Height = Application.GetRealHeight(526);
+            FrameWhiteCentet1.BackgroundImagePath = "Public/Fragmentbg.png";
+            frameTable1.AddChidren(FrameWhiteCentet1);
+            //璁惧鍚嶅瓧
+            this.btnDeviceName = new NormalViewControl(270, 37, true);
+            btnDeviceName.X = Application.GetRealWidth(16);
+            btnDeviceName.Y = Application.GetRealHeight(18);
+            btnDeviceName.TextColor = CSS_Color.FirstLevelTitleColor;
+            btnDeviceName.TextSize = CSS_FontSize.EmphasisFontSize_FirstLevel;
+            btnDeviceName.Text = device.name;
+            btnDeviceName.Width = btnDeviceName.GetRealWidthByText();
+            FrameWhiteCentet1.AddChidren(btnDeviceName);
+            //鎴块棿鍚嶅瓧
+            this.btnRoomName = new NormalViewControl(270, 21, true);
+            btnRoomName.X = Application.GetRealWidth(16);
+            btnRoomName.Y = btnDeviceName.Bottom;
+            btnRoomName.TextColor = CSS_Color.PromptingColor1;
+            btnRoomName.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
+            btnRoomName.Text = device.GetRoomListName();
+            btnRoomName.Width = btnRoomName.GetRealWidthByText();
+            FrameWhiteCentet1.AddChidren(btnRoomName);
+            if (ShowColltionButton)
+            {
+                var btnCollection = new IconViewControl(40);
+                btnCollection.X = Application.GetRealWidth(273);
+                btnCollection.Y = Application.GetRealHeight(16);
+                btnCollection.SelectedImagePath = "Collection/CollectionIcon.png";
+                btnCollection.UnSelectedImagePath = "Collection/CollectionGrayIcon.png";
+                btnCollection.IsSelected = device.collect;
+                FrameWhiteCentet1.AddChidren(btnCollection);
+                btnCollection.ButtonClickEvent += (sender, e) =>
+                {
+                    btnCollection.IsSelected = !btnCollection.IsSelected;
+                    device.collect = btnCollection.IsSelected;
+                    btnHigherCollection.IsSelected = device.collect;
+
+                    device.CollectFunction();
+                };
+            }
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栫浜屼釜绱㈠紩鐨勬甯�
+        /// </summary>
+        private void InitFrameWhiteContent2()
+        {
+            this.pageLayout.ScrollEnabled = true;
+            //绗竴涓储寮曟甯冩槸蹇呭畾瀛樺湪鐨�
+            var frameTable2 = new FrameLayout();
+            frameTable2.Width = pageLayout.Width;
+            frameTable2.Height = pageLayout.Height;
+            pageLayout.AddChidren(frameTable2);
+            //绗竴涓储寮曠殑鐧借壊妗屽竷
+            this.FrameWhiteCentet2 = new NormalFrameLayout();
+            FrameWhiteCentet2.Gravity = Gravity.CenterHorizontal;
+            FrameWhiteCentet2.Y = Application.GetRealHeight(22);
+            FrameWhiteCentet2.Width = Application.GetRealWidth(327);
+            FrameWhiteCentet2.Height = Application.GetRealHeight(526);
+            FrameWhiteCentet2.BackgroundImagePath = "Public/Fragmentbg.png";
+            frameTable2.AddChidren(FrameWhiteCentet2);
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栫3涓储寮曠殑妗屽竷
+        /// </summary>
+        private void InitFrameWhiteContent3()
+        {
+            var frameTable3 = new FrameLayout();
+            frameTable3.Width = pageLayout.Width;
+            frameTable3.Height = pageLayout.Height;
+            pageLayout.AddChidren(frameTable3);
+            //绗竴涓储寮曠殑鐧借壊妗屽竷
+            this.FrameWhiteCentet3 = new NormalFrameLayout();
+            FrameWhiteCentet3.Gravity = Gravity.CenterHorizontal;
+            FrameWhiteCentet3.Y = Application.GetRealHeight(22);
+            FrameWhiteCentet3.Width = Application.GetRealWidth(327);
+            FrameWhiteCentet3.Height = Application.GetRealHeight(526);
+            FrameWhiteCentet3.BackgroundImagePath = "Public/Fragmentbg.png";
+            frameTable3.AddChidren(FrameWhiteCentet3);
+        }
+        /// <summary>
+        /// 鍒濆鍖栫4涓储寮曠殑妗屽竷
+        /// </summary>
+        private void InitFrameWhiteContent4()
+        {
+            var frameTable4 = new FrameLayout();
+            frameTable4.Width = pageLayout.Width;
+            frameTable4.Height = pageLayout.Height;
+            pageLayout.AddChidren(frameTable4);
+            //绗竴涓储寮曠殑鐧借壊妗屽竷
+            this.FrameWhiteCentet4 = new NormalFrameLayout();
+            FrameWhiteCentet4.Gravity = Gravity.CenterHorizontal;
+            FrameWhiteCentet4.Y = Application.GetRealHeight(22);
+            FrameWhiteCentet4.Width = Application.GetRealWidth(327);
+            FrameWhiteCentet4.Height = Application.GetRealHeight(526);
+            FrameWhiteCentet4.BackgroundImagePath = "Public/Fragmentbg.png";
+            frameTable4.AddChidren(FrameWhiteCentet4);
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栫櫧鑹插唴瀹�(闇�瑕佽嚜涓诲疄鐜�)
+        /// </summary>
+        public virtual void InitFrameWhiteContent()
+        {
+        }
+
+        #endregion
+
+        #region 鈻� 娣诲姞绗簩绱㈠紩椤礯____________________
+
+        /// <summary>
+        /// 娣诲姞绗簩绱㈠紩椤�
+        /// </summary>
+        public void AddSecondPage()
+        {
+            //鍒濆鍖栫浜屼釜绱㈠紩鐨勬甯�
+            this.InitFrameWhiteContent2();
+
+            //搴曢儴娣诲姞涓や釜鎸夐挳
+            this.btnBottomOne = new NormalViewControl(14, 6, true);
+            btnBottomOne.X = Application.GetRealWidth(170);
+            btnBottomOne.Y = FrameWhiteCentet1.Bottom + Application.GetRealHeight(30);
+            btnBottomOne.BackgroundColor = CSS_Color.MainColor;
+            btnBottomOne.Radius = (uint)Application.GetRealHeight(6) / 2;
+            bodyFrameLayout.AddChidren(btnBottomOne);
+
+            this.btnBottomTwo = new NormalViewControl(14, 6, true);
+            btnBottomTwo.X = btnBottomOne.Right + Application.GetRealWidth(8);
+            btnBottomTwo.Y = btnBottomOne.Y;
+            btnBottomTwo.BackgroundColor = 0xffadc7f7;
+            btnBottomTwo.Radius = (uint)Application.GetRealHeight(6) / 2;
+            bodyFrameLayout.AddChidren(btnBottomTwo);
+
+        }
+
+        /// <summary>
+        /// 娣诲姞绗�3绱㈠紩椤�
+        /// </summary>
+        public void Add3thPage()
+        {
+            this.InitFrameWhiteContent2();
+            this.InitFrameWhiteContent3();
+
+            //搴曢儴娣诲姞涓や釜鎸夐挳
+            this.btnBottomOne = new NormalViewControl(14, 6, true);
+            btnBottomOne.X = Application.GetRealWidth(160);
+            btnBottomOne.Y = FrameWhiteCentet1.Bottom + Application.GetRealHeight(30);
+            btnBottomOne.BackgroundColor = CSS_Color.MainColor;
+            btnBottomOne.Radius = (uint)Application.GetRealHeight(6) / 2;
+            bodyFrameLayout.AddChidren(btnBottomOne);
+            this.btnBottomTwo = new NormalViewControl(14, 6, true);
+            btnBottomTwo.X = btnBottomOne.Right + Application.GetRealWidth(8);
+            btnBottomTwo.Y = btnBottomOne.Y;
+            btnBottomTwo.BackgroundColor = 0xffadc7f7;
+            btnBottomTwo.Radius = (uint)Application.GetRealHeight(6) / 2;
+            bodyFrameLayout.AddChidren(btnBottomTwo);
+            this.btnBottom3 = new NormalViewControl(14, 6, true);
+            btnBottom3.X = btnBottomTwo.Right + Application.GetRealWidth(8);
+            btnBottom3.Y = btnBottomTwo.Y;
+            btnBottom3.BackgroundColor = 0xffadc7f7;
+            btnBottom3.Radius = (uint)Application.GetRealHeight(6) / 2;
+            bodyFrameLayout.AddChidren(btnBottom3);
+        }
+        /// <summary>
+        /// 娣诲姞绗�3绱㈠紩椤�
+        /// </summary>
+        public void Add4Page()
+        {
+            this.InitFrameWhiteContent2();
+            this.InitFrameWhiteContent3();
+            this.InitFrameWhiteContent4();
+
+            //搴曢儴娣诲姞涓や釜鎸夐挳
+            this.btnBottomOne = new NormalViewControl(14, 6, true);
+            btnBottomOne.X = Application.GetRealWidth(150);
+            btnBottomOne.Y = FrameWhiteCentet1.Bottom + Application.GetRealHeight(30);
+            btnBottomOne.BackgroundColor = CSS_Color.MainColor;
+            btnBottomOne.Radius = (uint)Application.GetRealHeight(6) / 2;
+            bodyFrameLayout.AddChidren(btnBottomOne);
+            this.btnBottomTwo = new NormalViewControl(14, 6, true);
+            btnBottomTwo.X = btnBottomOne.Right + Application.GetRealWidth(8);
+            btnBottomTwo.Y = btnBottomOne.Y;
+            btnBottomTwo.BackgroundColor = 0xffadc7f7;
+            btnBottomTwo.Radius = (uint)Application.GetRealHeight(6) / 2;
+            bodyFrameLayout.AddChidren(btnBottomTwo);
+            this.btnBottom3 = new NormalViewControl(14, 6, true);
+            btnBottom3.X = btnBottomTwo.Right + Application.GetRealWidth(8);
+            btnBottom3.Y = btnBottomTwo.Y;
+            btnBottom3.BackgroundColor = 0xffadc7f7;
+            btnBottom3.Radius = (uint)Application.GetRealHeight(6) / 2;
+            bodyFrameLayout.AddChidren(btnBottom3);
+            this.btnBottom4 = new NormalViewControl(14, 6, true);
+            btnBottom4.X = btnBottom3.Right + Application.GetRealWidth(8);
+            btnBottom4.Y = btnBottom3.Y;
+            btnBottom4.BackgroundColor = 0xffadc7f7;
+            btnBottom4.Radius = (uint)Application.GetRealHeight(6) / 2;
+            bodyFrameLayout.AddChidren(btnBottom4);
+        }
+
+
+        /// <summary>
+        /// 璁剧疆搴曢儴涓や釜鎸夐挳鐨勭姸鎬�
+        /// </summary>
+        private void SetBottomTwoButtonStatu()
+        {
+            if (this.btnBottomTwo == null) { return; }
+
+            if (this.pageLayout.PageIndex == 0)
+            {
+                this.btnBottomOne.BackgroundColor = CSS_Color.MainColor;
+                this.btnBottomTwo.BackgroundColor = 0xffadc7f7;
+                this.btnBottom3.BackgroundColor = 0xffadc7f7;
+                this.btnBottom4.BackgroundColor = 0xffadc7f7;
+            }
+            else if (this.pageLayout.PageIndex == 1)
+            {
+                this.btnBottomOne.BackgroundColor = 0xffadc7f7;
+                this.btnBottomTwo.BackgroundColor = CSS_Color.MainColor;
+                this.btnBottom3.BackgroundColor = 0xffadc7f7;
+                this.btnBottom4.BackgroundColor = 0xffadc7f7;
+            }
+            else if (this.pageLayout.PageIndex == 2)
+            {
+                this.btnBottomOne.BackgroundColor = 0xffadc7f7;
+                this.btnBottomTwo.BackgroundColor = 0xffadc7f7;
+                this.btnBottom3.BackgroundColor = CSS_Color.MainColor;
+                this.btnBottom4.BackgroundColor = 0xffadc7f7;
+            }
+            else if (this.pageLayout.PageIndex == 3)
+            {
+                this.btnBottomOne.BackgroundColor = 0xffadc7f7;
+                this.btnBottomTwo.BackgroundColor = 0xffadc7f7;
+                this.btnBottom4.BackgroundColor = CSS_Color.MainColor;
+                this.btnBottom3.BackgroundColor = 0xffadc7f7;
+            }
+        }
+
+        #endregion
+
+        #region 鈻� 鐣岄潰鍏抽棴___________________________
+
+        /// <summary>
+        /// 鐣岄潰鍏抽棴
+        /// </summary>
+        public override void CloseFormBefore()
+        {
+            base.CloseFormBefore();
+
+            this.SettionFinishEvent = null;
+            this.PageChangeEvent = null;
+        }
+
+        #endregion
+
+        #region 鈻� 涓�鑸柟娉昣__________________________
+
+        /// <summary>
+        /// 鑾峰彇澶撮儴鍙宠竟鐨勩�愯缃�戝浘鏍囨帶浠�
+        /// </summary>
+        /// <returns></returns>
+        public PicViewControl GetTopSettingIcon()
+        {
+            for (int i = 0; i < topFrameLayout.ChildrenCount; i++)
+            {
+                var myView = topFrameLayout.GetChildren(i);
+                if (myView == null || myView.Name != "btnSetting")
+                {
+                    continue;
+                }
+                return myView as PicViewControl;
+            }
+            return null;
+        }
+
+        /// <summary>
+        /// 娣诲姞澶撮儴銆愯缃�戠殑鍥炬爣
+        /// </summary>
+        /// <param name="btnHigherCollection">涓婁竴绾х晫闈㈢殑鏀惰棌鎺т欢(鍘熸潵on鐨勬鏋跺お鍧�)</param>
+        /// <param name="btnHigherDeviceName">涓婁竴绾х晫闈㈢殑璁惧鍚嶅瓧鎺т欢(鍘熸潵on鐨勬鏋跺お鍧�)</param>
+        private void AddTopSettingIcon(Button btnHigherDeviceName, Button btnHigherRoom)
+        {
+            //璁剧疆鍥炬爣(闂ㄩ攣鐣岄潰闇�瑕佸�熺敤杩欎釜鍥炬爣鐨刋杞村拰Y杞�,鎵�浠ュ姞杩涙潵)
+            var btnSetting = new PicViewControl(28, 28);
+            btnSetting.X = Application.GetRealWidth(337);
+            btnSetting.Y = Application.GetRealHeight(9);
+            btnSetting.UnSelectedImagePath = "Public/FuncInfoSetIcon.png";
+            btnSetting.Name = "btnSetting";
+            topFrameLayout.AddChidren(btnSetting);
+
+            //濡傛灉鏄垚鍛樻病鏈夊姛鑳�
+            if (DB_ResidenceData.Instance.CurrentRegion.isOtherShare == true)
+            {
+                btnSetting.Visible = false;
+            }
+
+            btnSetting.ButtonClickEvent += (sender, e) =>
+            {
+                var infoView = new UI.FunctionBaseInfoSetPage(this.device, () =>
+                {
+                    //鍒锋柊鏄剧ず
+                    btnHigherDeviceName.Text = this.device.name;
+                    btnHigherRoom.Text = this.device.GetRoomListName();
+
+                    //浠庢柊璁$畻瀹藉害
+                    this.btnDeviceName.Text = btnHigherDeviceName.Text;
+                    this.btnDeviceName.Width = this.btnDeviceName.GetRealWidthByText();
+
+                    this.btnRoomName.Text = btnHigherRoom.Text;
+                    this.btnRoomName.Width = this.btnRoomName.GetRealWidthByText();
+
+                    //鍥炶皟浜嬩欢
+                    this.SettionFinishEvent?.Invoke();
+                });
+                MainPage.BasePageView.AddChidren(infoView);
+                infoView.LoadPage();
+                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+            };
+        }
+
+        #endregion
+    }
+}
diff --git a/HDL_ON/UI/UI1-Login/LoginPage.cs b/HDL_ON/UI/UI1-Login/LoginPage.cs
index c5577fa..988eb0c 100644
--- a/HDL_ON/UI/UI1-Login/LoginPage.cs
+++ b/HDL_ON/UI/UI1-Login/LoginPage.cs
@@ -217,6 +217,7 @@
                     //etAccount.Text = "18316120654";//tujie
                     //etAccount.Text = "13450425807";//榛勭婧� knx椤圭洰
                     etAccount.Text = "18244942707";
+                    etAccount.Text = "13826414433";//闄堜紵娼� 鑷爺鍙瀵硅
                 }
                 else
                 {
@@ -226,32 +227,32 @@
                     //etAccount.Text = "13682244600";//娉㈠摜
                     etAccount.Text = "13168123446";//鏄嗘槑閲戣寕椤圭洰锛屾柊椋庨棶棰�
                     //etAccount.Text = "2949126848@qq.com";//闄堢惓
-                    //etAccount.Text = "13415629083";
+                    etAccount.Text = "15014291819 ";
                     //etAccount.Text = "13676202754";//宸存灄鏈嶅姟鍣�
                     //etAccount.Text = "13602944661";//kx
                     //etAccount.Text = "18666455392";//13375012446//13602944661//tzy 18778381374
                     //etAccount.Text = "15971583093";//楂樿儨
                     //etAccount.Text = "15217626103";//鏄嗘槑閲戣寕椤圭洰
                     //etAccount.Text = "18598273624";
-                    etAccount.Text = "tf@smarttech.com.ua";
+                    //etAccount.Text = "tf@smarttech.com.ua";
                     //etAccount.Text = "18814122445";//钁f辰鏂� 澶╂渤鍔炲叕瀹�
-                    etAccount.Text = "18824864143";//"464027401@qq.com"; //"2791308028@qq.com";//13697499568
-                    etAccount.Text = "18402017839";//wjc
+                    //etAccount.Text = "18824864143";//"464027401@qq.com"; //"2791308028@qq.com";//13697499568
+                    //etAccount.Text = "18402017839";//wjc
                     //etAccount.Text = "13430286286";//cwc
                     //etAccount.Text = "13709260805";
                     //etAccount.Text = "support5@hdlchina.com.cn";
                     //etAccount.Text = "13375012441";
                     //etAccount.Text = "info@smartlife-ks.com";
                     //etAccount.Text = "551775569@qq.com";//wcf
-                    etAccount.Text = "15626203746";
+                    //etAccount.Text = "15626203746";
                     //etAccount.Text = "zhangquansongjava@163.com";
                     //etAccount.Text = "s.savinov@hdlautomation.ru";
                 }
                 b = !b;
                 etPassword.Text = "123456";
-                if(etAccount.Text == "s.savinov@hdlautomation.ru")
+                if(etAccount.Text == "15014291819 ")
                 {
-                    etPassword.Text = "BWGVOFCJ";
+                    etPassword.Text = "hdl123456";
                 }
                 //etPassword.Text = "Hdl85521566";
                 btnLogin.IsSelected = true;
@@ -1134,7 +1135,8 @@
         /// <param name="frameBack"></param>
         private void AddServiceAgreementControl(FrameLayout frameLayout)
         {
-            isAgreePrivacyPolicy = OnAppConfig.Instance.isAgreePrivacyPolicy;
+            isAgreePrivacyPolicy = false;
+            OnAppConfig.Instance.isAgreePrivacyPolicy = false;
 
 
 
diff --git a/HDL_ON/UI/UI2/1-HomePage/HomePage.cs b/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
index d93097d..fc4e748 100644
--- a/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
+++ b/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
@@ -206,19 +206,6 @@
                     //    Control.Ins.OneKeyUnlocking(new Function(), UserInfo.Current.doorPasswordString);
                     //}
 
-                ddd++;
-                    Function function_online = FunctionList.List.GetLightList().Find((obj) => obj.sid == "0001017DB92D2602020100010101");
-                    if(ddd%2 == 0)
-                    {
-                        function_online.online = true;
-                    }
-                    else
-                    {
-                        function_online.online = false;
-                    }
-                    HomePage.LoadEvent_RefreshDevcieOnline(function_online);
-                    
-
                 };
 #endif
 
@@ -582,7 +569,7 @@
 
             //FunctionList.List.Functions.Add(new Function
             //{
-            //    name = "闂ㄩ攣",
+            //    name = "娴嬭瘯闂ㄩ攣",
             //    spk = SPK.DoorLock,
             //    sid = "12345",
             //    attributes = new List<FunctionAttributes> {
@@ -640,6 +627,43 @@
             //    },
             //});
 
+            FunctionList.List.Functions.Add(new Function()
+            {
+                spk = SPK.SensorPm25,
+                name = "娴嬭瘯Pm2.5",
+                attributes = new List<FunctionAttributes>()
+                {
+                    new FunctionAttributes(){ key = "pm25",curValue= "70",state = "70" },
+                },
+                attrKeyConfigs = new List<AttrKeyConfig>()
+                {
+                    new AttrKeyConfig (){
+                        key = "pm2.5",
+                        type = "interval" ,
+                        unit = "ug/m虏",
+                        configs = new List<AttrKeyInfo>(){
+                           new AttrKeyInfo(){ start = "0",end = "75",color = "0xFFADE764", desc = "鑹ソ"},
+                           new AttrKeyInfo(){ start = "76",end = "150",color = "0xFFFFD154",desc = "杞�/涓害姹℃煋"},
+                           new AttrKeyInfo(){ start = "151",end = "500",color = "0xFFFF9D54",desc = "閲嶅害/涓ラ噸姹℃煋"},
+                        }
+                    }
+                },
+            });
+
+            //FunctionList.List.Functions.Add(new Function()
+            //{
+            //    spk = SPK.SensorHelp,
+            //    name = "娴嬭瘯绱ф�ユ眰鍔╂寜閽�",
+            //    attributes = new List<FunctionAttributes>()
+            //    {
+            //        new FunctionAttributes(){ key = "status",curValue= "on",state = "on" },
+            //        new FunctionAttributes(){ key = "alarm_status",curValue= "alarm",state = "alarm" },
+            //        new FunctionAttributes(){ key = "battery_value",curValue= "200",state = "200" },
+            //        new FunctionAttributes(){ key = "battery_percentage",curValue= "10",state = "10" },
+            //        new FunctionAttributes(){ key = "battery_state",curValue= "low",state = "low" },
+            //    },
+            //});
+
             //FunctionList.List.Functions.Add(new Function()
             //{
             //    spk = SPK.AirSwitch,
@@ -654,10 +678,41 @@
             //{
             //    spk = SPK.AirFreshStandard,
             //    name = "娴嬭瘯鏂伴",
+            //    sid = "098765433242342342",
             //    attributes = new List<FunctionAttributes>()
             //    {
             //        new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
             //        new FunctionAttributes(){ key = "fan",curValue= "low",state = "low" ,value = new List<string>(){ "high", "medium", "low" } },
+            //    },
+            //});
+
+            //FunctionList.List.Functions.Add(new Function()
+            //{
+            //    spk = SPK.PanelEnvironment,
+            //    name = "娴嬭瘯鐜闈㈡澘",
+            //    targetSids = new List<string> {
+            //        "098765433242342342",
+            //        "ac1",
+            //        "floorheat1"
+            //    }
+            //});
+
+
+            //FunctionList.List.Functions.Add(new Function()
+            //{
+            //    spk = SPK.HvacCac,
+            //    name = "娴嬭瘯閲戣寕娓╂帶",
+            //    attributes = new List<FunctionAttributes>()
+            //    {
+            //        new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
+            //        new FunctionAttributes(){ key = "mode",curValue= "cool",state = "cool" ,value = new List<string>(){ "cool", "heat" } },
+            //        new FunctionAttributes(){ key = "set_temp",curValue= "22",state = "22" ,value = new List<string>(){},min = 0,max = 30 },
+            //        //new FunctionAttributes(){ key = "set_temp_step",curValue= "low",state = "low" ,value = new List<string>(){ "high", "medium", "low", "auto", "stop" } },
+            //        new FunctionAttributes(){ key = "humidity",curValue= "0",state = "0" ,value = new List<string>(){  },min = 0,max = 100 },
+            //        new FunctionAttributes(){ key = "room_temp",curValue= "26",state = "26" ,value = new List<string>(){  },min = 0,max = 100 },
+            //        new FunctionAttributes(){ key = "dew_point_temp",curValue= "20",state = "20" ,value = new List<string>(){  },min = 0,max = 100 },
+            //        new FunctionAttributes(){ key = "room_humidity",curValue= "20",state = "20" ,value = new List<string>(){  },min = 0,max = 1000 },
+            //        //new FunctionAttributes(){ key = "tvoc",curValue= "20",state = "20" ,value = new List<string>(){  },min = 0,max = 100 },
             //    },
             //});
 
@@ -866,6 +921,7 @@
 
         /// <summary>
         /// 鍔犺浇璁惧鍔熻兘鏄剧ず鍖哄煙
+        /// Tag 鏀惰棌鍗$墖
         /// </summary>
         void LoadDeviceFunctionControlZone()
         {
@@ -953,10 +1009,10 @@
                     index++;
 
 
-                    if (!function.online)
-                    {
-                        btnbg.UnSelectedImagePath = "Collection/FunctionOfflineBg.png";
-                    }
+                    //if (!function.online)
+                    //{
+                    //    btnbg.UnSelectedImagePath = "Collection/FunctionOfflineBg.png";
+                    //}
                 }
 
                 if (index == 0)
@@ -1079,6 +1135,7 @@
 
         /// <summary>
         /// 鍔犺浇鍔熻兘鎺у埗鍗$墖
+        /// Tag 鍗$墖鑷畾涔�
         /// </summary>
         void LoadDeviceFunctionDiv(FrameLayout view, Function function)
         {
@@ -1293,6 +1350,11 @@
                     LoadEvent_ControlClothesHanger(function, btnUp, btnDown);
 
                 }
+                //绱ф�ユ眰鍔�
+                else if (function.spk == SPK.SensorHelp)
+                {
+
+                }
 
                 else
                 {
@@ -1340,19 +1402,19 @@
                     UpdataFunctionStates(function);
                 }
 
-                var btnOffline = new Button()
-                {
-                    X = btnIcon.Right,
-                    Y = Application.GetRealWidth(16),
-                    Height = Application.GetMinRealAverage(32),
-                    TextID = StringId.DeviceOffline,
-                    TextColor = CSS_Color.WarningColor,
-                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                    TextAlignment = TextAlignment.CenterLeft,
-                    Tag = "OnlineTag",
-                    Visible = !function.online
-                };
-                view.AddChidren(btnOffline);
+                //var btnOffline = new Button()
+                //{
+                //    X = btnIcon.Right,
+                //    Y = Application.GetRealWidth(16),
+                //    Height = Application.GetMinRealAverage(32),
+                //    TextID = StringId.DeviceOffline,
+                //    TextColor = CSS_Color.WarningColor,
+                //    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                //    TextAlignment = TextAlignment.CenterLeft,
+                //    Tag = "OnlineTag",
+                //    Visible = !function.online
+                //};
+                //view.AddChidren(btnOffline);
 
             }
             catch (Exception ex)
diff --git a/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs b/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs
index 342d1d5..8177983 100644
--- a/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs
+++ b/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs
@@ -14,46 +14,46 @@
         /// </summary>
         public static void LoadEvent_RefreshDevcieOnline(Function function)
         {
-            Application.RunOnMainThread(() =>
-            {
-                if (bodyView != null)
-                {
-                    foreach (var view in bodyView.functionViews)
-                    {
-                        if (view.Tag.ToString() == function.sid)
-                        {
-                            for (int i = 0; i < view.ChildrenCount; i++)
-                            {
-                                if (view.GetChildren(i).GetType() == typeof(Button))
-                                {
-                                    var btn = view.GetChildren(i) as Button;
-                                    if(btn.Tag == null)
-                                    {
-                                        continue;
-                                    }
-                                    if (btn.Tag.ToString() == function.sid)
-                                    {
-                                        if (function.online)
-                                        {
-                                            btn.UnSelectedImagePath = "Collection/Functionbg.png";
-                                            btn.IsSelected = false;
-                                        }
-                                        else
-                                        {
-                                            btn.UnSelectedImagePath = "Collection/FunctionOfflineBg.png";
-                                            btn.IsSelected = false;
-                                        }
-                                    }
-                                    else if (btn.Tag.ToString() == "OnlineTag")
-                                    {
-                                        btn.Visible = !function.online;
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
-            });
+            //Application.RunOnMainThread(() =>
+            //{
+            //    if (bodyView != null)
+            //    {
+            //        foreach (var view in bodyView.functionViews)
+            //        {
+            //            if (view.Tag.ToString() == function.sid)
+            //            {
+            //                for (int i = 0; i < view.ChildrenCount; i++)
+            //                {
+            //                    if (view.GetChildren(i).GetType() == typeof(Button))
+            //                    {
+            //                        var btn = view.GetChildren(i) as Button;
+            //                        if(btn.Tag == null)
+            //                        {
+            //                            continue;
+            //                        }
+            //                        if (btn.Tag.ToString() == function.sid)
+            //                        {
+            //                            if (function.online)
+            //                            {
+            //                                btn.UnSelectedImagePath = "Collection/Functionbg.png";
+            //                                btn.IsSelected = false;
+            //                            }
+            //                            else
+            //                            {
+            //                                btn.UnSelectedImagePath = "Collection/FunctionOfflineBg.png";
+            //                                btn.IsSelected = false;
+            //                            }
+            //                        }
+            //                        else if (btn.Tag.ToString() == "OnlineTag")
+            //                        {
+            //                            btn.Visible = !function.online;
+            //                        }
+            //                    }
+            //                }
+            //            }
+            //        }
+            //    }
+            //});
         }
         /// <summary>
         /// 鏇存柊涓婚〉澶╂皵
@@ -514,16 +514,16 @@
         {
             btnSwitch.MouseUpEventHandler = (sender, e) =>
             {
-                if (!function.online)//绂荤嚎涓嶅厑璁告搷浣�
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!function.online)//绂荤嚎涓嶅厑璁告搷浣�
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 btnSwitch.IsSelected = !btnSwitch.IsSelected;
                 new System.Threading.Thread(() =>
                 {
@@ -577,16 +577,16 @@
         {
             btnSwitch.MouseUpEventHandler = (sender, e) =>
             {
-                if (!function.online)//绂荤嚎涓嶅厑璁告搷浣�
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!function.online)//绂荤嚎涓嶅厑璁告搷浣�
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     btnSwitch.IsSelected = !btnSwitch.IsSelected;
@@ -621,16 +621,16 @@
         {
             btnClose.MouseUpEventHandler = (sender, e) =>
             {
-                if (!curtain.online)//绂荤嚎涓嶅厑璁告搷浣�
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!curtain.online)//绂荤嚎涓嶅厑璁告搷浣�
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 btnClose.IsSelected = true;
                 curtain.trait_on_off.curValue = "off";
                 curtain.SetAttrState(FunctionAttributeKey.Percent, 0);
@@ -641,16 +641,16 @@
 
             btnOpen.MouseUpEventHandler = (sender, e) =>
             {
-                if (!curtain.online)//绂荤嚎涓嶅厑璁告搷浣�
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!curtain.online)//绂荤嚎涓嶅厑璁告搷浣�
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 btnOpen.IsSelected = true;
                 curtain.trait_on_off.curValue = "on";
                 curtain.SetAttrState(FunctionAttributeKey.Percent, 100);
@@ -671,16 +671,16 @@
             };
             btnUp.MouseUpEventHandler = (sender, e) =>
             {
-                if (!function.online)//绂荤嚎涓嶅厑璁告搷浣�
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!function.online)//绂荤嚎涓嶅厑璁告搷浣�
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 new System.Threading.Thread(() =>
                 {
                     System.Threading.Thread.Sleep(2000);
@@ -702,16 +702,16 @@
             };
             btnDown.MouseUpEventHandler = (sender, e) =>
             {
-                if (!function.online)//绂荤嚎涓嶅厑璁告搷浣�
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!function.online)//绂荤嚎涓嶅厑璁告搷浣�
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 new System.Threading.Thread(() =>
                 {
                     System.Threading.Thread.Sleep(2000);
diff --git a/HDL_ON/UI/UI2/2-Classification/ClassificaitionPublicBLL.cs b/HDL_ON/UI/UI2/2-Classification/ClassificaitionPublicBLL.cs
index 2cb9b13..db8ee37 100644
--- a/HDL_ON/UI/UI2/2-Classification/ClassificaitionPublicBLL.cs
+++ b/HDL_ON/UI/UI2/2-Classification/ClassificaitionPublicBLL.cs
@@ -215,7 +215,7 @@
                         {
                             if (scrolView.GetChildren(i).GetType() == typeof(FunctionControlZone)) {
                                 var fcView = scrolView.GetChildren(i) as FunctionControlZone;
-                                fcView.UpdataOnline(updataFunction.online);
+                                //fcView.UpdataOnline(updataFunction.online);
                             }
                         }
                     }
diff --git a/HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs b/HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs
index 77796b7..b269c83 100644
--- a/HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs
+++ b/HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs
@@ -647,6 +647,7 @@
 
             var functionCategoryCount = 0;
 
+            //Tag 鍒嗙被鍗$墖鏄剧ず
             foreach (var item in DB_ResidenceData.Instance.functionTypeList)
             {
                 int functionCount = 0;
@@ -709,6 +710,7 @@
 #endif
                         break;
                     case ShowFunction.Panel:
+                        functionCount = FunctionList.List.GetPanelList().Count;
                         break;
                     case ShowFunction.SecurityMonitoring:
                         if (!MainPage.NoLoginMode)
@@ -788,37 +790,56 @@
                 };
                 functionView.AddChidren(btnName);
 
+                //Tag 鏁伴噺鏄剧ず
                 if (item != ShowFunction.Environmental && item != ShowFunction.Sensor && item != ShowFunction.VideoIntercom
                     && item != ShowFunction.SecurityMonitoring && item != ShowFunction.FreshAir && item != ShowFunction.Music
                     && item != ShowFunction.EnergyMonitoring && item != ShowFunction.SecurityCenter
                     && functionCount != 0)
                 {
-                    Button btnFunctionCount = new Button()
+                    if (item == ShowFunction.Panel)
                     {
-                        X = Application.GetRealWidth(17) + Application.GetRealWidth(7 * functionCount.ToString().Length),
-                        Y = btnName.Bottom,
-                        Width = Application.GetRealWidth(120),
-                        Height = Application.GetRealHeight(24),
-                        TextColor = CSS_Color.PromptingColor1,
-                        TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                        TextAlignment = TextAlignment.CenterLeft,
-                        Text = "/" + functionCount,
-                    };
-                    functionView.AddChidren(btnFunctionCount);
-                    Button btnOpenCount = new Button()
+                        Button btnFunctionCount = new Button()
+                        {
+                            X = Application.GetRealWidth(16),
+                            Y = btnName.Bottom,
+                            Width = Application.GetRealWidth(120),
+                            Height = Application.GetRealHeight(24),
+                            TextColor = CSS_Color.PromptingColor1,
+                            TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                            TextAlignment = TextAlignment.CenterLeft,
+                            Text = functionCount.ToString(),
+                        };
+                        functionView.AddChidren(btnFunctionCount);
+                    }
+                    else
                     {
-                        X = Application.GetRealWidth(16),
-                        Y = btnName.Bottom,
-                        Width = Application.GetRealWidth(14 * functionCount.ToString().Length),
-                        Height = Application.GetRealHeight(24),
-                        TextColor = CSS_Color.MainColor,
-                        TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                        TextAlignment = TextAlignment.CenterLeft,
-                        Text = functionOnCount.ToString(),
-                        Tag = item + "_onCount",
-                        BorderWidth = 0,
-                    };
-                    functionView.AddChidren(btnOpenCount);
+                        Button btnFunctionCount = new Button()
+                        {
+                            X = Application.GetRealWidth(17) + Application.GetRealWidth(7 * functionCount.ToString().Length),
+                            Y = btnName.Bottom,
+                            Width = Application.GetRealWidth(120),
+                            Height = Application.GetRealHeight(24),
+                            TextColor = CSS_Color.PromptingColor1,
+                            TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                            TextAlignment = TextAlignment.CenterLeft,
+                            Text = "/" + functionCount,
+                        };
+                        functionView.AddChidren(btnFunctionCount);
+                        Button btnOpenCount = new Button()
+                        {
+                            X = Application.GetRealWidth(16),
+                            Y = btnName.Bottom,
+                            Width = Application.GetRealWidth(14 * functionCount.ToString().Length),
+                            Height = Application.GetRealHeight(24),
+                            TextColor = CSS_Color.MainColor,
+                            TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                            TextAlignment = TextAlignment.CenterLeft,
+                            Text = functionOnCount.ToString(),
+                            Tag = item + "_onCount",
+                            BorderWidth = 0,
+                        };
+                        functionView.AddChidren(btnOpenCount);
+                    }
                 }
 
 
@@ -830,6 +851,7 @@
                 };
                 functionView.AddChidren(btnFunctionViewBg);
 
+                //Tag 璋冭瘯浜嬩欢鍒ゆ柇
                 int functionPageTitleId = 0;
                 switch (item)
                 {
@@ -1022,7 +1044,8 @@
                         };
                         break;
                     case ShowFunction.Panel:
-                        btnName.TextID = StringId.Panel;
+                        btnName.TextID = StringId.SmartPanel;
+                        functionPageTitleId = StringId.SmartPanel;
                         break;
                     case ShowFunction.SecurityMonitoring:
                         btnName.TextID = StringId.SecurityMonitoring;
diff --git a/HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs b/HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs
index 8185dc9..92fea27 100644
--- a/HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs
+++ b/HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs
@@ -54,6 +54,7 @@
 
         /// <summary>
         /// 鍔犺浇鍔熻兘绫诲瀷鎺у埗鍗$墖
+        /// Tag 鍔熻兘灞炴�ф樉绀�
         /// </summary>
         public void LoadFunctionDiv()
         {
@@ -99,6 +100,178 @@
             else if (function.spk == SPK.DoorLock)
             {
                 btnIcon.UnSelectedImagePath = "FunctionIcon/DoorLock/DoorLock.png";
+            }
+            else if(SPK.PanelSpkList().Contains(function.spk))//鏅鸿兘闈㈡澘璁惧
+            {
+                var powerLowTipAttr = function.attributes.Find((obj) => obj.key == FunctionAttributeKey.BatteryState);
+                if (powerLowTipAttr != null)
+                {
+                    if (powerLowTipAttr.state.ToLower() == "low")
+                    {
+                        Button btnTipPowerLow = new Button()
+                        {
+                            X = Application.GetRealWidth(307),
+                            Y = Application.GetRealHeight(70),
+                            Width = Application.GetRealWidth(24),
+                            Height = Application.GetRealWidth(24),
+                            UnSelectedImagePath = "FunctionIcon/ArmSensor/PowerLowIcon.png",
+                            SelectedImagePath = "FunctionIcon/ArmSensor/PowerLowIcon.png",
+                        };
+                        this.AddChidren(btnTipPowerLow);
+                    }
+                }
+                var alarmStatusAttr = function.GetAttribute("alarm_status");
+                if(alarmStatusAttr !=null)
+                {
+                    var btnAlarmStatus = new Button()
+                    {
+                        X = Application.GetRealWidth(8 + 10 + 32),
+                        Y = Application.GetRealHeight(53),
+                        Width = Application.GetRealWidth(200),
+                        Height = Application.GetRealHeight(24),
+                        TextAlignment = TextAlignment.CenterLeft,
+                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+                        Tag = "AlarmStatus"
+                    };
+                    if (alarmStatusAttr.state == "alarm")
+                    {
+                        btnAlarmStatus.TextID = StringId.InAlarm;
+                        btnAlarmStatus.TextColor = CSS_Color.WarningColor;
+                    }
+                    else
+                    {
+                        btnAlarmStatus.TextID = StringId.zhengchang;
+                        btnAlarmStatus.TextColor = CSS_Color.MainColor;
+                    }
+
+                    bodyDiv.AddChidren(btnAlarmStatus);
+                }
+
+                //var tipScrView1 = new HorizontalScrolViewLayout() {
+                //    X = Application.GetRealWidth(10),
+                //    Y =  Application.GetRealHeight(56),
+                //    Height = Application.GetRealHeight(20),
+                //    Width = Application.GetRealWidth(330),
+                //    BackgroundColor = 0x22220022,
+                //};
+                //var tipScrView2 = new HorizontalScrolViewLayout()
+                //{
+                //    X = Application.GetRealWidth(10),
+                //    Y = Application.GetRealHeight(83),
+                //    Height = Application.GetRealHeight(20),
+                //    Width = Application.GetRealWidth(330),
+                //    BackgroundColor = 0x22220022,
+                //};
+
+
+                foreach (var target in function.targetSids)
+                {
+                    //bodyDiv.AddChidren(tipScrView1);
+                    //bodyDiv.AddChidren(tipScrView2);
+                    var targetObj = FunctionList.List.Functions.Find((obj) => target == obj.sid);
+                    if(targetObj == null)
+                    {
+                        continue;
+                    }
+                    if (SPK.AcSpkList().Contains(targetObj.spk))
+                    {
+                        bodyDiv.Height = Application.GetRealHeight(126);
+
+                        AC acDevice = new AC();
+                        var btnAcMode = new Button()
+                        {
+                            X = Application.GetRealWidth(10),
+                            Y = Application.GetRealHeight(56),
+                            Width = Application.GetRealWidth(62),
+                            Height = Application.GetRealHeight(19),
+                            BackgroundColor = 0x334484F4,
+                            TextAlignment = TextAlignment.Center,
+                            TextSize = 10,
+                            TextColor = 0xFF4484F4,
+                            Text = Language.StringByID(StringId.AC) + acDevice.GetModeAttrText(targetObj.GetAttrState(FunctionAttributeKey.Mode)),
+                            Tag = target + "screen.panel.ac.mode",
+                            Radius = (uint)Application.GetRealWidth(4),
+                        };
+                        bodyDiv.AddChidren(btnAcMode);
+                        //tipScrView1.AddChidren(new Button() { Width = Application.GetRealWidth(16)});
+
+                        var btnAcTemp = new Button()
+                        {
+                            X = Application.GetRealWidth(10 + 72),
+                            Y = Application.GetRealHeight(56),
+                            Width = Application.GetRealWidth(62),
+                            Height = Application.GetRealHeight(19),
+                            BackgroundColor = 0x334484F4,
+                            TextAlignment = TextAlignment.Center,
+                            TextSize = 10,
+                            TextColor = 0xFF4484F4,
+                            Text = Language.StringByID(StringId.AC) + targetObj.GetAttrState(FunctionAttributeKey.Temperature) + "掳C",
+                            Radius = (uint)Application.GetRealWidth(4),
+                            Tag = target + "screen.panel.ac.temp"
+                        };
+                        bodyDiv.AddChidren(btnAcTemp);
+                        //tipScrView1.AddChidren(new Button() { Width = Application.GetRealWidth(6) });
+                    }
+                    else if (SPK.FhSpkList().Contains(targetObj.spk))
+                    {
+
+                        FloorHeating fhDevice = new FloorHeating();
+                        var btnFhMode = new Button()
+                        {
+                            X = Application.GetRealWidth(10 + 72*2),
+                            Y = Application.GetRealHeight(56),
+                            Radius = (uint)Application.GetRealWidth(4),
+                            Width = Application.GetRealWidth(62),
+                            Height = Application.GetRealHeight(19),
+                            BackgroundColor = 0x33ff9d54,
+                            TextAlignment = TextAlignment.Center,
+                            TextSize = 10,
+                            TextColor = 0xFFff9d54,
+                            Text = Language.StringByID(StringId.FloorHeating) + fhDevice.GetModeAttrText(targetObj.GetAttrState(FunctionAttributeKey.Mode)),
+                            Tag = target + "screen.panel.fh.mode"
+                        };
+                        bodyDiv.AddChidren(btnFhMode);
+                        //tipScrView1.AddChidren(new Button() { Width = Application.GetRealWidth(6) });
+
+                        var btnFhTemp = new Button()
+                        {
+                            X = Application.GetRealWidth(10 + 72 * 3),
+                            Y = Application.GetRealHeight(56),
+                            Radius = (uint)Application.GetRealWidth(4),
+                            Width = Application.GetRealWidth(62),
+                            Height = Application.GetRealHeight(19),
+                            BackgroundColor = 0x33ff9d54,
+                            TextAlignment = TextAlignment.Center,
+                            TextSize = 10,
+                            TextColor = 0xFFff9d54,
+                            Text = Language.StringByID(StringId.FloorHeating) + targetObj.GetAttrState(FunctionAttributeKey.Temperature) + "掳C",
+                            Tag = target + "screen.panel.fh.temp"
+                        };
+                        bodyDiv.AddChidren(btnFhTemp);
+                        //tipScrView1.AddChidren(new Button() { Width = Application.GetRealWidth(6) });
+                    }
+                    else if (SPK.AirFreshSpkList().Contains(targetObj.spk))
+                    {
+
+                        AC acDevice = new AC();
+                        var btnAirFreshFanSpeed = new Button()
+                        {
+                            X = Application.GetRealWidth(10),
+                            Y = Application.GetRealHeight(83),
+                            Width = Application.GetRealWidth(62),
+                            Height = Application.GetRealHeight(19),
+                            BackgroundColor = 0x3309bb07,
+                            TextAlignment = TextAlignment.Center,
+                            TextSize = 10,
+                            TextColor = 0xFF09bb07,
+                            Radius = (uint)Application.GetRealWidth(4),
+                            Text = Language.StringByID(StringId.AirFresh) + acDevice.GetFanAttrText(targetObj.GetAttrState(FunctionAttributeKey.FanSpeed)),
+                            Tag = target + "screen.panel.airFresh.mode"
+                        };
+                        bodyDiv.AddChidren(btnAirFreshFanSpeed);
+                    }
+                }
+
             }
             else
             {
@@ -230,21 +403,21 @@
                 bodyDiv.AddChidren(btnCollectionIcon);
             }
 
-            if (!function.online)
-            {
-                bodyDiv.BackgroundColor = CSS_Color.PromptingColor2;
-                btnOffline = new Button()
-                {
-                    X = Application.GetRealWidth(8 + 10 + 32),
-                    Y = Application.GetRealHeight(28 + 24),
-                    Height = Application.GetRealHeight(30),
-                    TextID = StringId.DeviceOffline,
-                    TextColor = CSS_Color.WarningColor,
-                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                    TextAlignment = TextAlignment.CenterLeft
-                };
-                bodyDiv.AddChidren(btnOffline);
-            }
+            //if (!function.online)
+            //{
+            //    bodyDiv.BackgroundColor = CSS_Color.PromptingColor2;
+            //    btnOffline = new Button()
+            //    {
+            //        X = Application.GetRealWidth(8 + 10 + 32),
+            //        Y = Application.GetRealHeight(28 + 24),
+            //        Height = Application.GetRealHeight(30),
+            //        TextID = StringId.DeviceOffline,
+            //        TextColor = CSS_Color.WarningColor,
+            //        TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+            //        TextAlignment = TextAlignment.CenterLeft
+            //    };
+            //    bodyDiv.AddChidren(btnOffline);
+            //}
         }
 
         /// <summary>
diff --git a/HDL_ON/UI/UI2/2-Classification/FunctionControlZoneBLL.cs b/HDL_ON/UI/UI2/2-Classification/FunctionControlZoneBLL.cs
index ac47acd..d243d7d 100644
--- a/HDL_ON/UI/UI2/2-Classification/FunctionControlZoneBLL.cs
+++ b/HDL_ON/UI/UI2/2-Classification/FunctionControlZoneBLL.cs
@@ -86,16 +86,16 @@
 
             btnSwitch.MouseUpEventHandler = (sender, e) =>
             {
-                if (!function.online)//绂荤嚎涓嶅厑璁告搷浣�
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!function.online)//绂荤嚎涓嶅厑璁告搷浣�
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 btnSwitch.IsSelected = !btnSwitch.IsSelected;
 
                 if(SPK.NotStatusSpkList.Contains( function.spk ))
@@ -133,16 +133,16 @@
         /// </summary>
         void LoadEvent_LightDimming(DiyImageSeekBar dimmerControlBar)
         {
-            if (!function.online)//绂荤嚎涓嶅厑璁告搷浣�
-            {
-                //new Tip()
-                //{
-                //    CloseTime = 1,
-                //    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                //    Direction = AMPopTipDirection.None,
-                //}.Show(MainPage.BaseView);
-                return;
-            }
+            //if (!function.online)//绂荤嚎涓嶅厑璁告搷浣�
+            //{
+            //    //new Tip()
+            //    //{
+            //    //    CloseTime = 1,
+            //    //    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+            //    //    Direction = AMPopTipDirection.None,
+            //    //}.Show(MainPage.BaseView);
+            //    return;
+            //}
             if (function.spk == SPK.LightDimming || function.spk == SPK.LightRGB)
             {
                 dimmerControlBar.OnStartTrackingTouchEvent = (sender, e) => {
@@ -203,16 +203,16 @@
         {
             btnClose.MouseUpEventHandler = (sender, e) =>
             {
-                if (!function.online)//绂荤嚎涓嶅厑璁告搷浣�
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!function.online)//绂荤嚎涓嶅厑璁告搷浣�
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 btnClose.IsSelected = true;
                 btnStop.IsSelected = false;
                 btnOpen.IsSelected = false;
@@ -225,16 +225,16 @@
 
             btnStop.MouseUpEventHandler = (sender, e) =>
             {
-                if (!function.online)//绂荤嚎涓嶅厑璁告搷浣�
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!function.online)//绂荤嚎涓嶅厑璁告搷浣�
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 btnStop.IsSelected = true;
                 btnClose.IsSelected = false;
                 btnOpen.IsSelected = false;
@@ -246,16 +246,16 @@
 
             btnOpen.MouseUpEventHandler = (sender, e) =>
             {
-                if (!function.online)//绂荤嚎涓嶅厑璁告搷浣�
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!function.online)//绂荤嚎涓嶅厑璁告搷浣�
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 btnOpen.IsSelected = true;
                 btnClose.IsSelected = false;
                 btnStop.IsSelected = false;
@@ -280,16 +280,16 @@
             };
             btnUp.MouseUpEventHandler = (sender, e) =>
             {
-                if (!function.online)//绂荤嚎涓嶅厑璁告搷浣�
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!function.online)//绂荤嚎涓嶅厑璁告搷浣�
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 new System.Threading.Thread(() =>
                 {
                     System.Threading.Thread.Sleep(2000);
@@ -311,16 +311,16 @@
             };
             btnDown.MouseUpEventHandler = (sender, e) =>
             {
-                if (!function.online)//绂荤嚎涓嶅厑璁告搷浣�
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!function.online)//绂荤嚎涓嶅厑璁告搷浣�
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 new System.Threading.Thread(() =>
                 {
                     System.Threading.Thread.Sleep(2000);
diff --git a/HDL_ON/UI/UI2/2-Classification/FunctionPage.cs b/HDL_ON/UI/UI2/2-Classification/FunctionPage.cs
index 0d410f0..624ea5d 100644
--- a/HDL_ON/UI/UI2/2-Classification/FunctionPage.cs
+++ b/HDL_ON/UI/UI2/2-Classification/FunctionPage.cs
@@ -70,32 +70,7 @@
 
 
 #if DEBUG
-            Button testBtn = new Button()
-            {
-                X = Application.GetRealWidth(80),
-                Height = Application.GetRealHeight(64),
-                BackgroundColor = 0xFFFF0000
-            };
-            bodyView.AddChidren(testBtn);
-            int ddd = 0;
-            testBtn.MouseUpEventHandler = (sender, e) => {
-                ddd++;
-            
-                    Function function_online = FunctionList.List.GetLightList().Find((obj) => obj.sid == "0001017DB92D2602020100010101");
-                if (ddd % 2 == 0)
-                {
-                    function_online.online = true;
-                }
-                else
-                {
-                    function_online.online = false;
-                }
-                HomePage.LoadEvent_RefreshDevcieOnline(function_online);
-                FunctionPage.UpdataOnline(function_online);
-                RoomPage.UpdataOnline(function_online);
-
-
-            };
+       
 #endif
 
             /// <summary>
@@ -139,6 +114,7 @@
             };
             bodyView.AddChidren(functionListView);
 
+            //Tag 鏄剧ず鍒楄〃
             if (titleId == StringId.Lights)
             {
                 functionList.AddRange(FunctionList.List.GetLightList());
@@ -182,6 +158,10 @@
             {
                 functionList.AddRange(FunctionList.List.GetAirFreshList());
             }
+            else if (titleId == StringId.SmartPanel)
+            {
+                functionList.AddRange(FunctionList.List.GetPanelList());
+            }
             functionList.OrderByDescending(o => o.controlCounter).ToList();
 
             ShowFunctionRow(functionList);
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs
index f8370df..1dbfd7c 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs
@@ -61,6 +61,7 @@
                 //绌鸿皟
                 case SPK.AcStandard:
                 case SPK.HvacAC:
+                case SPK.HvacCac://姣涚粏绌鸿皟
                 //鍦扮儹
                 case SPK.FloorHeatStandard:
                 case SPK.HvacFloorHeat:
@@ -78,6 +79,22 @@
                         view.btnClick.MouseUpEventHandler += (sender, e) =>
                         {
                             DeviceView(device, view.btnState, StringId.onLogic, StringId.offLogic);
+                        };
+                        if (edit)
+                        {
+                            GetEditState(device, index, view.btnState, null, null, null);
+                        }
+                    }
+                    break;
+                //绱ф�ュ懠鍙�
+                case SPK.SensorHelp:
+                    {
+                        LogicView.FunTypeView view = new LogicView.FunTypeView();
+                        view.btnText.TextID = StringId.qiujiuandzhengchang;
+                        fLayout.AddChidren(view.FLayoutView());
+                        view.btnClick.MouseUpEventHandler += (sender, e) =>
+                        {
+                            DeviceView(device, view.btnState, StringId.qiujiu, StringId.zhengchang);
                         };
                         if (edit)
                         {
@@ -481,6 +498,7 @@
                     case SPK.SensorGas:
                     case SPK.SensorWater:
                     case SPK.SensorSmoke:
+                    case SPK.SensorHelp:
                         {
                             keyVlaue = "status";
                             if (!Is_SpkAttribute(keyVlaue)) {
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/FunTpye.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/FunTpye.cs
index 4cf6765..dbe2972 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/FunTpye.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/FunTpye.cs
@@ -9,13 +9,13 @@
     {
         public FunTpye(string str)
         {
-            if_type = str;
+            if_Type = str;
         }
         /// <summary>
         /// 琛ㄧず鏄�(鏉′欢/鐩爣)
         /// </summary>
-        private string if_type;
-
+        private string if_Type;
+        Loading loading = new Loading();
         /// <summary>
         /// 璁惧鍔熻兘ui
         /// </summary>
@@ -23,6 +23,7 @@
         /// <param name="bottm"></param>
         /// <param name="funCount">鏀寔鍔熻兘绫诲瀷涓暟<琛ㄧず涓婇潰鎵�鍗犻珮搴�></param>
         public void FunTypeView(FrameLayout viewLayout,int bottm,int funCount) {
+            viewLayout.AddChidren(loading);
             LogicView.FunAllAreaView funAllAreaView = new LogicView.FunAllAreaView();
             funAllAreaView.frameLayout.Y = bottm + Application.GetRealHeight(8);
             viewLayout.AddChidren(funAllAreaView.FLayoutView());
@@ -120,9 +121,9 @@
                         ///鍒囨崲鎴块棿榛樿:鍏ㄩ儴鍔熻兘
                         UserInfo.Current.logicselectedFunction = Language.StringByID(StringId.allFun);
                         ///鑾峰彇鏄剧ず璁惧鍒楄〃
-                        var list = LogicMethod.CurrLogicMethod.GetFunctionDeviceList(areaView.btnClick.Tag as Entity.Room, if_type);
+                        var list = LogicMethod.CurrLogicMethod.GetFunctionDeviceList(areaView.btnClick.Tag as Entity.Room, if_Type);
 
-                        DeviceListView(vv, list);
+                        this.LoadingDeviceListView(vv, list);
                     };
                     if (roomList.Count - 1 == i)
                     {
@@ -138,7 +139,7 @@
             {
 
                 //鑾峰彇鏈�缁堟樉绀哄垪琛�
-                var functionList = LogicMethod.CurrLogicMethod.GetFunctionDeviceList(UserInfo.Current.logicselectedRoom, if_type);
+                var functionList = LogicMethod.CurrLogicMethod.GetFunctionDeviceList(UserInfo.Current.logicselectedRoom, if_Type);
                 //鑾峰彇璁惧鍒楄〃鐨勭被鍨嬶紙渚嬪锛氱伅鍏夌被锛岀獥甯樼被銆傘�傘�傦級
                 var deviceTypeList = LogicMethod.CurrLogicMethod.GetDeviceTypeList(functionList);
                 if (deviceTypeList.Count == 0)
@@ -220,11 +221,11 @@
                         fLayout.RemoveFromParent();
                         funAllAreaView.btnText2.Text = areaView.btnClick.Tag.ToString();
                         UserInfo.Current.logicselectedFunction = areaView.btnClick.Tag.ToString();
-                        ///鑾峰彇鍗曚釜绫诲瀷锛堜緥濡傦細鐏厜绫汇�傘�傦級璁惧FunctionType鍒楄〃<绠�绉�:spk鍒楄〃>
+                        ///鑾峰彇璁惧鍗曚釜澶х被spk鍒楄〃锛堜緥濡�:鐏厜绫�,绌鸿皟绫�...锛�
                         var typeFunctionList2 = LogicMethod.CurrLogicMethod.GetDeviceTypeFunctionList(UserInfo.Current.logicselectedFunction);
-                        ///鑾峰彇鍗曚釜鐏厜绫诲瀷锛堜緥濡傦細鐏厜1,鐏厜2銆傘�傦級璁惧鍒楄〃
+                        ///鑾峰彇璁惧鍗曚釜灏忕被鍒楄〃锛堜緥濡傦細鐏厜1,鐏厜2...锛�
                         var lists2 = LogicMethod.CurrLogicMethod.GetShowDeviceList(typeFunctionList2, functionList);
-                        DeviceListView(vv, lists2);
+                       this.LoadingDeviceListView(vv, lists2);
 
                     };
                     if (deviceTypeList.Count - 1 == i)
@@ -237,16 +238,17 @@
             funAllAreaView.btnText2.MouseUpEventHandler += funClick;
             funAllAreaView.btnIcon2.MouseUpEventHandler += funClick;
             ///鑾峰彇鎴块棿鏀寔鐨勮澶囧垪琛�
-            var deviceList = LogicMethod.CurrLogicMethod.GetFunctionDeviceList(UserInfo.Current.logicselectedRoom, if_type);
-            ///鑾峰彇鍗曚釜绫诲瀷锛堜緥濡�:鐏厜绫汇�傘�傦級璁惧FunctionType鍒楄〃<绠�绉�:spk鍒楄〃>
+            var deviceList = LogicMethod.CurrLogicMethod.GetFunctionDeviceList(UserInfo.Current.logicselectedRoom, if_Type);
+            ///鑾峰彇璁惧鍗曚釜澶х被spk鍒楄〃锛堜緥濡�:鐏厜绫�,绌鸿皟绫�...锛�
             var typeFunctionList = LogicMethod.CurrLogicMethod.GetDeviceTypeFunctionList(UserInfo.Current.logicselectedFunction);
-            ///鑾峰彇鍗曚釜鐏厜绫诲瀷锛堜緥濡傦細鐏厜1,鐏厜2銆傘�傦級璁惧鍒楄〃
+            ///鑾峰彇璁惧鍗曚釜灏忕被鍒楄〃锛堜緥濡傦細鐏厜1,鐏厜2...锛�
             var lists = LogicMethod.CurrLogicMethod.GetShowDeviceList(typeFunctionList, deviceList);
             ///鎴块棿鍚嶇О
             funAllAreaView.btnText1.Text = UserInfo.Current.logicselectedRoom.roomName;
-            ///鍔熻兘绫诲瀷鍚嶇О<鐏厜绫汇�傘�傘�傘�傘��>
+            ///璁惧澶х被鍚嶇О<鐏厜绫汇�傘�傘�傘�傘��>
             funAllAreaView.btnText2.Text = UserInfo.Current.logicselectedFunction;
-            DeviceListView(vv, lists);
+            this.LoadingDeviceListView(vv, lists);
+
         }
 
 
@@ -255,40 +257,50 @@
         /// </summary>
         /// <param name="verticalScrolView">涓婁笅婊戝姩</param>
         /// <param name="deviceList"></param>
-        public void DeviceListView(VerticalScrolViewLayout verticalScrolView, List<HDL_ON.Entity.Function> deviceList)
+        private void LoadingDeviceListView(VerticalScrolViewLayout verticalScrolView, List<HDL_ON.Entity.Function> deviceList)
         {
-
-            verticalScrolView.RemoveAll();
-            foreach (var dev in deviceList)
+            loading.Start();
+            System.Threading.Tasks.Task.Run(() =>
             {
-                LogicView.SelectTypeView funView = new LogicView.SelectTypeView();
-                funView.btnText.Visible = false;
-                funView.btnDeviceName.Visible = true;
-                funView.btnRoomName.Visible = true;
-                funView.btnLine.X = Application.GetRealWidth(16);
-                funView.btnLine.Width = Application.GetRealWidth(343);
-                verticalScrolView.AddChidren(funView.FLayoutView());
-                funView.btnIcon.UnSelectedImagePath = LogicMethod.CurrLogicMethod.GetIconPath(dev.spk);
-                funView.btnDeviceName.Text = dev.name;
-                funView.btnRoomName.Text = dev.GetRoomListName();
-                funView.btnClick.MouseUpEventHandler += (sen, e) => {
-                    if (if_type == LogicMethod.condition_if)
+                Application.RunOnMainThread(() =>
+                {
+                    loading.Hide();
+                    verticalScrolView.RemoveAll();
+                    foreach (var dev in deviceList)
                     {
-                        ConditionDeviceFunList conditionDeviceFunList = new ConditionDeviceFunList();
-                        MainPage.BasePageView.AddChidren(conditionDeviceFunList);
-                        conditionDeviceFunList.Show(dev, 0, false);
-                        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-                    }
-                    else
-                    {
-                        TargetDeviceFunList targetDeviceFunList = new TargetDeviceFunList();
-                        MainPage.BasePageView.AddChidren(targetDeviceFunList);
-                        targetDeviceFunList.Show(dev, 0, false);
-                        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-                    }
+                        LogicView.SelectTypeView funView = new LogicView.SelectTypeView();
+                        funView.btnText.Visible = false;
+                        funView.btnDeviceName.Visible = true;
+                        funView.btnRoomName.Visible = true;
+                        funView.btnLine.X = Application.GetRealWidth(16);
+                        funView.btnLine.Width = Application.GetRealWidth(343);
+                        verticalScrolView.AddChidren(funView.FLayoutView());
+                        funView.btnIcon.UnSelectedImagePath = LogicMethod.CurrLogicMethod.GetIconPath(dev.spk);
+                        funView.btnDeviceName.Text = dev.name;
+                        funView.btnRoomName.Text = dev.GetRoomListName();
+                        funView.btnClick.MouseUpEventHandler += (sen, e) =>
+                        {
+                            if (if_Type == LogicMethod.condition_if)
+                            {
+                                ConditionDeviceFunList conditionDeviceFunList = new ConditionDeviceFunList();
+                                MainPage.BasePageView.AddChidren(conditionDeviceFunList);
+                                conditionDeviceFunList.Show(dev, 0, false);
+                                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                            }
+                            else
+                            {
+                                TargetDeviceFunList targetDeviceFunList = new TargetDeviceFunList();
+                                MainPage.BasePageView.AddChidren(targetDeviceFunList);
+                                targetDeviceFunList.Show(dev, 0, false);
+                                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                            }
 
-                };
-            }
+                        };
+                    }
+                   
+                });
+
+            });
         }
     }
 
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs
index b9c6f17..646c43e 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs
@@ -176,6 +176,23 @@
                                     }
                                     break;
                                 //浼犳劅鍣�
+                                case SPK.SensorHelp:
+                                    {
+                                        foreach (var dic in dicList)
+                                        {
+                                            string value = dic["value"];
+                                            if (value == "alarm")
+                                            {
+                                                inputView.btnState.Text = Language.StringByID(StringId.qiujiu);
+
+                                            }
+                                            else
+                                            {
+                                                inputView.btnState.Text = Language.StringByID(StringId.zhengchang);
+                                            }
+                                        }
+                                    }
+                                    break;
                                 case SPK.SensorSmoke:
                                 case SPK.SensorGas:
                                     {
@@ -992,8 +1009,6 @@
                                     }
                                     break;
                                 case SPK.CurtainSwitch:
-                                case SPK.CurtainTrietex:
-                                case SPK.CurtainRoller:
                                     {
                                         foreach (var dic in dicList)
                                         {
@@ -1016,6 +1031,29 @@
                                                     }
                                                     break;
                                             }
+                                        }
+                                    }
+                                    break;
+                                case SPK.CurtainTrietex:
+                                case SPK.CurtainRoller:
+                                    {
+                                        string on_off = GetKeyValue("on_off", dicList);
+                                        string percent = GetKeyValue("percent", dicList); 
+                                        if (on_off == "on" && percent != "")
+                                        {
+                                            stateStr = Language.StringByID(StringId.onLogic) + percent + "%";
+                                        }
+                                        else if (on_off == "on")
+                                        {
+                                            stateStr = Language.StringByID(StringId.onLogic);
+                                        }
+                                        else if (on_off == "off")
+                                        {
+                                            stateStr = Language.StringByID(StringId.offLogic);
+                                        }
+                                        else if (percent != "")
+                                        {
+                                            stateStr = percent + "%";
                                         }
                                     }
                                     break;
@@ -1455,8 +1493,6 @@
                     }
                     break;
                 case SPK.CurtainSwitch:
-                case SPK.CurtainTrietex:
-                case SPK.CurtainRoller:
                     {
                         foreach (var dic in dicList)
                         {
@@ -1480,6 +1516,52 @@
                                     break;
                             }
                         }
+                    }
+                    break;
+                case SPK.CurtainTrietex:
+                case SPK.CurtainRoller:
+                    {
+                        foreach (var dic in dicList)
+                        {
+                            string value = dic["value"];
+                            switch (dic["key"])
+                            {
+                                case "on_off":
+                                    {
+                                        switch (value)
+                                        {
+                                            case "on":
+                                                {
+                                                    button1.Text = Language.StringByID(StringId.onLogic);
+                                                }
+                                                break;
+                                            case "off":
+                                                {
+                                                    button1.Text = Language.StringByID(StringId.offLogic);
+                                                }
+                                                break;
+                                            case "stop":
+                                                {
+                                                    button1.Text = Language.StringByID(StringId.stop);
+                                                }
+                                                break;
+                                        }
+                                    }
+                                    break;
+                                case "percent":
+                                    {
+                                        if (button2 == null)
+                                        {
+                                            //鎬曡皟璇曡蒋浠朵贡涓婁笢瑗垮鑷存姏寮傚父
+                                            break;
+                                        }
+                                        button2.Text = value + "%";
+                                    }
+                                    break;
+                            }
+
+                        }
+                        
                     }
                     break;
                 case SPK.AcStandard:
@@ -1743,6 +1825,22 @@
 
                         }
 
+                    }
+                    break;
+                case SPK.SensorHelp:
+                    {
+                        foreach (var dic in dicList)
+                        {
+                            string value = dic["value"];
+                            if (value == "alarm")
+                            {
+                                button1.Text = Language.StringByID(StringId.qiujiu);
+                            }
+                            else
+                            {
+                                button1.Text = Language.StringByID(StringId.zhengchang);
+                            }
+                        }
                     }
                     break;
                 case SPK.SensorGas:
@@ -2147,11 +2245,11 @@
             //纭畾鐐瑰嚮浜嬩欢
             timePointView.btnConfirm.MouseUpEventHandler += (sender, e3) =>
             {
-                if (timepoint == 0)
-                {
-                    //鎻愮ず
-                    return;
-                }
+                //if (timepoint == 0)
+                //{
+                //    //鎻愮ず
+                //    return;
+                //}
                 fLayout.RemoveFromParent();
                 action(timepoint);
             };
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs
index bd6a462..8bfe344 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs
@@ -6,494 +6,499 @@
 namespace HDL_ON.UI.UI2.Intelligence.Automation
 {
 
-  public class LogicMethod
-  {
-    /// <summary>
-    /// 瀹氫箟涓�涓潤鎬佸璞�
-    /// </summary>
-    private static LogicMethod logicMethod = null;
-    /// <summary>
-    /// 鑾峰彇闈欐�佸璞�
-    /// </summary>
-    public static LogicMethod CurrLogicMethod
+    public class LogicMethod
     {
-      get
-      {
-        if (logicMethod == null)
+        /// <summary>
+        /// 瀹氫箟涓�涓潤鎬佸璞�
+        /// </summary>
+        private static LogicMethod logicMethod = null;
+        /// <summary>
+        /// 鑾峰彇闈欐�佸璞�
+        /// </summary>
+        public static LogicMethod CurrLogicMethod
         {
-          return new LogicMethod();
+            get
+            {
+                if (logicMethod == null)
+                {
+                    return new LogicMethod();
+                }
+                return logicMethod;
+            }
+
         }
-        return logicMethod;
-      }
 
-    }
+        /// <summary>
+        /// 琛ㄧず鏄潯浠�
+        /// </summary>
+        public const string condition_if = "鏉′欢";
+        /// <summary>
+        /// 琛ㄧず鏄洰鏍�
+        /// </summary>
+        public const string target_if = "鐩爣";
+        /// <summary>
+        /// 绉婚櫎鎵�鏈�"Logic"鐣岄潰
+        /// </summary>
+        public void RemoveAllView()
+        {
+            MainPage.BasePageView.RemoveViewByTag("Logic");
+        }
 
-    /// <summary>
-    /// 琛ㄧず鏄潯浠�
-    /// </summary>
-    public const string condition_if = "鏉′欢";
-    /// <summary>
-    /// 琛ㄧず鏄洰鏍�
-    /// </summary>
-    public const string target_if = "鐩爣";
-    /// <summary>
-    /// 绉婚櫎鎵�鏈�"Logic"鐣岄潰
-    /// </summary>
-    public void RemoveAllView()
-    {
-      MainPage.BasePageView.RemoveViewByTag("Logic");
-    }
+        /// <summary> Converts an array of bytes into a formatted string of hex digits (ex: E4 CA B2)</summary>
+        /// <param name="data"> The array of bytes to be translated into a string of hex digits. </param>
+        /// <returns> Returns a well formatted string of hex digits with spacing. </returns>
+        public string byteArrayToHexString(byte[] data)
+        {
+            System.Text.StringBuilder sb = new System.Text.StringBuilder();
+            foreach (byte b in data)
+            {
+                sb.Append(Convert.ToString(b, 16).PadLeft(2, '0'));
+            }
 
-    /// <summary> Converts an array of bytes into a formatted string of hex digits (ex: E4 CA B2)</summary>
-    /// <param name="data"> The array of bytes to be translated into a string of hex digits. </param>
-    /// <returns> Returns a well formatted string of hex digits with spacing. </returns>
-    public string byteArrayToHexString(byte[] data)
-    {
-      System.Text.StringBuilder sb = new System.Text.StringBuilder();
-      foreach (byte b in data)
-      {
-        sb.Append(Convert.ToString(b, 16).PadLeft(2, '0'));
-      }
+            return sb.ToString().ToUpper();
+        }
 
-      return sb.ToString().ToUpper();
-    }
-
-    /**
-* int杞琤yte[]
-* 璇ユ柟娉曞皢涓�涓猧nt绫诲瀷鐨勬暟鎹浆鎹负byte[]褰㈠紡锛屽洜涓篿nt涓�32bit锛岃�宐yte涓�8bit鎵�浠ュ湪杩涜绫诲瀷杞崲鏃讹紝鐭ヤ細鑾峰彇浣�8浣嶏紝
-* 涓㈠純楂�24浣嶃�傞�氳繃浣嶇Щ鐨勬柟寮忥紝灏�32bit鐨勬暟鎹浆鎹㈡垚4涓�8bit鐨勬暟鎹�傛敞鎰� &0xff锛屽湪杩欏綋涓紝&0xff绠�鍗曠悊瑙d负涓�鎶婂壀鍒�锛�
-* 灏嗘兂瑕佽幏鍙栫殑8浣嶆暟鎹埅鍙栧嚭鏉ャ��
-* @param i 涓�涓猧nt鏁板瓧
-* @return byte[]
+        /**
+    * int杞琤yte[]
+    * 璇ユ柟娉曞皢涓�涓猧nt绫诲瀷鐨勬暟鎹浆鎹负byte[]褰㈠紡锛屽洜涓篿nt涓�32bit锛岃�宐yte涓�8bit鎵�浠ュ湪杩涜绫诲瀷杞崲鏃讹紝鐭ヤ細鑾峰彇浣�8浣嶏紝
+    * 涓㈠純楂�24浣嶃�傞�氳繃浣嶇Щ鐨勬柟寮忥紝灏�32bit鐨勬暟鎹浆鎹㈡垚4涓�8bit鐨勬暟鎹�傛敞鎰� &0xff锛屽湪杩欏綋涓紝&0xff绠�鍗曠悊瑙d负涓�鎶婂壀鍒�锛�
+    * 灏嗘兂瑕佽幏鍙栫殑8浣嶆暟鎹埅鍙栧嚭鏉ャ��
+    * @param i 涓�涓猧nt鏁板瓧
+    * @return byte[]
 */
-    public byte[] int2ByteArray(int i)
-    {
-      byte[] result = new byte[4];
-      result[0] = (byte)((i >> 24) & 0xFF);
-      result[1] = (byte)((i >> 16) & 0xFF);
-      result[2] = (byte)((i >> 8) & 0xFF);
-      result[3] = (byte)(i & 0xFF);
-      return result;
-    }
-    /// <summary>
-    /// 鑾峰彇鏃堕棿鎴�
-    /// </summary>
-    /// <returns></returns>
-    public int getTimeStamp()
-    {
-      TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
-      return (int)ts.TotalSeconds;
-    }
-    /// <summary>
-    /// 鐢熸垚閫昏緫sid鏂规硶
-    /// </summary>
-    public string NewSid()
-    {
-      string logicId = "";
-      try
-      {
-        string sOidBeginsWith = "000101";//鍘傚晢 + 閫氳鏂瑰紡
-        DateTime dt = DateTime.Now;
-        DateTime startTime = TimeZoneInfo.ConvertTimeToUtc(new DateTime(2020, 1, 1));
-        long m = (long)((dt - startTime).TotalMilliseconds / 10);
-        string sTimeSpan = byteArrayToHexString(int2ByteArray(getTimeStamp()));
-
-
-
-        logicId = sOidBeginsWith + sTimeSpan;
-
-        logicId += "15";
-        logicId += "1501";
-        //1501 鐗╂ā鍨嬩负閫昏緫锛� 0001 琛ㄧず 1 鍙烽�昏緫鍔熻兘
-        int maxId = 1;
-
-
-        for (int i = 0; i < Logic.LogicList.Count; i++)
+        public byte[] int2ByteArray(int i)
         {
-          string s = Logic.LogicList[i].sid.Substring(20, 4);
-          int iThisSceneId = Convert.ToInt16(s, 16);
-          if (iThisSceneId > maxId)
-            maxId = iThisSceneId;
+            byte[] result = new byte[4];
+            result[0] = (byte)((i >> 24) & 0xFF);
+            result[1] = (byte)((i >> 16) & 0xFF);
+            result[2] = (byte)((i >> 8) & 0xFF);
+            result[3] = (byte)(i & 0xFF);
+            return result;
+        }
+        /// <summary>
+        /// 鑾峰彇鏃堕棿鎴�
+        /// </summary>
+        /// <returns></returns>
+        public int getTimeStamp()
+        {
+            TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
+            return (int)ts.TotalSeconds;
+        }
+        /// <summary>
+        /// 鐢熸垚閫昏緫sid鏂规硶
+        /// </summary>
+        public string NewSid()
+        {
+            string logicId = "";
+            try
+            {
+                string sOidBeginsWith = "000101";//鍘傚晢 + 閫氳鏂瑰紡
+                DateTime dt = DateTime.Now;
+                DateTime startTime = TimeZoneInfo.ConvertTimeToUtc(new DateTime(2020, 1, 1));
+                long m = (long)((dt - startTime).TotalMilliseconds / 10);
+                string sTimeSpan = byteArrayToHexString(int2ByteArray(getTimeStamp()));
+
+
+
+                logicId = sOidBeginsWith + sTimeSpan;
+
+                logicId += "15";
+                logicId += "1501";
+                //1501 鐗╂ā鍨嬩负閫昏緫锛� 0001 琛ㄧず 1 鍙烽�昏緫鍔熻兘
+                int maxId = 1;
+
+
+                for (int i = 0; i < Logic.LogicList.Count; i++)
+                {
+                    string s = Logic.LogicList[i].sid.Substring(20, 4);
+                    int iThisSceneId = Convert.ToInt16(s, 16);
+                    if (iThisSceneId > maxId)
+                        maxId = iThisSceneId;
+                }
+
+                logicId += (maxId + 1).ToString("X4");//閫昏緫鍙� 涓や釜byte 
+                logicId += "0000";
+            }
+            catch
+            {
+                return logicId;
+            }
+            return logicId;
+        }
+        /// <summary>
+        /// 灏佽Dictionary瀵硅薄
+        /// </summary>
+        /// <param name="dic">Dictionary绫�</param>
+        /// <param name="key">鍋�</param>
+        /// <param name="value">鍊�</param>
+        public void dictionary(Dictionary<string, string> dic, string key, string value)
+        {
+            if (dic.ContainsKey(key)) //鍒ゆ柇鏄惁瀛樺湪閿��
+            {
+                //閿瓨鍦ㄧЩ闄�
+                dic.Remove(key);
+            }
+            //娣诲姞閿��
+            dic.Add(key, value);
+        }
+        /// <summary>
+        /// 鑾峰彇缃戝叧鎴块棿鍒楄〃
+        /// </summary>
+        /// <returns></returns>
+        public List<HDL_ON.Entity.Room> GetGatewayRoomList()
+        {
+            return HDL_ON.Entity.SpatialInfo.CurrentSpatial.RoomList;
+        }
+        /// <summary>
+        /// 鑾峰彇缃戝叧鎴块棿鍒楄〃
+        /// </summary>
+        /// <returns></returns>
+        public List<HDL_ON.Entity.Room> GetGatewayRoomList(string name)
+        {
+            List<Entity.Room> roomList = new List<Entity.Room>();
+            Entity.Room room1 = new Entity.Room();
+            room1.roomName = name;//鑷畾涔夐粯璁や竴涓埧闂村悕涓�:6688
+            room1.roomId = "6688";//鑷畾涔夐粯璁d鐢ㄨ瘑鍒鎴块棿
+            roomList.Add(room1);//榛樿娣诲姞鍒版埧闂村垪琛ㄩ噷
+            var roomLists = GetGatewayRoomList();
+            for (int i = 0; i < roomLists.Count; i++)
+            {
+                var room = roomLists[i];
+                var devlist = GetRoomDevice(room);
+                if (devlist.Count == 0)
+                {
+                    //杩囨护鎺夋病鏈夎澶囩殑鎴块棿;
+                    continue;
+                }
+                roomList.Add(room);
+            }
+            return roomList;
+        }
+        /// <summary>
+        /// 鑾峰彇缃戝叧璁惧鍒楄〃
+        /// </summary>
+        /// <returns></returns>
+        public List<HDL_ON.Entity.Function> GetGatewayDeviceList()
+        {
+            return Entity.FunctionList.List.GetDeviceFunctionList();
+        }
+        /// <summary>
+        /// 鑾峰彇鍦烘櫙鍒楄〃
+        /// </summary>
+        /// <returns></returns>
+        public List<HDL_ON.Entity.Scene> GetSceneList()
+        {
+            return HDL_ON.Entity.FunctionList.List.scenes;
         }
 
-        logicId += (maxId + 1).ToString("X4");//閫昏緫鍙� 涓や釜byte 
-        logicId += "0000";
-      }
-      catch
-      {
-        return logicId;
-      }
-      return logicId;
-    }
-    /// <summary>
-    /// 灏佽Dictionary瀵硅薄
-    /// </summary>
-    /// <param name="dic">Dictionary绫�</param>
-    /// <param name="key">鍋�</param>
-    /// <param name="value">鍊�</param>
-    public void dictionary(Dictionary<string, string> dic, string key, string value)
-    {
-      if (dic.ContainsKey(key)) //鍒ゆ柇鏄惁瀛樺湪閿��
-      {
-        //閿瓨鍦ㄧЩ闄�
-        dic.Remove(key);
-      }
-      //娣诲姞閿��
-      dic.Add(key, value);
-    }
-    /// <summary>
-    /// 鑾峰彇缃戝叧鎴块棿鍒楄〃
-    /// </summary>
-    /// <returns></returns>
-    public List<HDL_ON.Entity.Room> GetGatewayRoomList()
-    {
-      return HDL_ON.Entity.SpatialInfo.CurrentSpatial.RoomList;
-    }
-    /// <summary>
-    /// 鑾峰彇缃戝叧鎴块棿鍒楄〃
-    /// </summary>
-    /// <returns></returns>
-    public List<HDL_ON.Entity.Room> GetGatewayRoomList(string name)
-    {
-      List<Entity.Room> roomList = new List<Entity.Room>();
-      Entity.Room room1 = new Entity.Room();
-      room1.roomName = name;//鑷畾涔夐粯璁や竴涓埧闂村悕涓�:6688
-      room1.roomId = "6688";//鑷畾涔夐粯璁d鐢ㄨ瘑鍒鎴块棿
-      roomList.Add(room1);//榛樿娣诲姞鍒版埧闂村垪琛ㄩ噷
-      var roomLists = GetGatewayRoomList();
-      for (int i = 0; i < roomLists.Count; i++)
-      {
-        var room = roomLists[i];
-        var devlist = GetRoomDevice(room);
-        if (devlist.Count == 0)
+        /// <summary>
+        /// 鑾峰彇瀹夐槻鍒楄〃
+        /// </summary>
+        /// <returns></returns>
+        public List<HDL_ON.Entity.SecurityAlarm> GetSecurityList()
         {
-          //杩囨护鎺夋病鏈夎澶囩殑鎴块棿;
-          continue;
+            return FunctionList.List.securities;
         }
-        roomList.Add(room);
-      }
-      return roomList;
-    }
-    /// <summary>
-    /// 鑾峰彇缃戝叧璁惧鍒楄〃
-    /// </summary>
-    /// <returns></returns>
-    public List<HDL_ON.Entity.Function> GetGatewayDeviceList()
-    {
-      return Entity.FunctionList.List.GetDeviceFunctionList();
-    }
-    /// <summary>
-    /// 鑾峰彇鍦烘櫙鍒楄〃
-    /// </summary>
-    /// <returns></returns>
-    public List<HDL_ON.Entity.Scene> GetSceneList()
-    {
-      return HDL_ON.Entity.FunctionList.List.scenes;
-    }
-
-    /// <summary>
-    /// 鑾峰彇瀹夐槻鍒楄〃
-    /// </summary>
-    /// <returns></returns>
-    public List<HDL_ON.Entity.SecurityAlarm> GetSecurityList()
-    {
-      return FunctionList.List.securities;
-    }
-    /// <summary>
-    /// 鑾峰彇鎴块棿鐨勮澶囧垪琛�
-    /// </summary>
-    /// <param name="room">褰撳墠鎴块棿</param>
-    /// <returns></returns>
-    public List<HDL_ON.Entity.Function> GetRoomDevice(HDL_ON.Entity.Room room)
-    {
-      List<HDL_ON.Entity.Function> deviceLists = new List<Entity.Function>();
-      List<HDL_ON.Entity.Function> lists = GetGatewayDeviceList();
-      if (room.roomId == "6688")
-      {
-        //榛樿涓�涓埧闂村悕锛�6688
-        //鏄剧ず缃戝叧鍏ㄩ儴璁惧
-        deviceLists = lists;
-      }
-      else
-      {
-        for (int i = 0; i < lists.Count; i++)
+        /// <summary>
+        /// 鑾峰彇鎴块棿鐨勮澶囧垪琛�
+        /// </summary>
+        /// <param name="room">褰撳墠鎴块棿</param>
+        /// <returns></returns>
+        public List<HDL_ON.Entity.Function> GetRoomDevice(HDL_ON.Entity.Room room)
         {
-          var dev = lists[i];
-          if (dev.roomIds.Find((id) => id == room.roomId) != null)
-          {
-            //娣诲姞灞炰簬杩欎釜鎴块棿鐨勮澶�;
-            deviceLists.Add(dev);
-          }
+            List<HDL_ON.Entity.Function> deviceLists = new List<Entity.Function>();
+            List<HDL_ON.Entity.Function> lists = GetGatewayDeviceList();
+            if (room.roomId == "6688")
+            {
+                //榛樿涓�涓埧闂村悕锛�6688
+                //鏄剧ず缃戝叧鍏ㄩ儴璁惧
+                deviceLists = lists;
+            }
+            else
+            {
+                for (int i = 0; i < lists.Count; i++)
+                {
+                    var dev = lists[i];
+                    if (dev.roomIds.Find((id) => id == room.roomId) != null)
+                    {
+                        //娣诲姞灞炰簬杩欎釜鎴块棿鐨勮澶�;
+                        deviceLists.Add(dev);
+                    }
+
+                }
+            }
+            return deviceLists;
+        }
+        /// <summary>
+        /// 鑾峰彇璁惧锛堝姛鑳斤級瀵硅薄
+        /// </summary>
+        /// <param name="sid">璁惧鍞竴鏍囪瘑</param>
+        /// <returns></returns>
+        public HDL_ON.Entity.Function GetDevice(string sid)
+        {
+            HDL_ON.Entity.Function device = new Entity.Function() { name = "Unknown" };
+            List<HDL_ON.Entity.Function> deviceLists = GetGatewayDeviceList();
+            for (int i = 0; i < deviceLists.Count; i++)
+            {
+                var dev = deviceLists[i];
+                if (dev.sid == sid)
+                {
+                    device = dev;
+                    break;
+                }
+            }
+            return device;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鍦烘櫙瀵硅薄
+        /// </summary>
+        /// <param name="sid">鍦烘櫙鍞竴鏍囪瘑</param>
+        /// <returns></returns>
+        public HDL_ON.Entity.Scene GetSecne(string sid)
+        {
+            HDL_ON.Entity.Scene scene = new Entity.Scene() { name = "Unknown" };
+            List<HDL_ON.Entity.Scene> sceneLists = GetSceneList();
+            for (int i = 0; i < sceneLists.Count; i++)
+            {
+                var sce = sceneLists[i];
+                if (sce.sid == sid)
+                {
+                    scene = sce;
+                    break;
+                }
+            }
+            return scene;
+        }
+        /// <summary>
+        /// 鑾峰彇瀹夐槻瀵硅薄
+        /// </summary>
+        /// <param name="sid">瀹夐槻鍞竴鏍囪瘑</param>
+        /// <returns></returns>
+        public HDL_ON.Entity.SecurityAlarm GetSecurity(string sid)
+        {
+            HDL_ON.Entity.SecurityAlarm security = new Entity.SecurityAlarm() { name = "Unknown" };
+            List<HDL_ON.Entity.SecurityAlarm> SecurityLists = GetSecurityList();
+            for (int i = 0; i < SecurityLists.Count; i++)
+            {
+                var sce = SecurityLists[i];
+                if (sce.sid == sid)
+                {
+                    security = sce;
+                    break;
+                }
+            }
+            return security;
+        }
+        /// <summary>
+        /// 鑾峰彇鎴块棿鍚�(鍗虫槸=鍖哄煙鍚嶇О)
+        /// </summary>
+        /// <param name="device">璁惧</param>
+        /// <returns></returns>
+        public string GetGetRoomName(HDL_ON.Entity.Function device)
+        {
+            string roomName = "";
+            List<HDL_ON.Entity.Room> roomLists = GetGatewayRoomList();
+            for (int i = 0; i < device.roomIds.Count; i++)
+            {
+                var dev = device.roomIds[i];
+                var room = roomLists.Find((c) => c.roomId == dev);
+                if (room != null)
+                {
+                    roomName += room.floorName + "." + room.roomName + ",";
+                }
+            }
+
+            return roomName.TrimEnd(',');
+        }
+        #region   鍔ㄤ竴鏀瑰洓
+        /// <summary>
+        /// 鑾峰彇璁惧绫诲瀷鍥炬爣
+        /// </summary>
+        /// <param name="functionType">璁惧绫诲瀷</param>
+        /// <returns></returns>
+        public string GetIconPath(string functionType)
+        {
+            string strPath = "";
+            switch (functionType)
+            {
+
+                case SPK.AirSwitch:
+                    {
+                        strPath = "FunctionIcon/Icon/electricalbreaker.png";
+                    }
+                    break;
+                case SPK.PanelSocket:
+                case SPK.ElectricSocket:
+                    {
+                        strPath = "FunctionIcon/Icon/electricalsocket.png";
+                    }
+                    break;
+                case SPK.LightSwitch:
+                case SPK.LightRGB:
+                case SPK.LightRGBW:
+                case SPK.LightCCT:
+                case SPK.LightDimming:
+                    {
+                        strPath = "LogicIcon/lightloguc.png";
+                    }
+                    break;
+                case SPK.CurtainSwitch:
+                case SPK.CurtainRoller:
+                case SPK.CurtainTrietex:
+                    {
+                        strPath = "LogicIcon/curtainlogic.png";
+                    }
+                    break;
+                case SPK.AcStandard:
+                case SPK.HvacAC:
+                    {
+                        strPath = "LogicIcon/airconditionerlogic.png";
+                    }
+                    break;
+                case SPK.HvacCac:
+                    strPath = "FunctionIcon/Icon/hvaccac.png";
+                    break;
+                case SPK.FloorHeatStandard:
+                case SPK.HvacFloorHeat:
+                    {
+                        strPath = "LogicIcon/heatlogic.png";
+                    }
+                    break;
+                case SPK.AirFreshStandard:
+                case SPK.HvacAirFresh:
+                    {
+                        strPath = "LogicIcon/heatlogic.png";
+                    }
+                    break;
+                case SPK.SensorSmoke:
+                case SPK.SensorWater:
+                case SPK.SensorGas:
+                case SPK.SensorDryContact:
+                case SPK.SensorDryContact2:
+                case SPK.SensorShanLan:
+                case SPK.SensorDuiShe:
+                case SPK.SensorPir:
+                case SPK.SensorDoorWindow:
+                case SPK.SensorUtrasonic:
+                case SPK.SenesorMegahealth:
+                case SPK.SenesorMegahealth2:
+                case SPK.SensorEnvironment:
+                case SPK.SensorEnvironment2:
+                case SPK.SensorEnvironment3:
+                case SPK.SensorTemperature:
+                case SPK.SensorHumidity:
+                case SPK.SensorCO2:
+                case SPK.SensorPm25:
+                case SPK.SensorTVOC:
+                case SPK.SensorHcho:
+                case SPK.SensorHelp:
+                    {
+                        strPath = "LogicIcon/sensor.png";
+                    }
+                    break;
+
+            }
+            return strPath;
+        }
+        /// <summary>
+        /// 璁惧绫诲瀷鐨勫垪琛�(鐏厜绫伙紝绐楀笜绫汇�傘�傘��)
+        /// </summary>
+        /// <param name="deviceList">璁惧鍒楄〃</param>
+        /// <returns></returns>
+        public List<string> GetDeviceTypeList(List<HDL_ON.Entity.Function> deviceList)
+        {
+            List<string> deviceStrTypeList = new List<string>();
+            deviceStrTypeList.Clear();
+            ///鐏厜绫�
+            var lightjosn = deviceList.Find((device) =>
+            device.spk == SPK.LightSwitch
+            || device.spk == SPK.LightDimming
+            || device.spk == SPK.LightCCT
+            || device.spk == SPK.LightRGB
+            || device.spk == SPK.LightRGBW
+            );
+            if (lightjosn != null)
+            {
+                deviceStrTypeList.Add(Language.StringByID(StringId.Lights));
+            }
+
+            ///绐楀笜绫�
+            var curtainjosn = deviceList.Find((device) =>
+            device.spk == SPK.CurtainSwitch
+            || device.spk == SPK.CurtainTrietex
+            || device.spk == SPK.CurtainRoller);
+            if (curtainjosn != null)
+            {
+                deviceStrTypeList.Add(Language.StringByID(StringId.Curtain));
+            }
+            ///绌鸿皟绫�
+            var ac = deviceList.Find((device) => device.spk == SPK.AcStandard || device.spk == SPK.HvacAC);
+            if (ac != null)
+            {
+                deviceStrTypeList.Add(Language.StringByID(StringId.AC));
+            }
+            ///鍦版殩绫�
+            var floorHeating = deviceList.Find((device) => device.spk == SPK.FloorHeatStandard || device.spk == SPK.HvacFloorHeat);
+            if (floorHeating != null)
+            {
+                deviceStrTypeList.Add(Language.StringByID(StringId.FloorHeating));
+            }
+            ///鏂伴绫�
+            var airFresh = deviceList.Find((device) => device.spk == SPK.AirFreshStandard || device.spk == SPK.HvacAirFresh);
+            if (airFresh != null)
+            {
+                deviceStrTypeList.Add(Language.StringByID(StringId.AirFresh));
+            }
+            ///浼犳劅鍣ㄧ被
+            var sensor = deviceList.Find((device) =>
+            device.spk == SPK.SensorWater
+            || device.spk == SPK.SensorGas
+            || device.spk == SPK.SensorSmoke
+            || device.spk == SPK.SensorDryContact || device.spk == SPK.SensorDryContact2
+            || device.spk == SPK.SensorShanLan
+            || device.spk == SPK.SensorDuiShe
+            || device.spk == SPK.SensorPir
+            || device.spk == SPK.SensorDoorWindow
+            || device.spk == SPK.SensorUtrasonic
+            || device.spk == SPK.SenesorMegahealth
+            || device.spk == SPK.SenesorMegahealth2
+            || device.spk == SPK.SensorEnvironment
+             || device.spk == SPK.SensorEnvironment2
+              || device.spk == SPK.SensorEnvironment3
+                || device.spk == SPK.SensorTemperature
+                  || device.spk == SPK.SensorHumidity
+                    || device.spk == SPK.SensorCO2
+                      || device.spk == SPK.SensorPm25
+                        || device.spk == SPK.SensorTVOC
+                          || device.spk == SPK.SensorHcho
+                          || device.spk == SPK.SensorHelp
+            );
+            if (sensor != null)
+            {
+                deviceStrTypeList.Add(Language.StringByID(StringId.Sensor));
+            }
+            ///瀹剁數绫�
+            var electric = deviceList.Find((device) =>
+            device.spk == SPK.AirSwitch
+            || device.spk == SPK.PanelSocket
+            || device.spk == SPK.ElectricSocket
+            );
+            if (electric != null)
+            {
+                deviceStrTypeList.Add(Language.StringByID(StringId.Electric));
+            }
+            return deviceStrTypeList;
 
         }
-      }
-      return deviceLists;
-    }
-    /// <summary>
-    /// 鑾峰彇璁惧锛堝姛鑳斤級瀵硅薄
-    /// </summary>
-    /// <param name="sid">璁惧鍞竴鏍囪瘑</param>
-    /// <returns></returns>
-    public HDL_ON.Entity.Function GetDevice(string sid)
-    {
-      HDL_ON.Entity.Function device = new Entity.Function() { name = "Unknown" };
-      List<HDL_ON.Entity.Function> deviceLists = GetGatewayDeviceList();
-      for (int i = 0; i < deviceLists.Count; i++)
-      {
-        var dev = deviceLists[i];
-        if (dev.sid == sid)
+        /// <summary>
+        /// 璁惧绫诲瀷FunctionType鍒楄〃
+        /// </summary>
+        /// <param name="deviceType">璁惧绫诲瀷(鐏厜绫伙紝绐楀笜绫汇��)</param>
+        /// <returns></returns>
+        public List<string> GetDeviceTypeFunctionList(string deviceType)
         {
-          device = dev;
-          break;
-        }
-      }
-      return device;
-    }
-
-    /// <summary>
-    /// 鑾峰彇鍦烘櫙瀵硅薄
-    /// </summary>
-    /// <param name="sid">鍦烘櫙鍞竴鏍囪瘑</param>
-    /// <returns></returns>
-    public HDL_ON.Entity.Scene GetSecne(string sid)
-    {
-      HDL_ON.Entity.Scene scene = new Entity.Scene() { name = "Unknown" };
-      List<HDL_ON.Entity.Scene> sceneLists = GetSceneList();
-      for (int i = 0; i < sceneLists.Count; i++)
-      {
-        var sce = sceneLists[i];
-        if (sce.sid == sid)
-        {
-          scene = sce;
-          break;
-        }
-      }
-      return scene;
-    }
-    /// <summary>
-    /// 鑾峰彇瀹夐槻瀵硅薄
-    /// </summary>
-    /// <param name="sid">瀹夐槻鍞竴鏍囪瘑</param>
-    /// <returns></returns>
-    public HDL_ON.Entity.SecurityAlarm GetSecurity(string sid)
-    {
-      HDL_ON.Entity.SecurityAlarm security = new Entity.SecurityAlarm() { name = "Unknown" };
-      List<HDL_ON.Entity.SecurityAlarm> SecurityLists = GetSecurityList();
-      for (int i = 0; i < SecurityLists.Count; i++)
-      {
-        var sce = SecurityLists[i];
-        if (sce.sid == sid)
-        {
-          security = sce;
-          break;
-        }
-      }
-      return security;
-    }
-    /// <summary>
-    /// 鑾峰彇鎴块棿鍚�(鍗虫槸=鍖哄煙鍚嶇О)
-    /// </summary>
-    /// <param name="device">璁惧</param>
-    /// <returns></returns>
-    public string GetGetRoomName(HDL_ON.Entity.Function device)
-    {
-      string roomName = "";
-      List<HDL_ON.Entity.Room> roomLists = GetGatewayRoomList();
-      for (int i = 0; i < device.roomIds.Count; i++)
-      {
-        var dev = device.roomIds[i];
-        var room = roomLists.Find((c) => c.roomId == dev);
-        if (room != null)
-        {
-          roomName += room.floorName + "." + room.roomName + ",";
-        }
-      }
-
-      return roomName.TrimEnd(',');
-    }
-    #region   鍔ㄤ竴鏀瑰洓
-    /// <summary>
-    /// 鑾峰彇璁惧绫诲瀷鍥炬爣
-    /// </summary>
-    /// <param name="functionType">璁惧绫诲瀷</param>
-    /// <returns></returns>
-    public string GetIconPath(string functionType)
-    {
-      string strPath = "";
-      switch (functionType)
-      {
-
-        case SPK.AirSwitch:
-          {
-            strPath = "FunctionIcon/Icon/electricalbreaker.png";
-          }
-          break;
-        case SPK.PanelSocket:
-        case SPK.ElectricSocket:
-          {
-            strPath = "FunctionIcon/Icon/electricalsocket.png";
-          }
-          break;
-        case SPK.LightSwitch:
-        case SPK.LightRGB:
-        case SPK.LightRGBW:
-        case SPK.LightCCT:
-        case SPK.LightDimming:
-          {
-            strPath = "LogicIcon/lightloguc.png";
-          }
-          break;
-        case SPK.CurtainSwitch:
-        case SPK.CurtainRoller:
-        case SPK.CurtainTrietex:
-          {
-            strPath = "LogicIcon/curtainlogic.png";
-          }
-          break;
-        case SPK.AcStandard:
-        case SPK.HvacAC:
-          {
-            strPath = "LogicIcon/airconditionerlogic.png";
-          }
-          break;
-        case SPK.FloorHeatStandard:
-        case SPK.HvacFloorHeat:
-          {
-            strPath = "LogicIcon/heatlogic.png";
-          }
-          break;
-        case SPK.AirFreshStandard:
-        case SPK.HvacAirFresh:
-          {
-            strPath = "LogicIcon/heatlogic.png";
-          }
-          break;
-        case SPK.SensorSmoke:
-        case SPK.SensorWater:
-        case SPK.SensorGas:
-        case SPK.SensorDryContact:
-        case SPK.SensorDryContact2:
-        case SPK.SensorShanLan:
-        case SPK.SensorDuiShe:
-        case SPK.SensorPir:
-        case SPK.SensorDoorWindow:
-        case SPK.SensorUtrasonic:
-        case SPK.SenesorMegahealth:
-        case SPK.SenesorMegahealth2:
-        case SPK.SensorEnvironment:
-        case SPK.SensorEnvironment2:
-        case SPK.SensorEnvironment3:
-        case SPK.SensorTemperature:
-        case SPK.SensorHumidity:
-        case SPK.SensorCO2:
-        case SPK.SensorPm25:
-        case SPK.SensorTVOC:
-        case SPK.SensorHcho:
-          {
-            strPath = "LogicIcon/sensor.png";
-          }
-          break;
-
-      }
-      return strPath;
-    }
-    /// <summary>
-    /// 璁惧绫诲瀷鐨勫垪琛�(鐏厜绫伙紝绐楀笜绫汇�傘�傘��)
-    /// </summary>
-    /// <param name="deviceList">璁惧鍒楄〃</param>
-    /// <returns></returns>
-    public List<string> GetDeviceTypeList(List<HDL_ON.Entity.Function> deviceList)
-    {
-      List<string> deviceStrTypeList = new List<string>();
-      deviceStrTypeList.Clear();
-      ///鐏厜绫�
-      var lightjosn = deviceList.Find((device) =>
-      device.spk == SPK.LightSwitch
-      || device.spk == SPK.LightDimming
-      || device.spk == SPK.LightCCT
-      || device.spk == SPK.LightRGB
-      || device.spk == SPK.LightRGBW
-      );
-      if (lightjosn != null)
-      {
-        deviceStrTypeList.Add(Language.StringByID(StringId.Lights));
-      }
-
-      ///绐楀笜绫�
-      var curtainjosn = deviceList.Find((device) =>
-      device.spk == SPK.CurtainSwitch
-      || device.spk == SPK.CurtainTrietex
-      || device.spk == SPK.CurtainRoller);
-      if (curtainjosn != null)
-      {
-        deviceStrTypeList.Add(Language.StringByID(StringId.Curtain));
-      }
-      ///绌鸿皟绫�
-      var ac = deviceList.Find((device) => device.spk == SPK.AcStandard || device.spk == SPK.HvacAC);
-      if (ac != null)
-      {
-        deviceStrTypeList.Add(Language.StringByID(StringId.AC));
-      }
-      ///鍦版殩绫�
-      var floorHeating = deviceList.Find((device) => device.spk == SPK.FloorHeatStandard || device.spk == SPK.HvacFloorHeat);
-      if (floorHeating != null)
-      {
-        deviceStrTypeList.Add(Language.StringByID(StringId.FloorHeating));
-      }
-      ///鏂伴绫�
-      var airFresh = deviceList.Find((device) => device.spk == SPK.AirFreshStandard || device.spk == SPK.HvacAirFresh);
-      if (airFresh != null)
-      {
-        deviceStrTypeList.Add(Language.StringByID(StringId.AirFresh));
-      }
-      ///浼犳劅鍣ㄧ被
-      var sensor = deviceList.Find((device) =>
-      device.spk == SPK.SensorWater
-      || device.spk == SPK.SensorGas
-      || device.spk == SPK.SensorSmoke
-      || device.spk == SPK.SensorDryContact || device.spk == SPK.SensorDryContact2
-      || device.spk == SPK.SensorShanLan
-      || device.spk == SPK.SensorDuiShe
-      || device.spk == SPK.SensorPir
-      || device.spk == SPK.SensorDoorWindow
-      || device.spk == SPK.SensorUtrasonic
-      || device.spk == SPK.SenesorMegahealth
-      || device.spk == SPK.SenesorMegahealth2
-      || device.spk == SPK.SensorEnvironment
-       || device.spk == SPK.SensorEnvironment2
-        || device.spk == SPK.SensorEnvironment3
-          || device.spk == SPK.SensorTemperature
-            || device.spk == SPK.SensorHumidity
-              || device.spk == SPK.SensorCO2
-                || device.spk == SPK.SensorPm25
-                  || device.spk == SPK.SensorTVOC
-                    || device.spk == SPK.SensorHcho
-      );
-      if (sensor != null)
-      {
-        deviceStrTypeList.Add(Language.StringByID(StringId.Sensor));
-      }
-      ///瀹剁數绫�
-      var electric = deviceList.Find((device) =>
-      device.spk == SPK.AirSwitch
-      || device.spk == SPK.PanelSocket
-      || device.spk == SPK.ElectricSocket
-      );
-      if (electric != null)
-      {
-        deviceStrTypeList.Add(Language.StringByID(StringId.Electric));
-      }
-      return deviceStrTypeList;
-
-    }
-    /// <summary>
-    /// 璁惧绫诲瀷FunctionType鍒楄〃
-    /// </summary>
-    /// <param name="deviceType">璁惧绫诲瀷(鐏厜绫伙紝绐楀笜绫汇��)</param>
-    /// <returns></returns>
-    public List<string> GetDeviceTypeFunctionList(string deviceType)
-    {
-      List<string> functionTypeList = new List<string>();
+            List<string> functionTypeList = new List<string>();
             ///鐏厜绫�
             if (deviceType == Language.StringByID(StringId.Lights))
             {
@@ -518,6 +523,7 @@
             {
                 functionTypeList.Add(SPK.AcStandard);
                 functionTypeList.Add(SPK.HvacAC);
+                functionTypeList.Add(SPK.HvacCac);
             }
             ///鍦版殩绫�
             else if (deviceType == Language.StringByID(StringId.FloorHeating))
@@ -552,6 +558,7 @@
                 functionTypeList.Add(SPK.SensorPm25);
                 functionTypeList.Add(SPK.SensorTVOC);
                 functionTypeList.Add(SPK.SensorHcho);
+                functionTypeList.Add(SPK.SensorHelp);
 
 
             }
@@ -562,7 +569,8 @@
                 functionTypeList.Add(SPK.PanelSocket);
                 functionTypeList.Add(SPK.ElectricSocket);
             }
-            else {
+            else
+            {
                 functionTypeList.Add(SPK.LightSwitch);
                 functionTypeList.Add(SPK.LightDimming);
                 functionTypeList.Add(SPK.LightRGB);
@@ -604,410 +612,413 @@
                 functionTypeList.Add(SPK.AirSwitch);
                 functionTypeList.Add(SPK.PanelSocket);
                 functionTypeList.Add(SPK.ElectricSocket);
-
+                functionTypeList.Add(SPK.HvacCac);
+                functionTypeList.Add(SPK.SensorHelp);
 
             }
 
 
-      return functionTypeList;
+            return functionTypeList;
 
-    }
-    /// <summary>
-    /// 鏉′欢/鐩爣鏀寔璁惧
-    /// </summary>
-    /// <returns></returns>
-    public List<string> GetSupportEquipment(string if_type)
-    {
-      List<string> deviceTypeList = new List<string>();
-      switch (if_type)
-      {
-        case condition_if:
-          {
-            deviceTypeList.Add(SPK.LightSwitch);
-            deviceTypeList.Add(SPK.LightRGB);
-            deviceTypeList.Add(SPK.LightRGBW);
-            deviceTypeList.Add(SPK.LightDimming);
-            deviceTypeList.Add(SPK.LightCCT);
-            deviceTypeList.Add(SPK.CurtainSwitch);
-            deviceTypeList.Add(SPK.CurtainRoller);
-            deviceTypeList.Add(SPK.CurtainTrietex);
-            deviceTypeList.Add(SPK.AcStandard); deviceTypeList.Add(SPK.HvacAC);
-            deviceTypeList.Add(SPK.AirFreshStandard); deviceTypeList.Add(SPK.HvacAirFresh);
-            deviceTypeList.Add(SPK.FloorHeatStandard); deviceTypeList.Add(SPK.HvacFloorHeat);
-            deviceTypeList.Add(SPK.SensorSmoke);
-            deviceTypeList.Add(SPK.SensorWater);
-            deviceTypeList.Add(SPK.SensorGas);
-            deviceTypeList.Add(SPK.SensorDryContact); deviceTypeList.Add(SPK.SensorDryContact2);
-            deviceTypeList.Add(SPK.SensorShanLan);
-            deviceTypeList.Add(SPK.SensorDuiShe);
-            deviceTypeList.Add(SPK.SensorPir);
-            deviceTypeList.Add(SPK.SensorDoorWindow);
-            deviceTypeList.Add(SPK.SensorUtrasonic);
-            deviceTypeList.Add(SPK.SenesorMegahealth);
-            deviceTypeList.Add(SPK.SenesorMegahealth2);
-            deviceTypeList.Add(SPK.SensorEnvironment);
-            deviceTypeList.Add(SPK.SensorEnvironment2);
-            deviceTypeList.Add(SPK.SensorEnvironment3);
-            deviceTypeList.Add(SPK.SensorTemperature);
-            deviceTypeList.Add(SPK.SensorHumidity);
-            deviceTypeList.Add(SPK.SensorCO2);
-            deviceTypeList.Add(SPK.SensorPm25);
-            deviceTypeList.Add(SPK.SensorTVOC);
-            deviceTypeList.Add(SPK.SensorHcho);
-            deviceTypeList.Add(SPK.AirSwitch);
-            deviceTypeList.Add(SPK.PanelSocket);
-            deviceTypeList.Add(SPK.ElectricSocket);
-
-          }
-          break;
-        case target_if:
-          {
-            deviceTypeList.Add(SPK.LightSwitch);
-            deviceTypeList.Add(SPK.LightRGB);
-            deviceTypeList.Add(SPK.LightRGBW);
-            deviceTypeList.Add(SPK.LightDimming);
-            deviceTypeList.Add(SPK.LightCCT);
-            deviceTypeList.Add(SPK.CurtainSwitch);
-            deviceTypeList.Add(SPK.CurtainRoller);
-            deviceTypeList.Add(SPK.CurtainTrietex);
-            deviceTypeList.Add(SPK.AcStandard); deviceTypeList.Add(SPK.HvacAC);
-            deviceTypeList.Add(SPK.FloorHeatStandard); deviceTypeList.Add(SPK.HvacFloorHeat);
-            deviceTypeList.Add(SPK.AirFreshStandard); deviceTypeList.Add(SPK.HvacAirFresh);
-            deviceTypeList.Add(SPK.AirSwitch);
-            deviceTypeList.Add(SPK.PanelSocket);
-            deviceTypeList.Add(SPK.ElectricSocket);
-          }
-          break;
-      }
-      return deviceTypeList;
-    }
-    #endregion
-    /// <summary>
-    /// 鏄剧ず鐨勮澶囧垪琛�
-    /// </summary>
-    /// <param name="functionType">婧愭暟鎹垪琛�1</param>
-    /// <param name="deviceList">婧愭暟鎹垪琛�2</param>
-    /// <returns></returns>
-    public List<Entity.Function> GetShowDeviceList(List<string> functionType, List<HDL_ON.Entity.Function> deviceList)
-    {
-      List<HDL_ON.Entity.Function> devList = new List<Entity.Function>();
-      for (int i = 0; i < deviceList.Count; i++)
-      {
-        var dev = deviceList[i];
-        //杩囨护鎺変笉闇�瑕佹樉绀虹殑璁惧
-        if (functionType.Contains(dev.spk))
-        {
-          devList.Add(dev);
         }
-
-      }
-
-      return devList;
-    }
-    /// <summary>
-    /// 杩斿洖鏈�缁堟敮鎸佹樉绀哄嚭鏉ョ殑璁惧鍒楄〃
-    /// </summary>
-    /// <param name="room">褰撳墠鎴块棿</param>
-    /// <param name="str">鍒ゆ柇绗︼紙琛ㄧず=杈撳叆璁惧鍜岃緭鍑鸿澶囷級</param>
-    /// <returns></returns>
-    public List<Entity.Function> GetFunctionDeviceList(Entity.Room room, string str)
-    {
-      List<string> functionTypeList = GetSupportEquipment(str);
-      //杩斿洖鎴块棿璁惧鍒楄〃
-      var roomDeviceList = GetRoomDevice(room);
-      //杩斿洖鏈�缁堟敮鎸佹樉绀哄嚭鏉ョ殑璁惧鍒楄〃
-      var list = GetShowDeviceList(functionTypeList, roomDeviceList);
-      return list;
-    }
-    /// <summary>
-    /// 缃戝叧ID(鑾峰彇鍢変箰缃戝叧ID)
-    /// </summary>
-    public string GatewayId
-    {
-      get
-      {
-        if (Entity.DB_ResidenceData.Instance.HomeGateway == null)
+        /// <summary>
+        /// 鏉′欢/鐩爣鏀寔璁惧
+        /// </summary>
+        /// <returns></returns>
+        public List<string> GetSupportEquipment(string if_type)
         {
-          return DriverLayer.Control.Ins.GatewayId;
-        }
-        return Entity.DB_ResidenceData.Instance.HomeGateway.gatewayId;
-      }
-    }
-    /// <summary>
-    /// 浣忓畢ID
-    /// </summary>
-    public string HomeId
-    {
-      get
-      {
-        return Entity.DB_ResidenceData.Instance.CurrentRegion.id;
-      }
-    }
-    /// <summary>
-    /// 鏄惁涓哄叾浠栦富鐢ㄦ埛鍒嗕韩杩囨潵鐨勪綇瀹�
-    /// </summary>
-    public bool IsOthreShare
-    {
-      get
-      {
-        return Entity.DB_ResidenceData.Instance.CurrentRegion.isOtherShare;
-      }
-    }
-
-    #region 楂樺痉鍧愭爣杞琖GS84鍧愭爣
-    /// <summary>
-    /// 楂樺痉鍧愭爣杞琖GS84鍧愭爣
-    /// </summary>
-    /// <param name="in_lng"></param>
-    /// <param name="in_lat"></param>
-    /// <param name="out_lng"></param>
-    /// <param name="out_lat"></param>
-    public void GCJ02_to_WGS84(double in_lng, double in_lat, out double out_lng, out double out_lat)
-    {
-      if (OutOfChina(in_lat, in_lng))
-      {
-        out_lng = in_lng;
-        out_lat = in_lat;
-        return;
-      }
-
-      CalculateDev(in_lng, in_lat, out out_lng, out out_lat);
-      out_lng = in_lng - out_lng;
-      out_lat = in_lat - out_lat;
-    }
-    #endregion
-
-    #region WGS84鍧愭爣杞珮寰峰潗鏍�
-    /// <summary>
-    /// WGS84鍧愭爣杞珮寰峰潗鏍�
-    /// </summary>
-    /// <param name="in_lng">缁忓害</param>
-    /// <param name="in_lat">绾害</param>
-    /// <param name="out_lng"></param>
-    /// <param name="out_lat"></param>
-    public void WGS84_to_GCJ02(double in_lng, double in_lat, out double out_lng, out double out_lat)
-    {
-      if (OutOfChina(in_lat, in_lng))
-      {
-        out_lng = in_lng;
-        out_lat = in_lat;
-        return;
-      }
-
-      CalculateDev(in_lng, in_lat, out out_lng, out out_lat);
-      out_lng = in_lng + out_lng;
-      out_lat = in_lat + out_lat;
-    }
-    #endregion
-
-    /// <summary>
-    /// 鍧愭爣鏄惁鍦ㄤ腑鍥藉鍐�
-    /// </summary>
-    /// <param name="lat"></param>
-    /// <param name="lng"></param>
-    /// <returns></returns>
-    public bool OutOfChina(double lat, double lng)
-    {
-      if (lng < 72.004 || lng > 137.8347)
-        return true;
-      if (lat < 0.8293 || lat > 55.8271)
-        return true;
-      return false;
-    }
-    /// <summary>
-    /// 璁$畻鍋忓樊
-    /// </summary>
-    /// <param name="in_lng"></param>
-    /// <param name="in_lat"></param>
-    /// <param name="dLng"></param>
-    /// <param name="dLat"></param>
-    private void CalculateDev(double in_lng, double in_lat, out double dLng, out double dLat)
-    {
-      dLat = TransformLat(in_lng - 105.0, in_lat - 35.0);
-      dLng = TransformLng(in_lng - 105.0, in_lat - 35.0);
-
-      double radLat = in_lat / 180.0 * pi;
-      double magic = Math.Sin(radLat);
-      magic = 1 - ee * magic * magic;
-      double sqrtMagic = Math.Sqrt(magic);
-      dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi);
-      dLng = (dLng * 180.0) / (a / sqrtMagic * Math.Cos(radLat) * pi);
-    }
-
-    private double TransformLat(double x, double y)
-    {
-      double ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * Math.Sqrt(Math.Abs(x));
-      ret += (20.0 * Math.Sin(6.0 * x * pi) + 20.0 * Math.Sin(2.0 * x * pi)) * 2.0 / 3.0;
-      ret += (20.0 * Math.Sin(y * pi) + 40.0 * Math.Sin(y / 3.0 * pi)) * 2.0 / 3.0;
-      ret += (160.0 * Math.Sin(y / 12.0 * pi) + 320 * Math.Sin(y * pi / 30.0)) * 2.0 / 3.0;
-      return ret;
-    }
-    private double TransformLng(double x, double y)
-    {
-      double ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * Math.Sqrt(Math.Abs(x));
-      ret += (20.0 * Math.Sin(6.0 * x * pi) + 20.0 * Math.Sin(2.0 * x * pi)) * 2.0 / 3.0;
-      ret += (20.0 * Math.Sin(x * pi) + 40.0 * Math.Sin(x / 3.0 * pi)) * 2.0 / 3.0;
-      ret += (150.0 * Math.Sin(x / 12.0 * pi) + 300.0 * Math.Sin(x / 30.0 * pi)) * 2.0 / 3.0;
-      return ret;
-    }
-    // 妞悆鍙傛暟-鍦嗗懆鐜�
-    private const double pi = 3.14159265358979324;
-
-    // (鍖椾含54)妞悆闀垮崐杞达紝鍗槦妞悆鍧愭爣鎶曞奖鍒板钩闈㈠湴鍥惧潗鏍囩郴鐨勬姇褰卞洜瀛�
-    private const double a = 6378245.0;
-    /*
-        * Krasovsky 1940 (鍖椾含54)妞悆闀垮崐杞寸涓�鍋忓績鐜囧钩鏂�
-        * 璁$畻鏂瑰紡锛�
-        * 闀垮崐杞达細
-        * a = 6378245.0
-        * 鎵佺巼锛�
-        * 1/f = 298.3锛堝彉閲忕浉鍏宠绠椾负锛�(a-b)/a锛�
-        * 鐭崐杞达細
-        * b = 6356863.0188 (鍙橀噺鐩稿叧璁$畻鏂规硶涓猴細b = a * (1 - f))
-        * 绗竴鍋忓績鐜囧钩鏂�:
-        * e2 = (a^2 - b^2) / a^2;
-    */
-    private const double ee = 0.00669342162296594323;
-
-    /// <summary>
-    /// APP涓婃姤GPS缁忕含搴�
-    /// </summary>
-    /// <param name="lon">APP GPS缁忓害</param>
-    /// <param name="lat">APP GPS绾害</param>
-    public void AppLatAndLonEvent(double lon, double lat)
-    {
-      Console.WriteLine($"GPS缁忓害===={lon}  \nGPS绾害===={lat}");
-      //Application.LocationAction += (lon, lat) =>
-      //{
-      //  Console.WriteLine($"GPS缁忓害===={lon}");
-      //  Console.WriteLine($"GPS绾害===={lat}");
-      //  ////GPS鍧愭爣杞垚楂樺痉鍧愭爣
-      //  //double out_lng, out_lat;
-      //  //this.WGS84_to_GCJ02(lon, lat, out out_lng, out out_lat);
-      //  //涓婃姤缁忕含搴�
-      //  this.AutomatedGeofenceStatusReporting(lon, lat);
-      //};
-      //涓婃姤缁忕含搴�<gps 涓婃姤鏉′欢澶т簬30绉掍笖绉诲姩璺濈澶т簬100绫筹紝涓婃姤缁忕含搴�>
-      this.AutomatedGeofenceStatusReporting(lon, lat);
-    }
-
-    /// <summary>
-    /// 鑷姩鍖栧湴鐞嗗洿鏍忕姸鎬佷笂鎶ヤ簯绔�
-    /// </summary>
-    /// <param name="out_lng">APP GPS缁忓害</param>
-    /// <param name="out_lat">APP GPS绾害</param>
-    private void AutomatedGeofenceStatusReporting(double out_lng, double out_lat)
-    {
-      if (IsOthreShare)
-      {
-        //涓嶆槸涓昏处鍙风洿鎺ヨ繑鍥�
-        return;
-      }
-      List<LogicData> logicDataList = new List<LogicData>();
-      logicDataList.Clear();
-      System.Threading.Tasks.Task.Run(() =>
-      {
-        try
-        {
-          //鑾峰彇閫昏緫ID鍒楄〃锛岀洰鍓嶉拡瀵规墍鏈�<澶囨敞:濡傛灉鍙拡瀵瑰綋鍓嶆墜鏈虹殑璇濓紝鍙互鐩存帴鎷跨紦瀛樻暟鎹嚜鍔ㄥ寲鍒楄〃閬嶅巻>
-          var idStr = Send.GetLogicIdList();
-          if (idStr.Code == "0" && idStr.Data != null && idStr.Data.ToString() != "")
-          {
-            var date = Newtonsoft.Json.JsonConvert.SerializeObject(idStr.Data);
-            logicDataList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<LogicData>>(date);
-          }
-          ///鏈夎嚜鍔ㄥ垪琛ㄦ墠澶勭悊
-          if (logicDataList.Count > 0)
-          {
-            ///閬嶅巻鎵�鏈夊垪琛�
-            for (int i = 0; i < logicDataList.Count; i++)
+            List<string> deviceTypeList = new List<string>();
+            switch (if_type)
             {
-              var logicDate = logicDataList[i];
-              ///鑷姩鍖栨病鏈夐厤缃湴鐞嗗洿鏍忎笉澶勭悊
-              if (string.IsNullOrEmpty(logicDate.geo_fence.latitude) || string.IsNullOrEmpty(logicDate.geo_fence.longitude))
-              {
-                //缁忕含搴︿负绌�,璁や负鑷姩鍖栨病鏈夐厤缃湴鐞嗗洿鏍忥紝涓嶅鐞�;
-                continue;
-              }
-              //鑷姩鍖栭厤缃緭鍏ユ潯浠剁含搴�
-              double lat = Convert.ToDouble(logicDate.geo_fence.latitude.Replace(",", "."));
-              //鑷姩鍖栭厤缃緭鍏ユ潯浠剁粡搴�
-              double lon = Convert.ToDouble(logicDate.geo_fence.longitude.Replace(",", "."));
-              //鑷姩鍖栭厤缃緭鍏ユ潯浠�<鍦扮悊鍥存爮鍗婂緞><鍗曚綅锛屽叕閲屻�佸崈绫�.绫�>
-              int radius = int.Parse(logicDate.geo_fence.radius);
-              //璁$畻2涓粡绾害涔嬮棿鐨勮窛绂�
-              int r = Infrastructure.Service.Helper.CalculatedDistance.Distance(out_lat, out_lng, lat, lon);
-              //瀹氫箟涓�涓眬閮ㄥ彉閲�
-              string direction = string.Empty;
-              //涓ょ偣璺濈灏忎簬閰嶇疆璺濈<鏃㈣嚜鍔ㄥ寲閰嶇疆杈撳叆鏉′欢鍦扮悊鍥存爮鍗婂緞>,璇存槑杩涘叆鍖哄煙
-              if (r < radius)
-              {
-                //鍒拌揪鏌愬湴
-                direction = "arrive";
-              }
-              else
-              {
-                //绂诲紑
-                direction = "leave";
-              }
-              ///閬嶅巻缂撳瓨鍒楄〃<涓嶄负绌鸿鏄庢暟鎹凡缁忔帹閫佽繃锛屼笉鍐嶆帹閫�>
-              var isPush = pushList.Find((o) => o.homeId == HomeId && o.userId == UserInfo.Current.ID && o.userLogicId == logicDate.userLogicId && o.arriveOnLeave == direction);
-              if (isPush == null)
-              {
-                //鎺ㄩ�佺粰浜戠鏄惁鎴愬姛
-                bool push = Send.GeoFenceStateReport(logicDate.userLogicId, logicDate.sid, direction);
-                if (push)
+                case condition_if:
+                    {
+                        deviceTypeList.Add(SPK.LightSwitch);
+                        deviceTypeList.Add(SPK.LightRGB);
+                        deviceTypeList.Add(SPK.LightRGBW);
+                        deviceTypeList.Add(SPK.LightDimming);
+                        deviceTypeList.Add(SPK.LightCCT);
+                        deviceTypeList.Add(SPK.CurtainSwitch);
+                        deviceTypeList.Add(SPK.CurtainRoller);
+                        deviceTypeList.Add(SPK.CurtainTrietex);
+                        deviceTypeList.Add(SPK.AcStandard); deviceTypeList.Add(SPK.HvacAC);
+                        deviceTypeList.Add(SPK.AirFreshStandard); deviceTypeList.Add(SPK.HvacAirFresh);
+                        deviceTypeList.Add(SPK.FloorHeatStandard); deviceTypeList.Add(SPK.HvacFloorHeat);
+                        deviceTypeList.Add(SPK.SensorSmoke);
+                        deviceTypeList.Add(SPK.SensorWater);
+                        deviceTypeList.Add(SPK.SensorGas);
+                        deviceTypeList.Add(SPK.SensorDryContact); deviceTypeList.Add(SPK.SensorDryContact2);
+                        deviceTypeList.Add(SPK.SensorShanLan);
+                        deviceTypeList.Add(SPK.SensorDuiShe);
+                        deviceTypeList.Add(SPK.SensorPir);
+                        deviceTypeList.Add(SPK.SensorDoorWindow);
+                        deviceTypeList.Add(SPK.SensorUtrasonic);
+                        deviceTypeList.Add(SPK.SenesorMegahealth);
+                        deviceTypeList.Add(SPK.SenesorMegahealth2);
+                        deviceTypeList.Add(SPK.SensorEnvironment);
+                        deviceTypeList.Add(SPK.SensorEnvironment2);
+                        deviceTypeList.Add(SPK.SensorEnvironment3);
+                        deviceTypeList.Add(SPK.SensorTemperature);
+                        deviceTypeList.Add(SPK.SensorHumidity);
+                        deviceTypeList.Add(SPK.SensorCO2);
+                        deviceTypeList.Add(SPK.SensorPm25);
+                        deviceTypeList.Add(SPK.SensorTVOC);
+                        deviceTypeList.Add(SPK.SensorHcho);
+                        deviceTypeList.Add(SPK.AirSwitch);
+                        deviceTypeList.Add(SPK.PanelSocket);
+                        deviceTypeList.Add(SPK.ElectricSocket);
+                        deviceTypeList.Add(SPK.HvacCac);
+                        deviceTypeList.Add(SPK.SensorHelp);
+
+                    }
+                    break;
+                case target_if:
+                    {
+                        deviceTypeList.Add(SPK.LightSwitch);
+                        deviceTypeList.Add(SPK.LightRGB);
+                        deviceTypeList.Add(SPK.LightRGBW);
+                        deviceTypeList.Add(SPK.LightDimming);
+                        deviceTypeList.Add(SPK.LightCCT);
+                        deviceTypeList.Add(SPK.CurtainSwitch);
+                        deviceTypeList.Add(SPK.CurtainRoller);
+                        deviceTypeList.Add(SPK.CurtainTrietex);
+                        deviceTypeList.Add(SPK.AcStandard); deviceTypeList.Add(SPK.HvacAC);
+                        deviceTypeList.Add(SPK.FloorHeatStandard); deviceTypeList.Add(SPK.HvacFloorHeat);
+                        deviceTypeList.Add(SPK.AirFreshStandard); deviceTypeList.Add(SPK.HvacAirFresh);
+                        deviceTypeList.Add(SPK.AirSwitch);
+                        deviceTypeList.Add(SPK.PanelSocket);
+                        deviceTypeList.Add(SPK.ElectricSocket);
+                    }
+                    break;
+            }
+            return deviceTypeList;
+        }
+        #endregion
+        /// <summary>
+        /// 鏄剧ず鐨勮澶囧垪琛�
+        /// </summary>
+        /// <param name="functionType">婧愭暟鎹垪琛�1</param>
+        /// <param name="deviceList">婧愭暟鎹垪琛�2</param>
+        /// <returns></returns>
+        public List<Entity.Function> GetShowDeviceList(List<string> functionType, List<HDL_ON.Entity.Function> deviceList)
+        {
+            List<HDL_ON.Entity.Function> devList = new List<Entity.Function>();
+            for (int i = 0; i < deviceList.Count; i++)
+            {
+                var dev = deviceList[i];
+                //杩囨护鎺変笉闇�瑕佹樉绀虹殑璁惧
+                if (functionType.Contains(dev.spk))
                 {
-                  ///娣诲姞鍒版帹閫佸垪琛�
-                  pushList.Add(new Push
-                  {
-                    homeId = HomeId,
-                    userId = UserInfo.Current.ID,
-                    userLogicId = logicDate.userLogicId,
-                    sid = logicDate.sid,
-                    arriveOnLeave = direction,
-                  });
+                    devList.Add(dev);
                 }
-              }
+
             }
 
-          }
+            return devList;
         }
-        catch { }
-      });
+        /// <summary>
+        /// 杩斿洖鏈�缁堟敮鎸佹樉绀哄嚭鏉ョ殑璁惧鍒楄〃
+        /// </summary>
+        /// <param name="room">褰撳墠鎴块棿</param>
+        /// <param name="str">鍒ゆ柇绗︼紙琛ㄧず=杈撳叆璁惧鍜岃緭鍑鸿澶囷級</param>
+        /// <returns></returns>
+        public List<Entity.Function> GetFunctionDeviceList(Entity.Room room, string str)
+        {
+            List<string> functionTypeList = GetSupportEquipment(str);
+            //杩斿洖鎴块棿璁惧鍒楄〃
+            var roomDeviceList = GetRoomDevice(room);
+            //杩斿洖鏈�缁堟敮鎸佹樉绀哄嚭鏉ョ殑璁惧鍒楄〃
+            var list = GetShowDeviceList(functionTypeList, roomDeviceList);
+            return list;
+        }
+        /// <summary>
+        /// 缃戝叧ID(鑾峰彇鍢変箰缃戝叧ID)
+        /// </summary>
+        public string GatewayId
+        {
+            get
+            {
+                if (Entity.DB_ResidenceData.Instance.HomeGateway == null)
+                {
+                    return DriverLayer.Control.Ins.GatewayId;
+                }
+                return Entity.DB_ResidenceData.Instance.HomeGateway.gatewayId;
+            }
+        }
+        /// <summary>
+        /// 浣忓畢ID
+        /// </summary>
+        public string HomeId
+        {
+            get
+            {
+                return Entity.DB_ResidenceData.Instance.CurrentRegion.id;
+            }
+        }
+        /// <summary>
+        /// 鏄惁涓哄叾浠栦富鐢ㄦ埛鍒嗕韩杩囨潵鐨勪綇瀹�
+        /// </summary>
+        public bool IsOthreShare
+        {
+            get
+            {
+                return Entity.DB_ResidenceData.Instance.CurrentRegion.isOtherShare;
+            }
+        }
+
+        #region 楂樺痉鍧愭爣杞琖GS84鍧愭爣
+        /// <summary>
+        /// 楂樺痉鍧愭爣杞琖GS84鍧愭爣
+        /// </summary>
+        /// <param name="in_lng"></param>
+        /// <param name="in_lat"></param>
+        /// <param name="out_lng"></param>
+        /// <param name="out_lat"></param>
+        public void GCJ02_to_WGS84(double in_lng, double in_lat, out double out_lng, out double out_lat)
+        {
+            if (OutOfChina(in_lat, in_lng))
+            {
+                out_lng = in_lng;
+                out_lat = in_lat;
+                return;
+            }
+
+            CalculateDev(in_lng, in_lat, out out_lng, out out_lat);
+            out_lng = in_lng - out_lng;
+            out_lat = in_lat - out_lat;
+        }
+        #endregion
+
+        #region WGS84鍧愭爣杞珮寰峰潗鏍�
+        /// <summary>
+        /// WGS84鍧愭爣杞珮寰峰潗鏍�
+        /// </summary>
+        /// <param name="in_lng">缁忓害</param>
+        /// <param name="in_lat">绾害</param>
+        /// <param name="out_lng"></param>
+        /// <param name="out_lat"></param>
+        public void WGS84_to_GCJ02(double in_lng, double in_lat, out double out_lng, out double out_lat)
+        {
+            if (OutOfChina(in_lat, in_lng))
+            {
+                out_lng = in_lng;
+                out_lat = in_lat;
+                return;
+            }
+
+            CalculateDev(in_lng, in_lat, out out_lng, out out_lat);
+            out_lng = in_lng + out_lng;
+            out_lat = in_lat + out_lat;
+        }
+        #endregion
+
+        /// <summary>
+        /// 鍧愭爣鏄惁鍦ㄤ腑鍥藉鍐�
+        /// </summary>
+        /// <param name="lat"></param>
+        /// <param name="lng"></param>
+        /// <returns></returns>
+        public bool OutOfChina(double lat, double lng)
+        {
+            if (lng < 72.004 || lng > 137.8347)
+                return true;
+            if (lat < 0.8293 || lat > 55.8271)
+                return true;
+            return false;
+        }
+        /// <summary>
+        /// 璁$畻鍋忓樊
+        /// </summary>
+        /// <param name="in_lng"></param>
+        /// <param name="in_lat"></param>
+        /// <param name="dLng"></param>
+        /// <param name="dLat"></param>
+        private void CalculateDev(double in_lng, double in_lat, out double dLng, out double dLat)
+        {
+            dLat = TransformLat(in_lng - 105.0, in_lat - 35.0);
+            dLng = TransformLng(in_lng - 105.0, in_lat - 35.0);
+
+            double radLat = in_lat / 180.0 * pi;
+            double magic = Math.Sin(radLat);
+            magic = 1 - ee * magic * magic;
+            double sqrtMagic = Math.Sqrt(magic);
+            dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi);
+            dLng = (dLng * 180.0) / (a / sqrtMagic * Math.Cos(radLat) * pi);
+        }
+
+        private double TransformLat(double x, double y)
+        {
+            double ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * Math.Sqrt(Math.Abs(x));
+            ret += (20.0 * Math.Sin(6.0 * x * pi) + 20.0 * Math.Sin(2.0 * x * pi)) * 2.0 / 3.0;
+            ret += (20.0 * Math.Sin(y * pi) + 40.0 * Math.Sin(y / 3.0 * pi)) * 2.0 / 3.0;
+            ret += (160.0 * Math.Sin(y / 12.0 * pi) + 320 * Math.Sin(y * pi / 30.0)) * 2.0 / 3.0;
+            return ret;
+        }
+        private double TransformLng(double x, double y)
+        {
+            double ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * Math.Sqrt(Math.Abs(x));
+            ret += (20.0 * Math.Sin(6.0 * x * pi) + 20.0 * Math.Sin(2.0 * x * pi)) * 2.0 / 3.0;
+            ret += (20.0 * Math.Sin(x * pi) + 40.0 * Math.Sin(x / 3.0 * pi)) * 2.0 / 3.0;
+            ret += (150.0 * Math.Sin(x / 12.0 * pi) + 300.0 * Math.Sin(x / 30.0 * pi)) * 2.0 / 3.0;
+            return ret;
+        }
+        // 妞悆鍙傛暟-鍦嗗懆鐜�
+        private const double pi = 3.14159265358979324;
+
+        // (鍖椾含54)妞悆闀垮崐杞达紝鍗槦妞悆鍧愭爣鎶曞奖鍒板钩闈㈠湴鍥惧潗鏍囩郴鐨勬姇褰卞洜瀛�
+        private const double a = 6378245.0;
+        /*
+            * Krasovsky 1940 (鍖椾含54)妞悆闀垮崐杞寸涓�鍋忓績鐜囧钩鏂�
+            * 璁$畻鏂瑰紡锛�
+            * 闀垮崐杞达細
+            * a = 6378245.0
+            * 鎵佺巼锛�
+            * 1/f = 298.3锛堝彉閲忕浉鍏宠绠椾负锛�(a-b)/a锛�
+            * 鐭崐杞达細
+            * b = 6356863.0188 (鍙橀噺鐩稿叧璁$畻鏂规硶涓猴細b = a * (1 - f))
+            * 绗竴鍋忓績鐜囧钩鏂�:
+            * e2 = (a^2 - b^2) / a^2;
+        */
+        private const double ee = 0.00669342162296594323;
+
+        /// <summary>
+        /// APP涓婃姤GPS缁忕含搴�
+        /// </summary>
+        /// <param name="lon">APP GPS缁忓害</param>
+        /// <param name="lat">APP GPS绾害</param>
+        public void AppLatAndLonEvent(double lon, double lat)
+        {
+            Console.WriteLine($"GPS缁忓害===={lon}  \nGPS绾害===={lat}");
+            //Application.LocationAction += (lon, lat) =>
+            //{
+            //  Console.WriteLine($"GPS缁忓害===={lon}");
+            //  Console.WriteLine($"GPS绾害===={lat}");
+            //  ////GPS鍧愭爣杞垚楂樺痉鍧愭爣
+            //  //double out_lng, out_lat;
+            //  //this.WGS84_to_GCJ02(lon, lat, out out_lng, out out_lat);
+            //  //涓婃姤缁忕含搴�
+            //  this.AutomatedGeofenceStatusReporting(lon, lat);
+            //};
+            //涓婃姤缁忕含搴�<gps 涓婃姤鏉′欢澶т簬30绉掍笖绉诲姩璺濈澶т簬100绫筹紝涓婃姤缁忕含搴�>
+            this.AutomatedGeofenceStatusReporting(lon, lat);
+        }
+
+        /// <summary>
+        /// 鑷姩鍖栧湴鐞嗗洿鏍忕姸鎬佷笂鎶ヤ簯绔�
+        /// </summary>
+        /// <param name="out_lng">APP GPS缁忓害</param>
+        /// <param name="out_lat">APP GPS绾害</param>
+        private void AutomatedGeofenceStatusReporting(double out_lng, double out_lat)
+        {
+            if (IsOthreShare)
+            {
+                //涓嶆槸涓昏处鍙风洿鎺ヨ繑鍥�
+                return;
+            }
+            List<LogicData> logicDataList = new List<LogicData>();
+            logicDataList.Clear();
+            System.Threading.Tasks.Task.Run(() =>
+            {
+                try
+                {
+              //鑾峰彇閫昏緫ID鍒楄〃锛岀洰鍓嶉拡瀵规墍鏈�<澶囨敞:濡傛灉鍙拡瀵瑰綋鍓嶆墜鏈虹殑璇濓紝鍙互鐩存帴鎷跨紦瀛樻暟鎹嚜鍔ㄥ寲鍒楄〃閬嶅巻>
+              var idStr = Send.GetLogicIdList();
+                    if (idStr.Code == "0" && idStr.Data != null && idStr.Data.ToString() != "")
+                    {
+                        var date = Newtonsoft.Json.JsonConvert.SerializeObject(idStr.Data);
+                        logicDataList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<LogicData>>(date);
+                    }
+              ///鏈夎嚜鍔ㄥ垪琛ㄦ墠澶勭悊
+              if (logicDataList.Count > 0)
+                    {
+                  ///閬嶅巻鎵�鏈夊垪琛�
+                  for (int i = 0; i < logicDataList.Count; i++)
+                        {
+                            var logicDate = logicDataList[i];
+                      ///鑷姩鍖栨病鏈夐厤缃湴鐞嗗洿鏍忎笉澶勭悊
+                      if (string.IsNullOrEmpty(logicDate.geo_fence.latitude) || string.IsNullOrEmpty(logicDate.geo_fence.longitude))
+                            {
+                          //缁忕含搴︿负绌�,璁や负鑷姩鍖栨病鏈夐厤缃湴鐞嗗洿鏍忥紝涓嶅鐞�;
+                          continue;
+                            }
+                      //鑷姩鍖栭厤缃緭鍏ユ潯浠剁含搴�
+                      double lat = Convert.ToDouble(logicDate.geo_fence.latitude.Replace(",", "."));
+                      //鑷姩鍖栭厤缃緭鍏ユ潯浠剁粡搴�
+                      double lon = Convert.ToDouble(logicDate.geo_fence.longitude.Replace(",", "."));
+                      //鑷姩鍖栭厤缃緭鍏ユ潯浠�<鍦扮悊鍥存爮鍗婂緞><鍗曚綅锛屽叕閲屻�佸崈绫�.绫�>
+                      int radius = int.Parse(logicDate.geo_fence.radius);
+                      //璁$畻2涓粡绾害涔嬮棿鐨勮窛绂�
+                      int r = Infrastructure.Service.Helper.CalculatedDistance.Distance(out_lat, out_lng, lat, lon);
+                      //瀹氫箟涓�涓眬閮ㄥ彉閲�
+                      string direction = string.Empty;
+                      //涓ょ偣璺濈灏忎簬閰嶇疆璺濈<鏃㈣嚜鍔ㄥ寲閰嶇疆杈撳叆鏉′欢鍦扮悊鍥存爮鍗婂緞>,璇存槑杩涘叆鍖哄煙
+                      if (r < radius)
+                            {
+                          //鍒拌揪鏌愬湴
+                          direction = "arrive";
+                            }
+                            else
+                            {
+                          //绂诲紑
+                          direction = "leave";
+                            }
+                      ///閬嶅巻缂撳瓨鍒楄〃<涓嶄负绌鸿鏄庢暟鎹凡缁忔帹閫佽繃锛屼笉鍐嶆帹閫�>
+                      var isPush = pushList.Find((o) => o.homeId == HomeId && o.userId == UserInfo.Current.ID && o.userLogicId == logicDate.userLogicId && o.arriveOnLeave == direction);
+                            if (isPush == null)
+                            {
+                          //鎺ㄩ�佺粰浜戠鏄惁鎴愬姛
+                          bool push = Send.GeoFenceStateReport(logicDate.userLogicId, logicDate.sid, direction);
+                                if (push)
+                                {
+                              ///娣诲姞鍒版帹閫佸垪琛�
+                              pushList.Add(new Push
+                                    {
+                                        homeId = HomeId,
+                                        userId = UserInfo.Current.ID,
+                                        userLogicId = logicDate.userLogicId,
+                                        sid = logicDate.sid,
+                                        arriveOnLeave = direction,
+                                    });
+                                }
+                            }
+                        }
+
+                    }
+                }
+                catch { }
+            });
+        }
+        /// <summary>
+        /// 鎺ㄩ�佸垪琛�<杩欓噷鏁版嵁宸茬粡鎺ㄩ�佽繃>
+        /// </summary>
+        private static List<Push> pushList = new List<Push>();
+
     }
-    /// <summary>
-    /// 鎺ㄩ�佸垪琛�<杩欓噷鏁版嵁宸茬粡鎺ㄩ�佽繃>
-    /// </summary>
-    private static List<Push> pushList = new List<Push>();
+    public class Push
+    {
+        /// <summary>
+        /// 浜戠鍞竴id
+        /// </summary>
+        public string userLogicId = "";
+        /// <summary>
+        /// 缃戝叧id
+        /// </summary>
+        public string gatewayId = "";
+        /// <summary>
+        /// 閫昏緫鍞竴鏍囪瘑
+        /// </summary>
+        public string sid = "";
+        /// <summary>
+        /// 浣忓畢id
+        /// </summary>
+        public string homeId = "";
+        /// <summary>
+        /// 鍒拌揪鏌愬湴 绂诲紑
+        /// </summary>
+        public string arriveOnLeave = "";
+        /// <summary>
+        /// 聽鐢ㄦ埛id
+        /// </summary>
+        public string userId = "";
 
-  }
-  public class Push
-  {
-    /// <summary>
-    /// 浜戠鍞竴id
-    /// </summary>
-    public string userLogicId = "";
-    /// <summary>
-    /// 缃戝叧id
-    /// </summary>
-    public string gatewayId = "";
-    /// <summary>
-    /// 閫昏緫鍞竴鏍囪瘑
-    /// </summary>
-    public string sid = "";
-    /// <summary>
-    /// 浣忓畢id
-    /// </summary>
-    public string homeId = "";
-    /// <summary>
-    /// 鍒拌揪鏌愬湴 绂诲紑
-    /// </summary>
-    public string arriveOnLeave = "";
-    /// <summary>
-    /// 聽鐢ㄦ埛id
-    /// </summary>
-    public string userId = "";
-
-  }
+    }
 }
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs
index 8cae2d3..7258f5f 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs
@@ -173,6 +173,7 @@
         logicIfon.Add("noticeConfig", noticeConfigJObject);
         logicIfon.Add("pushConfigs", pushConfigsArray);
         logicjArray.Add(logicIfon);
+        //string str = logicIfon.ToString();
         var jObject = new JObject { { "homeId", LogicMethod.CurrLogicMethod.HomeId }, { "logics", logicjArray } };
         responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_Add, 5);
         //濡傛灉鏄痶oken杩囨湡鍒欏埛鏂皌oken
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/TargetDeviceFunList.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/TargetDeviceFunList.cs
index 9866147..e5894e8 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/TargetDeviceFunList.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/TargetDeviceFunList.cs
@@ -68,6 +68,7 @@
                         lightSwitchView.btnText.TextID = StringId.switchLogic;
                         fLayout.AddChidren(lightSwitchView.FLayoutView());
 
+
                         ///璁惧寤舵椂iewv
                         DelayView(fLayout, lightSwitchView.frameLayout.Bottom);
                         #endregion
@@ -101,7 +102,7 @@
                         brightnessView.frameLayout.Y = lightSwitchView.frameLayout.Bottom;
                         brightnessView.btnText.TextID = StringId.brightnesLogic;
                         fLayout.AddChidren(brightnessView.FLayoutView());
-                        brightnessView.btnState.Text = "5%";//浜у搧缁忕悊鏅撹緣瑕佹眰鏀圭殑 2021-11-06
+                        //brightnessView.btnState.Text = "5%";//浜у搧缁忕悊鏅撹緣瑕佹眰鏀圭殑 2021-11-06
                         ///璁惧寤舵椂iewv
                         DelayView(fLayout, brightnessView.frameLayout.Bottom);
                         #endregion
@@ -127,15 +128,12 @@
                     break;
                 //绐楀笜
                 case SPK.CurtainSwitch:
-                case SPK.CurtainTrietex:
-                case SPK.CurtainRoller:
                     {
                         #region 鐣岄潰
                         ///寮�鍏�
                         LogicView.FunTypeView curtainSwitchView = new LogicView.FunTypeView();
                         curtainSwitchView.btnText.TextID = StringId.switchLogic;
                         fLayout.AddChidren(curtainSwitchView.FLayoutView());
-                        ///璁惧寤舵椂iewv
                         DelayView(fLayout, curtainSwitchView.frameLayout.Bottom);
                         #endregion
                         #region 鐐瑰嚮浜嬩欢
@@ -148,6 +146,42 @@
                         {
                             //鏄剧ず缂栬緫涔嬪墠鐨勮澶囩姸鎬�
                             GetEditState(device, index, curtainSwitchView.btnState, null, null, null);
+                        }
+                        #endregion
+                    }
+                    break;
+                case SPK.CurtainTrietex:
+                case SPK.CurtainRoller:
+                    {
+                        #region 鐣岄潰
+                        ///寮�鍏�
+                        LogicView.FunTypeView curtainSwitchView = new LogicView.FunTypeView();
+                        curtainSwitchView.btnText.TextID = StringId.switchLogic;
+                        fLayout.AddChidren(curtainSwitchView.FLayoutView());
+                        ///鐧惧垎姣�
+                        LogicView.FunTypeView crtainPercentumView = new LogicView.FunTypeView();
+                        crtainPercentumView.frameLayout.Y = curtainSwitchView.frameLayout.Bottom;
+                        crtainPercentumView.btnText.TextID = StringId.percentum;
+                        fLayout.AddChidren(crtainPercentumView.FLayoutView());
+                        crtainPercentumView.btnState.Text = "5%";//浜у搧缁忕悊鏅撹緣瑕佹眰鏀圭殑 2021-11-06
+                        ///璁惧寤舵椂iewv
+                        DelayView(fLayout, crtainPercentumView.frameLayout.Bottom);
+                        #endregion
+                        #region 鐐瑰嚮浜嬩欢
+                        ///寮�鍏崇偣鍑讳簨浠�
+                        curtainSwitchView.btnClick.MouseUpEventHandler += (sender, e) =>
+                        {
+                            SwitchViewMethod(device, curtainSwitchView.btnState, 3);
+                        };
+                        ///鐧惧垎姣旂偣鍑讳簨浠�
+                        crtainPercentumView.btnClick.MouseUpEventHandler += (sender, e) =>
+                        {
+                            BrightnessMethod(device, crtainPercentumView.btnState, crtainPercentumView.btnText.Text);
+                        };
+                        if (edit)
+                        {
+                            //鏄剧ず缂栬緫涔嬪墠鐨勮澶囩姸鎬�
+                            GetEditState(device, index, curtainSwitchView.btnState, crtainPercentumView.btnState, null, null);
                         }
                         #endregion
                     }
@@ -604,8 +638,9 @@
         /// <summary>
         /// 浜害/鐧惧垎姣�=鍔熻兘涓嬩竴绾х晫闈�
         /// </summary>
-        /// <param name="device"></param>
-        /// <param name="button"></param>
+        /// <param name="device">璁惧瀵硅薄</param>
+        /// <param name="button">鏄剧ず鐘舵�佸璞�</param>
+        /// <param name="titleName">鏍囬</param>
         private void BrightnessMethod(Entity.Function device, Button button, string titleName)
         {
             #region 鐣岄潰
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneAddPage.cs b/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneAddPage.cs
index ee6432c..6edd835 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneAddPage.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneAddPage.cs
@@ -993,7 +993,9 @@
                 })
                 { IsBackground = true }.Start();
             }
-            catch { }
+            catch (Exception ex) {
+                MainPage.Log("涓婁紶鍥剧墖寮傚父锛�" + ex.Message);
+            }
         }
     }
 }
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneEditPage.cs b/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneEditPage.cs
index f70fc3b..df83a81 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneEditPage.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Scene/SceneEditPage.cs
@@ -563,7 +563,7 @@
 
                 EventHandler<MouseEventArgs> skipEvent = (sender, e) =>
                 {
-                    var ssf = new SceneFunctionInfoEditPage(scene, scenefunction.localFunction.ConvertSceneFunction(), refreshFunctionRowAction);
+                    var ssf = new SceneFunctionInfoEditPage(scene, scenefunction, refreshFunctionRowAction);
                     MainPage.BasePageView.AddChidren(ssf);
                     ssf.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 3887a17..b4008c8 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs
@@ -856,7 +856,7 @@
             #endregion
 
             #region Siri
-            #if __IOS__
+#if __IOS__
             //if (Application.PhoneType >= 12)
             {
                 supportViewCellCount++;
@@ -925,10 +925,10 @@
                 };
                 siriView.AddChidren(btnSmartSpeakerViewLine);
             }
-            #endif
+#endif
             #endregion
 
-            #region 鑾峰彇鏀寔
+            //#region 鑾峰彇鏀寔
             //FrameLayout supView = new FrameLayout()
             //{
             //    Height = Application.GetRealWidth(44),
@@ -1022,7 +1022,7 @@
             //    BackgroundColor = CSS_Color.DividingLineColor
             //};
             //supView.AddChidren(btnSupportViewLine);
-            #endregion
+            //#endregion
 
             #region 鍏充簬On Pro
             FrameLayout aboutView = new FrameLayout()
diff --git a/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs b/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs
index cd5aefc..bdc7f95 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs
@@ -358,15 +358,15 @@
                 };
                 EventHandler<MouseEventArgs> eventHandler1 = (sender, e) =>
                 {
-                    if (!device.online)
-                    {
-                        new Tip()
-                        {
-                            CloseTime = 1,
-                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                            Direction = AMPopTipDirection.None,
-                        }.Show(MainPage.BaseView);
-                    }
+                    //if (!device.online)
+                    //{
+                    //    new Tip()
+                    //    {
+                    //        CloseTime = 1,
+                    //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                    //        Direction = AMPopTipDirection.None,
+                    //    }.Show(MainPage.BaseView);
+                    //}
                     btnModeIcon.IsSelected = btnModeText.IsSelected = true;
                     device.SetAttrState(FunctionAttributeKey.Mode, m);
                     btnMode.UnSelectedImagePath = acFunction.GetModeIconPath(m);
@@ -494,15 +494,15 @@
                 };
                 EventHandler<MouseEventArgs> eventHandler1 = (sender, e) =>
                 {
-                    if (!device.online)
-                    {
-                        new Tip()
-                        {
-                            CloseTime = 1,
-                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                            Direction = AMPopTipDirection.None,
-                        }.Show(MainPage.BaseView);
-                    }
+                    //if (!device.online)
+                    //{
+                    //    new Tip()
+                    //    {
+                    //        CloseTime = 1,
+                    //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                    //        Direction = AMPopTipDirection.None,
+                    //    }.Show(MainPage.BaseView);
+                    //}
                     btnModeIcon.IsSelected = btnModeText.IsSelected = true;
                     device.SetAttrState(FunctionAttributeKey.Swing, m);
                     btnSwing.UnSelectedImagePath = acFunction.GetSwingIconPath(m);
@@ -618,15 +618,15 @@
                 };
                 EventHandler<MouseEventArgs> eventHandler1 = (sender, e) =>
                 {
-                    if (!device.online)
-                    {
-                        new Tip()
-                        {
-                            CloseTime = 1,
-                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                            Direction = AMPopTipDirection.None,
-                        }.Show(MainPage.BaseView);
-                    }
+                    //if (!device.online)
+                    //{
+                    //    new Tip()
+                    //    {
+                    //        CloseTime = 1,
+                    //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                    //        Direction = AMPopTipDirection.None,
+                    //    }.Show(MainPage.BaseView);
+                    //}
                     btnFanIcon.IsSelected = btnFanText.IsSelected = true;
                     device.SetAttrState(FunctionAttributeKey.FanSpeed, m);
                     btnWindSpeed.UnSelectedImagePath = acFunction.GetFanIconPath(m);
@@ -814,15 +814,15 @@
 
                 btn.MouseUpEventHandler = (sender, e) =>
                 {
-                    if (!device.online)
-                    {
-                        new Tip()
-                        {
-                            CloseTime = 1,
-                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                            Direction = AMPopTipDirection.None,
-                        }.Show(MainPage.BaseView);
-                    }
+                    //if (!device.online)
+                    //{
+                    //    new Tip()
+                    //    {
+                    //        CloseTime = 1,
+                    //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                    //        Direction = AMPopTipDirection.None,
+                    //    }.Show(MainPage.BaseView);
+                    //}
                     Dictionary<string, string> d = new Dictionary<string, string>();
                     d.Add(attr.key, "");
                     Control.Ins.SendWriteCommand(device, d);
@@ -877,15 +877,15 @@
         {
             btnMinus.MouseUpEventHandler = (sender, e) =>
             {
-                if (!device.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                }
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //}
                 if (device.trait_on_off.curValue.ToString() == "off" || device.GetAttrState(FunctionAttributeKey.Mode) == "fan")
                 {
                     return;
@@ -907,15 +907,15 @@
             };
             btnPlus.MouseUpEventHandler = (sender, e) =>
             {
-                if (!device.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                }
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //}
                 if (device.trait_on_off.curValue.ToString() == "off" || device.GetAttrState(FunctionAttributeKey.Mode) == "fan")
                 {
                     return;
@@ -933,7 +933,7 @@
                 d.Add(FunctionAttributeKey.SetTemp, temp.ToString());
                 Control.Ins.SendWriteCommand(device, d);
             };
-            if (!device.online)
+            //if (device.online)
             {
                 arcBar.OnStopTrackingTouchEvent = (sender, e) =>
                 {
@@ -941,7 +941,7 @@
                     device.SetAttrState(FunctionAttributeKey.SetTemp, arcBar.Progress.ToString());
                     btnTemp.Text = arcBar.Progress.ToString();
                     controlTime = DateTime.Now;
-                    System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
+                    Dictionary<string, string> d = new Dictionary<string, string>();
                     d.Add(FunctionAttributeKey.SetTemp, arcBar.Progress.ToString());
                     Control.Ins.SendWriteCommand(device, d);
                 };
@@ -994,15 +994,15 @@
 
             btnSwitch.MouseUpEventHandler = (sender, e) =>
             {
-                if (!device.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                }
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //}
                 btnSwitch.IsSelected = !btnSwitch.IsSelected;
                 device.trait_on_off.curValue = btnSwitch.IsSelected ? "on" : "off";
                 if (device.trait_on_off.curValue.ToString() == "on")
diff --git a/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AirFreshControlPage.cs b/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AirFreshControlPage.cs
index 7075c77..22ddee1 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AirFreshControlPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AirFreshControlPage.cs
@@ -719,13 +719,13 @@
             this.btnMode2.CanClick = this.airFreshData.Open;
 
             //椋庨��
-            if (this.airFreshData.Fan == "level_3")
+            if (this.airFreshData.Fan == "level_3" || this.airFreshData.Fan == "high")
             {
                 this.btnFan.UnSelectedImagePath = "FunctionIcon/AirFresh/Fan3.png";
                 this.btnFan.SelectedImagePath = "FunctionIcon/AirFresh/Fan3Select.png";
                 this.btnFanView.Text = this.dicText["3妗�"];
             }
-            else if(this.airFreshData.Fan == "level_2")
+            else if(this.airFreshData.Fan == "level_2" || this.airFreshData.Fan == "medium")
             {
                 this.btnFan.UnSelectedImagePath = "FunctionIcon/AirFresh/Fan2.png";
                 this.btnFan.SelectedImagePath = "FunctionIcon/AirFresh/Fan2Select.png";
@@ -759,15 +759,15 @@
         /// <param name="comadValue">鍛戒护</param>
         private void SendOtherComand(IconViewControl btnIcon, string comadKey, string comadValue)
         {
-            if (!device.online)
-            {
-                new Tip()
-                {
-                    CloseTime = 1,
-                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                    Direction = AMPopTipDirection.None,
-                }.Show(MainPage.BaseView);
-            }
+            //if (!device.online)
+            //{
+            //    new Tip()
+            //    {
+            //        CloseTime = 1,
+            //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+            //        Direction = AMPopTipDirection.None,
+            //    }.Show(MainPage.BaseView);
+            //}
             btnIcon.CanClick = false;
 
             HdlThreadLogic.Current.RunThread(() =>
@@ -788,15 +788,15 @@
         /// </summary>
         private void SendSwitchComand()
         {
-            if (!device.online)
-            {
-                new Tip()
-                {
-                    CloseTime = 1,
-                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                    Direction = AMPopTipDirection.None,
-                }.Show(MainPage.BaseView);
-            }
+            //if (!device.online)
+            //{
+            //    new Tip()
+            //    {
+            //        CloseTime = 1,
+            //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+            //        Direction = AMPopTipDirection.None,
+            //    }.Show(MainPage.BaseView);
+            //}
             this.btnSwitch.CanClick = false;
 
             string statu = this.btnSwitch.IsSelected == true ? "off" : "on";
diff --git a/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AirFreshRelayControlPage.cs b/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AirFreshRelayControlPage.cs
index 7ea9ab3..90fea50 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AirFreshRelayControlPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AirFreshRelayControlPage.cs
@@ -89,15 +89,15 @@
             FrameWhiteCentet1.AddChidren(btnSwitch);
             btnSwitch.MouseUpEventHandler = (sender, e) =>
             {
-                if (!device.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                }
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //}
                 btnSwitch.IsSelected = !btnSwitch.IsSelected;
                 device.trait_on_off.curValue = btnSwitch.IsSelected ? "on" : "off";
                 new System.Threading.Thread(() =>
@@ -109,15 +109,15 @@
                 { IsBackground = true }.Start();
             };
 
-            //鍒锋柊鐣岄潰鐘舵��
-            this.RefreshFormStatu();
-
             if (fanSpeedList.Count > 0)
             {
                 this.btnFan.UnSelectedImagePath = "FunctionIcon/AirFresh/Fan1.png";
                 this.btnFan.SelectedImagePath = "FunctionIcon/AirFresh/Fan1Select.png";
                 this.btnFanView.Text = Language.StringByID(StringId.LowWindSpeed);
             }
+            //鍒锋柊鐣岄潰鐘舵��
+            this.RefreshFormStatu();
+
         }
 
         #endregion
@@ -289,15 +289,15 @@
         /// <param name="comadValue">鍛戒护</param>
         private void SendOtherComand(IconViewControl btnIcon, string comadKey, string comadValue)
         {
-            if (!device.online)
-            {
-                new Tip()
-                {
-                    CloseTime = 1,
-                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                    Direction = AMPopTipDirection.None,
-                }.Show(MainPage.BaseView);
-            }
+            //if (!device.online)
+            //{
+            //    new Tip()
+            //    {
+            //        CloseTime = 1,
+            //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+            //        Direction = AMPopTipDirection.None,
+            //    }.Show(MainPage.BaseView);
+            //}
             btnIcon.CanClick = false;
 
             HdlThreadLogic.Current.RunThread(() =>
diff --git a/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/CacControlPage.cs b/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/CacControlPage.cs
new file mode 100644
index 0000000..f4319c0
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/CacControlPage.cs
@@ -0,0 +1,657 @@
+锘縰sing System;
+using System.Collections.Generic;
+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 CacControlPage : DeviceFunctionCardCommonForm
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+        /// <summary>
+        /// 绌鸿皟娓╁害鎺у埗鎺т欢
+        /// </summary>
+        DiyArcSeekBar arcBar;
+        /// <summary>
+        /// 鍑忓彿鎸夐挳
+        /// </summary>
+        Button btnMinus;
+        /// <summary>
+        /// 鍔犲彿鎸夐挳
+        /// </summary>
+        Button btnPlus;
+        /// <summary>
+        /// 娓╁害鎸夐挳
+        /// </summary>
+        Button btnTemp;
+        Button btnTempUint;
+        /// <summary>
+        /// 瀹ゅ唴娓╁害鎸夐挳
+        /// </summary>
+        Button btnIndoorTemp;
+        /// <summary>
+        /// 妯″紡鎸夐挳
+        /// </summary>
+        Button btnMode;
+        /// <summary>
+        /// 椋庨�熸寜閽�
+        /// </summary>
+        Button btnWindSpeed;
+        /// <summary>
+        /// 寮�鍏虫寜閽�
+        /// </summary>
+        Button btnSwitch;
+
+        AC acFunction = new AC();
+
+        /// <summary>
+        /// 鎺у埗鏃堕棿
+        /// </summary>
+        DateTime controlTime = DateTime.MinValue.AddDays(10);
+        /// <summary>
+        /// 鎺у埗娓╁害
+        /// </summary>
+        int temp = 16;
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鍒濆鍖栫櫧鑹插尯鍩熺殑鍐呭
+        /// </summary>
+        public override void InitFrameWhiteContent()
+        {
+
+            var sk = device.GetAttribute(FunctionAttributeKey.SetTemp);
+            if (sk != null)
+            {
+                if (sk.min == 0)
+                {
+                    sk.min = 16;
+                }
+                if (sk.max == 0)
+                {
+                    sk.max = 32;
+                }
+            }
+
+            base.ShowColltionButton = false;
+            base.SetTitleText(Language.StringByID(StringId.Electric));
+
+            //鍒濆鍖栫涓�涓储寮曢〉鐨勫唴瀹�
+            this.InitFrameWhiteContent1();
+
+            //鍒锋柊褰撳墠璁惧鐨勭姸鎬佺紦瀛�
+            this.RefreshNowDeviceStatuMemory(this.device);
+            //鍒锋柊鐣岄潰鐘舵��
+            this.RefreshFormStatu();
+            //璇诲彇鐘舵��
+            new System.Threading.Thread(() =>
+            {
+                while (true)
+                {
+                    if (controlTime == DateTime.MinValue)
+                    {
+
+                    }
+                    else if (controlTime.AddSeconds(2) < DateTime.Now)
+                    {
+                        Control.Ins.SendReadCommand(device);
+                        controlTime = DateTime.MinValue;
+                    }
+                    System.Threading.Thread.Sleep(1000);
+                }
+            })
+            { IsBackground = true }.Start();
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栫涓�涓储寮曢〉鐨勫唴瀹�
+        /// </summary>
+        private void InitFrameWhiteContent1()
+        {
+            Button btnJinmaoIcon = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealHeight(94),
+                Width = Application.GetRealWidth(164),
+                Height = Application.GetRealHeight(43),
+                UnSelectedImagePath = "FunctionIcon/CAC/JinMaoIcon.png"
+            };
+            FrameWhiteCentet1.AddChidren(btnJinmaoIcon);
+
+
+            temp = (int)Convert.ToDouble(device.GetAttrState(FunctionAttributeKey.SetTemp).Replace(",", "."));
+            arcBar = new DiyArcSeekBar()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                OpenAngle = 160,
+                ThumbImageHeight = Application.GetRealWidth(50),
+                ProgressBarColor = CSS_Color.MainColor,
+                OfflineProgressBarColor = CSS_Color.PromptingColor2,
+                ArcColor = CSS_Color.BackgroundColor,
+#if __IOS__
+                Y = Application.GetRealHeight(120 + 25),
+                Width = Application.GetRealWidth(260 - 40),
+                Height = Application.GetRealWidth(260 - 40),
+                SeekBarPadding = Application.GetRealWidth(8),
+#else
+                Y = Application.GetRealHeight(120 + 40),
+                Width = Application.GetRealWidth(260 - 40),
+                Height = Application.GetRealWidth(260 - 40),
+                SeekBarPadding = Application.GetRealWidth(7),
+#endif
+
+            };
+            FrameWhiteCentet1.AddChidren(arcBar);
+
+
+            arcBar.ThumbImagePath = device.GetAttrState(FunctionAttributeKey.OnOff) == "on" ? "FunctionIcon/AC/DiyThumbIconOn.png" : "FunctionIcon/AC/DiyThumbIcon.png";
+            arcBar.IsOffline = device.GetAttrState(FunctionAttributeKey.OnOff) == "off";
+            arcBar.MinValue = device.GetAttribute(FunctionAttributeKey.SetTemp).min;
+            arcBar.MaxValue = device.GetAttribute(FunctionAttributeKey.SetTemp).max;
+            arcBar.Progress = (int)Convert.ToDouble(device.GetAttrState(FunctionAttributeKey.SetTemp).Replace(",", "."));
+
+            btnTemp = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealHeight(206),
+                Width = Application.GetRealWidth(71),
+                Height = Application.GetRealWidth(60),
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = 50,
+                IsBold = true,
+                Text = Convert.ToDouble(device.GetAttrState(FunctionAttributeKey.SetTemp).Replace(",", ".")).ToString(),
+                TextAlignment = TextAlignment.Center,
+            };
+            FrameWhiteCentet1.AddChidren(btnTemp);
+
+            btnTempUint = new Button()
+            {
+                X = btnTemp.Right,
+                Y = btnTemp.Y,
+                Width = Application.GetRealWidth(30),
+                Height = Application.GetRealHeight(30),
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS_FontSize.EmphasisFontSize_Secondary,
+                IsBold = true,
+                TextAlignment = TextAlignment.CenterLeft,
+                Text = "掳C",
+            };
+            FrameWhiteCentet1.AddChidren(btnTempUint);
+
+            btnIndoorTemp = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = btnTemp.Bottom,
+                Width = Application.GetRealWidth(120),
+                Height = Application.GetRealHeight(20),
+                Text = Language.StringByID(StringId.IndoorTemp) + "20掳C/" + Language.StringByID(StringId.Humidity) +"45%",
+                TextColor = CSS_Color.PromptingColor1,
+                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+            };
+            FrameWhiteCentet1.AddChidren(btnIndoorTemp);
+
+            btnMinus = new Button()
+            {
+                X = Application.GetRealWidth(21),
+                Y = Application.GetRealHeight(263),
+                Width = Application.GetRealWidth(32),
+                Height = Application.GetRealWidth(32),
+                UnSelectedImagePath = "Public/MinusSignIcon.png",
+            };
+            FrameWhiteCentet1.AddChidren(btnMinus);
+
+            btnPlus = new Button()
+            {
+                X = Application.GetRealWidth(275),
+                Y = Application.GetRealHeight(263),
+                Width = Application.GetRealWidth(32),
+                Height = Application.GetRealWidth(32),
+                UnSelectedImagePath = "Public/PlusSignIcon.png",
+            };
+            FrameWhiteCentet1.AddChidren(btnPlus);
+
+            btnMode = new Button()
+            {
+                X = Application.GetRealWidth(60),
+                Y = Application.GetRealHeight(334),
+                Width = Application.GetRealWidth(30),
+                Height = Application.GetRealWidth(30),
+                UnSelectedImagePath = acFunction.GetModeIconPath(device.GetAttrState(FunctionAttributeKey.Mode),true),
+            };
+            FrameWhiteCentet1.AddChidren(btnMode);
+
+            Button btnModeText = new Button()
+            {
+                X = Application.GetRealWidth(30),
+                Y = btnMode.Bottom,
+                Width = Application.GetRealWidth(90),
+                Height = Application.GetRealHeight(20),
+                TextAlignment = TextAlignment.Center,
+                TextSize = 12,
+                TextColor = CSS_Color.TextualColor,
+                TextID = StringId.Mode
+            };
+            FrameWhiteCentet1.AddChidren(btnModeText);
+
+            btnWindSpeed = new Button()
+            {
+                X = Application.GetRealWidth(238),
+                Y = Application.GetRealHeight(333),
+                Width = Application.GetRealWidth(38),
+                Height = Application.GetRealWidth(38),
+                UnSelectedImagePath = "FunctionIcon/CAC/DataIcon.png",
+            };
+            FrameWhiteCentet1.AddChidren(btnWindSpeed);
+
+            Button btnDataText = new Button()
+            {
+                X = Application.GetRealWidth(212),
+                Y = btnWindSpeed.Bottom,
+                Width = Application.GetRealWidth(90),
+                Height = Application.GetRealHeight(20),
+                TextAlignment = TextAlignment.Center,
+                TextSize = 12,
+                TextColor = CSS_Color.TextualColor,
+                TextID = StringId.Data
+            };
+            FrameWhiteCentet1.AddChidren(btnDataText);
+
+            btnSwitch = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealHeight(466),
+                Width = Application.GetRealWidth(32),
+                Height = Application.GetRealWidth(32),
+                UnSelectedImagePath = "Public/PowerClose.png",
+                SelectedImagePath = "Public/PowerOpen.png",
+                IsSelected = device.GetAttrState(FunctionAttributeKey.OnOff) == "on"
+            };
+            FrameWhiteCentet1.AddChidren(btnSwitch);
+
+            LoadEvent_TempChange();
+            LoadEvent_AcStatesChange();
+
+        }
+
+        /// <summary>
+        /// 鍔犺浇淇敼妯″紡鍖哄煙
+        /// </summary>
+        void LoadDiv_ChangeModeView()
+        {
+            Dialog dialog = new Dialog();
+
+            FrameLayout dialogView = new FrameLayout()
+            {
+                BackgroundColor = CSS_Color.DialogTransparentColor1,
+            };
+            dialog.AddChidren(dialogView);
+
+            FrameLayout modeChangeView;
+            modeChangeView = new FrameLayout()
+            {
+                X = Application.GetRealWidth(30),
+                Y = Application.GetRealHeight(128 + 135),
+                Width = Application.GetRealWidth(160),
+                Height = Application.GetRealHeight(152),
+                BackgroundImagePath = "Public/dialogBg2.png",
+            };
+            dialogView.AddChidren(modeChangeView);
+
+            Button btnTitle;
+            btnTitle = new Button()
+            {
+                X = Application.GetRealWidth(8 + 16),
+                Y = Application.GetRealHeight(8),
+                Width = Application.GetRealWidth(112),
+                Height = Application.GetRealHeight(44),
+                TextID = StringId.ChooseMode,
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS_FontSize.EmphasisFontSize_Secondary,
+            };
+            modeChangeView.AddChidren(btnTitle);
+
+            Button btnLine = new Button()
+            {
+                X = btnTitle.X,
+                Y = btnTitle.Bottom,
+                Width = Application.GetRealWidth(112),
+                Height = Application.GetRealHeight(1),
+                BackgroundColor = CSS_Color.BackgroundColor,
+            };
+            modeChangeView.AddChidren(btnLine);
+
+            var modeList = device.GetAttribute(FunctionAttributeKey.Mode).value;
+            foreach (var m in modeList)
+            {
+                Button btnModeIcon = new Button()
+                {
+                    X = btnTitle.X,
+                    Y = Application.GetRealHeight(44 * (modeList.IndexOf(m) + 1) + 10 + 8),
+                    Width = Application.GetRealWidth(24),
+                    Height = Application.GetRealWidth(24),
+                    IsSelected = device.GetAttrState(FunctionAttributeKey.Mode) == m,
+                };
+                modeChangeView.AddChidren(btnModeIcon);
+
+                Button btnModeText = new Button()
+                {
+                    X = Application.GetRealWidth(12) + btnModeIcon.Right,
+                    Y = Application.GetRealHeight(44 * (modeList.IndexOf(m) + 1) + 8),
+                    Height = Application.GetRealHeight(44),
+                    Width = Application.GetRealWidth(90),
+                    TextAlignment = TextAlignment.CenterLeft,
+                    TextColor = CSS_Color.FirstLevelTitleColor,
+                    SelectedTextColor = CSS_Color.MainColor,
+                    IsSelected = device.GetAttrState(FunctionAttributeKey.Mode) == m,
+                    TextSize = CSS_FontSize.TextFontSize,
+                };
+                modeChangeView.AddChidren(btnModeText);
+
+                btnModeIcon.UnSelectedImagePath = acFunction.GetModeIconPath(m, false);
+                btnModeIcon.SelectedImagePath = acFunction.GetModeIconPath(m);
+                btnModeText.Text = acFunction.GetModeAttrText(m);
+
+                if (modeList.IndexOf(m) < modeList.Count - 1)
+                {
+                    modeChangeView.AddChidren(new Button()
+                    {
+                        X = btnTitle.X,
+                        Y = btnModeText.Bottom,
+                        Width = Application.GetRealWidth(112),
+                        Height = Application.GetRealHeight(1),
+                        BackgroundColor = CSS_Color.BackgroundColor,
+                    });
+                }
+                EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+                {
+                    dialog.Close();
+                };
+                EventHandler<MouseEventArgs> eventHandler1 = (sender, e) =>
+                {
+                    //if (!device.online)
+                    //{
+                    //    new Tip()
+                    //    {
+                    //        CloseTime = 1,
+                    //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                    //        Direction = AMPopTipDirection.None,
+                    //    }.Show(MainPage.BaseView);
+                    //}
+                    btnModeIcon.IsSelected = btnModeText.IsSelected = true;
+                    device.SetAttrState(FunctionAttributeKey.Mode, m);
+                    btnMode.UnSelectedImagePath = acFunction.GetModeIconPath(m);
+                    Dictionary<string, string> d = new Dictionary<string, string>();
+                    d.Add(FunctionAttributeKey.Mode, m);
+                    Control.Ins.SendWriteCommand(device, d);
+                    dialog.Close();
+                    if (device.GetAttrState(FunctionAttributeKey.Mode) == "fan")
+                    {
+                        arcBar.IsClickable = false;
+                        arcBar.IsOffline = true;
+                    }
+                    else
+                    {
+                        arcBar.IsOffline = false;
+                        arcBar.IsClickable = true;
+                    }
+                };
+                btnModeIcon.MouseUpEventHandler = eventHandler1;
+                btnModeText.MouseUpEventHandler = eventHandler1;
+                dialogView.MouseUpEventHandler = eventHandler;
+
+            }
+
+            dialogView.MouseUpEventHandler = (sender, e) => {
+                dialog.Close();
+            };
+            dialog.Show();
+        }
+
+
+        #endregion
+
+        #region 鈻� 璁惧鐘舵�佸弽棣坃______________________
+
+        /// <summary>
+        /// 璁惧鐘舵�佸弽棣�
+        /// </summary>
+        /// <param name="i_LocalDevice"></param>
+        public override void DeviceStatuPush(Function i_LocalDevice)
+        {
+            //涓嶆槸鍚屼竴涓笢瑗�
+            if (this.device.sid != i_LocalDevice.sid) { return; }
+
+            //鍒锋柊褰撳墠璁惧鐨勭姸鎬佺紦瀛�
+            this.RefreshNowDeviceStatuMemory(i_LocalDevice);
+            //鍒锋柊鐣岄潰鐘舵��
+            this.RefreshFormStatu();
+        }
+
+        #endregion
+
+        #region 鈻� 鍙戦�佸悇绉嶅懡浠______________________
+
+        /// <summary>
+        /// 娓╁害鏀瑰彉妯″紡
+        /// </summary>
+        void LoadEvent_TempChange()
+        {
+            btnMinus.MouseUpEventHandler = (sender, e) =>
+            {
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //}
+                if (device.trait_on_off.curValue.ToString() == "off" || device.GetAttrState(FunctionAttributeKey.Mode) == "fan")
+                {
+                    return;
+                }
+
+                if (temp <= device.GetAttribute(FunctionAttributeKey.SetTemp).min)
+                {
+                    return;
+                }
+                --temp;
+                Console.WriteLine($"temp == {temp}");
+                controlTime = DateTime.Now;
+                arcBar.Progress = temp;
+                btnTemp.Text = temp.ToString();
+                device.SetAttrState(FunctionAttributeKey.SetTemp, temp.ToString());
+                System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
+                d.Add(FunctionAttributeKey.SetTemp, temp.ToString());
+                Control.Ins.SendWriteCommand(device, d);
+            };
+            btnPlus.MouseUpEventHandler = (sender, e) =>
+            {
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //}
+                if (device.trait_on_off.curValue.ToString() == "off" || device.GetAttrState(FunctionAttributeKey.Mode) == "fan")
+                {
+                    return;
+                }
+                if (temp >= device.GetAttribute(FunctionAttributeKey.SetTemp).max)
+                {
+                    return;
+                }
+                ++temp;
+                controlTime = DateTime.Now;
+                arcBar.Progress = temp;
+                btnTemp.Text = temp.ToString();
+                device.SetAttrState(FunctionAttributeKey.SetTemp, temp.ToString());
+                System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
+                d.Add(FunctionAttributeKey.SetTemp, temp.ToString());
+                Control.Ins.SendWriteCommand(device, d);
+            };
+            //if (device.online)
+            {
+                arcBar.OnStopTrackingTouchEvent = (sender, e) =>
+                {
+                    temp = arcBar.Progress;
+                    device.SetAttrState(FunctionAttributeKey.SetTemp, arcBar.Progress.ToString());
+                    btnTemp.Text = arcBar.Progress.ToString();
+                    controlTime = DateTime.Now;
+                    Dictionary<string, string> d = new Dictionary<string, string>();
+                    d.Add(FunctionAttributeKey.SetTemp, arcBar.Progress.ToString());
+                    Control.Ins.SendWriteCommand(device, d);
+                };
+                arcBar.OnProgressChangedEvent = (sender, e) =>
+                {
+                    device.SetAttrState(FunctionAttributeKey.SetTemp, e.ToString());
+                    btnTemp.Text = e.ToString();
+                };
+                //arcBar.MouseDownEventHandler = (sender, e) => {
+                //    Console.WriteLine("ddd");
+                //    MainPage.BasePageView.ScrollEnabled =false;
+                //};
+                //arcBar.MouseUpEventHandler = (sender, e) => {
+                //    Console.WriteLine("ddd2");
+                //    MainPage.BasePageView.ScrollEnabled = true;
+                //};
+            }
+        }
+
+        /// <summary>
+        /// 鎺у埗妯″紡浜嬩欢
+        /// </summary>
+        void LoadEvent_AcStatesChange()
+        {
+            btnMode.MouseUpEventHandler = (sender, e) =>
+            {
+                if (device.trait_on_off.curValue.ToString() == "off")
+                {
+                    return;
+                }
+                LoadDiv_ChangeModeView();
+            };
+            btnWindSpeed.MouseUpEventHandler = (sender, e) =>
+            {
+                var page = new CacHistoryChoosePage(device);
+                MainPage.BasePageView.AddChidren(page);
+                page.InitView();
+                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+            };
+
+            btnSwitch.MouseUpEventHandler = (sender, e) =>
+            {
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //}
+                btnSwitch.IsSelected = !btnSwitch.IsSelected;
+                device.trait_on_off.curValue = btnSwitch.IsSelected ? "on" : "off";
+                if (device.trait_on_off.curValue.ToString() == "on")
+                {
+                    arcBar.ThumbImagePath = "FunctionIcon/AC/DiyThumbIconOn.png";
+                    btnSwitch.IsSelected = true;
+                    arcBar.IsOffline = false;
+                }
+                else
+                {
+                    arcBar.ThumbImagePath = "FunctionIcon/AC/DiyThumbIcon.png";
+                    btnSwitch.IsBold = false;
+                    arcBar.IsOffline = true;
+                }
+                System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
+                d.Add(FunctionAttributeKey.OnOff, device.trait_on_off.curValue.ToString());
+                Control.Ins.SendWriteCommand(device, d);
+            };
+        }
+
+        #endregion
+
+        #region 鈻� 鍒锋柊鐣岄潰鐘舵�乢______________________
+
+        /// <summary>
+        /// 鍒锋柊鐣岄潰鐘舵��
+        /// </summary>
+        private void RefreshFormStatu()
+        {
+            Application.RunOnMainThread(() =>
+            {
+                //app鑷繁鎺у埗鐨勪笉鐢ㄦ洿鏂帮紝浼氶�犳垚璺冲姩
+                if (controlTime.AddSeconds(2) > DateTime.Now)
+                {
+                    return;
+                }
+                else
+                {
+                    btnIndoorTemp.Text = Language.StringByID(StringId.IndoorTemp) + Convert.ToInt32(Convert.ToDouble(device.GetAttrState(FunctionAttributeKey.RoomTemp).Replace(",", "."))) + "掳C"
+                                        + Language.StringByID(StringId.Humidity) + Convert.ToInt32(Convert.ToDouble(device.GetAttrState("room_humidity").Replace(", ", "."))) + "%";
+                    btnMode.UnSelectedImagePath = acFunction.GetModeIconPath(device.GetAttrState(FunctionAttributeKey.Mode));
+                    temp = Convert.ToInt32(Convert.ToDouble(device.GetAttrState(FunctionAttributeKey.SetTemp).Replace(",", ".")));
+
+
+                    arcBar.Progress = temp;
+                    btnTemp.Text = temp.ToString();
+
+                    if (device.trait_on_off.curValue.ToString() == "on")
+                    {
+                        arcBar.IsOffline = false;
+                        btnSwitch.IsSelected = true;
+                        arcBar.ThumbImagePath = "FunctionIcon/AC/DiyThumbIconOn.png";
+                        if (device.GetAttrState(FunctionAttributeKey.Mode) == "fan")
+                        {
+                            arcBar.IsClickable = false;
+                        }
+                        else
+                        {
+                            arcBar.IsClickable = true;
+                        }
+                    }
+                    else
+                    {
+                        arcBar.IsOffline = true;
+                        btnSwitch.IsSelected = false;
+                        arcBar.IsClickable = false;
+                        arcBar.ThumbImagePath = "FunctionIcon/AC/DiyThumbIcon.png";
+                    }
+
+                    if (device.GetAttrState(FunctionAttributeKey.Mode) == "dry")
+                    {
+                        arcBar.IsOffline = true;
+                        arcBar.IsClickable = false;
+
+                    }
+                }
+
+            });
+        }
+
+        #endregion
+
+        #region 鈻� 涓�鑸柟娉昣__________________________
+
+        /// <summary>
+        /// 鍒锋柊褰撳墠璁惧鐨勭姸鎬佺紦瀛�
+        /// </summary>
+        private void RefreshNowDeviceStatuMemory(Function i_LocalDevice)
+        {
+        }
+
+        #endregion
+    }
+}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/CacDayHistoryPage.cs b/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/CacDayHistoryPage.cs
new file mode 100644
index 0000000..4553294
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/CacDayHistoryPage.cs
@@ -0,0 +1,199 @@
+锘縰sing System;
+using System.Collections.Generic;
+using HDL_ON.DAL.Server;
+using HDL_ON.Entity;
+using HDL_ON.UI.CSS;
+using Shared;
+
+namespace HDL_ON.UI
+{
+    public class CacDayHistoryPage : FrameLayout
+    {
+        CacDayHistoryPage bodyView;
+        EchartsOption_BrokenLine brokenLine;
+        MyEchartsViewOn myEchartsView_Line;
+        string curQueryType = "hour";
+        string queryTime;
+        string functionId;
+        string time;
+        public CacDayHistoryPage(string functionId,string queryType, string time)
+        {
+            this.time = time;
+            this.functionId = functionId;
+            curQueryType = queryType;
+            bodyView = this;
+            queryTime = time;
+        }
+
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public void InitView()
+        {
+            new TopViewDiv(bodyView, Language.StringByID(StringId.StatisticalChart24Hour)).LoadTopView();
+            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
+
+            var contentView = new FrameLayout()
+            {
+                Y = Application.GetRealHeight(64),
+                Height = Application.GetRealHeight(603),
+            };
+            bodyView.AddChidren(contentView);
+
+            var btnTitle = new Button()
+            {
+                Height = Application.GetRealHeight(60),
+                TextAlignment = TextAlignment.Center,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+            };
+            if(curQueryType == "room_temp")
+            {
+                btnTitle.Text = queryTime + "瀹ゅ唴娓╁害鍘嗗彶鏁版嵁";
+            }
+            else
+            {
+                btnTitle.Text = queryTime + "瀹ゅ唴婀垮害鍘嗗彶鏁版嵁";
+            }
+            contentView.AddChidren(btnTitle);
+
+
+            var historyDataView = new FrameLayout()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealWidth(52),
+                Height = Application.GetRealWidth(350),
+            };
+            contentView.AddChidren(historyDataView);
+
+
+            brokenLine = new EchartsOption_BrokenLine();
+
+            myEchartsView_Line = new MyEchartsViewOn()
+            {
+                Y = Application.GetRealWidth(10),
+                Height = Application.GetRealWidth(338),
+            };
+            historyDataView.AddChidren(myEchartsView_Line);
+
+
+#if DEBUG
+
+            //List<string> vs = new List<string>() {
+            //            "1","2","3","4","5","6","7","8","9","10","11","12","13","14"
+            //        };
+            //brokenLine.InitXdataText(vs);
+            //brokenLine.InitYdataText("yData", new List<EnvironmentalSensorHistor>() {
+            //    new EnvironmentalSensorHistor{ fieldName = "1", fieldValue= "23"  },
+            //    new EnvironmentalSensorHistor{ fieldName = "2", fieldValue= "22"  },
+            //    new EnvironmentalSensorHistor{ fieldName = "3", fieldValue= "-11"  },
+            //    new EnvironmentalSensorHistor{ fieldName = "4", fieldValue= "21"  },
+            //    new EnvironmentalSensorHistor{ fieldName = "5", fieldValue= "-41"  },
+            //    new EnvironmentalSensorHistor{ fieldName = "6", fieldValue= "23"  },
+            //    new EnvironmentalSensorHistor{ fieldName = "7", fieldValue= "-31"  },
+            //    new EnvironmentalSensorHistor{ fieldName = "8", fieldValue= "-23"  },
+            //    new EnvironmentalSensorHistor{ fieldName = "9", fieldValue= "-11"  },
+            //    new EnvironmentalSensorHistor{ fieldName = "10", fieldValue= "-21"  },
+            //    new EnvironmentalSensorHistor{ fieldName = "11", fieldValue= "24"  },
+            //    new EnvironmentalSensorHistor{ fieldName = "12", fieldValue= "41"  },
+            //    new EnvironmentalSensorHistor{ fieldName = "13", fieldValue= "32"  },
+            //    new EnvironmentalSensorHistor{ fieldName = "14", fieldValue= "23"  }
+            //}, "#FF9D54");
+            //brokenLine.yTitle = "(鈩�)";
+            //brokenLine.xTitle = "";
+            ////if (curQueryType != "hour")
+            ////{
+            ////    brokenLine.xTitle = Language.StringByID(StringId.Date);
+            ////}
+            //var opString = brokenLine.InitOption();
+
+            //    myEchartsView_Line.ShowWithOption(opString);
+
+#endif
+            LoadMothed_GetHistoryData();
+        }
+
+        /// <summary>
+        /// 璇诲彇鍘嗗彶鏁版嵁
+        /// </summary>
+        void LoadMothed_GetHistoryData()
+        {
+
+            var loadPage = new Loading()
+            {
+                LodingBackgroundColor = 0x88888888,
+            };
+            bodyView.AddChidren(loadPage);
+
+            new System.Threading.Thread(() =>
+            {
+                try
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        loadPage.Start(Language.StringByID(StringId.PleaseWait));
+                    });
+
+                    var revertObj = new HttpServerRequest().GetSensorHistory("day_hour", functionId, curQueryType,time);
+                    if (revertObj != null)
+                    {
+                        if (revertObj.Code == StateCode.SUCCESS)
+                        {
+                            var revertData = Newtonsoft.Json.JsonConvert.DeserializeObject<List<EnvironmentalSensorHistor>>(revertObj.Data.ToString());
+
+                            List<string> vs = new List<string>();
+                            if (brokenLine.YvalueText == "")
+                            {
+                                foreach (var data in revertData)
+                                {
+                                    vs.Add(data.fieldName);
+                                }
+                                brokenLine.InitXdataText(vs);
+                            }
+                            //if (sr.GetAttribute("ydata") == null)
+                            //{
+                            //    sr.attributes.Add(new FunctionAttributes() { key = "ydata" });
+                            //}
+                            //sr.SetAttrState("ydata",
+                            brokenLine.InitYdataText("", revertData, "#FF9D54");// + ",");
+                        }
+                    }
+                    brokenLine.yTitle = Language.StringByID(StringId.Uint);
+                    if(curQueryType == "room_temp")
+                    {
+                        brokenLine.yTitle += ":掳C";
+                    }
+                    else
+                    {
+                        brokenLine.yTitle += ":%";
+                    }
+                    brokenLine.xTitle = Language.StringByID(StringId.timeMode);
+                    //if (curQueryType != "hour")
+                    //{
+                    //    brokenLine.xTitle = Language.StringByID(StringId.Date);
+                    //}
+                    var opString = brokenLine.InitOption();
+
+                    Application.RunOnMainThread(() =>
+                    {
+                        myEchartsView_Line.ShowWithOption(opString);
+                    });
+                }
+                catch (Exception ex)
+                {
+                    MainPage.Log($"sensor history error : {ex.Message}");
+                }
+                finally
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        loadPage.Hide();
+                    });
+                }
+            })
+            { IsBackground = true }.Start();
+        }
+
+    }
+}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/CacHistoryChoosePage.cs b/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/CacHistoryChoosePage.cs
new file mode 100644
index 0000000..d9514ef
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/CacHistoryChoosePage.cs
@@ -0,0 +1,108 @@
+锘縰sing System;
+using HDL_ON.Entity;
+using HDL_ON.UI.CSS;
+using Shared;
+namespace HDL_ON.UI
+{
+    /// <summary>
+    /// 娓╂帶鍣ㄥ巻鍙叉暟鎹樉绀洪�夋嫨鐣岄潰
+    /// </summary>
+    public class CacHistoryChoosePage : FrameLayout
+    {
+        FrameLayout bodyView;
+        Function device;
+        public CacHistoryChoosePage(Function function)
+        {
+            device = function;
+            bodyView = this;
+        }
+
+        public void InitView()
+        {
+            new TopViewDiv(bodyView, Language.StringByID(StringId.Data)).LoadTopView();
+            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
+
+            FrameLayout tempView = new FrameLayout()
+            {
+                Y = Application.GetRealHeight(64),
+                Height = Application.GetRealHeight(50),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+            };
+            bodyView.AddChidren(tempView);
+
+            Button btnTempRight = new Button()
+            {
+                X = Application.GetRealWidth(339),
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetMinRealAverage(16),
+                Height = Application.GetMinRealAverage(16),
+                UnSelectedImagePath = "Public/Right.png",
+            };
+            tempView.AddChidren(btnTempRight);
+
+            Button btnTempLine = new Button()
+            {
+                Y = Application.GetRealHeight(49),
+                Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth(343),
+                Height = Application.GetRealHeight(1),
+                BackgroundColor = CSS_Color.DividingLineColor
+            };
+            tempView.AddChidren(btnTempLine);
+
+            Button btnTempName = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                TextID = StringId.TemperatureStatistics
+            };
+            tempView.AddChidren(btnTempName);
+            btnTempName.MouseUpEventHandler = (sender, e) => {
+                var page = new CacWeekHistoryPage(device, "room_temp");
+                MainPage.BasePageView.AddChidren(page);
+                page.InitView();
+                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+            };
+
+
+
+            FrameLayout humidityView = new FrameLayout()
+            {
+                Y = Application.GetRealHeight(64 + 50),
+                Height = Application.GetRealHeight(50),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+            };
+            bodyView.AddChidren(humidityView);
+
+            Button btnHumidityRight = new Button()
+            {
+                X = Application.GetRealWidth(339),
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetMinRealAverage(16),
+                Height = Application.GetMinRealAverage(16),
+                UnSelectedImagePath = "Public/Right.png",
+            };
+            humidityView.AddChidren(btnHumidityRight);
+
+            Button btnHumidityName = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                TextID = StringId.HumidityStatistics
+            };
+            humidityView.AddChidren(btnHumidityName);
+            btnHumidityName.MouseUpEventHandler = (sender, e) => {
+                var page = new CacWeekHistoryPage(device, "room_humidity");
+                MainPage.BasePageView.AddChidren(page);
+                page.InitView();
+                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+            };
+
+
+        }
+    }
+}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/CacWeekHistoryPage.cs b/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/CacWeekHistoryPage.cs
new file mode 100644
index 0000000..1f5553b
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/CacWeekHistoryPage.cs
@@ -0,0 +1,424 @@
+锘縰sing System;
+using System.Collections.Generic;
+using HDL_ON.DAL.Server;
+using HDL_ON.Entity;
+using HDL_ON.Stan;
+using HDL_ON.UI.CSS;
+using Shared;
+
+namespace HDL_ON.UI
+{
+    public class CacWeekHistoryPage : FrameLayout
+    {
+
+        CacWeekHistoryPage bodyView;
+            HorizontalScrolViewLayout dateHorView;
+        Function device;
+        /// <summary>
+        /// 鏁版嵁鏄剧ず绫诲瀷
+        /// room_temp 娓╁害
+        /// room_humidity 婀垮害
+        /// </summary>
+        string showType;
+            Dictionary<string, double> dataDic = new Dictionary<string, double>();
+        public CacWeekHistoryPage(Function device,string type)
+        {
+            bodyView = this;
+            this.device = device;
+            showType = type;
+            BackgroundColor = CSS_Color.BackgroundColor;
+        }
+
+        public void InitView()
+        {
+            if (showType == "room_temp")
+            {
+                new TopViewDiv(bodyView, Language.StringByID(StringId.Temp)).LoadTopView();
+            }
+            else
+            {
+                new TopViewDiv(bodyView, Language.StringByID(StringId.Humidity)).LoadTopView();
+            }
+
+
+
+            InitContentView();
+        }
+
+
+        private void InitContentView()
+        {
+            FrameLayout contentView = new FrameLayout()
+            {
+                Y = Application.GetRealHeight(80),
+                Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth(343),
+                Height = Application.GetRealHeight(482),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+                Radius = (uint)Application.GetRealWidth(5)
+            };
+            bodyView.AddChidren(contentView);
+
+            Button btnTitle = new Button()
+            {
+                Height = Application.GetRealHeight(60),
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS_FontSize.TextFontSize,
+                TextAlignment = TextAlignment.Center,
+            };
+            if (showType == "room_temp")
+            {
+                btnTitle.Text = "鏈�杩�7澶╂瘡澶╁钩鍧囧鍐呮俯搴︾粺璁″浘";
+            }
+            else
+            {
+                btnTitle.Text = "鏈�杩�7澶╂瘡澶╁钩鍧囧鍐呮箍搴︾粺璁″浘";
+            }
+            contentView.AddChidren(btnTitle);
+
+            FrameLayout dataView = new FrameLayout()
+            {
+                Y = Application.GetRealHeight(39),
+                Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth(293),
+                Height = Application.GetRealHeight(345 + 30),
+            };
+            contentView.AddChidren(dataView);
+
+            Button btnUnit = new Button()
+            {
+                Height = Application.GetRealHeight(15 + 30),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = 0xFF43425D,
+                TextSize = 8,
+            };
+            if (showType == "room_temp")
+            {
+                btnUnit.Text = Language.StringByID(StringId.Uint) + "锛氣剝";
+            }
+            else
+            {
+                btnUnit.Text = Language.StringByID(StringId.Uint) + "%";
+            }
+            dataView.AddChidren(btnUnit);
+
+#if DEBUG
+            //dataDic.Add("0201", 49);
+            //dataDic.Add("0202", 20);
+            //dataDic.Add("0203", 10);
+            //dataDic.Add("0204", 49);
+            //dataDic.Add("0205", 20);
+            //dataDic.Add("0206", 20);
+            //dataDic.Add("0207", 48);
+
+            //dataDic.Add("0201", -20);
+            //dataDic.Add("0202", -20);
+            //dataDic.Add("0203", -20);
+            //dataDic.Add("0204", -48);
+            //dataDic.Add("0205", -20);
+            //dataDic.Add("0206", -20);
+            //dataDic.Add("0207", -20);
+#endif
+
+            DataItemView dataShowView = new DataItemView("0",360);
+            //dataShowView.Height = Application.GetRealHeight(360);
+            dataShowView.Y = Application.GetRealHeight(30);
+
+            List<string> items = new List<string>()
+            {
+                "100","90","80","70","60","50","40","30","20","10","0"
+            };
+            if (showType == "room_temp")
+            {
+                items = new List<string>()
+                {
+                    "50","40","30","20","10","0","-10","-20","-30","-40","-50"
+                };
+            }
+            int index = 0;
+            foreach (var item in items)
+            {
+                DataItemView dataItemView;
+                if (item == "0" )
+                {
+                    dataItemView = dataShowView;
+                    index++;
+                }
+                else
+                {
+                    dataItemView = new DataItemView(item,30);
+                    dataItemView.Y = ++index * Application.GetRealHeight(30) + Application.GetRealHeight(15);
+                }
+                dataItemView.InitView(showType == "room_temp");
+                dataView.AddChidren(dataItemView);
+            }
+            dateHorView = new HorizontalScrolViewLayout()
+            {
+                X = Application.GetRealWidth(48),
+                Y = dataView.Bottom,// - Application.GetRealHeight(19),
+                Width = Application.GetRealWidth(267),
+                Height = Application.GetRealHeight(26),
+            };
+            contentView.AddChidren(dateHorView);
+
+            Button btnTip = new Button()
+            {
+                Y = contentView.Bottom + Application.GetRealHeight(28),
+                Height = Application.GetRealHeight(20),
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+                TextAlignment = TextAlignment.Center,
+                Text = "*鍙�氳繃鐐瑰嚮鏌卞舰鍥炬煡鐪嬪綋澶�24灏忔椂娓╁害缁熻"
+            };
+            bodyView.AddChidren(btnTip);
+
+
+            new System.Threading.Thread(() =>
+            {
+
+                var revertObj = new HttpServerRequest().GetSensorHistory("week", device.deviceId, showType);
+                if (revertObj.Code == StateCode.SUCCESS)
+                {
+                    var revertData = Newtonsoft.Json.JsonConvert.DeserializeObject<List<EnvironmentalSensorHistor>>(revertObj.Data.ToString());
+                    foreach (var reObj in revertData)
+                    {
+                        double value = 0;
+                        try
+                        {
+                            value = Convert.ToDouble(reObj.fieldValue);
+                        }
+                        catch { }
+                        dataDic.Add(reObj.time, value);
+                    }
+                    Application.RunOnMainThread(() =>
+                    {
+                        RefrshDataView(dataDic, dataShowView);
+                        RefreshXtext();
+                    });
+
+                }
+            })
+            { IsBackground = true }.Start();
+        }
+
+        void RefreshXtext()
+        {
+            dateHorView.RemoveAll();
+
+            foreach (var dic in dataDic)
+            {
+                FrameLayout dateView = new FrameLayout()
+                {
+                    Width = Application.GetRealWidth(39),
+                    Height = Application.GetRealHeight(26),
+                };
+                dateHorView.AddChidren(dateView);
+
+                Button btnLineh = new Button()
+                {
+                    Width = 1,
+                    Height = Application.GetRealHeight(4),
+                    Gravity = Gravity.CenterHorizontal,
+                    BackgroundColor = 0xFFDBDBDB
+                };
+                dateView.AddChidren(btnLineh);
+
+                Button btnDate = new Button()
+                {
+                    Y = Application.GetRealHeight(12),
+                    Height = Application.GetRealHeight(14),
+                    TextColor = 0xFF43425D,
+                    TextSize = 10,
+                    Text = dic.Key,
+                };
+                try
+                {
+                    string[] strs = dic.Key.Split(@"/");
+                    btnDate.Text = strs[1] + "/" + strs[2];
+                }
+                catch { }
+                dateView.AddChidren(btnDate);
+            }
+
+        }
+
+
+        void RefrshDataView(Dictionary<string,double> dataDic, FrameLayout dataShowView)
+        {
+            int valueIndex = 0;
+            foreach (var data in dataDic)
+            {
+                ColumnarView cv = new ColumnarView(device.deviceId,showType, data.Key, data.Value);
+                cv.X = Application.GetRealWidth(valueIndex * 38 + 25);
+                cv.InitView();
+                dataShowView.AddChidren(cv);
+                cv.Clicker();
+
+
+                valueIndex++;
+            }
+        }
+
+
+
+    }
+
+    class DataItemView : FrameLayout
+    {
+        string value;
+        Button btnLine;
+        int height;
+        public DataItemView(string value,int height)
+        {
+            this.value = value;
+            Width = Application.GetRealWidth(293);
+            this.height = height;
+            Height = Application.GetRealHeight(height);
+        }
+
+        public void InitView(bool isTemp) {
+
+            Button btnValue = new Button()
+            {
+                Width = Application.GetRealWidth(18),
+                Height = Application.GetRealHeight(30),
+                TextAlignment = TextAlignment.CenterRight,
+                TextColor = 0xFF43425D,
+                TextSize = 8,
+                Text = value
+            };
+            AddChidren(btnValue);
+
+            btnLine = new Button()
+            {
+                X = Application.GetRealWidth(26),
+                Width = Application.GetRealWidth(267),
+                Height = 1,
+                BackgroundColor = CSS_Color.DividingLineColor,
+            };
+            if (isTemp)
+            {
+                btnLine.Gravity = Gravity.CenterVertical;
+                btnValue.Gravity = Gravity.CenterVertical;
+            }
+            else
+            {
+                if (height == 360)
+                {
+                    btnValue.Y = Application.GetRealHeight(height - 45);
+                }
+                else
+                {
+                    btnLine.Gravity = Gravity.CenterVertical;
+                }
+                btnLine.Y = Application.GetRealHeight(height - 30);
+            }
+            AddChidren(btnLine);
+
+
+
+
+
+        }
+
+    }
+
+    class ColumnarView : VerticalScrolViewLayout
+    {
+        string functionId;
+        string time;
+        string type;
+        double value;
+        string valueText;
+        /// <summary>
+        /// 鏂瑰悜锛氬悜涓娿�佸悜涓�
+        /// </summary>
+        bool isUpward;
+        Button btnValue;
+        Button btnValueText;
+
+
+        public ColumnarView(string functionId,string type, string key, double value)
+        {
+            this.functionId = functionId;
+            this.type = type;
+            time = key;
+            this.isUpward = value >= 0;
+            valueText = value.ToString();
+            if (isUpward)
+            {
+                this.value = value;
+            }
+            else
+            {
+                this.value = value * -1;
+            }
+            Width = Application.GetRealWidth(39);
+            Height = Application.GetRealHeight((int)(value * 3 + 30));
+        }
+
+        public void InitView()
+        {
+            int yValue = 0;
+            btnValue = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Height = Application.GetRealHeight((int)(value * 3)),
+                Width = Application.GetRealWidth(16),
+                BackgroundColor = 0xFFFF9D54,
+            };
+
+            btnValueText = new Button()
+            {
+                Height = Application.GetRealHeight(30),
+                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                TextColor = 0xFF43425D,
+                Text = valueText,
+            };
+            if(type == "room_temp")
+            {
+                btnValueText.Text += "鈩�";
+                if (isUpward)
+                {
+                    yValue = (int)(150 - value * 3);
+                    yValue = yValue > 0 ? yValue : 0;
+                    Y = Application.GetRealHeight(yValue+1);
+                    AddChidren(btnValueText);
+                    AddChidren(btnValue);
+                }
+                else
+                {
+                    Y = Application.GetRealHeight(180);
+                    AddChidren(btnValue);
+                    AddChidren(btnValueText);
+                }
+            }
+            else
+            {
+                yValue = (int)(360 -30- 30 - value * 3);
+                Y = Application.GetRealHeight(yValue+1);
+                AddChidren(btnValueText);
+                AddChidren(btnValue);
+                btnValueText.Text += "%";
+            }
+        }
+
+        public void Clicker()
+        {
+            btnValue.MouseUpEventHandler = (sender, e) =>
+            {
+                var page = new CacDayHistoryPage(functionId,type, time);
+                MainPage.BasePageView.AddChidren(page);
+                page.InitView();
+                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+            };
+            btnValueText.MouseUpEventHandler = (sender, e) =>
+            {
+                var page = new CacDayHistoryPage(functionId,type, time);
+                MainPage.BasePageView.AddChidren(page);
+                page.InitView();
+                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+            };
+        }
+    }
+}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/FhControlPage.cs b/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/FhControlPage.cs
index f2de9ff..b05b80e 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/FhControlPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/FhControlPage.cs
@@ -305,15 +305,15 @@
                 };
                 EventHandler<MouseEventArgs> eventHandler1 = (sender, e) =>
                 {
-                    if (!device.online)
-                    {
-                        new Tip()
-                        {
-                            CloseTime = 1,
-                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                            Direction = AMPopTipDirection.None,
-                        }.Show(MainPage.BaseView);
-                    }
+                    //if (!device.online)
+                    //{
+                    //    new Tip()
+                    //    {
+                    //        CloseTime = 1,
+                    //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                    //        Direction = AMPopTipDirection.None,
+                    //    }.Show(MainPage.BaseView);
+                    //}
                     btnModeIcon.IsSelected = btnModeText.IsSelected = true;
                     device.SetAttrState(FunctionAttributeKey.Mode, m);
                     btnMode.UnSelectedImagePath = fhTemp.GetModeIconPath(m);
@@ -371,15 +371,16 @@
         {
             btnMinus.MouseUpEventHandler = (sender, e) =>
             {
-                if (!device.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                }
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 if (device.trait_on_off.curValue.ToString() == "off" || device.GetAttrState(FunctionAttributeKey.Mode) == "fan")
                 {
                     return;
@@ -399,15 +400,16 @@
             };
             btnPlus.MouseUpEventHandler = (sender, e) =>
             {
-                if (!device.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                }
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 if (device.trait_on_off.curValue.ToString() == "off" || device.GetAttrState(FunctionAttributeKey.Mode) == "fan")
                 {
                     return;
@@ -426,7 +428,7 @@
                 Control.Ins.SendWriteCommand(device, d);
             };
 
-            if (!device.online)
+            //if (device.online)
             {
                 arcBar.OnStopTrackingTouchEvent = (sender, e) =>
                 {
diff --git a/HDL_ON/UI/UI2/FuntionControlView/ArmCenter/AddOutputPage.cs b/HDL_ON/UI/UI2/FuntionControlView/ArmCenter/AddOutputPage.cs
index e1dd248..7f04f4e 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/ArmCenter/AddOutputPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/ArmCenter/AddOutputPage.cs
@@ -145,7 +145,7 @@
                 {
                     continue;
                 }
-                if (!string.IsNullOrEmpty(roomId) && roomId == "ALLSELECT")
+                if (!string.IsNullOrEmpty(roomId) && roomId != "ALLSELECT")
                 {
                     if (!function.roomIds.Contains(roomId))
                     {
@@ -172,7 +172,7 @@
                 {
                     continue;
                 }
-                if (!string.IsNullOrEmpty(roomId))
+                if (!string.IsNullOrEmpty(roomId) && roomId != "ALLSELECT")
                 {
                     if (!scene.roomIds.Contains(roomId))
                     {
@@ -202,121 +202,131 @@
         void LoadFunctionListRow()
         {
             functionListView.RemoveAll();
-            foreach (var function in allocatedList)
+            new System.Threading.Thread(() =>
             {
-                //var output = alarm.output.Find((obj) => obj.sid == function.sid);
-                //if (output == null)
-                //{
-                //    output = new SecurityOutput();
-                //    output.sid = function.sid;
-                //}
-
-                FrameLayout functionRow = new FrameLayout()
+                System.Threading.Thread.Sleep(50);
+                Application.RunOnMainThread(() =>
                 {
-                    Height = Application.GetRealHeight(65),
-                    BackgroundColor = CSS_Color.MainBackgroundColor,
-                };
-                functionListView.AddChidren(functionRow);
 
-                var btnFunctionName = new Button()
-                {
-                    X = Application.GetRealWidth(16),
-                    Width = Application.GetRealWidth(200),
-                    Height = Application.GetRealHeight(44),
-                    Text = function.name,
-                    TextAlignment = TextAlignment.CenterLeft,
-                    TextColor = CSS_Color.FirstLevelTitleColor,
-                    TextSize = CSS_FontSize.TextFontSize,
-                };
-                functionRow.AddChidren(btnFunctionName);
-
-                var btnFunctionFloorName = new Button()
-                {
-                    X = Application.GetRealWidth(16),
-                    Y = Application.GetRealHeight(24),
-                    Width = Application.GetRealWidth(200),
-                    Height = Application.GetRealHeight(41),
-                    Text = function.RoomName,
-                    TextAlignment = TextAlignment.CenterLeft,
-                    TextColor = CSS_Color.PromptingColor1,
-                    TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
-                };
-                functionRow.AddChidren(btnFunctionFloorName);
-
-                Button btnState = new Button()
-                {
-                    Width = Application.GetRealWidth(317),
-                    TextAlignment = TextAlignment.CenterRight,
-                    TextSize = CSS_FontSize.TextFontSize,
-                    TextColor = CSS_Color.PromptingColor1,
-                    Text = function.StateText()
-                };
-                functionRow.AddChidren(btnState);
-
-                Button btnChooseIcon = new Button()
-                {
-                    X = Application.GetRealWidth(333),
-                    Gravity = Gravity.CenterVertical,
-                    Width = Application.GetMinRealAverage(32),
-                    Height = Application.GetMinRealAverage(32),
-                    UnSelectedImagePath = "Public/ChooseIcon.png",
-                    SelectedImagePath = "Public/ChooseOnIcon.png",
-                };
-                functionRow.AddChidren(btnChooseIcon);
-
-                btnChooseIcon.MouseUpEventHandler = (sender, e) => {
-                    btnChooseIcon.IsSelected = !btnChooseIcon.IsSelected;
-                    var tempLocal = alarm.output.Find((obj) =>
-                        obj.sid == function.sid
-                    );
-                    //if (tempLocal == null && !string.IsNullOrEmpty(output.spk))
-                    //{
-                    //    ShowStateDialog(output, btnState, btnChooseIcon);
-                    //}
-                    if (btnChooseIcon.IsSelected)
+                    foreach (var function in allocatedList)
                     {
-                        if (tempLocal == null)
-                            alarm.output.Add(function);
-                        ShowStateDialog(function, btnState, btnChooseIcon);
-                    }
-                    else
-                    {
-                        if (tempLocal != null)
+                        //var output = alarm.output.Find((obj) => obj.sid == function.sid);
+                        //if (output == null)
+                        //{
+                        //    output = new SecurityOutput();
+                        //    output.sid = function.sid;
+                        //}
+
+                        FrameLayout functionRow = new FrameLayout()
                         {
-                            alarm.output.Remove(function);
+                            Height = Application.GetRealHeight(65),
+                            BackgroundColor = CSS_Color.MainBackgroundColor,
+                        };
+                        functionListView.AddChidren(functionRow);
+
+                        var btnFunctionName = new Button()
+                        {
+                            X = Application.GetRealWidth(16),
+                            Width = Application.GetRealWidth(200),
+                            Height = Application.GetRealHeight(44),
+                            Text = function.name,
+                            TextAlignment = TextAlignment.CenterLeft,
+                            TextColor = CSS_Color.FirstLevelTitleColor,
+                            TextSize = CSS_FontSize.TextFontSize,
+                        };
+                        functionRow.AddChidren(btnFunctionName);
+
+                        var btnFunctionFloorName = new Button()
+                        {
+                            X = Application.GetRealWidth(16),
+                            Y = Application.GetRealHeight(24),
+                            Width = Application.GetRealWidth(200),
+                            Height = Application.GetRealHeight(41),
+                            Text = function.RoomName,
+                            TextAlignment = TextAlignment.CenterLeft,
+                            TextColor = CSS_Color.PromptingColor1,
+                            TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+                        };
+                        functionRow.AddChidren(btnFunctionFloorName);
+
+                        Button btnState = new Button()
+                        {
+                            Width = Application.GetRealWidth(317),
+                            TextAlignment = TextAlignment.CenterRight,
+                            TextSize = CSS_FontSize.TextFontSize,
+                            TextColor = CSS_Color.PromptingColor1,
+                            Text = function.StateText()
+                        };
+                        functionRow.AddChidren(btnState);
+
+                        Button btnChooseIcon = new Button()
+                        {
+                            X = Application.GetRealWidth(333),
+                            Gravity = Gravity.CenterVertical,
+                            Width = Application.GetMinRealAverage(32),
+                            Height = Application.GetMinRealAverage(32),
+                            UnSelectedImagePath = "Public/ChooseIcon.png",
+                            SelectedImagePath = "Public/ChooseOnIcon.png",
+                        };
+                        functionRow.AddChidren(btnChooseIcon);
+
+                        btnChooseIcon.MouseUpEventHandler = (sender, e) =>
+                        {
+                            btnChooseIcon.IsSelected = !btnChooseIcon.IsSelected;
+                            var tempLocal = alarm.output.Find((obj) =>
+                                obj.sid == function.sid
+                            );
+                            //if (tempLocal == null && !string.IsNullOrEmpty(output.spk))
+                            //{
+                            //    ShowStateDialog(output, btnState, btnChooseIcon);
+                            //}
+                            if (btnChooseIcon.IsSelected)
+                            {
+                                if (tempLocal == null)
+                                    alarm.output.Add(function);
+                                ShowStateDialog(function, btnState, btnChooseIcon);
+                            }
+                            else
+                            {
+                                if (tempLocal != null)
+                                {
+                                    alarm.output.Remove(function);
+                                }
+                            }
+                        };
+                        btnState.MouseUpEventHandler = (sender, e) =>
+                        {
+                            btnChooseIcon.IsSelected = true;
+                            var tempLocal = alarm.output.Find((obj) =>
+                                obj.sid == function.sid
+                            );
+                            if (tempLocal == null)
+                                alarm.output.Add(function);
+                            ShowStateDialog(function, btnState, btnChooseIcon);
+                        };
+
+                        var localOutput = alarm.output.Find((obj) => obj.sid == function.sid);
+
+                        if (localOutput != null)
+                        {
+                            btnChooseIcon.IsSelected = true;
+                            btnState.Text = function.StateText();
                         }
+
+
+                        functionListView.AddChidren(new Button()
+                        {
+                            Gravity = Gravity.CenterHorizontal,
+                            Width = Application.GetRealWidth(343),
+                            Height = Application.GetRealWidth(1),
+                            BackgroundColor = CSS_Color.DividingLineColor,
+                        });
+
+
                     }
-                };
-                btnState.MouseUpEventHandler = (sender, e) =>
-                {
-                    btnChooseIcon.IsSelected = true;
-                    var tempLocal = alarm.output.Find((obj) =>
-                        obj.sid == function.sid
-                    );
-                    if (tempLocal == null)
-                        alarm.output.Add(function);
-                    ShowStateDialog(function, btnState, btnChooseIcon);
-                };
 
-                var localOutput = alarm.output.Find((obj) => obj.sid == function.sid);
-
-                if (localOutput != null)
-                {
-                    btnChooseIcon.IsSelected = true;
-                    btnState.Text = function.StateText();
-                }
-
-
-                functionListView.AddChidren(new Button()
-                {
-                    Gravity = Gravity.CenterHorizontal,
-                    Width = Application.GetRealWidth(343),
-                    Height = Application.GetRealWidth(1),
-                    BackgroundColor = CSS_Color.DividingLineColor,
                 });
-
-
-            }
+            }).Start();
         }
 
 
@@ -471,7 +481,8 @@
                 var form = new FloorRoomSelectPopupView();
                 form.ShowDeviceFunctionView(btnFloor, listAllFun, (selectId, listFun) =>
                 {
-                    SetData(selectId);
+                    var selecteRoom = SpatialInfo.CurrentSpatial.RoomList.Find((obj) => obj.uid == selectId);
+                    SetData(selecteRoom.roomId);
                     //閲嶆柊鍒锋柊璁惧鍒楄〃
                     this.LoadFunctionListRow();
                 }, nowSelectId);
diff --git a/HDL_ON/UI/UI2/FuntionControlView/ArmSensor/ArmSensorHistroyPaging.cs b/HDL_ON/UI/UI2/FuntionControlView/ArmSensor/ArmSensorHistroyPaging.cs
index 5ca7239..5e78767 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/ArmSensor/ArmSensorHistroyPaging.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/ArmSensor/ArmSensorHistroyPaging.cs
@@ -32,7 +32,7 @@
             VerticalScrolViewLayout histroyView = new VerticalScrolViewLayout()
             {
                 Y = btnTitle.Bottom,
-                Height = Application.GetRealHeight(450),
+                Height = Application.GetRealHeight(0),
             };
             FrameWhiteCentet2.AddChidren(histroyView);
 
@@ -53,6 +53,14 @@
                     Application.RunOnMainThread(() =>
                     {
                         var startTime = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); // 褰撳湴鏃跺尯
+                        if (revData.list.Count > 9)
+                        {
+                            histroyView.Height = Application.GetRealHeight(450);
+                        }
+                        else
+                        {
+                            histroyView.Height = Application.GetRealHeight(50*revData.list.Count);
+                        }
                         foreach (var data in revData.list)
                         {
                             var yearString = startTime.AddMilliseconds(Convert.ToDouble(data.createTime)).ToString("yyyy") + Language.StringByID(StringId.Years);
diff --git a/HDL_ON/UI/UI2/FuntionControlView/ContentView/AcContentView.cs b/HDL_ON/UI/UI2/FuntionControlView/ContentView/AcContentView.cs
new file mode 100644
index 0000000..1bb8cbf
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/ContentView/AcContentView.cs
@@ -0,0 +1,1110 @@
+锘縰sing System;
+using System.Collections.Generic;
+using HDL_ON.DriverLayer;
+using HDL_ON.Entity;
+using HDL_ON.Stan;
+using HDL_ON.UI.CSS;
+using Shared;
+
+namespace HDL_ON.UI.UI2.FuntionControlView.Panel
+{
+    public class AcContentView : FrameLayout
+    {
+
+        #region 鈻� 鍙橀噺澹版槑___________________________
+        /// <summary>
+        /// 绌鸿皟娓╁害鎺у埗鎺т欢
+        /// </summary>
+        DiyArcSeekBar arcBar;
+        /// <summary>
+        /// 鍑忓彿鎸夐挳
+        /// </summary>
+        Button btnMinus;
+        /// <summary>
+        /// 鍔犲彿鎸夐挳
+        /// </summary>
+        Button btnPlus;
+        /// <summary>
+        /// 娓╁害鎸夐挳
+        /// </summary>
+        Button btnTemp;
+        Button btnTempUint;
+        /// <summary>
+        /// 瀹ゅ唴娓╁害鎸夐挳
+        /// </summary>
+        Button btnIndoorTemp;
+        /// <summary>
+        /// 妯″紡鎸夐挳
+        /// </summary>
+        Button btnMode;
+        /// <summary>
+        /// 鎵鎸夐挳
+        /// </summary>
+        Button btnSwing;
+        /// <summary>
+        /// 椋庨�熸寜閽�
+        /// </summary>
+        Button btnWindSpeed;
+        /// <summary>
+        /// 寮�鍏虫寜閽�
+        /// </summary>
+        Button btnSwitch;
+
+        AC acFunction = new AC();
+
+        /// <summary>
+        /// 鎺у埗鏃堕棿
+        /// </summary>
+        DateTime controlTime = DateTime.MinValue.AddDays(10);
+        /// <summary>
+        /// 鎺у埗娓╁害
+        /// </summary>
+        int temp = 16;
+
+        #endregion
+        Function device;
+        public AcContentView(Function function)
+        {
+            device = function;
+
+            var sk = device.GetAttribute(FunctionAttributeKey.SetTemp);
+            if (sk != null)
+            {
+                if (sk.min == 0)
+                {
+                    sk.min = 16;
+                }
+                if (sk.max == 0)
+                {
+                    sk.max = 32;
+                }
+            }
+
+        }
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鍒濆鍖栫櫧鑹插尯鍩熺殑鍐呭
+        /// </summary>
+        public void InitContent(bool initStandard = true)
+        {
+            if (initStandard)
+            {
+                //璁惧鍚嶅瓧
+                var btnDeviceName = new NormalViewControl(270, 37, true);
+                btnDeviceName.X = Application.GetRealWidth(16);
+                btnDeviceName.Y = Application.GetRealHeight(18);
+                btnDeviceName.TextColor = CSS_Color.FirstLevelTitleColor;
+                btnDeviceName.TextSize = CSS_FontSize.EmphasisFontSize_FirstLevel;
+                btnDeviceName.Text = device.name;
+                btnDeviceName.Width = btnDeviceName.GetRealWidthByText();
+                AddChidren(btnDeviceName);
+                //鎴块棿鍚嶅瓧
+                var btnRoomName = new NormalViewControl(270, 21, true);
+                btnRoomName.X = Application.GetRealWidth(16);
+                btnRoomName.Y = btnDeviceName.Bottom;
+                btnRoomName.TextColor = CSS_Color.PromptingColor1;
+                btnRoomName.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
+                btnRoomName.Text = device.GetRoomListName();
+                btnRoomName.Width = btnRoomName.GetRealWidthByText();
+                AddChidren(btnRoomName);
+
+            }
+
+            //鍒濆鍖栫涓�涓储寮曢〉鐨勫唴瀹�
+            this.InitFrameWhiteContent();
+
+            //鍒锋柊鐣岄潰鐘舵��
+            this.RefreshFormStatu();
+            //璇诲彇鐘舵��
+            new System.Threading.Thread(() =>
+            {
+                while (true)
+                {
+                    if (controlTime == DateTime.MinValue)
+                    {
+
+                    }
+                    else if (controlTime.AddSeconds(2) < DateTime.Now)
+                    {
+                        Control.Ins.SendReadCommand(device);
+                        controlTime = DateTime.MinValue;
+                    }
+                    System.Threading.Thread.Sleep(1000);
+                }
+            })
+            { IsBackground = true }.Start();
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栫涓�涓储寮曢〉鐨勫唴瀹�
+        /// </summary>
+        private void InitFrameWhiteContent()
+        {
+            temp = (int)Convert.ToDouble(device.GetAttrState(FunctionAttributeKey.SetTemp).Replace(",", "."));
+            arcBar = new DiyArcSeekBar()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                OpenAngle = 160,
+                ThumbImageHeight = Application.GetRealWidth(50),
+                ProgressBarColor = CSS_Color.MainColor,
+                OfflineProgressBarColor = CSS_Color.PromptingColor2,
+                ArcColor = CSS_Color.BackgroundColor,
+#if __IOS__
+                Y = Application.GetRealHeight(120 + 25),
+                Width = Application.GetRealWidth(260 - 40),
+                Height = Application.GetRealWidth(260 - 40),
+                SeekBarPadding = Application.GetRealWidth(8),
+#else
+                Y = Application.GetRealHeight(120 + 40),
+                Width = Application.GetRealWidth(260 - 40),
+                Height = Application.GetRealWidth(260 - 40),
+                SeekBarPadding = Application.GetRealWidth(7),
+#endif
+
+            };
+            this.AddChidren(arcBar);
+
+
+            arcBar.ThumbImagePath = device.GetAttrState(FunctionAttributeKey.OnOff) == "on" ? "FunctionIcon/AC/DiyThumbIconOn.png" : "FunctionIcon/AC/DiyThumbIcon.png";
+            arcBar.IsOffline = device.GetAttrState(FunctionAttributeKey.OnOff) == "off";
+            arcBar.MinValue = device.GetAttribute(FunctionAttributeKey.SetTemp).min;
+            arcBar.MaxValue = device.GetAttribute(FunctionAttributeKey.SetTemp).max;
+            arcBar.Progress = (int)Convert.ToDouble(device.GetAttrState(FunctionAttributeKey.SetTemp).Replace(",", "."));
+
+            btnTemp = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealHeight(206),
+                Width = Application.GetRealWidth(71),
+                Height = Application.GetRealWidth(60),
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = 50,
+                IsBold = true,
+                Text = Convert.ToDouble(device.GetAttrState(FunctionAttributeKey.SetTemp).Replace(",", ".")).ToString(),
+                TextAlignment = TextAlignment.Center,
+            };
+            this.AddChidren(btnTemp);
+
+            btnTempUint = new Button()
+            {
+                X = btnTemp.Right,
+                Y = btnTemp.Y,
+                Width = Application.GetRealWidth(30),
+                Height = Application.GetRealHeight(30),
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS_FontSize.EmphasisFontSize_Secondary,
+                IsBold = true,
+                TextAlignment = TextAlignment.CenterLeft,
+                Text = "掳C",
+            };
+            this.AddChidren(btnTempUint);
+
+            btnIndoorTemp = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = btnTemp.Bottom,
+                Width = Application.GetRealWidth(120),
+                Height = Application.GetRealHeight(20),
+                Text = Language.StringByID(StringId.IndoorTemp) + "20掳C",
+                TextColor = CSS_Color.PromptingColor1,
+                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+            };
+            this.AddChidren(btnIndoorTemp);
+
+            btnMinus = new Button()
+            {
+                X = Application.GetRealWidth(21),
+                Y = Application.GetRealHeight(263),
+                Width = Application.GetRealWidth(32),
+                Height = Application.GetRealWidth(32),
+                UnSelectedImagePath = "Public/MinusSignIcon.png",
+            };
+            this.AddChidren(btnMinus);
+
+            btnPlus = new Button()
+            {
+                X = Application.GetRealWidth(275),
+                Y = Application.GetRealHeight(263),
+                Width = Application.GetRealWidth(32),
+                Height = Application.GetRealWidth(32),
+                UnSelectedImagePath = "Public/PlusSignIcon.png",
+            };
+            this.AddChidren(btnPlus);
+
+            btnMode = new Button()
+            {
+                X = Application.GetRealWidth(60),
+                Y = Application.GetRealHeight(334),
+                Width = Application.GetRealWidth(30),
+                Height = Application.GetRealWidth(30),
+                UnSelectedImagePath = acFunction.GetModeIconPath(device.GetAttrState(FunctionAttributeKey.Mode)),
+            };
+            this.AddChidren(btnMode);
+
+
+            btnSwing = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealHeight(330),
+                Width = Application.GetRealWidth(40),
+                Height = Application.GetRealWidth(40),
+                UnSelectedImagePath = "FunctionIcon/AC/SweepIconNullOn.png",
+            };
+            if (device.GetAttribute(FunctionAttributeKey.Swing) != null)
+            {
+                this.AddChidren(btnSwing);
+            }
+
+
+            btnWindSpeed = new Button()
+            {
+                X = Application.GetRealWidth(235),
+                Y = Application.GetRealHeight(337),
+                Width = Application.GetRealWidth(30),
+                Height = Application.GetRealWidth(30),
+                UnSelectedImagePath = acFunction.GetFanIconPath(device.GetAttrState(FunctionAttributeKey.FanSpeed)),
+            };
+            this.AddChidren(btnWindSpeed);
+
+            btnSwitch = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealHeight(466),
+                Width = Application.GetRealWidth(32),
+                Height = Application.GetRealWidth(32),
+                UnSelectedImagePath = "Public/PowerClose.png",
+                SelectedImagePath = "Public/PowerOpen.png",
+                IsSelected = device.GetAttrState(FunctionAttributeKey.OnOff) == "on"
+            };
+            this.AddChidren(btnSwitch);
+
+            LoadEvent_TempChange();
+            LoadEvent_AcStatesChange();
+
+            LoadDiv_IrView();
+        }
+
+        /// <summary>
+        /// 鍔犺浇淇敼妯″紡鍖哄煙
+        /// </summary>
+        void LoadDiv_ChangeModeView()
+        {
+            Dialog dialog = new Dialog();
+
+            FrameLayout dialogView = new FrameLayout()
+            {
+                BackgroundColor = CSS_Color.DialogTransparentColor1,
+            };
+            dialog.AddChidren(dialogView);
+
+            FrameLayout modeChangeView;
+            modeChangeView = new FrameLayout()
+            {
+                X = Application.GetRealWidth(30),
+                Y = Application.GetRealHeight(128),
+                Width = Application.GetRealWidth(160),
+                Height = Application.GetRealHeight(287),
+                BackgroundImagePath = "FunctionIcon/AC/DivBg1.png",
+            };
+            dialogView.AddChidren(modeChangeView);
+
+            Button btnTitle;
+            btnTitle = new Button()
+            {
+                X = Application.GetRealWidth(8 + 16),
+                Y = Application.GetRealHeight(8),
+                Width = Application.GetRealWidth(112),
+                Height = Application.GetRealHeight(44),
+                TextID = StringId.ChooseMode,
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS_FontSize.EmphasisFontSize_Secondary,
+            };
+            modeChangeView.AddChidren(btnTitle);
+
+            Button btnLine = new Button()
+            {
+                X = btnTitle.X,
+                Y = btnTitle.Bottom,
+                Width = Application.GetRealWidth(112),
+                Height = Application.GetRealHeight(1),
+                BackgroundColor = CSS_Color.BackgroundColor,
+            };
+            modeChangeView.AddChidren(btnLine);
+
+            var modeList = device.GetAttribute(FunctionAttributeKey.Mode).value;
+            foreach (var m in modeList)
+            {
+                Button btnModeIcon = new Button()
+                {
+                    X = btnTitle.X,
+                    Y = Application.GetRealHeight(44 * (modeList.IndexOf(m) + 1) + 10 + 8),
+                    Width = Application.GetRealWidth(24),
+                    Height = Application.GetRealWidth(24),
+                    IsSelected = device.GetAttrState(FunctionAttributeKey.Mode) == m,
+                };
+                modeChangeView.AddChidren(btnModeIcon);
+
+                Button btnModeText = new Button()
+                {
+                    X = Application.GetRealWidth(12) + btnModeIcon.Right,
+                    Y = Application.GetRealHeight(44 * (modeList.IndexOf(m) + 1) + 8),
+                    Height = Application.GetRealHeight(44),
+                    Width = Application.GetRealWidth(90),
+                    TextAlignment = TextAlignment.CenterLeft,
+                    TextColor = CSS_Color.FirstLevelTitleColor,
+                    SelectedTextColor = CSS_Color.MainColor,
+                    IsSelected = device.GetAttrState(FunctionAttributeKey.Mode) == m,
+                    TextSize = CSS_FontSize.TextFontSize,
+                };
+                modeChangeView.AddChidren(btnModeText);
+
+                btnModeIcon.UnSelectedImagePath = acFunction.GetModeIconPath(m, false);
+                btnModeIcon.SelectedImagePath = acFunction.GetModeIconPath(m);
+                btnModeText.Text = acFunction.GetModeAttrText(m);
+
+                if (modeList.IndexOf(m) < modeList.Count - 1)
+                {
+                    modeChangeView.AddChidren(new Button()
+                    {
+                        X = btnTitle.X,
+                        Y = btnModeText.Bottom,
+                        Width = Application.GetRealWidth(112),
+                        Height = Application.GetRealHeight(1),
+                        BackgroundColor = CSS_Color.BackgroundColor,
+                    });
+                }
+                EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+                {
+                    dialog.Close();
+                };
+                EventHandler<MouseEventArgs> eventHandler1 = (sender, e) =>
+                {
+                    //if (!device.online)
+                    //{
+                    //    new Tip()
+                    //    {
+                    //        CloseTime = 1,
+                    //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                    //        Direction = AMPopTipDirection.None,
+                    //    }.Show(MainPage.BaseView);
+                    //}
+                    btnModeIcon.IsSelected = btnModeText.IsSelected = true;
+                    device.SetAttrState(FunctionAttributeKey.Mode, m);
+                    btnMode.UnSelectedImagePath = acFunction.GetModeIconPath(m);
+                    Dictionary<string, string> d = new Dictionary<string, string>();
+                    d.Add(FunctionAttributeKey.Mode, m);
+                    Control.Ins.SendWriteCommand(device, d);
+                    dialog.Close();
+                    if (device.GetAttrState(FunctionAttributeKey.Mode) == "fan")
+                    {
+                        arcBar.IsClickable = false;
+                        arcBar.IsOffline = true;
+                    }
+                    else
+                    {
+                        arcBar.IsOffline = false;
+                        arcBar.IsClickable = true;
+                    }
+                };
+                btnModeIcon.MouseUpEventHandler = eventHandler1;
+                btnModeText.MouseUpEventHandler = eventHandler1;
+                dialogView.MouseUpEventHandler = eventHandler;
+
+            }
+
+            dialogView.MouseUpEventHandler = (sender, e) => {
+                dialog.Close();
+            };
+            dialog.Show();
+        }
+
+        /// <summary>
+        /// 鍔犺浇淇敼鎵妯″紡鍖哄煙
+        /// </summary>
+        void LoadDiv_ChangeSwingView()
+        {
+            Dialog dialog = new Dialog();
+
+            FrameLayout dialogView = new FrameLayout()
+            {
+                BackgroundColor = CSS_Color.DialogTransparentColor1,
+            };
+            dialog.AddChidren(dialogView);
+
+            FrameLayout modeChangeView;
+            modeChangeView = new FrameLayout()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealHeight(128),
+                Width = Application.GetRealWidth(160),
+                Height = Application.GetRealHeight(287),
+                BackgroundImagePath = "FunctionIcon/AC/DivBg2.png",
+            };
+            dialogView.AddChidren(modeChangeView);
+
+            Button btnTitle;
+            btnTitle = new Button()
+            {
+                X = Application.GetRealWidth(8 + 16),
+                Y = Application.GetRealHeight(8),
+                Width = Application.GetRealWidth(112),
+                Height = Application.GetRealHeight(44),
+                TextID = StringId.Swing,
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS_FontSize.EmphasisFontSize_Secondary,
+            };
+            modeChangeView.AddChidren(btnTitle);
+
+            Button btnLine = new Button()
+            {
+                X = btnTitle.X,
+                Y = btnTitle.Bottom,
+                Width = Application.GetRealWidth(112),
+                Height = Application.GetRealHeight(1),
+                BackgroundColor = CSS_Color.BackgroundColor,
+            };
+            modeChangeView.AddChidren(btnLine);
+
+            var modeList = device.GetAttribute(FunctionAttributeKey.Swing).value;
+            foreach (var m in modeList)
+            {
+                Button btnModeIcon = new Button()
+                {
+                    X = btnTitle.X,
+                    Y = Application.GetRealHeight(44 * (modeList.IndexOf(m) + 1) + 10 + 8),
+                    Width = Application.GetRealWidth(24),
+                    Height = Application.GetRealWidth(24),
+                    IsSelected = device.GetAttrState(FunctionAttributeKey.Swing) == m,
+                };
+                modeChangeView.AddChidren(btnModeIcon);
+
+                Button btnModeText = new Button()
+                {
+                    X = Application.GetRealWidth(12) + btnModeIcon.Right,
+                    Y = Application.GetRealHeight(44 * (modeList.IndexOf(m) + 1) + 8),
+                    Height = Application.GetRealHeight(44),
+                    Width = Application.GetRealWidth(90),
+                    TextAlignment = TextAlignment.CenterLeft,
+                    TextColor = CSS_Color.FirstLevelTitleColor,
+                    SelectedTextColor = CSS_Color.MainColor,
+                    IsSelected = device.GetAttrState(FunctionAttributeKey.Swing) == m,
+                    TextSize = CSS_FontSize.TextFontSize,
+                };
+                modeChangeView.AddChidren(btnModeText);
+
+                if (modeList.IndexOf(m) < modeList.Count - 1)
+                {
+                    modeChangeView.AddChidren(new Button()
+                    {
+                        X = btnTitle.X,
+                        Y = btnModeText.Bottom,
+                        Width = Application.GetRealWidth(112),
+                        Height = Application.GetRealHeight(1),
+                        BackgroundColor = CSS_Color.BackgroundColor,
+                    });
+                }
+
+                btnModeIcon.UnSelectedImagePath = acFunction.GetSwingIconPath(m, false);
+                btnModeIcon.SelectedImagePath = acFunction.GetSwingIconPath(m);
+                btnModeText.Text = acFunction.GetSwingAttrText(m);
+
+                EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+                {
+                    dialog.Close();
+                };
+                EventHandler<MouseEventArgs> eventHandler1 = (sender, e) =>
+                {
+                    //if (!device.online)
+                    //{
+                    //    new Tip()
+                    //    {
+                    //        CloseTime = 1,
+                    //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                    //        Direction = AMPopTipDirection.None,
+                    //    }.Show(MainPage.BaseView);
+                    //}
+                    btnModeIcon.IsSelected = btnModeText.IsSelected = true;
+                    device.SetAttrState(FunctionAttributeKey.Swing, m);
+                    btnSwing.UnSelectedImagePath = acFunction.GetSwingIconPath(m);
+                    Dictionary<string, string> d = new Dictionary<string, string>();
+                    d.Add(FunctionAttributeKey.Swing, m);
+                    Control.Ins.SendWriteCommand(device, d);
+                    dialog.Close();
+                };
+                btnModeIcon.MouseUpEventHandler = eventHandler1;
+                btnModeText.MouseUpEventHandler = eventHandler1;
+                dialogView.MouseUpEventHandler = eventHandler;
+
+            }
+
+            dialogView.MouseUpEventHandler = (sender, e) => {
+                dialog.Close();
+            };
+            dialog.Show();
+        }
+        /// <summary>
+        /// 鍔犺浇淇敼妯″紡鍖哄煙
+        /// </summary>
+        void LoadDiv_ChangeFanView()
+        {
+            Dialog dialog = new Dialog();
+
+            FrameLayout dialogView = new FrameLayout()
+            {
+                BackgroundColor = CSS_Color.DialogTransparentColor1,
+            };
+            dialog.AddChidren(dialogView);
+
+            FrameLayout modeChangeView;
+            modeChangeView = new FrameLayout()
+            {
+                X = Application.GetRealWidth(185),
+                Y = Application.GetRealHeight(172),
+                Width = Application.GetRealWidth(160),
+                Height = Application.GetRealHeight(243),
+                BackgroundImagePath = "FunctionIcon/AC/DivBg2.png",
+            };
+            dialogView.AddChidren(modeChangeView);
+
+            Button btnTitle;
+            btnTitle = new Button()
+            {
+                X = Application.GetRealWidth(8 + 16),
+                Y = Application.GetRealHeight(8),
+                Width = Application.GetRealWidth(112),
+                Height = Application.GetRealHeight(44),
+                TextID = StringId.ChooseFan,
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS_FontSize.EmphasisFontSize_Secondary,
+            };
+            modeChangeView.AddChidren(btnTitle);
+
+            Button btnLine = new Button()
+            {
+                X = btnTitle.X,
+                Y = btnTitle.Bottom,
+                Width = Application.GetRealWidth(112),
+                Height = Application.GetRealHeight(1),
+                BackgroundColor = CSS_Color.BackgroundColor,
+            };
+            modeChangeView.AddChidren(btnLine);
+
+            var modeList = device.GetAttribute(FunctionAttributeKey.FanSpeed).value;
+            foreach (var m in modeList)
+            {
+                Button btnFanIcon = new Button()
+                {
+                    X = btnTitle.X,
+                    Y = Application.GetRealHeight(44 * (modeList.IndexOf(m) + 1) + 10 + 8),
+                    Width = Application.GetRealWidth(24),
+                    Height = Application.GetRealWidth(24),
+                    IsSelected = device.GetAttrState(FunctionAttributeKey.FanSpeed) == m,
+                };
+                modeChangeView.AddChidren(btnFanIcon);
+
+                Button btnFanText = new Button()
+                {
+                    X = Application.GetRealWidth(12) + btnFanIcon.Right,
+                    Y = Application.GetRealHeight(44 * (modeList.IndexOf(m) + 1) + 8),
+                    Height = Application.GetRealHeight(44),
+                    Width = Application.GetRealWidth(70),
+                    TextAlignment = TextAlignment.CenterLeft,
+                    TextColor = CSS_Color.FirstLevelTitleColor,
+                    SelectedTextColor = CSS_Color.MainColor,
+                    IsSelected = device.GetAttrState(FunctionAttributeKey.FanSpeed) == m,
+                    TextSize = CSS_FontSize.TextFontSize,
+                };
+                modeChangeView.AddChidren(btnFanText);
+                btnFanIcon.UnSelectedImagePath = acFunction.GetFanIconPath(m, false);
+                btnFanIcon.SelectedImagePath = acFunction.GetFanIconPath(m);
+                btnFanText.Text = acFunction.GetFanAttrText(m);
+
+                if (modeList.IndexOf(m) < modeList.Count - 1)
+                {
+                    modeChangeView.AddChidren(new Button()
+                    {
+                        X = btnTitle.X,
+                        Y = btnFanText.Bottom,
+                        Width = Application.GetRealWidth(112),
+                        Height = Application.GetRealHeight(1),
+                        BackgroundColor = CSS_Color.BackgroundColor,
+                    });
+                }
+
+                EventHandler<MouseEventArgs> closeDialogEvent = (sender, e) =>
+                {
+                    dialog.Close();
+                };
+                EventHandler<MouseEventArgs> eventHandler1 = (sender, e) =>
+                {
+                    //if (!device.online)
+                    //{
+                    //    new Tip()
+                    //    {
+                    //        CloseTime = 1,
+                    //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                    //        Direction = AMPopTipDirection.None,
+                    //    }.Show(MainPage.BaseView);
+                    //}
+                    btnFanIcon.IsSelected = btnFanText.IsSelected = true;
+                    device.SetAttrState(FunctionAttributeKey.FanSpeed, m);
+                    btnWindSpeed.UnSelectedImagePath = acFunction.GetFanIconPath(m);
+                    System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
+                    d.Add(FunctionAttributeKey.FanSpeed, m);
+                    Control.Ins.SendWriteCommand(device, d);
+                    //btnWindSpeed.UnSelectedImagePath = btnFanIcon.UnSelectedImagePath;
+                    dialog.Close();
+                };
+                btnFanIcon.MouseUpEventHandler = eventHandler1;
+                btnFanText.MouseUpEventHandler = eventHandler1;
+                dialogView.MouseUpEventHandler = closeDialogEvent;
+            }
+
+            dialog.Show();
+        }
+
+        /// <summary>
+        /// 鍔犺浇绾㈠閬ユ帶鍣紝棰濆鎸夐挳
+        /// </summary>
+        void LoadDiv_IrView()
+        {
+            if (device.spk == SPK.AcIr)
+            {
+                var btnMore = new Button()
+                {
+                    Gravity = Gravity.CenterHorizontal,
+                    Y = Application.GetRealHeight(334 + 80),
+                    Width = Application.GetRealWidth(35),
+                    Height = Application.GetRealWidth(35),
+                    UnSelectedImagePath = "FunctionIcon/AC/More.png",
+                };
+                this.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(427),//667
+                Height = Application.GetRealHeight(240),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+            };
+            div.AddChidren(bodyView);
+
+            var contentView = new VerticalScrolViewLayout()
+            {
+                Y = Application.GetRealHeight(16),
+                Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth(296 + 200),
+            };
+            bodyView.AddChidren(contentView);
+
+
+            var row = new FrameLayout()
+            {
+                Height = Application.GetRealHeight(60),
+                Width = Application.GetRealWidth(296),
+                Gravity = Gravity.CenterHorizontal,
+            };
+            contentView.AddChidren(row);
+
+            int index = 0;
+            List<FunctionAttributes> attrList = new List<FunctionAttributes>();
+            attrList.AddRange(device.attributes);
+            attrList.Add(new FunctionAttributes()
+            {
+                key = "+",
+            });
+
+            foreach (var attr in attrList)
+            {
+                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()
+                    {
+                        Height = Application.GetRealHeight(56),
+                        Width = Application.GetRealWidth(296),
+                        Gravity = Gravity.CenterHorizontal,
+                    };
+                    contentView.AddChidren(row);
+                }
+                if (attr.key == "+")
+                {
+                    var addView = new FrameLayout()
+                    {
+                        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),
+                    };
+
+
+                    if (index % 3 == 1)
+                    {
+                        addView.Gravity = Gravity.Center;
+                    }
+                    else if (index % 3 == 2)
+                    {
+                        addView.X = Application.GetRealWidth(208);
+                    }
+                    row.AddChidren(addView);
+
+                    var btnAdd = new Button()
+                    {
+                        Gravity = Gravity.Center,
+                        UnSelectedImagePath = "Public/PlusSignIcon.png",
+                        Width = Application.GetRealWidth(32),
+                        Height = Application.GetRealWidth(32),
+                    };
+                    addView.AddChidren(btnAdd);
+
+                    btnAdd.MouseUpEventHandler = (sender, e) =>
+                    {
+                        dialog.Close();
+                        Action action = () => {
+                            LoadDialog_IrMoreView();
+                        };
+                        var addButton = new AcControlPage_AddIrButton(action);
+                        MainPage.BasePageView.AddChidren(addButton);
+                        addButton.Show(device);
+                        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                    };
+
+
+                }
+                else
+                {
+
+                    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) =>
+                    {
+                        //if (!device.online)
+                        //{
+                        //    new Tip()
+                        //    {
+                        //        CloseTime = 1,
+                        //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        //        Direction = AMPopTipDirection.None,
+                        //    }.Show(MainPage.BaseView);
+                        //}
+                        Dictionary<string, string> d = new 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++;
+            }
+
+            dialog.Show();
+        }
+
+
+        #endregion
+
+        #region 鈻� 鍙戦�佸悇绉嶅懡浠______________________
+
+        /// <summary>
+        /// 娓╁害鏀瑰彉妯″紡
+        /// </summary>
+        void LoadEvent_TempChange()
+        {
+            btnMinus.MouseUpEventHandler = (sender, e) =>
+            {
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //}
+                if (device.trait_on_off.curValue.ToString() == "off" || device.GetAttrState(FunctionAttributeKey.Mode) == "fan")
+                {
+                    return;
+                }
+
+                if (temp <= device.GetAttribute(FunctionAttributeKey.SetTemp).min)
+                {
+                    return;
+                }
+                --temp;
+                Console.WriteLine($"temp == {temp}");
+                controlTime = DateTime.Now;
+                arcBar.Progress = temp;
+                btnTemp.Text = temp.ToString();
+                device.SetAttrState(FunctionAttributeKey.SetTemp, temp.ToString());
+                System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
+                d.Add(FunctionAttributeKey.SetTemp, temp.ToString());
+                Control.Ins.SendWriteCommand(device, d);
+            };
+            btnPlus.MouseUpEventHandler = (sender, e) =>
+            {
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //}
+                if (device.trait_on_off.curValue.ToString() == "off" || device.GetAttrState(FunctionAttributeKey.Mode) == "fan")
+                {
+                    return;
+                }
+                if (temp >= device.GetAttribute(FunctionAttributeKey.SetTemp).max)
+                {
+                    return;
+                }
+                ++temp;
+                controlTime = DateTime.Now;
+                arcBar.Progress = temp;
+                btnTemp.Text = temp.ToString();
+                device.SetAttrState(FunctionAttributeKey.SetTemp, temp.ToString());
+                System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
+                d.Add(FunctionAttributeKey.SetTemp, temp.ToString());
+                Control.Ins.SendWriteCommand(device, d);
+            };
+            //if (device.online)
+            {
+                arcBar.OnStopTrackingTouchEvent = (sender, e) =>
+                {
+                    temp = arcBar.Progress;
+                    device.SetAttrState(FunctionAttributeKey.SetTemp, arcBar.Progress.ToString());
+                    btnTemp.Text = arcBar.Progress.ToString();
+                    controlTime = DateTime.Now;
+                    Dictionary<string, string> d = new Dictionary<string, string>();
+                    d.Add(FunctionAttributeKey.SetTemp, arcBar.Progress.ToString());
+                    Control.Ins.SendWriteCommand(device, d);
+                };
+                arcBar.OnProgressChangedEvent = (sender, e) =>
+                {
+                    device.SetAttrState(FunctionAttributeKey.SetTemp, e.ToString());
+                    btnTemp.Text = e.ToString();
+                };
+                //arcBar.MouseDownEventHandler = (sender, e) => {
+                //    Console.WriteLine("ddd");
+                //    MainPage.BasePageView.ScrollEnabled =false;
+                //};
+                //arcBar.MouseUpEventHandler = (sender, e) => {
+                //    Console.WriteLine("ddd2");
+                //    MainPage.BasePageView.ScrollEnabled = true;
+                //};
+            }
+        }
+
+        /// <summary>
+        /// 鎺у埗妯″紡浜嬩欢
+        /// </summary>
+        void LoadEvent_AcStatesChange()
+        {
+            btnMode.MouseUpEventHandler = (sender, e) =>
+            {
+                if (device.trait_on_off.curValue.ToString() == "off")
+                {
+                    return;
+                }
+                LoadDiv_ChangeModeView();
+            };
+            //鎵鏀瑰彉妯″紡
+            btnSwing.MouseUpEventHandler = (sender, e) =>
+            {
+                if (device.trait_on_off.curValue.ToString() == "off")
+                {
+                    return;
+                }
+                LoadDiv_ChangeSwingView();
+            };
+            btnWindSpeed.MouseUpEventHandler = (sender, e) =>
+            {
+                if (device.trait_on_off.curValue.ToString() == "off")
+                {
+                    return;
+                }
+                LoadDiv_ChangeFanView();
+            };
+
+            btnSwitch.MouseUpEventHandler = (sender, e) =>
+            {
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //}
+                btnSwitch.IsSelected = !btnSwitch.IsSelected;
+                device.trait_on_off.curValue = btnSwitch.IsSelected ? "on" : "off";
+                if (device.trait_on_off.curValue.ToString() == "on")
+                {
+                    arcBar.ThumbImagePath = "FunctionIcon/AC/DiyThumbIconOn.png";
+                    btnSwitch.IsSelected = true;
+                    arcBar.IsOffline = false;
+                }
+                else
+                {
+                    arcBar.ThumbImagePath = "FunctionIcon/AC/DiyThumbIcon.png";
+                    btnSwitch.IsBold = false;
+                    arcBar.IsOffline = true;
+                }
+                System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
+                d.Add(FunctionAttributeKey.OnOff, device.trait_on_off.curValue.ToString());
+                Control.Ins.SendWriteCommand(device, d);
+            };
+        }
+
+        #endregion
+
+        #region 鈻� 鍒锋柊鐣岄潰鐘舵�乢______________________
+
+        /// <summary>
+        /// 鍒锋柊鐣岄潰鐘舵��
+        /// </summary>
+        public void RefreshFormStatu()
+        {
+            Application.RunOnMainThread(() =>
+            {
+                //app鑷繁鎺у埗鐨勪笉鐢ㄦ洿鏂帮紝浼氶�犳垚璺冲姩
+                if (controlTime.AddSeconds(2) > DateTime.Now)
+                {
+                    return;
+                }
+                else
+                {
+                    btnIndoorTemp.Text = Language.StringByID(StringId.IndoorTemp) + Convert.ToInt32(Convert.ToDouble(device.GetAttrState(FunctionAttributeKey.RoomTemp).Replace(",", "."))) + "掳C";
+                    btnMode.SelectedImagePath = acFunction.GetModeIconPath(device.GetAttrState(FunctionAttributeKey.Mode));
+                    btnSwing.SelectedImagePath = acFunction.GetSwingIconPath(device.GetAttrState(FunctionAttributeKey.Swing));
+                    btnWindSpeed.SelectedImagePath = acFunction.GetFanIconPath(device.GetAttrState(FunctionAttributeKey.FanSpeed));
+                    btnMode.UnSelectedImagePath = acFunction.GetModeIconPath(device.GetAttrState(FunctionAttributeKey.Mode), false);
+                    btnSwing.UnSelectedImagePath = acFunction.GetSwingIconPath(device.GetAttrState(FunctionAttributeKey.Swing), false);
+                    btnWindSpeed.UnSelectedImagePath = acFunction.GetFanIconPath(device.GetAttrState(FunctionAttributeKey.FanSpeed), false);
+                    temp = Convert.ToInt32(Convert.ToDouble(device.GetAttrState(FunctionAttributeKey.SetTemp).Replace(",", ".")));
+
+
+                    arcBar.Progress = temp;
+                    btnTemp.Text = temp.ToString();
+
+                    if (device.trait_on_off.curValue.ToString() == "on")
+                    {
+                        btnMode.IsSelected = btnSwing.IsSelected = btnWindSpeed.IsSelected = true;
+                        arcBar.IsOffline = false;
+                        btnSwitch.IsSelected = true;
+                        arcBar.ThumbImagePath = "FunctionIcon/AC/DiyThumbIconOn.png";
+                        if (device.GetAttrState(FunctionAttributeKey.Mode) == "fan")
+                        {
+                            arcBar.IsClickable = false;
+                        }
+                        else
+                        {
+                            arcBar.IsClickable = true;
+                        }
+                    }
+                    else
+                    {
+                        btnMode.IsSelected = btnSwing.IsSelected = btnWindSpeed.IsSelected = false;
+                        arcBar.IsOffline = true;
+                        btnSwitch.IsSelected = false;
+                        arcBar.IsClickable = false;
+                        arcBar.ThumbImagePath = "FunctionIcon/AC/DiyThumbIcon.png";
+                    }
+
+                    if (device.GetAttrState(FunctionAttributeKey.Mode) == "dry")
+                    {
+                        arcBar.IsOffline = true;
+                        arcBar.IsClickable = false;
+
+                    }
+                }
+
+            });
+        }
+
+        #endregion
+
+        #region 鈻� 涓�鑸柟娉昣__________________________
+
+        /// <summary>
+        /// 鍒锋柊褰撳墠璁惧鐨勭姸鎬佺紦瀛�
+        /// </summary>
+        private void RefreshNowDeviceStatuMemory(Function i_LocalDevice)
+        {
+        }
+
+        #endregion
+    }
+}
\ No newline at end of file
diff --git a/HDL_ON/UI/UI2/FuntionControlView/ContentView/FhContentView.cs b/HDL_ON/UI/UI2/FuntionControlView/ContentView/FhContentView.cs
new file mode 100644
index 0000000..a4134a9
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/ContentView/FhContentView.cs
@@ -0,0 +1,540 @@
+锘縰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 FhContentView : FrameLayout
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+        /// <summary>
+        /// 绌鸿皟娓╁害鎺у埗鎺т欢
+        /// </summary>
+        DiyArcSeekBar arcBar;
+        /// <summary>
+        /// 鍑忓彿鎸夐挳
+        /// </summary>
+        Button btnMinus;
+        /// <summary>
+        /// 鍔犲彿鎸夐挳
+        /// </summary>
+        Button btnPlus;
+        /// <summary>
+        /// 娓╁害鎸夐挳
+        /// </summary>
+        Button btnTemp;
+        Button btnTempUint;
+        /// <summary>
+        /// 瀹ゅ唴娓╁害鎸夐挳
+        /// </summary>
+        Button btnIndoorTemp;
+        /// <summary>
+        /// 妯″紡鎸夐挳
+        /// </summary>
+        Button btnMode;
+        /// <summary>
+        /// 寮�鍏虫寜閽�
+        /// </summary>
+        Button btnSwitch;
+
+        FloorHeating fhTemp = new FloorHeating();
+
+        Function device;
+
+        #endregion
+
+        public FhContentView(Function function)
+        {
+            device = function;
+        }
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鍒濆鍖栫櫧鑹插尯鍩熺殑鍐呭
+        /// </summary>
+        public void InitContentView(bool initStandard)
+        {
+
+            if (initStandard)
+            {
+                //璁惧鍚嶅瓧
+                var btnDeviceName = new NormalViewControl(270, 37, true);
+                btnDeviceName.X = Application.GetRealWidth(16);
+                btnDeviceName.Y = Application.GetRealHeight(18);
+                btnDeviceName.TextColor = CSS_Color.FirstLevelTitleColor;
+                btnDeviceName.TextSize = CSS_FontSize.EmphasisFontSize_FirstLevel;
+                btnDeviceName.Text = device.name;
+                btnDeviceName.Width = btnDeviceName.GetRealWidthByText();
+                AddChidren(btnDeviceName);
+                //鎴块棿鍚嶅瓧
+                var btnRoomName = new NormalViewControl(270, 21, true);
+                btnRoomName.X = Application.GetRealWidth(16);
+                btnRoomName.Y = btnDeviceName.Bottom;
+                btnRoomName.TextColor = CSS_Color.PromptingColor1;
+                btnRoomName.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
+                btnRoomName.Text = device.GetRoomListName();
+                btnRoomName.Width = btnRoomName.GetRealWidthByText();
+                AddChidren(btnRoomName);
+
+            }
+            //鍒濆鍖栫涓�涓储寮曢〉鐨勫唴瀹�
+            this.InitFrameWhiteContent1();
+
+            //鍒锋柊鐣岄潰鐘舵��
+            this.RefreshFormStatu();
+            //璇诲彇鐘舵��
+            new System.Threading.Thread(() =>
+            {
+                Control.Ins.SendReadCommand(device);
+            })
+            { IsBackground = true }.Start();
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栫涓�涓储寮曢〉鐨勫唴瀹�
+        /// </summary>
+        private void InitFrameWhiteContent1()
+        {
+
+            arcBar = new DiyArcSeekBar()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                OpenAngle = 160,
+                //ThumbImagePath = device.trait_on_off.curValue.ToString() == "on" ? "FunctionIcon/FloorHeating/DiyThumbIconOn.png" : "FunctionIcon/AC/DiyThumbIcon.png",
+                ThumbImageHeight = Application.GetRealWidth(50),
+                ProgressBarColor = CSS_Color.AuxiliaryColor1, // 0xFFFC9C04,
+                OfflineProgressBarColor = CSS_Color.PromptingColor2,
+                MinValue = device.GetAttribute(FunctionAttributeKey.SetTemp).min,
+                MaxValue = device.GetAttribute(FunctionAttributeKey.SetTemp).max,
+                ArcColor = CSS_Color.BackgroundColor,
+                Progress = Convert.ToInt32(device.GetAttrState(FunctionAttributeKey.SetTemp)),
+#if __IOS__
+                Y = Application.GetRealHeight(120 + 25),
+                Width = Application.GetRealWidth(260 - 40),
+                Height = Application.GetRealWidth(260 - 40),
+                SeekBarPadding = Application.GetRealWidth(8),
+#else
+                Y = Application.GetRealHeight(120 + 40),
+                Width = Application.GetRealWidth(260 - 40),
+                Height = Application.GetRealWidth(260 - 40),
+                SeekBarPadding = Application.GetRealWidth(7),
+#endif
+
+            };
+            AddChidren(arcBar);
+
+
+            arcBar.ThumbImagePath = device.GetAttrState(FunctionAttributeKey.OnOff) == "on" ? "FunctionIcon/AC/DiyThumbIconOn.png" : "FunctionIcon/AC/DiyThumbIcon.png";
+            arcBar.IsOffline = device.GetAttrState(FunctionAttributeKey.OnOff) == "off";
+            arcBar.MinValue = device.GetAttribute(FunctionAttributeKey.SetTemp).min;
+            arcBar.MaxValue = device.GetAttribute(FunctionAttributeKey.SetTemp).max;
+            arcBar.Progress = Convert.ToInt32(device.GetAttrState(FunctionAttributeKey.SetTemp));
+
+
+
+            btnTemp = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealHeight(200),
+                Width = Application.GetRealWidth(80),
+                Height = Application.GetRealWidth(60),
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = 56,
+                IsBold = true,
+                Text = device.GetAttrState(FunctionAttributeKey.SetTemp),
+                TextAlignment = TextAlignment.Center,
+            };
+            AddChidren(btnTemp);
+
+            btnTempUint = new Button()
+            {
+                X = btnTemp.Right,
+                Y = btnTemp.Y,
+                Width = Application.GetRealWidth(30),
+                Height = Application.GetRealWidth(25),
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS_FontSize.EmphasisFontSize_Secondary,
+                IsBold = true,
+                TextAlignment = TextAlignment.CenterLeft,
+                Text = fhTemp.GetTempUnitString(device)
+            };
+            AddChidren(btnTempUint);
+
+            btnIndoorTemp = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = btnTemp.Bottom + Application.GetRealWidth(10),
+                Width = Application.GetRealWidth(100),
+                Height = Application.GetRealHeight(20),
+                Text = Language.StringByID(StringId.IndoorTemp) + "20掳C",
+                TextColor = CSS_Color.PromptingColor1,
+                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+            };
+            AddChidren(btnIndoorTemp);
+
+            btnMinus = new Button()
+            {
+                X = Application.GetRealWidth(21),
+                Y = Application.GetRealHeight(263),
+                Width = Application.GetRealWidth(32),
+                Height = Application.GetRealWidth(32),
+                UnSelectedImagePath = "Public/MinusSignIcon.png",
+            };
+            AddChidren(btnMinus);
+
+            btnPlus = new Button()
+            {
+                X = Application.GetRealWidth(275),
+                Y = Application.GetRealHeight(263),
+                Width = Application.GetRealWidth(32),
+                Height = Application.GetRealWidth(32),
+                UnSelectedImagePath = "Public/PlusSignIcon.png",
+            };
+            AddChidren(btnPlus);
+
+            if (device.GetAttribute(FunctionAttributeKey.Mode) != null)
+            {
+                btnMode = new Button()
+                {
+                    X = Application.GetRealWidth(235),
+                    Y = Application.GetRealHeight(337),
+                    Width = Application.GetRealWidth(30),
+                    Height = Application.GetRealWidth(30),
+                    UnSelectedImagePath = fhTemp.GetModeIconPath(device.GetAttrState(FunctionAttributeKey.Mode))
+                };
+                AddChidren(btnMode);
+                if (device.GetAttribute(FunctionAttributeKey.Mode).value.Count > 1)
+                {
+                    btnMode.MouseUpEventHandler = (sender, e) =>
+                    {
+                        LoadDiv_ChangeModeView();
+                    };
+                }
+            }
+
+            btnSwitch = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealHeight(466),
+                Width = Application.GetRealWidth(32),
+                Height = Application.GetRealWidth(32),
+                UnSelectedImagePath = "Public/PowerClose.png",
+                SelectedImagePath = "Public/PowerOpen.png",
+                IsSelected = device.trait_on_off.curValue.ToString() == "on"
+            };
+            AddChidren(btnSwitch);
+
+            LoadEvent_TempChange();
+            LoadEvent_AcStatesChange();
+
+        }
+
+        /// <summary>
+        /// 鍔犺浇淇敼妯″紡鍖哄煙
+        /// </summary>
+        void LoadDiv_ChangeModeView()
+        {
+            Dialog dialog = new Dialog();
+
+            FrameLayout dialogView = new FrameLayout()
+            {
+                BackgroundColor = CSS_Color.DialogTransparentColor1,
+            };
+            dialog.AddChidren(dialogView);
+
+            FrameLayout modeChangeView;
+            modeChangeView = new FrameLayout()
+            {
+                X = Application.GetRealWidth(30),
+                Y = Application.GetRealHeight(128),
+                Width = Application.GetRealWidth(160),
+                Height = Application.GetRealHeight(287),
+                BackgroundImagePath = "FunctionIcon/AC/DivBg1.png",
+            };
+            dialogView.AddChidren(modeChangeView);
+
+            Button btnTitle;
+            btnTitle = new Button()
+            {
+                X = Application.GetRealWidth(8 + 16),
+                Y = Application.GetRealHeight(8),
+                Width = Application.GetRealWidth(112),
+                Height = Application.GetRealHeight(44),
+                TextID = StringId.ChooseMode,
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS_FontSize.EmphasisFontSize_Secondary,
+            };
+            modeChangeView.AddChidren(btnTitle);
+
+            Button btnLine = new Button()
+            {
+                X = btnTitle.X,
+                Y = btnTitle.Bottom,
+                Width = Application.GetRealWidth(112),
+                Height = Application.GetRealHeight(1),
+                BackgroundColor = CSS_Color.BackgroundColor,
+            };
+            modeChangeView.AddChidren(btnLine);
+
+            var modeList = device.GetAttribute(FunctionAttributeKey.Mode).value;
+            foreach (var m in modeList)
+            {
+                Button btnModeIcon = new Button()
+                {
+                    X = btnTitle.X,
+                    Y = Application.GetRealHeight(44 * (modeList.IndexOf(m) + 1) + 10 + 8),
+                    Width = Application.GetRealWidth(24),
+                    Height = Application.GetRealWidth(24),
+                    IsSelected = device.GetAttrState(FunctionAttributeKey.Mode) == m,
+                };
+                modeChangeView.AddChidren(btnModeIcon);
+
+                Button btnModeText = new Button()
+                {
+                    X = Application.GetRealWidth(12) + btnModeIcon.Right,
+                    Y = Application.GetRealHeight(44 * (modeList.IndexOf(m) + 1) + 8),
+                    Height = Application.GetRealHeight(44),
+                    Width = Application.GetRealWidth(90),
+                    TextAlignment = TextAlignment.CenterLeft,
+                    TextColor = CSS_Color.FirstLevelTitleColor,
+                    SelectedTextColor = CSS_Color.MainColor,
+                    IsSelected = device.GetAttrState(FunctionAttributeKey.Mode) == m,
+                    TextSize = CSS_FontSize.TextFontSize,
+                };
+                modeChangeView.AddChidren(btnModeText);
+
+                btnModeIcon.UnSelectedImagePath = fhTemp.GetModeIconPath(m, false);
+                btnModeIcon.SelectedImagePath = fhTemp.GetModeIconPath(m);
+                btnModeText.Text = fhTemp.GetModeAttrText(m);
+
+                if (modeList.IndexOf(m) < modeList.Count - 1)
+                {
+                    modeChangeView.AddChidren(new Button()
+                    {
+                        X = btnTitle.X,
+                        Y = btnModeText.Bottom,
+                        Width = Application.GetRealWidth(112),
+                        Height = Application.GetRealHeight(1),
+                        BackgroundColor = CSS_Color.BackgroundColor,
+                    });
+                }
+                EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+                {
+                    dialog.Close();
+                };
+                EventHandler<MouseEventArgs> eventHandler1 = (sender, e) =>
+                {
+                    //if (!device.online)
+                    //{
+                    //    new Tip()
+                    //    {
+                    //        CloseTime = 1,
+                    //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                    //        Direction = AMPopTipDirection.None,
+                    //    }.Show(MainPage.BaseView);
+                    //}
+                    btnModeIcon.IsSelected = btnModeText.IsSelected = true;
+                    device.SetAttrState(FunctionAttributeKey.Mode, m);
+                    btnMode.UnSelectedImagePath = fhTemp.GetModeIconPath(m);
+                    System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
+                    btnMode.UnSelectedImagePath = btnModeIcon.UnSelectedImagePath;
+                    d.Add(FunctionAttributeKey.Mode, m);
+                    Control.Ins.SendWriteCommand(device, d);
+                    dialog.Close();
+                    if (device.GetAttrState(FunctionAttributeKey.Mode) == "fan")
+                    {
+                        arcBar.IsClickable = false;
+                    }
+                    else
+                    {
+                        arcBar.IsClickable = true;
+                    }
+                };
+                btnModeIcon.MouseUpEventHandler = eventHandler1;
+                btnModeText.MouseUpEventHandler = eventHandler1;
+                dialogView.MouseUpEventHandler = eventHandler;
+
+            }
+
+            dialogView.MouseUpEventHandler = (sender, e) => {
+                dialog.Close();
+            };
+            dialog.Show();
+        }
+
+        #endregion
+
+
+        #region 鈻� 鍙戦�佸悇绉嶅懡浠______________________
+
+        /// <summary>
+        /// 娓╁害鏀瑰彉妯″紡
+        /// </summary>
+        void LoadEvent_TempChange()
+        {
+            btnMinus.MouseUpEventHandler = (sender, e) =>
+            {
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
+                if (device.trait_on_off.curValue.ToString() == "off" || device.GetAttrState(FunctionAttributeKey.Mode) == "fan")
+                {
+                    return;
+                }
+                var temp = Convert.ToInt32(device.GetAttrState(FunctionAttributeKey.SetTemp));
+                if (temp <= device.GetAttribute(FunctionAttributeKey.Mode).min)
+                {
+                    return;
+                }
+                temp--;
+                arcBar.Progress = temp;
+                btnTemp.Text = temp.ToString();
+                device.SetAttrState(FunctionAttributeKey.SetTemp, temp.ToString());
+                System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
+                d.Add(FunctionAttributeKey.SetTemp, temp.ToString());
+                Control.Ins.SendWriteCommand(device, d);
+            };
+            btnPlus.MouseUpEventHandler = (sender, e) =>
+            {
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
+                if (device.trait_on_off.curValue.ToString() == "off" || device.GetAttrState(FunctionAttributeKey.Mode) == "fan")
+                {
+                    return;
+                }
+                var temp = Convert.ToInt32(device.GetAttrState(FunctionAttributeKey.SetTemp));
+                if (temp >= device.GetAttribute(FunctionAttributeKey.SetTemp).max)
+                {
+                    return;
+                }
+                temp++;
+                arcBar.Progress = temp;
+                btnTemp.Text = temp.ToString();
+                device.SetAttrState(FunctionAttributeKey.SetTemp, temp.ToString());
+                System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
+                d.Add(FunctionAttributeKey.SetTemp, temp.ToString());
+                Control.Ins.SendWriteCommand(device, d);
+            };
+
+            //if (device.online)
+            {
+                arcBar.OnStopTrackingTouchEvent = (sender, e) =>
+                {
+                    device.SetAttrState(FunctionAttributeKey.SetTemp, arcBar.Progress.ToString());
+                    btnTemp.Text = arcBar.Progress.ToString();
+                    System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
+                    d.Add(FunctionAttributeKey.SetTemp, arcBar.Progress.ToString());
+                    Control.Ins.SendWriteCommand(device, d);
+                };
+                arcBar.OnProgressChangedEvent = (sender, e) =>
+                {
+                    device.SetAttrState(FunctionAttributeKey.SetTemp, e.ToString());
+                    btnTemp.Text = e.ToString();
+                };
+            }
+        }
+        /// <summary>
+        /// 鎺у埗妯″紡浜嬩欢
+        /// </summary>
+        void LoadEvent_AcStatesChange()
+        {
+            btnMode.MouseUpEventHandler = (sender, e) =>
+            {
+                if (device.trait_on_off.curValue.ToString() == "off")
+                {
+                    return;
+                }
+                LoadDiv_ChangeModeView();
+            };
+
+            btnSwitch.MouseUpEventHandler = (sender, e) =>
+            {
+                btnSwitch.IsSelected = !btnSwitch.IsSelected;
+                device.trait_on_off.curValue = btnSwitch.IsSelected ? "on" : "off";
+                if (device.trait_on_off.curValue.ToString() == "on")
+                {
+                    arcBar.ThumbImagePath = "FunctionIcon/AC/DiyThumbIconOn.png";
+                    btnSwitch.IsSelected = true;
+                    arcBar.IsOffline = false;
+                }
+                else
+                {
+                    arcBar.ThumbImagePath = "FunctionIcon/AC/DiyThumbIcon.png";
+                    btnSwitch.IsBold = false;
+                    arcBar.IsOffline = true;
+                }
+                System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
+                d.Add(FunctionAttributeKey.OnOff, device.trait_on_off.curValue.ToString());
+                Control.Ins.SendWriteCommand(device, d);
+            };
+        }
+
+        #endregion
+
+        #region 鈻� 鍒锋柊鐣岄潰鐘舵�乢______________________
+
+        /// <summary>
+        /// 鍒锋柊鐣岄潰鐘舵��
+        /// </summary>
+        private void RefreshFormStatu()
+        {
+            Application.RunOnMainThread(() =>
+            {
+                btnTemp.Text = device.GetAttrState(FunctionAttributeKey.SetTemp);
+                btnIndoorTemp.Text = Language.StringByID(StringId.IndoorTemp) + Convert.ToInt32(Convert.ToDouble(device.GetAttrState(FunctionAttributeKey.RoomTemp).Replace(",", "."))) + "掳C";
+                btnMode.UnSelectedImagePath = fhTemp.GetModeIconPath(device.GetAttrState(FunctionAttributeKey.Mode));
+                arcBar.Progress = Convert.ToInt32(Convert.ToDouble(device.GetAttrState(FunctionAttributeKey.SetTemp).Replace(",", ".")));
+                if (device.trait_on_off.curValue.ToString() == "on")
+                {
+                    arcBar.IsOffline = false;
+                    btnSwitch.IsSelected = true;
+                    arcBar.ThumbImagePath = "FunctionIcon/AC/DiyThumbIconOn.png";
+                    if (device.GetAttrState(FunctionAttributeKey.Mode) == "fan")
+                    {
+                        arcBar.IsClickable = false;
+                    }
+                    else
+                    {
+                        arcBar.IsClickable = true;
+                    }
+                }
+                else
+                {
+                    arcBar.IsOffline = true;
+                    btnSwitch.IsSelected = false;
+                    arcBar.IsClickable = false;
+                    arcBar.ThumbImagePath = "FunctionIcon/AC/DiyThumbIcon.png";
+                }
+                //鑷姩妯″紡涓嶅厑璁歌皟娓╁害 2021-10-27 09:41:35 wxr 闄堢惓鍙嶉
+                if (device.GetAttrState(FunctionAttributeKey.Mode) == "auto")
+                {
+                    btnPlus.Enable = false;
+                    btnMinus.Enable = false;
+                    arcBar.IsClickable = false;
+                    arcBar.IsOffline = true;
+                }
+            });
+        }
+
+        #endregion
+    }
+}
\ No newline at end of file
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Curtain/CurtainModulePage.cs b/HDL_ON/UI/UI2/FuntionControlView/Curtain/CurtainModulePage.cs
index 050f0b1..39fee50 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Curtain/CurtainModulePage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Curtain/CurtainModulePage.cs
@@ -122,8 +122,8 @@
                 Y= Application.GetRealHeight(130),
                 Width = Application.GetRealWidth(250),
                 Height = Application.GetRealHeight(177),
-                UnSelectedImagePath = "FunctionIcon/Curtain/CurtainBgIcon.png",
-                SelectedImagePath = "FunctionIcon/Curtain/CurtainBgOnIcon.png",
+                SelectedImagePath = "FunctionIcon/Curtain/CurtainBgIcon.png",
+                UnSelectedImagePath = "FunctionIcon/Curtain/CurtainBgOnIcon.png",
             };
             controlView.AddChidren(btnCurtainBgIcon);
 
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Curtain/CurtainModulePageBLL.cs b/HDL_ON/UI/UI2/FuntionControlView/Curtain/CurtainModulePageBLL.cs
index 242fb61..5c2383a 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Curtain/CurtainModulePageBLL.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Curtain/CurtainModulePageBLL.cs
@@ -72,15 +72,15 @@
         void LoadEvent_ControlEvent()
         {
             btnCurtainClose.MouseUpEventHandler = (sender, e) => {
-                if (!function.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                }
+                //if (!function.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //}
                 new System.Threading.Thread(() => {
                     System.Threading.Thread.Sleep(2000);
                     Application.RunOnMainThread(() => {
@@ -116,15 +116,15 @@
 
             btnCurtainStop.MouseUpEventHandler = (sender, e) =>
             {
-                if (!function.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                }
+                //if (!function.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //}
                 new System.Threading.Thread(() => {
                     System.Threading.Thread.Sleep(2000);
                     Application.RunOnMainThread(() => {
@@ -139,15 +139,15 @@
             };
             btnCurtainOpen.MouseUpEventHandler = (sender, e) =>
             {
-                if (!function.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                }
+                //if (!function.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //}
                 new System.Threading.Thread(() => {
                     System.Threading.Thread.Sleep(2000);
                     Application.RunOnMainThread(() => {
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Curtain/MotorCurtainPageBLL.cs b/HDL_ON/UI/UI2/FuntionControlView/Curtain/MotorCurtainPageBLL.cs
index 87044d5..a7b399d 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Curtain/MotorCurtainPageBLL.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Curtain/MotorCurtainPageBLL.cs
@@ -137,15 +137,16 @@
         {
             btnCurtainClose.MouseUpEventHandler = (sender, e) =>
             {
-                if (!function.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                }
+                //if (!function.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 new System.Threading.Thread(() =>
                 {
                     System.Threading.Thread.Sleep(2000);
@@ -165,15 +166,16 @@
 
             btnCurtainStop.MouseUpEventHandler = (sender, e) =>
             {
-                if (!function.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                }
+                //if (!function.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 onCurtainAnimation = false;
                 new System.Threading.Thread(() =>
                 {
@@ -192,15 +194,16 @@
 
             btnCurtainOpen.MouseUpEventHandler = (sender, e) =>
             {
-                if (!function.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                }
+                //if (!function.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 new System.Threading.Thread(() =>
                 {
                     System.Threading.Thread.Sleep(2000);
@@ -218,7 +221,7 @@
                 CurtainAnimation(100);
             };
 
-            if (!function.online)
+            //if (function.online)
             {
                 btnCurtainStop.MouseDownEventHandler = (sender, e) =>
                 {
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Curtain/RollingShutterPageBLL.cs b/HDL_ON/UI/UI2/FuntionControlView/Curtain/RollingShutterPageBLL.cs
index 94bfddc..1f752b7 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Curtain/RollingShutterPageBLL.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Curtain/RollingShutterPageBLL.cs
@@ -138,15 +138,16 @@
         {
             btnCurtainClose.MouseUpEventHandler = (sender, e) =>
             {
-                if (!function.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                }
+                //if (!function.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 new System.Threading.Thread(() =>
                 {
                     System.Threading.Thread.Sleep(2000);
@@ -166,15 +167,16 @@
 
             btnCurtainStop.MouseUpEventHandler = (sender, e) =>
             {
-                if (!function.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                }
+                //if (!function.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 new System.Threading.Thread(() => {
                     System.Threading.Thread.Sleep(2000);
                     Application.RunOnMainThread(() => {
@@ -191,15 +193,16 @@
 
             btnCurtainOpen.MouseUpEventHandler = (sender, e) =>
             {
-                if (!function.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                }
+                //if (!function.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 new System.Threading.Thread(() =>
                 {
                     System.Threading.Thread.Sleep(2000);
@@ -235,9 +238,8 @@
             //    DriverLayer.Control.Ins.SendWriteCommand(function, d);
             //};
 
-            if (!function.online)
+            //if (function.online)
             {
-
                 btnCurtainStop.MouseDownEventHandler = (sender, e) =>
                 {
                     btnCurtainStop.IsSelected = true;
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/AirSwitchPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/AirSwitchPage.cs
index 7021c55..bfcf8d4 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/AirSwitchPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/AirSwitchPage.cs
@@ -417,16 +417,16 @@
         {
             btnSwitchIcon.MouseUpEventHandler = (sender, e) =>
             {
-                if (!function.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!function.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 btnSwitch.IsSelected = btnSwitchIcon.IsSelected = !btnSwitchIcon.IsSelected;
                 new System.Threading.Thread(() =>
                 {
@@ -439,16 +439,16 @@
             };
             btnSwitch.MouseUpEventHandler = (sender, e) =>
             {
-                if (!function.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!function.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 btnSwitchIcon.IsSelected = btnSwitch.IsSelected = !btnSwitch.IsSelected;
                 new System.Threading.Thread(() =>
                 {
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerPage.cs
index d93b021..89d64ae 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerPage.cs
@@ -126,16 +126,16 @@
 
             #region 鎺у埗
             btnUp.MouseUpEventHandler = (sender, e) => {
-                if (!device.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 new System.Threading.Thread(() =>
                 {
                     System.Threading.Thread.Sleep(2000);
@@ -151,16 +151,16 @@
             };
             //----
             btnStop.MouseUpEventHandler = (sender, e) => {
-                if (!device.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 new System.Threading.Thread(() =>
                 {
                     System.Threading.Thread.Sleep(2000);
@@ -174,7 +174,7 @@
                 d.Add(FunctionAttributeKey.Position, "stop");
                 Control.Ins.SendWriteCommand(device, d);
             };
-            if (!device.online)
+            //if (!device.online)
             {
                 btnUp.MouseDownEventHandler = (sender, e) => {
                     btnUp.IsSelected = true;
@@ -189,16 +189,16 @@
                 };
             }
             btnDown.MouseUpEventHandler = (sender, e) => {
-                if (!device.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 new System.Threading.Thread(() =>
                 {
                     System.Threading.Thread.Sleep(2000);
@@ -242,16 +242,16 @@
 
                 EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
                 {
-                    if (!device.online)
-                    {
-                        new Tip()
-                        {
-                            CloseTime = 1,
-                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                            Direction = AMPopTipDirection.None,
-                        }.Show(MainPage.BaseView);
-                    return;
-                    }
+                    //if (!device.online)
+                    //{
+                    //    new Tip()
+                    //    {
+                    //        CloseTime = 1,
+                    //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                    //        Direction = AMPopTipDirection.None,
+                    //    }.Show(MainPage.BaseView);
+                    //    return;
+                    //}
                     string onoff = hotDryView.Lighting ? "false" : "true";
                     device.SetAttrState(FunctionAttributeKey.HotDry, onoff);
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -281,16 +281,16 @@
 
                 EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
                 {
-                    if (!device.online)
-                    {
-                        new Tip()
-                        {
-                            CloseTime = 1,
-                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                            Direction = AMPopTipDirection.None,
-                        }.Show(MainPage.BaseView);
-                    return;
-                    }
+                    //if (!device.online)
+                    //{
+                    //    new Tip()
+                    //    {
+                    //        CloseTime = 1,
+                    //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                    //        Direction = AMPopTipDirection.None,
+                    //    }.Show(MainPage.BaseView);
+                    //    return;
+                    //}
                     string onoff = windDryView.Lighting ? "false" : "true";
                     device.SetAttrState(FunctionAttributeKey.WindDry, onoff);
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -326,16 +326,16 @@
 
                 EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
                 {
-                    if (!device.online)
-                    {
-                        new Tip()
-                        {
-                            CloseTime = 1,
-                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                            Direction = AMPopTipDirection.None,
-                        }.Show(MainPage.BaseView);
-                    return;
-                    }
+                    //if (!device.online)
+                    //{
+                    //    new Tip()
+                    //    {
+                    //        CloseTime = 1,
+                    //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                    //        Direction = AMPopTipDirection.None,
+                    //    }.Show(MainPage.BaseView);
+                    //    return;
+                    //}
                     string onoff = disinfectView.Lighting ? "false" : "true";
                     device.SetAttrState(FunctionAttributeKey.Disinfect, onoff);
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -376,16 +376,16 @@
 
                 EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
                 {
-                    if (!device.online)
-                    {
-                        new Tip()
-                        {
-                            CloseTime = 1,
-                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                            Direction = AMPopTipDirection.None,
-                        }.Show(MainPage.BaseView);
-                    return;
-                    }
+                    //if (!device.online)
+                    //{
+                    //    new Tip()
+                    //    {
+                    //        CloseTime = 1,
+                    //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                    //        Direction = AMPopTipDirection.None,
+                    //    }.Show(MainPage.BaseView);
+                    //    return;
+                    //}
                     string onoff = lightingView.Lighting ? "off" : "on";
                     device.SetAttrState(FunctionAttributeKey.OnOff, onoff);
                     Dictionary<string, string> d = new Dictionary<string, string>();
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerSetTimePage.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerSetTimePage.cs
index e9ec37c..330147b 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerSetTimePage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerSetTimePage.cs
@@ -74,16 +74,16 @@
                 functionListView.AddChidren(hotDryTimeCell);
                 hotDryTimeCell.GoAction = () =>
                 {
-                    if (!device.online)
-                    {
-                        new Tip()
-                        {
-                            CloseTime = 1,
-                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                            Direction = AMPopTipDirection.None,
-                        }.Show(MainPage.BaseView);
-                        return;
-                    }
+                    //if (!device.online)
+                    //{
+                    //    new Tip()
+                    //    {
+                    //        CloseTime = 1,
+                    //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                    //        Direction = AMPopTipDirection.None,
+                    //    }.Show(MainPage.BaseView);
+                    //    return;
+                    //}
                     BottomTimeSelectControl timeControl = new BottomTimeSelectControl(hRange, mRange,3, Language.StringByID(StringId.HotDryTime));
                     timeControl.RowHeight = Application.GetRealHeight(50);
                     timeControl.InitControl(0, 1, 162);
@@ -130,16 +130,16 @@
                 functionListView.AddChidren(windDryCell);
                 windDryCell.GoAction = () =>
                 {
-                    if (!device.online)
-                    {
-                        new Tip()
-                        {
-                            CloseTime = 1,
-                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                            Direction = AMPopTipDirection.None,
-                        }.Show(MainPage.BaseView);
-                        return;
-                    }
+                    //if (!device.online)
+                    //{
+                    //    new Tip()
+                    //    {
+                    //        CloseTime = 1,
+                    //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                    //        Direction = AMPopTipDirection.None,
+                    //    }.Show(MainPage.BaseView);
+                    //    return;
+                    //}
                     BottomTimeSelectControl timeControl = new BottomTimeSelectControl(hRange, mRange,3,Language.StringByID(StringId.WindDryTime));
                     timeControl.RowHeight = Application.GetRealHeight(50);
                     timeControl.InitControl(0, 1, 162);
@@ -187,16 +187,16 @@
 
                 functionListView.AddChidren(disinfectTimeCell);
                 disinfectTimeCell.GoAction = () => {
-                    if (!device.online)
-                    {
-                        new Tip()
-                        {
-                            CloseTime = 1,
-                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                            Direction = AMPopTipDirection.None,
-                        }.Show(MainPage.BaseView);
-                        return;
-                    }
+                    //if (!device.online)
+                    //{
+                    //    new Tip()
+                    //    {
+                    //        CloseTime = 1,
+                    //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                    //        Direction = AMPopTipDirection.None,
+                    //    }.Show(MainPage.BaseView);
+                    //    return;
+                    //}
                     BottomTimeSelectControl timeControl = new BottomTimeSelectControl(hRange, mRange,3, Language.StringByID(StringId.DisinfectTime));
                     timeControl.RowHeight = Application.GetRealHeight(50);
                     timeControl.InitControl(0, 1, 162);
@@ -245,16 +245,16 @@
                 anionTimeCell.LineView.RemoveFromParent();
 
                 anionTimeCell.GoAction = () => {
-                    if (!device.online)
-                    {
-                        new Tip()
-                        {
-                            CloseTime = 1,
-                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                            Direction = AMPopTipDirection.None,
-                        }.Show(MainPage.BaseView);
-                        return;
-                    }
+                    //if (!device.online)
+                    //{
+                    //    new Tip()
+                    //    {
+                    //        CloseTime = 1,
+                    //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                    //        Direction = AMPopTipDirection.None,
+                    //    }.Show(MainPage.BaseView);
+                    //    return;
+                    //}
                     BottomTimeSelectControl timeControl = new BottomTimeSelectControl(hRange, mRange,3,Language.StringByID(StringId.AnionTime));
 
 
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/FanPageBLL.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/FanPageBLL.cs
index 7dab158..8b2c58c 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/FanPageBLL.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/FanPageBLL.cs
@@ -62,16 +62,16 @@
         {
             btnSwitchIcon.MouseUpEventHandler += (sender, e) =>
             {
-                if (!function.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!function.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 btnSwitchIcon.IsSelected = btnSwitch.IsSelected = !btnSwitchIcon.IsSelected;
 
                 new System.Threading.Thread(() =>
@@ -86,16 +86,16 @@
             };
             btnSwitch.MouseUpEventHandler += (sender, e) =>
             {
-                if (!function.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!function.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 btnSwitch.IsSelected = btnSwitchIcon.IsSelected = !btnSwitch.IsSelected;
 
                 new System.Threading.Thread(() =>
@@ -108,7 +108,7 @@
                 { IsBackground = true }.Start();
             };
 
-            if (!function.online)
+            //if (function.online)
             {
                 barGradualChange.OnProgressChangedEvent = (sender, e) =>
                 {
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/IrLearnPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/IrLearnPage.cs
index c8041d3..b32280c 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/IrLearnPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/IrLearnPage.cs
@@ -90,16 +90,16 @@
 
                 btn.MouseUpEventHandler = (sender, e) => {
 
-                    if (!device.online)
-                    {
-                        new Tip()
-                        {
-                            CloseTime = 1,
-                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                            Direction = AMPopTipDirection.None,
-                        }.Show(MainPage.BaseView);
-                        return;
-                    }
+                    //if (!device.online)
+                    //{
+                    //    new Tip()
+                    //    {
+                    //        CloseTime = 1,
+                    //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                    //        Direction = AMPopTipDirection.None,
+                    //    }.Show(MainPage.BaseView);
+                    //    return;
+                    //}
                     System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                     d.Add(attr.key, "");
                     Control.Ins.SendWriteCommand(device, d);
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/PjtPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/PjtPage.cs
index df0f1d1..ce95adc 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/PjtPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/PjtPage.cs
@@ -480,16 +480,16 @@
 
                     btn.MouseUpEventHandler = (sender, e) =>
                     {
-                        if (!device.online)
-                        {
-                            new Tip()
-                            {
-                                CloseTime = 1,
-                                Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                                Direction = AMPopTipDirection.None,
-                            }.Show(MainPage.BaseView);
-                            return;
-                        }
+                        //if (!device.online)
+                        //{
+                        //    new Tip()
+                        //    {
+                        //        CloseTime = 1,
+                        //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        //        Direction = AMPopTipDirection.None,
+                        //    }.Show(MainPage.BaseView);
+                        //    return;
+                        //}
                         Dictionary<string, string> d = new Dictionary<string, string>();
                         d.Add(attr.key, "");
                         Control.Ins.SendWriteCommand(device, d);
@@ -548,16 +548,16 @@
 
             btnChlPlus.MouseUpEventHandler = (sender, e) =>
             {
-                if (!device.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -567,16 +567,16 @@
             };
             btnChlReduce.MouseUpEventHandler = (sender, e) =>
             {
-                if (!device.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -586,16 +586,16 @@
             };
             btnVolPlus.MouseUpEventHandler = (sender, e) =>
             {
-                if (!device.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -605,16 +605,16 @@
             };
             btnVolReduce.MouseUpEventHandler = (sender, e) =>
             {
-                if (!device.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -624,16 +624,16 @@
             };
             btnBack.MouseUpEventHandler = (sender, e) =>
             {
-                if (!device.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -643,16 +643,16 @@
             };
             btnPower.MouseUpEventHandler = (sender, e) =>
             {
-                if (!device.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -679,16 +679,16 @@
             };
             btnMenu.MouseUpEventHandler = (sender, e) =>
             {
-                if (!device.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
@@ -699,16 +699,16 @@
             };
             btnTopMenuUp.MouseUpEventHandler = (sender, e) => {
 
-                if (!device.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
@@ -719,16 +719,16 @@
             };
             btnTopMenuLeft.MouseUpEventHandler = (sender, e) => {
 
-                if (!device.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
@@ -739,16 +739,16 @@
             };
             btnTopMenuRight.MouseUpEventHandler = (sender, e) => {
 
-                if (!device.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
@@ -759,16 +759,16 @@
             };
             btnTopMenuDown.MouseUpEventHandler = (sender, e) => {
 
-                if (!device.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
@@ -779,16 +779,16 @@
             };
             btnOk.MouseUpEventHandler = (sender, e) => {
 
-                if (!device.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/SocketPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/SocketPage.cs
index c5c93da..2177666 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/SocketPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/SocketPage.cs
@@ -290,16 +290,16 @@
         {
             btnSwitchIcon.MouseUpEventHandler += (sender, e) =>
             {
-                if (!function.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!function.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 btnSwitchIcon.IsSelected = btnSwitch.IsSelected = !btnSwitchIcon.IsSelected;
 
                 new System.Threading.Thread(() =>
@@ -316,16 +316,16 @@
             };
             btnSwitch.MouseUpEventHandler += (sender, e) =>
             {
-                if (!function.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!function.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 btnSwitch.IsSelected = btnSwitchIcon.IsSelected = !btnSwitch.IsSelected;
 
                 new System.Threading.Thread(() =>
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/StbPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/StbPage.cs
index cf97d88..0559e90 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/StbPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/StbPage.cs
@@ -421,16 +421,16 @@
                 }
                 numberView.AddChidren(btn);
                 btn.MouseUpEventHandler = (sender, e) => {
-                    if (!device.online)
-                    {
-                        new Tip()
-                        {
-                            CloseTime = 1,
-                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                            Direction = AMPopTipDirection.None,
-                        }.Show(MainPage.BaseView);
-                        return;
-                    }
+                    //if (!device.online)
+                    //{
+                    //    new Tip()
+                    //    {
+                    //        CloseTime = 1,
+                    //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                    //        Direction = AMPopTipDirection.None,
+                    //    }.Show(MainPage.BaseView);
+                    //    return;
+                    //}
                     string index = (sender as Button).Text;
                     btn.IsSelected = false;
                     if (DB_ResidenceData.Instance.GatewayType == 1)
@@ -484,16 +484,16 @@
         {
             btnMenu.MouseUpEventHandler = (sender, e) =>
             {
-                if (!device.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -503,16 +503,16 @@
             };
             btnChlPlus.MouseUpEventHandler = (sender, e) =>
             {
-                if (!device.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -522,16 +522,16 @@
             };
             btnChlReduce.MouseUpEventHandler = (sender, e) =>
             {
-                if (!device.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -541,16 +541,16 @@
             };
             btnVolPlus.MouseUpEventHandler = (sender, e) =>
             {
-                if (!device.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -560,16 +560,16 @@
             };
             btnVolReduce.MouseUpEventHandler = (sender, e) =>
             {
-                if (!device.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -579,16 +579,16 @@
             };
             btnBack.MouseUpEventHandler = (sender, e) =>
             {
-                if (!device.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -599,16 +599,16 @@
 
             btnMenu.MouseUpEventHandler = (sender, e) =>
             {
-                if (!device.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -618,30 +618,30 @@
             };
             btn123.MouseUpEventHandler = (sender, e) =>
             {
-                if (!device.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 ShowNumberView();
             };
             btnMute.MouseUpEventHandler = (sender, e) =>
             {
-                if (!device.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -651,16 +651,16 @@
             };
             btnPower.MouseUpEventHandler = (sender, e) =>
             {
-                if (!device.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -670,7 +670,7 @@
             };
 
 
-            if (!device.online)
+            //if (device.online)
             {
                 btnTopMenuUp.MouseDownEventHandler = (sender, e) =>
                 {
@@ -695,16 +695,16 @@
             }
             btnMenu.MouseUpEventHandler = (sender, e) =>
             {
-                if (!device.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
@@ -715,16 +715,16 @@
             };
             btnTopMenuUp.MouseUpEventHandler = (sender, e) => {
 
-                if (!device.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
@@ -735,16 +735,16 @@
             };
             btnTopMenuLeft.MouseUpEventHandler = (sender, e) => {
 
-                if (!device.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
@@ -755,16 +755,16 @@
             };
             btnTopMenuRight.MouseUpEventHandler = (sender, e) => {
 
-                if (!device.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
@@ -775,16 +775,16 @@
             };
             btnTopMenuDown.MouseUpEventHandler = (sender, e) => {
 
-                if (!device.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
@@ -795,16 +795,16 @@
             };
             btnOk.MouseUpEventHandler = (sender, e) => {
 
-                if (!device.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
@@ -971,16 +971,16 @@
 
                     btn.MouseUpEventHandler = (sender, e) =>
                     {
-                        if (!device.online)
-                        {
-                            new Tip()
-                            {
-                                CloseTime = 1,
-                                Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                                Direction = AMPopTipDirection.None,
-                            }.Show(MainPage.BaseView);
-                            return;
-                        }
+                        //if (!device.online)
+                        //{
+                        //    new Tip()
+                        //    {
+                        //        CloseTime = 1,
+                        //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                        //        Direction = AMPopTipDirection.None,
+                        //    }.Show(MainPage.BaseView);
+                        //    return;
+                        //}
                         Dictionary<string, string> d = new Dictionary<string, string>();
                         d.Add(attr.key, "");
                         Control.Ins.SendWriteCommand(device, d);
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/TVPageBLL.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/TVPageBLL.cs
index ff71d51..86bb29e 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/TVPageBLL.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/TVPageBLL.cs
@@ -40,16 +40,16 @@
         /// </summary>
         void LoadControlEvent()
         {
-            if (!function.online)
-            {
-                new Tip()
-                {
-                    CloseTime = 1,
-                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                    Direction = AMPopTipDirection.None,
-                }.Show(MainPage.BaseView);
-                return;
-            }
+            //if (!function.online)
+            //{
+            //    new Tip()
+            //    {
+            //        CloseTime = 1,
+            //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+            //        Direction = AMPopTipDirection.None,
+            //    }.Show(MainPage.BaseView);
+            //    return;
+            //}
             btnChangeTVAV.MouseUpEventHandler = (sender, e) =>
             {
                 if (DB_ResidenceData.Instance.GatewayType == 1)
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaAirCleanerPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaAirCleanerPage.cs
index 0bc953c..5632784 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaAirCleanerPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaAirCleanerPage.cs
@@ -540,16 +540,16 @@
         /// <param name="value">auto:鑷姩  sleep:鐫$湢  manual:鎵嬪姩  strong:寮虹儓</param>
         private void SendModeComand(string value)
         {
-            if (!device.online)
-            {
-                new Tip()
-                {
-                    CloseTime = 1,
-                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                    Direction = AMPopTipDirection.None,
-                }.Show(MainPage.BaseView);
-                return;
-            }
+            //if (!device.online)
+            //{
+            //    new Tip()
+            //    {
+            //        CloseTime = 1,
+            //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+            //        Direction = AMPopTipDirection.None,
+            //    }.Show(MainPage.BaseView);
+            //    return;
+            //}
             this.btnMode.CanClick = false;
             HdlThreadLogic.Current.RunThread(() =>
             {
@@ -569,16 +569,16 @@
         /// <param name="value">canel:鍙栨秷 1:1灏忔椂 2:2灏忔椂 3:4灏忔椂 4:8灏忔椂</param>
         private void SendTimingComand(string value)
         {
-            if (!device.online)
-            {
-                new Tip()
-                {
-                    CloseTime = 1,
-                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                    Direction = AMPopTipDirection.None,
-                }.Show(MainPage.BaseView);
-                return;
-            }
+            //if (!device.online)
+            //{
+            //    new Tip()
+            //    {
+            //        CloseTime = 1,
+            //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+            //        Direction = AMPopTipDirection.None,
+            //    }.Show(MainPage.BaseView);
+            //    return;
+            //}
             this.btnTime.CanClick = false;
             HdlThreadLogic.Current.RunThread(() =>
             {
@@ -598,16 +598,16 @@
         /// <param name="value">1:浣庢。 2:涓。 3:楂樻。</param>
         private void SendFanSpeedComand(string value)
         {
-            if (!device.online)
-            {
-                new Tip()
-                {
-                    CloseTime = 1,
-                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                    Direction = AMPopTipDirection.None,
-                }.Show(MainPage.BaseView);
-                return;
-            }
+            //if (!device.online)
+            //{
+            //    new Tip()
+            //    {
+            //        CloseTime = 1,
+            //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+            //        Direction = AMPopTipDirection.None,
+            //    }.Show(MainPage.BaseView);
+            //    return;
+            //}
             this.btnFan.CanClick = false;
             HdlThreadLogic.Current.RunThread(() =>
             {
@@ -626,16 +626,16 @@
         /// </summary>
         private void SendSwitchComand()
         {
-            if (!device.online)
-            {
-                new Tip()
-                {
-                    CloseTime = 1,
-                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                    Direction = AMPopTipDirection.None,
-                }.Show(MainPage.BaseView);
-                return;
-            }
+            //if (!device.online)
+            //{
+            //    new Tip()
+            //    {
+            //        CloseTime = 1,
+            //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+            //        Direction = AMPopTipDirection.None,
+            //    }.Show(MainPage.BaseView);
+            //    return;
+            //}
             this.btnPictrue.CanClick = false;
             this.btnSwitch.CanClick = false;
 
@@ -663,16 +663,16 @@
         /// </summary>
         private void SendEnableComand(MostRightIconControl btnSwitch, string sendKey, string value)
         {
-            if (!device.online)
-            {
-                new Tip()
-                {
-                    CloseTime = 1,
-                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                    Direction = AMPopTipDirection.None,
-                }.Show(MainPage.BaseView);
-                return;
-            }
+            //if (!device.online)
+            //{
+            //    new Tip()
+            //    {
+            //        CloseTime = 1,
+            //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+            //        Direction = AMPopTipDirection.None,
+            //    }.Show(MainPage.BaseView);
+            //    return;
+            //}
             if (btnSwitch != null)
             {
                 btnSwitch.CanClick = false;
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaFanPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaFanPage.cs
index df3ecc3..af53681 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaFanPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaFanPage.cs
@@ -99,7 +99,7 @@
             //妗�
             var strView = Language.StringByID(StringId.Gear);
 
-            if (device.online)
+            //if (device.online)
             {
                 seekBarContr.ProgressChangedEvent += (div, value) =>
                 {
@@ -179,16 +179,16 @@
         /// </summary>
         private void SendSwitchComand()
         {
-            if (!device.online)
-            {
-                new Tip()
-                {
-                    CloseTime = 1,
-                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                    Direction = AMPopTipDirection.None,
-                }.Show(MainPage.BaseView);
-                return;
-            }
+            //if (!device.online)
+            //{
+            //    new Tip()
+            //    {
+            //        CloseTime = 1,
+            //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+            //        Direction = AMPopTipDirection.None,
+            //    }.Show(MainPage.BaseView);
+            //    return;
+            //}
             this.btnSwitch.CanClick = false;
 
             string statu = this.btnSwitch.IsSelected == true ? "off" : "on";
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWaterValvePage.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWaterValvePage.cs
index 3d08b88..491651a 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWaterValvePage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWaterValvePage.cs
@@ -167,16 +167,16 @@
         /// </summary>
         private void SendSwitchComand()
         {
-            if (!device.online)
-            {
-                new Tip()
-                {
-                    CloseTime = 1,
-                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                    Direction = AMPopTipDirection.None,
-                }.Show(MainPage.BaseView);
-                return;
-            }
+            //if (!device.online)
+            //{
+            //    new Tip()
+            //    {
+            //        CloseTime = 1,
+            //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+            //        Direction = AMPopTipDirection.None,
+            //    }.Show(MainPage.BaseView);
+            //    return;
+            //}
             this.btnPictrue.CanClick = false;
             this.btnSwitch.CanClick = false;
 
@@ -282,16 +282,16 @@
 
         private void SetControlTime()
         {
-            if (!device.online)
-            {
-                new Tip()
-                {
-                    CloseTime = 1,
-                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                    Direction = AMPopTipDirection.None,
-                }.Show(MainPage.BaseView);
-                return;
-            }
+            //if (!device.online)
+            //{
+            //    new Tip()
+            //    {
+            //        CloseTime = 1,
+            //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+            //        Direction = AMPopTipDirection.None,
+            //    }.Show(MainPage.BaseView);
+            //    return;
+            //}
             var timeControl = new BottomTimeSelectControl();
             timeControl.RowCount = 5;
             timeControl.InitControl(0,0);
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWeepRobotConsumablesMagPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWeepRobotConsumablesMagPage.cs
index 0b3bf1b..524ae5b 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWeepRobotConsumablesMagPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWeepRobotConsumablesMagPage.cs
@@ -86,16 +86,16 @@
             btnSwitch.IsSelected = i_brushStatu;
             btnSwitch.ButtonClickEvent += (sender, e) =>
             {
-                if (!i_device.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!i_device.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 if (btnSwitch.IsSelected == true)
                 {
                     //鍙栨秷鐨勮瘽鐩存帴鍙栨秷
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWeepRobotPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWeepRobotPage.cs
index 1fa0b85..b9b0dc1 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWeepRobotPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWeepRobotPage.cs
@@ -455,16 +455,16 @@
         /// </summary>
         private void SendComand(string key, string i_value)
         {
-            if (!device.online)
-            {
-                new Tip()
-                {
-                    CloseTime = 1,
-                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                    Direction = AMPopTipDirection.None,
-                }.Show(MainPage.BaseView);
-                return;
-            }
+            //if (!device.online)
+            //{
+            //    new Tip()
+            //    {
+            //        CloseTime = 1,
+            //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+            //        Direction = AMPopTipDirection.None,
+            //    }.Show(MainPage.BaseView);
+            //    return;
+            //}
             HdlThreadLogic.Current.RunThread(() =>
             {
                 var dic = new Dictionary<string, string>();
diff --git a/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/A_EnvironmentalDataCenter.cs b/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/A_EnvironmentalDataCenter.cs
index cf7936f..0b08588 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/A_EnvironmentalDataCenter.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/A_EnvironmentalDataCenter.cs
@@ -1,1052 +1,1052 @@
-锘縰sing System;
-using System.Collections.Generic;
-using HDL_ON.DriverLayer;
-using HDL_ON.Entity;
-using HDL_ON.UI.CSS;
-using Shared;
+锘�//using System;
+//using System.Collections.Generic;
+//using HDL_ON.DriverLayer;
+//using HDL_ON.Entity;
+//using HDL_ON.UI.CSS;
+//using Shared;
 
-namespace HDL_ON.UI
-{
-    public class A_EnvironmentalDataCenter : FrameLayout
-    {
+//namespace HDL_ON.UI
+//{
+//    public class A_EnvironmentalDataCenter : FrameLayout
+//    {
 
-        #region 鎺т欢闆嗗悎
-        static A_EnvironmentalDataCenter bodyView;
-        /// <summary>
-        /// 妤煎眰鏄剧ず
-        /// </summary>
-        Button btnRoom;
-        /// <summary>
-        /// 鎴块棿閫夋嫨涓嬫媺鍥炬爣
-        /// </summary>
-        Button btnFoorDownIcon;
-        /// <summary>
-        /// 鎴块棿閫夋嫨瑙﹀彂鍖哄煙
-        /// </summary>
-        Button btnRoomClickRow;
-        /// <summary>
-        /// 浼犳劅鍣ㄥ垪琛ㄥ尯鍩�
-        /// </summary>
-        FrameLayout sensorListView;
+//        #region 鎺т欢闆嗗悎
+//        static A_EnvironmentalDataCenter bodyView;
+//        /// <summary>
+//        /// 妤煎眰鏄剧ず
+//        /// </summary>
+//        Button btnRoom;
+//        /// <summary>
+//        /// 鎴块棿閫夋嫨涓嬫媺鍥炬爣
+//        /// </summary>
+//        Button btnFoorDownIcon;
+//        /// <summary>
+//        /// 鎴块棿閫夋嫨瑙﹀彂鍖哄煙
+//        /// </summary>
+//        Button btnRoomClickRow;
+//        /// <summary>
+//        /// 浼犳劅鍣ㄥ垪琛ㄥ尯鍩�
+//        /// </summary>
+//        FrameLayout sensorListView;
 
-        VerticalScrolViewLayout sensorListContentView;
+//        VerticalScrolViewLayout sensorListContentView;
 
-        /// <summary>
-        /// 澶╂皵鍚嶇О鏂囨湰
-        /// </summary>
-        Button btnWatherText;
-        /// <summary>
-        /// 婀垮害鏁版嵁鏂囨湰
-        /// </summary>
-        Button btnHumidityText;
-        /// <summary>
-        /// pm25鏁版嵁鏂囨湰
-        /// </summary>
-        Button btnPm25Values;
-        /// <summary>
-        /// 椋庨�熸暟鎹枃鏈�
-        /// </summary>
-        Button btnFanSpeedValues;
+//        /// <summary>
+//        /// 澶╂皵鍚嶇О鏂囨湰
+//        /// </summary>
+//        Button btnWatherText;
+//        /// <summary>
+//        /// 婀垮害鏁版嵁鏂囨湰
+//        /// </summary>
+//        Button btnHumidityText;
+//        /// <summary>
+//        /// pm25鏁版嵁鏂囨湰
+//        /// </summary>
+//        Button btnPm25Values;
+//        /// <summary>
+//        /// 椋庨�熸暟鎹枃鏈�
+//        /// </summary>
+//        Button btnFanSpeedValues;
 
 
 
-        List<SensorView> sensorViewList = new List<SensorView>();
-        #endregion
-        #region 鍖哄煙鍙橀噺
-        Room room;
+//        List<SensorView> sensorViewList = new List<SensorView>();
+//        #endregion
+//        #region 鍖哄煙鍙橀噺
+//        Room room;
 
-        Sensor sensorTemp = new Sensor();
-        /// <summary>
-        /// 浼犳劅鍣ㄥ垎绫诲垪琛�
-        /// </summary>
-        Dictionary<string, List<Function>> sensorList = new Dictionary<string, List<Function>>();
-        #endregion
+//        Sensor sensorTemp = new Sensor();
+//        /// <summary>
+//        /// 浼犳劅鍣ㄥ垎绫诲垪琛�
+//        /// </summary>
+//        Dictionary<string, List<Function>> sensorList = new Dictionary<string, List<Function>>();
+//        #endregion
 
 
-        public A_EnvironmentalDataCenter()
-        {
-            bodyView = this;
-        }
+//        public A_EnvironmentalDataCenter()
+//        {
+//            bodyView = this;
+//        }
 
-        /// <summary>
-        /// 鍔犺浇鐣岄潰
-        /// </summary>
-        /// <param name="btnCollectionIcon">鏀惰棌鎸夐挳</param>
-        /// <param name="btnFunctionName">鍔熻兘鍚嶇О淇℃伅鎸夐挳</param>
-        /// <param name="btnFromFloor">鍔熻兘妤煎眰淇℃伅鎸夐挳</param>
-        public void LoadPage()
-        {
-            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
+//        /// <summary>
+//        /// 鍔犺浇鐣岄潰
+//        /// </summary>
+//        /// <param name="btnCollectionIcon">鏀惰棌鎸夐挳</param>
+//        /// <param name="btnFunctionName">鍔熻兘鍚嶇О淇℃伅鎸夐挳</param>
+//        /// <param name="btnFromFloor">鍔熻兘妤煎眰淇℃伅鎸夐挳</param>
+//        public void LoadPage()
+//        {
+//            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
 
-            #region 椤堕儴澶╂皵閮ㄥ垎
-            var topWeatherView = new FrameLayout()
-            {
-                Gravity = Gravity.CenterHorizontal,
-                Y = Application.GetRealHeight(73),
-                Width = Application.GetRealWidth(361),
-                Height = Application.GetRealWidth(166),
-                BackgroundImagePath = "FunctionIcon/EnvirSensor/0.png",
-            };
-            bodyView.AddChidren(topWeatherView);
-            LoadEvent_ChangeWeatherIcon(topWeatherView);
+//            #region 椤堕儴澶╂皵閮ㄥ垎
+//            var topWeatherView = new FrameLayout()
+//            {
+//                Gravity = Gravity.CenterHorizontal,
+//                Y = Application.GetRealHeight(73),
+//                Width = Application.GetRealWidth(361),
+//                Height = Application.GetRealWidth(166),
+//                BackgroundImagePath = "FunctionIcon/EnvirSensor/0.png",
+//            };
+//            bodyView.AddChidren(topWeatherView);
+//            LoadEvent_ChangeWeatherIcon(topWeatherView);
 
-            var btnLocationText = new Button()
-            {
-                X = Application.GetRealWidth(27),
-                Width = Application.GetRealWidth(74),
-                Height = Application.GetRealWidth(44),
-                TextAlignment = TextAlignment.CenterLeft,
-                TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
-                TextColor = CSS_Color.FirstLevelTitleColor,
-                Text = MainPage.cityInfo.location,
-            };
-            topWeatherView.AddChidren(btnLocationText);
+//            var btnLocationText = new Button()
+//            {
+//                X = Application.GetRealWidth(27),
+//                Width = Application.GetRealWidth(74),
+//                Height = Application.GetRealWidth(44),
+//                TextAlignment = TextAlignment.CenterLeft,
+//                TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+//                TextColor = CSS_Color.FirstLevelTitleColor,
+//                Text = MainPage.cityInfo.location,
+//            };
+//            topWeatherView.AddChidren(btnLocationText);
 
 
-            var btnTemp = new Button()
-            {
-                X = Application.GetRealWidth(21),
-                Y = Application.GetRealWidth(53),
-                Width = Application.GetRealWidth(78),
-                Height = Application.GetRealWidth(68),
-                TextSize = 60,
-                IsBold = true,
-                TextAlignment = TextAlignment.CenterLeft,
-                TextColor = CSS_Color.FirstLevelTitleColor,
-                Text = MainPage.cityInfo.temperature,
-            };
-            topWeatherView.AddChidren(btnTemp);
+//            var btnTemp = new Button()
+//            {
+//                X = Application.GetRealWidth(21),
+//                Y = Application.GetRealWidth(53),
+//                Width = Application.GetRealWidth(78),
+//                Height = Application.GetRealWidth(68),
+//                TextSize = 60,
+//                IsBold = true,
+//                TextAlignment = TextAlignment.CenterLeft,
+//                TextColor = CSS_Color.FirstLevelTitleColor,
+//                Text = MainPage.cityInfo.temperature,
+//            };
+//            topWeatherView.AddChidren(btnTemp);
 
-            var btnTempUint = new Button()
-            {
-                X = Application.GetRealWidth(109),
-                Y = Application.GetRealWidth(60),
-                Width = Application.GetRealWidth(20),
-                Height = Application.GetRealWidth(20),
-                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                TextColor = CSS_Color.TextualColor,
-                Text = "掳C",
-            };
-            topWeatherView.AddChidren(btnTempUint);
+//            var btnTempUint = new Button()
+//            {
+//                X = Application.GetRealWidth(109),
+//                Y = Application.GetRealWidth(60),
+//                Width = Application.GetRealWidth(20),
+//                Height = Application.GetRealWidth(20),
+//                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+//                TextColor = CSS_Color.TextualColor,
+//                Text = "掳C",
+//            };
+//            topWeatherView.AddChidren(btnTempUint);
 
 
-            btnWatherText = new Button()
-            {
-                X = Application.GetRealWidth(109),
-                Y = Application.GetRealWidth(82),
-                Width = Application.GetRealWidth(200),
-                Height = Application.GetRealWidth(20),
-                TextColor = CSS_Color.TextualColor,
-                TextSize = CSS_FontSize.TextFontSize,
-                TextAlignment = TextAlignment.CenterLeft,
-                Text = MainPage.cityInfo.weather
-            };
-            topWeatherView.AddChidren(btnWatherText);
+//            btnWatherText = new Button()
+//            {
+//                X = Application.GetRealWidth(109),
+//                Y = Application.GetRealWidth(82),
+//                Width = Application.GetRealWidth(200),
+//                Height = Application.GetRealWidth(20),
+//                TextColor = CSS_Color.TextualColor,
+//                TextSize = CSS_FontSize.TextFontSize,
+//                TextAlignment = TextAlignment.CenterLeft,
+//                Text = MainPage.cityInfo.weather
+//            };
+//            topWeatherView.AddChidren(btnWatherText);
 
-            var btnTempUpperLimit = new Button()
-            {
-                X = Application.GetRealWidth(107),
-                Y = Application.GetRealWidth(101),
-                Width = Application.GetRealWidth(16),
-                Height = Application.GetRealWidth(16),
-                UnSelectedImagePath = "FunctionIcon/EnvirSensor/UpperLimit.png",
-            };
-            topWeatherView.AddChidren(btnTempUpperLimit);
+//            var btnTempUpperLimit = new Button()
+//            {
+//                X = Application.GetRealWidth(107),
+//                Y = Application.GetRealWidth(101),
+//                Width = Application.GetRealWidth(16),
+//                Height = Application.GetRealWidth(16),
+//                UnSelectedImagePath = "FunctionIcon/EnvirSensor/UpperLimit.png",
+//            };
+//            topWeatherView.AddChidren(btnTempUpperLimit);
 
-            var btnTempUpperLimitText = new Button()
-            {
-                X = btnTempUpperLimit.Right,
-                Y = Application.GetRealWidth(101),
-                Width = Application.GetRealWidth(42),
-                Height = Application.GetRealWidth(20),
-                TextColor = CSS_Color.TextualColor,
-                TextAlignment = TextAlignment.CenterLeft,
-                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                Text = $"{MainPage.cityInfo.highestTemperature}掳C",
-            };
-            topWeatherView.AddChidren(btnTempUpperLimitText);
+//            var btnTempUpperLimitText = new Button()
+//            {
+//                X = btnTempUpperLimit.Right,
+//                Y = Application.GetRealWidth(101),
+//                Width = Application.GetRealWidth(42),
+//                Height = Application.GetRealWidth(20),
+//                TextColor = CSS_Color.TextualColor,
+//                TextAlignment = TextAlignment.CenterLeft,
+//                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+//                Text = $"{MainPage.cityInfo.highestTemperature}掳C",
+//            };
+//            topWeatherView.AddChidren(btnTempUpperLimitText);
 
-            var btnTempLowerLimit = new Button()
-            {
-                X = Application.GetRealWidth(156),
-                Y = Application.GetRealWidth(101),
-                Width = Application.GetRealWidth(16),
-                Height = Application.GetRealWidth(16),
-                UnSelectedImagePath = "FunctionIcon/EnvirSensor/LowerLimit.png",
-            };
-            topWeatherView.AddChidren(btnTempLowerLimit);
+//            var btnTempLowerLimit = new Button()
+//            {
+//                X = Application.GetRealWidth(156),
+//                Y = Application.GetRealWidth(101),
+//                Width = Application.GetRealWidth(16),
+//                Height = Application.GetRealWidth(16),
+//                UnSelectedImagePath = "FunctionIcon/EnvirSensor/LowerLimit.png",
+//            };
+//            topWeatherView.AddChidren(btnTempLowerLimit);
 
-            var btnTempLowerLimitText = new Button()
-            {
-                X = btnTempLowerLimit.Right,
-                Y = Application.GetRealWidth(101),
-                Width = Application.GetRealWidth(42),
-                Height = Application.GetRealWidth(20),
-                TextColor = CSS_Color.TextualColor,
-                TextAlignment = TextAlignment.CenterLeft,
-                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                Text = $"{MainPage.cityInfo.lowestTemperature}掳C",
-            };
-            topWeatherView.AddChidren(btnTempLowerLimitText);
+//            var btnTempLowerLimitText = new Button()
+//            {
+//                X = btnTempLowerLimit.Right,
+//                Y = Application.GetRealWidth(101),
+//                Width = Application.GetRealWidth(42),
+//                Height = Application.GetRealWidth(20),
+//                TextColor = CSS_Color.TextualColor,
+//                TextAlignment = TextAlignment.CenterLeft,
+//                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+//                Text = $"{MainPage.cityInfo.lowestTemperature}掳C",
+//            };
+//            topWeatherView.AddChidren(btnTempLowerLimitText);
 
 
-            var btnValue = new Button()
-            {
-                X = Application.GetRealWidth(27),
-                Y = Application.GetRealWidth(119),
-                Width = Application.GetRealWidth(300),
-                Height = Application.GetRealWidth(34),
-                TextAlignment = TextAlignment.CenterLeft,
-                TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
-                TextColor = CSS_Color.TextualColor,
-            };
-            topWeatherView.AddChidren(btnValue);
-            var valueText = Language.StringByID(StringId.EnvirSensorValueTip);
-            btnValue.Text = valueText.Replace("{0}", $"{MainPage.cityInfo.humidity}").Replace("{1}", $"{MainPage.cityInfo.pm25}").Replace("{2}", $"{MainPage.cityInfo.windLevel}");
-            #endregion
+//            var btnValue = new Button()
+//            {
+//                X = Application.GetRealWidth(27),
+//                Y = Application.GetRealWidth(119),
+//                Width = Application.GetRealWidth(300),
+//                Height = Application.GetRealWidth(34),
+//                TextAlignment = TextAlignment.CenterLeft,
+//                TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+//                TextColor = CSS_Color.TextualColor,
+//            };
+//            topWeatherView.AddChidren(btnValue);
+//            var valueText = Language.StringByID(StringId.EnvirSensorValueTip);
+//            btnValue.Text = valueText.Replace("{0}", $"{MainPage.cityInfo.humidity}").Replace("{1}", $"{MainPage.cityInfo.pm25}").Replace("{2}", $"{MainPage.cityInfo.windLevel}");
+//            #endregion
 
-            #region contentView
-            FrameLayout contentView = new FrameLayout()
-            {
-                Gravity = Gravity.CenterHorizontal,
-                Y = Application.GetRealWidth(239),
-                Height = Application.GetRealHeight(450),
-            };
-            bodyView.AddChidren(contentView);
+//            #region contentView
+//            FrameLayout contentView = new FrameLayout()
+//            {
+//                Gravity = Gravity.CenterHorizontal,
+//                Y = Application.GetRealWidth(239),
+//                Height = Application.GetRealHeight(450),
+//            };
+//            bodyView.AddChidren(contentView);
 
-            #region 鎴块棿椤堕儴鍒囨崲鏄剧ず鍖哄煙
-            room = new Room() { roomName = Language.StringByID(StringId.All) };
-            btnFoorDownIcon = new Button()
-            {
-                Width = Application.GetMinRealAverage(16),
-                Height = Application.GetMinRealAverage(16),
-                X = Application.GetRealWidth(16),
-                Y = Application.GetRealHeight(18),
-                UnSelectedImagePath = "Public/DownIcon.png",
-            };
-            contentView.AddChidren(btnFoorDownIcon);
+//            #region 鎴块棿椤堕儴鍒囨崲鏄剧ず鍖哄煙
+//            room = new Room() { roomName = Language.StringByID(StringId.All) };
+//            btnFoorDownIcon = new Button()
+//            {
+//                Width = Application.GetMinRealAverage(16),
+//                Height = Application.GetMinRealAverage(16),
+//                X = Application.GetRealWidth(16),
+//                Y = Application.GetRealHeight(18),
+//                UnSelectedImagePath = "Public/DownIcon.png",
+//            };
+//            contentView.AddChidren(btnFoorDownIcon);
 
-            btnRoom = new Button()
-            {
-                X = btnFoorDownIcon.Right,
-                Y = Application.GetRealHeight(18),
-                Width = Application.GetRealWidth(200),
-                Height = Application.GetMinRealAverage(16),
-                TextColor = CSS_Color.FirstLevelTitleColor,
-                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                TextAlignment = TextAlignment.CenterLeft,
-                Text = room.roomName,
-            };
-            contentView.AddChidren(btnRoom);
+//            btnRoom = new Button()
+//            {
+//                X = btnFoorDownIcon.Right,
+//                Y = Application.GetRealHeight(18),
+//                Width = Application.GetRealWidth(200),
+//                Height = Application.GetMinRealAverage(16),
+//                TextColor = CSS_Color.FirstLevelTitleColor,
+//                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+//                TextAlignment = TextAlignment.CenterLeft,
+//                Text = room.roomName,
+//            };
+//            contentView.AddChidren(btnRoom);
 
-            btnRoomClickRow = new Button()
-            {
-                Height = Application.GetRealHeight(40),
-            };
-            contentView.AddChidren(btnRoomClickRow);
+//            btnRoomClickRow = new Button()
+//            {
+//                Height = Application.GetRealHeight(40),
+//            };
+//            contentView.AddChidren(btnRoomClickRow);
 
-            #endregion
-            sensorListContentView = new VerticalScrolViewLayout()
-            {
-                Gravity = Gravity.CenterHorizontal,
-                Y = Application.GetRealHeight(50),
-                Height = Application.GetRealHeight(400),
-                Radius = (uint)Application.GetRealWidth(12),
-                BorderColor = 0x00000000,
-                BorderWidth = 0,
-            };
-            contentView.AddChidren(sensorListContentView);
-            sensorListView = new FrameLayout();
-            sensorListContentView.AddChidren(sensorListView);
+//            #endregion
+//            sensorListContentView = new VerticalScrolViewLayout()
+//            {
+//                Gravity = Gravity.CenterHorizontal,
+//                Y = Application.GetRealHeight(50),
+//                Height = Application.GetRealHeight(400),
+//                Radius = (uint)Application.GetRealWidth(12),
+//                BorderColor = 0x00000000,
+//                BorderWidth = 0,
+//            };
+//            contentView.AddChidren(sensorListContentView);
+//            sensorListView = new FrameLayout();
+//            sensorListContentView.AddChidren(sensorListView);
 
-            LoadSenesorList();
+//            LoadSenesorList();
 
 
 
-            #endregion
+//            #endregion
 
-            //LoadEventList();
-            LoadDialog_ChangeRoom();
+//            //LoadEventList();
+//            LoadDialog_ChangeRoom();
 
-            new TopViewDiv(bodyView, Language.StringByID(StringId.EnvironmentalScience)).LoadTopView();
+//            new TopViewDiv(bodyView, Language.StringByID(StringId.EnvironmentalScience)).LoadTopView();
 
-        }
+//        }
 
-        /// <summary>
-        /// 鍔犺浇浼犳劅鍣ㄥ垪琛�
-        /// </summary>
-        void LoadSenesorList()
-        {
-            sensorListView.RemoveAll();
-            sensorViewList.Clear();
+//        /// <summary>
+//        /// 鍔犺浇浼犳劅鍣ㄥ垪琛�
+//        /// </summary>
+//        void LoadSenesorList()
+//        {
+//            sensorListView.RemoveAll();
+//            sensorViewList.Clear();
 
-            sensorList = new Dictionary<string, List<Function>>();
-            int index = 0;
-            foreach (var sensor in FunctionList.List.GetEnvirSensorsList())
-            {
-                foreach (var sensorAttr in sensor.attributes)
-                {
-                    if (SPK.EnvironSpkList().Contains(sensorAttr.key) || sensorAttr.key == "value")
-                    {
-                        var flag = sensorAttr.key;
-                        if (flag == "value")
-                        {
-                            flag = sensor.spk.Replace("sensor.", "");
-                        }
-                        var newTemp = new Function()
-                        {
-                            name = sensor.name,
-                            sid = sensor.sid,
-                            deviceId = sensor.deviceId,
-                            roomIds = sensor.roomIds,
-                            spk = "sensor."+ flag,
-                            attributes = new List<FunctionAttributes> { new FunctionAttributes { key = "value", state = sensorAttr.state, curValue = sensorAttr.curValue }
-                            , new FunctionAttributes {key = "spk",state = sensorAttr.key,curValue = sensorAttr.key } }
-                        };
-                        //鍒嗙被鍔犲叆闆嗗悎
-                        if (sensorList.ContainsKey(flag))
-                        {
-                            sensorList[flag].Add(newTemp);
-                        }
-                        else
-                        {
-                            sensorList.Add(flag, new List<Function>() { newTemp });
-                        }
-                    }
-                }
+//            sensorList = new Dictionary<string, List<Function>>();
+//            int index = 0;
+//            foreach (var sensor in FunctionList.List.GetEnvirSensorsList())
+//            {
+//                foreach (var sensorAttr in sensor.attributes)
+//                {
+//                    if (SPK.EnvironSpkList().Contains(sensorAttr.key) || sensorAttr.key == "value")
+//                    {
+//                        var flag = sensorAttr.key;
+//                        if (flag == "value")
+//                        {
+//                            flag = sensor.spk.Replace("sensor.", "");
+//                        }
+//                        var newTemp = new Function()
+//                        {
+//                            name = sensor.name,
+//                            sid = sensor.sid,
+//                            deviceId = sensor.deviceId,
+//                            roomIds = sensor.roomIds,
+//                            spk = "sensor."+ flag,
+//                            attributes = new List<FunctionAttributes> { new FunctionAttributes { key = "value", state = sensorAttr.state, curValue = sensorAttr.curValue }
+//                            , new FunctionAttributes {key = "spk",state = sensorAttr.key,curValue = sensorAttr.key } }
+//                        };
+//                        //鍒嗙被鍔犲叆闆嗗悎
+//                        if (sensorList.ContainsKey(flag))
+//                        {
+//                            sensorList[flag].Add(newTemp);
+//                        }
+//                        else
+//                        {
+//                            sensorList.Add(flag, new List<Function>() { newTemp });
+//                        }
+//                    }
+//                }
 
-                new System.Threading.Thread(() =>
-                {
-                    Control.Ins.SendReadCommand(sensor);
-                })
-                { IsBackground = true }.Start();
-            }
+//                new System.Threading.Thread(() =>
+//                {
+//                    Control.Ins.SendReadCommand(sensor);
+//                })
+//                { IsBackground = true }.Start();
+//            }
 
 
-            foreach(var sensorAssemble in sensorList)
-            {
-                var showList = sensorAssemble.Value;
-                if(room.roomId != "")
-                {
-                    showList = sensorAssemble.Value.FindAll((obj) => obj.roomIds.Contains(room.roomId));
-                }
-                if (showList != null && showList.Count > 0)
-                {
-                    var sensorView = new SensorView(showList,index);
-                    sensorListView.AddChidren(sensorView);
-                    sensorViewList.Add(sensorView);
-                    sensorView.LoadView();
+//            foreach(var sensorAssemble in sensorList)
+//            {
+//                var showList = sensorAssemble.Value;
+//                if(room.roomId != "")
+//                {
+//                    showList = sensorAssemble.Value.FindAll((obj) => obj.roomIds.Contains(room.roomId));
+//                }
+//                if (showList != null && showList.Count > 0)
+//                {
+//                    var sensorView = new SensorView(showList,index);
+//                    sensorListView.AddChidren(sensorView);
+//                    sensorViewList.Add(sensorView);
+//                    sensorView.LoadView();
 
-                    index++;
-                }
-            }
-            sensorListView.Height = Application.GetRealWidth(124 * (index + 1) / 2);
-        }
+//                    index++;
+//                }
+//            }
+//            sensorListView.Height = Application.GetRealWidth(124 * (index + 1) / 2);
+//        }
 
 
-        /// <summary>
-        /// 鎴块棿鍒楄〃鐐瑰嚮浜嬩欢
-        /// </summary>
-        void LoadDialog_ChangeRoom()
-        {
-            EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
-            {
-                var dialog = new Dialog();
-                var dialogBody = new FrameLayout();
-                dialog.AddChidren(dialogBody);
-                dialogBody.MouseUpEventHandler += (sender1, e1) =>
-                {
-                    dialog.Close();
-                };
+//        /// <summary>
+//        /// 鎴块棿鍒楄〃鐐瑰嚮浜嬩欢
+//        /// </summary>
+//        void LoadDialog_ChangeRoom()
+//        {
+//            EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+//            {
+//                var dialog = new Dialog();
+//                var dialogBody = new FrameLayout();
+//                dialog.AddChidren(dialogBody);
+//                dialogBody.MouseUpEventHandler += (sender1, e1) =>
+//                {
+//                    dialog.Close();
+//                };
 
-                var dispalyView = new FrameLayout()
-                {
-                    X = Application.GetRealWidth(10),
-                    Y = Application.GetRealHeight(266),
-                    Width = Application.GetRealWidth(160),
-                    Height = Application.GetRealHeight(110),
-                    BackgroundImagePath = "PersonalCenter/HomeList1bg.png",
-                };
-                dialogBody.AddChidren(dispalyView);
+//                var dispalyView = new FrameLayout()
+//                {
+//                    X = Application.GetRealWidth(10),
+//                    Y = Application.GetRealHeight(266),
+//                    Width = Application.GetRealWidth(160),
+//                    Height = Application.GetRealHeight(110),
+//                    BackgroundImagePath = "PersonalCenter/HomeList1bg.png",
+//                };
+//                dialogBody.AddChidren(dispalyView);
 
-                var contentView = new VerticalScrolViewLayout()
-                {
-                    X = Application.GetRealWidth(8),
-                    Y = Application.GetRealHeight(15),
-                    Width = Application.GetRealWidth(150),
-                    Height = Application.GetRealHeight(45 * 2),
-                    ScrollEnabled = false
-                };
-                dispalyView.AddChidren(contentView);
+//                var contentView = new VerticalScrolViewLayout()
+//                {
+//                    X = Application.GetRealWidth(8),
+//                    Y = Application.GetRealHeight(15),
+//                    Width = Application.GetRealWidth(150),
+//                    Height = Application.GetRealHeight(45 * 2),
+//                    ScrollEnabled = false
+//                };
+//                dispalyView.AddChidren(contentView);
 
-                if (SpatialInfo.CurrentSpatial.RoomList.Count < 2)
-                {
-                }
-                else if (SpatialInfo.CurrentSpatial.RoomList.Count < 3)
-                {
-                    dispalyView = new FrameLayout()
-                    {
-                        X = Application.GetRealWidth(10),
-                        Y = Application.GetRealHeight(266),
-                        Width = Application.GetRealWidth(160),
-                        Height = Application.GetRealHeight(155),
-                        BackgroundImagePath = "PersonalCenter/HomeList2bg.png",
-                    };
-                    dialogBody.AddChidren(dispalyView);
+//                if (SpatialInfo.CurrentSpatial.RoomList.Count < 2)
+//                {
+//                }
+//                else if (SpatialInfo.CurrentSpatial.RoomList.Count < 3)
+//                {
+//                    dispalyView = new FrameLayout()
+//                    {
+//                        X = Application.GetRealWidth(10),
+//                        Y = Application.GetRealHeight(266),
+//                        Width = Application.GetRealWidth(160),
+//                        Height = Application.GetRealHeight(155),
+//                        BackgroundImagePath = "PersonalCenter/HomeList2bg.png",
+//                    };
+//                    dialogBody.AddChidren(dispalyView);
 
-                    contentView.Height = Application.GetRealHeight(45 * 3);
-                    dispalyView.AddChidren(contentView);
-                }
-                else if (SpatialInfo.CurrentSpatial.RoomList.Count < 4)
-                {
-                    dispalyView = new FrameLayout()
-                    {
-                        X = Application.GetRealWidth(10),
-                        Y = Application.GetRealHeight(266),
-                        Width = Application.GetRealWidth(160),
-                        Height = Application.GetRealHeight(200),
-                        BackgroundImagePath = "PersonalCenter/HomeList3bg.png",
-                    };
-                    dialogBody.AddChidren(dispalyView);
+//                    contentView.Height = Application.GetRealHeight(45 * 3);
+//                    dispalyView.AddChidren(contentView);
+//                }
+//                else if (SpatialInfo.CurrentSpatial.RoomList.Count < 4)
+//                {
+//                    dispalyView = new FrameLayout()
+//                    {
+//                        X = Application.GetRealWidth(10),
+//                        Y = Application.GetRealHeight(266),
+//                        Width = Application.GetRealWidth(160),
+//                        Height = Application.GetRealHeight(200),
+//                        BackgroundImagePath = "PersonalCenter/HomeList3bg.png",
+//                    };
+//                    dialogBody.AddChidren(dispalyView);
 
-                    contentView.Height = Application.GetRealHeight(45 * 4);
-                    dispalyView.AddChidren(contentView);
-                }
-                else
-                {
-                    dispalyView = new FrameLayout()
-                    {
-                        X = Application.GetRealWidth(10),
-                        Y = Application.GetRealHeight(266),
-                        Width = Application.GetRealWidth(160),
-                        Height = Application.GetRealHeight(245),
-                        BackgroundImagePath = "PersonalCenter/HomeList4bg.png",
-                    };
-                    dialogBody.AddChidren(dispalyView);
+//                    contentView.Height = Application.GetRealHeight(45 * 4);
+//                    dispalyView.AddChidren(contentView);
+//                }
+//                else
+//                {
+//                    dispalyView = new FrameLayout()
+//                    {
+//                        X = Application.GetRealWidth(10),
+//                        Y = Application.GetRealHeight(266),
+//                        Width = Application.GetRealWidth(160),
+//                        Height = Application.GetRealHeight(245),
+//                        BackgroundImagePath = "PersonalCenter/HomeList4bg.png",
+//                    };
+//                    dialogBody.AddChidren(dispalyView);
 
-                    contentView.Height = Application.GetRealHeight(45 * 5);
-                    contentView.ScrollEnabled = true;
-                    dispalyView.AddChidren(contentView);
-                }
+//                    contentView.Height = Application.GetRealHeight(45 * 5);
+//                    contentView.ScrollEnabled = true;
+//                    dispalyView.AddChidren(contentView);
+//                }
 
 
-                var showListRoom = new List<Room>();
-                showListRoom.Add(new Room() { roomName = Language.StringByID(StringId.All) });
-                showListRoom.AddRange(SpatialInfo.CurrentSpatial.RoomList);
+//                var showListRoom = new List<Room>();
+//                showListRoom.Add(new Room() { roomName = Language.StringByID(StringId.All) });
+//                showListRoom.AddRange(SpatialInfo.CurrentSpatial.RoomList);
 
-                foreach (var roomTemp in showListRoom)
-                {
-                    string roomName = roomTemp.roomName;
-                    var btnRoomName = new Button()
-                    {
-                        Gravity = Gravity.CenterHorizontal,
-                        Width = Application.GetRealWidth(112),
-                        Height = Application.GetRealHeight(44),
-                        TextAlignment = TextAlignment.CenterLeft,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        SelectedTextColor = CSS_Color.MainColor,
-                        Text = roomName,
-                        TextSize = CSS_FontSize.SubheadingFontSize,
-                        IsSelected = btnRoom.Text == roomName,
-                        IsMoreLines = true,
-                        Tag = roomName
-                    };
-                    contentView.AddChidren(btnRoomName);
+//                foreach (var roomTemp in showListRoom)
+//                {
+//                    string roomName = roomTemp.roomName;
+//                    var btnRoomName = new Button()
+//                    {
+//                        Gravity = Gravity.CenterHorizontal,
+//                        Width = Application.GetRealWidth(112),
+//                        Height = Application.GetRealHeight(44),
+//                        TextAlignment = TextAlignment.CenterLeft,
+//                        TextColor = CSS_Color.FirstLevelTitleColor,
+//                        SelectedTextColor = CSS_Color.MainColor,
+//                        Text = roomName,
+//                        TextSize = CSS_FontSize.SubheadingFontSize,
+//                        IsSelected = btnRoom.Text == roomName,
+//                        IsMoreLines = true,
+//                        Tag = roomName
+//                    };
+//                    contentView.AddChidren(btnRoomName);
 
-                    btnRoomName.MouseUpEventHandler += (senderH, en) =>
-                    {
-                        dialog.Close();
-                        btnRoom.Text = roomName;
-                        room = roomTemp;
-                        LoadSenesorList();
-                    };
-                }
+//                    btnRoomName.MouseUpEventHandler += (senderH, en) =>
+//                    {
+//                        dialog.Close();
+//                        btnRoom.Text = roomName;
+//                        room = roomTemp;
+//                        LoadSenesorList();
+//                    };
+//                }
 
-                dialog.Show();
-            };
+//                dialog.Show();
+//            };
 
-            btnRoomClickRow.MouseUpEventHandler = eventHandler;
-            //btnFoorDownIcon.MouseUpEventHandler = eventHandler;
-        }
+//            btnRoomClickRow.MouseUpEventHandler = eventHandler;
+//            //btnFoorDownIcon.MouseUpEventHandler = eventHandler;
+//        }
 
 
 
 
 
-        #region event
+//        #region event
 
-        public static void LoadEvent_UpdataStatus(Function updateTemp)
-        {
-            Application.RunOnMainThread(() =>
-            {
-                try
-                {
-                    if (bodyView != null)
-                    {
-                        foreach (var sensorAttr in updateTemp.attributes)
-                        {
-                            if (SPK.EnvironSpkList().Contains(sensorAttr.key) || sensorAttr.key == "value")
-                            {
-                                var flag = sensorAttr.key;
-                                if (flag == "value")
-                                {
-                                    flag = updateTemp.spk.Replace("sensor.", "");
-                                }
+//        public static void LoadEvent_UpdataStatus(Function updateTemp)
+//        {
+//            Application.RunOnMainThread(() =>
+//            {
+//                try
+//                {
+//                    if (bodyView != null)
+//                    {
+//                        foreach (var sensorAttr in updateTemp.attributes)
+//                        {
+//                            if (SPK.EnvironSpkList().Contains(sensorAttr.key) || sensorAttr.key == "value")
+//                            {
+//                                var flag = sensorAttr.key;
+//                                if (flag == "value")
+//                                {
+//                                    flag = updateTemp.spk.Replace("sensor.", "");
+//                                }
 
-                                foreach (var view in bodyView.sensorViewList)
-                                {
-                                    if (view.Tag.ToString() == flag)
-                                    {
-                                        view.UpdataStatus(flag,updateTemp.sid, sensorAttr.state);
-                                    }
-                                }
+//                                foreach (var view in bodyView.sensorViewList)
+//                                {
+//                                    if (view.Tag.ToString() == flag)
+//                                    {
+//                                        view.UpdataStatus(flag,updateTemp.sid, sensorAttr.state);
+//                                    }
+//                                }
 
-                            }
-                        }
+//                            }
+//                        }
 
-                    }
-                }
-                catch (Exception ex)
-                {
-                    MainPage.Log($"鏇存柊鐜浼犳劅鍣ㄧ晫闈㈠紓甯�:{ex.Message}");
-                }
-            });
-        }
+//                    }
+//                }
+//                catch (Exception ex)
+//                {
+//                    MainPage.Log($"鏇存柊鐜浼犳劅鍣ㄧ晫闈㈠紓甯�:{ex.Message}");
+//                }
+//            });
+//        }
 
-        void LoadEvent_ChangeWeatherIcon(FrameLayout view)
-        {
+//        void LoadEvent_ChangeWeatherIcon(FrameLayout view)
+//        {
 
-            switch (MainPage.cityInfo.weather)
-            {
-                case "鏅�":
-                case "Sunny":
-                case "鏅村ぉ":
-                case "澶╂櫞":
-                case "Clear":
-                case "澶ч儴鏅存湕":
-                case "Mostly Sunny":
-                case "鏅存檪澶氶洸":
-                case "闄藉厜鍏呮矝":
-                case "Mostly Clear":
-                    view.BackgroundImagePath = "FunctionIcon/EnvirSensor/0.png";
-                    break;
-                case "澶氫簯":
-                case "Cloudy":
-                case "澶氶洸":
-                case "灏戜簯":
-                case "Partly Cloudy":
-                case "灏戦洸":
-                    view.BackgroundImagePath = "FunctionIcon/EnvirSensor/1.png";
-                    break;
-                case "闃�":
-                case "Overcast":
-                case "闄板ぉ":
-                    view.BackgroundImagePath = "FunctionIcon/EnvirSensor/2.png";
-                    break;
-                case "闃甸洦":
-                case "Showers":
-                case "闄i洦":
-                case "椹熼洦":
-                case "灞�閮ㄩ樀闆�":
-                case "Scattered Showers":
-                case "灞�鍦伴櫍闆�":
-                case "灞�閮ㄥ湴鍗�鎬ч闆�":
-                case "灏忛樀闆�":
-                case "Light Showers":
-                case "灏忛櫍闆�":
-                case "闆舵暎椹熼洦":
-                case "寮洪樀闆�":
-                case "Heavy Showers":
-                case "寮烽櫍闆�":
-                case "闁撲腑鏈夐闆�":
-                    view.BackgroundImagePath = "FunctionIcon/EnvirSensor/3.png";
-                    break;
-                case "闃甸洩":
-                case "Snow Showers":
-                case "闄i洩":
-                case "椹熼洩":
-                case "灏忛樀闆�":
-                case "Light Snow Showers":
-                case "灏忛櫍闆�":
-                case "闆舵暎椹熼洩":
-                    view.BackgroundImagePath = "FunctionIcon/EnvirSensor/13.png";
-                    break;
-                case "闆�":
-                case "Fog":
-                case "闇�":
-                case "钖勯湩":
-                case "鍐婚浘":
-                case "Freezing Fog":
-                case "鍑嶉湩":
-                    view.BackgroundImagePath = "FunctionIcon/EnvirSensor/18.png";
-                    break;
-                case "娌欏皹鏆�":
-                case "Sandstorm":
-                case "娌欏〉鏆�":
-                case "寮烘矙灏樻毚":
-                case "Heavy Sandstorm":
-                case "寮锋矙濉垫毚":
-                    view.BackgroundImagePath = "FunctionIcon/EnvirSensor/20.png";
-                    break;
-                case "娴皹":
-                case "Dust":
-                case "娴〉":
-                case "灏樺嵎椋�":
-                case "Dust Storm":
-                case "濉垫嵅棰�":
-                case "鎵矙":
-                case "Sand":
-                case "鎻氭矙":
-                    view.BackgroundImagePath = "FunctionIcon/EnvirSensor/29.png";
-                    break;
-                case "闇�":
-                case "Haze":
-                case "鐓欓湠":
-                    view.BackgroundImagePath = "FunctionIcon/EnvirSensor/45.png";
-                    break;
-                case "闆烽樀闆�":
-                case "Thundershower":
-                case "闆烽櫍闆�":
-                case "闆烽洦":
-                case "闆风數":
-                case "Lightning":
-                case "闆烽浕":
-                case "闆锋毚":
-                case "Thunderstorm":
-                    view.BackgroundImagePath = "FunctionIcon/EnvirSensor/4.png";
-                    break;
-                case "闆烽樀闆ㄤ即鏈夊啺闆�":
-                case "Thundershower with Hail":
-                case "闆烽櫍闆ㄤ即鏈夊啺闆�":
-                case "闆烽洦浼存湁鍐伴浌":
-                case "鍐伴浌":
-                case "Hail":
-                case "鍐伴拡":
-                case "Needle Ice":
-                case "鍐伴嚌":
-                case "鍐扮矑":
-                case "Icy":
-                    view.BackgroundImagePath = "FunctionIcon/EnvirSensor/5.png";
-                    break;
-                case "闆ㄥす闆�":
-                case "Sleet":
-                case "闆ㄥぞ闆�":
-                    view.BackgroundImagePath = "FunctionIcon/EnvirSensor/6.png";
-                    break;
-                case "灏忛洦":
-                case "Light Rain":
-                    view.BackgroundImagePath = "FunctionIcon/EnvirSensor/3.png";
-                    break;
-                case "涓洦":
-                case "Rain":
-                case "灏忓埌涓洦":
-                case "闆�":
-                    view.BackgroundImagePath = "FunctionIcon/EnvirSensor/3.png";
-                    break;
-                case "澶ч洦":
-                case "Heavy Rain":
-                case "涓埌澶ч洦":
-                    view.BackgroundImagePath = "FunctionIcon/EnvirSensor/3.png";
-                    break;
-                case "鏆撮洦":
-                case "Rainstorm":
-                case "璞洦":
-                case "澶ф毚闆�":
-                case "Heavy Rainstorm":
-                case "澶ц豹闆�":
-                case "鐗瑰ぇ鏆撮洦":
-                case "Extreme Rainstorm":
-                case "瓒呭ぇ璞洦":
-                case "澶у埌鏆撮洦":
-                    view.BackgroundImagePath = "FunctionIcon/EnvirSensor/3.png";
-                    break;
-                case "灏忛洩":
-                case "Light Snow":
-                    view.BackgroundImagePath = "FunctionIcon/EnvirSensor/13.png";
-                    break;
-                case "闆�":
-                case "涓洩":
-                case "灏忓埌涓洩":
-                case "Snow":
-                    view.BackgroundImagePath = "FunctionIcon/EnvirSensor/13.png";
-                    break;
-                case "澶ч洩":
-                case "Heavy Snow":
-                    view.BackgroundImagePath = "FunctionIcon/EnvirSensor/13.png";
-                    break;
-                case "鏆撮洩":
-                case "Blizzard":
-                    view.BackgroundImagePath = "FunctionIcon/EnvirSensor/13.png";
-                    break;
-                case "鍐婚洦":
-                case "Freezing Rain":
-                case "鍑嶉洦":
-                    view.BackgroundImagePath = "FunctionIcon/EnvirSensor/6.png";
-                    break;
-            }
-        }
+//            switch (MainPage.cityInfo.weather)
+//            {
+//                case "鏅�":
+//                case "Sunny":
+//                case "鏅村ぉ":
+//                case "澶╂櫞":
+//                case "Clear":
+//                case "澶ч儴鏅存湕":
+//                case "Mostly Sunny":
+//                case "鏅存檪澶氶洸":
+//                case "闄藉厜鍏呮矝":
+//                case "Mostly Clear":
+//                    view.BackgroundImagePath = "FunctionIcon/EnvirSensor/0.png";
+//                    break;
+//                case "澶氫簯":
+//                case "Cloudy":
+//                case "澶氶洸":
+//                case "灏戜簯":
+//                case "Partly Cloudy":
+//                case "灏戦洸":
+//                    view.BackgroundImagePath = "FunctionIcon/EnvirSensor/1.png";
+//                    break;
+//                case "闃�":
+//                case "Overcast":
+//                case "闄板ぉ":
+//                    view.BackgroundImagePath = "FunctionIcon/EnvirSensor/2.png";
+//                    break;
+//                case "闃甸洦":
+//                case "Showers":
+//                case "闄i洦":
+//                case "椹熼洦":
+//                case "灞�閮ㄩ樀闆�":
+//                case "Scattered Showers":
+//                case "灞�鍦伴櫍闆�":
+//                case "灞�閮ㄥ湴鍗�鎬ч闆�":
+//                case "灏忛樀闆�":
+//                case "Light Showers":
+//                case "灏忛櫍闆�":
+//                case "闆舵暎椹熼洦":
+//                case "寮洪樀闆�":
+//                case "Heavy Showers":
+//                case "寮烽櫍闆�":
+//                case "闁撲腑鏈夐闆�":
+//                    view.BackgroundImagePath = "FunctionIcon/EnvirSensor/3.png";
+//                    break;
+//                case "闃甸洩":
+//                case "Snow Showers":
+//                case "闄i洩":
+//                case "椹熼洩":
+//                case "灏忛樀闆�":
+//                case "Light Snow Showers":
+//                case "灏忛櫍闆�":
+//                case "闆舵暎椹熼洩":
+//                    view.BackgroundImagePath = "FunctionIcon/EnvirSensor/13.png";
+//                    break;
+//                case "闆�":
+//                case "Fog":
+//                case "闇�":
+//                case "钖勯湩":
+//                case "鍐婚浘":
+//                case "Freezing Fog":
+//                case "鍑嶉湩":
+//                    view.BackgroundImagePath = "FunctionIcon/EnvirSensor/18.png";
+//                    break;
+//                case "娌欏皹鏆�":
+//                case "Sandstorm":
+//                case "娌欏〉鏆�":
+//                case "寮烘矙灏樻毚":
+//                case "Heavy Sandstorm":
+//                case "寮锋矙濉垫毚":
+//                    view.BackgroundImagePath = "FunctionIcon/EnvirSensor/20.png";
+//                    break;
+//                case "娴皹":
+//                case "Dust":
+//                case "娴〉":
+//                case "灏樺嵎椋�":
+//                case "Dust Storm":
+//                case "濉垫嵅棰�":
+//                case "鎵矙":
+//                case "Sand":
+//                case "鎻氭矙":
+//                    view.BackgroundImagePath = "FunctionIcon/EnvirSensor/29.png";
+//                    break;
+//                case "闇�":
+//                case "Haze":
+//                case "鐓欓湠":
+//                    view.BackgroundImagePath = "FunctionIcon/EnvirSensor/45.png";
+//                    break;
+//                case "闆烽樀闆�":
+//                case "Thundershower":
+//                case "闆烽櫍闆�":
+//                case "闆烽洦":
+//                case "闆风數":
+//                case "Lightning":
+//                case "闆烽浕":
+//                case "闆锋毚":
+//                case "Thunderstorm":
+//                    view.BackgroundImagePath = "FunctionIcon/EnvirSensor/4.png";
+//                    break;
+//                case "闆烽樀闆ㄤ即鏈夊啺闆�":
+//                case "Thundershower with Hail":
+//                case "闆烽櫍闆ㄤ即鏈夊啺闆�":
+//                case "闆烽洦浼存湁鍐伴浌":
+//                case "鍐伴浌":
+//                case "Hail":
+//                case "鍐伴拡":
+//                case "Needle Ice":
+//                case "鍐伴嚌":
+//                case "鍐扮矑":
+//                case "Icy":
+//                    view.BackgroundImagePath = "FunctionIcon/EnvirSensor/5.png";
+//                    break;
+//                case "闆ㄥす闆�":
+//                case "Sleet":
+//                case "闆ㄥぞ闆�":
+//                    view.BackgroundImagePath = "FunctionIcon/EnvirSensor/6.png";
+//                    break;
+//                case "灏忛洦":
+//                case "Light Rain":
+//                    view.BackgroundImagePath = "FunctionIcon/EnvirSensor/3.png";
+//                    break;
+//                case "涓洦":
+//                case "Rain":
+//                case "灏忓埌涓洦":
+//                case "闆�":
+//                    view.BackgroundImagePath = "FunctionIcon/EnvirSensor/3.png";
+//                    break;
+//                case "澶ч洦":
+//                case "Heavy Rain":
+//                case "涓埌澶ч洦":
+//                    view.BackgroundImagePath = "FunctionIcon/EnvirSensor/3.png";
+//                    break;
+//                case "鏆撮洦":
+//                case "Rainstorm":
+//                case "璞洦":
+//                case "澶ф毚闆�":
+//                case "Heavy Rainstorm":
+//                case "澶ц豹闆�":
+//                case "鐗瑰ぇ鏆撮洦":
+//                case "Extreme Rainstorm":
+//                case "瓒呭ぇ璞洦":
+//                case "澶у埌鏆撮洦":
+//                    view.BackgroundImagePath = "FunctionIcon/EnvirSensor/3.png";
+//                    break;
+//                case "灏忛洩":
+//                case "Light Snow":
+//                    view.BackgroundImagePath = "FunctionIcon/EnvirSensor/13.png";
+//                    break;
+//                case "闆�":
+//                case "涓洩":
+//                case "灏忓埌涓洩":
+//                case "Snow":
+//                    view.BackgroundImagePath = "FunctionIcon/EnvirSensor/13.png";
+//                    break;
+//                case "澶ч洩":
+//                case "Heavy Snow":
+//                    view.BackgroundImagePath = "FunctionIcon/EnvirSensor/13.png";
+//                    break;
+//                case "鏆撮洩":
+//                case "Blizzard":
+//                    view.BackgroundImagePath = "FunctionIcon/EnvirSensor/13.png";
+//                    break;
+//                case "鍐婚洦":
+//                case "Freezing Rain":
+//                case "鍑嶉洦":
+//                    view.BackgroundImagePath = "FunctionIcon/EnvirSensor/6.png";
+//                    break;
+//            }
+//        }
 
-        #endregion
-    }
+//        #endregion
+//    }
 
 
 
 
-    /// <summary>
-    /// 鍔犺浇浼犳劅鍣ㄥ垪琛�
-    /// </summary>
-    public class SensorView :FrameLayout
-    {
-        Button btnSensorValues;
-        Button btnLevel;
+//    /// <summary>
+//    /// 鍔犺浇浼犳劅鍣ㄥ垪琛�
+//    /// </summary>
+//    public class SensorView :FrameLayout
+//    {
+//        Button btnSensorValues;
+//        Button btnLevel;
 
-        List<Function> sensorList = new List<Function>();
-        string imagePath = "";
-        string iconPath = "";
-        string sensorSPK = "";
-        Sensor sensorTemp = new Sensor();
-        double assembleValues = 0.0;
+//        List<Function> sensorList = new List<Function>();
+//        string imagePath = "";
+//        string iconPath = "";
+//        string sensorSPK = "";
+//        Sensor sensorTemp = new Sensor();
+//        double assembleValues = 0.0;
 
-        public SensorView(List<Function> showList, int index)//,,string spk,double value)
-        {
-            sensorList = showList;
-            sensorSPK = showList[0].spk;
-            foreach (var s in showList)
-            {
-                assembleValues += Convert.ToDouble(s.GetAttrState("value").Replace(",", "."));
-            }
+//        public SensorView(List<Function> showList, int index)//,,string spk,double value)
+//        {
+//            sensorList = showList;
+//            sensorSPK = showList[0].spk;
+//            foreach (var s in showList)
+//            {
+//                assembleValues += Convert.ToDouble(s.GetAttrState("value").Replace(",", "."));
+//            }
 
 
-            this.X = Application.GetRealWidth(7);
-            this.Width = Application.GetRealWidth(182);
-            this.Height = Application.GetRealWidth(124);
-            this.Y = Application.GetRealWidth(124 * (index / 2));
-            this.Tag = sensorSPK;
+//            this.X = Application.GetRealWidth(7);
+//            this.Width = Application.GetRealWidth(182);
+//            this.Height = Application.GetRealWidth(124);
+//            this.Y = Application.GetRealWidth(124 * (index / 2));
+//            this.Tag = sensorSPK;
 
-            if (index % 2 != 0)
-            {
-                this.X = Application.GetRealWidth(189);
-            }
+//            if (index % 2 != 0)
+//            {
+//                this.X = Application.GetRealWidth(189);
+//            }
 
 
-            switch (sensorSPK)
-            {
-                case SPK.SensorCO2:
-                    imagePath = "FunctionIcon/EnvirSensor/Co2Bg.png";
-                    iconPath = "FunctionIcon/EnvirSensor/Co2Icon.png";
-                    break;
-                case SPK.SensorPm25:
-                    imagePath = "FunctionIcon/EnvirSensor/Pm25Bg.png";
-                    iconPath = "FunctionIcon/EnvirSensor/Pm25Icon.png";
-                    break;
-                case SPK.SensorTVOC:
-                    imagePath = "FunctionIcon/EnvirSensor/TvocBg.png";
-                    iconPath = "FunctionIcon/EnvirSensor/TvocIcon.png";
-                    break;
-                case SPK.SensorHumidity:
-                    imagePath = "FunctionIcon/EnvirSensor/HumidityBg.png";
-                    iconPath = "FunctionIcon/EnvirSensor/HumidityIcon.png";
-                    break;
-                case SPK.SensorTemperature:
-                    imagePath = "FunctionIcon/EnvirSensor/TempBg.png";
-                    iconPath = "FunctionIcon/EnvirSensor/TempIcon.png";
-                    break;
-                case SPK.SensorHcho:
-                    imagePath = "FunctionIcon/EnvirSensor/HchoBg.png";
-                    iconPath = "FunctionIcon/EnvirSensor/HchoIcon.png";
-                    break;
-            }
-        }
+//            switch (sensorSPK)
+//            {
+//                case SPK.SensorCO2:
+//                    imagePath = "FunctionIcon/EnvirSensor/Co2Bg.png";
+//                    iconPath = "FunctionIcon/EnvirSensor/Co2Icon.png";
+//                    break;
+//                case SPK.SensorPm25:
+//                    imagePath = "FunctionIcon/EnvirSensor/Pm25Bg.png";
+//                    iconPath = "FunctionIcon/EnvirSensor/Pm25Icon.png";
+//                    break;
+//                case SPK.SensorTVOC:
+//                    imagePath = "FunctionIcon/EnvirSensor/TvocBg.png";
+//                    iconPath = "FunctionIcon/EnvirSensor/TvocIcon.png";
+//                    break;
+//                case SPK.SensorHumidity:
+//                    imagePath = "FunctionIcon/EnvirSensor/HumidityBg.png";
+//                    iconPath = "FunctionIcon/EnvirSensor/HumidityIcon.png";
+//                    break;
+//                case SPK.SensorTemperature:
+//                    imagePath = "FunctionIcon/EnvirSensor/TempBg.png";
+//                    iconPath = "FunctionIcon/EnvirSensor/TempIcon.png";
+//                    break;
+//                case SPK.SensorHcho:
+//                    imagePath = "FunctionIcon/EnvirSensor/HchoBg.png";
+//                    iconPath = "FunctionIcon/EnvirSensor/HchoIcon.png";
+//                    break;
+//            }
+//        }
 
-        public void LoadView()
-        {
-            Function sensor = sensorList[0];
-            this.BackgroundImagePath = imagePath;
+//        public void LoadView()
+//        {
+//            Function sensor = sensorList[0];
+//            this.BackgroundImagePath = imagePath;
 
-            var btnIcon = new Button()
-            {
-                X = Application.GetRealWidth(23),
-                Y = Application.GetRealHeight(17),
-                Width = Application.GetRealWidth(32),
-                Height = Application.GetRealWidth(32),
-                UnSelectedImagePath = iconPath
-            };
-            this.AddChidren(btnIcon);
+//            var btnIcon = new Button()
+//            {
+//                X = Application.GetRealWidth(23),
+//                Y = Application.GetRealHeight(17),
+//                Width = Application.GetRealWidth(32),
+//                Height = Application.GetRealWidth(32),
+//                UnSelectedImagePath = iconPath
+//            };
+//            this.AddChidren(btnIcon);
 
-            btnIcon.MouseUpEventHandler = (sender, e) =>
-            {
-                #region 
-                var esp = new EnvironmentalSensorPage(sensor,sensorList);
-                MainPage.BasePageView.AddChidren(esp);
-                esp.LoadPage();
-                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-                #endregion
-            };
+//            btnIcon.MouseUpEventHandler = (sender, e) =>
+//            {
+//                #region 
+//                var esp = new EnvironmentalSensorPage(sensor,sensorList);
+//                MainPage.BasePageView.AddChidren(esp);
+//                esp.LoadPage();
+//                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+//                #endregion
+//            };
 
-            var btnInfoIcon = new Button()
-            {
-                X = Application.GetRealWidth(139),
-                Y = Application.GetRealHeight(21),
-                Width = Application.GetRealWidth(24),
-                Height = Application.GetRealWidth(24),
-                UnSelectedImagePath = "FunctionIcon/EnvirSensor/InfoIcon.png",
-            };
-            this.AddChidren(btnInfoIcon);
-            btnInfoIcon.MouseUpEventHandler = (sender, e) =>
-            {
-                LoadInfo(sensorSPK);
-            };
+//            var btnInfoIcon = new Button()
+//            {
+//                X = Application.GetRealWidth(139),
+//                Y = Application.GetRealHeight(21),
+//                Width = Application.GetRealWidth(24),
+//                Height = Application.GetRealWidth(24),
+//                UnSelectedImagePath = "FunctionIcon/EnvirSensor/InfoIcon.png",
+//            };
+//            this.AddChidren(btnInfoIcon);
+//            btnInfoIcon.MouseUpEventHandler = (sender, e) =>
+//            {
+//                LoadInfo(sensorSPK);
+//            };
 
-            var curLevel = sensorTemp.GetCurLevel(sensorSPK, assembleValues);
-            var levelTextList = sensorTemp.GetLevelTextList(sensorSPK);
-            btnLevel = new Button()
-            {
-                X = Application.GetRealWidth(25),
-                Y = Application.GetRealWidth(59),
-                Width = Application.GetRealWidth(100),
-                Height = Application.GetRealWidth(32),
-                TextAlignment = TextAlignment.CenterLeft,
-                TextColor = sensorTemp.GetLevelColorList(sensorSPK)[curLevel - 1],
-                TextSize = CSS_FontSize.SubheadingFontSize,
-                TextID = levelTextList[curLevel - 1],
-                Tag = "SensorLevel",
-            };
-            this.AddChidren(btnLevel);
+//            var curLevel = sensorTemp.GetCurLevel(sensorSPK, assembleValues);
+//            var levelTextList = sensorTemp.GetLevelTextList(sensor);
+//            btnLevel = new Button()
+//            {
+//                X = Application.GetRealWidth(25),
+//                Y = Application.GetRealWidth(59),
+//                Width = Application.GetRealWidth(100),
+//                Height = Application.GetRealWidth(32),
+//                TextAlignment = TextAlignment.CenterLeft,
+//                TextColor = sensorTemp.GetLevelColorList(sensor)[curLevel - 1],
+//                TextSize = CSS_FontSize.SubheadingFontSize,
+//                Text = levelTextList[curLevel - 1],
+//                Tag = "SensorLevel",
+//            };
+//            this.AddChidren(btnLevel);
 
-            btnLevel.MouseUpEventHandler = (sender, e) =>
-            {
-                #region 
-                var esp = new EnvironmentalSensorPage(sensor,sensorList);
-                MainPage.BasePageView.AddChidren(esp);
-                esp.LoadPage();
-                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-                #endregion
-            };
+//            btnLevel.MouseUpEventHandler = (sender, e) =>
+//            {
+//                #region 
+//                var esp = new EnvironmentalSensorPage(sensor,sensorList);
+//                MainPage.BasePageView.AddChidren(esp);
+//                esp.LoadPage();
+//                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+//                #endregion
+//            };
 
 
-            btnSensorValues = new Button()
-            {
-                X = Application.GetRealWidth(25),
-                Y = Application.GetRealWidth(83),
-                Width = Application.GetRealWidth(100),
-                Height = Application.GetRealWidth(27),
-                TextAlignment = TextAlignment.CenterLeft,
-                TextColor = CSS_Color.PromptingColor1,
-                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                IsBold = true,
-                Text = assembleValues.ToString(),
-                Tag = "SensorValues"
-            };
-            this.AddChidren(btnSensorValues);
-            btnSensorValues.MouseUpEventHandler = (sender, e) =>
-            {
-                #region 
-                var esp = new EnvironmentalSensorPage(sensor,sensorList);
-                MainPage.BasePageView.AddChidren(esp);
-                esp.LoadPage();
-                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-                #endregion
-            };
-        }
+//            btnSensorValues = new Button()
+//            {
+//                X = Application.GetRealWidth(25),
+//                Y = Application.GetRealWidth(83),
+//                Width = Application.GetRealWidth(100),
+//                Height = Application.GetRealWidth(27),
+//                TextAlignment = TextAlignment.CenterLeft,
+//                TextColor = CSS_Color.PromptingColor1,
+//                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+//                IsBold = true,
+//                Text = assembleValues.ToString(),
+//                Tag = "SensorValues"
+//            };
+//            this.AddChidren(btnSensorValues);
+//            btnSensorValues.MouseUpEventHandler = (sender, e) =>
+//            {
+//                #region 
+//                var esp = new EnvironmentalSensorPage(sensor,sensorList);
+//                MainPage.BasePageView.AddChidren(esp);
+//                esp.LoadPage();
+//                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+//                #endregion
+//            };
+//        }
 
 
-        /// <summary>
-        /// 鍔犺浇浼犳劅鍣ㄧ瓑绾х浉鍏充俊鎭�
-        /// </summary>
-        void LoadInfo(string sensorSPK)
-        {
-            var levelColorList = sensorTemp.GetLevelColorList(sensorSPK);
-            var levelTextList = sensorTemp.GetLevelTextList(sensorSPK);
-            Dialog dialog = new Dialog();
+//        /// <summary>
+//        /// 鍔犺浇浼犳劅鍣ㄧ瓑绾х浉鍏充俊鎭�
+//        /// </summary>
+//        void LoadInfo(string sensorSPK)
+//        {
+//            var levelColorList = sensorTemp.GetLevelColorList(sensorSPK);
+//            var levelTextList = sensorTemp.GetLevelTextList(sensorSPK);
+//            Dialog dialog = new Dialog();
 
-            FrameLayout dialogBodyView = new FrameLayout();
-            dialog.AddChidren(dialogBodyView);
-            dialogBodyView.MouseUpEventHandler = (sender, e) =>
-            {
-                dialog.Close();
-            };
-            VerticalScrolViewLayout infoView = new VerticalScrolViewLayout()
-            {
-                Gravity = Gravity.CenterHorizontal,
-                Y = Application.GetRealHeight(667 - 94 - (levelColorList.Count * 44) - 20),
-                Width = Application.GetRealWidth(343),
-                Height = Application.GetRealHeight(94 + (levelColorList.Count * 44) + levelColorList.Count),
-                Radius = (uint)Application.GetRealWidth(12),
-                BackgroundColor = CSS_Color.MainBackgroundColor,
-                Animate = Animate.DownToUp,
-                ScrollEnabled = false,
-                AnimateSpeed = 0.3f,
-            };
-            dialogBodyView.AddChidren(infoView);
+//            FrameLayout dialogBodyView = new FrameLayout();
+//            dialog.AddChidren(dialogBodyView);
+//            dialogBodyView.MouseUpEventHandler = (sender, e) =>
+//            {
+//                dialog.Close();
+//            };
+//            VerticalScrolViewLayout infoView = new VerticalScrolViewLayout()
+//            {
+//                Gravity = Gravity.CenterHorizontal,
+//                Y = Application.GetRealHeight(667 - 94 - (levelColorList.Count * 44) - 20),
+//                Width = Application.GetRealWidth(343),
+//                Height = Application.GetRealHeight(94 + (levelColorList.Count * 44) + levelColorList.Count),
+//                Radius = (uint)Application.GetRealWidth(12),
+//                BackgroundColor = CSS_Color.MainBackgroundColor,
+//                Animate = Animate.DownToUp,
+//                ScrollEnabled = false,
+//                AnimateSpeed = 0.3f,
+//            };
+//            dialogBodyView.AddChidren(infoView);
 
-            Button btnTitle = new Button()
-            {
-                Height = Application.GetRealHeight(50),
-                TextColor = CSS_Color.FirstLevelTitleColor,
-                IsBold = true,
-                TextSize = CSS_FontSize.SubheadingFontSize,
-                TextAlignment = TextAlignment.Center,
-            };
-            infoView.AddChidren(btnTitle);
+//            Button btnTitle = new Button()
+//            {
+//                Height = Application.GetRealHeight(50),
+//                TextColor = CSS_Color.FirstLevelTitleColor,
+//                IsBold = true,
+//                TextSize = CSS_FontSize.SubheadingFontSize,
+//                TextAlignment = TextAlignment.Center,
+//            };
+//            infoView.AddChidren(btnTitle);
 
-            switch (sensorSPK)
-            {
-                case SPK.SensorPm25:
-                    btnTitle.Text = "PM2.5(ug/m虏)";
-                    break;
-                case SPK.SensorTemperature:
-                    btnTitle.Text = Language.StringByID(StringId.Temp) + "(掳C)";
-                    break;
-                case SPK.SensorTVOC:
-                    btnTitle.Text = "TVOC(PPB)";
-                    break;
-                case SPK.SensorCO2:
-                    btnTitle.Text = "CO2(PPM)";
-                    break;
-                case SPK.SensorHumidity:
-                    btnTitle.Text = Language.StringByID(StringId.Humidity) + "(%)";
-                    break;
-                case SPK.SensorHcho:
-                    btnTitle.Text = Language.StringByID(StringId.Formaldehyde) + "(mg/m3)";
-                    break;
-            }
+//            switch (sensorSPK)
+//            {
+//                case SPK.SensorPm25:
+//                    btnTitle.Text = "PM2.5(ug/m虏)";
+//                    break;
+//                case SPK.SensorTemperature:
+//                    btnTitle.Text = Language.StringByID(StringId.Temp) + "(掳C)";
+//                    break;
+//                case SPK.SensorTVOC:
+//                    btnTitle.Text = "TVOC(PPB)";
+//                    break;
+//                case SPK.SensorCO2:
+//                    btnTitle.Text = "CO2(PPM)";
+//                    break;
+//                case SPK.SensorHumidity:
+//                    btnTitle.Text = Language.StringByID(StringId.Humidity) + "(%)";
+//                    break;
+//                case SPK.SensorHcho:
+//                    btnTitle.Text = Language.StringByID(StringId.Formaldehyde) + "(mg/m3)";
+//                    break;
+//            }
 
-            FrameLayout subTitleView = new FrameLayout()
-            {
-                Height = Application.GetRealHeight(44),
-            };
-            infoView.AddChidren(subTitleView);
+//            FrameLayout subTitleView = new FrameLayout()
+//            {
+//                Height = Application.GetRealHeight(44),
+//            };
+//            infoView.AddChidren(subTitleView);
 
-            subTitleView.AddChidren(new Button()
-            {
-                X = Application.GetRealWidth(20),
-                Width = Application.GetRealWidth(100),
-                TextAlignment = TextAlignment.CenterLeft,
-                TextColor = CSS_Color.FirstLevelTitleColor,
-                TextSize = CSS_FontSize.TextFontSize,
-                IsBold = true,
-                TextID = StringId.IntervalValue,
-            });
+//            subTitleView.AddChidren(new Button()
+//            {
+//                X = Application.GetRealWidth(20),
+//                Width = Application.GetRealWidth(100),
+//                TextAlignment = TextAlignment.CenterLeft,
+//                TextColor = CSS_Color.FirstLevelTitleColor,
+//                TextSize = CSS_FontSize.TextFontSize,
+//                IsBold = true,
+//                TextID = StringId.IntervalValue,
+//            });
 
-            subTitleView.AddChidren(new Button()
-            {
-                Gravity = Gravity.CenterHorizontal,
-                Width = Application.GetRealWidth(100),
-                TextAlignment = TextAlignment.Center,
-                TextColor = CSS_Color.FirstLevelTitleColor,
-                TextSize = CSS_FontSize.TextFontSize,
-                IsBold = true,
-                TextID = StringId.LevelSensor,
-            });
+//            subTitleView.AddChidren(new Button()
+//            {
+//                Gravity = Gravity.CenterHorizontal,
+//                Width = Application.GetRealWidth(100),
+//                TextAlignment = TextAlignment.Center,
+//                TextColor = CSS_Color.FirstLevelTitleColor,
+//                TextSize = CSS_FontSize.TextFontSize,
+//                IsBold = true,
+//                TextID = StringId.LevelSensor,
+//            });
 
-            subTitleView.AddChidren(new Button()
-            {
-                X = Application.GetRealWidth(223),
-                Width = Application.GetRealWidth(100),
-                TextAlignment = TextAlignment.CenterRight,
-                TextColor = CSS_Color.FirstLevelTitleColor,
-                TextSize = CSS_FontSize.TextFontSize,
-                IsBold = true,
-                TextID = StringId.ColorValue,
-            });
-            for (int index = 0; index < levelTextList.Count; index++)
-            {
-                infoView.AddChidren(new Button()
-                {
-                    Gravity = Gravity.CenterHorizontal,
-                    Width = Application.GetRealWidth(303),
-                    Height = Application.GetRealWidth(1),
-                    BackgroundColor = CSS_Color.DividingLineColor,
-                });
+//            subTitleView.AddChidren(new Button()
+//            {
+//                X = Application.GetRealWidth(223),
+//                Width = Application.GetRealWidth(100),
+//                TextAlignment = TextAlignment.CenterRight,
+//                TextColor = CSS_Color.FirstLevelTitleColor,
+//                TextSize = CSS_FontSize.TextFontSize,
+//                IsBold = true,
+//                TextID = StringId.ColorValue,
+//            });
+//            for (int index = 0; index < levelTextList.Count; index++)
+//            {
+//                infoView.AddChidren(new Button()
+//                {
+//                    Gravity = Gravity.CenterHorizontal,
+//                    Width = Application.GetRealWidth(303),
+//                    Height = Application.GetRealWidth(1),
+//                    BackgroundColor = CSS_Color.DividingLineColor,
+//                });
 
-                FrameLayout subInfoView = new FrameLayout()
-                {
-                    Height = Application.GetRealHeight(44),
-                };
-                infoView.AddChidren(subInfoView);
+//                FrameLayout subInfoView = new FrameLayout()
+//                {
+//                    Height = Application.GetRealHeight(44),
+//                };
+//                infoView.AddChidren(subInfoView);
 
-                subInfoView.AddChidren(new Button()
-                {
-                    X = Application.GetRealWidth(20),
-                    Width = Application.GetRealWidth(100),
-                    TextAlignment = TextAlignment.CenterLeft,
-                    TextColor = CSS_Color.FirstLevelTitleColor,
-                    TextSize = CSS_FontSize.TextFontSize,
-                    IsBold = true,
-                    Text = sensorTemp.GetIntervalValue(sensorSPK)[index]
-                });
+//                subInfoView.AddChidren(new Button()
+//                {
+//                    X = Application.GetRealWidth(20),
+//                    Width = Application.GetRealWidth(100),
+//                    TextAlignment = TextAlignment.CenterLeft,
+//                    TextColor = CSS_Color.FirstLevelTitleColor,
+//                    TextSize = CSS_FontSize.TextFontSize,
+//                    IsBold = true,
+//                    Text = sensorTemp.GetIntervalValue(sensorSPK)[index]
+//                });
 
-                subInfoView.AddChidren(new Button()
-                {
-                    Gravity = Gravity.CenterHorizontal,
-                    Width = Application.GetRealWidth(100),
-                    TextAlignment = TextAlignment.Center,
-                    TextColor = CSS_Color.FirstLevelTitleColor,
-                    TextSize = CSS_FontSize.TextFontSize,
-                    IsBold = true,
-                    TextID = levelTextList[index]
-                });
+//                subInfoView.AddChidren(new Button()
+//                {
+//                    Gravity = Gravity.CenterHorizontal,
+//                    Width = Application.GetRealWidth(100),
+//                    TextAlignment = TextAlignment.Center,
+//                    TextColor = CSS_Color.FirstLevelTitleColor,
+//                    TextSize = CSS_FontSize.TextFontSize,
+//                    IsBold = true,
+//                    TextID = levelTextList[index]
+//                });
 
-                subInfoView.AddChidren(new Button()
-                {
-                    X = Application.GetRealWidth(285),
-                    Gravity = Gravity.CenterVertical,
-                    Width = Application.GetRealWidth(38),
-                    Height = Application.GetRealHeight(18),
-                    Radius = (uint)Application.GetRealWidth(4),
-                    BackgroundColor = levelColorList[index]
-                });
-            }
+//                subInfoView.AddChidren(new Button()
+//                {
+//                    X = Application.GetRealWidth(285),
+//                    Gravity = Gravity.CenterVertical,
+//                    Width = Application.GetRealWidth(38),
+//                    Height = Application.GetRealHeight(18),
+//                    Radius = (uint)Application.GetRealWidth(4),
+//                    BackgroundColor = levelColorList[index]
+//                });
+//            }
 
 
 
 
-            dialog.Show();
-        }
+//            dialog.Show();
+//        }
 
 
 
-        public void calculateAverage()
-        {
-            assembleValues = 0;
-            foreach (var s in sensorList)
-            {
-                assembleValues += Convert.ToDouble(s.GetAttrState("value").Replace(",", "."));
-            }
-        }
+//        public void calculateAverage()
+//        {
+//            assembleValues = 0;
+//            foreach (var s in sensorList)
+//            {
+//                assembleValues += Convert.ToDouble(s.GetAttrState("value").Replace(",", "."));
+//            }
+//        }
 
-        /// <summary>
-        /// 鏇存柊鐘舵��
-        /// </summary>
-        /// <param name="updateTemp"></param>
-        public void UpdataStatus(string spk ,string sid,string value)
-        {
-            try
-            {
-                if (spk == sensorSPK)
-                {
-                    var temp = sensorList.Find((obj) => obj.sid == sid);
-                    if(temp!= null)
-                    {
-                        temp.SetAttrState("value", value);
-                    }
-                    calculateAverage();
+//        /// <summary>
+//        /// 鏇存柊鐘舵��
+//        /// </summary>
+//        /// <param name="updateTemp"></param>
+//        public void UpdataStatus(string spk ,string sid,string value)
+//        {
+//            try
+//            {
+//                if (spk == sensorSPK)
+//                {
+//                    var temp = sensorList.Find((obj) => obj.sid == sid);
+//                    if(temp!= null)
+//                    {
+//                        temp.SetAttrState("value", value);
+//                    }
+//                    calculateAverage();
 
 
-                    btnSensorValues.Text = assembleValues.ToString();
+//                    btnSensorValues.Text = assembleValues.ToString();
 
-                    var curLevel = sensorTemp.GetCurLevel(sensorSPK, assembleValues);
+//                    var curLevel = sensorTemp.GetCurLevel(sensorSPK, assembleValues);
 
-                    btnLevel.TextID = sensorTemp.GetLevelTextList(sensorSPK)[curLevel- 1];
-                    btnLevel.TextColor = sensorTemp.GetLevelColorList(sensorSPK)[curLevel - 1];
-                }
-            }
-            catch (Exception ex)
-            {
-                MainPage.Log($"鏇存柊鐜浼犳劅鍣ㄧ晫闈㈠紓甯�:{ex.Message}");
-            }
-        }
+//                    btnLevel.TextID = sensorTemp.GetLevelTextList(sensorSPK)[curLevel- 1];
+//                    btnLevel.TextColor = sensorTemp.GetLevelColorList(sensorSPK)[curLevel - 1];
+//                }
+//            }
+//            catch (Exception ex)
+//            {
+//                MainPage.Log($"鏇存柊鐜浼犳劅鍣ㄧ晫闈㈠紓甯�:{ex.Message}");
+//            }
+//        }
 
-    }
+//    }
 
-}
+//}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EchartsOption_BrokenLine.cs b/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EchartsOption_BrokenLine.cs
index c022001..b41bbcf 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EchartsOption_BrokenLine.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EchartsOption_BrokenLine.cs
@@ -4,7 +4,7 @@
 namespace HDL_ON.UI
 {
     /// <summary>
-    /// 鏇茬嚎鍥�
+    /// 鏇茬嚎鍥炬暟鎹�
     /// </summary>
     public class EchartsOption_BrokenLine
     {
diff --git a/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalPage.cs b/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalPage.cs
index ea27379..d7acf79 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalPage.cs
@@ -347,8 +347,8 @@
         /// </summary>
         void LoadSensorDiv(Function sensor,int index)
         {
-            var levelColorList = sensorTemp.GetLevelColorList(sensor.spk);
-            var levelTextList = sensorTemp.GetLevelTextList(sensor.spk);
+            var levelColorList = sensorTemp.GetLevelColorList(sensor);
+            var levelTextList = sensorTemp.GetLevelTextList(sensor);
             {
                 var sensorTag = sensor.spk + sensor.sid + sensor.deviceId;
                 FrameLayout sensorView = new FrameLayout()
@@ -438,9 +438,9 @@
                     Width = Application.GetRealWidth(100),
                     Height = Application.GetRealWidth(32),
                     TextAlignment = TextAlignment.CenterLeft,
-                    TextColor = sensorTemp.GetLevelColorList(sensor.spk)[sensorTemp.GetCurLevel(sensor) - 1],
+                    TextColor = sensorTemp.GetLevelColorList(sensor)[sensorTemp.GetCurLevel(sensor) - 1],
                     TextSize = CSS_FontSize.SubheadingFontSize,
-                    TextID = levelTextList[sensorTemp.GetCurLevel(sensor) - 1],
+                    Text = levelTextList[sensorTemp.GetCurLevel(sensor) - 1],
                     Tag = "SensorLevel",
                 };
                 sensorView.AddChidren(btnLevel);
@@ -488,8 +488,8 @@
         /// </summary>
         void LoadInfo(Function sensor)
         {
-            var levelColorList = sensorTemp.GetLevelColorList(sensor.spk);
-            var levelTextList = sensorTemp.GetLevelTextList(sensor.spk);
+            var levelColorList = sensorTemp.GetLevelColorList(sensor);
+            var levelTextList = sensorTemp.GetLevelTextList(sensor);
             Dialog dialog = new Dialog();
 
             FrameLayout dialogBodyView = new FrameLayout();
@@ -525,22 +525,22 @@
             switch (sensor.spk)
             {
                 case SPK.SensorPm25:
-                    btnTitle.Text = "PM2.5(ug/m虏)";
+                    btnTitle.Text = $"PM2.5({sensorTemp.Unit(sensor)})";
                     break;
                 case SPK.SensorTemperature:
-                    btnTitle.Text = Language.StringByID(StringId.Temp) + "(掳C)";
+                    btnTitle.Text = Language.StringByID(StringId.Temp) + $"({sensorTemp.Unit(sensor)})";
                     break;
                 case SPK.SensorTVOC:
-                    btnTitle.Text = "TVOC(PPB)";
+                    btnTitle.Text = $"TVOC({sensorTemp.Unit(sensor)})";
                     break;
                 case SPK.SensorCO2:
-                    btnTitle.Text = "CO2(PPM)";
+                    btnTitle.Text = $"CO2({sensorTemp.Unit(sensor)})";
                     break;
                 case SPK.SensorHumidity:
-                    btnTitle.Text = Language.StringByID(StringId.Humidity) + "(%)";
+                    btnTitle.Text = Language.StringByID(StringId.Humidity) + $"({sensorTemp.Unit(sensor)})";
                     break;
                 case SPK.SensorHcho:
-                    btnTitle.Text = Language.StringByID(StringId.Formaldehyde) +"(mg/m3)";
+                    btnTitle.Text = Language.StringByID(StringId.Formaldehyde) +$"({sensorTemp.Unit(sensor)})";
                     break;
             }
 
@@ -606,7 +606,7 @@
                     TextColor = CSS_Color.FirstLevelTitleColor,
                     TextSize = CSS_FontSize.TextFontSize,
                     IsBold = true,
-                    Text = sensorTemp.GetIntervalValue(sensor.spk)[index]
+                    Text = sensorTemp.GetIntervalValue(sensor)[index]
                 });
 
                 subInfoView.AddChidren(new Button()
@@ -617,7 +617,7 @@
                     TextColor = CSS_Color.FirstLevelTitleColor,
                     TextSize = CSS_FontSize.TextFontSize,
                     IsBold = true,
-                    TextID = levelTextList[index]
+                    Text = levelTextList[index]
                 });
 
                 subInfoView.AddChidren(new Button()
@@ -865,16 +865,16 @@
                                             }
                                             else if (tag == "SensorLevel")
                                             {
-                                                (btn as Button).TextID = bodyView.sensorTemp.GetLevelTextList(updateTemp.spk)[bodyView.sensorTemp.GetCurLevel(updateTemp) - 1];
-                                                (btn as Button).TextColor = bodyView.sensorTemp.GetLevelColorList(updateTemp.spk)[bodyView.sensorTemp.GetCurLevel(updateTemp) - 1];
+                                                (btn as Button).Text = bodyView.sensorTemp.GetLevelTextList(updateTemp)[bodyView.sensorTemp.GetCurLevel(updateTemp) - 1];
+                                                (btn as Button).TextColor = bodyView.sensorTemp.GetLevelColorList(updateTemp)[bodyView.sensorTemp.GetCurLevel(updateTemp) - 1];
                                             }
                                         }
                                     }
                                     else if (btn.GetType() == typeof(ArcSeekBar))
                                     {
-                                        (btn as ArcSeekBar).ProgressBarColor = bodyView.sensorTemp.GetLevelColorList(updateTemp.spk)[bodyView.sensorTemp.GetCurLevel(updateTemp) - 1];
+                                        (btn as ArcSeekBar).ProgressBarColor = bodyView.sensorTemp.GetLevelColorList(updateTemp)[bodyView.sensorTemp.GetCurLevel(updateTemp) - 1];
 
-                                        (btn as ArcSeekBar).Progress = (96 / bodyView.sensorTemp.GetLevelColorList(updateTemp.spk).Count) * bodyView.sensorTemp.GetCurLevel(updateTemp);
+                                        (btn as ArcSeekBar).Progress = (96 / bodyView.sensorTemp.GetLevelColorList(updateTemp).Count) * bodyView.sensorTemp.GetCurLevel(updateTemp);
                                     }
                                 }
                             }
diff --git a/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSensorPage.cs b/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSensorPage.cs
index 2d25afd..0505d7d 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSensorPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSensorPage.cs
@@ -149,383 +149,383 @@
             historyDataView.AddChidren(myEchartsView);
 
             #region 搴曢儴绛夌骇鎻愮ず
-            HorizontalScrolViewLayout tipValuesView = new HorizontalScrolViewLayout()
-            {
-                Gravity = Gravity.CenterHorizontal,
-                Y = Application.GetRealWidth(348),
-                Width = Application.GetRealWidth(303),
-                Height = Application.GetRealHeight(30),
-            };
-            diagramView.AddChidren(tipValuesView);
+            //HorizontalScrolViewLayout tipValuesView = new HorizontalScrolViewLayout()
+            //{
+            //    Gravity = Gravity.CenterHorizontal,
+            //    Y = Application.GetRealWidth(348),
+            //    Width = Application.GetRealWidth(303),
+            //    Height = Application.GetRealHeight(30),
+            //};
+            //diagramView.AddChidren(tipValuesView);
 
-            Button btnColorTip = new Button()
-            {
-                Gravity = Gravity.CenterHorizontal,
-                Y = tipValuesView.Bottom,
-                Width = Application.GetRealWidth(303),
-                Height = Application.GetRealHeight(7),
-                UnSelectedImagePath = "FunctionIcon/EnvironmentalScience/SensorColorTipBg.png",
-            };
-            diagramView.AddChidren(btnColorTip);
+            //Button btnColorTip = new Button()
+            //{
+            //    Gravity = Gravity.CenterHorizontal,
+            //    Y = tipValuesView.Bottom,
+            //    Width = Application.GetRealWidth(303),
+            //    Height = Application.GetRealHeight(7),
+            //    UnSelectedImagePath = "FunctionIcon/EnvironmentalScience/SensorColorTipBg.png",
+            //};
+            //diagramView.AddChidren(btnColorTip);
 
-            HorizontalScrolViewLayout tipTextView = new HorizontalScrolViewLayout()
-            {
-                Gravity = Gravity.CenterHorizontal,
-                Y = btnColorTip.Bottom,
-                Width = Application.GetRealWidth(303),
-                Height = Application.GetRealHeight(30),
-            };
-            diagramView.AddChidren(tipTextView);
+            //HorizontalScrolViewLayout tipTextView = new HorizontalScrolViewLayout()
+            //{
+            //    Gravity = Gravity.CenterHorizontal,
+            //    Y = btnColorTip.Bottom,
+            //    Width = Application.GetRealWidth(303),
+            //    Height = Application.GetRealHeight(30),
+            //};
+            //diagramView.AddChidren(tipTextView);
 
-            switch (function.spk)
-            {
-                case SPK.SensorPm25:
-                    tipValuesView.AddChidren(new Button()
-                    {
-                        Width = Application.GetRealWidth(101),
-                        Text = "35",
-                        TextAlignment = TextAlignment.Center,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
-                    });
-                    tipValuesView.AddChidren(new Button()
-                    {
-                        Width = Application.GetRealWidth(101),
-                        Text = "75",
-                        TextAlignment = TextAlignment.Center,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
-                    });
-                    tipValuesView.AddChidren(new Button()
-                    {
-                        Width = Application.GetRealWidth(101),
-                        Text = "115",
-                        TextAlignment = TextAlignment.Center,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
-                    });
-                    tipTextView.AddChidren(new Button()
-                    {
-                        Width = Application.GetRealWidth(75),
-                        TextID = StringId.Great,
-                        TextAlignment = TextAlignment.Center,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
-                    });
-                    tipTextView.AddChidren(new Button()
-                    {
-                        Width = Application.GetRealWidth(75),
-                        TextID = StringId.Good,
-                        TextAlignment = TextAlignment.Center,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
-                    });
-                    tipTextView.AddChidren(new Button()
-                    {
-                        Width = Application.GetRealWidth(75),
-                        TextID = StringId.MildPollution,
-                        TextAlignment = TextAlignment.Center,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
-                    });
-                    tipTextView.AddChidren(new Button()
-                    {
-                        Width = Application.GetRealWidth(75),
-                        TextID = StringId.HeavyPollution,
-                        TextAlignment = TextAlignment.Center,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
-                    });
-                    break;
-                //case SPK.SensorPm25:
-                //_intervalValue.Add("0 ~ 35");
-                //_intervalValue.Add("36 ~ 75");
-                //_intervalValue.Add("76 ~ 115");
-                //_intervalValue.Add("115 ~");
-                //_levelTextList.Add(StringId.Great);
-                //_levelTextList.Add(StringId.Good);
-                //_levelTextList.Add(StringId.MildPollution);
-                //_levelTextList.Add(StringId.HeavyPollution);
-                //break;
-                case SPK.SensorCO2:
-                    tipValuesView.AddChidren(new Button()
-                    {
-                        Width = Application.GetRealWidth(101),
-                        Text = "1000",
-                        TextAlignment = TextAlignment.Center,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
-                    });
-                    tipValuesView.AddChidren(new Button()
-                    {
-                        Width = Application.GetRealWidth(101),
-                        Text = "2000",
-                        TextAlignment = TextAlignment.Center,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
-                    });
-                    tipValuesView.AddChidren(new Button()
-                    {
-                        Width = Application.GetRealWidth(101),
-                        Text = "5000",
-                        TextAlignment = TextAlignment.Center,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
-                    });
-                    tipTextView.AddChidren(new Button()
-                    {
-                        Width = Application.GetRealWidth(75),
-                        TextID = StringId.SensorReferenceTipCO2Level1,
-                        TextAlignment = TextAlignment.Center,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
-                    });
-                    tipTextView.AddChidren(new Button()
-                    {
-                        Width = Application.GetRealWidth(75),
-                        TextID = StringId.SensorReferenceTipCO2Level2,
-                        TextAlignment = TextAlignment.Center,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
-                    });
-                    tipTextView.AddChidren(new Button()
-                    {
-                        Width = Application.GetRealWidth(75),
-                        TextID = StringId.SensorReferenceTipCO2Level3,
-                        TextAlignment = TextAlignment.Center,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
-                    });
-                    tipTextView.AddChidren(new Button()
-                    {
-                        Width = Application.GetRealWidth(75),
-                        TextID = StringId.SensorReferenceTipCO2Level4,
-                        TextAlignment = TextAlignment.Center,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
-                    });
-                    break;
-                case SPK.SensorTemperature:
-                    tipValuesView.AddChidren(new Button()
-                    {
-                        Width = Application.GetRealWidth(50),
-                        Text = "18掳C",
-                        TextAlignment = TextAlignment.Center,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
-                    });
-                    tipValuesView.AddChidren(new Button()
-                    {
-                        Width = Application.GetRealWidth(50),
-                        Text = "20掳C",
-                        TextAlignment = TextAlignment.Center,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
-                    });
-                    tipValuesView.AddChidren(new Button()
-                    {
-                        Width = Application.GetRealWidth(50),
-                        Text = "25掳C",
-                        TextAlignment = TextAlignment.Center,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
-                    });
-                    tipValuesView.AddChidren(new Button()
-                    {
-                        Width = Application.GetRealWidth(50),
-                        Text = "27掳C",
-                        TextAlignment = TextAlignment.Center,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
-                    });
-                    tipValuesView.AddChidren(new Button()
-                    {
-                        Width = Application.GetRealWidth(50),
-                        Text = "30掳C",
-                        TextAlignment = TextAlignment.Center,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
-                    });
-                    tipValuesView.AddChidren(new Button()
-                    {
-                        Width = Application.GetRealWidth(50),
-                        Text = "33掳C",
-                        TextAlignment = TextAlignment.Center,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
-                    });
-                    //_intervalValue.Add("~ 18掳C");
-                    //_intervalValue.Add("18 ~ 20掳C");
-                    //_intervalValue.Add("20 ~ 25掳C");
-                    //_intervalValue.Add("25 ~ 27掳C");
-                    //_intervalValue.Add("27 ~ 30掳C");
-                    //_intervalValue.Add("30 ~ 33掳C");
-                    //_intervalValue.Add("33掳C ~");
-                    tipTextView.AddChidren(new Button()
-                    {
-                        Width = Application.GetRealWidth(43),
-                        TextID = StringId.ExtremelyCold,
-                        TextAlignment = TextAlignment.Center,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
-                    });
-                    tipTextView.AddChidren(new Button()
-                    {
-                        Width = Application.GetRealWidth(43),
-                        TextID = StringId.SlightlyCold,
-                        TextAlignment = TextAlignment.Center,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
-                    });
-                    tipTextView.AddChidren(new Button()
-                    {
-                        Width = Application.GetRealWidth(43),
-                        TextID = StringId.Cold,
-                        TextAlignment = TextAlignment.Center,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
-                    });
-                    tipTextView.AddChidren(new Button()
-                    {
-                        Width = Application.GetRealWidth(43),
-                        TextID = StringId.Comfortable,
-                        TextAlignment = TextAlignment.Center,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
-                    });
-                    tipTextView.AddChidren(new Button()
-                    {
-                        Width = Application.GetRealWidth(43),
-                        TextID = StringId.TepidFever,
-                        TextAlignment = TextAlignment.Center,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
-                    });
-                    tipTextView.AddChidren(new Button()
-                    {
-                        Width = Application.GetRealWidth(43),
-                        TextID = StringId.Heat_SensorTip,
-                        TextAlignment = TextAlignment.Center,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
-                    });
-                    tipTextView.AddChidren(new Button()
-                    {
-                        Width = Application.GetRealWidth(43),
-                        TextID = StringId.ExtremeHeat,
-                        TextAlignment = TextAlignment.Center,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
-                    });
-                    //_levelTextList.Add(StringId.ExtremelyCold);
-                    //_levelTextList.Add(StringId.);
-                    //_levelTextList.Add(StringId.);
-                    //_levelTextList.Add(StringId.);
-                    //_levelTextList.Add(StringId.);
-                    //_levelTextList.Add(StringId.);
-                    //_levelTextList.Add(StringId.ExtremeHeat);
-                    break;
-                case SPK.SensorTVOC:
-                    tipValuesView.AddChidren(new Button()
-                    {
-                        Width = Application.GetRealWidth(101),
-                        Text = "0.6",
-                        TextAlignment = TextAlignment.Center,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
-                    });
-                    tipValuesView.AddChidren(new Button()
-                    {
-                        Width = Application.GetRealWidth(101),
-                        Text = "2",
-                        TextAlignment = TextAlignment.Center,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
-                    });
-                    tipValuesView.AddChidren(new Button()
-                    {
-                        Width = Application.GetRealWidth(101),
-                        Text = "5",
-                        TextAlignment = TextAlignment.Center,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
-                    });
-                    tipTextView.AddChidren(new Button()
-                    {
-                        Width = Application.GetRealWidth(75),
-                        TextID = StringId.SensorReferenceTVOCTipLevel1,
-                        TextAlignment = TextAlignment.Center,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
-                    });
-                    tipTextView.AddChidren(new Button()
-                    {
-                        Width = Application.GetRealWidth(75),
-                        TextID = StringId.SensorReferenceTVOCTipLevel2,
-                        TextAlignment = TextAlignment.Center,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
-                    });
-                    tipTextView.AddChidren(new Button()
-                    {
-                        Width = Application.GetRealWidth(75),
-                        TextID = StringId.SensorReferenceTVOCTipLevel3,
-                        TextAlignment = TextAlignment.Center,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
-                    });
-                    tipTextView.AddChidren(new Button()
-                    {
-                        Width = Application.GetRealWidth(75),
-                        TextID = StringId.SensorReferenceTVOCTipLevel4,
-                        TextAlignment = TextAlignment.Center,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
-                    });
-                    break;
-                case SPK.SensorHumidity:
-                    tipValuesView.AddChidren(new Button()
-                    {
-                        Width = Application.GetRealWidth(151),
-                        Text = "40%",
-                        TextAlignment = TextAlignment.Center,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
-                    });
-                    tipValuesView.AddChidren(new Button()
-                    {
-                        Width = Application.GetRealWidth(151),
-                        Text = "70%",
-                        TextAlignment = TextAlignment.Center,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
-                    });
-                    tipTextView.AddChidren(new Button()
-                    {
-                        Width = Application.GetRealWidth(101),
-                        TextID = StringId.SensorReferenceHumidityTipLevel1,
-                        TextAlignment = TextAlignment.Center,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
-                    });
-                    tipTextView.AddChidren(new Button()
-                    {
-                        Width = Application.GetRealWidth(101),
-                        TextID = StringId.SensorReferenceHumidityTipLevel2,
-                        TextAlignment = TextAlignment.Center,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
-                    });
-                    tipTextView.AddChidren(new Button()
-                    {
-                        Width = Application.GetRealWidth(101),
-                        TextID = StringId.SensorReferenceHumidityTipLevel3,
-                        TextAlignment = TextAlignment.Center,
-                        TextColor = CSS_Color.FirstLevelTitleColor,
-                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
-                    });
-                    break;
-            }
+            //switch (function.spk)
+            //{
+            //    case SPK.SensorPm25:
+            //        tipValuesView.AddChidren(new Button()
+            //        {
+            //            Width = Application.GetRealWidth(101),
+            //            Text = "35",
+            //            TextAlignment = TextAlignment.Center,
+            //            TextColor = CSS_Color.FirstLevelTitleColor,
+            //            TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+            //        });
+            //        tipValuesView.AddChidren(new Button()
+            //        {
+            //            Width = Application.GetRealWidth(101),
+            //            Text = "75",
+            //            TextAlignment = TextAlignment.Center,
+            //            TextColor = CSS_Color.FirstLevelTitleColor,
+            //            TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+            //        });
+            //        tipValuesView.AddChidren(new Button()
+            //        {
+            //            Width = Application.GetRealWidth(101),
+            //            Text = "115",
+            //            TextAlignment = TextAlignment.Center,
+            //            TextColor = CSS_Color.FirstLevelTitleColor,
+            //            TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+            //        });
+            //        tipTextView.AddChidren(new Button()
+            //        {
+            //            Width = Application.GetRealWidth(75),
+            //            TextID = StringId.Great,
+            //            TextAlignment = TextAlignment.Center,
+            //            TextColor = CSS_Color.FirstLevelTitleColor,
+            //            TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+            //        });
+            //        tipTextView.AddChidren(new Button()
+            //        {
+            //            Width = Application.GetRealWidth(75),
+            //            TextID = StringId.Good,
+            //            TextAlignment = TextAlignment.Center,
+            //            TextColor = CSS_Color.FirstLevelTitleColor,
+            //            TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+            //        });
+            //        tipTextView.AddChidren(new Button()
+            //        {
+            //            Width = Application.GetRealWidth(75),
+            //            TextID = StringId.MildPollution,
+            //            TextAlignment = TextAlignment.Center,
+            //            TextColor = CSS_Color.FirstLevelTitleColor,
+            //            TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+            //        });
+            //        tipTextView.AddChidren(new Button()
+            //        {
+            //            Width = Application.GetRealWidth(75),
+            //            TextID = StringId.HeavyPollution,
+            //            TextAlignment = TextAlignment.Center,
+            //            TextColor = CSS_Color.FirstLevelTitleColor,
+            //            TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+            //        });
+            //        break;
+            //    //case SPK.SensorPm25:
+            //    //_intervalValue.Add("0 ~ 35");
+            //    //_intervalValue.Add("36 ~ 75");
+            //    //_intervalValue.Add("76 ~ 115");
+            //    //_intervalValue.Add("115 ~");
+            //    //_levelTextList.Add(StringId.Great);
+            //    //_levelTextList.Add(StringId.Good);
+            //    //_levelTextList.Add(StringId.MildPollution);
+            //    //_levelTextList.Add(StringId.HeavyPollution);
+            //    //break;
+            //    case SPK.SensorCO2:
+            //        tipValuesView.AddChidren(new Button()
+            //        {
+            //            Width = Application.GetRealWidth(101),
+            //            Text = "1000",
+            //            TextAlignment = TextAlignment.Center,
+            //            TextColor = CSS_Color.FirstLevelTitleColor,
+            //            TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+            //        });
+            //        tipValuesView.AddChidren(new Button()
+            //        {
+            //            Width = Application.GetRealWidth(101),
+            //            Text = "2000",
+            //            TextAlignment = TextAlignment.Center,
+            //            TextColor = CSS_Color.FirstLevelTitleColor,
+            //            TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+            //        });
+            //        tipValuesView.AddChidren(new Button()
+            //        {
+            //            Width = Application.GetRealWidth(101),
+            //            Text = "5000",
+            //            TextAlignment = TextAlignment.Center,
+            //            TextColor = CSS_Color.FirstLevelTitleColor,
+            //            TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+            //        });
+            //        tipTextView.AddChidren(new Button()
+            //        {
+            //            Width = Application.GetRealWidth(75),
+            //            TextID = StringId.SensorReferenceTipCO2Level1,
+            //            TextAlignment = TextAlignment.Center,
+            //            TextColor = CSS_Color.FirstLevelTitleColor,
+            //            TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+            //        });
+            //        tipTextView.AddChidren(new Button()
+            //        {
+            //            Width = Application.GetRealWidth(75),
+            //            TextID = StringId.SensorReferenceTipCO2Level2,
+            //            TextAlignment = TextAlignment.Center,
+            //            TextColor = CSS_Color.FirstLevelTitleColor,
+            //            TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+            //        });
+            //        tipTextView.AddChidren(new Button()
+            //        {
+            //            Width = Application.GetRealWidth(75),
+            //            TextID = StringId.SensorReferenceTipCO2Level3,
+            //            TextAlignment = TextAlignment.Center,
+            //            TextColor = CSS_Color.FirstLevelTitleColor,
+            //            TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+            //        });
+            //        tipTextView.AddChidren(new Button()
+            //        {
+            //            Width = Application.GetRealWidth(75),
+            //            TextID = StringId.SensorReferenceTipCO2Level4,
+            //            TextAlignment = TextAlignment.Center,
+            //            TextColor = CSS_Color.FirstLevelTitleColor,
+            //            TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+            //        });
+            //        break;
+            //    case SPK.SensorTemperature:
+            //        tipValuesView.AddChidren(new Button()
+            //        {
+            //            Width = Application.GetRealWidth(50),
+            //            Text = "18掳C",
+            //            TextAlignment = TextAlignment.Center,
+            //            TextColor = CSS_Color.FirstLevelTitleColor,
+            //            TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+            //        });
+            //        tipValuesView.AddChidren(new Button()
+            //        {
+            //            Width = Application.GetRealWidth(50),
+            //            Text = "20掳C",
+            //            TextAlignment = TextAlignment.Center,
+            //            TextColor = CSS_Color.FirstLevelTitleColor,
+            //            TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+            //        });
+            //        tipValuesView.AddChidren(new Button()
+            //        {
+            //            Width = Application.GetRealWidth(50),
+            //            Text = "25掳C",
+            //            TextAlignment = TextAlignment.Center,
+            //            TextColor = CSS_Color.FirstLevelTitleColor,
+            //            TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+            //        });
+            //        tipValuesView.AddChidren(new Button()
+            //        {
+            //            Width = Application.GetRealWidth(50),
+            //            Text = "27掳C",
+            //            TextAlignment = TextAlignment.Center,
+            //            TextColor = CSS_Color.FirstLevelTitleColor,
+            //            TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+            //        });
+            //        tipValuesView.AddChidren(new Button()
+            //        {
+            //            Width = Application.GetRealWidth(50),
+            //            Text = "30掳C",
+            //            TextAlignment = TextAlignment.Center,
+            //            TextColor = CSS_Color.FirstLevelTitleColor,
+            //            TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+            //        });
+            //        tipValuesView.AddChidren(new Button()
+            //        {
+            //            Width = Application.GetRealWidth(50),
+            //            Text = "33掳C",
+            //            TextAlignment = TextAlignment.Center,
+            //            TextColor = CSS_Color.FirstLevelTitleColor,
+            //            TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+            //        });
+            //        //_intervalValue.Add("~ 18掳C");
+            //        //_intervalValue.Add("18 ~ 20掳C");
+            //        //_intervalValue.Add("20 ~ 25掳C");
+            //        //_intervalValue.Add("25 ~ 27掳C");
+            //        //_intervalValue.Add("27 ~ 30掳C");
+            //        //_intervalValue.Add("30 ~ 33掳C");
+            //        //_intervalValue.Add("33掳C ~");
+            //        tipTextView.AddChidren(new Button()
+            //        {
+            //            Width = Application.GetRealWidth(43),
+            //            TextID = StringId.ExtremelyCold,
+            //            TextAlignment = TextAlignment.Center,
+            //            TextColor = CSS_Color.FirstLevelTitleColor,
+            //            TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+            //        });
+            //        tipTextView.AddChidren(new Button()
+            //        {
+            //            Width = Application.GetRealWidth(43),
+            //            TextID = StringId.SlightlyCold,
+            //            TextAlignment = TextAlignment.Center,
+            //            TextColor = CSS_Color.FirstLevelTitleColor,
+            //            TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+            //        });
+            //        tipTextView.AddChidren(new Button()
+            //        {
+            //            Width = Application.GetRealWidth(43),
+            //            TextID = StringId.Cold,
+            //            TextAlignment = TextAlignment.Center,
+            //            TextColor = CSS_Color.FirstLevelTitleColor,
+            //            TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+            //        });
+            //        tipTextView.AddChidren(new Button()
+            //        {
+            //            Width = Application.GetRealWidth(43),
+            //            TextID = StringId.Comfortable,
+            //            TextAlignment = TextAlignment.Center,
+            //            TextColor = CSS_Color.FirstLevelTitleColor,
+            //            TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+            //        });
+            //        tipTextView.AddChidren(new Button()
+            //        {
+            //            Width = Application.GetRealWidth(43),
+            //            TextID = StringId.TepidFever,
+            //            TextAlignment = TextAlignment.Center,
+            //            TextColor = CSS_Color.FirstLevelTitleColor,
+            //            TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+            //        });
+            //        tipTextView.AddChidren(new Button()
+            //        {
+            //            Width = Application.GetRealWidth(43),
+            //            TextID = StringId.Heat_SensorTip,
+            //            TextAlignment = TextAlignment.Center,
+            //            TextColor = CSS_Color.FirstLevelTitleColor,
+            //            TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+            //        });
+            //        tipTextView.AddChidren(new Button()
+            //        {
+            //            Width = Application.GetRealWidth(43),
+            //            TextID = StringId.ExtremeHeat,
+            //            TextAlignment = TextAlignment.Center,
+            //            TextColor = CSS_Color.FirstLevelTitleColor,
+            //            TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+            //        });
+            //        //_levelTextList.Add(StringId.ExtremelyCold);
+            //        //_levelTextList.Add(StringId.);
+            //        //_levelTextList.Add(StringId.);
+            //        //_levelTextList.Add(StringId.);
+            //        //_levelTextList.Add(StringId.);
+            //        //_levelTextList.Add(StringId.);
+            //        //_levelTextList.Add(StringId.ExtremeHeat);
+            //        break;
+            //    case SPK.SensorTVOC:
+            //        tipValuesView.AddChidren(new Button()
+            //        {
+            //            Width = Application.GetRealWidth(101),
+            //            Text = "0.6",
+            //            TextAlignment = TextAlignment.Center,
+            //            TextColor = CSS_Color.FirstLevelTitleColor,
+            //            TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+            //        });
+            //        tipValuesView.AddChidren(new Button()
+            //        {
+            //            Width = Application.GetRealWidth(101),
+            //            Text = "2",
+            //            TextAlignment = TextAlignment.Center,
+            //            TextColor = CSS_Color.FirstLevelTitleColor,
+            //            TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+            //        });
+            //        tipValuesView.AddChidren(new Button()
+            //        {
+            //            Width = Application.GetRealWidth(101),
+            //            Text = "5",
+            //            TextAlignment = TextAlignment.Center,
+            //            TextColor = CSS_Color.FirstLevelTitleColor,
+            //            TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+            //        });
+            //        tipTextView.AddChidren(new Button()
+            //        {
+            //            Width = Application.GetRealWidth(75),
+            //            TextID = StringId.SensorReferenceTVOCTipLevel1,
+            //            TextAlignment = TextAlignment.Center,
+            //            TextColor = CSS_Color.FirstLevelTitleColor,
+            //            TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+            //        });
+            //        tipTextView.AddChidren(new Button()
+            //        {
+            //            Width = Application.GetRealWidth(75),
+            //            TextID = StringId.SensorReferenceTVOCTipLevel2,
+            //            TextAlignment = TextAlignment.Center,
+            //            TextColor = CSS_Color.FirstLevelTitleColor,
+            //            TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+            //        });
+            //        tipTextView.AddChidren(new Button()
+            //        {
+            //            Width = Application.GetRealWidth(75),
+            //            TextID = StringId.SensorReferenceTVOCTipLevel3,
+            //            TextAlignment = TextAlignment.Center,
+            //            TextColor = CSS_Color.FirstLevelTitleColor,
+            //            TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+            //        });
+            //        tipTextView.AddChidren(new Button()
+            //        {
+            //            Width = Application.GetRealWidth(75),
+            //            TextID = StringId.SensorReferenceTVOCTipLevel4,
+            //            TextAlignment = TextAlignment.Center,
+            //            TextColor = CSS_Color.FirstLevelTitleColor,
+            //            TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+            //        });
+            //        break;
+            //    case SPK.SensorHumidity:
+            //        tipValuesView.AddChidren(new Button()
+            //        {
+            //            Width = Application.GetRealWidth(151),
+            //            Text = "40%",
+            //            TextAlignment = TextAlignment.Center,
+            //            TextColor = CSS_Color.FirstLevelTitleColor,
+            //            TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+            //        });
+            //        tipValuesView.AddChidren(new Button()
+            //        {
+            //            Width = Application.GetRealWidth(151),
+            //            Text = "70%",
+            //            TextAlignment = TextAlignment.Center,
+            //            TextColor = CSS_Color.FirstLevelTitleColor,
+            //            TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+            //        });
+            //        tipTextView.AddChidren(new Button()
+            //        {
+            //            Width = Application.GetRealWidth(101),
+            //            TextID = StringId.SensorReferenceHumidityTipLevel1,
+            //            TextAlignment = TextAlignment.Center,
+            //            TextColor = CSS_Color.FirstLevelTitleColor,
+            //            TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+            //        });
+            //        tipTextView.AddChidren(new Button()
+            //        {
+            //            Width = Application.GetRealWidth(101),
+            //            TextID = StringId.SensorReferenceHumidityTipLevel2,
+            //            TextAlignment = TextAlignment.Center,
+            //            TextColor = CSS_Color.FirstLevelTitleColor,
+            //            TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+            //        });
+            //        tipTextView.AddChidren(new Button()
+            //        {
+            //            Width = Application.GetRealWidth(101),
+            //            TextID = StringId.SensorReferenceHumidityTipLevel3,
+            //            TextAlignment = TextAlignment.Center,
+            //            TextColor = CSS_Color.FirstLevelTitleColor,
+            //            TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
+            //        });
+            //        break;
+            //}
 
             #endregion
 
@@ -659,6 +659,10 @@
             int index = 1;
             foreach (var tempSensor in sensorList)
             {
+                if (index > 5)
+                {
+                    break;
+                }
                 if (tempSensor.sid == function.sid)
                 {
                     continue;
@@ -955,5 +959,9 @@
         /// <summary>
         /// </summary>
         public string fieldValue { get; set; }
+        /// <summary>
+        /// 鏃堕棿
+        /// </summary>
+        public string time { get; set; }
     }
 }
\ No newline at end of file
diff --git a/HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPageBLL.cs b/HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPageBLL.cs
index 5782d56..c4f3c87 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPageBLL.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPageBLL.cs
@@ -129,16 +129,16 @@
         /// </summary>
         void LoadEvent_TempChange()
         {
-            if (!function.online)
-            {
-                new Tip()
-                {
-                    CloseTime = 1,
-                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                    Direction = AMPopTipDirection.None,
-                }.Show(MainPage.BaseView);
-                return;
-            }
+            //if (!function.online)
+            //{
+            //    new Tip()
+            //    {
+            //        CloseTime = 1,
+            //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+            //        Direction = AMPopTipDirection.None,
+            //    }.Show(MainPage.BaseView);
+            //    return;
+            //}
             btnMinus.MouseUpEventHandler = (sender, e) =>
             {
                 if(function.trait_on_off.curValue.ToString() == "off")
diff --git a/HDL_ON/UI/UI2/FuntionControlView/FunctionBaseInfoSetPage.cs b/HDL_ON/UI/UI2/FuntionControlView/FunctionBaseInfoSetPage.cs
index feb241d..bf7e271 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/FunctionBaseInfoSetPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/FunctionBaseInfoSetPage.cs
@@ -365,6 +365,57 @@
                 #endregion
             }
 
+
+            if (function.spk == SPK.HvacCac)
+            {
+                #region 姣涚粏绌鸿皟
+                var energyView1 = new FrameLayout()
+                {
+                    Height = Application.GetRealHeight(55),
+                    BackgroundColor = CSS_Color.MainBackgroundColor,
+                };
+                contentView.AddChidren(energyView1);
+
+                var btnEnergyText1 = new Button()
+                {
+                    X = Application.GetRealWidth(16),
+                    Width = Application.GetRealWidth(160),
+                    TextAlignment = TextAlignment.CenterLeft,
+                    TextColor = CSS_Color.FirstLevelTitleColor,
+                    TextSize = CSS_FontSize.SubheadingFontSize,
+                    TextID = StringId.DewPointTemp,
+                };
+                energyView1.AddChidren(btnEnergyText1);
+
+
+                double realTimePower = 0;
+                double.TryParse(function.GetAttrState("dew_point_temp"), out realTimePower);
+
+                var energyValue1 = new Button()
+                {
+                    Width = Application.GetRealWidth(355),
+                    TextAlignment = TextAlignment.CenterRight,
+                    TextSize = CSS_FontSize.TextFontSize,
+                    TextColor = CSS_Color.PromptingColor1,
+                    Text = realTimePower + "掳C",
+                };
+                energyView1.AddChidren(energyValue1);
+
+                energyView1.AddChidren(
+                    new Button()
+                    {
+                        Gravity = Gravity.CenterHorizontal,
+                        Y = Application.GetRealHeight(54),
+                        BackgroundColor = CSS_Color.DividingLineColor,
+                        Width = Application.GetRealWidth(343),
+                        Height = Application.GetRealHeight(1)
+                    });
+                //-----------------
+
+                #endregion
+            }
+
+
             LoadEventList();
         }
 
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Light/ColorTureLampPageBLL.cs b/HDL_ON/UI/UI2/FuntionControlView/Light/ColorTureLampPageBLL.cs
index 8ab3dc2..09d981d 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Light/ColorTureLampPageBLL.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Light/ColorTureLampPageBLL.cs
@@ -86,16 +86,16 @@
         /// </summary>
         void LoadEvet_ChangeColorTemplatrue()
         {
-            if (!function.online)
-            {
-                new Tip()
-                {
-                    CloseTime = 1,
-                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                    Direction = AMPopTipDirection.None,
-                }.Show(MainPage.BaseView);
-                return;
-            }
+            //if (!function.online)
+            //{
+            //    new Tip()
+            //    {
+            //        CloseTime = 1,
+            //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+            //        Direction = AMPopTipDirection.None,
+            //    }.Show(MainPage.BaseView);
+            //    return;
+            //}
             barColorTemplatrue.OnProgressChangedEvent += (sender, value) =>
             {
                 new System.Threading.Thread(() =>
@@ -141,27 +141,28 @@
         {
             dimmerBar.OnStopTrackingTouchEvent = (sender, e) =>
             {
-                if (!function.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!function.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 onDimmerBar = false;
                 function.SetAttrState(FunctionAttributeKey.Brightness, dimmerBar.Progress);
                 System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
-                d.Add(FunctionAttributeKey.Brightness, dimmerBar.Progress.ToString());
+                d.Add(FunctionAttributeKey.Brightness, dimmerBar.Progress.ToString());
+                d.Add(FunctionAttributeKey.FadeTime, function.GetAttrState(FunctionAttributeKey.FadeTime));
                 Control.Ins.SendWriteCommand(function, d);
                 //function.fadeTime = barFadeTime.Progress;
                 btnBrightnessText.Text = dimmerBar.Progress + "%";
 
                 dimmerBar.SetProgressBarColors(CSS_Color.AuxiliaryColor1, CSS_Color.AuxiliaryColor1);
             };
-            if (function.online)
+            //if (function.online)
             {
                 dimmerBar.OnStartTrackingTouchEvent = (sender, e) =>
                 {
@@ -217,16 +218,16 @@
         {
             btnSwitch.MouseUpEventHandler += (sender, e) =>
             {
-                if (!function.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!function.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 //function.fadeTime = barFadeTime.Progress;
                 btnSwitch.IsSelected = !btnSwitch.IsSelected;
                 if (btnSwitch.IsSelected)
@@ -242,6 +243,7 @@
                     function.trait_on_off.curValue = btnSwitch.IsSelected ? "on" : "off";
                     System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                     d.Add(FunctionAttributeKey.OnOff, function.trait_on_off.curValue.ToString());
+                    d.Add(FunctionAttributeKey.FadeTime, function.GetAttrState(FunctionAttributeKey.FadeTime));
                     if (btnSwitch.IsSelected)
                     {
                         d.Add(FunctionAttributeKey.Brightness, function.lastBrightness.ToString());
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Light/DimmerPageBLL.cs b/HDL_ON/UI/UI2/FuntionControlView/Light/DimmerPageBLL.cs
index a8d34a9..400c887 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Light/DimmerPageBLL.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Light/DimmerPageBLL.cs
@@ -88,7 +88,7 @@
         /// </summary>
         void LoadEvent_DimmerBar()
         {
-            if (function.online)
+            //if (function.online)
             {
                 dimmerBar.OnStartTrackingTouchEvent = (sender, e) =>
                 {
@@ -148,16 +148,16 @@
         {
             btnSwitch.MouseUpEventHandler += (sender, e) =>
             {
-                if (!function.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!function.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 btnSwitch.IsSelected = !btnSwitch.IsSelected;
                 if (btnSwitch.IsSelected)
                 {
@@ -172,6 +172,7 @@
                     function.trait_on_off.curValue = btnSwitch.IsSelected ? "on" : "off";
                     System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                     d.Add(FunctionAttributeKey.OnOff, function.trait_on_off.curValue.ToString());
+                    d.Add(FunctionAttributeKey.FadeTime, function.GetAttrState(FunctionAttributeKey.FadeTime));
                     if (btnSwitch.IsSelected)
                     {
                         if(function.lastBrightness == 0)
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs b/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs
index ef4bf1b..4826777 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs
@@ -88,16 +88,16 @@
         /// </summary>
         void LoadColorChangeEvent()
         {
-            if (!function.online)
-            {
-                new Tip()
-                {
-                    CloseTime = 1,
-                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                    Direction = AMPopTipDirection.None,
-                }.Show(MainPage.BaseView);
-                return;
-            }
+            //if (!function.online)
+            //{
+            //    new Tip()
+            //    {
+            //        CloseTime = 1,
+            //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+            //        Direction = AMPopTipDirection.None,
+            //    }.Show(MainPage.BaseView);
+            //    return;
+            //}
             DateTime colorChangeTime = DateTime.MinValue;
             //bool send = false;
 
@@ -215,16 +215,16 @@
 
             dimmerBar.OnStopTrackingTouchEvent = (sender, e) =>
             {
-                if (!function.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!function.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 new System.Threading.Thread(() =>
                 {
                     System.Threading.Thread.Sleep(200);
@@ -237,7 +237,7 @@
 
                 Control.Ins.SendWriteCommand(function, d);
             };
-            if (function.online)
+            //if (function.online)
             {
                 dimmerBar.OnStartTrackingTouchEvent = (sender, e) =>
                 {
@@ -336,10 +336,10 @@
         {
             btnRestoredPoint.MouseUpEventHandler = (sender, e) =>
             {
-                if (!function.online)
-                {
-                    return;
-                }
+                //if (!function.online)
+                //{
+                //    return;
+                //}
                 if(function.trait_on_off.curValue.ToString() == "off")
                 {
                     return;
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Light/RelayPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Light/RelayPage.cs
index 1bb8d06..f4c4801 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Light/RelayPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Light/RelayPage.cs
@@ -52,7 +52,7 @@
         {
             bodyView = this;
             function = func;
-
+            
         }
         /// <summary>
         /// 鍔犺浇鐣岄潰
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Light/RelayPageBLL.cs b/HDL_ON/UI/UI2/FuntionControlView/Light/RelayPageBLL.cs
index d71f38a..86d183f 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Light/RelayPageBLL.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Light/RelayPageBLL.cs
@@ -62,16 +62,16 @@
         {
             btnSwitchIcon.MouseUpEventHandler = (sender, e) =>
             {
-                if (!function.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!function.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 btnSwitch.IsSelected = btnSwitchIcon.IsSelected = !btnSwitchIcon.IsSelected;
                 new System.Threading.Thread(() =>
                 {
@@ -84,16 +84,16 @@
             };
             btnSwitch.MouseUpEventHandler = (sender, e) =>
             {
-                if (!function.online)
-                {
-                    new Tip()
-                    {
-                        CloseTime = 1,
-                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
-                        Direction = AMPopTipDirection.None,
-                    }.Show(MainPage.BaseView);
-                    return;
-                }
+                //if (!function.online)
+                //{
+                //    new Tip()
+                //    {
+                //        CloseTime = 1,
+                //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
+                //        Direction = AMPopTipDirection.None,
+                //    }.Show(MainPage.BaseView);
+                //    return;
+                //}
                 btnSwitchIcon.IsSelected = btnSwitch.IsSelected = !btnSwitch.IsSelected;
                 new System.Threading.Thread(() =>
                 {
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicModel.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicModel.cs
index 92009db..0f8eabb 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicModel.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/A31MusicModel.cs
@@ -57,13 +57,14 @@
         /// ((褰撳墠鏃堕棿)DateTime.Now - (璁板綍鏃堕棿)LastDateTimeLastDateTime).TotalSeconds=璇樊鏃堕棿(绉�)
         /// </summary>
         public DateTime LastDateTime;
-      
+        /// <summary>
+        /// 璁板綍婊戝姩闊抽噺鏉℃椂闂�<鐢ㄦ潵澶勭悊闊抽噺璺冲姩>
+        /// </summary>
+        public static DateTime ProgressDateTime = DateTime.MinValue;
         /// <summary>
         /// 闊充箰鎾斁鍣↖D
         /// </summary>
         public string UniqueDeviceName = string.Empty;
-
-       
 
         public MusicInfo CurrentMusic = new MusicInfo();
 
@@ -114,10 +115,7 @@
        
 
         public Slaves Slave = new Slaves();
-        /// <summary>
-        /// 璁板綍鏃堕棿
-        /// </summary>
-        public static DateTime ProgressDateTime = DateTime.Now;
+       
 
         /// <summary>
         /// 鍒ゆ柇鏄惁鏄痡son鏁版嵁
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/A31PlayMusicPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/A31PlayMusicPage.cs
index 244082b..d0d4d23 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/A31PlayMusicPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/A31PlayMusicPage.cs
@@ -92,7 +92,8 @@
              {
                  string modeValueString = string.Empty; 
                  string msg = Language.StringByID(StringId.switchTo);
-                 switch (A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.mode))
+                 string modeKeyValue = A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.mode);
+                 switch (modeKeyValue)
                  {
                      //list_cycle鍒楄〃寰幆锛宻ingle_cycle鍗曟洸寰幆锛宺andom闅忔満鎾斁;
                      case ValueProperty.list_cycle:
@@ -110,6 +111,7 @@
                          playView.playOrderBtn.UnSelectedImagePath = "MusicIcon/list.png";
                          msg += Language.StringByID(StringId.listMode);
                          break;
+                  
                  }
                  A31MusicModel.Current.functionMusic.SetAttrState(KeyProperty.mode, modeValueString);
                  new PublicAssmebly().TipMsgAutoClose(msg, false,1000);
@@ -213,6 +215,8 @@
                 playView.volValueBtn.Text = playView.volSeekBar.Progress + "%";
                 if (startVolume != e)
                 {
+                    ///鏇存柊鏈�鏂板��
+                    A31MusicModel.ProgressDateTime = DateTime.Now;
                     startVolume = e;
                     A31MusicModel.Current.functionMusic.SetAttrState(KeyProperty.volume, startVolume);
                     Dictionary<string, string> dic = new Dictionary<string, string>();
@@ -245,7 +249,8 @@
                 if (playView.playBtn.IsSelected)
                 {
                     playView.playBtn.IsSelected = false;
-                    status = ValueProperty.off; 
+                    status = ValueProperty.off;
+                    
                 }
                 else
                 {
@@ -388,8 +393,8 @@
                             //        playView.volValueBtn.Text = A31MusicModel.Current.A31PlayStatus.vol + "%";
                             //    }
                             //}
-
-                            if (1000 < (DateTime.Now - A31MusicModel.ProgressDateTime).TotalMilliseconds)
+                            //涓轰簡闃叉闊抽噺鏉¤烦鍔�,寤堕暱鏇存柊鏃堕棿(澶氬姞1s)
+                            if (2000 < (DateTime.Now - A31MusicModel.ProgressDateTime).TotalMilliseconds || A31MusicModel.ProgressDateTime==DateTime.MinValue)
                             {
                                 //闊抽噺杩涘害鏉�;
                                 playView.volSeekBar.Progress = int.Parse(A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.volume));
@@ -397,15 +402,31 @@
                                 playView.volValueBtn.Text = A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.volume) + "%";
                             }
                             //鏇存柊鎾斁鍣ㄩ煶閲忕粰绯荤粺闊抽噺
-                            Volume.MusicVolume = playView.volSeekBar.Progress;
+                            //Volume.MusicVolume = playView.volSeekBar.Progress;
                             //褰撳墠鎾斁闊充箰鏃堕棿
                             //鎸夐亾鐞嗕笉浼氫负绌猴紝GetAttrState("playing_time")鍊煎彲鑳戒负绌猴紝寮哄埗杞崲int.Parse(锛変細鍑虹幇寮傚父锛屼笉杩囦篃鍋氫簡寮傚父澶勭悊浜�
-                            int playSecond = int.Parse(A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.playing_time))+ (int)(DateTime.Now - A31MusicModel.Current.LastDateTime).TotalSeconds;
-
+                            int playSecond = int.Parse(A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.playing_time));
+                            //璇嗗埆闊充箰鐘舵�佹槸鍚﹀湪鎾斁鐘舵��
+                            if (A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.on_off) == ValueProperty.on)
+                            {
+                                //闊充箰鍦ㄦ挱鏀炬椂锛屽啀璁$畻鎾斁鏃堕棿(鐜板湪鏃堕棿=鍘熸潵鏃堕棿+1绉�)
+                                playSecond +=(int)(DateTime.Now - A31MusicModel.Current.LastDateTime).TotalSeconds;
+                                ///姝屾洸璁板綍鏆傛椂鏃堕棿鍐欏叆缂撳瓨锛�
+                                A31MusicModel.Current.functionMusic.SetAttrState(KeyProperty.playing_time, playSecond);
+                            }
+                            if (playSecond<=0)
+                            {
+                                ///鎾斁鏃堕棿涓嶈兘灏忎簬0锛�
+                                playSecond = 0;
+                            }
+                            if (playSecond >=totalSecond)
+                            {
+                                ///鎾斁鏃堕棿涓嶈兘瓒呰繃鎬绘椂闂达紱
+                                playSecond = totalSecond;
+                            }
                             int playMusicMinute = playSecond / 60;
                             //绉掗挓
                             int playMusicSecond = playSecond % 60;
-
                             string playTime = (playMusicMinute.ToString().Length < 2 ? "0" + playMusicMinute.ToString() : playMusicMinute.ToString()) + ":" + (playMusicSecond.ToString().Length < 2 ? "0" + playMusicSecond.ToString() : playMusicSecond.ToString());
 
                             if (A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.on_off) == ValueProperty.on)
@@ -431,6 +452,9 @@
                                 playView.playBtn.IsSelected = false;
                                 //鍋滄鎾斁
                                 playView.startTimeBtn.Text =playTime;
+                                //playView.startTimeBtn.Text ="00:00";
+                                ///姝屾洸璁板綍鏆傚仠鏃堕棿锛�<LastDateTime 璁$畻鏃堕棿鎾斁鏃堕棿鏈夌敤鍒�>
+                                A31MusicModel.Current.LastDateTime = DateTime.Now;
                             }
                             playView.songNameTextView.Text = A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.song_name) == null ? "Unkown" : A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.song_name);
                             playView.singerBtn.Text = A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.song_name) == null ? "Unkown" : A31MusicModel.Current.functionMusic.GetAttrState(KeyProperty.song_name);
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/MusicMain.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/MusicMain.cs
index 0556fea..cef6e69 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/MusicMain.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/MusicMain.cs
@@ -167,6 +167,7 @@
                     {
                         try
                         {
+                            
                             SendMethod.mMethod.RefreshDeviceStatus(new List<string> { a31player.functionMusic.deviceId });
                             System.Threading.Thread.Sleep(500);
                         }
@@ -290,6 +291,7 @@
                         musicView.musicNameBtn.Text = player.functionMusic.name;
                         if (player.functionMusic.GetAttrState(KeyProperty.on_off) == ValueProperty.on)
                         {
+
                             musicView.playBtn.IsSelected = true;
                         }
                         else
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/MusicProperty.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/MusicProperty.cs
index 22bd45a..65be6b6 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/MusicProperty.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/MusicProperty.cs
@@ -105,14 +105,18 @@
         /// </summary>
         public const string down = "down";
         /// <summary>
-        /// 寮�<on>
+        /// 寮�/鎾斁<on>
         /// </summary>
         public const string on = "on";
         /// <summary>
-        /// 鍏�<off>
+        /// 鍏�/鍋滄<off>
         /// </summary>
         public const string off = "off";
         /// <summary>
+        /// 鏆傚仠
+        /// </summary>
+        public const string pause = "pause";
+        /// <summary>
         /// 鍗曟洸<single>
         /// </summary>
         public const string single = "single";
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Music/SendMethod.cs b/HDL_ON/UI/UI2/FuntionControlView/Music/SendMethod.cs
index fda2963..5c5590d 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Music/SendMethod.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Music/SendMethod.cs
@@ -12,7 +12,7 @@
 {
     public class SendMethod
     {
-        private static SendMethod sMethod=null;    
+        private static SendMethod sMethod = null;
         public static SendMethod mMethod
         {
             get
@@ -48,7 +48,8 @@
             })
             { IsBackground = true }.Start();
         }
-
+        //璁板綍姝屾洸鎾斁鏃堕棿
+        private int songPlayTime = -1;
         /// <summary>
         /// 鑾峰彇璁惧鏈�鏂扮殑鐘舵��
         /// </summary>
@@ -58,7 +59,7 @@
             try
             {
                 //RefreshDeviceStatus(functionIds);
-                a31Music.LastDateTime = DateTime.Now;
+                //a31Music.LastDateTime = DateTime.Now;
                 ///浠庣紦瀛橀噷闈㈡煡鎵鹃煶涔愭挱鏀惧櫒瀵硅薄<缂撳瓨鏁版嵁鏀跺埌鎺ㄩ�佽繃鏉ョ殑鐘舵�佷細鏇存柊缂撳瓨鏁版嵁>
                 var allLocalFuntion = FunctionList.List.GetDeviceFunctionList();
                 var localFunction = allLocalFuntion.Find((obj) => obj.sid == sid);
@@ -68,6 +69,13 @@
                 }
                 ///鏇存柊鐨勬暟鎹�
                 a31Music.functionMusic = localFunction;
+                if (int.Parse(A31MusicModel.Current.functionMusic.GetAttrState(UI2.FuntionControlView.Music.KeyProperty.playing_time)) != songPlayTime)
+                {
+                    ///姝屾洸璁板綍鏃堕棿鍜屽綋鍓嶆椂闂翠笉涓�鏍凤紝绔嬪嵆鏇存柊鏁版嵁鍙嶉鏃堕棿
+                    a31Music.LastDateTime = DateTime.Now;
+                    ///姝屾洸璁板綍鏃堕棿鍜屽綋鍓嶆椂闂翠笉涓�鏍凤紝绔嬪嵆鏇存柊姝屾洸鎾斁鏃堕棿
+                    songPlayTime = int.Parse(A31MusicModel.Current.functionMusic.GetAttrState(UI2.FuntionControlView.Music.KeyProperty.playing_time));
+                }
 
             }
             catch { }
@@ -89,6 +97,7 @@
                 {
                     return;
                 }
+
             }
             catch { }
         }
@@ -121,7 +130,7 @@
                 d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
                 d.Add("deviceIds", new List<string> { music.deviceId });
                 var responsePackNew = RequestServerhomeId(d, NewAPI.Api_Post_PlayerList);
-                if (responsePackNew.Code != "0"||responsePackNew.Data == null ||responsePackNew.Data.ToString() == "")
+                if (responsePackNew.Code != "0" || responsePackNew.Data == null || responsePackNew.Data.ToString() == "")
                 {
                     return;
                 }
@@ -130,7 +139,7 @@
                 var palyLists = Newtonsoft.Json.JsonConvert.DeserializeObject<List<PalyListInfo>>(str);
                 if (palyLists == null)
                 {
-                    palyLists =new List<PalyListInfo>();
+                    palyLists = new List<PalyListInfo>();
                 }
                 if (palyLists.Count > 0)
                 {
@@ -143,12 +152,12 @@
             }
 
         }
-       
+
         /// <summary>
         ///璇锋眰鏈嶅姟鍣紙涓庝綇瀹呮湁鍏�:渚嬪锛沨omeId锛� 
         /// </summary>
         /// <returns></returns>
-        public  ResponsePackNew RequestServerhomeId(object o, string api_Url, int mTimeout = 5)
+        public ResponsePackNew RequestServerhomeId(object o, string api_Url, int mTimeout = 5)
         {
             var requestJson = HttpUtil.GetSignRequestJson(o);
             return HttpUtil.RequestHttpsPostFroHome(api_Url, requestJson, mTimeout);
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Panel/EnvironmentPanelPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Panel/EnvironmentPanelPage.cs
new file mode 100644
index 0000000..abb5549
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/Panel/EnvironmentPanelPage.cs
@@ -0,0 +1,174 @@
+锘縰sing System;
+using HDL_ON.Entity;
+using HDL_ON.Stan;
+using HDL_ON.UI.CSS;
+using Shared;
+
+namespace HDL_ON.UI
+{
+    public class EnvironmentPanelPage : DeviceFunction4CardCommonForm
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 鍥炬爣
+        /// </summary>
+        private IconViewControl btnIcon = null;
+        /// <summary>
+        /// 鏂囨湰鎺т欢
+        /// </summary>
+        private NormalViewControl btnSuctionView = null;
+
+        Function acDevice;
+        Function fhDevice;
+        Function airFreshDevice;
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鍒濆鍖栫櫧鑹插尯鍩熺殑鍐呭
+        /// </summary>
+        public override void InitFrameWhiteContent()
+        {
+            base.ShowColltionButton = false;
+            base.SetTitleText(Language.StringByID(StringId.SmartPanel));
+            foreach (var sid in device.targetSids)
+            {
+                var targetObj = FunctionList.List.Functions.Find((obj) => sid == obj.sid);
+                if (targetObj == null)
+                {
+                    continue;
+                }
+                if (SPK.AcSpkList().Contains(targetObj.spk))
+                {
+                    acDevice = targetObj;
+                }
+                else if (SPK.FhSpkList().Contains(targetObj.spk))
+                {
+                    fhDevice = targetObj;
+                }
+                else if (SPK.AirFreshSpkList().Contains(targetObj.spk))
+                {
+                    airFreshDevice = targetObj;
+                }
+            }
+
+            //娣诲姞绗簩绱㈠紩椤�
+            this.Add4Page();
+            //鍒濆鍖栫涓�涓储寮曢〉鐨勫唴瀹�
+            this.InitFrameWhiteContent1();
+            //鍒濆鍖栫浜屼釜绱㈠紩椤电殑鍐呭
+            this.InitFrameWhiteContent2();
+            this.InitFrameWhiteContent3();
+            //鍒锋柊鐣岄潰鐘舵��
+            //this.RefreshFormStatu();
+            //璇诲彇鐘舵��
+            //new System.Threading.Thread(() =>
+            //{
+            //    DriverLayer.Control.Ins.SendReadCommand(device);
+            //})
+            //{ IsBackground = true }.Start();
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栫涓�涓储寮曢〉鐨勫唴瀹�
+        /// </summary>
+        private void InitFrameWhiteContent1()
+        {
+            btnIcon = new IconViewControl(198)
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealWidth(146),
+                UnSelectedImagePath = "FunctionIcon/Panel/PanelHelpNormalBgIcon.png",
+                SelectedImagePath = "FunctionIcon/Panel/PanelHelpAlarmBgIcon.png",
+            };
+            FrameWhiteCentet1.AddChidren(btnIcon);
+
+            btnSuctionView = new NormalViewControl(300, 84, true)
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = btnIcon.Bottom,
+                TextAlignment = TextAlignment.Center,
+                TextSize = CSS_FontSize.TextFontSize,
+                TextColor = CSS_Color.MainColor,
+                SelectedTextColor = CSS_Color.AuxiliaryColor2,
+                //BackgroundColor = 0xFFFF0000
+            };
+            FrameWhiteCentet1.AddChidren(btnSuctionView);
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栫浜屼釜绱㈠紩椤电殑鍐呭
+        /// </summary>
+        private void InitFrameWhiteContent2()
+        {
+            var acPage = new UI2.FuntionControlView.Panel.AcContentView(acDevice);
+            FrameWhiteCentet2.AddChidren(acPage);
+            acPage.InitContent();
+        }
+
+        private void InitFrameWhiteContent3()
+        {
+            var fhPage = new FhContentView(fhDevice);
+            FrameWhiteCentet3.AddChidren(fhPage);
+            fhPage.InitContentView(true);
+        }
+
+        #endregion
+
+        #region 鈻� 璁惧鐘舵�佸弽棣坃______________________
+
+        /// <summary>
+        /// 璁惧鐘舵�佸弽棣�
+        /// </summary>
+        /// <param name="i_LocalDevice"></param>
+        public override void DeviceStatuPush(Function i_LocalDevice)
+        {
+            //涓嶆槸鍚屼竴涓笢瑗�
+            if (this.device.sid != i_LocalDevice.sid) { return; }
+
+            //鍒锋柊鐣岄潰鐘舵��
+            this.RefreshFormStatu();
+        }
+
+        #endregion
+
+        #region 鈻� 鍙戦�佸悇绉嶅懡浠______________________
+
+        #endregion
+
+        #region 鈻� 鍒锋柊鐣岄潰鐘舵�乢______________________
+
+        /// <summary>
+        /// 鍒锋柊鐣岄潰鐘舵��
+        /// </summary>
+        private void RefreshFormStatu()
+        {
+            Application.RunOnMainThread(() => {
+                var temp = device.attributes.Find((sta) => sta.key == "alarm_status");
+                if (temp != null)
+                {
+                    if (temp.state == "alarm")
+                    {
+                        btnIcon.IsSelected = true;
+                        btnSuctionView.TextID = StringId.InAlarm;
+                        btnSuctionView.IsSelected = true;
+                    }
+                    else
+                    {
+                        btnIcon.IsSelected = false;
+                        btnSuctionView.TextID = StringId.SensorNormalState;
+                        btnSuctionView.IsSelected = false;
+                    }
+                }
+            });
+        }
+
+        #endregion
+
+        #region 鈻� 涓�鑸柟娉昣__________________________
+
+        #endregion
+    }
+}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Panel/PanelHelpPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Panel/PanelHelpPage.cs
new file mode 100644
index 0000000..1350a45
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/Panel/PanelHelpPage.cs
@@ -0,0 +1,142 @@
+锘縰sing System;
+using HDL_ON.Entity;
+using HDL_ON.Stan;
+using HDL_ON.UI.CSS;
+using Shared;
+
+namespace HDL_ON.UI.UI2.FuntionControlView.Panel
+{
+    public class PanelHelpPage : DeviceFunctionCardCommonForm
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 鍥炬爣
+        /// </summary>
+        private IconViewControl btnIcon = null;
+        /// <summary>
+        /// 鏂囨湰鎺т欢
+        /// </summary>
+        private NormalViewControl btnSuctionView = null;
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鍒濆鍖栫櫧鑹插尯鍩熺殑鍐呭
+        /// </summary>
+        public override void InitFrameWhiteContent()
+        {
+            base.ShowColltionButton = false;
+            base.SetTitleText(Language.StringByID(StringId.SmartPanel));
+
+            //娣诲姞绗簩绱㈠紩椤�
+            this.AddSecondPage();
+            //鍒濆鍖栫涓�涓储寮曢〉鐨勫唴瀹�
+            this.InitFrameWhiteContent1();
+            //鍒濆鍖栫浜屼釜绱㈠紩椤电殑鍐呭
+            this.InitFrameWhiteContent2();
+            //鍒锋柊鐣岄潰鐘舵��
+            this.RefreshFormStatu();
+            //璇诲彇鐘舵��
+            new System.Threading.Thread(() =>
+            {
+                DriverLayer.Control.Ins.SendReadCommand(device);
+            })
+            { IsBackground = true }.Start();
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栫涓�涓储寮曢〉鐨勫唴瀹�
+        /// </summary>
+        private void InitFrameWhiteContent1()
+        {
+            btnIcon = new IconViewControl(198)
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealWidth(146),
+                UnSelectedImagePath = "FunctionIcon/Panel/PanelHelpNormalBgIcon.png",
+                SelectedImagePath = "FunctionIcon/Panel/PanelHelpAlarmBgIcon.png",
+            };
+            FrameWhiteCentet1.AddChidren(btnIcon);
+
+            btnSuctionView = new NormalViewControl(300, 84, true)
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = btnIcon.Bottom,
+                TextAlignment = TextAlignment.Center,
+                TextSize = CSS_FontSize.TextFontSize,
+                TextColor = CSS_Color.MainColor,
+                SelectedTextColor = CSS_Color.AuxiliaryColor2,
+                //BackgroundColor = 0xFFFF0000
+            };
+            FrameWhiteCentet1.AddChidren(btnSuctionView);
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栫浜屼釜绱㈠紩椤电殑鍐呭
+        /// </summary>
+        private void InitFrameWhiteContent2()
+        {
+            var paging = new ArmSensorHistroyPaging(device);
+            paging.InitFrame(FrameWhiteCentet2);
+        }
+
+        #endregion
+
+        #region 鈻� 璁惧鐘舵�佸弽棣坃______________________
+
+        /// <summary>
+        /// 璁惧鐘舵�佸弽棣�
+        /// </summary>
+        /// <param name="i_LocalDevice"></param>
+        public override void DeviceStatuPush(Function i_LocalDevice)
+        {
+            //涓嶆槸鍚屼竴涓笢瑗�
+            if (this.device.sid != i_LocalDevice.sid) { return; }
+
+            //鍒锋柊鐣岄潰鐘舵��
+            this.RefreshFormStatu();
+        }
+
+        #endregion
+
+        #region 鈻� 鍙戦�佸悇绉嶅懡浠______________________
+
+        #endregion
+
+        #region 鈻� 鍒锋柊鐣岄潰鐘舵�乢______________________
+
+        /// <summary>
+        /// 鍒锋柊鐣岄潰鐘舵��
+        /// </summary>
+        private void RefreshFormStatu()
+        {
+            Application.RunOnMainThread(() => {
+                var temp = device.attributes.Find((sta) => sta.key == "alarm_status");
+                if (temp != null)
+                {
+                    if (temp.state == "alarm")
+                    {
+                        btnIcon.IsSelected = true;
+                        btnSuctionView.TextID = StringId.InAlarming;
+                        btnSuctionView.IsSelected = true;
+                    }
+                    else
+                    {
+                        btnIcon.IsSelected = false;
+                        btnSuctionView.TextID = StringId.Monitoring;
+                        btnSuctionView.IsSelected = false;
+                    }
+                }
+            });
+        }
+
+        #endregion
+
+        #region 鈻� 涓�鑸柟娉昣__________________________
+
+        #endregion
+    }
+}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Video/ObjectClass.cs b/HDL_ON/UI/UI2/FuntionControlView/Video/ObjectClass.cs
index 384f58d..2cdae00 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Video/ObjectClass.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Video/ObjectClass.cs
@@ -132,6 +132,11 @@
         /// </summary>
         public string deviceName = string.Empty;
         /// <summary>
+        /// 鍖哄垎鏄媱鑰愬厠杩樻槸鑷爺
+        /// 鐩墠鍙湁鑷爺鏈夊�硷細door.gate
+        /// </summary>
+        public string spk = string.Empty;
+        /// <summary>
         /// 璁惧id銆佸簭鍒楀彿銆乽uid
         /// </summary>
         public string deviceId = string.Empty;
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Video/VideoMainView.cs b/HDL_ON/UI/UI2/FuntionControlView/Video/VideoMainView.cs
index a2a6460..c2cfd0b 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Video/VideoMainView.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Video/VideoMainView.cs
@@ -2,14 +2,16 @@
 using HDL_ON.UI.Music;
 using System.Collections.Generic;
 using Shared;
-using HDL_ON.Stan;
-using ZXing.QrCode.Internal;
-using static HDL_ON.UI.UI2.FuntionControlView.Video.VideoMethod;
+using HDL_ON.UI.CSS;
 
 namespace HDL_ON.UI.UI2.FuntionControlView.Video
 {
     public class VideoMainView : FrameLayout
     {
+
+        List<Video> ximoVideoList = new List<Video>();
+
+
         /// <summary>
         /// 鍔犺浇鍙瀵硅UI
         /// </summary>
@@ -17,6 +19,8 @@
         /// <param name="videoList">鍙瀵硅鍒楄〃</param>
         public void Show(List<CallView> listCall, List<Video> videoList)
         {
+            ximoVideoList = videoList.FindAll((obj) => obj.spk == "door.gate");
+
             #region 甯冨眬鐣岄潰
             this.BackgroundColor = MusicColor.ViewColor;
             var topView = new TopView();
@@ -199,11 +203,17 @@
             };
             bjFl.AddChidren(vv);
 
-            bool bol = haveFlVideo(videoList);
+            bool bol = haveQRCodeVideo(videoList);
             if (bol)
             {
                 //闂ㄧ浜岀淮鐮佸浐瀹氭湁鐨�,铏氭嫙涓�涓嚭鏉�
-                videoList.Add(new Video { deviceName = Language.StringByID(StringId.menjinerweima), interphoneType = "100" });
+                videoList.Add(new Video { deviceName = Language.StringByID(StringId.menjinerweima), interphoneType = "100",devType = "100" });
+            }
+            if (ximoVideoList.Count > 0)
+            {
+                //寰樺緤鎶ヨ
+                videoList.Add(new Video { deviceName = Language.StringByID(StringId.WanderingAlarm), interphoneType = "222", devType = "222" });
+                
             }
             //鏁扮粍涓暟
             //int value = 15;
@@ -225,10 +235,13 @@
             };
             vv.AddChidren(fL);
             int line = 0;
+
+
             #endregion
             for (int i = 1, j = 0; i <= videoList.Count; i++, j++)
             {
                 var video = videoList[i - 1];
+             
                 #region
                 var fLayout = new FrameLayout
                 {
@@ -247,6 +260,7 @@
                     UnSelectedImagePath = "VideoIcon/weiqiangji.png",
                 };
                 fLayout.AddChidren(iconBtn);
+
 
                 var deviceNameBtn = new Button
                 {
@@ -275,19 +289,28 @@
                 //闂ㄥ彛鏈虹殑鐐瑰嚮浜嬩欢
                 clickBtn.MouseUpEventHandler += (sender, e) =>
                 {
+                    if (video.devType == "VisitorQrCode")
+                    {
+
+                        return;
+                    }
+                    else if (video.devType == "FaceManagement")
+                    {
+
+                        return;
+                    }
+
                     var video2 = clickBtn.Tag as Video;
                     if (video2.devType == "100")
                     {
-                        //闂ㄧ浜岀淮鐮佸浐瀹氭湁鐨�
-                        VideoSend.GetQRcode(this, video2, (tag, paw) =>
-                        {
-                            if (tag)
-                            {
-                                //娉ㄦ剰锛氬瘑鐮佹湁鍙兘寤舵椂1鍒嗛挓鐢熸晥
-                                View.ShowDialog showDialog = new View.ShowDialog();
-                                showDialog.QRcode(paw);
-                            }
-                        });
+                        ChooseVideoShowQRCode();
+
+                    }
+                    else if(video2.devType == "222")
+                    {
+                        ChooseAlarmShow();
+
+
                     }
                     else
                     {
@@ -554,20 +577,272 @@
 
 
         //鍒ゆ柇鏄惁鏈� 涓版灄鍙瀵硅
-        private bool haveFlVideo(List<Video> videoList)
+        private bool haveQRCodeVideo(List<Video> videoList)
         {
             bool bol = false;
 
             for (int i = 0; i < videoList.Count; i++)
             {
                 var _video = videoList[i];
-                if (_video.interphoneType == "FLVI")
+                if (_video.interphoneType == "FLVI"|| _video.spk == "door.gate")
+                {
                     return true;
+                }
             }
 
             return bol;
         }
 
+
+        /// <summary>
+        /// 鍔犺浇鎻愮ず寮圭獥
+        /// </summary>
+        public void ChooseVideoShowQRCode()
+        {
+            Dialog dialog = new Dialog()
+            {
+                BackgroundColor = CSS_Color.DialogTransparentColor1,
+            };
+
+            FrameLayout dialogView = new FrameLayout();
+            dialog.AddChidren(dialogView);
+            dialogView.MouseUpEventHandler = (sender, e) => {
+                dialog.Close();
+            };
+
+            var contentView = new FrameLayout()
+            {
+                Gravity = Gravity.Center,
+                Width = Application.GetRealWidth(270),
+                Height = Application.GetRealHeight(280),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+                BorderColor = 0x00000000,
+                BorderWidth = 0,
+                Radius = (uint)Application.GetMinRealAverage(10),
+            };
+            dialogView.AddChidren(contentView);
+
+            var btnTitle = new Button()
+            {
+                Height = Application.GetRealHeight(64),
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextID = StringId.menjinerweima,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+            };
+            contentView.AddChidren(btnTitle);
+
+            var listView = new VerticalScrolViewLayout()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealHeight(70),
+                Width = Application.GetRealWidth(230),
+                Height = Application.GetRealHeight(200),
+            };
+            contentView.AddChidren(listView);
+
+            //if (ximoVideoList.Count == 1)
+            {
+                Loading loading = new Loading();
+                contentView.AddChidren(loading);
+                loading.Start("");
+                new System.Threading.Thread(() =>
+                {
+                    try
+                    {
+                        var pack = VideoSend.GetQRcode();
+                        var pairs = Newtonsoft.Json.JsonConvert.DeserializeObject<List<AccessControlQRode>>(pack.Data.ToString());
+                        if (pairs.Count > 0)
+                        {
+                            Application.RunOnMainThread(() =>
+                            {
+                                ImageView codeImage = new ImageView()
+                                {
+                                    Gravity = Gravity.Center,
+                                    Height = Application.GetRealWidth(320),
+                                    Width = Application.GetRealWidth(320),
+                                    ImageBytes = Scan.BytesFromText(pairs[0].qrcode, Application.GetRealWidth(200), Application.GetRealWidth(200)),
+                                };
+                                dialogView.AddChidren(codeImage);
+                            });
+                        }
+                    }
+                    catch (Exception ex)
+                    {
+                        MainPage.Log($"鑾峰彇闂ㄧ浜岀淮鐮佸紓甯革細{ex.Message}");
+                    }
+                    finally
+                    {
+                        Application.RunOnMainThread(() =>
+                        {
+                            if (loading != null)
+                            {
+                                loading.Hide();
+                                loading.RemoveFromParent();
+                            }
+                        });
+                    }
+                })
+                { IsBackground = true }.Start();
+            }
+            //else
+            //{
+
+            //    foreach (var v in ximoVideoList)
+            //    {
+            //        Button btnMsg = new Button()
+            //        {
+            //            Gravity = Gravity.CenterHorizontal,
+            //            Height = Application.GetRealHeight(50),
+            //            Width = Application.GetRealHeight(160),
+            //            TextAlignment = TextAlignment.Center,
+            //            TextColor = CSS_Color.TextualColor,
+            //            TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+            //            Text = v.deviceName,
+            //            Radius = (uint)Application.GetRealWidth(5),
+            //            BackgroundColor = CSS_Color.DividingLineColor,
+            //            IsMoreLines = true,
+            //        };
+            //        listView.AddChidren(btnMsg);
+
+            //        listView.AddChidren(new Button() { Height = Application.GetRealHeight(12) });
+
+            //        btnMsg.MouseUpEventHandler = (sender, e) =>
+            //        {
+
+
+            //            if (v.spk == "door.gate")
+            //            {
+                          
+            //                return;
+            //            }
+
+            //            //闂ㄧ浜岀淮鐮佸浐瀹氭湁鐨�
+            //            VideoSend.GetQRcode(this, v, (tag, paw) =>
+            //            {
+            //                if (tag)
+            //                {
+            //                //娉ㄦ剰锛氬瘑鐮佹湁鍙兘寤舵椂1鍒嗛挓鐢熸晥
+            //                View.ShowDialog showDialog = new View.ShowDialog();
+            //                    showDialog.QRcode(paw);
+            //                }
+            //            });
+            //            dialog.Close();
+            //        };
+            //    }
+            //}
+            dialog.Show();
+
+        }
+
+        /// <summary>
+        /// 閫夋嫨寰樺緤鎶ヨ鍒楄〃鏄剧ず
+        /// </summary>
+        public void ChooseAlarmShow()
+        {
+            Dialog dialog = new Dialog()
+            {
+                BackgroundColor = CSS_Color.DialogTransparentColor1,
+            };
+
+            FrameLayout dialogView = new FrameLayout();
+            dialog.AddChidren(dialogView);
+            dialogView.MouseUpEventHandler = (sender, e) => {
+                dialog.Close();
+            };
+
+            var contentView = new FrameLayout()
+            {
+                Gravity = Gravity.Center,
+                Width = Application.GetRealWidth(270),
+                Height = Application.GetRealHeight(280),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+                BorderColor = 0x00000000,
+                BorderWidth = 0,
+                Radius = (uint)Application.GetMinRealAverage(10),
+            };
+            dialogView.AddChidren(contentView);
+
+            var btnTitle = new Button()
+            {
+                Height = Application.GetRealHeight(64),
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextID = StringId.menjinerweima,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+            };
+            contentView.AddChidren(btnTitle);
+
+            var listView = new VerticalScrolViewLayout()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealHeight(70),
+                Width = Application.GetRealWidth(230),
+                Height = Application.GetRealHeight(200),
+            };
+            contentView.AddChidren(listView);
+
+            if (ximoVideoList.Count == 1)
+            {
+                var wanderingAlarmPage = new WanderingAlarmPage();
+                MainPage.BasePageView.AddChidren(wanderingAlarmPage);
+                wanderingAlarmPage.LoadPage(ximoVideoList[0].deviceId);
+                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+
+            }
+            else
+            {
+
+                foreach (var v in ximoVideoList)
+                {
+                    Button btnMsg = new Button()
+                    {
+                        Gravity = Gravity.CenterHorizontal,
+                        Height = Application.GetRealHeight(50),
+                        Width = Application.GetRealHeight(160),
+                        TextAlignment = TextAlignment.Center,
+                        TextColor = CSS_Color.TextualColor,
+                        TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                        Text = v.deviceName,
+                        Radius = (uint)Application.GetRealWidth(5),
+                        BackgroundColor = CSS_Color.DividingLineColor,
+                        IsMoreLines = true,
+                    };
+                    listView.AddChidren(btnMsg);
+
+                    listView.AddChidren(new Button() { Height = Application.GetRealHeight(12) });
+
+                    btnMsg.MouseUpEventHandler = (sender, e) =>
+                    {
+
+
+                        var wanderingAlarmPage = new WanderingAlarmPage();
+                        MainPage.BasePageView.AddChidren(wanderingAlarmPage);
+                        wanderingAlarmPage.LoadPage(v.deviceId);
+                        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+
+                        dialog.Close();
+                    };
+                }
+            }
+            dialog.Show();
+
+        }
+
+
     }
 
+    public class AccessControlQRode
+    {
+        public string title = string.Empty;
+        public string codeType = string.Empty;
+        public string userName = string.Empty;
+        public string houseFullName = string.Empty;
+        public string communityName = string.Empty;
+        public string desc = string.Empty;
+        public string businessType = string.Empty;
+        public string qrcode = string.Empty;
+    }
+
+
 }
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Video/VideoSend.cs b/HDL_ON/UI/UI2/FuntionControlView/Video/VideoSend.cs
index ae759bb..9388f8b 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Video/VideoSend.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Video/VideoSend.cs
@@ -3,6 +3,7 @@
 using System.IO;
 using System.Net;
 using HDL_ON.DAL.Server;
+using HDL_ON.Entity;
 using HDL_ON.UI.UI2.PersonalCenter.PirDevice;
 using Newtonsoft.Json.Linq;
 using Shared;
@@ -81,6 +82,18 @@
             return revertObj;
         }
 
+        public static ResponsePackNew GetQRcode()
+        {
+            var jobject = new JObject();
+            jobject.Add("userId", UserInfo.Current.ID);
+            jobject.Add("userType", "C");
+            jobject.Add("houseId", DB_ResidenceData.Instance.CurrentRegion.id);
+            jobject.Add("codeSecond", "60");
+            var requestJson = HttpUtil.GetSignRequestJson(jobject);//鏁版嵁绛惧悕
+            var revertObj = HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_OwnerQRCode, requestJson);
+            return revertObj;
+        }
+
         /// <summary>
         /// 涓婃姤鍔ㄦ�佸紑閿佸瘑鐮�(娉ㄦ剰锛氬瘑鐮佹湁鍙兘寤舵椂1鍒嗛挓鐢熸晥)
         /// </summary>
@@ -90,12 +103,21 @@
             bool if_bool = false;
             //涓存椂瀵嗙爜
             string pwd = VideoMethod.GetCode();
-            var jobject = new JObject();
            jobject.Add("communityID", video.flRoomBindVO.flCmtId);//绀惧尯ID
-            jobject.Add("fromTime", VideoMethod.GetCurrentTimeStamp());//寮�濮嬫椂闂�
-            jobject.Add("validTime", VideoMethod.GetTomorrowTimeStamp());//鏈夋晥鏃堕棿
-            jobject.Add("unitno", video.flRoomBindVO.flBuildingId);//鍗曞厓鍙�
-            jobject.Add("roomno", video.flRoomBindVO.flRoomId);//鎴块棿鍙�
-            jobject.Add("code", pwd);
            jobject.Add("userKey", video.flRoomBindVO.id);
            jobject.Add("timestamp", VideoMethod.GetCurrentTimeStamp());
            jobject.Add("secretKey", video.flRoomBindVO.flSecretKey);
            jobject.Add("method", "setdynamicpwd");
            jobject.Add("numTimes", "5");
+            var jobject = new JObject();
+
+
+                jobject.Add("communityID", video.flRoomBindVO.flCmtId);//绀惧尯ID
+                jobject.Add("fromTime", VideoMethod.GetCurrentTimeStamp());//寮�濮嬫椂闂�
+                jobject.Add("validTime", VideoMethod.GetTomorrowTimeStamp());//鏈夋晥鏃堕棿
+                jobject.Add("unitno", video.flRoomBindVO.flBuildingId);//鍗曞厓鍙�
+                jobject.Add("roomno", video.flRoomBindVO.flRoomId);//鎴块棿鍙�
+                jobject.Add("code", pwd);
+                jobject.Add("userKey", video.flRoomBindVO.id);
+                jobject.Add("timestamp", VideoMethod.GetCurrentTimeStamp());
+                jobject.Add("secretKey", video.flRoomBindVO.flSecretKey);
+                jobject.Add("method", "setdynamicpwd");
+                jobject.Add("numTimes", "5");
+            
             //鍔犺浇log
             Loading loading = new Loading();
             frame.AddChidren(loading);
@@ -104,7 +126,9 @@
             {
                 try
                 {
-                    var str = HttpWebRequest(NewAPI.API_POST_FL_QRcode, jobject.ToString(), "POST");
+                    string str = "";
+
+                    str = HttpWebRequest(NewAPI.API_POST_FL_QRcode, jobject.ToString(), "POST");
                     if (!string.IsNullOrEmpty(str))
                     {
                         var json = JObject.Parse(str);
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Video/WanderingAlarmPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Video/WanderingAlarmPage.cs
new file mode 100644
index 0000000..8df00dd
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/Video/WanderingAlarmPage.cs
@@ -0,0 +1,188 @@
+锘縰sing System;
+using System.Collections.Generic;
+using HDL_ON.DAL.Server;
+using HDL_ON.UI.CSS;
+using Shared;
+namespace HDL_ON.UI.UI2.FuntionControlView.Video
+{
+    public class WanderingAlarmPage : FrameLayout
+    {
+        FrameLayout bodyView;
+        public WanderingAlarmPage()
+        {
+            bodyView = this;
+        }
+
+        VerticalScrolViewLayout contentView;
+
+        public void LoadPage(string deviceId)
+        {
+            bodyView.BackgroundColor = CSS_Color.MainBackgroundColor;
+            new TopViewDiv(bodyView, Language.StringByID(StringId.WanderingAlarm)).LoadTopView();
+
+            var btnTipMsg = new Button()
+            {
+                Y = Application.GetRealHeight(64),
+                X = Application.GetRealWidth(20),
+                Height = Application.GetRealHeight(58),
+                Width = Application.GetRealWidth(318),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = CSS_Color.PromptingColor1,
+                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                Text = "*鍙瀵硅鍙互鑷姩璇嗗埆闂ㄥ彛鍙枒浜哄憳锛屽苟鍙戣捣寰樺緤鎶ヨ璁板綍"
+            };
+            if(Language.CurrentLanguage != "Chinese")
+            {
+                btnTipMsg.Text = "*Visual intercom can automatically identify suspicious persons at the door and initiate wandering alarm records";
+            }
+            bodyView.AddChidren(btnTipMsg);
+
+            contentView = new VerticalScrolViewLayout()
+            {
+                Y = Application.GetRealHeight(64 + 62),
+                Height = Application.GetRealHeight(550),
+            };
+            bodyView.AddChidren(contentView);
+
+            Loading loading = new Loading();
+            bodyView.AddChidren(loading);
+            loading.Start("");
+            new System.Threading.Thread(()=> {
+                try
+                {
+                    HttpServerRequest http = new HttpServerRequest();
+                    var pack = http.GetAlarmRecords(deviceId);
+                    if (pack.Code == StateCode.SUCCESS)
+                    {
+                        var obj = Newtonsoft.Json.JsonConvert.DeserializeObject<AlarmRecordInfoPack>(pack.Data.ToString());
+                        LoadSceneGallery(obj);
+                    }
+                }
+                catch (Exception ex)
+                {
+                    MainPage.Log($"璇诲彇寰樺緤鎶ヨ鏁版嵁寮傚父锛歿ex.Message}");
+                }
+                finally
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        if (loading != null)
+                        {
+                            loading.Hide();
+                            loading.RemoveFromParent();
+                        }
+                    });
+                }
+            }) { IsBackground = true }.Start();
+        }
+        /// <summary>
+        /// 鍔犺浇鍦烘櫙鍥惧簱
+        /// </summary>
+        void LoadSceneGallery(AlarmRecordInfoPack pack)
+        {
+            FrameLayout sceneImageRow = new FrameLayout()
+            {
+                Height = Application.GetRealWidth(128),
+            };
+            Application.RunOnMainThread(() =>
+            {
+                for (int i = 0; i < pack.list.Count; i++)
+                {
+                    var item = pack.list[i];
+                    var imageBytes = ImageUtlis.Current.DownImageByImageUrl(item.alarmImg);
+                    var sceneImageView = new ImageView()
+                    {
+                        Width = Application.GetRealWidth(172),
+                        Height = Application.GetRealHeight(90),
+                        Radius = (uint)Application.GetRealWidth(12),
+                        ImageBytes = imageBytes
+                    };
+                    var btnTime = new Button()
+                    {
+                        Width = Application.GetRealHeight(160),
+                        Height = Application.GetRealHeight(41),
+                        Y = Application.GetRealHeight(90),
+                        Text = Utlis.UnixToDateTimeMS(item.alarmTime).ToString(),
+                        TextColor = CSS_Color.FirstLevelTitleColor,
+                        TextAlignment = TextAlignment.Center
+                    };
+                    if (i % 2 == 0)
+                    {
+                        sceneImageRow = new FrameLayout()
+                        {
+                            Height = Application.GetRealHeight(90 + 53),
+                        };
+                        contentView.AddChidren(sceneImageRow);
+                        sceneImageView.X = Application.GetRealWidth(10);
+                        sceneImageRow.AddChidren(sceneImageView);
+                        btnTime.X = Application.GetRealWidth(10);
+                        sceneImageRow.AddChidren(btnTime);
+
+                    }
+                    else
+                    {
+                        sceneImageView.X = Application.GetRealWidth(194);
+                        sceneImageRow.AddChidren(sceneImageView);
+
+                        btnTime.X = Application.GetRealWidth(194);
+                        sceneImageRow.AddChidren(btnTime);
+                    }
+
+
+                    sceneImageView.MouseUpEventHandler = (sender, e) =>
+                    {
+                        Dialog dialog = new Dialog();
+
+                        FrameLayout dialogContentView = new FrameLayout();
+                        dialog.AddChidren(dialogContentView);
+                        dialogContentView.MouseUpEventHandler = (sender2, e2) =>
+                        {
+                            dialog.Close();
+                        };
+                        ImageView btnImage = new ImageView()
+                        {
+                            Gravity = Gravity.Center,
+                            Height = Application.GetRealHeight(211),
+                            ImageBytes = sceneImageView.ImageBytes,
+                        };
+                        dialogContentView.AddChidren(btnImage);
+
+
+                        dialog.Show();
+                    };
+                    System.Threading.Thread.Sleep(200);
+
+                }
+            });
+        }
+
+
+    }
+
+    public class AlarmRecordInfoPack
+    {
+        public int totalCount = 0;
+
+        public int totalPage = 0;
+
+        public int pageNo = 0;
+
+        public int pageSize = 0;
+
+        public List<AlarmRecordInfo> list = new List<AlarmRecordInfo>();
+    }
+
+    /// <summary>
+    /// 寰樺緤鎶ヨ淇℃伅
+    /// </summary>
+    public class AlarmRecordInfo
+    {
+        public string alarmImg = string.Empty;
+
+        public long alarmTime;
+
+        public string alarmType = string.Empty;
+
+        public string alarmTypeDesc = string.Empty;
+    }
+}
diff --git a/SiriIntents/SiriIntents.csproj b/SiriIntents/SiriIntents.csproj
index 45c6d61..5699afe 100644
--- a/SiriIntents/SiriIntents.csproj
+++ b/SiriIntents/SiriIntents.csproj
@@ -28,6 +28,7 @@
     <MtouchHttpClientHandler>NSUrlSessionHandler</MtouchHttpClientHandler>
     <DeviceSpecificBuild>false</DeviceSpecificBuild>
     <MtouchVerbosity></MtouchVerbosity>
+    <CodesignProvision>OnProSiri220307-2-Dev</CodesignProvision>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
     <DebugType>pdbonly</DebugType>
@@ -86,15 +87,15 @@
     <Reference Include="System.Xml" />
     <Reference Include="System.Core" />
     <Reference Include="Xamarin.iOS" />
-    <Reference Include="Shared.IOS.HDLSceneSiri">
-      <HintPath>..\DLL\IOS\Shared.IOS.HDLSceneSiri.dll</HintPath>
-    </Reference>
     <Reference Include="Newtonsoft.Json">
       <HintPath>..\packages\Newtonsoft.Json.13.0.1\lib\netstandard2.0\Newtonsoft.Json.dll</HintPath>
     </Reference>
     <Reference Include="RestSharp">
       <HintPath>..\packages\RestSharp.106.13.0\lib\netstandard2.0\RestSharp.dll</HintPath>
     </Reference>
+    <Reference Include="Shared.IOS.HDLSceneSiri">
+      <HintPath>..\DLL\IOS\Shared.IOS.HDLSceneSiri.dll</HintPath>
+    </Reference>
   </ItemGroup>
   <ItemGroup>
     <Folder Include="Resources\" />
diff --git a/SiriIntentsUI/SiriIntentsUI.csproj b/SiriIntentsUI/SiriIntentsUI.csproj
index da2da8b..324b36f 100644
--- a/SiriIntentsUI/SiriIntentsUI.csproj
+++ b/SiriIntentsUI/SiriIntentsUI.csproj
@@ -29,6 +29,7 @@
     <DeviceSpecificBuild>false</DeviceSpecificBuild>
     <MtouchVerbosity></MtouchVerbosity>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <CodesignProvision>OnProSiriUI220307-2-Dev</CodesignProvision>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
     <DebugType>pdbonly</DebugType>

--
Gitblit v1.8.0