From cb6e11c5067ecaba4d8f9907989154167c1e8943 Mon Sep 17 00:00:00 2001
From: wxr <464027401@qq.com>
Date: 星期三, 09 六月 2021 17:15:05 +0800
Subject: [PATCH] Merge branch 'wxr4' into dev-tzy

---
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irtvxm_white.png                          |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconRight.png                          |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorMegahealth/AddSenesorMegahealthDirection1Page.cs |  187 +
 HDL-ON_Android/Assets/Phone/FunctionIcon/ArmSensor/SomeoneInBgIcon.png                           |    0 
 HDL-ON_Android/Assets/Language.ini                                                               |  270 ++
 HDL-ON_iOS/HDL-ON_iOS.csproj                                                                     |   24 
 HDL_ON/UI/UI2/2-Classification/RoomPage.cs                                                       |    2 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irtvxm_blue.png                           |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/DeviceListPage.cs                                     |   26 
 HDL_ON/HDL_ON.projitems                                                                          |   21 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irtvxm.png                                          |    0 
 HDL_ON/UI/UI2/3-Intelligence/Automation/AddTarget.cs                                             |    2 
 HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs                                                          |   53 
 HDL_ON/UI/UI2/3-Intelligence/Automation/AddInputType.cs                                          |    5 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconUp.png                             |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irpjt_blue.png                             |    0 
 HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs                                           |   18 
 HDL-ON_Android/Resources/Resource.designer.cs                                                    | 1914 ++++++++-------
 HDL_ON/UI/UI0-Public/PublicAssmebly.cs                                                           |    2 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Energy/EnergyDrodUpIcon.png                             |    0 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/IrFanPage.cs                                         |   10 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irpjt.png                                           |    0 
 HDL_ON/Entity/Function/Scene.cs                                                                  |   15 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensormegahealth.png                                |    0 
 HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPage.cs                                 |   13 
 HDL-ON_Android/Resources/mipmap-hdpi/Loading.png                                                 |    0 
 HDL_ON/DAL/DriverLayer/Control_Udp.cs                                                            |   15 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconOk.png                            |    0 
 DLL/IOS/Shared.IOS.JLCountryCode.dll                                                             |    0 
 HDL_ON/UI/UI0-Public/TopViewDiv.cs                                                               |   12 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/StbPage.cs                                           |  637 +++++
 HDL-ON_Android/Assets/Phone/Public/Scan.png                                                      |    0 
 HDL-ON_iOS/Resources/Phone/Public/Scan.png                                                       |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/EditControl.cs                                          |    6 
 HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs                                                  |    5 
 HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SenesorMegahealthPage.cs                              |  183 +
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irtvxm_white.png                           |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irpjt_white.png                            |    0 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/PjtPage.cs                                           |  674 +++++
 HDL-ON_iOS/Resources/Phone/PersonalCenter/AddDevice/SenesorMegahealthBg.png                      |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconDown.png                           |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconLeft.png                           |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/View/PirView.cs                                         |    2 
 HDL_ON/UI/UI0-Public/Widget/EmptyTipView.cs                                                      |   16 
 HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirMethod.cs                                            |  101 
 HDL-ON_Android/Assets/Phone/PersonalCenter/AddDevice/SenesorMegahealthBg.png                     |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconOk.png                             |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irpjt_blue.png                            |    0 
 HDL_ON/UI/UI2/3-Intelligence/Automation/MainView.cs                                              |   72 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irstb_blue.png                             |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/AddDevciePage.cs                                      |   13 
 HDL-ON_iOS/Resources/Language.ini                                                                |  269 ++
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irpjt.png                                          |    0 
 HDL_ON/DAL/Mqtt/MqttInfoConfig.cs                                                                |    3 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensormegahealth.png                               |    0 
 HDL_ON/UI/UI2/FuntionControlView/Video/VideoMethod.cs                                            |    2 
 .vs/HDL_APP_Project/xs/UserPrefs.xml                                                             |   68 
 HDL_ON/DAL/DriverLayer/Control.cs                                                                |  109 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Energy/EnergyDrodUpIcon.png                              |    0 
 HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorDoorWinwsPage.cs                                |    2 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconLeft.png                          |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/View/Buttons.cs                                         |   23 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconUp.png                            |    0 
 HDL-ON_Android/Resources/mipmap-xxxhdpi/Loading.png                                              |    0 
 HDL_ON/UI/UI1-Login/RegisterPage.cs                                                              |    1 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/ArmSensor/SomeoneFellBgIcon.png                          |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddButton.cs                                            |    6 
 HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddControl.cs                                           |    4 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irstb.png                                           |    0 
 HDL_ON/DAL/Server/HttpServerRequest.cs                                                           |   45 
 HDL-ON_Android/Resources/mipmap-mdpi/Loading.png                                                 |    0 
 HDL_ON/UI/UI2/3-Intelligence/Automation/Weather.cs                                               |    2 
 HDL-ON_Android/Properties/AndroidManifest.xml                                                    |    4 
 HDL-ON_Android/Resources/mipmap-xhdpi/Loading.png                                                |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/ArmSensor/SomeoneFellBgIcon.png                         |    0 
 HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs                                |   44 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/TVPageBLL.cs                                         |   21 
 HDL_ON/UI/UI1-Login/ForgetPasswordPage.cs                                                        |    1 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irpjt_white.png                           |    0 
 HDL_ON/DAL/Mqtt/MqttClient.cs                                                                    |   40 
 HDL_ON/Entity/ResponseEntity/CityInfo.cs                                                         |    8 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconRight.png                         |    0 
 HDL-ON_Android/HDL-ON_Android.csproj                                                             |   45 
 HDL_ON/UI/UI2/FuntionControlView/FunctionBaseInfoSetPage.cs                                      |  144 +
 HDL-ON_iOS/Info.plist                                                                            |    4 
 HDL_ON/Common/HDLCommon.cs                                                                       |    2 
 HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/MiniRemoteControl/AddMiniRemoteControlDirection3Page.cs |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/MiniRemoteControl/AddMiniRemoteControlDirection4Page.cs |    0 
 HDL_ON/UI/UI2/2-Classification/FunctionControlZoneBLL.cs                                         |    2 
 HDL_ON/UI/UI1-Login/LoginPage.cs                                                                 |    6 
 HDL-ON_Android/Assets/Phone/FunctionIcon/ArmSensor/UnderProtectionBgIcon.png                     |    0 
 HDL_ON/UI/UI2/FuntionControlView/Video/VideoMainView.cs                                          |   20 
 HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/MiniRemoteControl/AddMiniRemoteControlDirection2Page.cs |    0 
 HDL_ON/UI/UI2/3-Intelligence/IntelligencePage.cs                                                 |   10 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irtvxm.png                                         |    0 
 HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSensorPage.cs                 |   23 
 HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs                                             |    8 
 HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorSmokePage.cs                                    |    2 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irtvxm_blue.png                            |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irstb.png                                          |    0 
 HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomTimeSelectControl.cs                            |  159 
 HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/SetPir.cs                                               |   10 
 HDL_ON/Entity/Function/Function.cs                                                               |   67 
 HDL_ON/DAL/Server/HttpUtil.cs                                                                    |    8 
 HDL_ON/UI/UI0-Public/OperationSuccessPromptPage.cs                                               |   15 
 HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorMegahealth/SenesorMegahealthManagerPage.cs       |  134 +
 HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirMain.cs                                              |   26 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconDown.png                          |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/ArmSensor/SomeoneInBgIcon.png                            |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/BrandList.cs                                            |    6 
 HDL-ON_Android/Resources/mipmap-xxhdpi/Loading.png                                               |    0 
 HDL_ON/DAL/DriverLayer/UdpSocket.cs                                                              |    5 
 HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs                                                        |   18 
 HDL_ON/UI/UI2/1-HomePage/HomePage.cs                                                             |  191 +
 HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs                                   |   34 
 HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EchartsOption_BrokenLine.cs                |  128 
 HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalPage.cs                       |   62 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irstb_white.png                           |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Matching.cs                                             |  264 ++
 HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/TimeView.cs                                    |    2 
 HDL_ON/UI/UI2/FuntionControlView/Video/View/ShowDialog.cs                                        |    2 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irstb_white.png                            |    0 
 HDL_ON/UI/UI2/FuntionControlView/Energy/EnergyMainPage.cs                                        |  516 +++-
 HDL-ON_iOS/Resources/Phone/FunctionIcon/ArmSensor/UnderProtectionBgIcon.png                      |    0 
 HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorPirPage.cs                                      |    2 
 HDL_ON/UI/UI0-Stan/Form/DeviceFunctionCardCommonForm.cs                                          |    3 
 HDL-ON_Android/Resources/drawable/Loading.png                                                    |    0 
 HDL_ON/UI/MainPage.cs                                                                            |    2 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irstb_blue.png                            |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/MiniRemoteControl/AddMiniRemoteControlDirection1Page.cs |    0 
 HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs                                   |    1 
 HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorWaterImmersionPage.cs                           |    2 
 HDL_ON/Entity/FunctionList.cs                                                                    |   22 
 /dev/null                                                                                        |  150 -
 HDL_ON/DAL/Server/NewAPI.cs                                                                      |    8 
 HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/MiniRemoteControl/AddThirdPartyDeviceMenuListPage.cs    |    0 
 HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/LogicTypeTitleView.cs                          |    2 
 HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddControlComplete.cs                                   |   14 
 HDL_ON/Common/R.cs                                                                               |   87 
 HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirSend.cs                                              |    6 
 HDL-ON_Android/Resources/mipmap-xhdpi/Icon.png                                                   |    0 
 141 files changed, 5,326 insertions(+), 1,836 deletions(-)

diff --git a/.vs/HDL_APP_Project/xs/UserPrefs.xml b/.vs/HDL_APP_Project/xs/UserPrefs.xml
index de93483..033e6f0 100644
--- a/.vs/HDL_APP_Project/xs/UserPrefs.xml
+++ b/.vs/HDL_APP_Project/xs/UserPrefs.xml
@@ -1,61 +1,31 @@
-锘�<Properties StartupConfiguration="{D998E133-F0DD-4760-BE3C-461632F54DA4}|Default">
-  <MonoDevelop.Ide.ItemProperties.HDL-ON__iOS PreferredExecutionTarget="MonoDevelop.IPhone.IPhoneDeviceTarget.00008020-000404163432002E" />
-  <MonoDevelop.Ide.Workbench ActiveDocument="HDL_ON/Entity/Function/Scene.cs">
+锘�<Properties StartupConfiguration="{09712674-2A38-407B-B1E2-560B2C352F9A}|Default">
+  <MonoDevelop.Ide.ItemProperties.HDL-ON__iOS automaticSigning="False" PreferredExecutionTarget="MonoDevelop.IPhone.IPhoneDeviceTarget.6242be7109c740c6cb8999a8904b6e0ea8d45192" />
+  <MonoDevelop.Ide.Workbench ActiveDocument="HDL_ON/Common/R.cs">
     <Files>
-      <File FileName="HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerSetTimePage.cs" Line="40" Column="1" IsPinned="True" />
-      <File FileName="HDL_ON/UI/UI2/3-Intelligence/Scene/SceneAddPage.cs" Line="277" Column="68" />
-      <File FileName="HDL_ON/UI/UI2/4-PersonalCenter/SmartSpeaker/SmartSpeakerRoomListPage.cs" Line="93" Column="73" />
-      <File FileName="HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs" Line="753" Column="70" />
-      <File FileName="HDL_ON/DAL/Server/HttpServerRequest.cs" Line="2431" Column="16" />
-      <File FileName="HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerPage.cs" Line="414" Column="1" />
-      <File FileName="HDL_ON/UI/UI2/1-HomePage/HomePage.cs" Line="364" Column="36" />
-      <File FileName="HDL_ON/UI/UI0-Public/PublicAssmebly.cs" Line="746" Column="16" />
-      <File FileName="HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomTimeSelectControl.cs" Line="111" Column="60" />
-      <File FileName="HDL_ON/UI/UI2/3-Intelligence/Scene/SceneEditPage.cs" Line="292" Column="62" />
-      <File FileName="HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs" Line="330" Column="87" />
-      <File FileName="HDL_ON/Entity/Function/Scene.cs" Line="349" Column="30" />
+      <File FileName="HDL_ON/DAL/Server/HttpUtil.cs" Line="8" Column="17" IsPinned="True" />
+      <File FileName="HDL-ON_iOS/Resources/Language.ini" Line="1809" Column="8" />
+      <File FileName="HDL-ON_Android/Assets/Language.ini" Line="1932" Column="1" />
+      <File FileName="HDL_ON/Common/R.cs" Line="1177" Column="43" />
     </Files>
     <Pads>
       <Pad Id="ProjectPad">
         <State name="__root__">
           <Node name="HDL_APP_Project" expanded="True">
             <Node name="HDL_ON" expanded="True">
-              <Node name="Common" expanded="True" />
+              <Node name="Common" expanded="True">
+                <Node name="R.cs" selected="True" />
+              </Node>
               <Node name="DAL" expanded="True">
-                <Node name="DriverLayer" expanded="True" />
                 <Node name="Server" expanded="True" />
               </Node>
-              <Node name="Entity" expanded="True">
-                <Node name="Function" expanded="True">
-                  <Node name="Scene.cs" selected="True" />
-                </Node>
-              </Node>
-              <Node name="UI" expanded="True">
-                <Node name="UI0-Public" expanded="True" />
-                <Node name="UI0-Stan" expanded="True">
-                  <Node name="Controls" expanded="True">
-                    <Node name="BottomControls" expanded="True" />
-                  </Node>
-                  <Node name="Form" expanded="True">
-                    <Node name="Base" expanded="True" />
-                  </Node>
-                </Node>
-                <Node name="UI1-Login" expanded="True" />
-                <Node name="UI2" expanded="True">
-                  <Node name="1-HomePage" expanded="True" />
-                  <Node name="3-Intelligence" expanded="True">
-                    <Node name="Scene" expanded="True" />
-                  </Node>
-                  <Node name="FuntionControlView" expanded="True">
-                    <Node name="1ContorlPage" expanded="True" />
-                    <Node name="Electrical" expanded="True" />
-                    <Node name="Energy" expanded="True" />
-                  </Node>
-                </Node>
-              </Node>
             </Node>
-            <Node name="HDL-ON_Android" expanded="True" />
-            <Node name="HDL-ON_iOS" expanded="True" />
+            <Node name="HDL-ON_Android" expanded="True">
+              <Node name="References" expanded="True" />
+              <Node name="Assets" expanded="True" />
+            </Node>
+            <Node name="HDL-ON_iOS" expanded="True">
+              <Node name="Resources" expanded="True" />
+            </Node>
           </Node>
         </State>
       </Pad>
@@ -67,11 +37,13 @@
     <String>Shared.Droid.TouchID/Shared.Droid.TouchID.csproj</String>
     <String>Shared.IOS/Shared.IOS.csproj</String>
   </DisabledProjects>
-  <MonoDevelop.Ide.Workspace ActiveConfiguration="Debug|iPhone" />
+  <MonoDevelop.Ide.Workspace ActiveConfiguration="Release|iPhone" />
+  <MonoDevelop.Ide.ItemProperties.HDL-ON__Android PreferredExecutionTarget="Android.SelectDevice" />
   <MonoDevelop.Ide.DebuggingService.Breakpoints>
     <BreakpointStore>
       <Breakpoint file="/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Method.cs" relfile="HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Method.cs" line="34" column="1" />
       <Breakpoint file="/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs" relfile="HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs" line="313" column="1" />
+      <Breakpoint file="/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/BindingResidence/BindingResidencePage.cs" relfile="HDL_ON/UI/BindingResidence/BindingResidencePage.cs" line="121" column="1" />
     </BreakpointStore>
   </MonoDevelop.Ide.DebuggingService.Breakpoints>
   <MultiItemStartupConfigurations />
diff --git a/DLL/IOS/Shared.IOS.JLCountryCode.dll b/DLL/IOS/Shared.IOS.JLCountryCode.dll
index 064a922..80ddf8b 100644
--- a/DLL/IOS/Shared.IOS.JLCountryCode.dll
+++ b/DLL/IOS/Shared.IOS.JLCountryCode.dll
Binary files differ
diff --git a/HDL-ON_Android/Assets/Language.ini b/HDL-ON_Android/Assets/Language.ini
index c3ba37f..a0ef7c8 100644
--- a/HDL-ON_Android/Assets/Language.ini
+++ b/HDL-ON_Android/Assets/Language.ini
@@ -70,7 +70,7 @@
 69=All
 70=Curtain
 71=Name
-72=The address of the residence
+72=Address
 73=Floor Management
 74=Room Management
 75=Admin Migration
@@ -188,8 +188,8 @@
 187=Fan
 188=Socket
 189=Level
-190=Channel
-191=Volume
+190=Chl
+191=Vol
 192=TV
 193=The room has existed, fail to change.
 194=Environment
@@ -382,6 +382,7 @@
 378=Transition time
 379=Transition speed
 380=This function is not available!
+381=Reload
 400=Welcome home
 401=Invalid barcode, please try again
 402=Try again
@@ -411,8 +412,6 @@
 426=Air dry time
 427=Disinfect time
 428=Anion Time
-429=Real time power consumption: {0}kw
-
 429=H
 430=Min
 431=You are currently adding any platform devices to
@@ -423,7 +422,7 @@
 436=Added Devices
 437=Device List
 438=humidity:{0}%    air:{1}    wind:{2}
-439=Real time power consumption: {0} kw
+439=Real time: {0} kw
 440=Next step
 441=Please select all areas of capture status
 442=Generate Scene
@@ -440,7 +439,25 @@
 453=Alarm mute
 454=Deployment information
 455=The name can not be blank.
-
+456=Canvas
+457=Energy consumption
+458=Date
+459=Real time energy consumption
+460=Energy consumption of this month
+461=Outdoor/Indoor
+462=You haven't added any devices yet
+'
+463=Please input the SN code of the device
+464=Can start using Zhaoguan millimeter wave
+465=Delete device
+466=STB
+467=Projector
+468=Someone fell
+469=Someone's in
+'
+470=Under protection
+471=Millimeter wave sensor
+ 
 1000=Room Humidity
 1001=V-chip
 1002=Anion
@@ -602,6 +619,31 @@
 1157=Fail to transfer
 1158=Please try again
 
+ 
+ 
+ 
+ 
+ 
+4000=Video intercom
+4001=Call record
+4002=*Cloud photos are only kept for 30 days
+4003=Door phone call
+4004=Answered
+4005=Unlocked
+4006=year
+4007=From
+4008=Call
+4009=Unlocked
+4010=Missed
+4011=Rejected
+4012=The configuration parameters are abnormal!
+4013=Access Control QR Code
+4014=Temporary password
+ 
+ 
+ 
+ 
+ 
 5000=Music
 5001=Group
 5002=Setting
@@ -650,8 +692,150 @@
 5045=General volume
 5046=Adjust volume
 5047="QQ music" has not installed in your cell phone, please proceed in App center.
-	
-	
+ 
+6000=normal
+6001=Device status
+6002=pcs
+6003=Current IR control device
+6004=Remote controller has been added
+6005=AC
+6006=TV
+6007=Fan
+6008=Set-top box
+6009=DVD
+6010=Projector
+6011=Custom
+6012=IR control
+6013=Device Management
+6014=Add remote controller
+6015=Online
+6016=Offline
+6017=Version number
+6018=Please enter the name of the remote controller
+6019=Reminder: After the remote controller is created, it can be found and used in Function-Electrical Category{\r\n}
+6020=Recommended button
+6021=Please enter the button name
+6022=Next
+6023=Power
+6024=Volume+
+6025=Volume-
+6026=channel+
+6027=Channel-
+6028=up
+6029=down
+6030=Left
+6031=right
+6032=Mute
+6034=Confirm
+6035=Play
+6037=Exit
+6038=Menu
+6039=Pause
+6040=Back
+6041=Stop
+6042=Homepage
+6043=Fast forward
+6044=Rewind
+6045=Timing
+6046=Copy remote control function
+6047=Aim at the center of the remote controller and press the same button
+6048=Smart remote controller
+6049=Add button
+6050=*Long press for custom sorting
+6051=Done
+6052=Added successfully
+6053=Can be classified-function-electrical operation and use
+6054=Classification
+6055=Remote controller name
+6056=Region
+6057=Continue to add
+6058=Electrical
+6059=Failed to add
+6060=Retry
+6061=Match the remote control
+6062=Please click the button below
+6063=Confirm whether the device is responding
+6064=Control failed
+6065=Control success
+6066=Power on
+6067=Mode cooling
+6068=Wind speed stroke
+6069=Temperature 26鈩�
+6070=Delete device
+6071=Modify name
+6072=Confirm deletion
+6073=Cancel
+6074=The remote controller cannot exceed 10 pcs
+6075=The area where the remote control belongs:
+6076=Edit information
+6077=Version upgrade
+6078=System is under maintenance~Please try again later~
+6079=Failed to get data
+6080=This function is temporarily not supported
+6081=Select IR brand
+6082=Shaking
+6083=Low speed
+6084=Medium speed
+6085=High speed
+6086=Auto
+6087=Temperature+
+6088=Temperature-
+6089=Air purifier
+6090=Water heater
+6091=Product that does not exist
+6092=The device does not exist
+6093=The device is not online
+6094=The gateway device does not exist
+ 
+ 
+7108=Leak/No Leak
+7109=Leak
+7110=No leak
+7111=Water leaking/no water leaking
+7112=Water leaking
+7113=No water leaking
+7114=Someone/Nobody
+7115=Someone
+7116=Nobody
+7117=Open/Close
+7118=On
+7119=Close
+7120=Anti-dismantling function
+7121=Online
+7122=Not online
+7123=Air quality
+7124=Excellent
+7125=Good
+7126=Poor
+7127=Send notification
+7128=Notification content
+7129=(within 100 characters)
+7130=Account selection
+7131=App push
+7132=Automation
+7133=Executed
+7134=Target State
+7135=Tumble
+ 
+ 
+6000=Rename
+6001=Please enter a name
+6002=Xiaodu
+6003=aispeech
+6004="Unbind requires a third-party APP for operation", "transfer to a third-party APP"
+6005=Unbind
+6006=Smart speaker
+6007=Control content
+6008=Failed to upload data
+6009=Failed to configure data
+6010="There is no speaker yet,", "Please go to the third-party APP to bind the smart speaker."
+6011=Modification of remarks is unsuccessful!
+6012=Do you want to unbind?
+6013=Unbinding...
+6014=transfer to third-party APP
+6015=Add speakers
+ 
+    
 7000=Create automation
 7001=Edit automation
 7002=If
@@ -760,7 +944,7 @@
 7105=Light pollution: 75 ~ 115ug/m3
 7106=Moderate pollution: 115 ~ 150ug/m3
 7107=Heavy pollution: > 150ug/m3
-	
+    
 9000=Please sign in with new cell phone number.
 9001=Please sign in with new email address.
 9002=New cell phone number is revised.
@@ -831,7 +1015,7 @@
 9066=Remarks
 9067=Remarks cannot be blank.
 9068=Do you want to unbind?
-	
+    
 10000=Invalid password, please log in again.
 10001=Fail to request server, please try again later.
 10002=System maintaining, please try again later.
@@ -866,9 +1050,9 @@
 10031=The device should not be blank.
 10032=The user does not have permission.
 10033=The device does not exist.
-
-
-
+ 
+ 
+ 
 [Chinese]
 1=鐧诲綍
 2=鎵嬫満鍙风櫥褰�
@@ -1260,7 +1444,7 @@
 406=浼氬
 407=闃呰
 408=纭娣诲姞
-
+ 
 409=鍔熻兘鍝佺墝
 410=浣犲綋鍓嶈繕鏈坊鍔犱换浣曞钩鍙拌澶�
 411=鍏朵粬骞冲彴璁惧鍧囩敱绗笁鏂规湇鍔″晢鎻愪緵鏀寔
@@ -1308,8 +1492,24 @@
 453=鎶ヨ闈欓煶
 454=甯冮槻淇℃伅
 455=鍚嶇О涓嶈兘涓虹┖銆�
-
-
+456=鐢诲竷
+457=鑳借��
+458=鏃ユ湡
+459=瀹炴椂鑳借��
+460=鏈湀鑳借��
+461=瀹ゅ/瀹ゅ唴
+462=鎮ㄥ綋鍓嶈繕鏈坊鍔犱换浣曡澶�
+463=璇疯緭鍏ヨ澶囨満涓婄殑sn鐮�
+464=鍙互寮�濮嬩娇鐢ㄥ厗瑙傛绫虫尝浜�
+465=鍒犻櫎璁惧
+466=鏈洪《鐩�
+467=鎶曞奖浠�
+468=鏈変汉璺屽��
+469=鏈変汉杩涘叆
+470=闃叉姢涓�
+471=姣背娉紶鎰熷櫒
+ 
+ 
 1000=瀹ゅ唴婀垮害
 1001=绔ラ攣
 1002=璐熺瀛�
@@ -1477,6 +1677,8 @@
 1157=杩囨埛澶辫触
 1158=璇烽噸鏂板皾璇�
 
+ 
+ 
 4000=鍙瀵硅
 4001=閫氳瘽璁板綍
 4002=*浜戠鐓х墖鍙繚鐣�30澶�
@@ -1492,7 +1694,7 @@
 4012=閰嶇疆鍙傛暟鏈夊紓甯�!
 4013=闂ㄧ浜岀淮鐮�
 4014=涓存椂瀵嗙爜
-
+ 
 5000=闊充箰
 5001=缁勫悎
 5002=璁剧疆
@@ -1541,8 +1743,8 @@
 5045=鎬婚煶閲�
 5046=璋冭妭闊抽噺
 5047=浣犳墜鏈烘殏鏈畨瑁�"QQ闊充箰"{\r\n}璇峰墠寰�鎵嬫満鍟嗗満瀹夎
-
-
+ 
+ 
 6000=姝e父
 6001=璁惧鐘舵��
 6002=涓�
@@ -1552,7 +1754,7 @@
 6006=鐢佃
 6007=椋庢墖
 6008=鏈洪《鐩�
-6009=DVD/EVD/VCD
+6009=DVD
 6010=鎶曞奖浠�
 6011=鑷畾涔�
 6012=绾㈠閬ユ帶
@@ -1622,7 +1824,23 @@
 6078=绯荤粺缁存姢涓瓇璇风◢鍚庡啀璇晘
 6079=鑾峰彇鏁版嵁澶辫触
 6080=鏆傛椂涓嶆敮鎸佽鍔熻兘
-
+6081=閫夋嫨绾㈠鍝佺墝
+6082=鎽囧ご
+6083=浣庨��
+6084=涓��
+6085=楂橀��
+6086=鑷姩
+6087=娓╁害+
+6088=娓╁害-
+6089=绌烘皵鍑�鍖栧櫒
+6090=鐑按鍣�
+6091=涓嶅瓨鍦ㄧ殑浜у搧
+6092=璁惧涓嶅瓨鍦�
+6093=璁惧涓嶅湪绾�
+6094=缃戝叧璁惧涓嶅瓨鍦�
+ 
+ 
+ 
 7000=鏂板缓鑷姩鍖�
 7001=缂栬緫鑷姩鍖�
 7002=濡傛灉
@@ -1757,7 +1975,9 @@
 7131=App鎺ㄩ��
 7132=鑷姩鍖�
 7133=宸叉墽琛�
-
+7134=鐩爣鐘舵��
+7135=璺屽��
+ 
 9000=璇蜂娇鐢ㄦ柊鐨勬墜鏈鸿处鍙风櫥褰旳PP
 9001=璇蜂娇鐢ㄦ柊鐨勯偖绠辫处鍙风櫥褰旳PP
 9002=鐧诲綍鎵嬫満淇敼瀹屾垚
@@ -1827,7 +2047,7 @@
 9066=澶囨敞
 9067=澶囨敞涓嶈兘涓虹┖
 9068=鏄惁瑙i櫎缁戝畾锛�
-
+ 
 10000=鏃犳晥鐧诲綍瀵嗛挜锛岃閲嶆柊鐧诲綍锛�
 10001=璇锋眰鏈嶅姟鍣ㄥけ璐ワ紝璇风◢鍚庡啀璇曪紒
 10002=绯荤粺缁存姢涓�,璇风◢鍚庡啀璇�!
@@ -1861,4 +2081,4 @@
 10030=娌℃湁杩滅▼鎺у埗鏉冮檺
 10031=璁惧涓嶈兘涓虹┖
 10032=鐢ㄦ埛娌℃湁璁惧鐨勬潈闄�
-10033=璁惧涓嶅瓨鍦�
\ No newline at end of file
+10033=璁惧涓嶅瓨鍦�
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/ArmSensor/SomeoneFellBgIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/ArmSensor/SomeoneFellBgIcon.png
new file mode 100644
index 0000000..3699b13
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/ArmSensor/SomeoneFellBgIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/ArmSensor/SomeoneInBgIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/ArmSensor/SomeoneInBgIcon.png
new file mode 100644
index 0000000..24336d8
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/ArmSensor/SomeoneInBgIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/ArmSensor/UnderProtectionBgIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/ArmSensor/UnderProtectionBgIcon.png
new file mode 100644
index 0000000..bede756
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/ArmSensor/UnderProtectionBgIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconDown.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconDown.png
new file mode 100644
index 0000000..9151722
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconDown.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconLeft.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconLeft.png
new file mode 100644
index 0000000..a9f21af
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconLeft.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconOk.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconOk.png
new file mode 100644
index 0000000..9588e99
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconOk.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconRight.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconRight.png
new file mode 100644
index 0000000..3765d0f
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconRight.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconUp.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconUp.png
new file mode 100644
index 0000000..87a0271
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconUp.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TVIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TVIcon.png
deleted file mode 100644
index 95e01fc..0000000
--- a/HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TVIcon.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Energy/EnergyDrodUpIcon.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Energy/EnergyDrodUpIcon.png
new file mode 100644
index 0000000..4b9600b
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Energy/EnergyDrodUpIcon.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irpjt_blue.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irpjt_blue.png
new file mode 100644
index 0000000..6e39148
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irpjt_blue.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irpjt_white.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irpjt_white.png
new file mode 100644
index 0000000..5288530
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irpjt_white.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irstb_blue.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irstb_blue.png
new file mode 100644
index 0000000..5a6e245
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irstb_blue.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irstb_white.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irstb_white.png
new file mode 100644
index 0000000..89b618a
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irstb_white.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irtvxm_blue.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irtvxm_blue.png
new file mode 100644
index 0000000..d28c4af
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irtvxm_blue.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irtvxm_white.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irtvxm_white.png
new file mode 100644
index 0000000..1f42e9f
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irtvxm_white.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irpjt.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irpjt.png
new file mode 100644
index 0000000..ebdac1d
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irpjt.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irstb.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irstb.png
new file mode 100644
index 0000000..cbd39d5
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irstb.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irtvxm.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irtvxm.png
new file mode 100644
index 0000000..7f9045f
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irtvxm.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensormegahealth.png b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensormegahealth.png
new file mode 100644
index 0000000..958cf71
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensormegahealth.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/PersonalCenter/AddDevice/SenesorMegahealthBg.png b/HDL-ON_Android/Assets/Phone/PersonalCenter/AddDevice/SenesorMegahealthBg.png
new file mode 100644
index 0000000..ad3b018
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/PersonalCenter/AddDevice/SenesorMegahealthBg.png
Binary files differ
diff --git a/HDL-ON_Android/Assets/Phone/Public/Scan.png b/HDL-ON_Android/Assets/Phone/Public/Scan.png
new file mode 100644
index 0000000..1859bcc
--- /dev/null
+++ b/HDL-ON_Android/Assets/Phone/Public/Scan.png
Binary files differ
diff --git a/HDL-ON_Android/HDL-ON_Android.csproj b/HDL-ON_Android/HDL-ON_Android.csproj
index f89849c..783fb5d 100644
--- a/HDL-ON_Android/HDL-ON_Android.csproj
+++ b/HDL-ON_Android/HDL-ON_Android.csproj
@@ -33,7 +33,7 @@
     <DefineConstants>DEBUG;TRACE;__Android__</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
-    <EmbedAssembliesIntoApk>False</EmbedAssembliesIntoApk>
+    <EmbedAssembliesIntoApk>true</EmbedAssembliesIntoApk>
     <MandroidI18n>cjk</MandroidI18n>
     <AndroidDexTool>d8</AndroidDexTool>
     <AndroidEnableSGenConcurrent>false</AndroidEnableSGenConcurrent>
@@ -52,6 +52,7 @@
     <MandroidI18n>cjk</MandroidI18n>
     <AndroidEnableSGenConcurrent>false</AndroidEnableSGenConcurrent>
     <AndroidUseSharedRuntime>false</AndroidUseSharedRuntime>
+    <AndroidSupportedAbis>armeabi-v7a;arm64-v8a</AndroidSupportedAbis>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
@@ -377,6 +378,26 @@
       <SubType></SubType>
       <Generator></Generator>
     </AndroidResource>
+    <AndroidResource Include="Resources\mipmap-xhdpi\Loading.png">
+      <SubType></SubType>
+      <Generator></Generator>
+    </AndroidResource>
+    <AndroidResource Include="Resources\mipmap-hdpi\Loading.png">
+      <SubType></SubType>
+      <Generator></Generator>
+    </AndroidResource>
+    <AndroidResource Include="Resources\mipmap-mdpi\Loading.png">
+      <SubType></SubType>
+      <Generator></Generator>
+    </AndroidResource>
+    <AndroidResource Include="Resources\mipmap-xxhdpi\Loading.png">
+      <SubType></SubType>
+      <Generator></Generator>
+    </AndroidResource>
+    <AndroidResource Include="Resources\mipmap-xxxhdpi\Loading.png">
+      <SubType></SubType>
+      <Generator></Generator>
+    </AndroidResource>
   </ItemGroup>
   <ItemGroup>
     <AndroidAsset Include="Assets\Phone\Public\MsgIcon\TipSuccessIcon.png" />
@@ -565,7 +586,6 @@
     <AndroidAsset Include="Assets\Phone\FunctionIcon\Music\MusicIcon.png" />
     <AndroidAsset Include="Assets\Phone\FunctionIcon\Music\MusicOnIcon.png" />
     <AndroidAsset Include="Assets\Phone\FunctionIcon\Electrical\FanIconBg.png" />
-    <AndroidAsset Include="Assets\Phone\FunctionIcon\Electrical\TVIcon.png" />
     <AndroidAsset Include="Assets\Phone\FunctionIcon\Electrical\FanThinIcon.png" />
     <AndroidAsset Include="Assets\Phone\FunctionIcon\Electrical\FanIcon.png" />
     <AndroidAsset Include="Assets\Phone\FunctionIcon\Electrical\FanIconOnBg.png" />
@@ -1167,6 +1187,27 @@
     <AndroidAsset Include="Assets\Phone\FunctionIcon\Curtain\CurtainUpIcon.png" />
     <AndroidAsset Include="Assets\Phone\FunctionIcon\Curtain\CurtainUpIconOn.png" />
     <AndroidAsset Include="Assets\Phone\PersonalCenter\SmartSpeaker.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\irpjt.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\irstb.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\irpjt_blue.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\irpjt_white.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\irstb_blue.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\irstb_white.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Energy\EnergyDrodUpIcon.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\sensormegahealth.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Electrical\TV\TVOkIconDown.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Electrical\TV\TVOkIconLeft.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Electrical\TV\TVOkIconRight.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Electrical\TV\TVOkIconUp.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Electrical\TV\TVOkIconOk.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\irtvxm.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\irtvxm_blue.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\irtvxm_white.png" />
+    <AndroidAsset Include="Assets\Phone\PersonalCenter\AddDevice\SenesorMegahealthBg.png" />
+    <AndroidAsset Include="Assets\Phone\Public\Scan.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\ArmSensor\SomeoneFellBgIcon.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\ArmSensor\SomeoneInBgIcon.png" />
+    <AndroidAsset Include="Assets\Phone\FunctionIcon\ArmSensor\UnderProtectionBgIcon.png" />
   </ItemGroup>
   <ItemGroup>
     <AndroidNativeLibrary Include="libs\armeabi-v7a\libelianjni.so" />
diff --git a/HDL-ON_Android/Properties/AndroidManifest.xml b/HDL-ON_Android/Properties/AndroidManifest.xml
index f0ad94e..02be82a 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="202104282" android:versionName="1.2.202104282" package="com.hdl.onpro">
-	<uses-sdk android:minSdkVersion="26" android:targetSdkVersion="29" />
+<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="202106082" android:versionName="1.2.202106082" package="com.hdl.onpro">
+	<uses-sdk android:minSdkVersion="23" android:targetSdkVersion="29" />
 	<!--  鍙瀵硅鏉冮檺-->
 	<uses-permission android:name="android.permission.CAMERA" />
 	<uses-feature android:name="android.hardware.camera" />
diff --git a/HDL-ON_Android/Resources/Resource.designer.cs b/HDL-ON_Android/Resources/Resource.designer.cs
index f0b1343..afa9ad1 100644
--- a/HDL-ON_Android/Resources/Resource.designer.cs
+++ b/HDL-ON_Android/Resources/Resource.designer.cs
@@ -5120,1612 +5120,1615 @@
 			public const int label_bg_sel = 2131231231;
 			
 			// aapt resource value: 0x7F080200
-			public const int leave_message_play = 2131231232;
+			public const int launchImage = 2131231232;
 			
 			// aapt resource value: 0x7F080201
-			public const int leave_message_play_sel = 2131231233;
+			public const int leave_message_play = 2131231233;
 			
 			// aapt resource value: 0x7F080202
-			public const int leave_message_play_selector = 2131231234;
+			public const int leave_message_play_sel = 2131231234;
 			
 			// aapt resource value: 0x7F080203
-			public const int left_horizontal = 2131231235;
+			public const int leave_message_play_selector = 2131231235;
 			
 			// aapt resource value: 0x7F080204
-			public const int left_twinkle = 2131231236;
+			public const int left_horizontal = 2131231236;
 			
 			// aapt resource value: 0x7F080205
-			public const int link_account1 = 2131231237;
+			public const int left_twinkle = 2131231237;
 			
 			// aapt resource value: 0x7F080206
-			public const int link_account2 = 2131231238;
+			public const int link_account1 = 2131231238;
 			
 			// aapt resource value: 0x7F080207
-			public const int link_account3 = 2131231239;
+			public const int link_account2 = 2131231239;
 			
 			// aapt resource value: 0x7F080208
-			public const int link_account4 = 2131231240;
-			
-			// aapt resource value: 0x7F08020A
-			public const int Loading = 2131231242;
+			public const int link_account3 = 2131231240;
 			
 			// aapt resource value: 0x7F080209
-			public const int load_failed_bg = 2131231241;
+			public const int link_account4 = 2131231241;
 			
 			// aapt resource value: 0x7F08020B
-			public const int lock_bg = 2131231243;
+			public const int Loading = 2131231243;
+			
+			// aapt resource value: 0x7F08020A
+			public const int load_failed_bg = 2131231242;
 			
 			// aapt resource value: 0x7F08020C
-			public const int login_btn_selector = 2131231244;
+			public const int lock_bg = 2131231244;
 			
 			// aapt resource value: 0x7F08020D
-			public const int login_logo = 2131231245;
+			public const int login_btn_selector = 2131231245;
 			
 			// aapt resource value: 0x7F08020E
-			public const int login_logo_button = 2131231246;
+			public const int login_logo = 2131231246;
 			
 			// aapt resource value: 0x7F08020F
-			public const int login_logo_button_sel = 2131231247;
+			public const int login_logo_button = 2131231247;
 			
 			// aapt resource value: 0x7F080210
-			public const int logo_loading_1 = 2131231248;
+			public const int login_logo_button_sel = 2131231248;
 			
 			// aapt resource value: 0x7F080211
-			public const int logo_loading_2 = 2131231249;
+			public const int logo_loading_1 = 2131231249;
 			
 			// aapt resource value: 0x7F080212
-			public const int logo_loading_3 = 2131231250;
+			public const int logo_loading_2 = 2131231250;
 			
 			// aapt resource value: 0x7F080213
-			public const int logo_loading_4 = 2131231251;
+			public const int logo_loading_3 = 2131231251;
 			
 			// aapt resource value: 0x7F080214
-			public const int mesage_details_callhelp = 2131231252;
+			public const int logo_loading_4 = 2131231252;
 			
 			// aapt resource value: 0x7F080215
-			public const int mesage_details_curtain = 2131231253;
+			public const int mesage_details_callhelp = 2131231253;
 			
 			// aapt resource value: 0x7F080216
-			public const int mesage_details_data = 2131231254;
+			public const int mesage_details_curtain = 2131231254;
 			
 			// aapt resource value: 0x7F080217
-			public const int mesage_details_door = 2131231255;
+			public const int mesage_details_data = 2131231255;
 			
 			// aapt resource value: 0x7F080218
-			public const int mesage_details_gas = 2131231256;
+			public const int mesage_details_door = 2131231256;
 			
 			// aapt resource value: 0x7F080219
-			public const int mesage_details_hdd = 2131231257;
+			public const int mesage_details_gas = 2131231257;
 			
 			// aapt resource value: 0x7F08021A
-			public const int mesage_details_infrared = 2131231258;
+			public const int mesage_details_hdd = 2131231258;
 			
 			// aapt resource value: 0x7F08021B
-			public const int mesage_details_keyboard = 2131231259;
+			public const int mesage_details_infrared = 2131231259;
 			
 			// aapt resource value: 0x7F08021C
-			public const int mesage_details_loss = 2131231260;
+			public const int mesage_details_keyboard = 2131231260;
 			
 			// aapt resource value: 0x7F08021D
-			public const int mesage_details_low_battery = 2131231261;
+			public const int mesage_details_loss = 2131231261;
 			
 			// aapt resource value: 0x7F08021E
-			public const int mesage_details_offline = 2131231262;
+			public const int mesage_details_low_battery = 2131231262;
 			
 			// aapt resource value: 0x7F08021F
-			public const int mesage_details_power = 2131231263;
+			public const int mesage_details_offline = 2131231263;
 			
 			// aapt resource value: 0x7F080220
-			public const int mesage_details_smoke = 2131231264;
+			public const int mesage_details_power = 2131231264;
 			
 			// aapt resource value: 0x7F080221
-			public const int mesage_details_tampering = 2131231265;
+			public const int mesage_details_smoke = 2131231265;
 			
 			// aapt resource value: 0x7F080222
-			public const int mesage_details_video_loss = 2131231266;
+			public const int mesage_details_tampering = 2131231266;
 			
 			// aapt resource value: 0x7F080223
-			public const int mesage_details_water = 2131231267;
+			public const int mesage_details_video_loss = 2131231267;
 			
 			// aapt resource value: 0x7F080224
-			public const int message = 2131231268;
+			public const int mesage_details_water = 2131231268;
 			
 			// aapt resource value: 0x7F080225
-			public const int message_a1_bg = 2131231269;
+			public const int message = 2131231269;
 			
 			// aapt resource value: 0x7F080226
-			public const int message_back = 2131231270;
+			public const int message_a1_bg = 2131231270;
 			
 			// aapt resource value: 0x7F080227
-			public const int message_back_sel = 2131231271;
+			public const int message_back = 2131231271;
 			
 			// aapt resource value: 0x7F080228
-			public const int message_back_selector = 2131231272;
+			public const int message_back_sel = 2131231272;
 			
 			// aapt resource value: 0x7F080229
-			public const int message_border_bg = 2131231273;
+			public const int message_back_selector = 2131231273;
 			
 			// aapt resource value: 0x7F08022A
-			public const int message_callhelp = 2131231274;
+			public const int message_border_bg = 2131231274;
 			
 			// aapt resource value: 0x7F08022B
-			public const int message_curtain = 2131231275;
+			public const int message_callhelp = 2131231275;
 			
 			// aapt resource value: 0x7F08022C
-			public const int message_data = 2131231276;
+			public const int message_curtain = 2131231276;
 			
 			// aapt resource value: 0x7F08022D
-			public const int message_door = 2131231277;
+			public const int message_data = 2131231277;
 			
 			// aapt resource value: 0x7F08022E
-			public const int message_gas = 2131231278;
+			public const int message_door = 2131231278;
 			
 			// aapt resource value: 0x7F08022F
-			public const int message_hdd = 2131231279;
+			public const int message_gas = 2131231279;
 			
 			// aapt resource value: 0x7F080230
-			public const int message_infrared = 2131231280;
+			public const int message_hdd = 2131231280;
 			
 			// aapt resource value: 0x7F080231
-			public const int message_item_bg_selector = 2131231281;
+			public const int message_infrared = 2131231281;
 			
 			// aapt resource value: 0x7F080232
-			public const int message_keyboard = 2131231282;
+			public const int message_item_bg_selector = 2131231282;
 			
 			// aapt resource value: 0x7F080233
-			public const int message_loss = 2131231283;
+			public const int message_keyboard = 2131231283;
 			
 			// aapt resource value: 0x7F080234
-			public const int message_low_battery = 2131231284;
+			public const int message_loss = 2131231284;
 			
 			// aapt resource value: 0x7F080235
-			public const int message_move_magnetometer = 2131231285;
+			public const int message_low_battery = 2131231285;
 			
 			// aapt resource value: 0x7F080236
-			public const int message_offline = 2131231286;
+			public const int message_move_magnetometer = 2131231286;
 			
 			// aapt resource value: 0x7F080237
-			public const int message_play = 2131231287;
+			public const int message_offline = 2131231287;
 			
 			// aapt resource value: 0x7F080238
-			public const int message_play_dis = 2131231288;
+			public const int message_play = 2131231288;
 			
 			// aapt resource value: 0x7F080239
-			public const int message_play_sel = 2131231289;
+			public const int message_play_dis = 2131231289;
 			
 			// aapt resource value: 0x7F08023A
-			public const int message_play_selector = 2131231290;
+			public const int message_play_sel = 2131231290;
 			
 			// aapt resource value: 0x7F08023B
-			public const int message_power = 2131231291;
+			public const int message_play_selector = 2131231291;
 			
 			// aapt resource value: 0x7F08023C
-			public const int message_sel = 2131231292;
+			public const int message_power = 2131231292;
 			
 			// aapt resource value: 0x7F08023D
-			public const int message_smoke = 2131231293;
+			public const int message_sel = 2131231293;
 			
 			// aapt resource value: 0x7F08023E
-			public const int message_tampering = 2131231294;
+			public const int message_smoke = 2131231294;
 			
 			// aapt resource value: 0x7F08023F
-			public const int message_video = 2131231295;
+			public const int message_tampering = 2131231295;
 			
 			// aapt resource value: 0x7F080240
-			public const int message_video_dis = 2131231296;
+			public const int message_video = 2131231296;
 			
 			// aapt resource value: 0x7F080241
-			public const int message_video_loss = 2131231297;
+			public const int message_video_dis = 2131231297;
 			
 			// aapt resource value: 0x7F080242
-			public const int message_video_sel = 2131231298;
+			public const int message_video_loss = 2131231298;
 			
 			// aapt resource value: 0x7F080243
-			public const int message_video_selector = 2131231299;
+			public const int message_video_sel = 2131231299;
 			
 			// aapt resource value: 0x7F080244
-			public const int message_water = 2131231300;
+			public const int message_video_selector = 2131231300;
 			
 			// aapt resource value: 0x7F080245
-			public const int mic = 2131231301;
+			public const int message_water = 2131231301;
 			
 			// aapt resource value: 0x7F080246
-			public const int mm_trans = 2131231302;
+			public const int mic = 2131231302;
 			
 			// aapt resource value: 0x7F080247
-			public const int more = 2131231303;
+			public const int mm_trans = 2131231303;
 			
 			// aapt resource value: 0x7F080248
-			public const int my_5k_vr = 2131231304;
+			public const int more = 2131231304;
 			
 			// aapt resource value: 0x7F080249
-			public const int my_5k_vr116 = 2131231305;
+			public const int my_5k_vr = 2131231305;
 			
 			// aapt resource value: 0x7F08024A
-			public const int my_a1 = 2131231306;
+			public const int my_5k_vr116 = 2131231306;
 			
 			// aapt resource value: 0x7F08024B
-			public const int my_a1c = 2131231307;
+			public const int my_a1 = 2131231307;
 			
 			// aapt resource value: 0x7F08024C
-			public const int my_a1s = 2131231308;
+			public const int my_a1c = 2131231308;
 			
 			// aapt resource value: 0x7F08024D
-			public const int my_add = 2131231309;
+			public const int my_a1s = 2131231309;
 			
 			// aapt resource value: 0x7F08024E
-			public const int my_c6p = 2131231310;
+			public const int my_add = 2131231310;
 			
 			// aapt resource value: 0x7F08024F
-			public const int my_c6t = 2131231311;
+			public const int my_c6p = 2131231311;
 			
 			// aapt resource value: 0x7F080250
-			public const int my_cover = 2131231312;
+			public const int my_c6t = 2131231312;
 			
 			// aapt resource value: 0x7F080251
-			public const int my_cover620 = 2131231313;
+			public const int my_cover = 2131231313;
 			
 			// aapt resource value: 0x7F080252
-			public const int my_db1 = 2131231314;
+			public const int my_cover620 = 2131231314;
 			
 			// aapt resource value: 0x7F080253
-			public const int my_doorbell = 2131231315;
+			public const int my_db1 = 2131231315;
 			
 			// aapt resource value: 0x7F080254
-			public const int my_doorbell_hik = 2131231316;
+			public const int my_doorbell = 2131231316;
 			
 			// aapt resource value: 0x7F080255
-			public const int my_n1 = 2131231317;
+			public const int my_doorbell_hik = 2131231317;
 			
 			// aapt resource value: 0x7F080256
-			public const int my_no_video = 2131231318;
+			public const int my_n1 = 2131231318;
 			
 			// aapt resource value: 0x7F080257
-			public const int my_progress_drawable = 2131231319;
+			public const int my_no_video = 2131231319;
 			
 			// aapt resource value: 0x7F080258
-			public const int my_r1 = 2131231320;
+			public const int my_progress_drawable = 2131231320;
 			
 			// aapt resource value: 0x7F080259
-			public const int my_r2 = 2131231321;
+			public const int my_r1 = 2131231321;
 			
 			// aapt resource value: 0x7F08025A
-			public const int my_shoping = 2131231322;
+			public const int my_r2 = 2131231322;
 			
 			// aapt resource value: 0x7F08025B
-			public const int my_switch_off = 2131231323;
+			public const int my_shoping = 2131231323;
 			
 			// aapt resource value: 0x7F08025C
-			public const int my_switch_on = 2131231324;
+			public const int my_switch_off = 2131231324;
 			
 			// aapt resource value: 0x7F08025D
-			public const int my_switch_selector = 2131231325;
+			public const int my_switch_on = 2131231325;
 			
 			// aapt resource value: 0x7F08025E
-			public const int my_vr104d = 2131231326;
+			public const int my_switch_selector = 2131231326;
 			
 			// aapt resource value: 0x7F08025F
-			public const int my_w1 = 2131231327;
+			public const int my_vr104d = 2131231327;
 			
 			// aapt resource value: 0x7F080260
-			public const int my_w2d = 2131231328;
+			public const int my_w1 = 2131231328;
 			
 			// aapt resource value: 0x7F080261
-			public const int my_w2s = 2131231329;
+			public const int my_w2d = 2131231329;
 			
 			// aapt resource value: 0x7F080262
-			public const int my_w3 = 2131231330;
+			public const int my_w2s = 2131231330;
 			
 			// aapt resource value: 0x7F080263
-			public const int my_wlb = 2131231331;
+			public const int my_w3 = 2131231331;
 			
 			// aapt resource value: 0x7F080264
-			public const int my_x1 = 2131231332;
+			public const int my_wlb = 2131231332;
 			
 			// aapt resource value: 0x7F080265
-			public const int my_x2 = 2131231333;
+			public const int my_x1 = 2131231333;
 			
 			// aapt resource value: 0x7F080266
-			public const int my_x3 = 2131231334;
+			public const int my_x2 = 2131231334;
 			
 			// aapt resource value: 0x7F080267
-			public const int my_x3c = 2131231335;
+			public const int my_x3 = 2131231335;
 			
 			// aapt resource value: 0x7F080268
-			public const int my_x4 = 2131231336;
+			public const int my_x3c = 2131231336;
 			
 			// aapt resource value: 0x7F080269
-			public const int my_x5c = 2131231337;
+			public const int my_x4 = 2131231337;
 			
 			// aapt resource value: 0x7F08026A
-			public const int name_del = 2131231338;
+			public const int my_x5c = 2131231338;
 			
 			// aapt resource value: 0x7F08026B
-			public const int name_del_sel = 2131231339;
+			public const int name_del = 2131231339;
 			
 			// aapt resource value: 0x7F08026C
-			public const int name_del_selector = 2131231340;
+			public const int name_del_sel = 2131231340;
 			
 			// aapt resource value: 0x7F08026D
-			public const int navigation_empty_icon = 2131231341;
-			
-			// aapt resource value: 0x7F080270
-			public const int nomessage = 2131231344;
-			
-			// aapt resource value: 0x7F080271
-			public const int notification_action_background = 2131231345;
-			
-			// aapt resource value: 0x7F080272
-			public const int notification_bg = 2131231346;
-			
-			// aapt resource value: 0x7F080273
-			public const int notification_bg_low = 2131231347;
-			
-			// aapt resource value: 0x7F080274
-			public const int notification_bg_low_normal = 2131231348;
-			
-			// aapt resource value: 0x7F080275
-			public const int notification_bg_low_pressed = 2131231349;
-			
-			// aapt resource value: 0x7F080276
-			public const int notification_bg_normal = 2131231350;
-			
-			// aapt resource value: 0x7F080277
-			public const int notification_bg_normal_pressed = 2131231351;
-			
-			// aapt resource value: 0x7F080278
-			public const int notification_icon_background = 2131231352;
-			
-			// aapt resource value: 0x7F080279
-			public const int notification_template_icon_bg = 2131231353;
-			
-			// aapt resource value: 0x7F08027A
-			public const int notification_template_icon_low_bg = 2131231354;
-			
-			// aapt resource value: 0x7F08027B
-			public const int notification_tile_bg = 2131231355;
-			
-			// aapt resource value: 0x7F08027C
-			public const int notify_bg = 2131231356;
-			
-			// aapt resource value: 0x7F08027D
-			public const int notify_panel_notification_icon_bg = 2131231357;
+			public const int name_del_selector = 2131231341;
 			
 			// aapt resource value: 0x7F08026E
-			public const int no_message = 2131231342;
+			public const int navigation_empty_icon = 2131231342;
 			
-			// aapt resource value: 0x7F08026F
-			public const int no_read = 2131231343;
+			// aapt resource value: 0x7F080271
+			public const int nomessage = 2131231345;
+			
+			// aapt resource value: 0x7F080272
+			public const int notification_action_background = 2131231346;
+			
+			// aapt resource value: 0x7F080273
+			public const int notification_bg = 2131231347;
+			
+			// aapt resource value: 0x7F080274
+			public const int notification_bg_low = 2131231348;
+			
+			// aapt resource value: 0x7F080275
+			public const int notification_bg_low_normal = 2131231349;
+			
+			// aapt resource value: 0x7F080276
+			public const int notification_bg_low_pressed = 2131231350;
+			
+			// aapt resource value: 0x7F080277
+			public const int notification_bg_normal = 2131231351;
+			
+			// aapt resource value: 0x7F080278
+			public const int notification_bg_normal_pressed = 2131231352;
+			
+			// aapt resource value: 0x7F080279
+			public const int notification_icon_background = 2131231353;
+			
+			// aapt resource value: 0x7F08027A
+			public const int notification_template_icon_bg = 2131231354;
+			
+			// aapt resource value: 0x7F08027B
+			public const int notification_template_icon_low_bg = 2131231355;
+			
+			// aapt resource value: 0x7F08027C
+			public const int notification_tile_bg = 2131231356;
+			
+			// aapt resource value: 0x7F08027D
+			public const int notify_bg = 2131231357;
 			
 			// aapt resource value: 0x7F08027E
-			public const int number_bg = 2131231358;
+			public const int notify_panel_notification_icon_bg = 2131231358;
+			
+			// aapt resource value: 0x7F08026F
+			public const int no_message = 2131231343;
+			
+			// aapt resource value: 0x7F080270
+			public const int no_read = 2131231344;
 			
 			// aapt resource value: 0x7F08027F
-			public const int offline = 2131231359;
+			public const int number_bg = 2131231359;
 			
 			// aapt resource value: 0x7F080280
-			public const int open_cameralist_alarmlist_selector = 2131231360;
+			public const int offline = 2131231360;
 			
 			// aapt resource value: 0x7F080281
-			public const int open_cameralist_button_selector = 2131231361;
+			public const int open_cameralist_alarmlist_selector = 2131231361;
 			
 			// aapt resource value: 0x7F080282
-			public const int open_cameralist_remotepb_selector = 2131231362;
+			public const int open_cameralist_button_selector = 2131231362;
 			
 			// aapt resource value: 0x7F080283
-			public const int open_cameralist_setup_selector = 2131231363;
+			public const int open_cameralist_remotepb_selector = 2131231363;
 			
 			// aapt resource value: 0x7F080284
-			public const int opinion = 2131231364;
+			public const int open_cameralist_setup_selector = 2131231364;
 			
 			// aapt resource value: 0x7F080285
-			public const int palyback_alarm_icon2 = 2131231365;
+			public const int opinion = 2131231365;
 			
 			// aapt resource value: 0x7F080286
-			public const int palyback_close = 2131231366;
+			public const int palyback_alarm_icon2 = 2131231366;
 			
 			// aapt resource value: 0x7F080287
-			public const int palyback_close_sel = 2131231367;
+			public const int palyback_close = 2131231367;
 			
 			// aapt resource value: 0x7F080288
-			public const int palyback_close_selector = 2131231368;
+			public const int palyback_close_sel = 2131231368;
 			
 			// aapt resource value: 0x7F080289
-			public const int palyback_date_down = 2131231369;
+			public const int palyback_close_selector = 2131231369;
 			
 			// aapt resource value: 0x7F08028A
-			public const int palyback_date_down_sel = 2131231370;
+			public const int palyback_date_down = 2131231370;
 			
 			// aapt resource value: 0x7F08028B
-			public const int palyback_full_down = 2131231371;
+			public const int palyback_date_down_sel = 2131231371;
 			
 			// aapt resource value: 0x7F08028C
-			public const int palyback_full_up = 2131231372;
+			public const int palyback_full_down = 2131231372;
 			
 			// aapt resource value: 0x7F08028D
-			public const int palyback_nest = 2131231373;
+			public const int palyback_full_up = 2131231373;
 			
 			// aapt resource value: 0x7F08028E
-			public const int palyback_pause = 2131231374;
+			public const int palyback_nest = 2131231374;
 			
 			// aapt resource value: 0x7F08028F
-			public const int palyback_pause_sel = 2131231375;
+			public const int palyback_pause = 2131231375;
 			
 			// aapt resource value: 0x7F080290
-			public const int palyback_previously = 2131231376;
+			public const int palyback_pause_sel = 2131231376;
 			
 			// aapt resource value: 0x7F080291
-			public const int palyback_previously_sel = 2131231377;
+			public const int palyback_previously = 2131231377;
 			
 			// aapt resource value: 0x7F080292
-			public const int palyback_previously_selector = 2131231378;
+			public const int palyback_previously_sel = 2131231378;
 			
 			// aapt resource value: 0x7F080293
-			public const int palyback_replay = 2131231379;
+			public const int palyback_previously_selector = 2131231379;
 			
 			// aapt resource value: 0x7F080294
-			public const int palyback_retry = 2131231380;
+			public const int palyback_replay = 2131231380;
 			
 			// aapt resource value: 0x7F080295
-			public const int palyback_time_bg = 2131231381;
+			public const int palyback_retry = 2131231381;
 			
 			// aapt resource value: 0x7F080296
-			public const int palyback_video = 2131231382;
+			public const int palyback_time_bg = 2131231382;
 			
 			// aapt resource value: 0x7F080297
-			public const int palyback_video_now = 2131231383;
+			public const int palyback_video = 2131231383;
 			
 			// aapt resource value: 0x7F080298
-			public const int palyback_video_now_sel = 2131231384;
+			public const int palyback_video_now = 2131231384;
 			
 			// aapt resource value: 0x7F080299
-			public const int palyback_video_now_selector = 2131231385;
+			public const int palyback_video_now_sel = 2131231385;
 			
 			// aapt resource value: 0x7F08029A
-			public const int palyback_video_sel = 2131231386;
+			public const int palyback_video_now_selector = 2131231386;
 			
 			// aapt resource value: 0x7F08029B
-			public const int palyback_video_selector = 2131231387;
+			public const int palyback_video_sel = 2131231387;
 			
 			// aapt resource value: 0x7F08029C
-			public const int pause = 2131231388;
+			public const int palyback_video_selector = 2131231388;
 			
 			// aapt resource value: 0x7F08029D
-			public const int pause_sel = 2131231389;
+			public const int pause = 2131231389;
 			
 			// aapt resource value: 0x7F08029E
-			public const int pic_bg = 2131231390;
+			public const int pause_sel = 2131231390;
 			
 			// aapt resource value: 0x7F08029F
-			public const int play = 2131231391;
-			
-			// aapt resource value: 0x7F0802FE
-			public const int playback = 2131231486;
-			
-			// aapt resource value: 0x7F08030E
-			public const int playbackslider = 2131231502;
-			
-			// aapt resource value: 0x7F08030F
-			public const int playbackslider_sel = 2131231503;
-			
-			// aapt resource value: 0x7F0802FF
-			public const int playback_button = 2131231487;
-			
-			// aapt resource value: 0x7F080300
-			public const int playback_cancel = 2131231488;
-			
-			// aapt resource value: 0x7F080301
-			public const int playback_check_selector = 2131231489;
-			
-			// aapt resource value: 0x7F080302
-			public const int playback_cover2 = 2131231490;
-			
-			// aapt resource value: 0x7F080303
-			public const int playback_cut = 2131231491;
-			
-			// aapt resource value: 0x7F080304
-			public const int playback_cut_btn_selector = 2131231492;
-			
-			// aapt resource value: 0x7F080305
-			public const int playback_cut_disable = 2131231493;
-			
-			// aapt resource value: 0x7F080306
-			public const int playback_cut_sel = 2131231494;
-			
-			// aapt resource value: 0x7F080307
-			public const int playback_matte = 2131231495;
-			
-			// aapt resource value: 0x7F080308
-			public const int playback_more_down = 2131231496;
-			
-			// aapt resource value: 0x7F080309
-			public const int playback_more_down1 = 2131231497;
-			
-			// aapt resource value: 0x7F08030A
-			public const int playback_more_up1 = 2131231498;
-			
-			// aapt resource value: 0x7F08030B
-			public const int playback_play = 2131231499;
-			
-			// aapt resource value: 0x7F08030C
-			public const int playback_play_sel = 2131231500;
-			
-			// aapt resource value: 0x7F08030D
-			public const int playback_sel = 2131231501;
-			
-			// aapt resource value: 0x7F080310
-			public const int playbtn_selector = 2131231504;
+			public const int pic_bg = 2131231391;
 			
 			// aapt resource value: 0x7F0802A0
-			public const int play_balanced = 2131231392;
+			public const int play = 2131231392;
 			
-			// aapt resource value: 0x7F0802A1
-			public const int play_balanced_disabel = 2131231393;
+			// aapt resource value: 0x7F0802FF
+			public const int playback = 2131231487;
 			
-			// aapt resource value: 0x7F0802A2
-			public const int play_balanced_sel = 2131231394;
+			// aapt resource value: 0x7F08030F
+			public const int playbackslider = 2131231503;
 			
-			// aapt resource value: 0x7F0802A3
-			public const int play_balanced_selector = 2131231395;
+			// aapt resource value: 0x7F080310
+			public const int playbackslider_sel = 2131231504;
 			
-			// aapt resource value: 0x7F0802A4
-			public const int play_big = 2131231396;
+			// aapt resource value: 0x7F080300
+			public const int playback_button = 2131231488;
 			
-			// aapt resource value: 0x7F0802A6
-			public const int play_bigbtn_selector = 2131231398;
+			// aapt resource value: 0x7F080301
+			public const int playback_cancel = 2131231489;
 			
-			// aapt resource value: 0x7F0802A5
-			public const int play_big_press = 2131231397;
+			// aapt resource value: 0x7F080302
+			public const int playback_check_selector = 2131231490;
 			
-			// aapt resource value: 0x7F0802A7
-			public const int play_button_bg = 2131231399;
+			// aapt resource value: 0x7F080303
+			public const int playback_cover2 = 2131231491;
 			
-			// aapt resource value: 0x7F0802A8
-			public const int play_button_sel = 2131231400;
+			// aapt resource value: 0x7F080304
+			public const int playback_cut = 2131231492;
 			
-			// aapt resource value: 0x7F0802A9
-			public const int play_button_selector = 2131231401;
+			// aapt resource value: 0x7F080305
+			public const int playback_cut_btn_selector = 2131231493;
 			
-			// aapt resource value: 0x7F0802AA
-			public const int play_close = 2131231402;
+			// aapt resource value: 0x7F080306
+			public const int playback_cut_disable = 2131231494;
 			
-			// aapt resource value: 0x7F0802AB
-			public const int play_close_sel = 2131231403;
+			// aapt resource value: 0x7F080307
+			public const int playback_cut_sel = 2131231495;
 			
-			// aapt resource value: 0x7F0802AC
-			public const int play_close_selector = 2131231404;
+			// aapt resource value: 0x7F080308
+			public const int playback_matte = 2131231496;
 			
-			// aapt resource value: 0x7F0802AD
-			public const int play_disable = 2131231405;
+			// aapt resource value: 0x7F080309
+			public const int playback_more_down = 2131231497;
 			
-			// aapt resource value: 0x7F0802AE
-			public const int play_flunet = 2131231406;
+			// aapt resource value: 0x7F08030A
+			public const int playback_more_down1 = 2131231498;
 			
-			// aapt resource value: 0x7F0802AF
-			public const int play_flunet_disabel = 2131231407;
+			// aapt resource value: 0x7F08030B
+			public const int playback_more_up1 = 2131231499;
 			
-			// aapt resource value: 0x7F0802B0
-			public const int play_flunet_sel = 2131231408;
+			// aapt resource value: 0x7F08030C
+			public const int playback_play = 2131231500;
 			
-			// aapt resource value: 0x7F0802B1
-			public const int play_flunet_selector = 2131231409;
+			// aapt resource value: 0x7F08030D
+			public const int playback_play_sel = 2131231501;
 			
-			// aapt resource value: 0x7F0802B2
-			public const int play_full_loding_logo = 2131231410;
-			
-			// aapt resource value: 0x7F0802B3
-			public const int play_full_multiple = 2131231411;
-			
-			// aapt resource value: 0x7F0802B4
-			public const int play_full_multiple2 = 2131231412;
-			
-			// aapt resource value: 0x7F0802B5
-			public const int play_full_multiple3 = 2131231413;
-			
-			// aapt resource value: 0x7F0802B6
-			public const int play_full_multiple4 = 2131231414;
-			
-			// aapt resource value: 0x7F0802B7
-			public const int play_full_multiple5 = 2131231415;
-			
-			// aapt resource value: 0x7F0802B8
-			public const int play_full_pause = 2131231416;
-			
-			// aapt resource value: 0x7F0802B9
-			public const int play_full_pause_sel = 2131231417;
-			
-			// aapt resource value: 0x7F0802BA
-			public const int play_full_pause_selector = 2131231418;
-			
-			// aapt resource value: 0x7F0802BB
-			public const int play_full_play = 2131231419;
-			
-			// aapt resource value: 0x7F0802BC
-			public const int play_full_play_sel = 2131231420;
-			
-			// aapt resource value: 0x7F0802BD
-			public const int play_full_play_selector = 2131231421;
-			
-			// aapt resource value: 0x7F0802BE
-			public const int play_full_previously = 2131231422;
-			
-			// aapt resource value: 0x7F0802BF
-			public const int play_full_previously_sel = 2131231423;
-			
-			// aapt resource value: 0x7F0802C0
-			public const int play_full_previously_selector = 2131231424;
-			
-			// aapt resource value: 0x7F0802C1
-			public const int play_full_ptz_selector = 2131231425;
-			
-			// aapt resource value: 0x7F0802C2
-			public const int play_full_quality_color_selector = 2131231426;
-			
-			// aapt resource value: 0x7F0802C3
-			public const int play_full_quality_selector = 2131231427;
-			
-			// aapt resource value: 0x7F0802C4
-			public const int play_full_soundoff_btn_selector = 2131231428;
-			
-			// aapt resource value: 0x7F0802C5
-			public const int play_full_soundon_btn_selector = 2131231429;
-			
-			// aapt resource value: 0x7F0802C6
-			public const int play_full_stop = 2131231430;
-			
-			// aapt resource value: 0x7F0802C7
-			public const int play_full_stop_sel = 2131231431;
-			
-			// aapt resource value: 0x7F0802C8
-			public const int play_full_stop_selector = 2131231432;
-			
-			// aapt resource value: 0x7F0802C9
-			public const int play_full_talk_selector = 2131231433;
-			
-			// aapt resource value: 0x7F0802CA
-			public const int play_full_video = 2131231434;
-			
-			// aapt resource value: 0x7F0802CB
-			public const int play_full_video_now = 2131231435;
-			
-			// aapt resource value: 0x7F0802CC
-			public const int play_full_video_now_sel = 2131231436;
-			
-			// aapt resource value: 0x7F0802CD
-			public const int play_full_video_now_selector = 2131231437;
-			
-			// aapt resource value: 0x7F0802CE
-			public const int play_full_video_sel = 2131231438;
-			
-			// aapt resource value: 0x7F0802CF
-			public const int play_full_video_selector = 2131231439;
-			
-			// aapt resource value: 0x7F0802D0
-			public const int play_hd = 2131231440;
-			
-			// aapt resource value: 0x7F0802D1
-			public const int play_hd_disabel = 2131231441;
-			
-			// aapt resource value: 0x7F0802D2
-			public const int play_hd_sel = 2131231442;
-			
-			// aapt resource value: 0x7F0802D3
-			public const int play_hd_selector = 2131231443;
-			
-			// aapt resource value: 0x7F0802D4
-			public const int play_play = 2131231444;
-			
-			// aapt resource value: 0x7F0802D5
-			public const int play_play_dis = 2131231445;
-			
-			// aapt resource value: 0x7F0802D6
-			public const int play_play_sel = 2131231446;
-			
-			// aapt resource value: 0x7F0802D7
-			public const int play_play_selector = 2131231447;
-			
-			// aapt resource value: 0x7F0802D8
-			public const int play_press = 2131231448;
-			
-			// aapt resource value: 0x7F0802D9
-			public const int play_previously = 2131231449;
-			
-			// aapt resource value: 0x7F0802DA
-			public const int play_previously_dis = 2131231450;
-			
-			// aapt resource value: 0x7F0802DB
-			public const int play_previously_sel = 2131231451;
-			
-			// aapt resource value: 0x7F0802DC
-			public const int play_previously_selector = 2131231452;
-			
-			// aapt resource value: 0x7F0802DD
-			public const int play_privacy_selector = 2131231453;
-			
-			// aapt resource value: 0x7F0802DE
-			public const int play_ptz = 2131231454;
-			
-			// aapt resource value: 0x7F0802DF
-			public const int play_ptz_dis = 2131231455;
-			
-			// aapt resource value: 0x7F0802E0
-			public const int play_ptz_sel = 2131231456;
-			
-			// aapt resource value: 0x7F0802E1
-			public const int play_ptz_selector = 2131231457;
-			
-			// aapt resource value: 0x7F0802E2
-			public const int play_small = 2131231458;
-			
-			// aapt resource value: 0x7F0802E4
-			public const int play_smallbtn_selector = 2131231460;
-			
-			// aapt resource value: 0x7F0802E3
-			public const int play_small_press = 2131231459;
-			
-			// aapt resource value: 0x7F0802E5
-			public const int play_speech = 2131231461;
-			
-			// aapt resource value: 0x7F0802E6
-			public const int play_speech_dis = 2131231462;
-			
-			// aapt resource value: 0x7F0802E7
-			public const int play_speech_sel = 2131231463;
-			
-			// aapt resource value: 0x7F0802E8
-			public const int play_speech_selector = 2131231464;
-			
-			// aapt resource value: 0x7F0802E9
-			public const int play_stop = 2131231465;
-			
-			// aapt resource value: 0x7F0802EA
-			public const int play_stop_sel = 2131231466;
-			
-			// aapt resource value: 0x7F0802EB
-			public const int play_stop_selector = 2131231467;
-			
-			// aapt resource value: 0x7F0802EC
-			public const int play_talk = 2131231468;
-			
-			// aapt resource value: 0x7F0802F0
-			public const int play_talkback = 2131231472;
-			
-			// aapt resource value: 0x7F0802F1
-			public const int play_talkback_sel = 2131231473;
-			
-			// aapt resource value: 0x7F0802F2
-			public const int play_talkback_selector = 2131231474;
-			
-			// aapt resource value: 0x7F0802ED
-			public const int play_talk_dis = 2131231469;
-			
-			// aapt resource value: 0x7F0802EE
-			public const int play_talk_sel = 2131231470;
-			
-			// aapt resource value: 0x7F0802EF
-			public const int play_talk_selector = 2131231471;
-			
-			// aapt resource value: 0x7F0802F3
-			public const int play_video = 2131231475;
-			
-			// aapt resource value: 0x7F0802F4
-			public const int play_video_dis = 2131231476;
-			
-			// aapt resource value: 0x7F0802F5
-			public const int play_video_record = 2131231477;
-			
-			// aapt resource value: 0x7F0802F6
-			public const int play_video_sel = 2131231478;
-			
-			// aapt resource value: 0x7F0802F7
-			public const int play_video_selector = 2131231479;
-			
-			// aapt resource value: 0x7F0802F8
-			public const int play_video_start = 2131231480;
-			
-			// aapt resource value: 0x7F0802F9
-			public const int play_video_time_bg = 2131231481;
-			
-			// aapt resource value: 0x7F0802FA
-			public const int play_voice = 2131231482;
-			
-			// aapt resource value: 0x7F0802FB
-			public const int play_voice_dis = 2131231483;
-			
-			// aapt resource value: 0x7F0802FC
-			public const int play_voice_sel = 2131231484;
-			
-			// aapt resource value: 0x7F0802FD
-			public const int play_voice_selector = 2131231485;
+			// aapt resource value: 0x7F08030E
+			public const int playback_sel = 2131231502;
 			
 			// aapt resource value: 0x7F080311
-			public const int popdialogbg = 2131231505;
+			public const int playbtn_selector = 2131231505;
+			
+			// aapt resource value: 0x7F0802A1
+			public const int play_balanced = 2131231393;
+			
+			// aapt resource value: 0x7F0802A2
+			public const int play_balanced_disabel = 2131231394;
+			
+			// aapt resource value: 0x7F0802A3
+			public const int play_balanced_sel = 2131231395;
+			
+			// aapt resource value: 0x7F0802A4
+			public const int play_balanced_selector = 2131231396;
+			
+			// aapt resource value: 0x7F0802A5
+			public const int play_big = 2131231397;
+			
+			// aapt resource value: 0x7F0802A7
+			public const int play_bigbtn_selector = 2131231399;
+			
+			// aapt resource value: 0x7F0802A6
+			public const int play_big_press = 2131231398;
+			
+			// aapt resource value: 0x7F0802A8
+			public const int play_button_bg = 2131231400;
+			
+			// aapt resource value: 0x7F0802A9
+			public const int play_button_sel = 2131231401;
+			
+			// aapt resource value: 0x7F0802AA
+			public const int play_button_selector = 2131231402;
+			
+			// aapt resource value: 0x7F0802AB
+			public const int play_close = 2131231403;
+			
+			// aapt resource value: 0x7F0802AC
+			public const int play_close_sel = 2131231404;
+			
+			// aapt resource value: 0x7F0802AD
+			public const int play_close_selector = 2131231405;
+			
+			// aapt resource value: 0x7F0802AE
+			public const int play_disable = 2131231406;
+			
+			// aapt resource value: 0x7F0802AF
+			public const int play_flunet = 2131231407;
+			
+			// aapt resource value: 0x7F0802B0
+			public const int play_flunet_disabel = 2131231408;
+			
+			// aapt resource value: 0x7F0802B1
+			public const int play_flunet_sel = 2131231409;
+			
+			// aapt resource value: 0x7F0802B2
+			public const int play_flunet_selector = 2131231410;
+			
+			// aapt resource value: 0x7F0802B3
+			public const int play_full_loding_logo = 2131231411;
+			
+			// aapt resource value: 0x7F0802B4
+			public const int play_full_multiple = 2131231412;
+			
+			// aapt resource value: 0x7F0802B5
+			public const int play_full_multiple2 = 2131231413;
+			
+			// aapt resource value: 0x7F0802B6
+			public const int play_full_multiple3 = 2131231414;
+			
+			// aapt resource value: 0x7F0802B7
+			public const int play_full_multiple4 = 2131231415;
+			
+			// aapt resource value: 0x7F0802B8
+			public const int play_full_multiple5 = 2131231416;
+			
+			// aapt resource value: 0x7F0802B9
+			public const int play_full_pause = 2131231417;
+			
+			// aapt resource value: 0x7F0802BA
+			public const int play_full_pause_sel = 2131231418;
+			
+			// aapt resource value: 0x7F0802BB
+			public const int play_full_pause_selector = 2131231419;
+			
+			// aapt resource value: 0x7F0802BC
+			public const int play_full_play = 2131231420;
+			
+			// aapt resource value: 0x7F0802BD
+			public const int play_full_play_sel = 2131231421;
+			
+			// aapt resource value: 0x7F0802BE
+			public const int play_full_play_selector = 2131231422;
+			
+			// aapt resource value: 0x7F0802BF
+			public const int play_full_previously = 2131231423;
+			
+			// aapt resource value: 0x7F0802C0
+			public const int play_full_previously_sel = 2131231424;
+			
+			// aapt resource value: 0x7F0802C1
+			public const int play_full_previously_selector = 2131231425;
+			
+			// aapt resource value: 0x7F0802C2
+			public const int play_full_ptz_selector = 2131231426;
+			
+			// aapt resource value: 0x7F0802C3
+			public const int play_full_quality_color_selector = 2131231427;
+			
+			// aapt resource value: 0x7F0802C4
+			public const int play_full_quality_selector = 2131231428;
+			
+			// aapt resource value: 0x7F0802C5
+			public const int play_full_soundoff_btn_selector = 2131231429;
+			
+			// aapt resource value: 0x7F0802C6
+			public const int play_full_soundon_btn_selector = 2131231430;
+			
+			// aapt resource value: 0x7F0802C7
+			public const int play_full_stop = 2131231431;
+			
+			// aapt resource value: 0x7F0802C8
+			public const int play_full_stop_sel = 2131231432;
+			
+			// aapt resource value: 0x7F0802C9
+			public const int play_full_stop_selector = 2131231433;
+			
+			// aapt resource value: 0x7F0802CA
+			public const int play_full_talk_selector = 2131231434;
+			
+			// aapt resource value: 0x7F0802CB
+			public const int play_full_video = 2131231435;
+			
+			// aapt resource value: 0x7F0802CC
+			public const int play_full_video_now = 2131231436;
+			
+			// aapt resource value: 0x7F0802CD
+			public const int play_full_video_now_sel = 2131231437;
+			
+			// aapt resource value: 0x7F0802CE
+			public const int play_full_video_now_selector = 2131231438;
+			
+			// aapt resource value: 0x7F0802CF
+			public const int play_full_video_sel = 2131231439;
+			
+			// aapt resource value: 0x7F0802D0
+			public const int play_full_video_selector = 2131231440;
+			
+			// aapt resource value: 0x7F0802D1
+			public const int play_hd = 2131231441;
+			
+			// aapt resource value: 0x7F0802D2
+			public const int play_hd_disabel = 2131231442;
+			
+			// aapt resource value: 0x7F0802D3
+			public const int play_hd_sel = 2131231443;
+			
+			// aapt resource value: 0x7F0802D4
+			public const int play_hd_selector = 2131231444;
+			
+			// aapt resource value: 0x7F0802D5
+			public const int play_play = 2131231445;
+			
+			// aapt resource value: 0x7F0802D6
+			public const int play_play_dis = 2131231446;
+			
+			// aapt resource value: 0x7F0802D7
+			public const int play_play_sel = 2131231447;
+			
+			// aapt resource value: 0x7F0802D8
+			public const int play_play_selector = 2131231448;
+			
+			// aapt resource value: 0x7F0802D9
+			public const int play_press = 2131231449;
+			
+			// aapt resource value: 0x7F0802DA
+			public const int play_previously = 2131231450;
+			
+			// aapt resource value: 0x7F0802DB
+			public const int play_previously_dis = 2131231451;
+			
+			// aapt resource value: 0x7F0802DC
+			public const int play_previously_sel = 2131231452;
+			
+			// aapt resource value: 0x7F0802DD
+			public const int play_previously_selector = 2131231453;
+			
+			// aapt resource value: 0x7F0802DE
+			public const int play_privacy_selector = 2131231454;
+			
+			// aapt resource value: 0x7F0802DF
+			public const int play_ptz = 2131231455;
+			
+			// aapt resource value: 0x7F0802E0
+			public const int play_ptz_dis = 2131231456;
+			
+			// aapt resource value: 0x7F0802E1
+			public const int play_ptz_sel = 2131231457;
+			
+			// aapt resource value: 0x7F0802E2
+			public const int play_ptz_selector = 2131231458;
+			
+			// aapt resource value: 0x7F0802E3
+			public const int play_small = 2131231459;
+			
+			// aapt resource value: 0x7F0802E5
+			public const int play_smallbtn_selector = 2131231461;
+			
+			// aapt resource value: 0x7F0802E4
+			public const int play_small_press = 2131231460;
+			
+			// aapt resource value: 0x7F0802E6
+			public const int play_speech = 2131231462;
+			
+			// aapt resource value: 0x7F0802E7
+			public const int play_speech_dis = 2131231463;
+			
+			// aapt resource value: 0x7F0802E8
+			public const int play_speech_sel = 2131231464;
+			
+			// aapt resource value: 0x7F0802E9
+			public const int play_speech_selector = 2131231465;
+			
+			// aapt resource value: 0x7F0802EA
+			public const int play_stop = 2131231466;
+			
+			// aapt resource value: 0x7F0802EB
+			public const int play_stop_sel = 2131231467;
+			
+			// aapt resource value: 0x7F0802EC
+			public const int play_stop_selector = 2131231468;
+			
+			// aapt resource value: 0x7F0802ED
+			public const int play_talk = 2131231469;
+			
+			// aapt resource value: 0x7F0802F1
+			public const int play_talkback = 2131231473;
+			
+			// aapt resource value: 0x7F0802F2
+			public const int play_talkback_sel = 2131231474;
+			
+			// aapt resource value: 0x7F0802F3
+			public const int play_talkback_selector = 2131231475;
+			
+			// aapt resource value: 0x7F0802EE
+			public const int play_talk_dis = 2131231470;
+			
+			// aapt resource value: 0x7F0802EF
+			public const int play_talk_sel = 2131231471;
+			
+			// aapt resource value: 0x7F0802F0
+			public const int play_talk_selector = 2131231472;
+			
+			// aapt resource value: 0x7F0802F4
+			public const int play_video = 2131231476;
+			
+			// aapt resource value: 0x7F0802F5
+			public const int play_video_dis = 2131231477;
+			
+			// aapt resource value: 0x7F0802F6
+			public const int play_video_record = 2131231478;
+			
+			// aapt resource value: 0x7F0802F7
+			public const int play_video_sel = 2131231479;
+			
+			// aapt resource value: 0x7F0802F8
+			public const int play_video_selector = 2131231480;
+			
+			// aapt resource value: 0x7F0802F9
+			public const int play_video_start = 2131231481;
+			
+			// aapt resource value: 0x7F0802FA
+			public const int play_video_time_bg = 2131231482;
+			
+			// aapt resource value: 0x7F0802FB
+			public const int play_voice = 2131231483;
+			
+			// aapt resource value: 0x7F0802FC
+			public const int play_voice_dis = 2131231484;
+			
+			// aapt resource value: 0x7F0802FD
+			public const int play_voice_sel = 2131231485;
+			
+			// aapt resource value: 0x7F0802FE
+			public const int play_voice_selector = 2131231486;
 			
 			// aapt resource value: 0x7F080312
-			public const int prepare_device = 2131231506;
+			public const int popdialogbg = 2131231506;
 			
 			// aapt resource value: 0x7F080313
-			public const int preview_close1_video_ico = 2131231507;
+			public const int prepare_device = 2131231507;
 			
 			// aapt resource value: 0x7F080314
-			public const int preview_close_video = 2131231508;
+			public const int preview_close1_video_ico = 2131231508;
 			
 			// aapt resource value: 0x7F080315
-			public const int preview_close_video_dis = 2131231509;
+			public const int preview_close_video = 2131231509;
 			
 			// aapt resource value: 0x7F080316
-			public const int preview_close_video_sel = 2131231510;
+			public const int preview_close_video_dis = 2131231510;
 			
 			// aapt resource value: 0x7F080317
-			public const int preview_down_bg_normal = 2131231511;
+			public const int preview_close_video_sel = 2131231511;
 			
 			// aapt resource value: 0x7F080318
-			public const int preview_down_bg_pressed = 2131231512;
+			public const int preview_down_bg_normal = 2131231512;
 			
 			// aapt resource value: 0x7F080319
-			public const int preview_down_ico = 2131231513;
+			public const int preview_down_bg_pressed = 2131231513;
 			
 			// aapt resource value: 0x7F08031A
-			public const int preview_down_selector = 2131231514;
+			public const int preview_down_ico = 2131231514;
 			
 			// aapt resource value: 0x7F08031B
-			public const int preview_enlarge = 2131231515;
+			public const int preview_down_selector = 2131231515;
 			
 			// aapt resource value: 0x7F08031C
-			public const int preview_enlarge_btn_sel = 2131231516;
+			public const int preview_enlarge = 2131231516;
 			
 			// aapt resource value: 0x7F08031D
-			public const int preview_enlarge_dis = 2131231517;
+			public const int preview_enlarge_btn_sel = 2131231517;
 			
 			// aapt resource value: 0x7F08031E
-			public const int preview_enlarge_selector = 2131231518;
+			public const int preview_enlarge_dis = 2131231518;
 			
 			// aapt resource value: 0x7F08031F
-			public const int preview_play_btn = 2131231519;
+			public const int preview_enlarge_selector = 2131231519;
 			
 			// aapt resource value: 0x7F080320
-			public const int preview_play_btn_dis = 2131231520;
+			public const int preview_play_btn = 2131231520;
 			
 			// aapt resource value: 0x7F080321
-			public const int preview_play_btn_sel = 2131231521;
+			public const int preview_play_btn_dis = 2131231521;
 			
 			// aapt resource value: 0x7F080322
-			public const int preview_recording = 2131231522;
+			public const int preview_play_btn_sel = 2131231522;
 			
 			// aapt resource value: 0x7F080323
-			public const int preview_recording_dis = 2131231523;
+			public const int preview_recording = 2131231523;
 			
 			// aapt resource value: 0x7F080324
-			public const int preview_recording_sel = 2131231524;
+			public const int preview_recording_dis = 2131231524;
 			
 			// aapt resource value: 0x7F080325
-			public const int preview_selection_bg = 2131231525;
+			public const int preview_recording_sel = 2131231525;
 			
 			// aapt resource value: 0x7F080326
-			public const int preview_stopplay_btn_dis = 2131231526;
+			public const int preview_selection_bg = 2131231526;
 			
 			// aapt resource value: 0x7F080327
-			public const int preview_unvoice_btn = 2131231527;
+			public const int preview_stopplay_btn_dis = 2131231527;
 			
 			// aapt resource value: 0x7F080328
-			public const int preview_unvoice_btn_sel = 2131231528;
+			public const int preview_unvoice_btn = 2131231528;
 			
 			// aapt resource value: 0x7F080329
-			public const int preview_video_selection = 2131231529;
+			public const int preview_unvoice_btn_sel = 2131231529;
 			
 			// aapt resource value: 0x7F08032A
-			public const int preview_video_selection_hover = 2131231530;
+			public const int preview_video_selection = 2131231530;
 			
 			// aapt resource value: 0x7F08032B
-			public const int preview_voice_btn = 2131231531;
+			public const int preview_video_selection_hover = 2131231531;
 			
 			// aapt resource value: 0x7F08032C
-			public const int preview_voice_btn_dis = 2131231532;
+			public const int preview_voice_btn = 2131231532;
 			
 			// aapt resource value: 0x7F08032D
-			public const int preview_voice_btn_sel = 2131231533;
+			public const int preview_voice_btn_dis = 2131231533;
 			
 			// aapt resource value: 0x7F08032E
-			public const int previously = 2131231534;
+			public const int preview_voice_btn_sel = 2131231534;
 			
 			// aapt resource value: 0x7F08032F
-			public const int previously_dis = 2131231535;
+			public const int previously = 2131231535;
 			
 			// aapt resource value: 0x7F080330
-			public const int previously_sel = 2131231536;
+			public const int previously_dis = 2131231536;
 			
 			// aapt resource value: 0x7F080331
-			public const int ptz_bg = 2131231537;
+			public const int previously_sel = 2131231537;
 			
 			// aapt resource value: 0x7F080332
-			public const int ptz_bottom_limit = 2131231538;
+			public const int ptz_bg = 2131231538;
 			
 			// aapt resource value: 0x7F080333
-			public const int ptz_bottom_sel = 2131231539;
+			public const int ptz_bottom_limit = 2131231539;
 			
 			// aapt resource value: 0x7F080334
-			public const int ptz_left_limit = 2131231540;
+			public const int ptz_bottom_sel = 2131231540;
 			
 			// aapt resource value: 0x7F080335
-			public const int ptz_left_sel = 2131231541;
+			public const int ptz_left_limit = 2131231541;
 			
 			// aapt resource value: 0x7F080336
-			public const int ptz_prompt = 2131231542;
+			public const int ptz_left_sel = 2131231542;
 			
 			// aapt resource value: 0x7F080337
-			public const int ptz_right_limit = 2131231543;
+			public const int ptz_prompt = 2131231543;
 			
 			// aapt resource value: 0x7F080338
-			public const int ptz_right_sel = 2131231544;
+			public const int ptz_right_limit = 2131231544;
 			
 			// aapt resource value: 0x7F080339
-			public const int ptz_top_limit = 2131231545;
+			public const int ptz_right_sel = 2131231545;
 			
 			// aapt resource value: 0x7F08033A
-			public const int ptz_turn = 2131231546;
+			public const int ptz_top_limit = 2131231546;
 			
 			// aapt resource value: 0x7F08033B
-			public const int ptz_turn_sel = 2131231547;
+			public const int ptz_turn = 2131231547;
 			
 			// aapt resource value: 0x7F08033C
-			public const int ptz_turn_selector = 2131231548;
+			public const int ptz_turn_sel = 2131231548;
 			
 			// aapt resource value: 0x7F08033D
-			public const int ptz_up_sel = 2131231549;
+			public const int ptz_turn_selector = 2131231549;
 			
 			// aapt resource value: 0x7F08033E
-			public const int push_close = 2131231550;
+			public const int ptz_up_sel = 2131231550;
 			
 			// aapt resource value: 0x7F08033F
-			public const int push_close_sel = 2131231551;
+			public const int push_close = 2131231551;
 			
 			// aapt resource value: 0x7F080340
-			public const int push_close_selector = 2131231552;
+			public const int push_close_sel = 2131231552;
 			
 			// aapt resource value: 0x7F080341
-			public const int put_ico = 2131231553;
+			public const int push_close_selector = 2131231553;
 			
 			// aapt resource value: 0x7F080342
-			public const int query_loding1 = 2131231554;
+			public const int put_ico = 2131231554;
 			
 			// aapt resource value: 0x7F080343
-			public const int query_loding2 = 2131231555;
+			public const int query_loding1 = 2131231555;
 			
 			// aapt resource value: 0x7F080344
-			public const int query_loding3 = 2131231556;
+			public const int query_loding2 = 2131231556;
 			
 			// aapt resource value: 0x7F080345
-			public const int query_loding4 = 2131231557;
+			public const int query_loding3 = 2131231557;
 			
 			// aapt resource value: 0x7F080346
-			public const int query_loding5 = 2131231558;
+			public const int query_loding4 = 2131231558;
 			
 			// aapt resource value: 0x7F080347
-			public const int radius_rect_bg_qq_group = 2131231559;
+			public const int query_loding5 = 2131231559;
 			
 			// aapt resource value: 0x7F080348
-			public const int read_button = 2131231560;
+			public const int radius_rect_bg_qq_group = 2131231560;
 			
 			// aapt resource value: 0x7F080349
-			public const int read_button_sel = 2131231561;
+			public const int read_button = 2131231561;
 			
 			// aapt resource value: 0x7F08034A
-			public const int read_button_selector = 2131231562;
+			public const int read_button_sel = 2131231562;
 			
 			// aapt resource value: 0x7F08034B
-			public const int refresh_selector = 2131231563;
+			public const int read_button_selector = 2131231563;
 			
 			// aapt resource value: 0x7F08034C
-			public const int register_server_bg = 2131231564;
+			public const int refresh_selector = 2131231564;
 			
 			// aapt resource value: 0x7F08034D
-			public const int remote_cal_selector = 2131231565;
+			public const int register_server_bg = 2131231565;
 			
 			// aapt resource value: 0x7F08034E
-			public const int remote_exit_btn_selector = 2131231566;
+			public const int remote_cal_selector = 2131231566;
 			
 			// aapt resource value: 0x7F08034F
-			public const int remote_list_pause_btn_selector = 2131231567;
+			public const int remote_exit_btn_selector = 2131231567;
 			
 			// aapt resource value: 0x7F080350
-			public const int remote_list_play_btn_selector = 2131231568;
+			public const int remote_list_pause_btn_selector = 2131231568;
 			
 			// aapt resource value: 0x7F080351
-			public const int remote_list_soundoff_btn_selector = 2131231569;
+			public const int remote_list_play_btn_selector = 2131231569;
 			
 			// aapt resource value: 0x7F080352
-			public const int remote_list_soundon_btn_selector = 2131231570;
+			public const int remote_list_soundoff_btn_selector = 2131231570;
 			
 			// aapt resource value: 0x7F080353
-			public const int remote_play = 2131231571;
+			public const int remote_list_soundon_btn_selector = 2131231571;
 			
 			// aapt resource value: 0x7F080354
-			public const int remote_play_sel = 2131231572;
+			public const int remote_play = 2131231572;
 			
 			// aapt resource value: 0x7F080355
-			public const int remote_seekbar_style = 2131231573;
+			public const int remote_play_sel = 2131231573;
 			
 			// aapt resource value: 0x7F080356
-			public const int remote_seekbar_thumb = 2131231574;
+			public const int remote_seekbar_style = 2131231574;
 			
 			// aapt resource value: 0x7F080357
-			public const int reset_deivce = 2131231575;
-			
-			// aapt resource value: 0x7F080364
-			public const int results_4_dvr = 2131231588;
-			
-			// aapt resource value: 0x7F080365
-			public const int results_8_16_nvr = 2131231589;
-			
-			// aapt resource value: 0x7F080366
-			public const int results_8_nvr = 2131231590;
-			
-			// aapt resource value: 0x7F080367
-			public const int results_c6p = 2131231591;
-			
-			// aapt resource value: 0x7F080368
-			public const int results_mini_360_plus = 2131231592;
-			
-			// aapt resource value: 0x7F080369
-			public const int results_mini_trooper = 2131231593;
-			
-			// aapt resource value: 0x7F08036A
-			public const int results_pic_a1 = 2131231594;
-			
-			// aapt resource value: 0x7F08036B
-			public const int results_pic_a1c = 2131231595;
-			
-			// aapt resource value: 0x7F08036C
-			public const int results_pic_a1s = 2131231596;
-			
-			// aapt resource value: 0x7F08036D
-			public const int results_pic_baidu_c2s = 2131231597;
-			
-			// aapt resource value: 0x7F08036E
-			public const int results_pic_bg = 2131231598;
-			
-			// aapt resource value: 0x7F08036F
-			public const int results_pic_c1 = 2131231599;
-			
-			// aapt resource value: 0x7F080370
-			public const int results_pic_c2 = 2131231600;
-			
-			// aapt resource value: 0x7F080373
-			public const int results_pic_c2c = 2131231603;
-			
-			// aapt resource value: 0x7F080374
-			public const int results_pic_c2mini = 2131231604;
-			
-			// aapt resource value: 0x7F080375
-			public const int results_pic_c2mini2 = 2131231605;
-			
-			// aapt resource value: 0x7F080376
-			public const int results_pic_c2plus = 2131231606;
-			
-			// aapt resource value: 0x7F080377
-			public const int results_pic_c2s = 2131231607;
-			
-			// aapt resource value: 0x7F080378
-			public const int results_pic_c2w = 2131231608;
-			
-			// aapt resource value: 0x7F080371
-			public const int results_pic_c2_2 = 2131231601;
-			
-			// aapt resource value: 0x7F080372
-			public const int results_pic_c2_usa = 2131231602;
-			
-			// aapt resource value: 0x7F080379
-			public const int results_pic_c3 = 2131231609;
-			
-			// aapt resource value: 0x7F08037A
-			public const int results_pic_c3c = 2131231610;
-			
-			// aapt resource value: 0x7F08037B
-			public const int results_pic_c3e = 2131231611;
-			
-			// aapt resource value: 0x7F08037C
-			public const int results_pic_c3s = 2131231612;
-			
-			// aapt resource value: 0x7F08037D
-			public const int results_pic_c4 = 2131231613;
-			
-			// aapt resource value: 0x7F08037E
-			public const int results_pic_c4c = 2131231614;
-			
-			// aapt resource value: 0x7F08037F
-			public const int results_pic_c4e = 2131231615;
-			
-			// aapt resource value: 0x7F080380
-			public const int results_pic_c4s = 2131231616;
-			
-			// aapt resource value: 0x7F080381
-			public const int results_pic_c6 = 2131231617;
-			
-			// aapt resource value: 0x7F080382
-			public const int results_pic_c6c = 2131231618;
-			
-			// aapt resource value: 0x7F080383
-			public const int results_pic_c6c_1 = 2131231619;
-			
-			// aapt resource value: 0x7F080384
-			public const int results_pic_c6c_2 = 2131231620;
-			
-			// aapt resource value: 0x7F080385
-			public const int results_pic_c6h = 2131231621;
-			
-			// aapt resource value: 0x7F080386
-			public const int results_pic_co2 = 2131231622;
-			
-			// aapt resource value: 0x7F080387
-			public const int results_pic_d1 = 2131231623;
-			
-			// aapt resource value: 0x7F080388
-			public const int results_pic_default = 2131231624;
-			
-			// aapt resource value: 0x7F080389
-			public const int results_pic_f1 = 2131231625;
-			
-			// aapt resource value: 0x7F08038A
-			public const int results_pic_h2c = 2131231626;
-			
-			// aapt resource value: 0x7F08038B
-			public const int results_pic_h2s = 2131231627;
-			
-			// aapt resource value: 0x7F08038C
-			public const int results_pic_n1 = 2131231628;
-			
-			// aapt resource value: 0x7F08038D
-			public const int results_pic_n1w = 2131231629;
-			
-			// aapt resource value: 0x7F08038E
-			public const int results_pic_r1 = 2131231630;
-			
-			// aapt resource value: 0x7F08038F
-			public const int results_pic_r2 = 2131231631;
-			
-			// aapt resource value: 0x7F080390
-			public const int results_pic_w1 = 2131231632;
-			
-			// aapt resource value: 0x7F080391
-			public const int results_pic_w3 = 2131231633;
-			
-			// aapt resource value: 0x7F080392
-			public const int results_pic_x1 = 2131231634;
-			
-			// aapt resource value: 0x7F080393
-			public const int results_pic_x2 = 2131231635;
-			
-			// aapt resource value: 0x7F080394
-			public const int results_pic_x3 = 2131231636;
-			
-			// aapt resource value: 0x7F080395
-			public const int results_pic_x3c = 2131231637;
-			
-			// aapt resource value: 0x7F080396
-			public const int results_pic_x4 = 2131231638;
-			
-			// aapt resource value: 0x7F080397
-			public const int results_pic_z1 = 2131231639;
-			
-			// aapt resource value: 0x7F080398
-			public const int results_w2d = 2131231640;
-			
-			// aapt resource value: 0x7F080399
-			public const int results_w2s = 2131231641;
-			
-			// aapt resource value: 0x7F08039A
-			public const int results_wlb = 2131231642;
-			
-			// aapt resource value: 0x7F08039B
-			public const int results_x5_108tp = 2131231643;
+			public const int remote_seekbar_thumb = 2131231575;
 			
 			// aapt resource value: 0x7F080358
-			public const int result_5k_vr104d = 2131231576;
+			public const int reset_deivce = 2131231576;
 			
-			// aapt resource value: 0x7F080359
-			public const int result_5k_vr116d = 2131231577;
+			// aapt resource value: 0x7F080365
+			public const int results_4_dvr = 2131231589;
 			
-			// aapt resource value: 0x7F08035A
-			public const int result_8_16dvr = 2131231578;
+			// aapt resource value: 0x7F080366
+			public const int results_8_16_nvr = 2131231590;
 			
-			// aapt resource value: 0x7F08035B
-			public const int result_cs_c3w = 2131231579;
+			// aapt resource value: 0x7F080367
+			public const int results_8_nvr = 2131231591;
 			
-			// aapt resource value: 0x7F08035C
-			public const int result_cs_vr104d = 2131231580;
+			// aapt resource value: 0x7F080368
+			public const int results_c6p = 2131231592;
 			
-			// aapt resource value: 0x7F08035D
-			public const int result_cs_vr108d = 2131231581;
+			// aapt resource value: 0x7F080369
+			public const int results_mini_360_plus = 2131231593;
 			
-			// aapt resource value: 0x7F08035E
-			public const int result_cs_vr116d = 2131231582;
+			// aapt resource value: 0x7F08036A
+			public const int results_mini_trooper = 2131231594;
 			
-			// aapt resource value: 0x7F08035F
-			public const int result_pic_dh1 = 2131231583;
+			// aapt resource value: 0x7F08036B
+			public const int results_pic_a1 = 2131231595;
 			
-			// aapt resource value: 0x7F080360
-			public const int result_pic_doorbell = 2131231584;
+			// aapt resource value: 0x7F08036C
+			public const int results_pic_a1c = 2131231596;
 			
-			// aapt resource value: 0x7F080361
-			public const int result_pic_doorbell_hik = 2131231585;
+			// aapt resource value: 0x7F08036D
+			public const int results_pic_a1s = 2131231597;
 			
-			// aapt resource value: 0x7F080362
-			public const int result_pic_light = 2131231586;
+			// aapt resource value: 0x7F08036E
+			public const int results_pic_baidu_c2s = 2131231598;
 			
-			// aapt resource value: 0x7F080363
-			public const int result_x5c = 2131231587;
+			// aapt resource value: 0x7F08036F
+			public const int results_pic_bg = 2131231599;
+			
+			// aapt resource value: 0x7F080370
+			public const int results_pic_c1 = 2131231600;
+			
+			// aapt resource value: 0x7F080371
+			public const int results_pic_c2 = 2131231601;
+			
+			// aapt resource value: 0x7F080374
+			public const int results_pic_c2c = 2131231604;
+			
+			// aapt resource value: 0x7F080375
+			public const int results_pic_c2mini = 2131231605;
+			
+			// aapt resource value: 0x7F080376
+			public const int results_pic_c2mini2 = 2131231606;
+			
+			// aapt resource value: 0x7F080377
+			public const int results_pic_c2plus = 2131231607;
+			
+			// aapt resource value: 0x7F080378
+			public const int results_pic_c2s = 2131231608;
+			
+			// aapt resource value: 0x7F080379
+			public const int results_pic_c2w = 2131231609;
+			
+			// aapt resource value: 0x7F080372
+			public const int results_pic_c2_2 = 2131231602;
+			
+			// aapt resource value: 0x7F080373
+			public const int results_pic_c2_usa = 2131231603;
+			
+			// aapt resource value: 0x7F08037A
+			public const int results_pic_c3 = 2131231610;
+			
+			// aapt resource value: 0x7F08037B
+			public const int results_pic_c3c = 2131231611;
+			
+			// aapt resource value: 0x7F08037C
+			public const int results_pic_c3e = 2131231612;
+			
+			// aapt resource value: 0x7F08037D
+			public const int results_pic_c3s = 2131231613;
+			
+			// aapt resource value: 0x7F08037E
+			public const int results_pic_c4 = 2131231614;
+			
+			// aapt resource value: 0x7F08037F
+			public const int results_pic_c4c = 2131231615;
+			
+			// aapt resource value: 0x7F080380
+			public const int results_pic_c4e = 2131231616;
+			
+			// aapt resource value: 0x7F080381
+			public const int results_pic_c4s = 2131231617;
+			
+			// aapt resource value: 0x7F080382
+			public const int results_pic_c6 = 2131231618;
+			
+			// aapt resource value: 0x7F080383
+			public const int results_pic_c6c = 2131231619;
+			
+			// aapt resource value: 0x7F080384
+			public const int results_pic_c6c_1 = 2131231620;
+			
+			// aapt resource value: 0x7F080385
+			public const int results_pic_c6c_2 = 2131231621;
+			
+			// aapt resource value: 0x7F080386
+			public const int results_pic_c6h = 2131231622;
+			
+			// aapt resource value: 0x7F080387
+			public const int results_pic_co2 = 2131231623;
+			
+			// aapt resource value: 0x7F080388
+			public const int results_pic_d1 = 2131231624;
+			
+			// aapt resource value: 0x7F080389
+			public const int results_pic_default = 2131231625;
+			
+			// aapt resource value: 0x7F08038A
+			public const int results_pic_f1 = 2131231626;
+			
+			// aapt resource value: 0x7F08038B
+			public const int results_pic_h2c = 2131231627;
+			
+			// aapt resource value: 0x7F08038C
+			public const int results_pic_h2s = 2131231628;
+			
+			// aapt resource value: 0x7F08038D
+			public const int results_pic_n1 = 2131231629;
+			
+			// aapt resource value: 0x7F08038E
+			public const int results_pic_n1w = 2131231630;
+			
+			// aapt resource value: 0x7F08038F
+			public const int results_pic_r1 = 2131231631;
+			
+			// aapt resource value: 0x7F080390
+			public const int results_pic_r2 = 2131231632;
+			
+			// aapt resource value: 0x7F080391
+			public const int results_pic_w1 = 2131231633;
+			
+			// aapt resource value: 0x7F080392
+			public const int results_pic_w3 = 2131231634;
+			
+			// aapt resource value: 0x7F080393
+			public const int results_pic_x1 = 2131231635;
+			
+			// aapt resource value: 0x7F080394
+			public const int results_pic_x2 = 2131231636;
+			
+			// aapt resource value: 0x7F080395
+			public const int results_pic_x3 = 2131231637;
+			
+			// aapt resource value: 0x7F080396
+			public const int results_pic_x3c = 2131231638;
+			
+			// aapt resource value: 0x7F080397
+			public const int results_pic_x4 = 2131231639;
+			
+			// aapt resource value: 0x7F080398
+			public const int results_pic_z1 = 2131231640;
+			
+			// aapt resource value: 0x7F080399
+			public const int results_w2d = 2131231641;
+			
+			// aapt resource value: 0x7F08039A
+			public const int results_w2s = 2131231642;
+			
+			// aapt resource value: 0x7F08039B
+			public const int results_wlb = 2131231643;
 			
 			// aapt resource value: 0x7F08039C
-			public const int right_horizontal = 2131231644;
+			public const int results_x5_108tp = 2131231644;
+			
+			// aapt resource value: 0x7F080359
+			public const int result_5k_vr104d = 2131231577;
+			
+			// aapt resource value: 0x7F08035A
+			public const int result_5k_vr116d = 2131231578;
+			
+			// aapt resource value: 0x7F08035B
+			public const int result_8_16dvr = 2131231579;
+			
+			// aapt resource value: 0x7F08035C
+			public const int result_cs_c3w = 2131231580;
+			
+			// aapt resource value: 0x7F08035D
+			public const int result_cs_vr104d = 2131231581;
+			
+			// aapt resource value: 0x7F08035E
+			public const int result_cs_vr108d = 2131231582;
+			
+			// aapt resource value: 0x7F08035F
+			public const int result_cs_vr116d = 2131231583;
+			
+			// aapt resource value: 0x7F080360
+			public const int result_pic_dh1 = 2131231584;
+			
+			// aapt resource value: 0x7F080361
+			public const int result_pic_doorbell = 2131231585;
+			
+			// aapt resource value: 0x7F080362
+			public const int result_pic_doorbell_hik = 2131231586;
+			
+			// aapt resource value: 0x7F080363
+			public const int result_pic_light = 2131231587;
+			
+			// aapt resource value: 0x7F080364
+			public const int result_x5c = 2131231588;
 			
 			// aapt resource value: 0x7F08039D
-			public const int right_twinkle = 2131231645;
+			public const int right_horizontal = 2131231645;
 			
 			// aapt resource value: 0x7F08039E
-			public const int ring_off = 2131231646;
+			public const int right_twinkle = 2131231646;
 			
 			// aapt resource value: 0x7F08039F
-			public const int say_bg = 2131231647;
+			public const int ring_off = 2131231647;
 			
 			// aapt resource value: 0x7F0803A0
-			public const int screenshot = 2131231648;
+			public const int say_bg = 2131231648;
 			
 			// aapt resource value: 0x7F0803A1
-			public const int screenshot_def = 2131231649;
+			public const int screenshot = 2131231649;
 			
 			// aapt resource value: 0x7F0803A2
-			public const int screenshot_sel = 2131231650;
+			public const int screenshot_def = 2131231650;
 			
 			// aapt resource value: 0x7F0803A3
-			public const int search = 2131231651;
+			public const int screenshot_sel = 2131231651;
 			
 			// aapt resource value: 0x7F0803A4
-			public const int search_bnt = 2131231652;
+			public const int search = 2131231652;
 			
 			// aapt resource value: 0x7F0803A5
-			public const int search_bnt_sel = 2131231653;
+			public const int search_bnt = 2131231653;
 			
 			// aapt resource value: 0x7F0803A6
-			public const int search_button_selector = 2131231654;
+			public const int search_bnt_sel = 2131231654;
 			
 			// aapt resource value: 0x7F0803A7
-			public const int search_input = 2131231655;
+			public const int search_button_selector = 2131231655;
 			
 			// aapt resource value: 0x7F0803A8
-			public const int seekbar_thumb = 2131231656;
-			
-			// aapt resource value: 0x7F0803AA
-			public const int selected_icon = 2131231658;
-			
-			// aapt resource value: 0x7F0803AB
-			public const int selector_pickerview_btn = 2131231659;
+			public const int search_input = 2131231656;
 			
 			// aapt resource value: 0x7F0803A9
-			public const int select_icon = 2131231657;
+			public const int seekbar_thumb = 2131231657;
+			
+			// aapt resource value: 0x7F0803AB
+			public const int selected_icon = 2131231659;
 			
 			// aapt resource value: 0x7F0803AC
-			public const int server1 = 2131231660;
+			public const int selector_pickerview_btn = 2131231660;
+			
+			// aapt resource value: 0x7F0803AA
+			public const int select_icon = 2131231658;
 			
 			// aapt resource value: 0x7F0803AD
-			public const int server2 = 2131231661;
+			public const int server1 = 2131231661;
 			
 			// aapt resource value: 0x7F0803AE
-			public const int server3 = 2131231662;
+			public const int server2 = 2131231662;
 			
 			// aapt resource value: 0x7F0803AF
-			public const int server4 = 2131231663;
+			public const int server3 = 2131231663;
 			
 			// aapt resource value: 0x7F0803B0
-			public const int setup = 2131231664;
+			public const int server4 = 2131231664;
 			
 			// aapt resource value: 0x7F0803B1
-			public const int setup_sel = 2131231665;
+			public const int setup = 2131231665;
 			
 			// aapt resource value: 0x7F0803B2
-			public const int setup_wechat = 2131231666;
+			public const int setup_sel = 2131231666;
 			
 			// aapt resource value: 0x7F0803B3
-			public const int share_management_label_button = 2131231667;
+			public const int setup_wechat = 2131231667;
 			
 			// aapt resource value: 0x7F0803B4
-			public const int share_management_label_button_sel = 2131231668;
+			public const int share_management_label_button = 2131231668;
 			
 			// aapt resource value: 0x7F0803B5
-			public const int shipin7_alarm_msg_new = 2131231669;
+			public const int share_management_label_button_sel = 2131231669;
 			
 			// aapt resource value: 0x7F0803B6
-			public const int shrink_screen_normal = 2131231670;
+			public const int shipin7_alarm_msg_new = 2131231670;
 			
 			// aapt resource value: 0x7F0803B7
-			public const int shrink_screen_pressed = 2131231671;
+			public const int shrink_screen_normal = 2131231671;
 			
 			// aapt resource value: 0x7F0803B8
-			public const int small_button_cameralist = 2131231672;
+			public const int shrink_screen_pressed = 2131231672;
 			
 			// aapt resource value: 0x7F0803B9
-			public const int sound_off = 2131231673;
+			public const int small_button_cameralist = 2131231673;
 			
 			// aapt resource value: 0x7F0803BA
-			public const int sound_off_blue = 2131231674;
+			public const int sound_off = 2131231674;
 			
 			// aapt resource value: 0x7F0803BB
-			public const int sound_off_sel = 2131231675;
+			public const int sound_off_blue = 2131231675;
 			
 			// aapt resource value: 0x7F0803BC
-			public const int sound_off_sel_blue = 2131231676;
+			public const int sound_off_sel = 2131231676;
 			
 			// aapt resource value: 0x7F0803BD
-			public const int sound_on = 2131231677;
+			public const int sound_off_sel_blue = 2131231677;
 			
 			// aapt resource value: 0x7F0803BE
-			public const int sound_on_blue = 2131231678;
+			public const int sound_on = 2131231678;
 			
 			// aapt resource value: 0x7F0803BF
-			public const int sound_on_sel = 2131231679;
+			public const int sound_on_blue = 2131231679;
 			
 			// aapt resource value: 0x7F0803C0
-			public const int sound_on_sel_blue = 2131231680;
+			public const int sound_on_sel = 2131231680;
 			
 			// aapt resource value: 0x7F0803C1
-			public const int sound_source = 2131231681;
+			public const int sound_on_sel_blue = 2131231681;
 			
 			// aapt resource value: 0x7F0803C2
-			public const int sound_source_sel = 2131231682;
+			public const int sound_source = 2131231682;
 			
 			// aapt resource value: 0x7F0803C3
-			public const int speech = 2131231683;
+			public const int sound_source_sel = 2131231683;
 			
 			// aapt resource value: 0x7F0803C4
-			public const int speech_0 = 2131231684;
+			public const int speech = 2131231684;
 			
 			// aapt resource value: 0x7F0803C5
-			public const int speech_1 = 2131231685;
+			public const int speech_0 = 2131231685;
 			
 			// aapt resource value: 0x7F0803C6
-			public const int speech_2 = 2131231686;
+			public const int speech_1 = 2131231686;
 			
 			// aapt resource value: 0x7F0803C7
-			public const int speech_3 = 2131231687;
+			public const int speech_2 = 2131231687;
 			
 			// aapt resource value: 0x7F0803C8
-			public const int speech_4 = 2131231688;
+			public const int speech_3 = 2131231688;
 			
 			// aapt resource value: 0x7F0803C9
-			public const int speech_5 = 2131231689;
+			public const int speech_4 = 2131231689;
 			
 			// aapt resource value: 0x7F0803CA
-			public const int speech_full_selector = 2131231690;
+			public const int speech_5 = 2131231690;
 			
 			// aapt resource value: 0x7F0803CB
-			public const int stop = 2131231691;
-			
-			// aapt resource value: 0x7F0803CE
-			public const int stopbtn_selector = 2131231694;
-			
-			// aapt resource value: 0x7F0803CF
-			public const int stoplay_btn = 2131231695;
-			
-			// aapt resource value: 0x7F0803D0
-			public const int stoplay_btn_sel = 2131231696;
+			public const int speech_full_selector = 2131231691;
 			
 			// aapt resource value: 0x7F0803CC
-			public const int stop_disable = 2131231692;
+			public const int stop = 2131231692;
 			
-			// aapt resource value: 0x7F0803CD
-			public const int stop_press = 2131231693;
+			// aapt resource value: 0x7F0803CF
+			public const int stopbtn_selector = 2131231695;
+			
+			// aapt resource value: 0x7F0803D0
+			public const int stoplay_btn = 2131231696;
 			
 			// aapt resource value: 0x7F0803D1
-			public const int success = 2131231697;
+			public const int stoplay_btn_sel = 2131231697;
+			
+			// aapt resource value: 0x7F0803CD
+			public const int stop_disable = 2131231693;
+			
+			// aapt resource value: 0x7F0803CE
+			public const int stop_press = 2131231694;
 			
 			// aapt resource value: 0x7F0803D2
-			public const int success_icon = 2131231698;
+			public const int success = 2131231698;
 			
 			// aapt resource value: 0x7F0803D3
-			public const int success_img = 2131231699;
+			public const int success_icon = 2131231699;
 			
 			// aapt resource value: 0x7F0803D4
-			public const int sure_background_def = 2131231700;
+			public const int success_img = 2131231700;
 			
 			// aapt resource value: 0x7F0803D5
-			public const int sure_background_sel = 2131231701;
+			public const int sure_background_def = 2131231701;
 			
 			// aapt resource value: 0x7F0803D6
-			public const int switch_camera = 2131231702;
+			public const int sure_background_sel = 2131231702;
 			
 			// aapt resource value: 0x7F0803D7
-			public const int tab_left = 2131231703;
+			public const int switch_camera = 2131231703;
 			
 			// aapt resource value: 0x7F0803D8
-			public const int tab_left_sel = 2131231704;
+			public const int tab_left = 2131231704;
 			
 			// aapt resource value: 0x7F0803D9
-			public const int tab_right = 2131231705;
+			public const int tab_left_sel = 2131231705;
 			
 			// aapt resource value: 0x7F0803DA
-			public const int tab_right_sel = 2131231706;
+			public const int tab_right = 2131231706;
 			
 			// aapt resource value: 0x7F0803DB
-			public const int tiltle_button_selector = 2131231707;
+			public const int tab_right_sel = 2131231707;
 			
 			// aapt resource value: 0x7F0803DC
-			public const int timeline = 2131231708;
+			public const int tiltle_button_selector = 2131231708;
 			
 			// aapt resource value: 0x7F0803DD
-			public const int timeline_sel = 2131231709;
+			public const int timeline = 2131231709;
 			
 			// aapt resource value: 0x7F0803DE
-			public const int tip_background = 2131231710;
+			public const int timeline_sel = 2131231710;
 			
 			// aapt resource value: 0x7F0803DF
-			public const int tip_textview_bg = 2131231711;
+			public const int tip_background = 2131231711;
 			
 			// aapt resource value: 0x7F0803E0
-			public const int title_down_bg = 2131231712;
+			public const int tip_textview_bg = 2131231712;
 			
 			// aapt resource value: 0x7F0803E1
-			public const int title_down_play = 2131231713;
+			public const int title_down_bg = 2131231713;
 			
 			// aapt resource value: 0x7F0803E2
-			public const int title_down_play_sel = 2131231714;
+			public const int title_down_play = 2131231714;
 			
 			// aapt resource value: 0x7F0803E3
-			public const int title_down_play_selector = 2131231715;
+			public const int title_down_play_sel = 2131231715;
 			
 			// aapt resource value: 0x7F0803E4
-			public const int title_menu_bg = 2131231716;
+			public const int title_down_play_selector = 2131231716;
 			
 			// aapt resource value: 0x7F0803E5
-			public const int tittel_button_bg = 2131231717;
+			public const int title_menu_bg = 2131231717;
 			
 			// aapt resource value: 0x7F0803E6
-			public const int tittel_button_press_bg = 2131231718;
+			public const int tittel_button_bg = 2131231718;
 			
 			// aapt resource value: 0x7F0803E7
-			public const int tooltip_frame_dark = 2131231719;
+			public const int tittel_button_press_bg = 2131231719;
 			
 			// aapt resource value: 0x7F0803E8
-			public const int tooltip_frame_light = 2131231720;
+			public const int tooltip_frame_dark = 2131231720;
 			
 			// aapt resource value: 0x7F0803E9
-			public const int top_bar_bg = 2131231721;
+			public const int tooltip_frame_light = 2131231721;
 			
 			// aapt resource value: 0x7F0803EA
-			public const int track_bar_bg = 2131231722;
+			public const int top_bar_bg = 2131231722;
 			
 			// aapt resource value: 0x7F0803EB
-			public const int translucent = 2131231723;
+			public const int track_bar_bg = 2131231723;
 			
 			// aapt resource value: 0x7F0803EC
-			public const int @unchecked = 2131231724;
+			public const int translucent = 2131231724;
 			
 			// aapt resource value: 0x7F0803ED
-			public const int unlock = 2131231725;
+			public const int @unchecked = 2131231725;
 			
 			// aapt resource value: 0x7F0803EE
-			public const int unlock_def = 2131231726;
+			public const int unlock = 2131231726;
 			
 			// aapt resource value: 0x7F0803EF
-			public const int unlock_sel = 2131231727;
-			
-			// aapt resource value: 0x7F0803F2
-			public const int upgrade = 2131231730;
+			public const int unlock_def = 2131231727;
 			
 			// aapt resource value: 0x7F0803F0
-			public const int up_horizontal = 2131231728;
-			
-			// aapt resource value: 0x7F0803F1
-			public const int up_twinkle = 2131231729;
+			public const int unlock_sel = 2131231728;
 			
 			// aapt resource value: 0x7F0803F3
-			public const int user = 2131231731;
+			public const int upgrade = 2131231731;
+			
+			// aapt resource value: 0x7F0803F1
+			public const int up_horizontal = 2131231729;
+			
+			// aapt resource value: 0x7F0803F2
+			public const int up_twinkle = 2131231730;
 			
 			// aapt resource value: 0x7F0803F4
-			public const int vertical_preview_sound_selector = 2131231732;
+			public const int user = 2131231732;
 			
 			// aapt resource value: 0x7F0803F5
-			public const int vertical_preview_stop_selector = 2131231733;
-			
-			// aapt resource value: 0x7F080405
-			public const int videogo_icon = 2131231749;
+			public const int vertical_preview_sound_selector = 2131231733;
 			
 			// aapt resource value: 0x7F0803F6
-			public const int video_background = 2131231734;
-			
-			// aapt resource value: 0x7F0803F7
-			public const int video_camera1_1 = 2131231735;
-			
-			// aapt resource value: 0x7F0803F8
-			public const int video_camera1_2 = 2131231736;
-			
-			// aapt resource value: 0x7F0803F9
-			public const int video_camera1_3 = 2131231737;
-			
-			// aapt resource value: 0x7F0803FA
-			public const int video_file_watermark = 2131231738;
-			
-			// aapt resource value: 0x7F0803FB
-			public const int video_quality_selector = 2131231739;
-			
-			// aapt resource value: 0x7F0803FC
-			public const int video_talk_sdk_icn_watch = 2131231740;
-			
-			// aapt resource value: 0x7F0803FD
-			public const int video_talk_sdk_placeholder_images_user = 2131231741;
-			
-			// aapt resource value: 0x7F0803FE
-			public const int video_talk_sdk_video_answer = 2131231742;
-			
-			// aapt resource value: 0x7F0803FF
-			public const int video_talk_sdk_video_hangup = 2131231743;
-			
-			// aapt resource value: 0x7F080400
-			public const int video_talk_sdk_video_record_off = 2131231744;
-			
-			// aapt resource value: 0x7F080401
-			public const int video_talk_sdk_video_record_on = 2131231745;
-			
-			// aapt resource value: 0x7F080402
-			public const int video_talk_sdk_video_snap = 2131231746;
-			
-			// aapt resource value: 0x7F080403
-			public const int video_talk_sdk_video_stop = 2131231747;
-			
-			// aapt resource value: 0x7F080404
-			public const int video_talk_sdk_video_switch_camera = 2131231748;
-			
-			// aapt resource value: 0x7F08040F
-			public const int waiting_bg = 2131231759;
-			
-			// aapt resource value: 0x7F080410
-			public const int waiting_progressbar_bg = 2131231760;
+			public const int vertical_preview_stop_selector = 2131231734;
 			
 			// aapt resource value: 0x7F080406
-			public const int wait_1 = 2131231750;
+			public const int videogo_icon = 2131231750;
 			
-			// aapt resource value: 0x7F080407
-			public const int wait_2 = 2131231751;
+			// aapt resource value: 0x7F0803F7
+			public const int video_background = 2131231735;
 			
-			// aapt resource value: 0x7F080408
-			public const int wait_3 = 2131231752;
+			// aapt resource value: 0x7F0803F8
+			public const int video_camera1_1 = 2131231736;
 			
-			// aapt resource value: 0x7F080409
-			public const int wait_4 = 2131231753;
+			// aapt resource value: 0x7F0803F9
+			public const int video_camera1_2 = 2131231737;
 			
-			// aapt resource value: 0x7F08040A
-			public const int wait_5 = 2131231754;
+			// aapt resource value: 0x7F0803FA
+			public const int video_camera1_3 = 2131231738;
 			
-			// aapt resource value: 0x7F08040B
-			public const int wait_6 = 2131231755;
+			// aapt resource value: 0x7F0803FB
+			public const int video_file_watermark = 2131231739;
 			
-			// aapt resource value: 0x7F08040C
-			public const int wait_7 = 2131231756;
+			// aapt resource value: 0x7F0803FC
+			public const int video_quality_selector = 2131231740;
 			
-			// aapt resource value: 0x7F08040D
-			public const int wait_8 = 2131231757;
+			// aapt resource value: 0x7F0803FD
+			public const int video_talk_sdk_icn_watch = 2131231741;
 			
-			// aapt resource value: 0x7F08040E
-			public const int wait_upload_img = 2131231758;
+			// aapt resource value: 0x7F0803FE
+			public const int video_talk_sdk_placeholder_images_user = 2131231742;
+			
+			// aapt resource value: 0x7F0803FF
+			public const int video_talk_sdk_video_answer = 2131231743;
+			
+			// aapt resource value: 0x7F080400
+			public const int video_talk_sdk_video_hangup = 2131231744;
+			
+			// aapt resource value: 0x7F080401
+			public const int video_talk_sdk_video_record_off = 2131231745;
+			
+			// aapt resource value: 0x7F080402
+			public const int video_talk_sdk_video_record_on = 2131231746;
+			
+			// aapt resource value: 0x7F080403
+			public const int video_talk_sdk_video_snap = 2131231747;
+			
+			// aapt resource value: 0x7F080404
+			public const int video_talk_sdk_video_stop = 2131231748;
+			
+			// aapt resource value: 0x7F080405
+			public const int video_talk_sdk_video_switch_camera = 2131231749;
+			
+			// aapt resource value: 0x7F080410
+			public const int waiting_bg = 2131231760;
 			
 			// aapt resource value: 0x7F080411
-			public const int water_alarm = 2131231761;
+			public const int waiting_progressbar_bg = 2131231761;
+			
+			// aapt resource value: 0x7F080407
+			public const int wait_1 = 2131231751;
+			
+			// aapt resource value: 0x7F080408
+			public const int wait_2 = 2131231752;
+			
+			// aapt resource value: 0x7F080409
+			public const int wait_3 = 2131231753;
+			
+			// aapt resource value: 0x7F08040A
+			public const int wait_4 = 2131231754;
+			
+			// aapt resource value: 0x7F08040B
+			public const int wait_5 = 2131231755;
+			
+			// aapt resource value: 0x7F08040C
+			public const int wait_6 = 2131231756;
+			
+			// aapt resource value: 0x7F08040D
+			public const int wait_7 = 2131231757;
+			
+			// aapt resource value: 0x7F08040E
+			public const int wait_8 = 2131231758;
+			
+			// aapt resource value: 0x7F08040F
+			public const int wait_upload_img = 2131231759;
 			
 			// aapt resource value: 0x7F080412
-			public const int wifi_config_bg = 2131231762;
+			public const int water_alarm = 2131231762;
 			
 			// aapt resource value: 0x7F080413
-			public const int wifi_connect_tip = 2131231763;
+			public const int wifi_config_bg = 2131231763;
 			
 			// aapt resource value: 0x7F080414
-			public const int yuntai_normal = 2131231764;
+			public const int wifi_connect_tip = 2131231764;
 			
 			// aapt resource value: 0x7F080415
-			public const int yuntai_pressed = 2131231765;
+			public const int yuntai_normal = 2131231765;
 			
 			// aapt resource value: 0x7F080416
-			public const int yxs_head = 2131231766;
+			public const int yuntai_pressed = 2131231766;
 			
 			// aapt resource value: 0x7F080417
-			public const int z1_bg = 2131231767;
+			public const int yxs_head = 2131231767;
+			
+			// aapt resource value: 0x7F080418
+			public const int z1_bg = 2131231768;
 			
 			static Drawable()
 			{
@@ -10426,7 +10429,10 @@
 			public const int ic_launcher_round = 2131558401;
 			
 			// aapt resource value: 0x7F0D0003
-			public const int videogo_icon = 2131558403;
+			public const int Loading = 2131558403;
+			
+			// aapt resource value: 0x7F0D0004
+			public const int videogo_icon = 2131558404;
 			
 			static Mipmap()
 			{
diff --git a/HDL-ON_Android/Resources/drawable/Loading.png b/HDL-ON_Android/Resources/drawable/Loading.png
index ea80938..9f84a83 100644
--- a/HDL-ON_Android/Resources/drawable/Loading.png
+++ b/HDL-ON_Android/Resources/drawable/Loading.png
Binary files differ
diff --git a/HDL-ON_Android/Resources/mipmap-hdpi/Loading.png b/HDL-ON_Android/Resources/mipmap-hdpi/Loading.png
new file mode 100644
index 0000000..57f5c27
--- /dev/null
+++ b/HDL-ON_Android/Resources/mipmap-hdpi/Loading.png
Binary files differ
diff --git a/HDL-ON_Android/Resources/mipmap-mdpi/Loading.png b/HDL-ON_Android/Resources/mipmap-mdpi/Loading.png
new file mode 100644
index 0000000..57f5c27
--- /dev/null
+++ b/HDL-ON_Android/Resources/mipmap-mdpi/Loading.png
Binary files differ
diff --git a/HDL-ON_Android/Resources/mipmap-xhdpi/Icon.png b/HDL-ON_Android/Resources/mipmap-xhdpi/Icon.png
index e4ceb09..56eb4c8 100644
--- a/HDL-ON_Android/Resources/mipmap-xhdpi/Icon.png
+++ b/HDL-ON_Android/Resources/mipmap-xhdpi/Icon.png
Binary files differ
diff --git a/HDL-ON_Android/Resources/mipmap-xhdpi/Loading.png b/HDL-ON_Android/Resources/mipmap-xhdpi/Loading.png
new file mode 100644
index 0000000..57f5c27
--- /dev/null
+++ b/HDL-ON_Android/Resources/mipmap-xhdpi/Loading.png
Binary files differ
diff --git a/HDL-ON_Android/Resources/mipmap-xxhdpi/Loading.png b/HDL-ON_Android/Resources/mipmap-xxhdpi/Loading.png
new file mode 100644
index 0000000..ea64f54
--- /dev/null
+++ b/HDL-ON_Android/Resources/mipmap-xxhdpi/Loading.png
Binary files differ
diff --git a/HDL-ON_Android/Resources/mipmap-xxxhdpi/Loading.png b/HDL-ON_Android/Resources/mipmap-xxxhdpi/Loading.png
new file mode 100644
index 0000000..3544e75
--- /dev/null
+++ b/HDL-ON_Android/Resources/mipmap-xxxhdpi/Loading.png
Binary files differ
diff --git a/HDL-ON_iOS/HDL-ON_iOS.csproj b/HDL-ON_iOS/HDL-ON_iOS.csproj
index 4e14c8e..a639039 100644
--- a/HDL-ON_iOS/HDL-ON_iOS.csproj
+++ b/HDL-ON_iOS/HDL-ON_iOS.csproj
@@ -55,7 +55,7 @@
         <MtouchExtraArgs>-gcc_flags="-dead_strip -ObjC"</MtouchExtraArgs>
         <MtouchEnableSGenConc>false</MtouchEnableSGenConc>
 <CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
-<CodesignProvision>On+Dev-20210428-1</CodesignProvision>
+<CodesignProvision>On+Dev-20210604-1</CodesignProvision>
     </PropertyGroup>
     <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
         <DebugType>none</DebugType>
@@ -647,7 +647,6 @@
       <BundleResource Include="Resources\Phone\FunctionIcon\Electrical\TV\PlusIcon.png" />
       <BundleResource Include="Resources\Phone\FunctionIcon\Electrical\TV\ReduceIcon.png" />
       <BundleResource Include="Resources\Phone\FunctionIcon\Electrical\TVThinIcon.png" />
-      <BundleResource Include="Resources\Phone\FunctionIcon\Electrical\TVIcon.png" />
       <BundleResource Include="Resources\Phone\FunctionIcon\EnvironmentalScience\SmogIcon.png" />
       <BundleResource Include="Resources\Phone\FunctionIcon\EnvironmentalScience\LocationIcon.png" />
       <BundleResource Include="Resources\Phone\FunctionIcon\EnvironmentalScience\UpArrow.png" />
@@ -1264,6 +1263,27 @@
       <BundleResource Include="Resources\Phone\FunctionIcon\DoorLock\UnLockPictrue3.png" />
       <BundleResource Include="Resources\Phone\Public\BatteryEnough.png" />
       <BundleResource Include="Resources\Phone\Public\BatteryNot.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\irpjt_blue.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\irpjt_white.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\irstb_blue.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\irstb_white.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\irpjt.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\irstb.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Energy\EnergyDrodUpIcon.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\sensormegahealth.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Electrical\TV\TVOkIconDown.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Electrical\TV\TVOkIconLeft.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Electrical\TV\TVOkIconRight.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Electrical\TV\TVOkIconUp.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Electrical\TV\TVOkIconOk.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\irtvxm.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\irtvxm_blue.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\irtvxm_white.png" />
+      <BundleResource Include="Resources\Phone\PersonalCenter\AddDevice\SenesorMegahealthBg.png" />
+      <BundleResource Include="Resources\Phone\Public\Scan.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\ArmSensor\SomeoneFellBgIcon.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\ArmSensor\SomeoneInBgIcon.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\ArmSensor\UnderProtectionBgIcon.png" />
     </ItemGroup>
     <ItemGroup>
       <ITunesArtwork Include="iTunesArtwork" />
diff --git a/HDL-ON_iOS/Info.plist b/HDL-ON_iOS/Info.plist
index 3cf1a8d..47a0cd9 100644
--- a/HDL-ON_iOS/Info.plist
+++ b/HDL-ON_iOS/Info.plist
@@ -104,9 +104,9 @@
 	<key>UIStatusBarStyle</key>
 	<string>UIStatusBarStyleLightContent</string>
 	<key>CFBundleShortVersionString</key>
-	<string>1.2.202104282</string>
+	<string>1.2.202106081</string>
 	<key>CFBundleVersion</key>
-	<string>202104282</string>
+	<string>1.2.06081</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 c3ba37f..a253aa0 100644
--- a/HDL-ON_iOS/Resources/Language.ini
+++ b/HDL-ON_iOS/Resources/Language.ini
@@ -70,7 +70,7 @@
 69=All
 70=Curtain
 71=Name
-72=The address of the residence
+72=Address
 73=Floor Management
 74=Room Management
 75=Admin Migration
@@ -188,8 +188,8 @@
 187=Fan
 188=Socket
 189=Level
-190=Channel
-191=Volume
+190=Chl
+191=Vol
 192=TV
 193=The room has existed, fail to change.
 194=Environment
@@ -382,6 +382,7 @@
 378=Transition time
 379=Transition speed
 380=This function is not available!
+381=Reload
 400=Welcome home
 401=Invalid barcode, please try again
 402=Try again
@@ -411,8 +412,6 @@
 426=Air dry time
 427=Disinfect time
 428=Anion Time
-429=Real time power consumption: {0}kw
-
 429=H
 430=Min
 431=You are currently adding any platform devices to
@@ -423,7 +422,7 @@
 436=Added Devices
 437=Device List
 438=humidity:{0}%    air:{1}    wind:{2}
-439=Real time power consumption: {0} kw
+439=Real time: {0} kw
 440=Next step
 441=Please select all areas of capture status
 442=Generate Scene
@@ -441,6 +440,25 @@
 454=Deployment information
 455=The name can not be blank.
 
+456=Canvas
+457=Energy consumption
+458=Date
+459=Real time energy consumption
+460=Energy consumption of this month
+461=Outdoor/Indoor
+462=You haven't added any devices yet
+'
+463=Please input the SN code of the device
+464=Can start using Zhaoguan millimeter wave
+465=Delete device
+466=STB
+467=Projector
+468=Someone fell
+469=Someone's in
+'
+470=Under protection
+471=Millimeter wave sensor
+ 
 1000=Room Humidity
 1001=V-chip
 1002=Anion
@@ -602,6 +620,31 @@
 1157=Fail to transfer
 1158=Please try again
 
+ 
+ 
+ 
+ 
+ 
+4000=Video intercom
+4001=Call record
+4002=*Cloud photos are only kept for 30 days
+4003=Door phone call
+4004=Answered
+4005=Unlocked
+4006=year
+4007=From
+4008=Call
+4009=Unlocked
+4010=Missed
+4011=Rejected
+4012=The configuration parameters are abnormal!
+4013=Access Control QR Code
+4014=Temporary password
+ 
+ 
+ 
+ 
+ 
 5000=Music
 5001=Group
 5002=Setting
@@ -650,8 +693,150 @@
 5045=General volume
 5046=Adjust volume
 5047="QQ music" has not installed in your cell phone, please proceed in App center.
-	
-	
+ 
+6000=normal
+6001=Device status
+6002=pcs
+6003=Current IR control device
+6004=Remote controller has been added
+6005=AC
+6006=TV
+6007=Fan
+6008=Set-top box
+6009=DVD
+6010=Projector
+6011=Custom
+6012=IR control
+6013=Device Management
+6014=Add remote controller
+6015=Online
+6016=Offline
+6017=Version number
+6018=Please enter the name of the remote controller
+6019=Reminder: After the remote controller is created, it can be found and used in Function-Electrical Category{\r\n}
+6020=Recommended button
+6021=Please enter the button name
+6022=Next
+6023=Power
+6024=Volume+
+6025=Volume-
+6026=channel+
+6027=Channel-
+6028=up
+6029=down
+6030=Left
+6031=right
+6032=Mute
+6034=Confirm
+6035=Play
+6037=Exit
+6038=Menu
+6039=Pause
+6040=Back
+6041=Stop
+6042=Homepage
+6043=Fast forward
+6044=Rewind
+6045=Timing
+6046=Copy remote control function
+6047=Aim at the center of the remote controller and press the same button
+6048=Smart remote controller
+6049=Add button
+6050=*Long press for custom sorting
+6051=Done
+6052=Added successfully
+6053=Can be classified-function-electrical operation and use
+6054=Classification
+6055=Remote controller name
+6056=Region
+6057=Continue to add
+6058=Electrical
+6059=Failed to add
+6060=Retry
+6061=Match the remote control
+6062=Please click the button below
+6063=Confirm whether the device is responding
+6064=Control failed
+6065=Control success
+6066=Power on
+6067=Mode cooling
+6068=Wind speed stroke
+6069=Temperature 26鈩�
+6070=Delete device
+6071=Modify name
+6072=Confirm deletion
+6073=Cancel
+6074=The remote controller cannot exceed 10 pcs
+6075=The area where the remote control belongs:
+6076=Edit information
+6077=Version upgrade
+6078=System is under maintenance~Please try again later~
+6079=Failed to get data
+6080=This function is temporarily not supported
+6081=Select IR brand
+6082=Shaking
+6083=Low speed
+6084=Medium speed
+6085=High speed
+6086=Auto
+6087=Temperature+
+6088=Temperature-
+6089=Air purifier
+6090=Water heater
+6091=Product that does not exist
+6092=The device does not exist
+6093=The device is not online
+6094=The gateway device does not exist
+ 
+ 
+7108=Leak/No Leak
+7109=Leak
+7110=No leak
+7111=Water leaking/no water leaking
+7112=Water leaking
+7113=No water leaking
+7114=Someone/Nobody
+7115=Someone
+7116=Nobody
+7117=Open/Close
+7118=On
+7119=Close
+7120=Anti-dismantling function
+7121=Online
+7122=Not online
+7123=Air quality
+7124=Excellent
+7125=Good
+7126=Poor
+7127=Send notification
+7128=Notification content
+7129=(within 100 characters)
+7130=Account selection
+7131=App push
+7132=Automation
+7133=Executed
+7134=Target State
+7135=Tumble
+ 
+ 
+6000=Rename
+6001=Please enter a name
+6002=Xiaodu
+6003=aispeech
+6004="Unbind requires a third-party APP for operation", "transfer to a third-party APP"
+6005=Unbind
+6006=Smart speaker
+6007=Control content
+6008=Failed to upload data
+6009=Failed to configure data
+6010="There is no speaker yet,", "Please go to the third-party APP to bind the smart speaker."
+6011=Modification of remarks is unsuccessful!
+6012=Do you want to unbind?
+6013=Unbinding...
+6014=transfer to third-party APP
+6015=Add speakers
+ 
+    
 7000=Create automation
 7001=Edit automation
 7002=If
@@ -760,7 +945,7 @@
 7105=Light pollution: 75 ~ 115ug/m3
 7106=Moderate pollution: 115 ~ 150ug/m3
 7107=Heavy pollution: > 150ug/m3
-	
+    
 9000=Please sign in with new cell phone number.
 9001=Please sign in with new email address.
 9002=New cell phone number is revised.
@@ -831,7 +1016,7 @@
 9066=Remarks
 9067=Remarks cannot be blank.
 9068=Do you want to unbind?
-	
+    
 10000=Invalid password, please log in again.
 10001=Fail to request server, please try again later.
 10002=System maintaining, please try again later.
@@ -866,9 +1051,9 @@
 10031=The device should not be blank.
 10032=The user does not have permission.
 10033=The device does not exist.
-
-
-
+ 
+ 
+ 
 [Chinese]
 1=鐧诲綍
 2=鎵嬫満鍙风櫥褰�
@@ -1260,7 +1445,7 @@
 406=浼氬
 407=闃呰
 408=纭娣诲姞
-
+ 
 409=鍔熻兘鍝佺墝
 410=浣犲綋鍓嶈繕鏈坊鍔犱换浣曞钩鍙拌澶�
 411=鍏朵粬骞冲彴璁惧鍧囩敱绗笁鏂规湇鍔″晢鎻愪緵鏀寔
@@ -1308,8 +1493,24 @@
 453=鎶ヨ闈欓煶
 454=甯冮槻淇℃伅
 455=鍚嶇О涓嶈兘涓虹┖銆�
-
-
+456=鐢诲竷
+457=鑳借��
+458=鏃ユ湡
+459=瀹炴椂鑳借��
+460=鏈湀鑳借��
+461=瀹ゅ/瀹ゅ唴
+462=鎮ㄥ綋鍓嶈繕鏈坊鍔犱换浣曡澶�
+463=璇疯緭鍏ヨ澶囨満涓婄殑sn鐮�
+464=鍙互寮�濮嬩娇鐢ㄥ厗瑙傛绫虫尝浜�
+465=鍒犻櫎璁惧
+466=鏈洪《鐩�
+467=鎶曞奖浠�
+468=鏈変汉璺屽��
+469=鏈変汉杩涘叆
+470=闃叉姢涓�
+471=姣背娉紶鎰熷櫒
+ 
+ 
 1000=瀹ゅ唴婀垮害
 1001=绔ラ攣
 1002=璐熺瀛�
@@ -1477,6 +1678,8 @@
 1157=杩囨埛澶辫触
 1158=璇烽噸鏂板皾璇�
 
+ 
+ 
 4000=鍙瀵硅
 4001=閫氳瘽璁板綍
 4002=*浜戠鐓х墖鍙繚鐣�30澶�
@@ -1492,7 +1695,7 @@
 4012=閰嶇疆鍙傛暟鏈夊紓甯�!
 4013=闂ㄧ浜岀淮鐮�
 4014=涓存椂瀵嗙爜
-
+ 
 5000=闊充箰
 5001=缁勫悎
 5002=璁剧疆
@@ -1541,8 +1744,8 @@
 5045=鎬婚煶閲�
 5046=璋冭妭闊抽噺
 5047=浣犳墜鏈烘殏鏈畨瑁�"QQ闊充箰"{\r\n}璇峰墠寰�鎵嬫満鍟嗗満瀹夎
-
-
+ 
+ 
 6000=姝e父
 6001=璁惧鐘舵��
 6002=涓�
@@ -1552,7 +1755,7 @@
 6006=鐢佃
 6007=椋庢墖
 6008=鏈洪《鐩�
-6009=DVD/EVD/VCD
+6009=DVD
 6010=鎶曞奖浠�
 6011=鑷畾涔�
 6012=绾㈠閬ユ帶
@@ -1622,7 +1825,23 @@
 6078=绯荤粺缁存姢涓瓇璇风◢鍚庡啀璇晘
 6079=鑾峰彇鏁版嵁澶辫触
 6080=鏆傛椂涓嶆敮鎸佽鍔熻兘
-
+6081=閫夋嫨绾㈠鍝佺墝
+6082=鎽囧ご
+6083=浣庨��
+6084=涓��
+6085=楂橀��
+6086=鑷姩
+6087=娓╁害+
+6088=娓╁害-
+6089=绌烘皵鍑�鍖栧櫒
+6090=鐑按鍣�
+6091=涓嶅瓨鍦ㄧ殑浜у搧
+6092=璁惧涓嶅瓨鍦�
+6093=璁惧涓嶅湪绾�
+6094=缃戝叧璁惧涓嶅瓨鍦�
+ 
+ 
+ 
 7000=鏂板缓鑷姩鍖�
 7001=缂栬緫鑷姩鍖�
 7002=濡傛灉
@@ -1757,7 +1976,9 @@
 7131=App鎺ㄩ��
 7132=鑷姩鍖�
 7133=宸叉墽琛�
-
+7134=鐩爣鐘舵��
+7135=璺屽��
+ 
 9000=璇蜂娇鐢ㄦ柊鐨勬墜鏈鸿处鍙风櫥褰旳PP
 9001=璇蜂娇鐢ㄦ柊鐨勯偖绠辫处鍙风櫥褰旳PP
 9002=鐧诲綍鎵嬫満淇敼瀹屾垚
@@ -1827,7 +2048,7 @@
 9066=澶囨敞
 9067=澶囨敞涓嶈兘涓虹┖
 9068=鏄惁瑙i櫎缁戝畾锛�
-
+ 
 10000=鏃犳晥鐧诲綍瀵嗛挜锛岃閲嶆柊鐧诲綍锛�
 10001=璇锋眰鏈嶅姟鍣ㄥけ璐ワ紝璇风◢鍚庡啀璇曪紒
 10002=绯荤粺缁存姢涓�,璇风◢鍚庡啀璇�!
@@ -1861,4 +2082,4 @@
 10030=娌℃湁杩滅▼鎺у埗鏉冮檺
 10031=璁惧涓嶈兘涓虹┖
 10032=鐢ㄦ埛娌℃湁璁惧鐨勬潈闄�
-10033=璁惧涓嶅瓨鍦�
\ No newline at end of file
+10033=璁惧涓嶅瓨鍦�
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/ArmSensor/SomeoneFellBgIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/ArmSensor/SomeoneFellBgIcon.png
new file mode 100644
index 0000000..3699b13
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/ArmSensor/SomeoneFellBgIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/ArmSensor/SomeoneInBgIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/ArmSensor/SomeoneInBgIcon.png
new file mode 100644
index 0000000..24336d8
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/ArmSensor/SomeoneInBgIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/ArmSensor/UnderProtectionBgIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/ArmSensor/UnderProtectionBgIcon.png
new file mode 100644
index 0000000..bede756
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/ArmSensor/UnderProtectionBgIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconDown.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconDown.png
new file mode 100644
index 0000000..9151722
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconDown.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconLeft.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconLeft.png
new file mode 100644
index 0000000..a9f21af
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconLeft.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconOk.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconOk.png
new file mode 100644
index 0000000..9588e99
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconOk.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconRight.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconRight.png
new file mode 100644
index 0000000..3765d0f
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconRight.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconUp.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconUp.png
new file mode 100644
index 0000000..87a0271
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconUp.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TVIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TVIcon.png
deleted file mode 100644
index 95e01fc..0000000
--- a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TVIcon.png
+++ /dev/null
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Energy/EnergyDrodUpIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Energy/EnergyDrodUpIcon.png
new file mode 100644
index 0000000..4b9600b
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Energy/EnergyDrodUpIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irpjt_blue.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irpjt_blue.png
new file mode 100644
index 0000000..6e39148
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irpjt_blue.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irpjt_white.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irpjt_white.png
new file mode 100644
index 0000000..5288530
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irpjt_white.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irstb_blue.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irstb_blue.png
new file mode 100644
index 0000000..5a6e245
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irstb_blue.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irstb_white.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irstb_white.png
new file mode 100644
index 0000000..89b618a
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irstb_white.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irtvxm_blue.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irtvxm_blue.png
new file mode 100644
index 0000000..d28c4af
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irtvxm_blue.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irtvxm_white.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irtvxm_white.png
new file mode 100644
index 0000000..1f42e9f
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irtvxm_white.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irpjt.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irpjt.png
new file mode 100644
index 0000000..ebdac1d
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irpjt.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irstb.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irstb.png
new file mode 100644
index 0000000..cbd39d5
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irstb.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irtvxm.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irtvxm.png
new file mode 100644
index 0000000..7f9045f
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irtvxm.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensormegahealth.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensormegahealth.png
new file mode 100644
index 0000000..958cf71
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensormegahealth.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/PersonalCenter/AddDevice/SenesorMegahealthBg.png b/HDL-ON_iOS/Resources/Phone/PersonalCenter/AddDevice/SenesorMegahealthBg.png
new file mode 100644
index 0000000..ad3b018
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/PersonalCenter/AddDevice/SenesorMegahealthBg.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/Public/Scan.png b/HDL-ON_iOS/Resources/Phone/Public/Scan.png
new file mode 100644
index 0000000..1859bcc
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/Public/Scan.png
Binary files differ
diff --git a/HDL_ON/Common/HDLCommon.cs b/HDL_ON/Common/HDLCommon.cs
index f30ab05..cf27527 100644
--- a/HDL_ON/Common/HDLCommon.cs
+++ b/HDL_ON/Common/HDLCommon.cs
@@ -349,6 +349,8 @@
                 case "13602944661":
                 case "18778381374":
                 case "18316672920":
+                case "15626203746":
+                case "551775569@qq.com":
                     return;
             }
 
diff --git a/HDL_ON/Common/R.cs b/HDL_ON/Common/R.cs
index 4004cad..be0041a 100644
--- a/HDL_ON/Common/R.cs
+++ b/HDL_ON/Common/R.cs
@@ -5,6 +5,73 @@
     public static class StringId
     {
 
+        /// <summary>
+        /// 姣背娉紶鎰熷櫒
+        /// </summary>
+        public const int SenesorMillimeterWave = 471;
+        /// <summary>
+        /// 闃叉姢涓�
+        /// </summary>
+        public const int UnderProtection=470;
+        /// <summary>
+        /// 鏈変汉杩涘叆
+        /// </summary>
+        public const int SomeoneIn = 469;
+        /// <summary>
+        /// 鏈変汉璺屽��
+        /// </summary>
+        public const int SomeoneFell = 468;
+        /// <summary>
+        /// 鎶曞奖浠�
+        /// </summary>
+        public const int PJT = 467;
+        /// <summary>
+        /// 鏈洪《鐩�
+        /// </summary>
+        public const int STB = 466;
+        /// <summary>
+        /// 鍒犻櫎璁惧
+        /// </summary>
+        public const int DeleteDevice = 465;
+        /// <summary>
+        /// 鍙互寮�濮嬩娇鐢ㄦ渤涓滄绫虫尝浜�
+        /// </summary>
+        public const int CanStartUsingZhaoguanMillimeterWave = 464;
+        /// <summary>
+        /// 璇疯緭鍏n鐮�
+        /// </summary>
+        public const int PlsEntrySNCode = 463;
+        /// <summary>
+        /// 鎮ㄥ綋鍓嶈繕鏈坊鍔犱换浣曡澶�
+        /// </summary>
+        public const int NotAddedAnyDevices = 462;
+        /// <summary>
+        /// 瀹ゅ唴瀹ゅ
+        /// </summary>
+        public const int InOutdoor = 461;
+        /// <summary>
+        /// 鏈湀鑳借��
+        /// </summary>
+        public const int EnergyConsumptionOfThisMonth = 460;
+        /// <summary>
+        /// 瀹炴椂鑳借��
+        /// </summary>
+        public const int RealTimeEnergyConsumption=459;
+        /// <summary>
+        /// 鏃ユ湡
+        /// </summary>
+        public const int Date = 458;
+        /// <summary>
+        /// 鑳借��
+        /// </summary>
+        public const int EnergyConsumption = 457;
+        /// <summary>
+        /// 鐢诲竷
+        /// </summary>
+        public const int Canvas = 456;
+        /// <summary>
+        /// 鍚嶇О涓嶈兘涓虹┖
+        /// </summary>
         public const int NameCannotBeEmpty = 455;
         /// <summary>
         /// 甯冮槻淇℃伅
@@ -1250,10 +1317,20 @@
         public const int xitongweihuzhong = 6078;
         public const int huoqushujushibao = 6079;
         public const int zanshibuzhichigaigongneng = 6080;
-
-
-
-
+        public const int xuanzehongwaipinpai= 6081;
+        public const int yaotou = 6082;
+        public const int disu = 6083;
+        public const int zhongsu = 6084;
+        public const int gaosu = 6085;
+        public const int zidong = 6086;
+        public const int wendujia = 6087;
+        public const int wendujian = 6088;
+        public const int kongqijinghauqi = 6089;
+        public const int reshuiqi = 6090;
+        public const int bucunzaichanpin = 6091;
+        public const int shebeibucunzai = 6092;
+        public const int shebeibuzaixian = 6093;
+        public const int wangguanshebeibuzaixian = 6094;
 
         public const int newAutomation = 7000;
         public const int editAutomation = 7001;
@@ -1389,6 +1466,8 @@
         public const int apptuisong = 7131;
         public const int zidontghua = 7132;
         public const int yizhixing = 7133;
+        public const int mubiaozhuangtai = 7134;
+        public const int diedao = 7135;
 
         #region LE鏂板
         /// <summary>
diff --git a/HDL_ON/DAL/DriverLayer/Control.cs b/HDL_ON/DAL/DriverLayer/Control.cs
index 981f284..e4f1c1a 100644
--- a/HDL_ON/DAL/DriverLayer/Control.cs
+++ b/HDL_ON/DAL/DriverLayer/Control.cs
@@ -283,6 +283,7 @@
         /// </summary>
         public void ControlScene(Scene scene)
         {
+            //杩滅▼鎴栬�呮帶鍒秎ink缃戝叧鍦烘櫙
             if (!Ins.GatewayOnline_Local || DB_ResidenceData.Instance.GatewayType == 1)
             {
                 new System.Threading.Thread(() =>
@@ -477,47 +478,55 @@
         /// 鍙戦�佽鍙栧懡浠�
         /// 鑷姩鍒ゆ柇鏄惁涓篈鍗忚璁惧
         /// </summary>
-        public void SendReadCommand(Function function)
+        public void SendReadCommand(Function function ,bool forceRemote = false)
         {
             function.refreshTime = DateTime.Now;
-            if (Ins.GatewayOnline_Local)
+            if (forceRemote)
             {
-
-                if (DB_ResidenceData.Instance.GatewayType == 0)
+                var pm = new DAL.Server.HttpServerRequest();
+                var pack = pm.RefreshDeviceStatus(new List<string>() { function.deviceId });
+            }
+            else
+            {
+                if (Ins.GatewayOnline_Local)
                 {
-                    try
+
+                    if (DB_ResidenceData.Instance.GatewayType == 0)
                     {
-                        new Control_Udp().ReadBusData(function);
+                        try
+                        {
+                            new Control_Udp().ReadBusData(function);
+                        }
+                        catch (Exception ex)
+                        {
+                            MainPage.Log($"鍙戦�佹暟鎹紓甯�: {ex.Message}");
+                        }
                     }
-                    catch (Exception ex)
+                    else
                     {
-                        MainPage.Log($"鍙戦�佹暟鎹紓甯�: {ex.Message}");
+                        var readKey = new Dictionary<string, string>();
+                        readKey.Add("sid", function.sid);
+
+                        var readDataObj = new AlinkReadFunctionStatusObj()
+                        {
+                            id = Ins.msg_id.ToString(),
+                            objects = new List<Dictionary<string, string>>()
+                        {
+                            readKey
+                        },
+                            time_stamp = Utlis.GetTimestamp()
+                        };
+                        var functionControlDataJson = Newtonsoft.Json.JsonConvert.SerializeObject(readDataObj);
+                        var sendBytes = Ins.ConvertSendBodyData(CommunicationTopic.ct.ReadStatus, functionControlDataJson);
+                        MainPage.Log($"鏈湴閫氳 鍙戦�丠DL-Link鏁版嵁:{functionControlDataJson}");
+                        new Control_Udp().SendLocalHdlLinkData(sendBytes, readDataObj.id);
                     }
                 }
                 else
                 {
-                    var readKey = new Dictionary<string, string>();
-                    readKey.Add("sid", function.sid);
-
-                    var readDataObj = new AlinkReadFunctionStatusObj()
-                    {
-                        id = Ins.msg_id.ToString(),
-                        objects = new List<Dictionary<string, string>>()
-                        {
-                            readKey
-                        },
-                        time_stamp = Utlis.GetTimestamp()
-                    };
-                    var functionControlDataJson = Newtonsoft.Json.JsonConvert.SerializeObject(readDataObj);
-                    var sendBytes = Ins.ConvertSendBodyData(CommunicationTopic.ct.ReadStatus, functionControlDataJson);
-                    MainPage.Log($"鏈湴閫氳 鍙戦�丠DL-Link鏁版嵁:{functionControlDataJson}");
-                    new Control_Udp().SendLocalHdlLinkData(sendBytes, readDataObj.id);
+                    var pm = new DAL.Server.HttpServerRequest();
+                    var pack = pm.RefreshDeviceStatus(new List<string>() { function.deviceId });
                 }
-            }
-            else
-            {
-                var pm = new DAL.Server.HttpServerRequest();
-                var pack = pm.RefreshDeviceStatus(new List<string>() { function.deviceId });
             }
         }
 
@@ -561,7 +570,7 @@
 
             string sendDataString = topicString + lengthString + bodyDataString;
             byte[] sendDataBytes = Encoding.ASCII.GetBytes(sendDataString);
-            //MainPage.Log($"杞崲HDL-Link鏁版嵁\r\n{sendDataString}\r\n");
+            MainPage.Log($"杞崲HDL-Link鏁版嵁\r\n{sendDataString}\r\n");
 
             return sendDataBytes;
         }
@@ -635,7 +644,7 @@
                         {
                             Ins.GatewayId = device.device_mac;
                         }
-                        reportIp = "239.0.168.188";// device.ip_address;
+                        reportIp = "239.0.168.188";// device.ip_address;//涓绘挱鍦板潃涔熻兘鎺у埗璁惧
                     }
                 }
                 else if (receiveObj.Topic == CommunicationTopic.ct.ReadStatus + "_reply" ||
@@ -661,15 +670,6 @@
         /// <param name="updateBytes"></param>
         public void UpdataFunctionStatus(string revString, byte[] usefulBytes,bool isCloudData = false)
         {
-
-            if (Ins.GatewayOnline_Local && isCloudData)//鏈湴閾炬帴锛岄櫎浜嗘秱楦﹁澶囨暟鎹箣澶栫殑浜戠鏁版嵁涓嶅鐞�
-            {
-                if (FunctionList.List.GetDeviceFunctionList(SPK.BrandType.Tuya).Count == 0)
-                {
-                    //MainPage.Log($"A鍗忚鏇存柊鐘舵��:鏈湴閾炬帴锛岄櫎浜嗘秱楦﹁澶囨暟鎹箣澶栫殑浜戠鏁版嵁涓嶅鐞�...");
-                    return;
-                }
-            }
             var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<AlinkFunctionStatusObj>(revString);
             if (temp != null)
             {
@@ -679,6 +679,22 @@
                 {
                     try
                     {
+
+                        if (Ins.GatewayOnline_Local && isCloudData)//鏈湴閾炬帴锛岄櫎浜嗘秱楦﹁澶囨暟鎹箣澶栫殑浜戠鏁版嵁涓嶅鐞�
+                        {
+                            if (FunctionList.List.OtherBrandFunction.Count != 0)
+                            {
+                                if (FunctionList.List.OtherBrandFunction.Find((obj) => obj.sid == updateTemp.sid) == null)
+                                {
+                                    //MainPage.Log($"A鍗忚鏇存柊鐘舵��:鏈湴閾炬帴锛岄櫎浜嗘秱楦﹁澶囨暟鎹箣澶栫殑浜戠鏁版嵁涓嶅鐞�...");
+                                    return;
+                                }
+                            }
+                        }
+
+
+
+
                         var localFunction = allLocalFuntion.Find((obj) => obj.sid == updateTemp.sid);
                         if (localFunction == null)
                         {
@@ -703,6 +719,9 @@
                         Function localObj = null;
                         switch (localFunction.spk)
                         {
+                            case SPK.ElectricEnergy:
+                                EnergyMainPage.UpdataStatus(localFunction);
+                                break;
                             case SPK.LightSwitch:
                                 RelayPage.UpdataState(localFunction);
                                 break;
@@ -809,6 +828,14 @@
                             case SPK.SensorTVOC:
                             case SPK.SensorTemperature:
                             case SPK.SensorHumidity:
+                                if(localFunction.spk == SPK.SensorTemperature)
+                                {
+                                    HomePage.LoadEvent_RefreshEnvirIndoorTemp();
+                                }
+                                else if (localFunction.spk == SPK.SensorHumidity)
+                                {
+                                    HomePage.LoadEvent_RefreshEnvirIndoorHumi();
+                                }
                                 EnvironmentalPage.LoadEvent_UpdataStatus(localFunction);
                                 break;
                             case SPK.ElectricSocket:
@@ -826,7 +853,9 @@
                             case SPK.SensorWater:
                             case SPK.ClothesHanger:
                             case SPK.AcIr:
+                            case SPK.SenesorMegahealth:
                                 //璁惧鐘舵�佹帹閫�
+                                //鐘舵�佹洿鏂�
                                 Stan.HdlDeviceStatuPushLogic.Current.UpdateDeviceStatu(updateTemp.sid, updateTemp.status);
                                 break;
                         }
diff --git a/HDL_ON/DAL/DriverLayer/Control_Udp.cs b/HDL_ON/DAL/DriverLayer/Control_Udp.cs
index fdb18ee..4b9483b 100644
--- a/HDL_ON/DAL/DriverLayer/Control_Udp.cs
+++ b/HDL_ON/DAL/DriverLayer/Control_Udp.cs
@@ -984,7 +984,7 @@
 
             try
             {
-                //MainPage.Log("鍙戦�佹暟鎹�:" + SendFlag);
+                MainPage.Log("鍙戦�佹暟鎹�:" + SendFlag);
                 UdpSocket._BusSocket.AsyncBeginSend(packet);
                 packet.HaveSendCount--;
 
@@ -1107,11 +1107,22 @@
                 var sendBytes = Control.Ins.ConvertSendBodyData(CommunicationTopic.SearchLoaclGateway, bodyString);
                 //缁勬挱鍙戦��
                 packet = new Packet(sendBytes, new System.Net.IPEndPoint(System.Net.IPAddress.Parse("239.0.168.188"), 8585));
-                packet.HaveSendCount = 4;//ps锛氭病鏈夐噸鍙戯紝鍚庢湡鏈夋椂闂村彲浠ュ鍔犻噸鍙戝垽鏂�
+                packet.HaveSendCount = 4;
                 System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(managerSendCount));
                 thread.IsBackground = true;
                 thread.Start(packet);
                 //wait();涓嶉渶瑕佺瓑寰�
+
+
+
+
+                //hjSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
+                //hjSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, true);
+                //EndPoint ipep = new IPEndPoint(IPAddress.Parse(CsConst.myLocalIP), HDLUDP.UDPPort);
+                //hjSocket.Bind(ipep);
+
+
+
             }
             catch (Exception ex)
             {
diff --git a/HDL_ON/DAL/DriverLayer/UdpSocket.cs b/HDL_ON/DAL/DriverLayer/UdpSocket.cs
index ab3cb02..4946986 100644
--- a/HDL_ON/DAL/DriverLayer/UdpSocket.cs
+++ b/HDL_ON/DAL/DriverLayer/UdpSocket.cs
@@ -46,10 +46,9 @@
             busSocket = new Socket (AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
             busSocket.EnableBroadcast = true;
             try {
-                //busSocket.Bind (new IPEndPoint (IPAddress.Any, 6000));
-                busSocket.Bind(new IPEndPoint(IPAddress.Any, Port));
+				busSocket.Bind(new IPEndPoint(IPAddress.Any, Port));
 
-                busSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(IPAddress.Parse("239.0.168.188")));
+				busSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(IPAddress.Parse("239.0.168.188")));
 			}
 			catch{
                 busSocket = null;
diff --git a/HDL_ON/DAL/Mqtt/MqttClient.cs b/HDL_ON/DAL/Mqtt/MqttClient.cs
index 90cc0da..93d0ae7 100644
--- a/HDL_ON/DAL/Mqtt/MqttClient.cs
+++ b/HDL_ON/DAL/Mqtt/MqttClient.cs
@@ -133,7 +133,7 @@
                 {
                     try
                     {
-                        System.Threading.Thread.Sleep(500);
+                        System.Threading.Thread.Sleep(2000);
                         //杩涘叆鍚庡彴涓嶅鐞�
                         if (MainPage.IsEnterBackground) continue;
                         if (MqttInfoConfig.Current.HomeGatewayInfo == null)
@@ -204,6 +204,7 @@
                         Topic = $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/thing/event/irCodeStudyDone/up",
                         QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce
                     };
+
                     #region 鏁版嵁鏇存柊鎺ㄩ�佷富棰�
                     //appHomeRefresh锛氫綇瀹呮暟鎹埛鏂伴�氱煡
                     var appHomeRefresh = new MqttTopicFilter()
@@ -223,6 +224,13 @@
                         Topic = $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/thing/event/appDeviceRefresh/up",
                         QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce
                     };
+                    //涓�绔彛瀵嗛挜鏇存柊閫氱煡
+                    var mqttkeyChange = new MqttTopicFilter()
+                    {
+                        Topic = $"/user/{MqttInfoConfig.Current.HomeGatewayInfo.gatewayId}/custom/mqtt/secret/change",
+                        QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce
+                    };
+
                     #endregion
 
 
@@ -230,7 +238,7 @@
                     var result = await RemoteMqttClient.SubscribeAsync(new MqttTopicFilter[] {
                         pirStatus,pirStudy,
                         appDeviceRefresh,appHomeRefresh,appRoomRefresh,
-                        topicFilterPush2, topicAlinkStatus });
+                        topicFilterPush2, topicAlinkStatus ,mqttkeyChange});
                     if (result.Items[0].ResultCode == MQTTnet.Client.Subscribing.MqttClientSubscribeResultCode.GrantedQoS0)
                     {
                         isSubscribeSuccess = true;
@@ -330,14 +338,14 @@
                                 {
                                     var bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, tuyaEncryptKey);
                                     var revString = Encoding.UTF8.GetString(bytes);
-                                    HDL_ON.UI.UI2.PersonalCenter.PirDevice.Method.controldata = revString;
+                                    HDL_ON.UI.UI2.PersonalCenter.PirDevice.PirMethod.controldata = revString;
                                 }
                                 //App璁㈤槄閬ユ帶鍣ㄨ嚜瀛︽寜閿涔犳垚鍔熼�氱煡
                                 else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/thing/event/irCodeStudyDone/up")
                                 {
                                     var bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, tuyaEncryptKey);
                                     var revString = Encoding.UTF8.GetString(bytes);
-                                    UI.UI2.PersonalCenter.PirDevice.Method.buttondata = revString;
+                                    UI.UI2.PersonalCenter.PirDevice.PirMethod.buttondata = revString;
                                 }
                                 #region 鏁版嵁鏇存柊鎺ㄩ�佷富棰�
                                 //appHomeRefresh锛氫綇瀹呮暟鎹埛鏂伴�氱煡
@@ -415,6 +423,17 @@
                                         MainPage.Log($"璇诲彇浜戠璁惧鏁版嵁澶辫触:Code:{deviceResult.Code};  Msg:{deviceResult.message}");
                                     }
                                 }
+                                //缃戝叧瀵嗛挜鍙樺寲
+                                else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/custom/mqtt/secret/change")
+                                {
+                                    var pm = new HttpServerRequest();
+                                    pm.GetHomeGatewayList();
+                                    MainPage.Log($"缃戝叧瀵嗛挜鍙樻洿");
+                                    MainPage.Log($"鏃у瘑閽ワ細{mqttEncryptKey}");
+                                    mqttEncryptKey = MqttInfoConfig.Current.HomeGatewayInfo.aesKey;
+                                    MainPage.Log($"鏂板瘑閽ワ細{mqttEncryptKey}");
+                                }
+
                                 #endregion
                                 //A缃戝叧璁惧鐘舵��-鍖呭惈娑傞甫璁惧
                                 else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/thing/property/send")
@@ -485,6 +504,8 @@
                 catch (Exception ex)
                 {
                     Utlis.WriteLine($"error:" + ex.Message);
+                    //mqtt杩炴帴寮傚父锛屾竻绌烘湰鍦癿qtt淇℃伅锛屽彲鑳介渶瑕侀噸鏂拌幏鍙栵細wxr
+                    MqttInfoConfig.Current.Refresh();
                 }
                 finally
                 {
@@ -626,6 +647,8 @@
                     //閲嶆柊涓績鏈嶅姟鍣ㄨ幏鍙栧弬鏁版爣璁�
                     MqttInfoConfig.Current.IfGetMqttInfoSuccess = false;
                     Console.WriteLine("Connect error: " + ex.Message);
+                    //mqtt杩炴帴寮傚父锛屾竻绌烘湰鍦癿qtt淇℃伅锛屽彲鑳介渶瑕侀噸鏂拌幏鍙栵細wxr
+                    MqttInfoConfig.Current.Refresh();
                 }
                 finally
                 {
@@ -671,7 +694,7 @@
         {
             if (mMes == PushSignStr) return;//鏄嚜宸辩殑鐧诲綍鎺ㄩ�佷笉澶勭悊//鎴栬�呭綋鍓嶄笉鏄繙绋嬮摼鎺ョ姸鎬�
             //娴嬭瘯璐﹀彿锛屼笉鎸や笅绾�
-            switch (UserInfo.Current.AccountString)
+            switch (UserInfo.Current.userMobileInfo)
             {
                 case "13415629083":
                 case "18316120654":
@@ -686,6 +709,8 @@
                 case "18778381374":
                 case "18316672920":
                 case "15971583093":
+                case "15626203746":
+                case "551775569@qq.com":
                     return;
             }
 
@@ -817,9 +842,12 @@
         /// <returns></returns>
         static async Task GetMqttInfoAndMQTTConnectAsync()
         {
-            var mqttInfoRequestResult_Obj = new Server.HttpServerRequest().GetMqttRemoteInfo(GetRandomKey());
+            var mqttInfoRequestResult_Obj = new HttpServerRequest().GetMqttRemoteInfo(GetRandomKey());
             if (mqttInfoRequestResult_Obj != null)
             {
+                MainPage.Log($"鑾峰彇mqtt info 鎴愬姛 /r/n clientId:{mqttInfoRequestResult_Obj.clientId}/r/n passWord:{mqttInfoRequestResult_Obj.passWord} /r/n url:{mqttInfoRequestResult_Obj.url}/r/n userName:{mqttInfoRequestResult_Obj.userName}");
+
+
                 MqttInfoConfig.Current.mMqttInfo = mqttInfoRequestResult_Obj;
                 await MQTTConnectAsync();
                 //1.鍒ゆ柇鏄惁缁戝畾浜嗙綉鍏筹紝鑾峰彇缃戝叧杩滅▼杩炴帴鐨勫姞瀵咾EY
diff --git a/HDL_ON/DAL/Mqtt/MqttInfoConfig.cs b/HDL_ON/DAL/Mqtt/MqttInfoConfig.cs
index 4d44a9c..2bc9532 100644
--- a/HDL_ON/DAL/Mqtt/MqttInfoConfig.cs
+++ b/HDL_ON/DAL/Mqtt/MqttInfoConfig.cs
@@ -67,7 +67,8 @@
         public void Refresh()
         {
             m_Current = null;
-            Save();
+            Common.FileUtlis.Files.DeleteFile(ConfigFile);
+            //Save();
         }
 
         public void Save()
diff --git a/HDL_ON/DAL/Server/HttpServerRequest.cs b/HDL_ON/DAL/Server/HttpServerRequest.cs
index 214c33d..b059398 100644
--- a/HDL_ON/DAL/Server/HttpServerRequest.cs
+++ b/HDL_ON/DAL/Server/HttpServerRequest.cs
@@ -51,7 +51,7 @@
             d.Add("type", qType);
             d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
             d.Add("deviceId",  deviceId );
-            d.Add("key",  "value" );
+            d.Add("key",  deviceKey );
 
             var requestJson = HttpUtil.GetSignRequestJson(d);
             return HttpUtil.RequestHttpsPost(NewAPI.Api_Post_EnvironmentalSensorHistoricalData, requestJson);
@@ -74,8 +74,20 @@
             var requestJson = HttpUtil.GetSignRequestJson(d);
             return HttpUtil.RequestHttpsPost(NewAPI.Api_Post_ArmSensorHistoricalData, requestJson);
         }
+        /// <summary>
+        /// 璇诲彇鏈�杩戜竴涓湀鐨勬暟鎹�
+        /// </summary>
+        /// <returns></returns>
+        public ResponsePackNew GetLastMonthHistory(string deviceId,string key)
+        {
+            Dictionary<string, object> d = new Dictionary<string, object>();
+            d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
+            d.Add("deviceId", deviceId);
+            d.Add("key", key);
 
-
+            var requestJson = HttpUtil.GetSignRequestJson(d);
+            return HttpUtil.RequestHttpsPost(NewAPI.Api_Post_SensorLastMonthHistoricalData, requestJson);
+        }
 
 
         #endregion
@@ -1308,6 +1320,9 @@
                             MainPage.cityInfo.pm25 = jt.GetValue("Air_Quality").ToString();
                             MainPage.cityInfo.windLevel = jt.GetValue("WindLevel").ToString();
                             MainPage.cityInfo.weather = jt.GetValue("Weather").ToString();
+                            MainPage.cityInfo.lowestTemperature = jt.GetValue("lowestTemperature").ToString();
+                            MainPage.cityInfo.highestTemperature = jt.GetValue("highestTemperature").ToString();
+
                             break;
                         }
                         catch (Exception ex)
@@ -1835,7 +1850,10 @@
             d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
             d.Add("productPlatform", productPlatform);
             d.Add("productBrand", productBrand);
-            d.Add("networkConfig", true);
+            if (productBrand != "MegaHealth")
+            {
+                d.Add("networkConfig", true);
+            }
 
             var requestJson = HttpUtil.GetSignRequestJson(d);
             return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_GetDevcieList, requestJson);
@@ -1854,10 +1872,29 @@
             d.Add("productBrand", productBrand);
             d.Add("networkConfig", true);
             
-
             var requestJson = HttpUtil.GetSignRequestJson(d);
             return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_Get3tyBrandDevcieList, requestJson);
         }
+        /// <summary>
+        /// 娉ㄥ唽绗笁鏂硅澶�
+        /// </summary>
+        /// <param name="productPlatform"></param>
+        /// <param name="productBrand"></param>
+        /// <returns></returns>
+        public ResponsePackNew IndependentRegister3TyDevcie(string spk,string extDevId,string deviceName)
+        {
+            Dictionary<string, object> d = new Dictionary<string, object>();
+            d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
+            d.Add("spk", spk);
+            d.Add("extDevId", extDevId);
+            d.Add("name", deviceName);
+
+            var requestJson = HttpUtil.GetSignRequestJson(d);
+            return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_IndependentRegister3TyDevcie, requestJson);
+        }
+
+
+
 
         /// <summary>
         /// 鑾峰彇璁惧璇︽儏
diff --git a/HDL_ON/DAL/Server/HttpUtil.cs b/HDL_ON/DAL/Server/HttpUtil.cs
index a3d47c1..b5bcf99 100644
--- a/HDL_ON/DAL/Server/HttpUtil.cs
+++ b/HDL_ON/DAL/Server/HttpUtil.cs
@@ -17,8 +17,8 @@
         /// 鍥哄畾鍩熷悕,姝e紡鐜
         /// 鍏叡鍩熷悕灏辫繎瑙f瀽
         /// </summary>
-        //public const string GlobalRequestHttpsHost = "https://nearest.hdlcontrol.com";
-        public const string GlobalRequestHttpsHost = "https://test-gz.hdlcontrol.com";//mmmm
+        public const string GlobalRequestHttpsHost = "https://nearest.hdlcontrol.com";
+        //public const string GlobalRequestHttpsHost = "https://test-gz.hdlcontrol.com";//mmmm
         /// <summary>
         /// RegionMark
         /// </summary>
@@ -153,9 +153,7 @@
                 {
                     urlHead = OnAppConfig.Instance.RequestHttpsHost;
                 }
-                //"https://test-gz.hdlcontrol.com";
-                //"https://bahrain-gateway.hdlcontrol.com";
-                //urlHead="https://china-gateway.hdlcontrol.com";
+
                 string requestFullUrl = urlHead + apiPath;
 
 
diff --git a/HDL_ON/DAL/Server/NewAPI.cs b/HDL_ON/DAL/Server/NewAPI.cs
index 1a7927f..07179a1 100644
--- a/HDL_ON/DAL/Server/NewAPI.cs
+++ b/HDL_ON/DAL/Server/NewAPI.cs
@@ -337,6 +337,10 @@
         /// </summary>
         public const string Api_Post_Get3tyBrandDevcieList = "/home-wisdom/app/product/list";
         /// <summary>
+        /// 娉ㄥ唽绗笁鏂硅澶�
+        /// </summary>
+        public const string Api_Post_IndependentRegister3TyDevcie = "/home-wisdom/app/device/independentRegister";
+        /// <summary>
         /// 鑾峰彇璁惧璇︽儏
         /// </summary>
         public const string Api_Post_GetDevcieInfoList = "/home-wisdom/app/device/info";
@@ -381,6 +385,10 @@
         /// 鑾峰彇瀹夐槻浼犳劅鍣ㄥ巻鍙叉暟鎹�
         /// </summary>
         public const string Api_Post_ArmSensorHistoricalData = "/home-wisdom/app/device/message";
+        /// <summary>
+        /// 璇诲彇鏈�杩戜竴涓湀鐨勬暟鎹�
+        /// </summary>
+        public const string Api_Post_SensorLastMonthHistoricalData = "/home-wisdom/app/statistics/device/monthDiff";
         #endregion
 
         #region Kaede -- 鍦烘櫙鎺ュ彛____________________________
diff --git a/HDL_ON/Entity/Function/Function.cs b/HDL_ON/Entity/Function/Function.cs
index f7f94b2..dee04dc 100644
--- a/HDL_ON/Entity/Function/Function.cs
+++ b/HDL_ON/Entity/Function/Function.cs
@@ -1,4 +1,4 @@
-锘縰sing System;
+using System;
 using System.Collections.Generic;
 using HDL_ON.Common;
 using HDL_ON.DAL.Server;
@@ -126,7 +126,6 @@
         /// <returns>淇敼缁撴灉</returns>
         public bool SetAttrState(string key, object value)
         {
-            //var attrState = status.Find((s) => s.key == key.ToString());
             var attr = attributes.Find((s) => s.key == key);
             if (attr == null)
             {
@@ -778,6 +777,10 @@
         /// </summary>
         public const string Status = "status";
         /// <summary>
+        /// 姣背娉紶鎰熷櫒锛屽姩浣滅姸鎬�
+        /// </summary>
+        public const string ActionStatus = "action_state";
+        /// <summary>
         /// 鐢甸噺鐘舵��
         /// </summary>
         public const string BatteryState = "battery_state";
@@ -877,6 +880,14 @@
         /// </summary>
         public const string TuyaWaterTime = "countdown_1";
         #endregion
+        /// <summary>
+        /// 鍔熺巼
+        /// </summary>
+        public const string Power = "power";
+        /// <summary>
+        /// 鎬荤數閲�
+        /// </summary>
+        public const string TotalElectricity = "total_electricity";
 
 
     }
@@ -934,6 +945,8 @@
 
     public static class SPK
     {
+       
+
 
         #region 鐏厜
         /// <summary>
@@ -1075,6 +1088,11 @@
         /// 鑳芥簮妯″潡
         /// </summary>
         public const string EnergyStandard = "energy.standard";
+
+        /// <summary>
+        /// 鑳芥簮-鐢佃兘
+        /// </summary>
+        public const string ElectricEnergy = "energy.electric";
         /// <summary>
         /// 鑳芥簮spk鍒楄〃
         /// </summary>
@@ -1082,7 +1100,7 @@
         public static List<string> EnergySpkList()
         {
             var spkList = new List<string>();
-            spkList.Add(EnergyStandard);
+            spkList.Add(ElectricEnergy);
             return spkList;
         }
         #endregion
@@ -1147,6 +1165,10 @@
         /// 锛堝共鎺ョ偣锛�
         /// </summary>
         public const string SensorDryContact = "sensor.dryContact";
+        /// <summary>
+        /// 姣背娉紶鎰熷櫒
+        /// </summary>
+        public const string SenesorMegahealth = "sensor.megahealth";
 
         /// <summary>
         /// 瀹夐槻浼犳劅鍣╯pk鍒楄〃
@@ -1165,6 +1187,7 @@
             spkList.Add(SensorDuiShe);
             spkList.Add(SensoruUtrasonic);
             spkList.Add(SensorDryContact);
+            spkList.Add(SenesorMegahealth);
             return spkList;
         }
         #endregion
@@ -1221,6 +1244,10 @@
         /// 绾㈠銆佺數瑙�
         /// </summary>
         public const string TvIr = "ir.tv";
+        /// <summary>
+        /// 绾㈠銆佸皬绫崇數瑙�
+        /// </summary>
+        public const string TvXmIr = "ir.tvxm";
         /// <summary>
         /// 瀹剁數銆侀鎵�
         /// </summary>
@@ -1288,9 +1315,12 @@
             spkList.Add(ElectricSocket);
             spkList.Add(ElectricTV);
             spkList.Add(TvIr);
+            spkList.Add(TvXmIr);
             spkList.Add(ElectricFan);
             spkList.Add(ClothesHanger);
             spkList.Add(IrLearn);
+            spkList.Add(PjtIr);
+            spkList.Add(StbIr);
             spkList.Add(ElectricTuyaAirCleaner);
             spkList.Add(ElectricTuyaFan);
             spkList.Add(ElectricTuyaWeepRobot);
@@ -1301,12 +1331,6 @@
 
         #endregion
 
-        #region 鑳芥簮
-        /// <summary>
-        /// 鑳芥簮-鐢佃兘
-        /// </summary>
-        public const string ElectricEnergy = "energy.electric";
-        #endregion 
 
         #region 璁惧绫�
         /// <summary>
@@ -1326,7 +1350,21 @@
         }
         #endregion
 
-
+        #region 绗笁鏂箂pk鍒楄〃
+        /// <summary>
+        /// 鑾峰彇鎵�鏈夌涓夋柟鍝佺墝鍔熻兘鐨剆pk
+        /// </summary>
+        /// <returns></returns>
+        public static List<string> GetAll3tySPK()
+        {
+            var spkList = new List<string>();
+            spkList.Add(ElectricTuyaAirCleaner);
+            spkList.Add(ElectricTuyaFan);
+            spkList.Add(ElectricTuyaWaterValve);
+            spkList.Add(ElectricTuyaWeepRobot);
+            spkList.Add(SenesorMegahealth);
+            return spkList;
+        }
         /// <summary>
         /// 鑾峰彇绗笁鏂硅澶噑pk
         /// </summary>
@@ -1337,16 +1375,19 @@
 
             switch (brandType)
             {
-                case BrandType.All3tyBrand:
                 case BrandType.Tuya:
                     list.Add(ElectricTuyaAirCleaner);
                     list.Add(ElectricTuyaFan);
                     list.Add(ElectricTuyaWaterValve);
                     list.Add(ElectricTuyaWeepRobot);
                     break;
+                case BrandType.All3tyBrand:
+                    list.Add(SenesorMegahealth);//鍏嗚
+                    break;
             }
             return list;
         }
+        #endregion
 
 
         /// <summary>
@@ -1357,6 +1398,10 @@
             All = 0,
             Hdl = 1,
             Tuya = 2,
+            /// <summary>
+            /// 鍏嗚
+            /// </summary>
+            Megahealth = 3,
 
 
             All3tyBrand = 999,
diff --git a/HDL_ON/Entity/Function/Scene.cs b/HDL_ON/Entity/Function/Scene.cs
index ded2b0c..f4bdd83 100644
--- a/HDL_ON/Entity/Function/Scene.cs
+++ b/HDL_ON/Entity/Function/Scene.cs
@@ -67,7 +67,7 @@
         /// </summary>
         public string delay = "0";
         /// <summary>
-        /// 鍦烘櫙鐨勬渶濂戒竴娆℃墽琛屾椂闂�
+        /// 鍦烘櫙鐨勬渶鍚庝竴娆℃墽琛屾椂闂�
         /// </summary>
         public string LastExecutionTime = "";
 
@@ -348,7 +348,18 @@
         {
             var delayInt = 0;
             int.TryParse(delay,out delayInt);
-            string text = (delayInt / 60)+Language.StringByID(StringId.m)+(delayInt % 60)+Language.StringByID(StringId.s);
+            if(delayInt == 0)
+            {
+                return Language.StringByID(StringId.NoDelay);
+            }
+            string text = "";
+            if (delayInt > 60)
+            {
+                text = (delayInt / 60) + Language.StringByID(StringId.m) + (delayInt % 60) + Language.StringByID(StringId.s);
+            }else
+            {
+                text = delayInt + Language.StringByID(StringId.s);
+            }
             return text;
             switch (delay)
             {
diff --git a/HDL_ON/Entity/FunctionList.cs b/HDL_ON/Entity/FunctionList.cs
index bef3882..62b1fee 100644
--- a/HDL_ON/Entity/FunctionList.cs
+++ b/HDL_ON/Entity/FunctionList.cs
@@ -143,6 +143,25 @@
         /// </summary>
         public UI.UI2.FuntionControlView.Video.VideoClouds videoIntercom;
 
+        List<Function> _OtherBrandFunction;
+        /// <summary>
+        /// 绗笁鏂瑰搧鐗屽姛鑳�
+        /// </summary>
+        public List<Function> OtherBrandFunction
+        {
+            get
+            {
+                if(_OtherBrandFunction == null)
+                {
+                    _OtherBrandFunction = new List<Function>();
+                    var spkList = SPK.GetAll3tySPK();
+                    _OtherBrandFunction = Functions.FindAll((obj) => spkList.Contains(obj.spk));
+                }
+                return _OtherBrandFunction;
+            }
+        }
+
+
         /// <summary>
         /// 鍦烘櫙鍒楄〃
         /// </summary>
@@ -271,6 +290,9 @@
             return Functions;
         }
 
+
+
+
         /// <summary>
         /// 娓呯┖璁惧鍔熻兘鍒楄〃
         /// </summary>
diff --git a/HDL_ON/Entity/ResponseEntity/CityInfo.cs b/HDL_ON/Entity/ResponseEntity/CityInfo.cs
index c6f2a93..9a8a914 100644
--- a/HDL_ON/Entity/ResponseEntity/CityInfo.cs
+++ b/HDL_ON/Entity/ResponseEntity/CityInfo.cs
@@ -30,6 +30,14 @@
         /// 鏃跺尯
         /// </summary>
         public string timeZone;
+        /// <summary>
+        /// 鏈�浣庢俯
+        /// </summary>
+        public string lowestTemperature = "--";
+        /// <summary>
+        /// 鏈�楂樻俯
+        /// </summary>
+        public string highestTemperature = "--";
 
         /// <summary>
         /// 娓╁害
diff --git a/HDL_ON/HDL_ON.projitems b/HDL_ON/HDL_ON.projitems
index d66621d..4649930 100644
--- a/HDL_ON/HDL_ON.projitems
+++ b/HDL_ON/HDL_ON.projitems
@@ -372,7 +372,6 @@
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\PirSend.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\AddControlComplete.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\View\PatchView.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\Method.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\View\FailView.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\View\ReplicationView.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Electrical\ClothesHangerSetTimePage.cs" />
@@ -380,11 +379,6 @@
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Stan\Logic\HdlCloudReceiveLogic.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Stan\Logic\HdlWifiLogic.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Stan\Controls\CompoundControls\ProgressRowBar.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\AddMiniRemoteControlDirection3Page.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\AddMiniRemoteControlDirection1Page.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\AddMiniRemoteControlDirection2Page.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\AddMiniRemoteControlDirection4Page.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\AddThirdPartyDeviceMenuListPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\Matching.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\View\PirNameView.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddFunction\BrandListPage.cs" />
@@ -409,7 +403,6 @@
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\1ContorlPage\AcControlPage_AddIrButton.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Energy\EnergyMainPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)DAL\ThirdPartySdk\ESOnVideo.cs" />
-    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Energy\EchartsOption_Energy.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\1ContorlPage\AirFreshControlPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Video\VideoMethod.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Video\VideoSend.cs" />
@@ -428,6 +421,18 @@
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\SmartSpeaker\SmartSpeakerSelectDevicesPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\SmartSpeaker\SmartSpeakerRoomListPage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Electrical\DvdPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Electrical\PjtPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Electrical\StbPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\PirMethod.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\SenesorMegahealth\AddSenesorMegahealthDirection1Page.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\MiniRemoteControl\AddMiniRemoteControlDirection1Page.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\MiniRemoteControl\AddMiniRemoteControlDirection2Page.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\MiniRemoteControl\AddMiniRemoteControlDirection3Page.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\MiniRemoteControl\AddMiniRemoteControlDirection4Page.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\MiniRemoteControl\AddThirdPartyDeviceMenuListPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\SenesorMegahealth\SenesorMegahealthManagerPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\ArmSensor\SenesorMegahealthPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Electrical\IrFanPage.cs" />
   </ItemGroup>
   <ItemGroup>
     <Folder Include="$(MSBuildThisFileDirectory)DAL\" />
@@ -472,5 +477,7 @@
     <Folder Include="$(MSBuildThisFileDirectory)DAL\ThirdPartySdk\" />
     <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\ArmCenter\" />
     <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\SmartSpeaker\" />
+    <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\SenesorMegahealth\" />
+    <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\MiniRemoteControl\" />
   </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/HDL_ON/UI/MainPage.cs b/HDL_ON/UI/MainPage.cs
index 1315ac8..798e219 100644
--- a/HDL_ON/UI/MainPage.cs
+++ b/HDL_ON/UI/MainPage.cs
@@ -20,7 +20,7 @@
         /// <summary>
         /// 鐗堟湰鍙�
         /// </summary>
-        public static string VersionString = "1.2.0428";
+        public static string VersionString = "1.2.0608";
         ///// <summary>
         ///// 瀹㈡埛绔被鍨�
         ///// </summary>
diff --git a/HDL_ON/UI/UI0-Public/OperationSuccessPromptPage.cs b/HDL_ON/UI/UI0-Public/OperationSuccessPromptPage.cs
index f9d4f33..f1de0b0 100644
--- a/HDL_ON/UI/UI0-Public/OperationSuccessPromptPage.cs
+++ b/HDL_ON/UI/UI0-Public/OperationSuccessPromptPage.cs
@@ -11,6 +11,12 @@
     {
         Dialog dialog;
         FrameLayout bodyView;
+
+        /// <summary>
+        /// 鍥炴帀鍑芥暟
+        /// </summary>
+        public Action rebackAction = null;
+
         public OperationResultDisPalyPage()
         {
             dialog = this;
@@ -24,7 +30,8 @@
         /// <param name="title">椤甸潰鏍囬</param>
         /// <param name="tipTitle">鎻愮ず鏍囬</param>
         /// <param name="tipMsg">鎻愮ず淇℃伅</param>
-        public void LoadPage(bool result,string title,string tipTitle,string tipMsg)
+        /// <param name="confirmText">鎸夐挳鏂囨湰</param>
+        public void LoadPage(bool result,string title,string tipTitle,string tipMsg,string confirmText = "")
         {
             bodyView.BackgroundColor = CSS_Color.BackgroundColor;
             dialog.AddChidren(bodyView);
@@ -77,8 +84,14 @@
                 TextSize = CSS_FontSize.SubheadingFontSize,
             };
             bodyView.AddChidren(btnConfirm);
+            if(confirmText != "")
+            {
+                btnConfirm.Text = confirmText;
+            }
+
             btnConfirm.MouseUpEventHandler = (sender, e) => {
                 this.Close();
+                rebackAction?.Invoke();
             };
 
         }
diff --git a/HDL_ON/UI/UI0-Public/PublicAssmebly.cs b/HDL_ON/UI/UI0-Public/PublicAssmebly.cs
index de994f8..ffff590 100644
--- a/HDL_ON/UI/UI0-Public/PublicAssmebly.cs
+++ b/HDL_ON/UI/UI0-Public/PublicAssmebly.cs
@@ -586,7 +586,7 @@
             BottomTimeSelectControl timeControl = new BottomTimeSelectControl(mRange, sRange, 5, Language.StringByID(StringId.SceneDelay));
             timeControl.RowHeight = Application.GetRealHeight(50);
             timeControl.InitControl(0, 0, 262, false);
-            timeControl.ChangePickerEvent2();
+            //timeControl.ChangePickerEvent2();
             timeControl.FinishEvent = (type, hours, min) =>
             {
                 if(type == 1)
diff --git a/HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs b/HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs
index 3a84846..82d5d2b 100644
--- a/HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs
+++ b/HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs
@@ -76,10 +76,23 @@
                         break;
                     case SPK.ElectricTV:
                     case SPK.TvIr:
+                    case SPK.TvXmIr:
                         var tvView = new TVPage(function);
                         MainPage.BasePageView.AddChidren(tvView);
                         tvView.LoadPage(btnCollectionIcon, btnName, btnFromFloor);
                         MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                        break;
+                    case SPK.PjtIr://鎶曞奖浠�
+                        var pjtView = new PjtPage(function);
+                        MainPage.BasePageView.AddChidren(pjtView);
+                        pjtView.LoadPage(btnCollectionIcon, btnName, btnFromFloor);
+                        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                        break;
+                    case SPK.StbIr://鏈洪《鐩�
+                        var stbView = new StbPage(function);
+                        MainPage.BasePageView.AddChidren(stbView);
+                        stbView.LoadPage(btnCollectionIcon, btnName, btnFromFloor);
+                        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                         break;
                     case SPK.ElectricTuyaAirCleaner:
                         var airCleaner = new TuyaAirCleanerPage();
@@ -130,6 +143,11 @@
                         doorwindowPage.ShowColltionButton = false;
                         doorwindowPage.AddForm(function, btnCollectionIcon, btnName, btnFromFloor);
                         break;
+                    case SPK.SenesorMegahealth:
+                        var smPage = new SenesorMegahealthPage();
+                        smPage.ShowColltionButton = false;
+                        smPage.AddForm(function, btnCollectionIcon, btnName, btnFromFloor);
+                        break;
                     case SPK.ClothesHanger:
                         var clothesHangerpage = new ClothesHangerPage();
                         clothesHangerpage.AddForm(function, btnCollectionIcon, btnName, btnFromFloor);
diff --git a/HDL_ON/UI/UI0-Public/TopViewDiv.cs b/HDL_ON/UI/UI0-Public/TopViewDiv.cs
index 36b2834..0cacd40 100644
--- a/HDL_ON/UI/UI0-Public/TopViewDiv.cs
+++ b/HDL_ON/UI/UI0-Public/TopViewDiv.cs
@@ -98,12 +98,6 @@
             };
             contentView.AddChidren(btnBackIcon);
 
-            btnBack = new Button()
-            {
-                Width = Application.GetRealWidth(100),
-            };
-            contentView.AddChidren(btnBack);
-
             Button btnTilte = new Button()
             {
                 Gravity = Gravity.CenterHorizontal,
@@ -118,6 +112,12 @@
             contentView.AddChidren(btnTilte);
 
 
+            btnBack = new Button()
+            {
+                Width = Application.GetRealWidth(70),
+            };
+            contentView.AddChidren(btnBack);
+
             LoadEventList();
         }
         /// <summary>
diff --git a/HDL_ON/UI/UI0-Public/Widget/EmptyTipView.cs b/HDL_ON/UI/UI0-Public/Widget/EmptyTipView.cs
index c0ac00b..fd8cbcf 100644
--- a/HDL_ON/UI/UI0-Public/Widget/EmptyTipView.cs
+++ b/HDL_ON/UI/UI0-Public/Widget/EmptyTipView.cs
@@ -23,29 +23,33 @@
         /// <summary>
         /// 
         /// </summary>
-        public EmptyTipView(string tipMsg ="")
+        public EmptyTipView(string tipMsg ="",int btnTipNotY=0)
         {
             if(tipMsg == "")
             {
                 tipMsg = Language.StringByID(StringId.ContentIsEmpty);
             }
-            int tipHeight = Application.GetRealWidth(180);
+            int tipHeight = Application.GetRealWidth(180 + btnTipNotY);
 
-            this.Height = tipHeight + Application.GetRealHeight(17);
+            this.Height = tipHeight + Application.GetRealHeight(17 );
 
             BtnTipNot = new Button()
             {
                 Gravity = Gravity.CenterHorizontal,
-                Width = tipHeight,
-                Height = tipHeight,
+                Width = Application.GetRealWidth(180),
+                Height = Application.GetRealWidth(180),
                 UnSelectedImagePath = "TipNot.png",
             };
             this.AddChidren(BtnTipNot);
+            if(btnTipNotY!=0)
+            {
+                BtnTipNot.Y = Application.GetRealHeight(btnTipNotY);
+            }
 
             //绌虹┖濡備篃
             Button btnTipNotText = new Button()
             {
-                Y = tipHeight,
+                Y = tipHeight ,
                 Height = Application.GetRealHeight(17),
                 Text = tipMsg,
                 TextAlignment = TextAlignment.Center,
diff --git a/HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomTimeSelectControl.cs b/HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomTimeSelectControl.cs
index 40db4f7..924fa9d 100644
--- a/HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomTimeSelectControl.cs
+++ b/HDL_ON/UI/UI0-Stan/Controls/BottomControls/BottomTimeSelectControl.cs
@@ -7,7 +7,7 @@
 namespace HDL_ON.Stan
 {
     /// <summary>
-    /// 搴曢儴鏃堕棿閫夋嫨鎺т欢(鏃跺拰鍒�),涓嶉渶瑕佸姞鍒扮埗鎺т欢
+    /// 搴曢儴鏃堕棿閫夋嫨鎺т欢
     /// </summary>
     public class BottomTimeSelectControl : BottomDialogCommon
     {
@@ -17,24 +17,24 @@
         /// 缁撴潫浜嬩欢(0:鐐瑰嚮浜嗗彇娑�  1:鐐瑰嚮浜嗙‘瀹�,绗簩,涓夊弬鏁颁负鏃跺拰鍒�)
         /// </summary>
         public Action<int, int, int> FinishEvent = null;
-        /// <summary>
-        /// 灏忔椂鍙栧�艰寖鍥�
+        /// <summary>
+        /// 灏忔椂鍙栧�艰寖鍥�
         /// </summary>
         List<int> hRange = new List<int>();
-        /// <summary>
-        /// 鍒嗛挓鍙栧�艰寖鍥�
+        /// <summary>
+        /// 鍒嗛挓鍙栧�艰寖鍥�
         /// </summary>
-        List<int> mRange = new List<int>();
-        /// <summary>
-        /// 鏃堕棿鎺т欢
-        /// </summary>
-        UIPickerView pickerView;
-        //閫夋嫨鐨勬椂涓庡垎
-        int selectHour = 0;
-        int selectMinute = 0;
-        //XX鏃�
-        List<string> listHour;
-        //XX鍒�
+        List<int> mRange = new List<int>();
+        /// <summary>
+        /// 鏃堕棿鎺т欢
+        /// </summary>
+        UIPickerView pickerView;
+        //閫夋嫨鐨勬椂涓庡垎
+        int selectHour = 0;
+        int selectMinute = 0;
+        //XX鏃�
+        List<string> listHour ;
+        //XX鍒�
         List<string> listMinute;
 
 
@@ -43,16 +43,16 @@
         #region 鈻� 鍒濆鍖朹____________________________
 
         /// <summary>
-        /// 搴曢儴鏃堕棿閫夋嫨鎺т欢(鏃跺拰鍒�),涓嶉渶瑕佸姞鍒扮埗鎺т欢
+        /// 搴曢儴鏃堕棿閫夋嫨鎺т欢
         /// </summary>
         /// <param name="i_title">鏍囬</param>
         /// <param name="clickBackClose">鐐瑰嚮鑳屾櫙鏃�,鏄惁鍏抽棴寮圭獥</param>
         public BottomTimeSelectControl(string i_title = "", bool clickBackClose = true)
         {
             base.ClickBackClose = clickBackClose;
-            base.StrTitle = i_title;
-            base.RowCount = 5;
-
+            base.StrTitle = i_title;
+
+
             for (int i = 0; i <= 23; i++)
             {
                 hRange.Add(i);
@@ -61,23 +61,23 @@
             {
                 mRange.Add(i);
             }
-        }
-
-
+        }
+
+
         /// <summary>
-        /// 搴曢儴鏃堕棿閫夋嫨鎺т欢(鏃跺拰鍒�),涓嶉渶瑕佸姞鍒扮埗鎺т欢
+        /// 搴曢儴鏃堕棿閫夋嫨鎺т欢
         /// </summary>
         /// <param name="i_title">鏍囬</param>
         /// <param name="clickBackClose">鐐瑰嚮鑳屾櫙鏃�,鏄惁鍏抽棴寮圭獥</param>
-        public BottomTimeSelectControl(List<int> hoursRange, List<int> minuteRange, int rowCount, string i_title = "", bool clickBackClose = true)
+        public BottomTimeSelectControl(List<int> hoursRange,List<int> minuteRange ,int rowCount, string i_title = "", bool clickBackClose = true)
         {
             base.ClickBackClose = clickBackClose;
             base.StrTitle = i_title;
 
-            hRange = hoursRange;
-            mRange = minuteRange;
-
-            base.RowCount = rowCount;
+            hRange = hoursRange;
+            mRange = minuteRange;
+
+            base.RowCount = rowCount;
 
         }
 
@@ -92,15 +92,9 @@
             //宸茬粡鍒濆鍖�
             if (base.btnCancel != null) { return; }
 
-            this.selectHour = i_hour;
-            this.selectMinute = i_minute;
-
             //鍒濆鍖栧簳灞傛帶浠�
             var frameWhiteBack = base.InitBaseControl();
-            if (contentView != -1)
-            {
-                frameWhiteBack.Height = Application.GetRealHeight(contentView);
-            }
+            frameWhiteBack.Height = Application.GetRealHeight(contentView);
             //frameWhiteBack.Y = frameWhiteBack.Parent.Height - Application.GetRealHeight(297 + 20);
 
             //鍙栨秷
@@ -131,27 +125,27 @@
             //鏃堕棿鎺т欢
             pickerView = new UIPickerView();
             //鏃�
-            var strhour = HdlCommonLogic.Current.GetHourText();
+            var strhour = Language.StringByID(StringId.h);
             //鍒�
-            var strMinute = HdlCommonLogic.Current.GetMinuteText();
-            
-            if(!isHour)
-            {
-                strhour = Language.StringByID(StringId.m);
+            var strMinute = Language.StringByID(StringId.m);
+
+            if(!isHour)
+            {
+                strhour = Language.StringByID(StringId.m);
                 strMinute = Language.StringByID(StringId.s);
             }
 
             //XX鏃�
             listHour = new List<string>();// { "00" + strhour };
             //XX鍒�
-            listMinute = new List<string>();// { "00" + strMinute };
-            //for (int i = 1; i <= 23; i++)
-            foreach (var hItem in hRange)
+            listMinute = new List<string>();// { "00" + strMinute };
+            //for (int i = 1; i <= 23; i++)
+            foreach(var hItem in hRange)
             {
                 listHour.Add(hItem.ToString().PadLeft(2, '0') + strhour);
-            }
-            //for (int i = 1; i <= 59; i++)
-            foreach (var mItem in mRange)
+            }
+            //for (int i = 1; i <= 59; i++)
+            foreach (var mItem in mRange)
             {
                 listMinute.Add(mItem.ToString().PadLeft(2, '0') + strMinute);
             }
@@ -177,57 +171,32 @@
             };
         }
 
-        /// <summary>
-        /// 鐗规畩鐨勯泦鍚堥�夋嫨浜嬩欢锛屽噳闇告椂闂磋缃娇鐢�
+        /// <summary>
+        /// 鐗规畩鐨勯泦鍚堥�夋嫨浜嬩欢锛屽噳闇告椂闂磋缃娇鐢�
         /// </summary>
-        public void ChangePickerEvent()
-        {
+        public void ChangePickerEvent()
+        {
             pickerView.OnSelectChangeEvent = (value1, value2, value3) =>
-            {
-                if (value1 == 0 && value2 == 0)
-                {
-                    value2 = 1;
-                    pickerView.setCurrentItems(value1, value2, 0);
+            {
+                if (value1 == 0 && value2 == 0)
+                {
+                    value2 = 1;
+                    pickerView.setCurrentItems(value1, value2, 0);
+                }
+                else if (value1 == 4 && value2 == 1)
+                {
+                    value2 = 0;
+                    pickerView.setCurrentItems(value1, value2, 0);
+                }
+                //else
+                {
+                    //鏇存敼绱㈠紩
+                    selectHour = Convert.ToInt32(listHour[value1].Substring(0, 2));
+                    selectMinute = Convert.ToInt32(listMinute[value2].Substring(0, 2));
                 }
-                else if (value1 == 4 && value2 == 1)
-                {
-                    value2 = 0;
-                    pickerView.setCurrentItems(value1, value2, 0);
-                }
-                else
-                {
-                    //鏇存敼绱㈠紩
-                    selectHour = Convert.ToInt32(listHour[value1].Substring(0, 2));
-                    selectMinute = Convert.ToInt32(listMinute[value2].Substring(0, 2));
-                }
-            };
-        }
+            };
+        }
 
-        /// <summary>
-        /// 鐗规畩鐨勯泦鍚堥�夋嫨浜嬩欢锛屽満鏅椂闂磋缃娇鐢�
-        /// </summary>
-        public void ChangePickerEvent2()
-        {
-            pickerView.OnSelectChangeEvent = (value1, value2, value3) =>
-            {
-                if (value1 == 60 && value2 == 60)
-                {
-                    value2 = 0;
-                    pickerView.setCurrentItems(value1, value2, 0);
-                }
-                //else if (value1 == 4 && value2 == 1)
-                //{
-                //    value2 = 0;
-                //    pickerView.setCurrentItems(value1, value2, 0);
-                //}
-                //else
-                //{
-                //    //鏇存敼绱㈠紩
-                //    selectHour = Convert.ToInt32(listHour[value1].Substring(0, 2));
-                //    selectMinute = Convert.ToInt32(listMinute[value2].Substring(0, 2));
-                //}
-            };
-        }
         #endregion
 
         #region 鈻� 涓�鑸柟娉昣__________________________
diff --git a/HDL_ON/UI/UI0-Stan/Form/DeviceFunctionCardCommonForm.cs b/HDL_ON/UI/UI0-Stan/Form/DeviceFunctionCardCommonForm.cs
index ccceeed..3608632 100644
--- a/HDL_ON/UI/UI0-Stan/Form/DeviceFunctionCardCommonForm.cs
+++ b/HDL_ON/UI/UI0-Stan/Form/DeviceFunctionCardCommonForm.cs
@@ -145,8 +145,7 @@
             btnRoomName.Text = device.GetRoomListName();
             btnRoomName.Width = btnRoomName.GetRealWidthByText();
             FrameWhiteCentet1.AddChidren(btnRoomName);
-            //鎴愬憳娌℃湁鏀惰棌鍔熻兘
-            //if (DB_ResidenceData.Instance.CurrentRegion.isOtherShare == false && ShowColltionButton)
+            if (ShowColltionButton)
             {
                 var btnCollection = new IconViewControl(40);
                 btnCollection.X = Application.GetRealWidth(273);
diff --git a/HDL_ON/UI/UI1-Login/ForgetPasswordPage.cs b/HDL_ON/UI/UI1-Login/ForgetPasswordPage.cs
index 9dfb338..b63cf28 100644
--- a/HDL_ON/UI/UI1-Login/ForgetPasswordPage.cs
+++ b/HDL_ON/UI/UI1-Login/ForgetPasswordPage.cs
@@ -350,6 +350,7 @@
                 TextSize = CSS_FontSize.TextFontSize,
                 PlaceholderTextColor = CSS_Color.PromptingColor1,
                 PlaceholderText = Language.StringByID(StringId.PlsEntryVerificationCode),
+                IsNumberKeyboardType = true
             };
             verificationCodeView.AddChidren(etVerificationCode);
 
diff --git a/HDL_ON/UI/UI1-Login/LoginPage.cs b/HDL_ON/UI/UI1-Login/LoginPage.cs
index bf0e438..344424f 100644
--- a/HDL_ON/UI/UI1-Login/LoginPage.cs
+++ b/HDL_ON/UI/UI1-Login/LoginPage.cs
@@ -199,7 +199,8 @@
                 //return;
                 if (b)
                 {
-                    etAccount.Text = "13375012446";//娴嬭瘯鏈嶅姟鍣�
+                    etAccount.Text = "15626203746";//娴嬭瘯鏈嶅姟鍣�
+                    //etAccount.Text = "13375012446";//娴嬭瘯鏈嶅姟鍣�
                     //etAccount.Text = "1033326940@qq.com";
                     //etAccount.Text = "18022428438";//wjc
                     //etAccount.Text = "13602944661";//kx
@@ -215,7 +216,8 @@
                     //etAccount.Text = "BB01010101@evoyo.com";//鍙瀵硅
                     //etAccount.Text = "13168123446";
                     //etAccount.Text = "13676202754";//宸存灄鏈嶅姟鍣�
-                    etAccount.Text = "13602944661";//kx
+                    //etAccount.Text = "13602944661";//kx
+                    etAccount.Text = "551775569@qq.com";//wcf
                     //etAccount.Text = "18666455392";//13375012446//13602944661//tzy 18778381374
                     //etAccount.Text = "15971583093";// gs//tzy 274116637@qq.com//Sumant.Bhatia@havells.com 鍥藉鏈嶅姟鍣ㄦ祴璇�
                 }
diff --git a/HDL_ON/UI/UI1-Login/RegisterPage.cs b/HDL_ON/UI/UI1-Login/RegisterPage.cs
index 0885191..e6225f9 100644
--- a/HDL_ON/UI/UI1-Login/RegisterPage.cs
+++ b/HDL_ON/UI/UI1-Login/RegisterPage.cs
@@ -607,6 +607,7 @@
                 TextSize = CSS_FontSize.TextFontSize,
                 PlaceholderTextColor = CSS_Color.PromptingColor1,
                 PlaceholderText = Language.StringByID(StringId.PlsEntryVerificationCode),
+                IsNumberKeyboardType = true
             };
             verificationCodeView.AddChidren(etVerificationCode);
 
diff --git a/HDL_ON/UI/UI2/1-HomePage/HomePage.cs b/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
index 871b7a1..0d4f5f3 100644
--- a/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
+++ b/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
@@ -35,13 +35,21 @@
         /// </summary>
         FrameLayout environmentalView;
         /// <summary>
-        /// 褰撳墠娓╁害淇℃伅
+        /// 褰撳墠娓╁害淇℃伅-瀹ゅ
         /// </summary>
         TextButton btnTempValues;
         /// <summary>
-        /// 褰撳墠婀垮害淇℃伅
+        /// 褰撳墠婀垮害淇℃伅-瀹ゅ
         /// </summary>
         TextButton btnHumidityValues;
+        /// <summary>
+        /// 褰撳墠娓╁害淇℃伅-瀹ゅ唴
+        /// </summary>
+        TextButton btnIndoorTempValues;
+        /// <summary>
+        /// 褰撳墠婀垮害淇℃伅-瀹ゅ唴
+        /// </summary>
+        TextButton btnIndoorHumiValues;
         /// <summary>
         /// 褰撳墠pm2.5鐘舵��
         /// </summary>
@@ -184,9 +192,27 @@
                 };
                 topView.AddChidren(environmentalView);
                 #region 鐜鏁版嵁
+                var tempSensorList = FunctionList.List.GetEnvirSensorsList().FindAll((obj) => obj.spk == SPK.SensorTemperature);
+                var humiSensorList = FunctionList.List.GetEnvirSensorsList().FindAll((obj) => obj.spk == SPK.SensorHumidity);
+
+                var btnEnvirValuesTitle = new Button() {
+                    X = Application.GetRealWidth(12),
+                    Gravity = Gravity.CenterVertical,
+                    TextColor = CSS_Color.MainBackgroundColor,
+                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                    TextID = StringId.InOutdoor,
+                    TextAlignment = TextAlignment.CenterLeft,
+                };
+                if (tempSensorList.Count > 0 || humiSensorList.Count > 0)
+                {
+                    btnEnvirValuesTitle.Width = Application.GetRealWidth(8)+ btnEnvirValuesTitle.GetTextWidth();
+                }
+                environmentalView.AddChidren(btnEnvirValuesTitle);
+
                 Button btnTempIcon = new Button()
                 {
-                    X = Application.GetRealWidth(12),
+                    X = btnEnvirValuesTitle.Right,//+ Application.GetRealWidth(4),
+                    //X = Application.GetRealWidth(12),
                     Gravity = Gravity.CenterVertical,
                     Width = Application.GetMinRealAverage(16),
                     Height = Application.GetMinRealAverage(16),
@@ -197,18 +223,44 @@
                 btnTempValues = new TextButton()
                 {
                     X = btnTempIcon.Right + Application.GetRealWidth(4),
-                    Width = Application.GetRealWidth(30),
                     Gravity = Gravity.CenterVertical,
                     TextColor = CSS_Color.MainBackgroundColor,
                     TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                     Text = MainPage.cityInfo.temperature + "掳",
                     TextAlignment = TextAlignment.CenterLeft,
                 };
+                btnTempValues.Width = btnTempValues.GetTextWidth();
                 environmentalView.AddChidren(btnTempValues);
+
+                btnIndoorTempValues = new TextButton()
+                {
+                    X = btnTempValues.Right,
+                    Gravity = Gravity.CenterVertical,
+                    TextColor = CSS_Color.MainBackgroundColor,
+                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                    TextAlignment = TextAlignment.CenterLeft,
+                    Text = "/--掳",
+                };
+                if (tempSensorList.Count > 0)
+                {
+                    double tempTotalValues = 0;
+                    foreach (var temp in tempSensorList)
+                    {
+                        double tempValue = 0;
+                        double.TryParse(temp.GetAttrState(FunctionAttributeKey.Value), out tempValue);
+                        tempTotalValues += tempValue;
+                    }
+                    if (tempTotalValues > 0)
+                    {
+                        btnIndoorTempValues.Text = "/" + tempTotalValues + "掳";
+                    }
+                    btnIndoorTempValues.Width = btnIndoorTempValues.GetTextWidth();
+                }
+                environmentalView.AddChidren(btnIndoorTempValues);
 
                 Button btnHumidityIcon = new Button()
                 {
-                    X = btnTempValues.Right + Application.GetRealWidth(2),
+                    X = btnIndoorTempValues.Right + Application.GetRealWidth(8),
                     Gravity = Gravity.CenterVertical,
                     Width = Application.GetMinRealAverage(16),
                     Height = Application.GetMinRealAverage(16),
@@ -219,18 +271,44 @@
                 btnHumidityValues = new TextButton()
                 {
                     X = btnHumidityIcon.Right + Application.GetRealWidth(4),
-                    Width = Application.GetRealWidth(30),
                     Gravity = Gravity.CenterVertical,
                     TextColor = CSS_Color.MainBackgroundColor,
                     TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                     Text = MainPage.cityInfo.humidity + "%",
                     TextAlignment = TextAlignment.CenterLeft,
                 };
+                btnHumidityValues.Width = btnHumidityValues.GetTextWidth();
                 environmentalView.AddChidren(btnHumidityValues);
+
+                btnIndoorHumiValues = new TextButton()
+                {
+                    X = btnHumidityValues.Right,
+                    Gravity = Gravity.CenterVertical,
+                    TextColor = CSS_Color.MainBackgroundColor,
+                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                    TextAlignment = TextAlignment.CenterLeft,
+                    Text = "/--%",
+                };
+                if (tempSensorList.Count > 0)
+                {
+                    double humiTotalValues = 0;
+                    foreach (var humi in humiSensorList)
+                    {
+                        double humiValue = 0;
+                        double.TryParse(humi.GetAttrState(FunctionAttributeKey.Value), out humiValue);
+                        humiTotalValues += humiValue;
+                    }
+                    if (humiTotalValues > 0)
+                    {
+                        btnIndoorHumiValues.Text = "/" + humiTotalValues + "%";
+                    }
+                    btnIndoorHumiValues.Width = btnIndoorHumiValues.GetTextWidth();
+                }
+                environmentalView.AddChidren(btnIndoorHumiValues);
 
                 Button btnPm25Icon = new Button()
                 {
-                    X = btnHumidityValues.Right + Application.GetRealWidth(2),
+                    X = btnIndoorHumiValues.Right + Application.GetRealWidth(4),
                     Gravity = Gravity.CenterVertical,
                     Width = Application.GetMinRealAverage(16),
                     Height = Application.GetMinRealAverage(16),
@@ -241,13 +319,13 @@
                 btnPm25Values = new TextButton()
                 {
                     X = btnPm25Icon.Right + Application.GetRealWidth(4),
-                    Width = Application.GetRealWidth(130),
                     Gravity = Gravity.CenterVertical,
                     TextColor = CSS_Color.MainBackgroundColor,
                     TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                     Text = MainPage.cityInfo.pm25,
                     TextAlignment = TextAlignment.CenterLeft,
                 };
+                btnPm25Values.Width = btnPm25Values.GetTextWidth();
                 environmentalView.AddChidren(btnPm25Values);
                 #endregion
 
@@ -383,7 +461,86 @@
 
 
 #if DEBUG
-            //FunctionList.List.Functions.Add(new Function() { spk = SPK.ClothesHanger, name = "娴嬭瘯鍑夐湼", attributes = new List<FunctionAttributes> { new FunctionAttributes { key = FunctionAttributeKey.HotDry } ,new FunctionAttributes { key = FunctionAttributeKey.HotDryTime } ,new FunctionAttributes { key = FunctionAttributeKey.HotDryTimeLeft } } });
+            FunctionList.List.Functions.Add(new Function() { spk = SPK.PjtIr, name = "娴嬭瘯鎶曞奖浠�",
+                                        attributes = new List<FunctionAttributes>() {
+                                            new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
+                                            new FunctionAttributes(){ key = "computer",value = new List<string>(){"鐢佃剳" } },
+                                            new FunctionAttributes(){ key = "video",value = new List<string>(){"瑙嗛" } },
+                                            new FunctionAttributes(){ key = "source",value = new List<string>(){"淇″彿婧�" } },
+                                            new FunctionAttributes(){ key = "zoom+",value = new List<string>(){"鍙樼劍+" } },
+                                            new FunctionAttributes(){ key = "zoom-",value = new List<string>(){"鍙樼劍-" } },
+                                            new FunctionAttributes(){ key = "page+",value = new List<string>(){"鐢婚潰+" } },
+                                            new FunctionAttributes(){ key = "page-",value = new List<string>(){"鐢婚潰-" } },
+                                            new FunctionAttributes(){ key = "menu",value = new List<string>(){"鑿滃崟" } },
+                                            new FunctionAttributes(){ key = "ok",value = new List<string>(){"纭" } },
+                                            new FunctionAttributes(){ key = "up",value = new List<string>(){"涓�" } },
+                                            new FunctionAttributes(){ key = "left",value = new List<string>(){"宸�" } },
+                                            new FunctionAttributes(){ key = "right",value = new List<string>(){"鍙�" } },
+                                            new FunctionAttributes(){ key = "down",value = new List<string>(){"涓�" } },
+                                            new FunctionAttributes(){ key = "exit",value = new List<string>(){"閫�鍑�" } },
+                                            new FunctionAttributes(){ key = "volume+",value = new List<string>(){"闊抽噺+" } },
+                                            new FunctionAttributes(){ key = "volume-",value = new List<string>(){"闊抽噺-" } },
+                                            new FunctionAttributes(){ key = "mute",value = new List<string>(){"闈欓煶" } },
+                                            new FunctionAttributes(){ key = "auto",value = new List<string>(){"鑷姩" } },
+                                            new FunctionAttributes(){ key = "pause",value = new List<string>(){"鏆傚仠" } },
+                                        }
+            });
+
+            FunctionList.List.Functions.Add(new Function()
+            {
+                spk = SPK.StbIr,
+                name = "娴嬭瘯鏈洪《鐩�",
+                attributes = new List<FunctionAttributes>() {
+                                            new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
+                                            new FunctionAttributes(){ key = "computer",value = new List<string>(){"鐢佃剳" } },
+                                            new FunctionAttributes(){ key = "video",value = new List<string>(){"瑙嗛" } },
+                                            new FunctionAttributes(){ key = "source",value = new List<string>(){"淇″彿婧�" } },
+                                            new FunctionAttributes(){ key = "zoom+",value = new List<string>(){"鍙樼劍+" } },
+                                            new FunctionAttributes(){ key = "zoom-",value = new List<string>(){"鍙樼劍-" } },
+                                            new FunctionAttributes(){ key = "page+",value = new List<string>(){"鐢婚潰+" } },
+                                            new FunctionAttributes(){ key = "page-",value = new List<string>(){"鐢婚潰-" } },
+                                            new FunctionAttributes(){ key = "menu",value = new List<string>(){"鑿滃崟" } },
+                                            new FunctionAttributes(){ key = "ok",value = new List<string>(){"纭" } },
+                                            new FunctionAttributes(){ key = "up",value = new List<string>(){"涓�" } },
+                                            new FunctionAttributes(){ key = "left",value = new List<string>(){"宸�" } },
+                                            new FunctionAttributes(){ key = "right",value = new List<string>(){"鍙�" } },
+                                            new FunctionAttributes(){ key = "down",value = new List<string>(){"涓�" } },
+                                            new FunctionAttributes(){ key = "exit",value = new List<string>(){"閫�鍑�" } },
+                                            new FunctionAttributes(){ key = "volume+",value = new List<string>(){"闊抽噺+" } },
+                                            new FunctionAttributes(){ key = "volume-",value = new List<string>(){"闊抽噺-" } },
+                                            new FunctionAttributes(){ key = "mute",value = new List<string>(){"闈欓煶" } },
+                                            new FunctionAttributes(){ key = "auto",value = new List<string>(){"鑷姩" } },
+                                            new FunctionAttributes(){ key = "pause",value = new List<string>(){"鏆傚仠" } },
+                                        }
+            });
+
+            FunctionList.List.Functions.Add(new Function()
+            {
+                spk = SPK.TvIr,
+                name = "娴嬭瘯鐢佃",
+                attributes = new List<FunctionAttributes>() {
+                                            new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
+                                            new FunctionAttributes(){ key = "computer",value = new List<string>(){"鐢佃剳" } },
+                                            new FunctionAttributes(){ key = "video",value = new List<string>(){"瑙嗛" } },
+                                            new FunctionAttributes(){ key = "source",value = new List<string>(){"淇″彿婧�" } },
+                                            new FunctionAttributes(){ key = "zoom+",value = new List<string>(){"鍙樼劍+" } },
+                                            new FunctionAttributes(){ key = "zoom-",value = new List<string>(){"鍙樼劍-" } },
+                                            new FunctionAttributes(){ key = "page+",value = new List<string>(){"鐢婚潰+" } },
+                                            new FunctionAttributes(){ key = "page-",value = new List<string>(){"鐢婚潰-" } },
+                                            new FunctionAttributes(){ key = "menu",value = new List<string>(){"鑿滃崟" } },
+                                            new FunctionAttributes(){ key = "ok",value = new List<string>(){"纭" } },
+                                            new FunctionAttributes(){ key = "up",value = new List<string>(){"涓�" } },
+                                            new FunctionAttributes(){ key = "left",value = new List<string>(){"宸�" } },
+                                            new FunctionAttributes(){ key = "right",value = new List<string>(){"鍙�" } },
+                                            new FunctionAttributes(){ key = "down",value = new List<string>(){"涓�" } },
+                                            new FunctionAttributes(){ key = "exit",value = new List<string>(){"閫�鍑�" } },
+                                            new FunctionAttributes(){ key = "volume+",value = new List<string>(){"闊抽噺+" } },
+                                            new FunctionAttributes(){ key = "volume-",value = new List<string>(){"闊抽噺-" } },
+                                            new FunctionAttributes(){ key = "mute",value = new List<string>(){"闈欓煶" } },
+                                            new FunctionAttributes(){ key = "auto",value = new List<string>(){"鑷姩" } },
+                                            new FunctionAttributes(){ key = "pause",value = new List<string>(){"鏆傚仠" } },
+                                        }
+            });
 #endif
 
         }
@@ -683,6 +840,11 @@
                 };
                 view.AddChidren(btnIcon);
 
+
+                btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_blue.png";
+                btnIcon.SelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_white.png";
+
+
                 Button btnName;
                 btnName = new Button()
                 {
@@ -784,14 +946,17 @@
                     LoadEvent_ControlCurtain(function, btnCurtainClose, btnCurtainOpen);
                 }
 
-                else if (function.spk == SPK.ElectricTV || function.spk == SPK.TvIr)
+                else if (function.spk == SPK.ElectricTV || function.spk == SPK.TvIr || function.spk == SPK.TvXmIr
+                    || function.spk == SPK.StbIr || function.spk == SPK.PjtIr)
                 {
-                    btnIcon.UnSelectedImagePath = "FunctionIcon/Electrical/TVIcon.png";
+                    //btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_blue.png";
+                    //btnIcon.SelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_white.png";
+
                     Button btnPower;
                     btnPower = new Button()
                     {
                         X = Application.GetRealWidth(131),
-                        Y = Application.GetRealHeight(70),
+                        Y = Application.GetRealHeight(80),
                         Width = Application.GetRealWidth(32),
                         Height = Application.GetRealWidth(32),
                         UnSelectedImagePath = "Public/PowerClose.png",
@@ -971,7 +1136,7 @@
                 btnIcon.MouseUpEventHandler = skipControlPageEvent;
                 btnState.MouseUpEventHandler = skipControlPageEvent;
                 //鐢佃涓嶉渶瑕佹洿鏂扮姸鎬�
-                if(function.spk!= SPK.ElectricTV)
+                if(function.spk!= SPK.ElectricTV && function.spk != SPK.StbIr && function.spk != SPK.PjtIr)
                 {
                     UpdataFunctionStates(function);
                 }
diff --git a/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs b/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs
index f4596b8..1883317 100644
--- a/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs
+++ b/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs
@@ -21,6 +21,59 @@
                 bodyView.btnPm25Values.Text = MainPage.cityInfo.pm25 == null ? "--" : MainPage.cityInfo.pm25;
             }
         }
+
+        /// <summary>
+        /// 鏇存柊瀹ゅ唴浼犳劅鍣ㄦ暟鎹�-婀垮害
+        /// </summary>
+        public static void LoadEvent_RefreshEnvirIndoorHumi()
+        {
+            Application.RunOnMainThread(() =>
+            {
+                if (bodyView != null)
+                {
+                    var humiSensorList = FunctionList.List.GetEnvirSensorsList().FindAll((obj) => obj.spk == SPK.SensorHumidity);
+                    double humiTotalValues = 0;
+                    foreach (var temp in humiSensorList)
+                    {
+                        double humiValue = 0;
+                        double.TryParse(temp.GetAttrState(FunctionAttributeKey.Value), out humiValue);
+                        humiTotalValues += humiValue;
+                    }
+                    if (humiTotalValues > 0)
+                    {
+                        bodyView.btnIndoorHumiValues.Text = "/" + humiTotalValues + "%";
+                    }
+                    bodyView.btnIndoorHumiValues.Width = bodyView.btnIndoorHumiValues.GetTextWidth();
+                }
+            });
+        }
+
+        /// <summary>
+        /// 鏇存柊瀹ゅ唴浼犳劅鍣ㄦ暟鎹�-鏅氱偣
+        /// </summary>
+        public static void LoadEvent_RefreshEnvirIndoorTemp()
+        { 
+            Application.RunOnMainThread(() =>
+            {
+                if (bodyView != null)
+                {
+                    var tempSensorList = FunctionList.List.GetEnvirSensorsList().FindAll((obj) => obj.spk == SPK.SensorTemperature);
+                    double tempTotalValues = 0;
+                    foreach (var temp in tempSensorList)
+                    {
+                        double tempValue = 0;
+                        double.TryParse(temp.GetAttrState(FunctionAttributeKey.Value), out tempValue);
+                        tempTotalValues += tempValue;
+                    }
+                    if (tempTotalValues > 0)
+                    {
+                        bodyView.btnIndoorTempValues.Text = "/" + tempTotalValues + "掳";
+                    }
+                    bodyView.btnIndoorTempValues.Width = bodyView.btnIndoorTempValues.GetTextWidth();
+                }
+            });
+        }
+
         /// <summary>
         /// 鏇存柊鍔熻兘鍒楄〃涓婚〉
         /// </summary>
diff --git a/HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs b/HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs
index 544fcaa..2f3552a 100644
--- a/HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs
+++ b/HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs
@@ -475,10 +475,9 @@
                         break;
                     case ShowFunction.EnergyMonitoring:
                         #region 鑳芥簮
-                        functionCount = FunctionList.List.GetElectricals().Count;
-                        functionOnCount = FunctionList.List.GetElectricals().FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count;
+                        functionCount = FunctionList.List.GetEnergyList().Count;
+                        functionOnCount = FunctionList.List.GetEnergyList().FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count;
                         #endregion
-                        //functionCount = 1;
                         break;
                     case ShowFunction.Environmental:
                         #region 鐜鏁版嵁
@@ -563,11 +562,12 @@
                 {
                     X = Application.GetRealWidth(16),
                     Y = Application.GetRealHeight(14),
-                    Width = Application.GetRealWidth(120),
+                    Width = Application.GetRealWidth(140),
                     Height = Application.GetRealHeight(24),
                     TextColor = CSS_Color.FirstLevelTitleColor,
                     TextSize = CSS_FontSize.TextFontSize,
                     TextAlignment = TextAlignment.CenterLeft,
+                    IsMoreLines = true,
                 };
                 functionView.AddChidren(btnName);
 
diff --git a/HDL_ON/UI/UI2/2-Classification/FunctionControlZoneBLL.cs b/HDL_ON/UI/UI2/2-Classification/FunctionControlZoneBLL.cs
index 4791f34..6f234d8 100644
--- a/HDL_ON/UI/UI2/2-Classification/FunctionControlZoneBLL.cs
+++ b/HDL_ON/UI/UI2/2-Classification/FunctionControlZoneBLL.cs
@@ -81,7 +81,7 @@
             {
                 btnSwitch.IsSelected = !btnSwitch.IsSelected;
 
-                if(function.spk == SPK.IrLearn || function.spk == SPK.TvIr)
+                if(function.spk == SPK.IrLearn || function.spk == SPK.TvIr || function.spk == SPK.TvXmIr)
                 {
                     new System.Threading.Thread(() => {
                         System.Threading.Thread.Sleep(2000);
diff --git a/HDL_ON/UI/UI2/2-Classification/RoomPage.cs b/HDL_ON/UI/UI2/2-Classification/RoomPage.cs
index 64eaf63..9b05c24 100644
--- a/HDL_ON/UI/UI2/2-Classification/RoomPage.cs
+++ b/HDL_ON/UI/UI2/2-Classification/RoomPage.cs
@@ -77,7 +77,7 @@
 
             foreach (var function in room.GetRoomFunctions(false))
             {
-                if (function.Spk_Prefix == FunctionCategory.Sensor)
+                if (function.Spk_Prefix == FunctionCategory.Sensor || function.spk == SPK.ElectricEnergy)
                 {
                     continue;
                 }
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/AddInputType.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/AddInputType.cs
index 41b3be7..3f835d8 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/AddInputType.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/AddInputType.cs
@@ -1,4 +1,5 @@
 锘縰sing System;
+using System.Collections.Generic;
 using Shared;
 namespace HDL_ON.UI.UI2.Intelligence.Automation
 {
@@ -27,7 +28,7 @@
                 BackgroundColor = CSS.CSS_Color.viewMiddle,
             };
             this.AddChidren(viewLayout);
-            #region 鏃堕棿  鍔熻兘
+            #region 鏃堕棿  鍔熻兘 瀹ゅ鍙樺寲
             //鏃堕棿
             LogicView.SelectTypeView timeView = new LogicView.SelectTypeView();
             timeView.btnText.TextID = StringId.time;
@@ -58,8 +59,8 @@
             {
                 viewLayout.AddChidren(shiwaiView.FLayoutView());
             }
+           
             #endregion
-
 
             #region  鎵�鏈夌偣鍑讳簨浠�
             //鏃堕棿
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/AddTarget.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/AddTarget.cs
index d3bb907..d185e19 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/AddTarget.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/AddTarget.cs
@@ -46,7 +46,7 @@
             LogicView.SelectTypeView delayView = new LogicView.SelectTypeView();
             delayView.frameLayout.Y = sceneView.frameLayout.Bottom;
             delayView.btnText.TextID = StringId.delayLogic;
-            delayView.btnIcon.UnSelectedImagePath = "LogicIcon/delayed.png";
+            delayView.btnIcon.UnSelectedImagePath = "LogicIcon/time.png";
             //viewLayout.AddChidren(delayView.FLayoutView());
             #endregion
 
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs
index 47f2d15..5e24b64 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs
@@ -175,6 +175,21 @@
                         }
                     }
                     break;
+                case SPK.SenesorMegahealth:
+                    {
+                        LogicView.FunTypeView view = new LogicView.FunTypeView();
+                        view.btnText.TextID = StringId.mubiaozhuangtai ;//鐩爣鐘舵��
+                        fLayout.AddChidren(view.FLayoutView());
+                        view.btnClick.MouseUpEventHandler += (sender, e) =>
+                        {
+                            DeviceView(device, view.btnState, StringId.wuren, StringId.diedao);
+                        };
+                        if (edit)
+                        {
+                            GetEditState(device, index, view.btnState, null, null, null);
+                        }
+                    }
+                    break;
 
             }
             #region  淇濆瓨
@@ -268,6 +283,11 @@
                             keyVlaue = "status";
                         }
                         break;
+                    case SPK.SenesorMegahealth:
+                        {
+                            keyVlaue = "action_state";
+                        }
+                        break;
 
                 }
                 switch (intValue)
@@ -294,12 +314,21 @@
                             value = "off";
                         }
                         break;
-                    case StringId.youren: {
+                    case StringId.youren:
+                        {
                             value = "true";
                         }
                         break;
-                    case StringId.wuren: {
-                            value = "false";
+                    case StringId.wuren:
+                        {
+                            if (device.spk == SPK.SenesorMegahealth)
+                            {
+                                value = "uninhabited";
+                            }
+                            else
+                            {
+                                value = "false";
+                            }
                         }
                         break;
                     case StringId.kaiqi:
@@ -312,15 +341,20 @@
                             value = "close";
                         }
                         break;
-                    case StringId.zaixian: {
+                    case StringId.zaixian:
+                        {
                             keyVlaue = "dismantle";
                             value = "true";
-                        };break;
+                        }; break;
                     case StringId.buzaixian:
                         {
                             keyVlaue = "dismantle";
                             value = "false";
                         }; break;
+                    case StringId.diedao:
+                        {
+                            value = "fall";
+                        }; break;
                 }
                 //鏄剧ず鏂囨湰
                 button.TextID = intValue;
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs
index 0dede77..c888bc1 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs
@@ -297,6 +297,22 @@
                                         inputView.btnState.Text = str;
                                     }
                                     break;
+                                case SPK.SenesorMegahealth:
+                                    {
+                                        foreach (var dic in dicList)
+                                        {
+                                            string value = dic["value"];
+                                            if (value == "fall")
+                                            {
+                                                inputView.btnState.Text = Language.StringByID(StringId.diedao);
+                                            }
+                                            else
+                                            {
+                                                inputView.btnState.Text = Language.StringByID(StringId.wuren);
+                                            }
+                                        }
+                                    }
+                                    break;
 
                             }
                         }
@@ -926,7 +942,7 @@
                         break;
                     case "3":
                         {
-                            targetView.btnIcon.UnSelectedImagePath = "LogicIcon/delayed.png";
+                            targetView.btnIcon.UnSelectedImagePath = "LogicIcon/time.png";
                             foreach (var dic in dicList)
                             {
                                 string value = dic["value"];
@@ -1371,6 +1387,22 @@
                         }
                     }
                     break;
+                case SPK.SenesorMegahealth:
+                    {
+                        foreach (var dic in dicList)
+                        {
+                            string value = dic["value"];
+                            if (value == "fall")
+                            {
+                                button1.Text = Language.StringByID(StringId.diedao);
+                            }
+                            else
+                            {
+                                button1.Text = Language.StringByID(StringId.wuren);
+                            }
+                        }
+                    }
+                    break;
             }
         }
         /// <summary>
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs
index 461b095..d40c649 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs
@@ -308,6 +308,7 @@
                 case SPK.SensorPir:
                 case SPK.SensorDoorWindow:
                 case SPK.SensoruUtrasonic:
+                case SPK.SenesorMegahealth:
                     {
                         strPath = "LogicIcon/sensor.png";
                     }
@@ -325,13 +326,21 @@
         {
             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);
+            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);
+            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));
@@ -357,6 +366,7 @@
             || device.spk == SPK.SensorPir
             || device.spk == SPK.SensorDoorWindow
             || device.spk == SPK.SensoruUtrasonic
+            || device.spk == SPK.SenesorMegahealth
             );
             if (sensor != null)
             {
@@ -406,7 +416,8 @@
                 functionTypeList.Add(SPK.SensorPir);
                 functionTypeList.Add(SPK.SensorDoorWindow);
                 functionTypeList.Add(SPK.SensoruUtrasonic);
-              
+                functionTypeList.Add(SPK.SenesorMegahealth);
+
             }
             return functionTypeList;
 
@@ -441,6 +452,7 @@
                         deviceTypeList.Add(SPK.SensorPir);
                         deviceTypeList.Add(SPK.SensorDoorWindow);
                         deviceTypeList.Add(SPK.SensoruUtrasonic);
+                        deviceTypeList.Add(SPK.SenesorMegahealth);
                     }
                     break;
                 case target_if:
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/LogicTypeTitleView.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/LogicTypeTitleView.cs
index 6a25605..8eea8c9 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/LogicTypeTitleView.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/LogicTypeTitleView.cs
@@ -28,7 +28,7 @@
             //Y = Application.GetRealHeight(12),
             X = Application.GetRealWidth(12),
             Gravity = Gravity.CenterVertical,
-            IsMoreLines = true,
+           // IsMoreLines = true,
         };
         /// <summary>
         /// 鍥炬爣
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/TimeView.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/TimeView.cs
index e199ffc..a36dc65 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/TimeView.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/TimeView.cs
@@ -203,7 +203,7 @@
         {
             //鍒濆鍖栧垪琛�
             var hList = new List<string>();
-            for (int i = 0; i < 23; i++)
+            for (int i = 0; i < 24; i++)
             {
                 if (i < 10)
                 {
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/MainView.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/MainView.cs
index a1d1ecd..ae546df 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/MainView.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/MainView.cs
@@ -279,7 +279,6 @@
                     var jay = jArray[a];
                     //鏁版嵁杩斿簭鍒楀寲涓篖ogic瀵硅薄
                     var str = Newtonsoft.Json.JsonConvert.SerializeObject(jay);
-                    Console.WriteLine("鑾峰彇閫昏緫==="+str);
                     var logic = Newtonsoft.Json.JsonConvert.DeserializeObject<Logic>(str);
                     if (logic != null)
                     {
@@ -288,38 +287,39 @@
                         if (if_logic == null)
                         {
 
-                            //Logic newlogic = new Logic();
-                            //newlogic.name = logic.name;
-                            //newlogic.userLogicId = logic.userLogicId;
-                            //newlogic.sid = logic.sid;
-                            //newlogic.relation = logic.relation;
-                            //newlogic.enable = logic.enable;
-                            //newlogic.cycle = logic.cycle;
-                            //for (int i = 0; i < logic.input.Count; i++)
-                            //{
-                            //    if (logic.input[i] == null || string.IsNullOrEmpty(logic.input[i].condition_type))
-                            //    {
-                            //        //闃叉璋冭瘯杞欢涔变紶涓滆タ涓婃潵;
-                            //        //闃叉鏈夌┖瀵硅薄锛�
-                            //        //姝e父鎯呭喌涓嬩笉浼氬嚭鐜扮殑鐜拌薄锛�
-                            //        continue;
-                            //    }
-                            //    newlogic.input.Add(logic.input[i]);
-                            //}
-                            //for (int i = 0; i < logic.output.Count; i++)
-                            //{
-                            //    if (logic.output[i] == null || string.IsNullOrEmpty(logic.output[i].target_type))
-                            //    {
-                            //        //闃叉璋冭瘯杞欢涔变紶涓滆タ涓婃潵;
-                            //        //闃叉鏈夌┖瀵硅薄锛�
-                            //        //姝e父鎯呭喌涓嬩笉浼氳鐜拌薄锛�
-                            //        continue;
-                            //    }
-                            //    newlogic.output.Add(logic.output[i]);
-                            //}
-                        
+                            Logic newlogic = new Logic();
+                            newlogic.name = logic.name;
+                            newlogic.userLogicId = logic.userLogicId;
+                            newlogic.sid = logic.sid;
+                            newlogic.relation = logic.relation;
+                            newlogic.enable = logic.enable;
+                            newlogic.cycle = logic.cycle;
+                            for (int i = 0; i < logic.input.Count; i++)
+                            {
+                                if (logic.input[i] == null || string.IsNullOrEmpty(logic.input[i].condition_type))
+                                {
+                                    //闃叉璋冭瘯杞欢涔变紶涓滆タ涓婃潵;
+                                    //闃叉鏈夌┖瀵硅薄锛�
+                                    //姝e父鎯呭喌涓嬩笉浼氬嚭鐜扮殑鐜拌薄锛�
+                                    continue;
+                                }
+                                newlogic.input.Add(logic.input[i]);
+                            }
+                            for (int i = 0; i < logic.output.Count; i++)
+                            {
+                                if (logic.output[i] == null || string.IsNullOrEmpty(logic.output[i].target_type))
+                                {
+                                    //闃叉璋冭瘯杞欢涔变紶涓滆タ涓婃潵;
+                                    //闃叉鏈夌┖瀵硅薄锛�
+                                    //姝e父鎯呭喌涓嬩笉浼氳鐜拌薄锛�
+                                    continue;
+                                }
+                                newlogic.output.Add(logic.output[i]);
+                            }
+                            newlogic.noticeConfig = logic.noticeConfig;
+                            newlogic.pushConfigs = logic.pushConfigs;
                             //娣诲姞閫昏緫
-                            Logic.LogicList.Add(logic);
+                            Logic.LogicList.Add(newlogic);
                         }
                     }
 
@@ -511,7 +511,7 @@
             }
         }
         /// <summary>
-        /// 鍒ゆ柇缃戝叧绫诲瀷
+        /// 鍒ゆ柇缃戝叧绫诲瀷(0:bus缃戝叧锛�1:A鍗忚缃戝叧)
         /// </summary>
         /// <returns></returns>
         public static bool IsGatewayType
@@ -522,11 +522,7 @@
                 {
                     return true;
                 }
-                else
-                {
-                    return false;
-
-                }
+                return false;
             }
         }
     }
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs
index 65ad0e0..acc205b 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/Send.cs
@@ -164,14 +164,13 @@
                 logicIfon.Add("pushConfigs", pushConfigsArray);
                 logicjArray.Add(logicIfon);
                 var jObject = new JObject { { "homeId", LogicMethod.HomeId }, { "logics", logicjArray } };
-                responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_Add);
+                responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_Add,5);
                 //濡傛灉鏄痶oken杩囨湡鍒欏埛鏂皌oken
                 if (responsePackNew.Code == StateCode.TOKEN_EXPIRED)
                 {
                     RefreshToken();
                     AddLogic(logic);
                 }
-                Console.WriteLine("娣诲姞閫昏緫===" + logicjArray);
             }
             catch (Exception e)
             {
@@ -275,7 +274,7 @@
 
                 logicjArray.Add(logicIfon);
                 var jObject = new JObject { { "homeId", LogicMethod.HomeId }, { "logics", logicjArray } };
-                responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_Update);
+                responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Logic_Update,5);
                 //濡傛灉鏄痶oken杩囨湡鍒欏埛鏂皌oken
                 if (responsePackNew.Code == StateCode.TOKEN_EXPIRED)
                 {
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/Weather.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/Weather.cs
index e11c983..c1fc7aa 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/Weather.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/Weather.cs
@@ -45,7 +45,6 @@
             weatherView.btnLine.Width = Application.GetRealWidth(375 - 16 - 16);
             weatherView.btnText.TextID = StringId.tianqibianhua;
             viewLayout.AddChidren(weatherView.FLayoutView());
-
             //绌烘皵璐ㄩ噺
             LogicView.SelectTypeView kongqiViewk = new LogicView.SelectTypeView(); 
             kongqiViewk.frameLayout.Y = weatherView.frameLayout.Bottom;
@@ -56,7 +55,6 @@
             kongqiViewk.btnText.TextID = StringId.kongqizhiliang;
             viewLayout.AddChidren(kongqiViewk.FLayoutView());
             #endregion
-
             #region  鎵�鏈夌偣鍑讳簨浠�
             //瀹ゅ娓┿�佹箍搴︺�丳M2.5鍙樺寲
             airqualityView.btnClick.MouseUpEventHandler += (sen, e) => {
diff --git a/HDL_ON/UI/UI2/3-Intelligence/IntelligencePage.cs b/HDL_ON/UI/UI2/3-Intelligence/IntelligencePage.cs
index b6247cd..d647195 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/IntelligencePage.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/IntelligencePage.cs
@@ -412,12 +412,12 @@
                     SelectedImagePath = "Collection/CollectionIcon.png",
                     IsSelected = scene.collect,
                 };
-                //view.AddChidren(btnCollection);
+                view.AddChidren(btnCollection);
                 //2020-12-16 濡傛灉鏄垚鍛橀殣钘忔敹钘忓姛鑳�
-                if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
-                {
-                    view.AddChidren(btnCollection);
-                }
+                //if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
+                //{
+                //    view.AddChidren(btnCollection);
+                //}
                 btnCollection.MouseUpEventHandler = (sender, e) => {
                     scene.collect = btnCollection.IsSelected = !btnCollection.IsSelected;
                     scene.CollectScene();
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection1Page.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/MiniRemoteControl/AddMiniRemoteControlDirection1Page.cs
similarity index 100%
rename from HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection1Page.cs
rename to HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/MiniRemoteControl/AddMiniRemoteControlDirection1Page.cs
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection2Page.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/MiniRemoteControl/AddMiniRemoteControlDirection2Page.cs
similarity index 100%
rename from HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection2Page.cs
rename to HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/MiniRemoteControl/AddMiniRemoteControlDirection2Page.cs
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection3Page.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/MiniRemoteControl/AddMiniRemoteControlDirection3Page.cs
similarity index 100%
rename from HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection3Page.cs
rename to HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/MiniRemoteControl/AddMiniRemoteControlDirection3Page.cs
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection4Page.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/MiniRemoteControl/AddMiniRemoteControlDirection4Page.cs
similarity index 100%
rename from HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddMiniRemoteControlDirection4Page.cs
rename to HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/MiniRemoteControl/AddMiniRemoteControlDirection4Page.cs
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddThirdPartyDeviceMenuListPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/MiniRemoteControl/AddThirdPartyDeviceMenuListPage.cs
similarity index 100%
rename from HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/AddThirdPartyDeviceMenuListPage.cs
rename to HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/MiniRemoteControl/AddThirdPartyDeviceMenuListPage.cs
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorMegahealth/AddSenesorMegahealthDirection1Page.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorMegahealth/AddSenesorMegahealthDirection1Page.cs
new file mode 100644
index 0000000..ed1e894
--- /dev/null
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorMegahealth/AddSenesorMegahealthDirection1Page.cs
@@ -0,0 +1,187 @@
+锘縰sing HDL_ON.DAL.Server;
+using HDL_ON.Entity;
+using HDL_ON.Stan;
+using Shared;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace HDL_ON.UI
+{
+    /// <summary>
+    /// 娣诲姞姣背娉㈡楠�1鐣岄潰
+    /// </summary>
+    public class AddSenesorMegahealthDirection1Page : EditorCommonForm
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 娣诲姞璁惧瀹屾垚涔嬪悗鐨勫洖璋冧簨浠�
+        /// </summary>
+        public Action<Function> AddDeviceEvent = null;
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+        /// <summary>
+        /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
+        /// </summary>
+        public void ShowForm(IntegratedBrandDevice device)
+        {
+            if (Language.CurrentLanguage == "Chinese")
+            {
+                //璁剧疆澶撮儴淇℃伅
+                base.SetTitleText(Language.StringByID(StringId.Add) + device.productName);
+            }
+            else
+            {
+                base.SetTitleText(Language.StringByID(StringId.Add) + " " + device.productName);
+            }
+            //杩欎釜鐣岄潰鐨勮儗鏅渶瑕佺櫧鑹�
+            bodyFrameLayout.BackgroundColor = UI.CSS.CSS_Color.MainBackgroundColor;
+
+            //鍒濆鍖栦腑閮ㄤ俊鎭�
+            this.InitMiddleFrame();
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栦腑閮ㄤ俊鎭�
+        /// </summary>
+        private void InitMiddleFrame()
+        {
+            //鍥剧墖
+            var btnPic = new PicViewControl(132, 132);
+            btnPic.Y = Application.GetRealHeight(69);
+            btnPic.Gravity = Gravity.CenterHorizontal;
+            btnPic.UnSelectedImagePath = "PersonalCenter/AddDevice/SenesorMegahealthBg.png";
+            bodyFrameLayout.AddChidren(btnPic);
+
+            //璇疯緭鍏ヨ澶囨満涓婄殑sn鐮�
+            var textView = new FrameLayout()
+            {
+                Y = Application.GetRealHeight(309-64),
+                Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth(319),
+                Height = Application.GetRealHeight(44),
+            };
+            bodyFrameLayout.AddChidren(textView);
+            textView.AddChidren(new Button() { Y = Application.GetRealHeight(43), Height = 1, BackgroundColor = CSS.CSS_Color.DividingLineColor });
+
+            EditText editText = new EditText()
+            {
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS.CSS_Color.FirstLevelTitleColor,
+                PlaceholderText = Language.StringByID(StringId.PlsEntrySNCode),
+                PlaceholderTextColor = CSS.CSS_Color.PromptingColor1,
+                TextSize = CSS.CSS_FontSize.TextFontSize,
+            };
+            textView.AddChidren(editText);
+
+            Button btnScan = new Button()
+            {
+                Width = Application.GetRealWidth(32),
+                Height = Application.GetRealWidth(32),
+                Gravity = Gravity.CenterVertical,
+                X = Application.GetRealWidth(275),
+                UnSelectedImagePath = "Public/Scan.png"
+            };
+            textView.AddChidren(btnScan);
+            btnScan.MouseUpEventHandler = (sender, e) =>
+            {
+                Scan.OpenScan((scanString) =>
+                {
+                    editText.Text = scanString;
+                });
+            };
+
+
+
+
+            //涓嬩竴姝�
+            var btnNext = this.AddBottomClickButton(Language.StringByID(StringId.Next));
+            btnNext.ButtonClickEvent += (sender, e) =>
+            {
+                var snCode = editText.Text.Trim();
+                if(string.IsNullOrEmpty(snCode))
+                {
+                    editText.PlaceholderTextColor = CSS.CSS_Color.WarningColor;
+                }
+                else
+                {
+
+                    var waitPage = new Loading();
+                    waitPage.Start();
+                    new System.Threading.Thread(() => {
+                        try
+                        {
+                            var pm = new HttpServerRequest();
+                            var pack = pm.IndependentRegister3TyDevcie(SPK.SenesorMegahealth, snCode,Language.StringByID(StringId.SenesorMillimeterWave));
+                            if (pack.Code == StateCode.SUCCESS)
+                            {
+                                //var revData = Newtonsoft.Json.JsonConvert.DeserializeObject<List<IntegratedBrandDevice>>(pack.Data.ToString());
+                                Application.RunOnMainThread(() =>
+                                {
+                                    waitPage.Hide();
+                                    var tipDialog = new OperationResultDisPalyPage();
+                                    tipDialog.LoadPage(true, Language.StringByID(StringId.AddSuccess), "", Language.StringByID(StringId.CanStartUsingZhaoguanMillimeterWave), Language.StringByID(StringId.Next));
+                                    tipDialog.Show();
+                                    AddDeviceEvent?.Invoke(new Function());
+                                    this.CloseForm();
+                                });
+                            }else if(pack.Code == "10801")
+                            {
+                                var mes = "";
+                                if (Language.CurrentLanguage == "Chinese")
+                                {
+                                    mes = "璇ヨ澶囧凡缁忚娣诲姞銆�";
+                                }
+                                else
+                                {
+                                    mes = "This device has been added.";
+                                }
+                                Application.RunOnMainThread(() =>
+                                {
+                                    var tip = new Tip()
+                                    {
+                                        Text = mes,
+                                        CloseTime = 2,
+                                        Direction = AMPopTipDirection.None
+                                    };
+                                    tip.Show(MainPage.BaseView);
+                                });
+                            }
+                            else
+                            {
+                                IMessageCommon.Current.ShowErrorInfoAlter(pack.Code);
+                            }
+                        }
+                        catch (Exception ex)
+                        {
+                            MainPage.Log("2--::" + ex.Message);
+                        }
+                        finally
+                        {
+                            Application.RunOnMainThread(() => { waitPage.Hide(); });
+                        }
+                    })
+                    { IsBackground = true }.Start();
+                }
+            };
+        }
+
+        #endregion
+
+        #region 鈻� 鍏抽棴鐣岄潰___________________________
+
+        /// <summary>
+        /// 鍏抽棴鐣岄潰
+        /// </summary>
+        public override void CloseFormBefore()
+        {
+            this.AddDeviceEvent = null;
+            base.CloseFormBefore();
+        }
+
+        #endregion
+    }
+}
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorMegahealth/SenesorMegahealthManagerPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorMegahealth/SenesorMegahealthManagerPage.cs
new file mode 100644
index 0000000..4c24a2c
--- /dev/null
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorMegahealth/SenesorMegahealthManagerPage.cs
@@ -0,0 +1,134 @@
+锘縰sing HDL_ON.DAL.Server;
+using HDL_ON.Entity;
+using HDL_ON.Stan;
+using HDL_ON.UI.UI2.PersonalCenter.PirDevice;
+using Shared;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace HDL_ON.UI
+{
+    /// <summary>
+    /// 娣诲姞姣背娉㈡楠�1鐣岄潰
+    /// </summary>
+    public class SenesorMegahealthManagerPage : EditorCommonForm
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 娣诲姞璁惧瀹屾垚涔嬪悗鐨勫洖璋冧簨浠�
+        /// </summary>
+        public Action DelDeviceEvent = null;
+
+        Function function = null;
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+        /// <summary>
+        /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
+        /// </summary>
+        public void ShowForm(Function device)
+        {
+            function = device;
+            //璁剧疆澶撮儴淇℃伅
+            base.SetTitleText(Language.StringByID(StringId.Add) + device.name);
+            //杩欎釜鐣岄潰鐨勮儗鏅渶瑕佺櫧鑹�
+            bodyFrameLayout.BackgroundColor = CSS.CSS_Color.BackgroundColor;
+
+            //鍒濆鍖栦腑閮ㄤ俊鎭�
+            this.InitMiddleFrame();
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栦腑閮ㄤ俊鎭�
+        /// </summary>
+        private void InitMiddleFrame()
+        {
+            //鍥剧墖
+            var btnPic = new PicViewControl(132, 132);
+            btnPic.Y = Application.GetRealHeight(69);
+            btnPic.Gravity = Gravity.CenterHorizontal;
+            btnPic.UnSelectedImagePath = "PersonalCenter/AddDevice/SenesorMegahealthBg.png";
+            bodyFrameLayout.AddChidren(btnPic);
+
+            var btnTip = new Button()
+            {
+                Y = Application.GetRealHeight(309 - 44),
+                Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth(319),
+                Height = Application.GetRealHeight(84),
+                IsMoreLines = true,
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS.CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS.CSS_FontSize.SubheadingFontSize,
+            };
+            bodyFrameLayout.AddChidren(btnTip);
+
+            if (Language.CurrentLanguage == "Chinese")
+            {
+                btnTip.Text = "璇ヨ澶囧凡娣诲姞鍒板畨闃蹭紶鎰熷櫒绫诲埆锛屽彲鍒板搴斿姛鑳芥澘鍧楁煡鐪�";
+            }
+            else
+            {
+                btnTip.Text = "The device has been added to the security sensor category, which can be viewed in the corresponding function block.";
+            }
+
+            var btnDel = new Button() {
+                Y= Application.GetRealHeight(617-64),
+                Height = Application.GetRealHeight(50),
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS.CSS_Color.WarningColor,
+                TextSize = CSS.CSS_FontSize.SubheadingFontSize,
+                TextID = StringId.DeleteDevice,
+                BackgroundColor = CSS.CSS_Color.MainBackgroundColor,
+            };
+            bodyFrameLayout.AddChidren(btnDel);
+
+            btnDel.MouseUpEventHandler = (sender, e) => {
+                var pack = PirSend.DeleteDevice(function.deviceId);
+                if (pack.Code == StateCode.SUCCESS)
+                {
+                    DelDeviceEvent?.Invoke();
+                    this.CloseForm();
+                    var mes = "";
+                    if (Language.CurrentLanguage == "Chinese")
+                    {
+                        mes = "璁惧鍒犻櫎鎴愬姛銆�";
+                    }
+                    else
+                    {
+                        mes = "Device deleted successfully.";
+                    }
+                    var tip = new Tip()
+                    {
+                        Text = mes,
+                        CloseTime = 2,
+                        Direction = AMPopTipDirection.None
+                    };
+                    tip.Show(MainPage.BaseView);
+                }
+                else
+                {
+                    IMessageCommon.Current.ShowErrorInfoAlter(pack.Code);
+                }
+            };
+
+        }
+
+        #endregion
+
+        #region 鈻� 鍏抽棴鐣岄潰___________________________
+
+        /// <summary>
+        /// 鍏抽棴鐣岄潰
+        /// </summary>
+        public override void CloseFormBefore()
+        {
+            this.DelDeviceEvent = null;
+            base.CloseFormBefore();
+        }
+
+        #endregion
+    }
+}
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/AddDevciePage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/AddDevciePage.cs
index c7da6e2..19fe9ea 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/AddDevciePage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/AddDevciePage.cs
@@ -49,10 +49,9 @@
             new System.Threading.Thread(() => {
                 try
                 {
-                    var pm = new DAL.Server.HttpServerRequest();
-                    //var result = pm.Get3tyBindBrandList
+                    var pm = new HttpServerRequest();
                     var pack = pm.Get3TyBrandDeviceList(brand.productPlatform, brand.productBrand);
-                    if (pack.Code == DAL.Server.StateCode.SUCCESS)
+                    if (pack.Code == StateCode.SUCCESS)
                     {
                         var revData = Newtonsoft.Json.JsonConvert.DeserializeObject<List<IntegratedBrandDevice>>(pack.Data.ToString());
                         Application.RunOnMainThread(() =>
@@ -147,6 +146,14 @@
                                 refreshView.BeginHeaderRefreshing();
                             }; 
                             break;
+                        case SPK.SenesorMegahealth:
+                            var form1 = new AddSenesorMegahealthDirection1Page();
+                            form1.AddForm(device);
+                            form1.AddDeviceEvent = (functionObj) => {
+                                refreshView.BeginHeaderRefreshing();
+                                this.RemoveFromParent();
+                            };
+                            break;
                     }
                 };
             }
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/DeviceListPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/DeviceListPage.cs
index 8bb2fcd..9c98518 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/DeviceListPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/DeviceListPage.cs
@@ -62,9 +62,22 @@
                     if (pack.Code == DAL.Server.StateCode.SUCCESS)
                     {
                         var revData = Newtonsoft.Json.JsonConvert.DeserializeObject<Function3tyBrandObj>(pack.Data.ToString());
+
                         Application.RunOnMainThread(() =>
                         {
-                            LoadRow(revData.list);
+                            contentView.RemoveAll();
+                            if (revData.list.Count > 0)
+                            {
+                                LoadRow(revData.list);
+                            }
+                            else
+                            {
+                                var tipView = new EmptyTipView(Language.StringByID(StringId.NotAddedAnyDevices),160)
+                                {
+                                    Gravity = Gravity.CenterHorizontal,
+                                };
+                                contentView.AddChidren(tipView);
+                            }
                         });
                     }
                     else
@@ -86,7 +99,6 @@
 
         void LoadRow(List<Function> deviceList)
         {
-            contentView.RemoveAll();
             bool isFrist = true;
             foreach (var device in deviceList)
             {
@@ -152,7 +164,15 @@
                     switch (device.spk)
                     {
                         case SPK.IrModule:
-                            new UI2.PersonalCenter.PirDevice.Method().MainView(this, device,()=> {});
+                            new UI2.PersonalCenter.PirDevice.PirMethod().MainView(this, device,()=> {});
+                            break;
+                        case SPK.SenesorMegahealth:
+                            var smPage = new SenesorMegahealthManagerPage();
+                            smPage.AddForm(device);
+                            smPage.DelDeviceEvent = () =>
+                            {
+                                contentView.BeginHeaderRefreshing();
+                            };
                             break;
                     }
                 };
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddButton.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddButton.cs
index 01a45e5..1783c17 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddButton.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddButton.cs
@@ -151,7 +151,7 @@
                         //绉婚櫎娣诲姞鎸夐挳鐣岄潰
                         this.RemoveFromParent();
                         //绉婚櫎涔嬪墠鍙兘瀛樺湪鐨勭晫闈�
-                        Method.RemoveView("AddControl");
+                        PirMethod.RemoveView("AddControl");
                         //鍔犺浇鏁版嵁鐣岄潰
                         AddControl addControl = new AddControl();
                         MainPage.BasePageView.AddChidren(addControl);
@@ -161,7 +161,7 @@
                     else
                     {
                         replication.RemView();
-                        Method method = new Method();
+                        PirMethod method = new PirMethod();
                         method.ErrorShow(null,"娣诲姞澶辫触");
                     }
 
@@ -176,7 +176,7 @@
         public override void RemoveFromParent()
         {
             //鍒锋柊鎸囧畾鐣岄潰
-            Method.RefreshView("PirMain");
+            PirMethod.RefreshView("PirMain");
             base.RemoveFromParent();
         }
     }
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddControl.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddControl.cs
index b10aae1..fbbb8c7 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddControl.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddControl.cs
@@ -143,7 +143,7 @@
                 //绉婚櫎褰撳墠鐣岄潰
                 this.RemoveFromParent();
                 //鍙兘涔嬪墠宸茬粡瀛樺湪璇ョ晫闈�
-                Method.RemoveView("AddControlComplete");
+                PirMethod.RemoveView("AddControlComplete");
                 AddControlComplete addControlComplete = new AddControlComplete();
                 MainPage.BasePageView.AddChidren(addControlComplete);
                 addControlComplete.Show(control, false);
@@ -162,7 +162,7 @@
             View.Buttons buttons = new View.Buttons();
             buttons.AddButton2(vv, control.status, (obj) =>
             {
-                Method.ThreadSend(control, (responsePackNew) =>
+                PirMethod.ThreadSend(control, (responsePackNew) =>
                 {
                     var buttonObj = control.status.Find((c) => c.value == obj.value);
                     if (buttonObj != null)
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddControlComplete.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddControlComplete.cs
index ba1829d..dd7c026 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddControlComplete.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddControlComplete.cs
@@ -113,11 +113,11 @@
                     //娣诲姞鎵�鏈夐仴鎺у悕绉板垪琛�
                     list.Add(Pir.currPir.FunctioList[i].name);
                 }
-                Method method = new Method();
+                PirMethod method = new PirMethod();
                 method.EditControlName(StringId.editName, list, control.name, (name, dialog) =>
                 {
                     //鍙戦�佹洿鏂板悕绉板懡浠�
-                    Method.ThreadSend(new Control { deviceId = control.deviceId, name = name }, (responsePackNew) =>
+                    PirMethod.ThreadSend(new Control { deviceId = control.deviceId, name = name }, (responsePackNew) =>
                     {
                         //鍏抽棴绐楀彛
                         dialog.Close();
@@ -133,7 +133,7 @@
             //鎵�灞炲尯鍩熺偣鍑讳簨浠�
             quyuPatchView.btnClick.MouseUpEventHandler += (sender, e) =>
             {
-                Method method = new Method();
+                PirMethod method = new PirMethod();
                 method.ManagementPosition(GetFunction(control.deviceId), () =>
                 {
                     //鏇存柊鍖哄煙
@@ -145,12 +145,12 @@
             {
                 if (bool_library)
                 {//缁х画娣诲姞搴撶殑閬ユ帶鍣�
-                    Method.RefreshView("PirMain");//鍒锋柊鎸囩偣鐣岄潰
+                    PirMethod.RefreshView("PirMain");//鍒锋柊鎸囩偣鐣岄潰
                     this.RemoveFromParent();
                 }
                 else
                 {//缁х画娣诲姞鑷畾涔夌殑閬ユ帶鍣�
-                    Method method = new Method();
+                    PirMethod method = new PirMethod();
                     method.AddControl(this, (controlDevice) =>
                     {
                         AddButton addButton = new AddButton();
@@ -164,7 +164,7 @@
             saveView.btnClick.MouseUpEventHandler += (sender, e) =>
             {
                 //鍒锋柊鎸囩偣鐣岄潰
-                Method.RefreshView("PirMain");
+                PirMethod.RefreshView("PirMain");
                 //绉婚櫎鎵�鏈夌晫闈�
                 MainPage.BasePageView.RemoveViewByTag("PirView");
             };
@@ -191,7 +191,7 @@
         public override void RemoveFromParent()
         {
             //鍒锋柊鎸囧畾鐣岄潰
-            Method.RefreshView("PirMain");
+            PirMethod.RefreshView("PirMain");
             base.RemoveFromParent();
         }
     }
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/BrandList.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/BrandList.cs
index 92d6fe4..1299e74 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/BrandList.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/BrandList.cs
@@ -18,7 +18,8 @@
                 string s = brandList[str].brandName;
                 strList.Add(s);
             }
-            JLCountrycode.CountryCodeView.Current.ShowSortSelection("閫夋嫨绾㈠鍝佺墝", GetDateList(strList), (countryName) =>
+            var dicList = GetDateList(strList);
+            JLCountrycode.CountryCodeView.Current.ShowSortSelection(Language.StringByID(StringId.xuanzehongwaipinpai), dicList, (countryName) =>
             {
 
                 var brandObj = brandList.Find((c) => c.brandName == countryName);
@@ -60,6 +61,7 @@
                         {
                             if (libraryList.Count < 40)
                             {
+                                //闄愬埗40涓簱锛�
                                 libraryList.Add(library);
                             }
                         }
@@ -68,7 +70,7 @@
                 }
                 else
                 {
-                    Method method = new Method();
+                    PirMethod method = new PirMethod();
                     method.ErrorShow(responsePackNew, "");
                 }
             }, id, "鍝佺墝绾㈠鐮佸簱鍒楄〃");
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/EditControl.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/EditControl.cs
index 09c130c..0c14256 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/EditControl.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/EditControl.cs
@@ -57,10 +57,10 @@
                 {
                     list.Add(Pir.currPir.FunctioList[i].name);
                 }
-                Method method = new Method();
+                PirMethod method = new PirMethod();
                 method.EditControlName(StringId.editName,list, control.name, (name, dialog) =>
                 {
-                    Method.ThreadSend(new Control { deviceId = control.deviceId, name = name }, (responsePackNew) =>
+                    PirMethod.ThreadSend(new Control { deviceId = control.deviceId, name = name }, (responsePackNew) =>
                     {
                         dialog.Close();
                         editNameFLayout.btnEditText.Text = name;
@@ -73,7 +73,7 @@
             //閬ユ帶鍣ㄦ墍灞炲尯鍩熼�変腑浜嬩欢
             areaFLayout.btnClick.MouseUpEventHandler += (sender, e) =>
             {
-                Method method = new Method();
+                PirMethod method = new PirMethod();
                 method.ManagementPosition(control, () =>
                 {
                     //鏇存柊鍖哄煙
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Matching.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Matching.cs
index 1a97eef..b684f7e 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Matching.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Matching.cs
@@ -148,6 +148,7 @@
             };
             fLayout.AddChidren(succeedBtn);
             #endregion
+
             #region 鐐瑰嚮浜嬩欢
             //琛ㄧず搴撳垪琛ㄧ储寮曞��(鐩墠鍙�20涓簱)
             int index = 1; 
@@ -176,14 +177,13 @@
                 code = 1;
                 GetBtnText(testBtn, code, spk);
             };
-           
             //娴嬭瘯Text
             testBtn.MouseUpEventHandler += (sender, e) =>
             {
                 var library = libraryList[index - 1];
                 var control = GetControl(spk, testBtn.TextID, library);
                 //鍙戦�佹祴璇曠爜鍛戒护
-                Method.ThreadSend(control, (responsePackNew) => { }, "搴撶爜娴嬭瘯", "frame", this, null);
+                PirMethod.ThreadSend(control, (responsePackNew) => { }, "搴撶爜娴嬭瘯", "frame", this, null);
                 if (code == 3) {
                     //鏍囪鏈�鍚庨偅涓爜
                     if_bool = true;
@@ -216,7 +216,20 @@
                 {
                     var library = libraryList[index-1];
                     var control = GetControl(spk, testBtn.TextID, library);
-                    Method method = new Method();
+                    if (spk == SPK.TvIr)
+                    {
+                        //澶囨敞锛氫紵鍗楄姹傚皬绫崇數瑙嗘崲鎺塻pk=ir.tvxm锛堝惉璇存槸涓存椂瑙e喅鏂规锛�
+                        var brand = brandList.Find((c) => c.id == library.brandId);
+                        if (brand != null)
+                        {
+                            if (brand.brandName.Contains("灏忕背") || brand.brandName.Contains("Xiaomi"))
+                            {
+                                //鏇存崲spk
+                                control.spk = "ir.tvxm";
+                            }
+                        }
+                    }
+                    PirMethod method = new PirMethod();
                     //鍙戦�佸簱娣诲姞閬ユ帶鍣ㄥ懡浠�
                     method.ThreadAddControl(control, this, (device) =>  
                     {
@@ -295,6 +308,136 @@
                         }
                     }
                     break;
+                case SPK.FanIr:
+                    {
+                        switch (textInt)
+                        {
+                            case StringId.dianyuan:
+                                {
+                                    key = "on_off";
+                                    value = "on";
+                                }
+                                break;
+                            case StringId.zhongsu:
+                                {
+                                    key = "middle";
+                                    value = "";
+                                }
+                                break;
+                            case StringId.yaotou:
+                                {
+                                    key = "swing";
+                                    value = "";
+                                }
+                                break;
+                        }
+                    }
+                    break;
+                case SPK.PjtIr:
+                    {
+                        switch (textInt)
+                        {
+                            case StringId.dianyuan:
+                                {
+                                    key = "on_off";
+                                    value = "on";
+                                }
+                                break;
+                            case StringId.yinliangjia:
+                                {
+                                    key = "volume+";
+                                    value = "";
+                                }
+                                break;
+                            case StringId.yinliangjian:
+                                {
+                                    key = "volume-";
+                                    value = "";
+                                }
+                                break;
+                        }
+                    }
+                    break;
+                case SPK.StbIr:
+                    {
+                        switch (textInt)
+                        {
+                            case StringId.dianyuan:
+                                {
+                                    key = "on_off";
+                                    value = "on";
+                                }
+                                break;
+                            case StringId.yinliangjia:
+                                {
+                                    key = "volume+";
+                                    value = "";
+                                }
+                                break;
+                            case StringId.yinliangjian:
+                                {
+                                    key = "volume-";
+                                    value = "";
+                                }
+                                break;
+                        }
+                    }
+                    break;
+                case SPK.DvDIr:
+                    {
+
+                    }
+                    break;
+                case SPK.PurifierIr:
+                    {
+                        switch (textInt)
+                        {
+                            case StringId.dianyuan:
+                                {
+                                    key = "on_off";
+                                    value = "on";
+                                }
+                                break;
+                            case StringId.zidong:
+                                {
+                                    key = "auto";
+                                    value = "";
+                                }
+                                break;
+                            case StringId.jingyin:
+                                {
+                                    key = "mute";
+                                    value = "0";
+                                }
+                                break;
+                        }
+                    }
+                    break;
+                case SPK.HeaterIr:
+                    {
+                        switch (textInt)
+                        {
+                            case StringId.dianyuan:
+                                {
+                                    key = "on_off";
+                                    value = "on";
+                                }
+                                break;
+                            case StringId.wendujia:
+                                {
+                                    key = "temp+";
+                                    value = "";
+                                }
+                                break;
+                            case StringId.wendujian:
+                                {
+                                    key = "temp-";
+                                    value = "";
+                                }
+                                break;
+                        }
+                    }
+                    break;
             }
             AttributesStatus buttonObj = new AttributesStatus();
             buttonObj.key = key;
@@ -373,6 +516,121 @@
                         }
                     }
                     break;
+                case SPK.FanIr:
+                    {
+                        switch (code)
+                        {
+                            case 1:
+                                {
+                                    textValue = StringId.dianyuan;
+                                }
+                                break;
+                            case 2:
+                                {
+                                    textValue = StringId.zhongsu;
+                                }
+                                break;
+                            case 3:
+                                {
+                                    textValue = StringId.yaotou;
+                                }
+                                break;
+                        }
+                    }
+                    break;
+                case SPK.PjtIr:
+                    {
+                        switch (code)
+                        {
+                            case 1:
+                                {
+                                    textValue = StringId.dianyuan;
+                                }
+                                break;
+                            case 2:
+                                {
+                                    textValue = StringId.yinliangjia;
+                                }
+                                break;
+                            case 3:
+                                {
+                                    textValue = StringId.yinliangjian;
+                                }
+                                break;
+                        }
+                    }
+                    break;
+                case SPK.StbIr:
+                    {
+                        switch (code)
+                        {
+                            case 1:
+                                {
+                                    textValue = StringId.dianyuan;
+                                }
+                                break;
+                            case 2:
+                                {
+                                    textValue = StringId.yinliangjia;
+                                }
+                                break;
+                            case 3:
+                                {
+                                    textValue = StringId.yinliangjian;
+                                }
+                                break;
+                        }
+                    }
+                    break;
+                case SPK.DvDIr:
+                    {
+
+                    }
+                    break;
+                case SPK.PurifierIr:
+                    {
+                        switch (code)
+                        {
+                            case 1:
+                                {
+                                    textValue = StringId.dianyuan;
+                                }
+                                break;
+                            case 2:
+                                {
+                                    textValue = StringId.zidong;
+                                }
+                                break;
+                            case 3:
+                                {
+                                    textValue = StringId.jingyin;
+                                }
+                                break;
+                        }
+                    }
+                    break;
+                case SPK.HeaterIr:
+                    {
+                        switch (code)
+                        {
+                            case 1:
+                                {
+                                    textValue = StringId.dianyuan;
+                                }
+                                break;
+                            case 2:
+                                {
+                                    textValue = StringId.wendujia;
+                                }
+                                break;
+                            case 3:
+                                {
+                                    textValue = StringId.wendujian;
+                                }
+                                break;
+                        }
+                    }
+                    break;
             }
             testBtn.TextID = textValue;
         }
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirMain.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirMain.cs
index 49bab2e..721151e 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirMain.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirMain.cs
@@ -61,12 +61,7 @@
 
             };
             middFLayout.AddChidren(addDevice);
-            if (Pir.currPir.FunctioList.Count < 10)
-            {
-                //10涓仴鎺у櫒灏变細闅愯棌娣诲姞鍥炬爣
-                // middFLayout.AddChidren(addDevice);
-                addDevice.Visible = true;
-            }
+         
             #endregion
 
             #region 鐣岄潰鐐瑰嚮浜嬩欢
@@ -76,7 +71,7 @@
                     ////鍏抽棴鍒锋柊View锛�
                     vv.EndHeaderRefreshing();
 
-                    Method.GetControlList(this, () =>
+                    PirMethod.GetControlList(this, () =>
                     {
                         Application.RunOnMainThread(() =>
                         {
@@ -108,7 +103,7 @@
                     //1=绌鸿皟;2=鐢佃;3=椋庢墖;4=鏈洪《鐩�;5=DVD/EVD/VCD;6=鎶曞奖浠�;7=鑷畾涔�;
                     if (if_value == 7)
                     {
-                        Method method = new Method();
+                        PirMethod method = new PirMethod();
                         method.AddControl(this, (control) =>
                         {
                             //鎴愬姛鍚庣Щ闄�;
@@ -121,7 +116,7 @@
                     }
                     else
                     {
-                        if (if_value == 3 || if_value == 4 || if_value == 5 || if_value == 6)
+                        if (if_value == 6)
                         {
                             new TipPopView().FlashingBox(Language.StringByID(StringId.zanshibuzhichigaigongneng));
                             return;
@@ -148,13 +143,18 @@
             ///鍒濆鍖栫晫闈�
             UIView(vv);
         }
-
         /// <summary>
         /// 鍔犺浇UI鐣岄潰
         /// </summary>
         /// <param name="vv">涓婁笅婊戞帶浠�</param>
         private void UIView(VerticalRefreshLayout vv)
         {
+            if (Pir.currPir.FunctioList.Count < 10)
+            {
+                //10涓仴鎺у櫒灏变細闅愯棌娣诲姞鍥炬爣
+                // middFLayout.AddChidren(addDevice);
+                addDevice.Visible = true;
+            }
             vv.RemoveAll();
             #region 绾㈠瀹濆浘鏍� 鐗堟湰鍙� 鍚嶇О 鐘舵��
             FrameLayout fLayout = new FrameLayout
@@ -208,7 +208,7 @@
                     TipPopView tipPopView = new TipPopView();
                     tipPopView.TipBox(StringId.tip, text, (dialog) =>
                     {
-                        Method.ThreadSend(new Control { deviceId=control.deviceId}, (responsePackNew) =>
+                        PirMethod.ThreadSend(new Control { deviceId=control.deviceId}, (responsePackNew) =>
                         {
                             dialog.Close();
                             var function = Pir.currPir.FunctioList.Find((c) => c.sid == Function.sid);
@@ -313,7 +313,7 @@
                 {
                     if (tag)
                     {
-                        Method method = new Method();
+                        PirMethod method = new PirMethod();
                         method.ErrorShow(responsePackNew, "");
                     }
                 }
@@ -360,7 +360,7 @@
                 }
                 else
                 {
-                    Method method = new Method();
+                    PirMethod method = new PirMethod();
                     method.ErrorShow(responsePackNew, "");
                 }
             }, id, "鍝佺墝鍒楄〃");
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Method.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirMethod.cs
similarity index 90%
rename from HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Method.cs
rename to HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirMethod.cs
index 064080f..f8d4655 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Method.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirMethod.cs
@@ -6,7 +6,7 @@
 
 namespace HDL_ON.UI.UI2.PersonalCenter.PirDevice
 {
-    public class Method
+    public class PirMethod
     {
 
         /// <summary>
@@ -79,22 +79,22 @@
         {
             View.TipView tipView = new View.TipView();
             tipView.InputBox(frameLayout, "", (name, frame) =>
-             {
-                 if (Pir.currPir != null && Pir.currPir.FunctioList.Count < 10)
-                 {
-                     Control control = new Control();
-                     control.name = name;
-                     control.type = "learn";
-                     control.spk = "ir.learn";
-                     control.deviceId = Pir.currPir.deviceId;
-                     ThreadAddControl(control, frame, action);
-                 }
-                 else
-                 {
-                     View.TipView tt = new View.TipView();
-                     tt.TipBox(StringId.tip, StringId.bunengchaoguo10);
-                 }
-             }, false);
+            {
+                if (Pir.currPir != null && Pir.currPir.FunctioList.Count < 10)
+                {
+                    Control control = new Control();
+                    control.name = name;
+                    control.type = "learn";
+                    control.spk = "ir.learn";
+                    control.deviceId = Pir.currPir.deviceId;
+                    ThreadAddControl(control, frame, action);
+                }
+                else
+                {
+                    View.TipView tt = new View.TipView();
+                    tt.TipBox(StringId.tip, StringId.bunengchaoguo10);
+                }
+            }, false);
 
         }
         /// <summary>
@@ -223,7 +223,7 @@
                                 {
 
                                     if (null == PirDevice.Pir.pirDeviceList.Find((c) => c.deviceId == pirJosn.deviceId))
-                                    {
+                                    {
                                         PirDevice.Pir.pirDeviceList.Add(pirJosn);
                                     }
                                 }
@@ -252,7 +252,7 @@
                             else
                             {
                                 loading.Hide();
-                                Method method = new Method();
+                                PirMethod method = new PirMethod();
                                 method.ErrorShow(null, "璇诲彇绾㈠瀹濆垪琛ㄥけ璐�");
                             }
                         }
@@ -329,24 +329,24 @@
         public static void GetControlList(FrameLayout frame, Action action, Pir pirDevice)
         {
             ThreadSend(new Control { deviceId = pirDevice.deviceId }, (responsePackNew) =>
-             {
-                 var jArray = JArray.Parse(responsePackNew.Data.ToString());
-                 for (int a = 0; a < jArray.Count; a++)
-                 {
-                     var jay = jArray[a];
-                     //鏁版嵁杩斿簭鍒楀寲涓篖ogic瀵硅薄
-                     var str = Newtonsoft.Json.JsonConvert.SerializeObject(jay);
-                     var pirJosn = Newtonsoft.Json.JsonConvert.DeserializeObject<Entity.Function>(str);
-                     if (pirJosn != null)
-                     {
-                         if (null == pirDevice.FunctioList.Find((c) => c.deviceId == pirJosn.deviceId))
-                         {
-                             pirDevice.FunctioList.Add(pirJosn);
-                         }
-                     }
-                 }
-                 action();
-             }, "鑾峰彇閬ユ帶鍣ㄥ垪琛�", "frame", frame, null);
+            {
+                var jArray = JArray.Parse(responsePackNew.Data.ToString());
+                for (int a = 0; a < jArray.Count; a++)
+                {
+                    var jay = jArray[a];
+                    //鏁版嵁杩斿簭鍒楀寲涓篖ogic瀵硅薄
+                    var str = Newtonsoft.Json.JsonConvert.SerializeObject(jay);
+                    var pirJosn = Newtonsoft.Json.JsonConvert.DeserializeObject<Entity.Function>(str);
+                    if (pirJosn != null)
+                    {
+                        if (null == pirDevice.FunctioList.Find((c) => c.deviceId == pirJosn.deviceId))
+                        {
+                            pirDevice.FunctioList.Add(pirJosn);
+                        }
+                    }
+                }
+                action();
+            }, "鑾峰彇閬ユ帶鍣ㄥ垪琛�", "frame", frame, null);
 
         }
         /// <summary>
@@ -373,7 +373,7 @@
         /// <param name="frame">log鐖舵帶浠�</param>
         /// <param name="dialog">log鐖舵帶浠�</param>
         /// <param name="attributesStatus">瀛︿範鎸夐敭</param>
-        public static void ThreadSend(Control control, Action<ResponsePackNew> action, string str, string view, FrameLayout frame, Dialog dialog, Entity.AttributesStatus attributesStatus=null)
+        public static void ThreadSend(Control control, Action<ResponsePackNew> action, string str, string view, FrameLayout frame, Dialog dialog, Entity.AttributesStatus attributesStatus = null)
         {
 
             //鍔犺浇log
@@ -434,7 +434,7 @@
                         }
                         else
                         {
-                            Method method = new Method();
+                            PirMethod method = new PirMethod();
                             //鑷畾涔夐敊璇彁绀烘枃鏈�
                             string eorroText = "";
                             if (str == "鍒犻櫎")
@@ -565,6 +565,26 @@
 
                             }
                             break;
+                        case "14002":
+                            {
+                                str = Language.StringByID(StringId.bucunzaichanpin);
+                            }
+                            break;
+                        case "10805":
+                            {
+                                str = Language.StringByID(StringId.shebeibucunzai);
+                            }
+                            break;
+                        case "14006":
+                            {
+                                str = Language.StringByID(StringId.shebeibuzaixian);
+                            }
+                            break;
+                        case "9":
+                            {
+                                str = Language.StringByID(StringId.wangguanshebeibuzaixian);
+                            }
+                            break;
                         case "2":
                             {
                                 str = Language.StringByID(StringId.xitongweihuzhong);
@@ -671,13 +691,10 @@
         public string id = "";
         public List<Objects> objects = new List<Objects>();
         public string time_stamp = string.Empty;
-
-
     }
     [Serializable]
     public class Objects
     {
-
         public string sid = string.Empty;
         public string spk = string.Empty;
         public List<Attributes> attributes = new List<Attributes>();
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirSend.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirSend.cs
index bd3c0d0..ced74cc 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirSend.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirSend.cs
@@ -171,13 +171,13 @@
                     var responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Ir_CodeStudy);
                     if (responsePackNew != null && responsePackNew.Code == "0" && responsePackNew.Data.ToString() != "")
                     {
-                        Method method = new Method();
-                        Method.buttondata = "";
+                        PirMethod method = new PirMethod();
+                        PirMethod.buttondata = "";
                         cloud = method.MqttDate("鎸夐敭", control.sid, 25);
                     }
                     else
                     {
-                        Method method = new Method();
+                        PirMethod method = new PirMethod();
                         method.ErrorShow(responsePackNew, "");
                     }
                 }
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/SetPir.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/SetPir.cs
index 74c6a9e..6d9da0c 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/SetPir.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/SetPir.cs
@@ -81,10 +81,10 @@
             editNameFLayout.btnClick.MouseUpEventHandler += (sender, e) =>
             {
                 List<string> list = new List<string>();
-                Method method = new Method();
+                PirMethod method = new PirMethod();
                 method.EditControlName(StringId.editName, list, Pir.currPir.name, (name, dialog) =>
                 {
-                    Method.ThreadSend(new Control { deviceId = Pir.currPir.deviceId, name = name }, (responsePackNew) =>
+                    PirMethod.ThreadSend(new Control { deviceId = Pir.currPir.deviceId, name = name }, (responsePackNew) =>
                     {
                         dialog.Close();
                         editNameFLayout.btnEditText.Text = name;
@@ -102,7 +102,7 @@
                 tipPopView.TipBox(StringId.tip, text, (dialog) =>
                 {
 
-                    Method.ThreadSend(new Control { deviceId = Pir.currPir.deviceId }, (responsePackNew) =>
+                    PirMethod.ThreadSend(new Control { deviceId = Pir.currPir.deviceId }, (responsePackNew) =>
                     {
                         var pir = Pir.pirDeviceList.Find((c) => c.deviceId == Pir.currPir.deviceId);
                         if (pir != null)
@@ -111,7 +111,7 @@
                         }
                         dialog.Close();
                         this.RemoveFromParent();
-                        Method.RemoveView("PirMain");
+                        PirMethod.RemoveView("PirMain");
                     }, "鍒犻櫎", "dialog", null, dialog);
 
                 }, () =>
@@ -131,7 +131,7 @@
         public override void RemoveFromParent()
         {
             //鍒锋柊PirMain鐣岄潰
-            Method.RefreshView("PirMain");
+            PirMethod.RefreshView("PirMain");
             base.RemoveFromParent();
           
         }
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/View/Buttons.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/View/Buttons.cs
index 6a79288..139d2a6 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/View/Buttons.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/View/Buttons.cs
@@ -265,14 +265,14 @@
                     break;
                 case 5:
                     {
-                        iconPath = "PirIcon/dvd.png";
-                        deviceNameIndex = StringId.dvd;
+                        iconPath = "PirIcon/projector.png";
+                        deviceNameIndex = StringId.touyingyi;
                     }
                     break;
                 case 6:
                     {
-                        iconPath = "PirIcon/projector.png";
-                        deviceNameIndex = StringId.touyingyi;
+                        iconPath = "PirIcon/dvd.png";
+                        deviceNameIndex = StringId.dvd;
                     }
                     break;
                 case 7:
@@ -310,29 +310,28 @@
                 case 3:
                     {
                         //椋庢墖
-                        // type = "fan-" + SPK.ElectricFan;
+                        type = "fan-" + SPK.FanIr;
                     }
                     break;
                 case 4:
                     {
                         //鏈洪《鐩�
-                        //  type = "set_top_box-" + SPK.ElectricTV;
+                        type = "set_top_box-" + SPK.StbIr;
                     }
                     break;
                 case 5:
                     {
-                        //褰辩鏈�
-                        // type = "dvd-" + SPK.ElectricTV;
+                        //鎶曞奖浠�
+                        type = "projector-" + SPK.PjtIr;
                     }
                     break;
                 case 6:
                     {
-                        //鎶曞奖浠�
-                        //  type = "projector-" + SPK.ElectricTV;
+                        //褰辩鏈�
+                        type = "dvd-" + SPK.DvDIr;
+                        
                     }
                     break;
-
-
             }
             return type;
         }
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/View/PirView.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/View/PirView.cs
index d2fe09a..109b77c 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/View/PirView.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/View/PirView.cs
@@ -38,7 +38,7 @@
         {
             Y = Application.GetRealHeight(16),
             X = Application.GetRealWidth(72),
-            Width = Application.GetRealWidth(120),
+            Width = Application.GetRealWidth(120+80),
             Height = Application.GetRealHeight(20),
             //Text = pirDevice.name,
             TextAlignment = TextAlignment.CenterLeft,
diff --git a/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs b/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs
index 4416835..9aa7f00 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs
@@ -472,6 +472,7 @@
                 };
             }
         }
+
         /// <summary>
         /// 鍔犺浇棰濆瀵圭孩澶栨寜閽晫闈�
         /// </summary>
diff --git a/HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SenesorMegahealthPage.cs b/HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SenesorMegahealthPage.cs
new file mode 100644
index 0000000..7e35058
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SenesorMegahealthPage.cs
@@ -0,0 +1,183 @@
+锘縰sing Shared;
+using HDL_ON.Stan;
+using HDL_ON.UI.CSS;
+using HDL_ON.Entity;
+using System.Collections.Generic;
+using System;
+
+namespace HDL_ON.UI
+{
+    public class SenesorMegahealthPage : DeviceFunctionCardCommonForm
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 鍥炬爣
+        /// </summary>
+        private IconViewControl btnIcon = null;
+        /// <summary>
+        /// 鏂囨湰鎺т欢
+        /// </summary>
+        private NormalViewControl btnSuctionView = null;
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鍒濆鍖栫櫧鑹插尯鍩熺殑鍐呭
+        /// </summary>
+        public override void InitFrameWhiteContent()
+        {
+            base.SetTitleText(Language.StringByID(StringId.SenesorMillimeterWave));
+
+            //娣诲姞绗簩绱㈠紩椤�
+            this.AddSecondPage();
+            //鍒濆鍖栫涓�涓储寮曢〉鐨勫唴瀹�
+            this.InitFrameWhiteContent1();
+            //鍒濆鍖栫浜屼釜绱㈠紩椤电殑鍐呭
+            this.InitFrameWhiteContent2();
+
+            //鍒锋柊褰撳墠璁惧鐨勭姸鎬佺紦瀛�
+            this.RefreshNowDeviceStatuMemory(this.device);
+            //鍒锋柊鐣岄潰鐘舵��
+            this.RefreshFormStatu();
+            //璇诲彇鐘舵��
+            new System.Threading.Thread(() =>
+            {
+                if (device.spk == SPK.SenesorMegahealth)
+                {
+                    DriverLayer.Control.Ins.SendReadCommand(device, true);
+                }
+            })
+            { IsBackground = true }.Start();
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栫涓�涓储寮曢〉鐨勫唴瀹�
+        /// </summary>
+        private void InitFrameWhiteContent1()
+        {
+            btnIcon = new IconViewControl(198)
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealWidth(146),
+                UnSelectedImagePath = "FunctionIcon/ArmSensor/UnderProtectionBgIcon.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.TextualColor,
+                SelectedTextColor = CSS_Color.MainColor,
+            };
+            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.RefreshNowDeviceStatuMemory(i_LocalDevice);
+            //鍒锋柊鐣岄潰鐘舵��
+            this.RefreshFormStatu();
+        }
+
+        #endregion
+
+        #region 鈻� 鍙戦�佸悇绉嶅懡浠______________________
+
+        #endregion
+
+        #region 鈻� 鍒锋柊鐣岄潰鐘舵�乢______________________
+
+        /// <summary>
+        /// 鍒锋柊鐣岄潰鐘舵��
+        /// </summary>
+        private void RefreshFormStatu()
+        {
+            Application.RunOnMainThread(() => {
+                var temp = device.attributes.Find((sta) => sta.key == FunctionAttributeKey.ActionStatus);
+                if (temp != null)
+                {
+                    if (temp.state == "fall")   //璺屽��
+                    {
+                        btnIcon.UnSelectedImagePath = "FunctionIcon/ArmSensor/SomeoneFellBgIcon.png";
+                        btnSuctionView.TextID = StringId.SomeoneFell;
+                        btnSuctionView.IsSelected = true;
+                    }
+                    else if (temp.state == "uninhabited")//鏃犱汉
+                    {
+                        btnIcon.UnSelectedImagePath = "FunctionIcon/ArmSensor/UnderProtectionBgIcon.png";
+                        btnSuctionView.TextID = StringId.UnderProtection;
+                        btnSuctionView.IsSelected = false;
+                    }
+                    else//鏈変汉
+                    {
+                        btnIcon.UnSelectedImagePath = "FunctionIcon/ArmSensor/SomeoneInBgIcon.png";
+                        btnSuctionView.TextID = StringId.SomeoneIn;
+                        btnSuctionView.IsSelected = true;
+                    }
+                }
+            });
+        }
+
+        #endregion
+
+        #region 鈻� 涓�鑸柟娉昣__________________________
+
+        /// <summary>
+        /// 鍒锋柊褰撳墠璁惧鐨勭姸鎬佺紦瀛�
+        /// </summary>
+        private void RefreshNowDeviceStatuMemory(Function i_LocalDevice)
+        {
+            //foreach (var data in i_LocalDevice.status)
+            //{
+            //    if (data.key == FunctionAttributeKey.Status)
+            //    {
+            //        Application.RunOnMainThread(() =>
+            //        {
+            //            if (data.value.ToLower() == "open")
+            //            {
+            //                this.btnIcon.IsSelected = true;
+            //                this.btnSuctionView.IsSelected = true;
+            //                this.btnSuctionView.TextID = StringId.Open;
+            //            }
+            //            else
+            //            {
+            //                this.btnIcon.IsSelected = false;
+            //                this.btnSuctionView.IsSelected = false;
+            //                this.btnSuctionView.TextID = StringId.Close;
+            //            }
+            //        });
+            //    }
+            //}
+        }
+
+        #endregion
+    }
+
+}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorDoorWinwsPage.cs b/HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorDoorWinwsPage.cs
index 0d777d9..57a3ff5 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorDoorWinwsPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorDoorWinwsPage.cs
@@ -29,7 +29,7 @@
         /// </summary>
         public override void InitFrameWhiteContent()
         {
-            base.SetTitleText(device.name);
+            base.SetTitleText(Language.StringByID(StringId.Sensor));
 
             //娣诲姞绗簩绱㈠紩椤�
             this.AddSecondPage();
diff --git a/HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorPirPage.cs b/HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorPirPage.cs
index 1599610..36879be 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorPirPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorPirPage.cs
@@ -28,7 +28,7 @@
         public override void InitFrameWhiteContent()
         {
             base.ShowColltionButton = false;
-            base.SetTitleText(device.name);
+            base.SetTitleText(Language.StringByID(StringId.Sensor));
 
             //娣诲姞绗簩绱㈠紩椤�
             this.AddSecondPage();
diff --git a/HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorSmokePage.cs b/HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorSmokePage.cs
index 67ae126..2b28caf 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorSmokePage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorSmokePage.cs
@@ -27,7 +27,7 @@
         /// </summary>
         public override void InitFrameWhiteContent()
         {
-            base.SetTitleText(device.name);
+            base.SetTitleText(Language.StringByID(StringId.Sensor));
 
             //娣诲姞绗簩绱㈠紩椤�
             this.AddSecondPage();
diff --git a/HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorWaterImmersionPage.cs b/HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorWaterImmersionPage.cs
index b2c3e3e..074c6ad 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorWaterImmersionPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorWaterImmersionPage.cs
@@ -27,7 +27,7 @@
         /// </summary>
         public override void InitFrameWhiteContent()
         {
-            base.SetTitleText(device.name);
+            base.SetTitleText(Language.StringByID(StringId.Sensor));
 
             //娣诲姞绗簩绱㈠紩椤�
             this.AddSecondPage();
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/IrFanPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/IrFanPage.cs
new file mode 100644
index 0000000..ab85ff9
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/IrFanPage.cs
@@ -0,0 +1,10 @@
+锘縰sing System;
+namespace HDL_ON.UI.UI2.FuntionControlView.Electrical
+{
+    public class IrFanPage
+    {
+        public IrFanPage()
+        {
+        }
+    }
+}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/PjtPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/PjtPage.cs
new file mode 100644
index 0000000..523142c
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/PjtPage.cs
@@ -0,0 +1,674 @@
+锘縰sing System;
+using System.Collections.Generic;
+using HDL_ON.DriverLayer;
+using HDL_ON.Entity;
+using HDL_ON.UI.CSS;
+using Shared;
+
+namespace HDL_ON.UI
+{
+    /// <summary>
+    /// 鎶曞奖浠〉闈�
+    /// </summary>
+    public class PjtPage : FrameLayout
+    {
+        #region 鎺т欢闆嗗悎
+        FrameLayout bodyView;
+        /// <summary>
+        /// 鍔熻兘鍚嶇О鎸夐挳
+        /// </summary>
+        Button btnFunctionName;
+        /// <summary>
+        /// 鎴块棿妤煎眰淇℃伅鎸夐挳
+        /// </summary>
+        Button btnFromFoorAndRoom;
+        /// <summary>
+        /// 鏀惰棌鎸夐挳
+        /// </summary>
+        Button btnCollection;
+
+        FrameLayout topMenuView;
+        Button btnTopMenuUp;
+        Button btnTopMenuLeft;
+        Button btnTopMenuRight;
+        Button btnTopMenuDown;
+        Button btnOk;
+        FrameLayout channleView;
+        Button btnChlReduce;
+        Button btnChlPlus;
+        FrameLayout volView;
+        Button btnVolReduce;
+        Button btnVolPlus;
+        Button btnBack;
+        Button btnMenu;
+        Button btnMore;
+        Button btnPower;
+
+        #endregion
+
+        #region 鍖哄煙鍙橀噺
+        //TV tvTemp = new TV();
+        Function device;
+        Button btnCollection_Out;
+        Button btnFunctionName_Out;
+        Button btnFromFloor_Out;
+        /// <summary>
+        /// 鍒锋柊鏄剧ず淇℃伅
+        /// </summary>
+        Action actionRefresh;
+        #endregion
+
+        public PjtPage(Function func)
+        {
+            bodyView = this;
+            device = func;
+        }
+
+
+        public void LoadPage(Button btnCollectionIcon, Button btnFunctionNameOut, Button btnFromFloorOut)
+        {
+            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
+            btnCollection_Out = btnCollectionIcon;
+            btnFunctionName_Out = btnFunctionNameOut;
+            btnFromFloor_Out = btnFromFloorOut;
+
+            FrameLayout controlView = new FrameLayout()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealHeight(88),
+                Width = Application.GetRealWidth(327),
+                Height = Application.GetRealHeight(526),
+                BackgroundImagePath = "Public/Fragmentbg.png",
+            };
+            bodyView.AddChidren(controlView);
+
+            btnFunctionName = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Y = Application.GetRealHeight(14),
+                Width = Application.GetRealWidth(270),
+                Height = Application.GetRealHeight(37),
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextAlignment = TextAlignment.CenterLeft,
+                TextSize = CSS_FontSize.EmphasisFontSize_FirstLevel,
+                Text = device.name,
+            };
+            controlView.AddChidren(btnFunctionName);
+
+            btnFromFoorAndRoom = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Y = btnFunctionName.Bottom,
+                Width = Application.GetRealWidth(270),
+                Height = Application.GetRealHeight(21),
+                TextColor = CSS_Color.PromptingColor1,
+                TextAlignment = TextAlignment.CenterLeft,
+                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                Text = device.GetRoomListName()
+            };
+            controlView.AddChidren(btnFromFoorAndRoom);
+
+            btnCollection = new Button()
+            {
+                X = Application.GetRealWidth(273),
+                Y = Application.GetRealHeight(14),
+                Width = Application.GetMinRealAverage(40),
+                Height = Application.GetMinRealAverage(40),
+                SelectedImagePath = "Collection/CollectionIcon.png",
+                UnSelectedImagePath = "Collection/CollectionGrayIcon.png",
+                IsSelected = device.collect
+            };
+            controlView.AddChidren(btnCollection);
+            //2020-12-16 濡傛灉鏄垚鍛橀殣钘忔敹钘忓姛鑳�
+            //if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
+            //{
+            //    controlView.AddChidren(btnCollection);
+            //}
+
+
+
+            #region 杞洏鎺у埗鍖哄煙
+            topMenuView = new FrameLayout()
+            {
+                Y = Application.GetRealHeight(88),
+                Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth(199),
+                Height = Application.GetRealWidth(199),
+                BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png",
+            };
+            controlView.AddChidren(topMenuView);
+
+            btnTopMenuUp = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth(80),
+                Height = Application.GetRealWidth(50),
+            };
+            topMenuView.AddChidren(btnTopMenuUp);
+
+            btnTopMenuLeft = new Button()
+            {
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetRealWidth(50),
+                Height = Application.GetRealWidth(80),
+            };
+            topMenuView.AddChidren(btnTopMenuLeft);
+
+            btnTopMenuRight = new Button()
+            {
+                X = Application.GetRealWidth(150),
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetRealWidth(50),
+                Height = Application.GetRealWidth(80),
+            };
+            topMenuView.AddChidren(btnTopMenuRight);
+
+            btnTopMenuDown = new Button()
+            {
+                Y = Application.GetRealWidth(150),
+                Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth(80),
+                Height = Application.GetRealWidth(50),
+            };
+            topMenuView.AddChidren(btnTopMenuDown);
+
+            btnOk = new Button()
+            {
+                Gravity = Gravity.Center,
+                Width = Application.GetRealWidth(100),
+                Height = Application.GetRealWidth(100),
+            };
+            topMenuView.AddChidren(btnOk);
+
+
+
+            #endregion
+
+
+            #region 棰戦亾闊抽噺璋冭妭
+            channleView = new FrameLayout()
+            {
+                X = Application.GetRealWidth(26),
+                Y = Application.GetRealHeight(246),
+                Width = Application.GetRealWidth(44),
+                Height = Application.GetRealWidth(102),
+                BackgroundImagePath = "FunctionIcon/Electrical/TV/MenuBgIcon.png",
+            };
+            controlView.AddChidren(channleView);
+
+            btnChlPlus = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealHeight(10),
+                Width = Application.GetRealWidth(24),
+                Height = Application.GetRealWidth(24),
+                UnSelectedImagePath = "FunctionIcon/Electrical/TV/PlusIcon.png"
+            };
+            channleView.AddChidren(btnChlPlus);
+
+            Button btnChlText;
+            btnChlText = new Button()
+            {
+                Gravity = Gravity.CenterVertical,
+                Height = Application.GetRealWidth(23),
+                TextAlignment = TextAlignment.Center,
+                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextID = StringId.Canvas,
+            };
+            channleView.AddChidren(btnChlText);
+
+            btnChlReduce = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealWidth(66),
+                Width = Application.GetRealWidth(24),
+                Height = Application.GetRealWidth(24),
+                UnSelectedImagePath = "FunctionIcon/Electrical/TV/ReduceIcon.png"
+            };
+            channleView.AddChidren(btnChlReduce);
+
+            volView = new FrameLayout()
+            {
+                X = Application.GetRealWidth(257),
+                Y = Application.GetRealHeight(246),
+                Width = Application.GetRealWidth(44),
+                Height = Application.GetRealWidth(102),
+                BackgroundImagePath = "FunctionIcon/Electrical/TV/MenuBgIcon.png",
+            };
+            controlView.AddChidren(volView);
+
+            btnVolPlus = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealHeight(10),
+                Width = Application.GetRealWidth(24),
+                Height = Application.GetRealWidth(24),
+                UnSelectedImagePath = "FunctionIcon/Electrical/TV/PlusIcon.png"
+            };
+            volView.AddChidren(btnVolPlus);
+
+            Button btnVolText;
+            btnVolText = new Button()
+            {
+                Gravity = Gravity.CenterVertical,
+                Height = Application.GetRealWidth(23),
+                TextAlignment = TextAlignment.Center,
+                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextID = StringId.Vol,
+            };
+            volView.AddChidren(btnVolText);
+
+            btnVolReduce = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealWidth(66),
+                Width = Application.GetRealWidth(24),
+                Height = Application.GetRealWidth(24),
+                UnSelectedImagePath = "FunctionIcon/Electrical/TV/ReduceIcon.png"
+            };
+            volView.AddChidren(btnVolReduce);
+
+
+
+            #endregion
+
+            #region 搴曢儴鎺у埗鍖哄煙
+            btnBack = new Button()
+            {
+                X = Application.GetRealWidth(52),
+                Y = Application.GetRealHeight(466),
+                Width = Application.GetRealWidth(32),
+                Height = Application.GetRealWidth(32),
+                UnSelectedImagePath = "FunctionIcon/Electrical/TV/TVBackIcon.png",
+            };
+            controlView.AddChidren(btnBack);
+
+
+            btnMenu = new Button()
+            {
+                X = Application.GetRealWidth(116),
+                Y = Application.GetRealHeight(466),
+                Width = Application.GetRealWidth(32),
+                Height = Application.GetRealWidth(32),
+                UnSelectedImagePath = "FunctionIcon/Electrical/TV/TVMenuIcon.png",
+            };
+            controlView.AddChidren(btnMenu);
+
+            btnMore = new Button()
+            {
+                X = Application.GetRealWidth(180),
+                Y = Application.GetRealHeight(466),
+                Width = Application.GetRealWidth(32),
+                Height = Application.GetRealWidth(32),
+                UnSelectedImagePath = "FunctionIcon/AC/More.png",
+            };
+            controlView.AddChidren(btnMore);
+
+            btnMore.MouseUpEventHandler = (sender, e) => {
+              LoadDialog_IrMoreView();
+            };
+
+            btnPower = new Button()
+            {
+                X = Application.GetRealWidth(244),
+                Y = Application.GetRealHeight(466),
+                Width = Application.GetRealWidth(32),
+                Height = Application.GetRealWidth(32),
+                UnSelectedImagePath = "FunctionIcon/Electrical/TV/TVPowerIcon.png",
+            };
+            controlView.AddChidren(btnPower);
+
+            #endregion
+
+            new TopViewDiv(bodyView, Language.StringByID(StringId.PJT)).LoadTopView_FunctionTop(device, actionRefresh);
+            DriverLayer.Control.Ins.SendReadCommand(device);
+
+            LoadEventList();
+
+        }
+
+
+        /// <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 == "up"
+                    || attr.key == "down"
+                    || attr.key == "right"
+                    || attr.key == "left"
+                    || attr.key == "zoom+"
+                    || attr.key == "zoom-"
+                    || attr.key == "volume+"
+                    || attr.key == "volume-"
+                    || attr.key == "back"
+                    || attr.key == "menu"
+                    || attr.key == FunctionAttributeKey.OnOff
+                    )
+                {
+                    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) =>
+                    {
+                        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();
+        }
+
+
+
+        
+        /// <summary>
+        /// 鍔犺浇浜嬩欢鍒楄〃
+        /// </summary>
+        void LoadEventList()
+        {
+            LoadControlEvent();
+            LoadCollectionEvent();
+
+            //鍥為��鍒锋柊淇℃伅浜嬩欢
+            actionRefresh = () => {
+                btnFunctionName.Text = btnFunctionName_Out.Text = device.name;
+                btnFromFloor_Out.Text = btnFromFoorAndRoom.Text = device.GetRoomListName();
+                device.UpdataFuncitonInfo();
+            };
+        }
+
+        /// <summary>
+        /// 鏀惰棌鍔熻兘鎸夐挳浜嬩欢
+        /// </summary>
+        void LoadCollectionEvent()
+        {
+            btnCollection.MouseUpEventHandler += (sender, e) => {
+                btnCollection.IsSelected = device.collect = btnCollection_Out.IsSelected = !btnCollection.IsSelected;
+                device.CollectFunction();
+            };
+        }
+
+        /// <summary>
+        /// 鍔犺浇鎺у埗浜嬩欢
+        /// </summary>
+        void LoadControlEvent()
+        {
+
+            btnChlPlus.MouseUpEventHandler = (sender, e) =>
+            {
+                if (DB_ResidenceData.Instance.GatewayType == 1)
+                {
+                    Dictionary<string, string> d = new Dictionary<string, string>();
+                    d.Add("zoom+", "");
+                    Control.Ins.SendWriteCommand(device, d);
+                }
+            };
+            btnChlReduce.MouseUpEventHandler = (sender, e) =>
+            {
+                if (DB_ResidenceData.Instance.GatewayType == 1)
+                {
+                    Dictionary<string, string> d = new Dictionary<string, string>();
+                    d.Add("zoom-", "");
+                    Control.Ins.SendWriteCommand(device, d);
+                }
+            };
+            btnVolPlus.MouseUpEventHandler = (sender, e) =>
+            {
+                if (DB_ResidenceData.Instance.GatewayType == 1)
+                {
+                    Dictionary<string, string> d = new Dictionary<string, string>();
+                    d.Add("volume+", "");
+                    Control.Ins.SendWriteCommand(device, d);
+                }
+            };
+            btnVolReduce.MouseUpEventHandler = (sender, e) =>
+            {
+                if (DB_ResidenceData.Instance.GatewayType == 1)
+                {
+                    Dictionary<string, string> d = new Dictionary<string, string>();
+                    d.Add("volume-", "");
+                    Control.Ins.SendWriteCommand(device, d);
+                }
+            };
+            btnBack.MouseUpEventHandler = (sender, e) =>
+            {
+                if (DB_ResidenceData.Instance.GatewayType == 1)
+                {
+                    Dictionary<string, string> d = new Dictionary<string, string>();
+                    d.Add("return", "");
+                    Control.Ins.SendWriteCommand(device, d);
+                }
+            };
+            btnPower.MouseUpEventHandler = (sender, e) =>
+            {
+                if (DB_ResidenceData.Instance.GatewayType == 1)
+                {
+                    Dictionary<string, string> d = new Dictionary<string, string>();
+                    d.Add("on_off", "");
+                    Control.Ins.SendWriteCommand(device, d);
+                }
+            };
+
+
+            btnTopMenuUp.MouseDownEventHandler = (sender, e) => {
+                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconUp.png";
+            };
+            btnTopMenuDown.MouseDownEventHandler = (sender, e) => {
+                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconDown.png";
+            };
+            btnTopMenuLeft.MouseDownEventHandler = (sender, e) => {
+                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconLeft.png";
+            };
+            btnTopMenuRight.MouseDownEventHandler = (sender, e) => {
+                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconRight.png";
+            };
+            btnOk.MouseDownEventHandler = (sender, e) => {
+                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconOk.png";
+            };
+            btnMenu.MouseUpEventHandler = (sender, e) =>
+            {
+                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
+                if (DB_ResidenceData.Instance.GatewayType == 1)
+                {
+                    Dictionary<string, string> d = new Dictionary<string, string>();
+                    d.Add("menu", "");
+                    Control.Ins.SendWriteCommand(device, d);
+                }
+            };
+            btnTopMenuUp.MouseUpEventHandler = (sender, e) => {
+                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
+                if (DB_ResidenceData.Instance.GatewayType == 1)
+                {
+                    Dictionary<string, string> d = new Dictionary<string, string>();
+                    d.Add("up", "");
+                    Control.Ins.SendWriteCommand(device, d);
+                }
+            };
+            btnTopMenuLeft.MouseUpEventHandler = (sender, e) => {
+                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
+                if (DB_ResidenceData.Instance.GatewayType == 1)
+                {
+                    Dictionary<string, string> d = new Dictionary<string, string>();
+                    d.Add("left", "");
+                    Control.Ins.SendWriteCommand(device, d);
+                }
+            };
+            btnTopMenuRight.MouseUpEventHandler = (sender, e) => {
+                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
+                if (DB_ResidenceData.Instance.GatewayType == 1)
+                {
+                    Dictionary<string, string> d = new Dictionary<string, string>();
+                    d.Add("right", "");
+                    Control.Ins.SendWriteCommand(device, d);
+                }
+            };
+            btnTopMenuDown.MouseUpEventHandler = (sender, e) => {
+                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
+                if (DB_ResidenceData.Instance.GatewayType == 1)
+                {
+                    Dictionary<string, string> d = new Dictionary<string, string>();
+                    d.Add("down", "");
+                    Control.Ins.SendWriteCommand(device, d);
+                }
+            };
+            btnOk.MouseUpEventHandler = (sender, e) => {
+                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
+                if (DB_ResidenceData.Instance.GatewayType == 1)
+                {
+                    Dictionary<string, string> d = new Dictionary<string, string>();
+                    d.Add("ok", "");
+                    Control.Ins.SendWriteCommand(device, d);
+                }
+            };
+
+        }
+
+    }
+}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/StbPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/StbPage.cs
new file mode 100644
index 0000000..b96c396
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/StbPage.cs
@@ -0,0 +1,637 @@
+锘縰sing System;
+using Shared;
+using HDL_ON.UI.CSS;
+using HDL_ON.Entity;
+using System.Collections.Generic;
+using HDL_ON.DriverLayer;
+
+namespace HDL_ON.UI
+{
+    public class StbPage : FrameLayout
+    {
+        #region 鎺т欢闆嗗悎
+        StbPage bodyView;
+        /// <summary>
+        /// 鍔熻兘鍚嶇О鎸夐挳
+        /// </summary>
+        Button btnFunctionName;
+        /// <summary>
+        /// 鎴块棿妤煎眰淇℃伅鎸夐挳
+        /// </summary>
+        Button btnFromFoorAndRoom;
+        /// <summary>
+        /// 鏀惰棌鎸夐挳
+        /// </summary>
+        Button btnCollection;
+
+        Button btnMenu;
+        FrameLayout topMenuView;
+        Button btnTopMenuUp;
+        Button btnTopMenuLeft;
+        Button btnTopMenuRight;
+        Button btnTopMenuDown;
+        Button btnOk;
+        FrameLayout channleView;
+        Button btnChlReduce;
+        Button btnChlPlus;
+        FrameLayout volView;
+        Button btnVolReduce;
+        Button btnVolPlus;
+        Button btnBack;
+        Button btnMore;
+        Button btn123;
+        Button btnMute;
+        Button btnPower;
+
+        #endregion
+
+        #region 鍖哄煙鍙橀噺
+        Function function;
+        Button btnCollection_Out;
+        Button btnFunctionName_Out;
+        Button btnFromFloor_Out;
+        /// <summary>
+        /// 鍒锋柊鏄剧ず淇℃伅
+        /// </summary>
+        Action actionRefresh;
+        #endregion
+
+        public StbPage(Function func)
+        {
+            bodyView = this;
+            function = func;
+        }
+
+
+        public void LoadPage(Button btnCollectionIcon, Button btnFunctionNameOut, Button btnFromFloorOut)
+        {
+            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
+            btnCollection_Out = btnCollectionIcon;
+            btnFunctionName_Out = btnFunctionNameOut;
+            btnFromFloor_Out = btnFromFloorOut;
+
+            FrameLayout controlView = new FrameLayout()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealHeight(88),
+                Width = Application.GetRealWidth(327),
+                Height = Application.GetRealHeight(526),
+                BackgroundImagePath = "Public/Fragmentbg.png",
+            };
+            bodyView.AddChidren(controlView);
+
+            btnFunctionName = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Y = Application.GetRealHeight(14),
+                Width = Application.GetRealWidth(270),
+                Height = Application.GetRealHeight(37),
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextAlignment = TextAlignment.CenterLeft,
+                TextSize = CSS_FontSize.EmphasisFontSize_FirstLevel,
+                Text = function.name,
+            };
+            controlView.AddChidren(btnFunctionName);
+
+            btnFromFoorAndRoom = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Y = btnFunctionName.Bottom,
+                Width = Application.GetRealWidth(270),
+                Height = Application.GetRealHeight(21),
+                TextColor = CSS_Color.PromptingColor1,
+                TextAlignment = TextAlignment.CenterLeft,
+                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                Text = function.GetRoomListName()
+            };
+            controlView.AddChidren(btnFromFoorAndRoom);
+
+            btnCollection = new Button()
+            {
+                X = Application.GetRealWidth(273),
+                Y = Application.GetRealHeight(14),
+                Width = Application.GetMinRealAverage(40),
+                Height = Application.GetMinRealAverage(40),
+                SelectedImagePath = "Collection/CollectionIcon.png",
+                UnSelectedImagePath = "Collection/CollectionGrayIcon.png",
+                IsSelected = function.collect
+            };
+            controlView.AddChidren(btnCollection);
+            //2020-12-16 濡傛灉鏄垚鍛橀殣钘忔敹钘忓姛鑳�
+            //if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
+            //{
+            //    controlView.AddChidren(btnCollection);
+            //}
+
+
+
+            #region 杞洏鎺у埗鍖哄煙
+            topMenuView = new FrameLayout()
+            {
+                Y = Application.GetRealHeight(88),
+                Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth(199),
+                Height = Application.GetRealWidth(199),
+                BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png",
+            };
+            controlView.AddChidren(topMenuView);
+
+            btnTopMenuUp = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth(80),
+                Height = Application.GetRealWidth(50),
+            };
+            topMenuView.AddChidren(btnTopMenuUp);
+
+            btnTopMenuLeft = new Button()
+            {
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetRealWidth(50),
+                Height = Application.GetRealWidth(80),
+            };
+            topMenuView.AddChidren(btnTopMenuLeft);
+
+            btnTopMenuRight = new Button()
+            {
+                X = Application.GetRealWidth(150),
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetRealWidth(50),
+                Height = Application.GetRealWidth(80),
+            };
+            topMenuView.AddChidren(btnTopMenuRight);
+
+            btnTopMenuDown = new Button()
+            {
+                Y = Application.GetRealWidth(150),
+                Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth(80),
+                Height = Application.GetRealWidth(50),
+            };
+            topMenuView.AddChidren(btnTopMenuDown);
+
+            btnOk = new Button()
+            {
+                Gravity = Gravity.Center,
+                Width = Application.GetRealWidth(100),
+                Height = Application.GetRealWidth(100),
+            };
+            topMenuView.AddChidren(btnOk);
+
+
+
+            #endregion
+
+
+            #region 棰戦亾闊抽噺璋冭妭
+            channleView = new FrameLayout()
+            {
+                X = Application.GetRealWidth(26),
+                Y = Application.GetRealHeight(246),
+                Width = Application.GetRealWidth(44),
+                Height = Application.GetRealWidth(102),
+                BackgroundImagePath = "FunctionIcon/Electrical/TV/MenuBgIcon.png",
+            };
+            controlView.AddChidren(channleView);
+
+            btnChlPlus = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealHeight(10),
+                Width = Application.GetRealWidth(24),
+                Height = Application.GetRealWidth(24),
+                UnSelectedImagePath = "FunctionIcon/Electrical/TV/PlusIcon.png"
+            };
+            channleView.AddChidren(btnChlPlus);
+
+            Button btnChlText;
+            btnChlText = new Button()
+            {
+                Gravity = Gravity.CenterVertical,
+                Height = Application.GetRealWidth(23),
+                TextAlignment = TextAlignment.Center,
+                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextID = StringId.Chl,
+            };
+            channleView.AddChidren(btnChlText);
+
+            btnChlReduce = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealWidth(66),
+                Width = Application.GetRealWidth(24),
+                Height = Application.GetRealWidth(24),
+                UnSelectedImagePath = "FunctionIcon/Electrical/TV/ReduceIcon.png"
+            };
+            channleView.AddChidren(btnChlReduce);
+
+            volView = new FrameLayout()
+            {
+                X = Application.GetRealWidth(257),
+                Y = Application.GetRealHeight(246),
+                Width = Application.GetRealWidth(44),
+                Height = Application.GetRealWidth(102),
+                BackgroundImagePath = "FunctionIcon/Electrical/TV/MenuBgIcon.png",
+            };
+            controlView.AddChidren(volView);
+
+            btnVolPlus = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealHeight(10),
+                Width = Application.GetRealWidth(24),
+                Height = Application.GetRealWidth(24),
+                UnSelectedImagePath = "FunctionIcon/Electrical/TV/PlusIcon.png"
+            };
+            volView.AddChidren(btnVolPlus);
+
+            Button btnVolText;
+            btnVolText = new Button()
+            {
+                Gravity = Gravity.CenterVertical,
+                Height = Application.GetRealWidth(23),
+                TextAlignment = TextAlignment.Center,
+                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextID = StringId.Vol,
+            };
+            volView.AddChidren(btnVolText);
+
+            btnVolReduce = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealWidth(66),
+                Width = Application.GetRealWidth(24),
+                Height = Application.GetRealWidth(24),
+                UnSelectedImagePath = "FunctionIcon/Electrical/TV/ReduceIcon.png"
+            };
+            volView.AddChidren(btnVolReduce);
+
+
+
+            #endregion
+
+            #region 搴曢儴鎺у埗鍖哄煙
+            btnBack = new Button()
+            {
+                X = Application.GetRealWidth(52),
+                Y = Application.GetRealHeight(402),
+                Width = Application.GetRealWidth(32),
+                Height = Application.GetRealWidth(32),
+                UnSelectedImagePath = "FunctionIcon/Electrical/TV/TVBackIcon.png",
+            };
+            controlView.AddChidren(btnBack);
+
+            btnMenu = new Button()
+            {
+                X = Application.GetRealWidth(116),
+                Y = Application.GetRealHeight(402),
+                Width = Application.GetRealWidth(32),
+                Height = Application.GetRealWidth(32),
+                UnSelectedImagePath = "FunctionIcon/Electrical/TV/TVMenuIcon.png",
+            };
+            controlView.AddChidren(btnMenu);
+
+            btn123 = new Button()
+            {
+                X = Application.GetRealWidth(180),
+                Y = Application.GetRealHeight(402),
+                Width = Application.GetRealWidth(40),
+                Height = Application.GetRealWidth(40),
+                UnSelectedImagePath = "FunctionIcon/Electrical/TV/TV123Icon.png",
+            };
+            controlView.AddChidren(btn123);
+
+            btnMute = new Button()
+            {
+                X = Application.GetRealWidth(244),
+                Y = Application.GetRealHeight(402),
+                Width = Application.GetRealWidth(32),
+                Height = Application.GetRealWidth(32),
+                UnSelectedImagePath = "FunctionIcon/Electrical/TV/TVMuteIcon.png",
+            };
+            controlView.AddChidren(btnMute);
+
+            btnMore = new Button()
+            {
+                X = Application.GetRealWidth(116),
+                Y = Application.GetRealHeight(466),
+                Width = Application.GetRealWidth(32),
+                Height = Application.GetRealWidth(32),
+                UnSelectedImagePath = "FunctionIcon/AC/More.png",
+            };
+            controlView.AddChidren(btnMore);
+
+            btnPower = new Button()
+            {
+                X = Application.GetRealWidth(180),
+                Y = Application.GetRealHeight(466),
+                Width = Application.GetRealWidth(32),
+                Height = Application.GetRealWidth(32),
+                UnSelectedImagePath = "FunctionIcon/Electrical/TV/TVPowerIcon.png",
+            };
+            controlView.AddChidren(btnPower);
+
+            #endregion
+
+            LoadEventList();
+
+            new TopViewDiv(bodyView, Language.StringByID(StringId.STB)).LoadTopView_FunctionTop(function, actionRefresh);
+            DriverLayer.Control.Ins.SendReadCommand(function);
+
+        }
+
+
+        void ShowNumberView()
+        {
+            Dialog dialog = new Dialog();
+
+            FrameLayout dialogView = new FrameLayout()
+            {
+                AnimateSpeed = 0.3f,
+                Animate = Animate.DownToUp,
+            };
+            dialog.AddChidren(dialogView);
+
+            dialogView.MouseUpEventHandler = (sender, e) =>
+            {
+                dialog.Close();
+            };
+
+            FrameLayout numberView = new FrameLayout()
+            {
+                Y = Application.GetRealHeight(403),
+                Height = Application.GetRealHeight(264),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+            };
+            dialogView.AddChidren(numberView);
+
+            for (int i = 0; i < 10; i++)
+            {
+                Button btn = new Button()
+                {
+                    Width = Application.GetRealWidth(98),
+                    Height = Application.GetRealHeight(44),
+                    Radius = (uint)Application.GetRealWidth(8),
+                    BorderWidth = (uint)Application.GetRealWidth(1),
+                    BorderColor = CSS_Color.PromptingColor1,
+                    BackgroundColor = CSS_Color.MainBackgroundColor,
+                    SelectedBackgroundColor = CSS_Color.MainColor,
+                    TextColor = CSS_Color.FirstLevelTitleColor,
+                    SelectedTextColor = CSS_Color.MainBackgroundColor,
+                    IsBold = true,
+                    Text = i.ToString(),
+                    TextAlignment = TextAlignment.Center,
+                };
+                if (i == 1 || i == 4 || i == 7)
+                {
+                    btn.X = Application.GetRealWidth(24);
+
+                }
+                else if (i == 2 || i == 5 || i == 8)
+                {
+                    btn.X = Application.GetRealWidth(138);
+                }
+                else if (i == 3 || i == 6 || i == 9)
+                {
+                    btn.X = Application.GetRealWidth(252);
+                }
+                else
+                {
+                    btn.X = Application.GetRealWidth(138);
+                }
+                if (i == 0)
+                {
+                    btn.Y = Application.GetRealHeight(204);
+                }
+                else if (i < 4)
+                {
+                    btn.Y = Application.GetRealHeight(24);
+
+                }
+                else if (i < 7)
+                {
+                    btn.Y = Application.GetRealHeight(84);
+                }
+                else
+                {
+                    btn.Y = Application.GetRealHeight(144);
+                }
+                numberView.AddChidren(btn);
+                btn.MouseUpEventHandler = (sender, e) => {
+                    string index = (sender as Button).Text;
+                    btn.IsSelected = false;
+                    if (DB_ResidenceData.Instance.GatewayType == 1)
+                    {
+                        Dictionary<string, string> d = new Dictionary<string, string>();
+                        d.Add($"number_{index}", "");
+                        Control.Ins.SendWriteCommand(function, d);
+                    }
+                };
+                btn.MouseDownEventHandler = (sender, e) => {
+                    btn.IsSelected = true;
+                };
+            }
+
+
+
+            dialog.Show();
+        }
+
+        /// <summary>
+        /// 鍔犺浇浜嬩欢鍒楄〃
+        /// </summary>
+        void LoadEventList()
+        {
+            LoadControlEvent();
+            LoadCollectionEvent();
+
+            //鍥為��鍒锋柊淇℃伅浜嬩欢
+            actionRefresh = () => {
+                btnFunctionName.Text = btnFunctionName_Out.Text = function.name;
+                btnFromFloor_Out.Text = btnFromFoorAndRoom.Text = function.GetRoomListName();
+                function.UpdataFuncitonInfo();
+            };
+        }
+
+        /// <summary>
+        /// 鏀惰棌鍔熻兘鎸夐挳浜嬩欢
+        /// </summary>
+        void LoadCollectionEvent()
+        {
+            btnCollection.MouseUpEventHandler += (sender, e) => {
+                btnCollection.IsSelected = function.collect = btnCollection_Out.IsSelected = !btnCollection.IsSelected;
+                function.CollectFunction();
+            };
+        }
+
+        /// <summary>
+        /// 鍔犺浇鎺у埗浜嬩欢
+        /// </summary>
+        void LoadControlEvent()
+        {
+            btnMenu.MouseUpEventHandler = (sender, e) =>
+            {
+                if (DB_ResidenceData.Instance.GatewayType == 1)
+                {
+                    Dictionary<string, string> d = new Dictionary<string, string>();
+                    d.Add("av_tv", "");
+                    Control.Ins.SendWriteCommand(function, d);
+                }
+            };
+            btnChlPlus.MouseUpEventHandler = (sender, e) =>
+            {
+                if (DB_ResidenceData.Instance.GatewayType == 1)
+                {
+                    Dictionary<string, string> d = new Dictionary<string, string>();
+                    d.Add("ch+", "");
+                    Control.Ins.SendWriteCommand(function, d);
+                }
+            };
+            btnChlReduce.MouseUpEventHandler = (sender, e) =>
+            {
+                if (DB_ResidenceData.Instance.GatewayType == 1)
+                {
+                    Dictionary<string, string> d = new Dictionary<string, string>();
+                    d.Add("ch-", "");
+                    Control.Ins.SendWriteCommand(function, d);
+                }
+            };
+            btnVolPlus.MouseUpEventHandler = (sender, e) =>
+            {
+                if (DB_ResidenceData.Instance.GatewayType == 1)
+                {
+                    Dictionary<string, string> d = new Dictionary<string, string>();
+                    d.Add("volume+", "");
+                    Control.Ins.SendWriteCommand(function, d);
+                }
+            };
+            btnVolReduce.MouseUpEventHandler = (sender, e) =>
+            {
+                if (DB_ResidenceData.Instance.GatewayType == 1)
+                {
+                    Dictionary<string, string> d = new Dictionary<string, string>();
+                    d.Add("volume-", "");
+                    Control.Ins.SendWriteCommand(function, d);
+                }
+            };
+            btnBack.MouseUpEventHandler = (sender, e) =>
+            {
+                if (DB_ResidenceData.Instance.GatewayType == 1)
+                {
+                    Dictionary<string, string> d = new Dictionary<string, string>();
+                    d.Add("return", "");
+                    Control.Ins.SendWriteCommand(function, d);
+                }
+            };
+
+            btnMenu.MouseUpEventHandler = (sender, e) =>
+            {
+                if (DB_ResidenceData.Instance.GatewayType == 1)
+                {
+                    Dictionary<string, string> d = new Dictionary<string, string>();
+                    d.Add("menu", "");
+                    Control.Ins.SendWriteCommand(function, d);
+                }
+            };
+            btn123.MouseUpEventHandler = (sender, e) =>
+            {
+                ShowNumberView();
+            };
+            btnMute.MouseUpEventHandler = (sender, e) =>
+            {
+                if (DB_ResidenceData.Instance.GatewayType == 1)
+                {
+                    Dictionary<string, string> d = new Dictionary<string, string>();
+                    d.Add("mute", "");
+                    Control.Ins.SendWriteCommand(function, d);
+                }
+            };
+            btnPower.MouseUpEventHandler = (sender, e) =>
+            {
+                if (DB_ResidenceData.Instance.GatewayType == 1)
+                {
+                    Dictionary<string, string> d = new Dictionary<string, string>();
+                    d.Add("on_off", "");
+                    Control.Ins.SendWriteCommand(function, d);
+                }
+            };
+
+
+            btnTopMenuUp.MouseDownEventHandler = (sender, e) => {
+                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconUp.png";
+            };
+            btnTopMenuDown.MouseDownEventHandler = (sender, e) => {
+                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconDown.png";
+            };
+            btnTopMenuLeft.MouseDownEventHandler = (sender, e) => {
+                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconLeft.png";
+            };
+            btnTopMenuRight.MouseDownEventHandler = (sender, e) => {
+                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconRight.png";
+            };
+            btnOk.MouseDownEventHandler = (sender, e) => {
+                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconOk.png";
+            };
+            btnMenu.MouseUpEventHandler = (sender, e) =>
+            {
+                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
+                if (DB_ResidenceData.Instance.GatewayType == 1)
+                {
+                    Dictionary<string, string> d = new Dictionary<string, string>();
+                    d.Add("menu", "");
+                    Control.Ins.SendWriteCommand(function, d);
+                }
+            };
+            btnTopMenuUp.MouseUpEventHandler = (sender, e) => {
+                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
+                if (DB_ResidenceData.Instance.GatewayType == 1)
+                {
+                    Dictionary<string, string> d = new Dictionary<string, string>();
+                    d.Add("up", "");
+                    Control.Ins.SendWriteCommand(function, d);
+                }
+            };
+            btnTopMenuLeft.MouseUpEventHandler = (sender, e) => {
+                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
+                if (DB_ResidenceData.Instance.GatewayType == 1)
+                {
+                    Dictionary<string, string> d = new Dictionary<string, string>();
+                    d.Add("left", "");
+                    Control.Ins.SendWriteCommand(function, d);
+                }
+            };
+            btnTopMenuRight.MouseUpEventHandler = (sender, e) => {
+                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
+                if (DB_ResidenceData.Instance.GatewayType == 1)
+                {
+                    Dictionary<string, string> d = new Dictionary<string, string>();
+                    d.Add("right", "");
+                    Control.Ins.SendWriteCommand(function, d);
+                }
+            };
+            btnTopMenuDown.MouseUpEventHandler = (sender, e) => {
+                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
+                if (DB_ResidenceData.Instance.GatewayType == 1)
+                {
+                    Dictionary<string, string> d = new Dictionary<string, string>();
+                    d.Add("down", "");
+                    Control.Ins.SendWriteCommand(function, d);
+                }
+            };
+            btnOk.MouseUpEventHandler = (sender, e) => {
+                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
+                if (DB_ResidenceData.Instance.GatewayType == 1)
+                {
+                    Dictionary<string, string> d = new Dictionary<string, string>();
+                    d.Add("ok", "");
+                    Control.Ins.SendWriteCommand(function, d);
+                }
+            };
+
+
+        }
+
+    }
+}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Electrical/TVPageBLL.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/TVPageBLL.cs
index fd199d8..5fbf109 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/TVPageBLL.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/TVPageBLL.cs
@@ -163,7 +163,24 @@
                 }
             };
 
+            btnTopMenuUp.MouseDownEventHandler = (sender, e) => {
+                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconUp.png";
+            };
+            btnTopMenuDown.MouseDownEventHandler = (sender, e) => {
+                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconDown.png";
+            };
+            btnTopMenuLeft.MouseDownEventHandler = (sender, e) => {
+                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconLeft.png";
+            };
+            btnTopMenuRight.MouseDownEventHandler = (sender, e) => {
+                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconRight.png";
+            };
+            btnOk.MouseDownEventHandler = (sender, e) => {
+                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconOk.png";
+            };
+
             btnTopMenuUp.MouseUpEventHandler = (sender, e) => {
+                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -176,6 +193,7 @@
                 }
             };
             btnTopMenuLeft.MouseUpEventHandler = (sender, e) => {
+                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -188,6 +206,7 @@
                 }
             };
             btnTopMenuRight.MouseUpEventHandler = (sender, e) => {
+                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -200,6 +219,7 @@
                 }
             };
             btnTopMenuDown.MouseUpEventHandler = (sender, e) => {
+                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     Dictionary<string, string> d = new Dictionary<string, string>();
@@ -212,6 +232,7 @@
                 }
             };
             btnOk.MouseUpEventHandler = (sender, e) => {
+                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     Dictionary<string, string> d = new Dictionary<string, string>();
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Energy/EchartsOption_Energy.cs b/HDL_ON/UI/UI2/FuntionControlView/Energy/EchartsOption_Energy.cs
deleted file mode 100644
index a6e82f6..0000000
--- a/HDL_ON/UI/UI2/FuntionControlView/Energy/EchartsOption_Energy.cs
+++ /dev/null
@@ -1,150 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-
-namespace HDL_ON.UI.UI2.EchartsOption_Energy
-{
-    public class EchartsOption_Energy
-    {
-        ///// <summary>
-        ///// 
-        ///// </summary>
-        public EchartTitle title  = new EchartTitle();
-        /// <summary>
-        /// 
-        /// </summary>
-        public EchartTooltip tooltip;
-        /// <summary>
-        /// 
-        /// </summary>
-        public EchartGrid grid = new EchartGrid();
-        /// <summary>
-        /// 
-        /// </summary>
-        public Echart_xAxis xAxis = new Echart_xAxis();
-        /// <summary>
-        /// 
-        /// </summary>
-        public Echart_yAxis yAxis = new Echart_yAxis();
-        /// <summary>
-        /// 
-        /// </summary>
-        public List<EchartSeriesItem> series =new List<EchartSeriesItem>();
-
-        public EchartsOption_Energy()
-        {
-            tooltip = new EchartTooltip
-            {
-                trigger = "axis",
-            };
-        }
-    }
-
-    public class EchartTitle
-    {
-        public string text;
-    }
-
-    /// <summary>
-    /// 绾挎潯灞炴��
-    /// </summary>
-    public class EchartLineStyle
-    {
-        /// <summary>
-        /// 鍧愭爣杞村埢搴︾嚎瀹�
-        /// type   |   string
-        /// 鍙�夛細
-        /// 'solid'
-        /// 'dashed'
-        /// 'dotted'
-        /// </summary>
-        public string type = "solid";
-        /// <summary>
-        /// 
-        /// </summary>
-        public int width = 1;
-        /// <summary>
-        /// 鍒诲害绾跨殑棰滆壊
-        /// </summary>
-        public string color = "#333";
-    }
-
-
-    public class EchartTooltip
-    {
-        /// <summary>
-        /// 
-        /// </summary>
-        public string trigger ="axis";
-    }
-
-    public class EchartGrid
-    {
-        /// <summary>
-        /// 
-        /// </summary>
-        public string left = "3%";
-        /// <summary>
-        /// 
-        /// </summary>
-        public string right = "4%";
-        /// <summary>
-        /// 
-        /// </summary>
-        public string bottom = "3%";
-        /// <summary>
-        /// 
-        /// </summary>
-        public bool containLabel = true;
-    }
-
-    /// <summary>
-    /// 鍧愭爣杞村睘鎬�
-    /// </summary>
-    public class Echart_xAxis
-    {
-        public string type = "category";
-        public List<string> data = new List<string>();
-        public int offset = 5;
-        public bool boundaryGap = false;
-    }
-    /// <summary>
-    /// 鍧愭爣杞村睘鎬�
-    /// </summary>
-    public class Echart_yAxis
-    {
-        public string type = "value";
-    }
-
-    public class EchartSeriesItem
-    {
-        /// <summary>
-        /// 瀹㈠巺
-        /// </summary>
-        public string name = "";
-        /// <summary>
-        /// 
-        /// </summary>
-        public string type = "line";
-        /// <summary>
-        /// 
-        /// </summary>
-        public bool smooth = true;
-
-        /// <summary>
-        /// 
-        /// </summary>
-        public List<int> data;
-
-        /// <summary>
-        /// none 鍘绘帀鎷愮偣
-        /// </summary>
-        public string symbol = "none";
-        /// <summary>
-        /// 绾挎潯鏍峰紡
-        /// </summary>
-        public EchartLineStyle lineStyle;
-
-
-    }
-
-}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Energy/EnergyMainPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Energy/EnergyMainPage.cs
index e985552..a728cbc 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Energy/EnergyMainPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Energy/EnergyMainPage.cs
@@ -1,25 +1,89 @@
 锘縰sing System;
 using System.Collections.Generic;
 using HDL_ON.DAL.Server;
+using HDL_ON.DriverLayer;
 using HDL_ON.Entity;
 using HDL_ON.UI.CSS;
-using HDL_ON.UI.UI2.EchartsOption_Energy;
 using Shared;
 namespace HDL_ON.UI
 {
     public class EnergyMainPage : FrameLayout
     {
-        FrameLayout bodyView;
+        static EnergyMainPage bodyView;
+
+        /// <summary>
+        /// 椤堕儴鍖哄煙
+        /// </summary>
+        FrameLayout generalTableView;
+
+        /// <summary>
+        /// 瀹炴椂鍔熻��
+        /// </summary>
+        Button btnRealTimeData;
+        /// <summary>
+        /// 瀹炴椂鍔熻�楀崟浣�
+        /// </summary>
+        Button btnTotalValueUint;
+        /// <summary>
+        /// 鎬诲姛鑰�
+        /// </summary>
+        TextButton btnTotalValue;
+        /// <summary>
+        /// 鎬诲姛鑰�-楗煎浘
+        /// </summary>
+        MyEchartsViewOn myEchartsView_Pie;
+        /// <summary>
+        /// 鍘嗗彶鏁版嵁鍖哄煙
+        /// </summary>
+        FrameLayout diagramView;
+        /// <summary>
+        /// 鏇茬嚎鍥炬暟鎹畇tring
+        /// </summary>
+        EchartsOption_BrokenLine brokenLine;
+        /// <summary>
+        /// 鏇茬嚎鍥句笅鎷夋寜閽�
+        /// </summary>
+        Button btnDrodDown;
+
+
+        /// <summary>
+        /// 鎻掓煡璇㈢殑鑳芥簮鍒楄〃
+        /// </summary>
+        List<Function> queryList = new List<Function>();
+        /// <summary>
+        /// 鏌ヨ鏉′欢
+        /// hour銆亀eek銆乵onth
+        /// </summary>
+        string curQueryType = "hour";
+
+
+        /// <summary>
+        /// 鑳芥簮鍒楄〃鍖哄煙
+        /// </summary>
+        FrameLayout energyListView;
+        /// <summary>
+        /// 鍘嗗彶鏁版嵁鍥捐〃
+        /// </summary>
+        MyEchartsViewOn myEchartsView_Line;
+        /// <summary>
+        /// 鏇茬嚎鍥炬槸鍚﹀睍寮�
+        /// </summary>
+        bool isUnfoldOrStow = false;
+
+        List<Function> energyList = new List<Function>();
 
         List<uint> colorList = new List<uint>(){0xFF80AEFF, 0xFFFFD154, 0xFFFF9D54, 0xFFFE6A6A, 0xFFB183C3, 0xFFADE764,
                                         0xFFD7504B, 0xFFC6E579, 0xFFF4E001, 0xFFF0805A, 0xFF26C0C0};
         List<string> colorList2 = new List<string>() {
                                         "#80AEFF", "#FFD154", "#FF9D54", "#FE6A6A", "#B183C3", "#ADE764",
                                         "#D7504B", "#C6E579", "#F4E001", "#F0805A", "#26C0C0"};
-
+        /// <summary>
+        /// 涓婚〉
+        /// </summary>
         public EnergyMainPage()
         {
             bodyView = this;
+            energyList = FunctionList.List.GetEnergyList(); 
         }
 
         /// <summary>
@@ -38,18 +102,18 @@
             bodyView.AddChidren(contentView);
 
             #region 椤堕儴view
-            var generalTableView = new FrameLayout()
+            generalTableView = new FrameLayout()
             {
                 Gravity = Gravity.CenterHorizontal,
-                Y = Application.GetRealHeight(16),
+                Y = Application.GetRealWidth(16),
                 Width = Application.GetRealWidth(343),
-                Height = Application.GetRealWidth(148),
+                Height = Application.GetRealWidth(148),//419//148
                 Radius = (uint)Application.GetRealWidth(5),
                 BackgroundColor = CSS_Color.MainBackgroundColor,
             };
             contentView.AddChidren(generalTableView);
 
-            TextButton btnTotalValue = new TextButton()
+            btnTotalValue = new TextButton()
             {
                 X = Application.GetRealWidth(18),
                 Y = Application.GetRealWidth(24),
@@ -63,9 +127,7 @@
             };
             generalTableView.AddChidren(btnTotalValue);
 
-            btnTotalValue.Width = btnTotalValue.GetTextWidth();
-
-            var btnTotalValueUint = new Button()
+            btnTotalValueUint = new Button()
             {
                 X = btnTotalValue.Right,
                 Y = Application.GetRealWidth(24),
@@ -79,7 +141,7 @@
             };
             generalTableView.AddChidren(btnTotalValueUint);
 
-            var btnRealTimeData = new Button()
+            btnRealTimeData = new Button()
             {
                 X = Application.GetRealWidth(18),
                 Y = btnTotalValue.Bottom,
@@ -91,7 +153,7 @@
                 TextID = StringId.RealTimePowerConsumption,
             };
             generalTableView.AddChidren(btnRealTimeData);
-            btnRealTimeData.Text = Language.StringByID(StringId.RealTimePowerConsumption).Replace("{0}", "0");
+
 
             var echartsView = new FrameLayout()
             {
@@ -101,42 +163,46 @@
                 //Y = Application.GetRealWidth(16),
             };
             generalTableView.AddChidren(echartsView);
-            MyEchartsViewOn myEchartsView = new MyEchartsViewOn()
+            myEchartsView_Pie = new MyEchartsViewOn()
             {
                 Width = Application.GetRealWidth(118),
                 Height = Application.GetRealWidth(118),
             };
+            echartsView.AddChidren(myEchartsView_Pie);
 
-            echartsView.AddChidren(myEchartsView);
             Dictionary<string, string> list = new Dictionary<string, string>();
-            list.Add("鐢靛啺绠�", "12");
-            list.Add("鐢甸鎵�", "2");
-            list.Add("绌鸿皟", "9");
-            list.Add("娲楄。鏈�", "3");
-            list.Add("鐢佃剳", "33");
-            var echartsPie = new EchartsOption_Pie();
-            var echartRootJson = echartsPie.InitDateJson(list);
-            //var echartRootJsonString = Newtonsoft.Json.JsonConvert.SerializeObject(echartRootJson);
-            myEchartsView.ShowWithOption(echartRootJson);
+            foreach(var ene in energyList)
+            {
+                double tt = 0;
+                double.TryParse(ene.GetAttrState(FunctionAttributeKey.TotalElectricity), out tt);
+                tt *= 100;//涔樹互100锛屽皬浜�1鏃犳硶鍔犺浇echart
+                list.Add(ene.name, tt.ToString());
+            }
+            myEchartsView_Pie.ShowWithOption(new EchartsOption_Pie().InitDateJson(list));
 
-
-            var btnDrodDown = new Button()
+            btnDrodDown = new Button()
             {
                 Y = Application.GetRealWidth(118),
                 Width = Application.GetRealWidth(343),
                 Height = Application.GetRealWidth(30),
                 UnSelectedImagePath = "FunctionIcon/Energy/EnergyDrodDownIcon.png",
+                SelectedImagePath = "FunctionIcon/Energy/EnergyDrodUpIcon.png",
             };
+            initDiagramView();
             generalTableView.AddChidren(btnDrodDown);
+            btnDrodDown.MouseUpEventHandler = (sender, e) => {
+                isUnfoldOrStow = btnDrodDown.IsSelected = !btnDrodDown.IsSelected;
+                showDiagramView();
+            };
 
+            UpdataValue();
             #endregion
 
 
-            var energyList = FunctionList.List.GetEnergyList();
-            var energyListView = new FrameLayout()
+            energyListView = new FrameLayout()
             {
                 Y = generalTableView.Bottom + Application.GetRealWidth(8),
-                Height = Application.GetRealWidth(116 * energyList.Count),
+                Height = Application.GetRealWidth(116 * energyList.Count + 50),
             };
             contentView.AddChidren(energyListView);
             int index = 0;
@@ -144,25 +210,58 @@
             {
                 EnergyRow(energy, energyListView, index);
                 index++;
+                new System.Threading.Thread(() =>
+                {
+                    Control.Ins.SendReadCommand(energy);
+                })
+                { IsBackground = true }.Start();
             }
-        }
-        FrameLayout diagramView;
-        List<Function> queryList = new List<Function>();
-        string curQueryType = "hour";
 
-        void d1(FrameLayout contentView)
+
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        void showDiagramView()
         {
+            if (isUnfoldOrStow)//灞曞紑
+            {
+                generalTableView.Height = Application.GetRealWidth(419);
+                btnDrodDown.Y = Application.GetRealWidth(389);
+                btnDrodDown.IsSelected = true;
+            }
+            else
+            {
+                generalTableView.Height = Application.GetRealWidth(148);
+                btnDrodDown.Y = Application.GetRealWidth(118);
+                btnDrodDown.IsSelected = false;
+            }
+
+            energyListView.Y = generalTableView.Bottom + Application.GetRealWidth(8);
+        }
+
+        /// <summary>
+        /// 鍔犺浇鏇茬嚎鍥�
+        /// </summary>
+        /// <param name="contentView"></param>
+        void initDiagramView()
+        {
+            brokenLine = new EchartsOption_BrokenLine();
+
+
             diagramView = new FrameLayout()
             {
+                Y = Application.GetRealWidth(136),
                 Gravity = Gravity.CenterHorizontal,
                 Width = Application.GetRealWidth(343),
-                Height = Application.GetRealWidth(420),
+                Height = Application.GetRealWidth(281),
                 BackgroundColor = CSS_Color.MainBackgroundColor,
                 Radius = (uint)Application.GetRealWidth(12),
                 BorderColor = 0x00000000,
                 BorderWidth = 0,
             };
-            contentView.AddChidren(diagramView);
+            generalTableView.AddChidren(diagramView);
 
             #region 閫夋嫨鏁版嵁鏃ユ湡鑼冨洿
             var showDataTypeView = new FrameLayout()
@@ -219,26 +318,38 @@
                 btnShowHistroyData_Month.IsSelected = false;
                 btnShowHistroyData_Week.IsSelected = false;
                 curQueryType = "hour";
-                d2();
+                brokenLine.YvalueText = "";
+                foreach (var enery in queryList)
+                {
+                    LoadMothed_GetHistoryData(enery,false);
+                }
             };
 
-            btnShowHistroyData_Month.MouseUpEventHandler = (sender, e) =>
-            {
-                showDataTypeView.BackgroundImagePath = "FunctionIcon/EnvironmentalScience/SensorHistoryBg3.png";
-                btnShowHistroyData_Day.IsSelected = false;
-                btnShowHistroyData_Month.IsSelected = true;
-                btnShowHistroyData_Week.IsSelected = false;
-                curQueryType = "week";
-                d2();
-            };
             btnShowHistroyData_Week.MouseUpEventHandler = (sender, e) =>
             {
                 showDataTypeView.BackgroundImagePath = "FunctionIcon/EnvironmentalScience/SensorHistoryBg2.png";
                 btnShowHistroyData_Day.IsSelected = false;
                 btnShowHistroyData_Month.IsSelected = false;
                 btnShowHistroyData_Week.IsSelected = true;
+                curQueryType = "week";
+                brokenLine.YvalueText = "";
+                foreach (var enery in queryList)
+                {
+                    LoadMothed_GetHistoryData(enery, false);
+                }
+            };
+            btnShowHistroyData_Month.MouseUpEventHandler = (sender, e) =>
+            {
+                showDataTypeView.BackgroundImagePath = "FunctionIcon/EnvironmentalScience/SensorHistoryBg3.png";
+                btnShowHistroyData_Day.IsSelected = false;
+                btnShowHistroyData_Month.IsSelected = true;
+                btnShowHistroyData_Week.IsSelected = false;
                 curQueryType = "month";
-                d2();
+                brokenLine.YvalueText = "";
+                foreach (var enery in queryList)
+                {
+                    LoadMothed_GetHistoryData(enery, false);
+                }
             };
 
             #endregion
@@ -246,117 +357,107 @@
             var historyDataView = new FrameLayout()
             {
                 Gravity = Gravity.CenterHorizontal,
-                Y = Application.GetRealHeight(52),
-                Width = Application.GetRealWidth(343 - 32),
-                Height = Application.GetRealHeight(270),
+                Y = Application.GetRealWidth(52),
+                Height = Application.GetRealWidth(190),
             };
             diagramView.AddChidren(historyDataView);
 
-            var myEchartsView = new MyEchartsViewOn();
-
-            historyDataView.AddChidren(myEchartsView);
-
-        }
-
-        void d2()
-        {
-            int index = 0;
-            var echartRootJson = new EchartsOption_Energy();
-            var seriesList = new List<EchartSeriesItem>();
-            foreach (var function in queryList)
+            myEchartsView_Line = new MyEchartsViewOn()
             {
-                var seriesItem = d3(function, index, echartRootJson.xAxis.data);
-                seriesList.Add(seriesItem);
-            }
+                Y = Application.GetRealWidth(10),
+                Height = Application.GetRealWidth(180),
+            };
+            historyDataView.AddChidren(myEchartsView_Line);
         }
+
         /// <summary>
-        /// 鏌ヨ鍒楄〃
+        /// 璇诲彇鍘嗗彶鏁版嵁
         /// </summary>
-        /// <summary>
-        /// 璇诲彇浼犳劅鍣ㄥ巻鍙叉暟鎹�
-        /// </summary>
-        EchartSeriesItem d3(Function function, int index, List<string> xAxisData)
+        void LoadMothed_GetHistoryData(Function sr,bool isDel)
         {
-            EchartSeriesItem sItem = null;
-            List<string> data = new List<string>();
+            if(isDel)//鍒犻櫎鏁版嵁鐜板疄
+            {
+                brokenLine.YvalueText = "";
+                foreach (var ene in queryList)
+                {
+                    brokenLine.YvalueText += ene.GetAttrState("ydata");
+                }
+                var opString = brokenLine.InitOption();
+
+                Application.RunOnMainThread(() =>
+                {
+                    myEchartsView_Line.ShowWithOption(opString);
+                });
+
+                return;
+            }
+
             var loadPage = new Loading()
             {
                 LodingBackgroundColor = 0x88888888,
             };
             diagramView.AddChidren(loadPage);
 
-            try
+            new System.Threading.Thread(() =>
             {
-                Application.RunOnMainThread(() =>
+                try
                 {
-                    loadPage.Start(Language.StringByID(StringId.PleaseWait));
-                });
-                var sensorType = function.spk.Split(".")[1];
-                var revertObj = new HttpServerRequest().GetSensorHistory(curQueryType, function.deviceId, sensorType);
-
-                if (revertObj != null)
-                {
-                    if (revertObj.Code == StateCode.SUCCESS)
+                    Application.RunOnMainThread(() =>
                     {
-                        var revertData = Newtonsoft.Json.JsonConvert.DeserializeObject<List<EnvironmentalSensorHistor>>(revertObj.Data.ToString());
+                        loadPage.Start(Language.StringByID(StringId.PleaseWait));
+                    });
 
-                         sItem = new EchartSeriesItem
+                    var sensorType = sr.spk.Split(".")[1];
+                    var revertObj = new HttpServerRequest().GetSensorHistory(curQueryType, sr.deviceId, "total_electricity");
+                    if (revertObj != null)
+                    {
+                        if (revertObj.Code == StateCode.SUCCESS)
                         {
-                            data = new List<int>(),
-                            lineStyle = new EchartLineStyle()
-                            {
-                                color = colorList2[index],
-#if __IOS__
-                                width = 5,
-#elif __ANDROID__
-                                        width = 2,
-#endif
-                            },
-                        };
+                            var revertData = Newtonsoft.Json.JsonConvert.DeserializeObject<List<EnvironmentalSensorHistor>>(revertObj.Data.ToString());
 
-                        try
-                        {
-                            foreach (var d in revertData)
+                            List<string> vs = new List<string>();
+                            if (brokenLine.YvalueText == "")
                             {
-                                if (xAxisData.Count == 0)
+                                foreach (var data in revertData)
                                 {
-                                    data.Add(d.fieldName);
+                                    vs.Add(data.fieldName);
                                 }
-                                sItem.data.Add(Convert.ToInt32(d.fieldValue));
+                                brokenLine.InitXdataText(vs);
                             }
-                            xAxisData.AddRange(data);
-                        }
-                        catch (Exception ex)
-                        {
-                            MainPage.Log($"revertData:{ex.Message}");
+                            if (sr.GetAttribute("ydata") == null)
+                            {
+                                sr.attributes.Add(new FunctionAttributes() { key = "ydata" });
+                            }
+                            sr.SetAttrState("ydata", brokenLine.InitYdataText(sr.name, revertData, sr.GetAttrState("color")) + ",");
                         }
                     }
-                    else
+                    brokenLine.yTitle = Language.StringByID(StringId.EnergyConsumption) + "(kW)";
+                    brokenLine.xTitle = Language.StringByID(StringId.timeMode);
+                    if(curQueryType != "hour")
                     {
-                        Application.RunOnMainThread(() =>
-                        {
-                            IMessageCommon.Current.ShowErrorInfoAlter("", true, 2, Language.StringByID(StringId.GetSensorHistoryFailed), false);
-                        });
+                        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(() =>
+                catch (Exception ex)
                 {
-                    loadPage.Hide();
-                });
-            }
-            return sItem;
-
-            //var echartRootJsonString = Newtonsoft.Json.JsonConvert.SerializeObject(echartRootJson);
-            //myEchartsView.ShowWithOptionJsonString(echartRootJsonString);
+                    MainPage.Log($"sensor history error : {ex.Message}");
+                }
+                finally
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        loadPage.Hide();
+                    });
+                }
+            })
+            { IsBackground = true }.Start();
         }
-
 
         /// <summary>
         /// 
@@ -370,16 +471,128 @@
             };
             view.AddChidren(btnLine);
 
-            var row = new FrameLayout()
+            //瀹氫箟浠h〃鑹�
+            energy.attributes.Add(new FunctionAttributes() { key = "color", state = colorList2[index] });
+
+            var row = new EnergyRow(energy, colorList[index]);
+
+            row.SetHistory_Action = (isAdd) =>
             {
-                Y = btnLine.Bottom,
-                Gravity = Gravity.CenterHorizontal,
-                Width = Application.GetRealWidth(343),
-                Height = Application.GetRealWidth(100),
-                Radius = (uint)Application.GetRealWidth(12),
-                BackgroundColor = CSS_Color.MainBackgroundColor,
+                if (isAdd)
+                {
+                    if(!isUnfoldOrStow)//濡傛灉鏇茬嚎鍥炬病鏈夊姞杞藉嚭鏉ワ紝鍒欒嚜鍔ㄥ姞杞藉嚭鏉�
+                    {
+                        isUnfoldOrStow = true;
+                        showDiagramView();
+                    }
+                    queryList.Add(row.function);
+                    LoadMothed_GetHistoryData(row.function, false);
+                }
+                else
+                {
+                    queryList.Remove(row.function);
+                    LoadMothed_GetHistoryData(row.function, true);
+                    if (queryList.Count == 0)//濡傛灉鏌ヨ鍒楄〃涓�0锛岃嚜鍔ㄦ敹璧锋洸绾垮浘
+                    {
+                        isUnfoldOrStow = false;
+                        showDiagramView();
+                    }
+                }
             };
+
+
+            row.Y = btnLine.Bottom;
             view.AddChidren(row);
+            listButton_value.Add(row.btnValue);
+        }
+
+
+        public List<Button> listButton_value = new List<Button>();
+
+        /// <summary>
+        /// 鏇存柊鍔熻兘鐘舵��
+        /// </summary>
+        public static void UpdataStatus(Function updataTemp)
+        {
+            Application.RunOnMainThread(() =>
+            {
+                try
+                {
+                    if (bodyView == null)
+                        return;
+                    foreach (var btn in bodyView.listButton_value)
+                    {
+                        if (btn.Tag.ToString() == updataTemp.sid)
+                        {
+                            var newValue = updataTemp.GetAttrState(FunctionAttributeKey.Power);
+                            //if (newValue != btn.Text)
+                            {
+                                btn.Text = newValue;
+                                UpdataValue();
+                            }
+                        }
+                    }
+                }
+                catch (Exception ex)
+                {
+                    MainPage.Log($"{bodyView.GetType().Name } UpdataStates error : {ex.Message}");
+                }
+            });
+        }
+
+        /// <summary>
+        /// 鏇存柊鏁版嵁
+        /// </summary>
+        static void UpdataValue()
+        {
+            double totalValue = 0;
+            double realtimeValue = 0;
+            Dictionary<string, string> list = new Dictionary<string, string>();//楗煎浘鏁版嵁
+            foreach (var ene in bodyView.energyList)
+            {
+                double power = 0;
+                double.TryParse(ene.GetAttrState(FunctionAttributeKey.TotalElectricity), out power);
+                totalValue += power;
+
+                int realTimePower = 0;
+                int.TryParse(ene.GetAttrState(FunctionAttributeKey.Power), out realTimePower);
+                realtimeValue += realTimePower;
+
+                #region 楗煎浘鏁版嵁
+                double tt = 0;
+                double.TryParse(ene.GetAttrState(FunctionAttributeKey.TotalElectricity), out tt);
+                tt *= 100;//涔樹互100锛屽皬浜�1鏃犳硶鍔犺浇echart
+                list.Add(ene.name, tt.ToString());
+                #endregion
+            }
+            bodyView.btnTotalValue.Text = totalValue.ToString();
+            realtimeValue /= 1000;
+            bodyView.btnRealTimeData.Text = Language.StringByID(StringId.RealTimePowerConsumption).Replace("{0}", realtimeValue.ToString());
+            ///鍔ㄦ�佽幏鍙栨枃鏈搴�
+            bodyView.btnTotalValue.Width = bodyView.btnTotalValue.GetTextWidth() + Application.GetRealWidth(5);
+            bodyView.btnTotalValueUint.X = bodyView.btnTotalValue.Right;
+            //鍒锋柊楗煎浘
+            bodyView.myEchartsView_Pie.ShowWithOption(new EchartsOption_Pie().InitDateJson(list));
+
+        }
+    }
+
+
+    public class EnergyRow : FrameLayout
+    {
+        public Button btnValue;
+        Button btnShowData;
+        public Function function;
+        public Action<bool> SetHistory_Action;
+        public EnergyRow(Function energy, uint color)
+        {
+            function = energy;
+            Gravity = Gravity.CenterHorizontal;
+            Width = Application.GetRealWidth(343);
+            Height = Application.GetRealWidth(100);
+            Radius = (uint)Application.GetRealWidth(12);
+            BackgroundColor = CSS_Color.MainBackgroundColor;
+            Tag = energy.sid;
 
             var btnColorTip = new Button()
             {
@@ -387,13 +600,13 @@
                 Y = Application.GetRealWidth(16),
                 Width = Application.GetRealWidth(12),
                 Height = Application.GetRealWidth(12),
-                BackgroundColor = colorList[index],
+                BackgroundColor = color
             };
-            row.AddChidren(btnColorTip);
+            AddChidren(btnColorTip);
 
             var btnName = new Button()
             {
-                X = Application.GetRealWidth(8 + 10 + 32),
+                X = Application.GetRealWidth(28),
                 Y = Application.GetRealHeight(10),
                 Width = Application.GetRealWidth(200),
                 Height = Application.GetRealHeight(24),
@@ -402,11 +615,11 @@
                 TextColor = CSS_Color.FirstLevelTitleColor,
                 TextSize = CSS_FontSize.TextFontSize,
             };
-            row.AddChidren(btnName);
+            AddChidren(btnName);
 
             var btnFromFloor = new Button()
             {
-                X = Application.GetRealWidth(8 + 10 + 32),
+                X = Application.GetRealWidth(28),
                 Y = Application.GetRealHeight(10 + 24),
                 Width = Application.GetRealWidth(200),
                 Height = Application.GetRealHeight(18),
@@ -415,9 +628,9 @@
                 TextColor = CSS_Color.PromptingColor1,
                 TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
             };
-            row.AddChidren(btnFromFloor);
+            AddChidren(btnFromFloor);
 
-            var btnValue = new Button()
+            btnValue = new Button()
             {
                 X = Application.GetRealWidth(28),
                 Y = Application.GetRealWidth(57),
@@ -426,9 +639,11 @@
                 TextAlignment = TextAlignment.CenterLeft,
                 TextSize = CSS_FontSize.HeadlineFontSize,
                 TextColor = CSS_Color.FirstLevelTitleColor,
-                Text = "---"
+                Text = energy.GetAttrState(FunctionAttributeKey.Power),
+                Tag = energy.sid,
+                IsBold = true,
             };
-            row.AddChidren(btnValue);
+            AddChidren(btnValue);
 
 
             var btnSetting = new Button()
@@ -439,9 +654,9 @@
                 Height = Application.GetMinRealAverage(32),
                 UnSelectedImagePath = "Public/FuncInfoSetIcon.png",
             };
-            row.AddChidren(btnSetting);
+            AddChidren(btnSetting);
 
-            Button btnSeltSensorValue = new Button()
+            var btnSeltSensorValue = new Button()
             {
                 X = Application.GetRealWidth(16),
                 Y = Application.GetRealWidth(47),
@@ -452,9 +667,8 @@
                 IsBold = true,
                 TextSize = CSS_FontSize.HeadlineFontSize,
             };
-            row.AddChidren(btnSeltSensorValue);
+            AddChidren(btnSeltSensorValue);
 
-            Button btnShowData;
             btnShowData = new Button()
             {
                 X = Application.GetRealWidth(291),
@@ -463,15 +677,16 @@
                 Height = Application.GetMinRealAverage(32),
                 UnSelectedImagePath = "FunctionIcon/EnvironmentalScience/DiagramIcon.png",
                 SelectedImagePath = "FunctionIcon/EnvironmentalScience/DiagramIconOn.png",
-                IsSelected = true,
+                IsSelected = false,
             };
-            row.AddChidren(btnShowData);
+            AddChidren(btnShowData);
 
             btnSetting.MouseUpEventHandler = (sender, e) =>
             {
                 Action backAction = () =>
                 {
                     btnName.Text = energy.name;
+                    btnFromFloor.Text = energy.GetRoomListName();
                 };
                 var infoView = new FunctionBaseInfoSetPage(energy, backAction);
                 MainPage.BasePageView.AddChidren(infoView);
@@ -479,6 +694,11 @@
                 MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
             };
 
+            btnShowData.MouseUpEventHandler = (sender, e) => {
+                btnShowData.IsSelected = !btnShowData.IsSelected;
+                SetHistory_Action(btnShowData.IsSelected);
+            };
         }
+
     }
 }
\ No newline at end of file
diff --git a/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EchartsOption_BrokenLine.cs b/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EchartsOption_BrokenLine.cs
index 79ba10d..050adba 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EchartsOption_BrokenLine.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EchartsOption_BrokenLine.cs
@@ -4,71 +4,140 @@
 namespace HDL_ON.UI
 {
     /// <summary>
-    /// 楗煎浘
+    /// 鏇茬嚎鍥�
     /// </summary>
     public class EchartsOption_BrokenLine
     {
         /// <summary>
-        /// 
+        /// x杞存暟鎹�
         /// </summary>
-        /// <param name="xData"></param>
-        public void InitXdata (List<string> xData)
+        public string XvalueText = "";
+
+        /// <summary>
+        /// Y杞存暟鎹�
+        /// </summary>
+        public string YvalueText = "";
+        /// <summary>
+        /// x杞存爣棰�
+        /// </summary>
+        public string xTitle = "";
+        /// <summary>
+        /// y杞存爣棰�
+        /// </summary>
+        public string yTitle = "";
+
+
+        /// <summary>
+        /// 缁勮Option鏁版嵁
+        /// </summary>
+        /// <returns></returns>
+        public string InitOption()
         {
             //缁勮Value
-            string valueText = string.Empty;
-            foreach (var data in xData)
-            {
-                valueText += "'" + data + "',";
-            }
-            optionString = optionString.Replace("{0}", valueText);
+            var newstring = optionString.Replace("{0}", XvalueText);
+            newstring = newstring.Replace("{1}", YvalueText);
+            newstring = newstring.Replace("{10}", xTitle);
+            newstring = newstring.Replace("{20}", yTitle);
+            newstring = newstring.Replace(",,",",");
+            return newstring;
         }
 
         /// <summary>
-        /// 
+        /// 缁勮x杞存枃鏈�
+        /// </summary>
+        /// <param name="xData"></param>
+        public void InitXdataText(List<string> xData)
+        {
+            XvalueText = "";
+            foreach (var data in xData)
+            {
+                XvalueText += "'" + data + "',";
+            }
+        }
+
+        /// <summary>
+        /// 缁勮y杞存枃鏈�
         /// </summary>
         /// <param name="yData"></param>
-        public string GetYdata(string name, List<EnvironmentalSensorHistor> yData, string color)
+        public string InitYdataText(string name, List<EnvironmentalSensorHistor> yData, string color)
         {
             //缁勮Value
             string valueText = string.Empty;
-            var yAxisValue = @"{name:'{0}',
+            var YvalueTextItem = @"{name:'{0}',
                             data:[{1}],
                             type:'line',
                             smooth:0.6,
                             symbol:'none',
                             color:'{2}'}
             ";
-            yAxisValue = yAxisValue.Replace("{0}", name);
+            YvalueTextItem = YvalueTextItem.Replace("{0}", name);
 
             foreach (var data in yData)
             {
                 valueText += "'" + data.fieldValue + "',";
             }
-            yAxisValue = yAxisValue.Replace("{1}", valueText);
-            yAxisValue = yAxisValue.Replace("{2}", color);
-            return yAxisValue;
-        }
+            YvalueTextItem = YvalueTextItem.Replace("{1}", valueText);
+            YvalueTextItem = YvalueTextItem.Replace("{2}", color);
 
-        public void InitYdataString(string yData)
-        {
-            //缁勮Value
-            optionString = optionString.Replace("{1}", yData);
+            if (YvalueText == "")
+            {
+                YvalueText = YvalueTextItem;
+            }
+            else
+            {
+                YvalueText += "," + YvalueTextItem;
+            }
+
+            return YvalueTextItem;
         }
 
 
-        public string optionString =  @"{
+#if __IOS__
+        public string optionString = @"{
                  tooltip: {
                     trigger: 'axis'
                     },
                     grid: {
-                        left: '3%',
-                        right: '4%',
-                        bottom: '3%',
+                         top: '10%',
+                        left: '10%',
+                        right: '10%',
+                        bottom: '10%',
+                    },
+                    xAxis: {
+                        name: '{10}',
+                        type: 'category',
+                        boundaryGap: false,
+                        data: [{0}],
+                        axisLabel : {
+                            fontSize:30,
+                        },
+                    },
+                    yAxis: {
+                        name: '{20}',
+                        type: 'value',
+                        axisLabel : {
+                            fontSize:30,
+                        },
+                    },
+                    series: [  
+                        {1}
+                    ]
+            }";
+#else
+ public string optionString = @"{
+                 tooltip: {
+                    trigger: 'axis'
+                    },
+                    grid: {
+                         top: '10%',
+                        left: '10%',
+                        right: '10%',
+                        bottom: '15%',
                     },
                     xAxis: {
                         type: 'category',
                         boundaryGap: false,
-                        data: [{0}]
+                        data: [{0}],
                     },
                     yAxis: {
                         type: 'value',
@@ -77,18 +146,17 @@
                         {1}
                     ]
             }";
+#endif
 
         /// <summary>
         /// 棰滆壊鍒楄〃
         /// </summary>
         /// <returns></returns>
-        public List<string> ColorList ()
+        public List<string> ColorList()
         {
             var list = new List<string>();
             return list;
         }
     }
-
-
 
 }
\ No newline at end of file
diff --git a/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalPage.cs b/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalPage.cs
index b5baaf1..86d0ace 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalPage.cs
@@ -153,7 +153,7 @@
                 TextColor = CSS_Color.TextualColor,
                 TextAlignment = TextAlignment.CenterLeft,
                 TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                Text = "--掳C",
+                Text = $"{MainPage.cityInfo.highestTemperature}掳C",
             };
             topWeatherView.AddChidren(btnTempUpperLimitText);
 
@@ -176,7 +176,7 @@
                 TextColor = CSS_Color.TextualColor,
                 TextAlignment = TextAlignment.CenterLeft,
                 TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                Text = "--掳C",
+                Text = $"{MainPage.cityInfo.lowestTemperature}掳C",
             };
             topWeatherView.AddChidren(btnTempLowerLimitText);
 
@@ -706,46 +706,52 @@
         {
             Application.RunOnMainThread(() =>
             {
-                if (bodyView != null)
+                try
                 {
-                    for (int i = 0; i < bodyView.sensorListView.ChildrenCount; i++)
+                    if (bodyView != null)
                     {
-                        var sensorTag = updateTemp.sid;
-                        var view = bodyView.sensorListView.GetChildren(i);
-                        if (view.GetType() == typeof(FrameLayout))
+                        for (int i = 0; i < bodyView.sensorListView.ChildrenCount; i++)
                         {
-                            if (view.Tag.ToString() != sensorTag)
+                            var sensorTag = updateTemp.sid;
+                            var view = bodyView.sensorListView.GetChildren(i);
+                            if (view.GetType() == typeof(FrameLayout))
                             {
-                                continue;
-                            }
-                            for (int j = 0; j < (view as FrameLayout).ChildrenCount; j++)
-                            {
-                                var btn = (view as FrameLayout).GetChildren(j);
-                                if (btn.GetType() == typeof(Button))
+                                if (view.Tag.ToString() != sensorTag)
                                 {
-                                    if (btn.Tag != null)
+                                    continue;
+                                }
+                                for (int j = 0; j < (view as FrameLayout).ChildrenCount; j++)
+                                {
+                                    var btn = (view as FrameLayout).GetChildren(j);
+                                    if (btn.GetType() == typeof(Button))
                                     {
-                                        var tag = btn.Tag.ToString();
-                                        if (tag == "SensorValues")
+                                        if (btn.Tag != null)
                                         {
-                                            (btn as Button).Text = updateTemp.GetAttrState(FunctionAttributeKey.Value);
-                                        }
-                                        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];
+                                            var tag = btn.Tag.ToString();
+                                            if (tag == "SensorValues")
+                                            {
+                                                (btn as Button).Text = updateTemp.GetAttrState(FunctionAttributeKey.Value);
+                                            }
+                                            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];
+                                            }
                                         }
                                     }
-                                }
-                                else if (btn.GetType() == typeof(ArcSeekBar))
-                                {
-                                    (btn as ArcSeekBar).ProgressBarColor = bodyView.sensorTemp.GetLevelColorList(updateTemp.spk)[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).Progress = (96 / bodyView.sensorTemp.GetLevelColorList(updateTemp.spk).Count) * bodyView.sensorTemp.GetCurLevel(updateTemp);
+                                        (btn as ArcSeekBar).Progress = (96 / bodyView.sensorTemp.GetLevelColorList(updateTemp.spk).Count) * bodyView.sensorTemp.GetCurLevel(updateTemp);
+                                    }
                                 }
                             }
                         }
                     }
+                }catch(Exception ex )
+                {
+                    MainPage.Log($"鏇存柊鐜浼犳劅鍣ㄧ晫闈㈠紓甯�:{ex.Message}");
                 }
             });
         }
diff --git a/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSensorPage.cs b/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSensorPage.cs
index 0ddb270..f2c2ae5 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSensorPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSensorPage.cs
@@ -128,7 +128,7 @@
                 Gravity = Gravity.CenterHorizontal,
                 Y = Application.GetRealHeight(52),
                 Width = Application.GetRealWidth(343 - 32),
-                Height = Application.GetRealHeight(270),
+                Height = Application.GetRealWidth(270),
             };
             diagramView.AddChidren(historyDataView);
 
@@ -360,7 +360,7 @@
                     tipTextView.AddChidren(new Button()
                     {
                         Width = Application.GetRealWidth(43),
-                        TextID = StringId.ExtremelyCold,
+                        TextID = StringId.SlightlyCold,
                         TextAlignment = TextAlignment.Center,
                         TextColor = CSS_Color.FirstLevelTitleColor,
                         TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
@@ -475,7 +475,7 @@
                     tipValuesView.AddChidren(new Button()
                     {
                         Width = Application.GetRealWidth(151),
-                        Text = "70",
+                        Text = "40%",
                         TextAlignment = TextAlignment.Center,
                         TextColor = CSS_Color.FirstLevelTitleColor,
                         TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
@@ -483,7 +483,7 @@
                     tipValuesView.AddChidren(new Button()
                     {
                         Width = Application.GetRealWidth(151),
-                        Text = "40",
+                        Text = "70%",
                         TextAlignment = TextAlignment.Center,
                         TextColor = CSS_Color.FirstLevelTitleColor,
                         TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
@@ -491,7 +491,7 @@
                     tipTextView.AddChidren(new Button()
                     {
                         Width = Application.GetRealWidth(101),
-                        TextID = StringId.SensorReferenceTVOCTipLevel1,
+                        TextID = StringId.SensorReferenceHumidityTipLevel1,
                         TextAlignment = TextAlignment.Center,
                         TextColor = CSS_Color.FirstLevelTitleColor,
                         TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
@@ -499,7 +499,7 @@
                     tipTextView.AddChidren(new Button()
                     {
                         Width = Application.GetRealWidth(101),
-                        TextID = StringId.SensorReferenceTVOCTipLevel2,
+                        TextID = StringId.SensorReferenceHumidityTipLevel2,
                         TextAlignment = TextAlignment.Center,
                         TextColor = CSS_Color.FirstLevelTitleColor,
                         TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
@@ -507,7 +507,7 @@
                     tipTextView.AddChidren(new Button()
                     {
                         Width = Application.GetRealWidth(101),
-                        TextID = StringId.SensorReferenceTVOCTipLevel3,
+                        TextID = StringId.SensorReferenceHumidityTipLevel3,
                         TextAlignment = TextAlignment.Center,
                         TextColor = CSS_Color.FirstLevelTitleColor,
                         TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
@@ -839,7 +839,7 @@
                         }
 
                         var sensorType = sr.spk.Split(".")[1];
-                        var revertObj = new HttpServerRequest().GetSensorHistory(curQueryType, sr.deviceId,sensorType);
+                        var revertObj = new HttpServerRequest().GetSensorHistory(curQueryType, sr.deviceId,"value");
                         if (revertObj != null)
                         {
                             if (revertObj.Code == StateCode.SUCCESS)
@@ -853,19 +853,18 @@
                                     {
                                         vs.Add(data.fieldName);
                                     }
-                                    ebl.InitXdata(vs);
+                                    ebl.InitXdataText(vs);
                                 }
-                                yDataString += ebl.GetYdata(sr.name, revertData, tipColorStringList[i]);
+                                yDataString += ebl.InitYdataText(sr.name, revertData, tipColorStringList[i]);
                             }
                         }
                         i++;
                     }
 
-                    ebl.InitYdataString(yDataString);
 
                     Application.RunOnMainThread(() =>
                     {
-                        myEchartsView.ShowWithOption(ebl.optionString);
+                        myEchartsView.ShowWithOption(ebl.InitOption());
                     });
 
                 }
diff --git a/HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPage.cs b/HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPage.cs
index 4fdf8ed..b90cd61 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPage.cs
@@ -138,6 +138,11 @@
             //    controlView.AddChidren(btnCollection);
             //}
 
+
+            var minValue = function.GetAttribute(FunctionAttributeKey.SetTemp).min;
+            var maxValue = function.GetAttribute(FunctionAttributeKey.SetTemp).max;
+            var progress = (int)Convert.ToDouble(function.GetAttrState(FunctionAttributeKey.SetTemp));
+
             arcBar = new DiyArcSeekBar()
             {
                 Gravity = Gravity.CenterHorizontal,
@@ -147,10 +152,10 @@
                 ProgressBarColor = CSS_Color.AuxiliaryColor1, // 0xFFFC9C04,
                 OfflineProgressBarColor = CSS_Color.PromptingColor2,
                 IsOffline = function.trait_on_off.curValue.ToString() == "off",
-                MinValue = function.GetAttribute(FunctionAttributeKey.SetTemp).min,
-                MaxValue = function.GetAttribute(FunctionAttributeKey.SetTemp).max,
+                MinValue = minValue,//function.GetAttribute(FunctionAttributeKey.SetTemp).min,
+                MaxValue = maxValue,// function.GetAttribute(FunctionAttributeKey.SetTemp).max,
                 ArcColor = CSS_Color.BackgroundColor,
-                Progress = Convert.ToInt32(function.GetAttrState(FunctionAttributeKey.SetTemp)),
+                Progress = progress,
 #if __IOS__
                 Y = Application.GetRealHeight(120+25),
                 Width = Application.GetRealWidth(260-40),
@@ -175,7 +180,7 @@
                 TextColor = CSS_Color.FirstLevelTitleColor,
                 TextSize = 56,
                 IsBold = true,
-                Text = function.GetAttrState(FunctionAttributeKey.SetTemp),
+                Text = progress.ToString(),
                 TextAlignment = TextAlignment.Center,
             };
             controlView.AddChidren(btnTemp);
diff --git a/HDL_ON/UI/UI2/FuntionControlView/FunctionBaseInfoSetPage.cs b/HDL_ON/UI/UI2/FuntionControlView/FunctionBaseInfoSetPage.cs
index ed8ba3b..68f8232 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/FunctionBaseInfoSetPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/FunctionBaseInfoSetPage.cs
@@ -1,6 +1,8 @@
 锘縰sing System;
+using HDL_ON.DAL.Server;
 using HDL_ON.Entity;
 using HDL_ON.UI.CSS;
+using Newtonsoft.Json.Linq;
 using Shared;
 
 namespace HDL_ON.UI
@@ -50,14 +52,21 @@
             bodyView.BackgroundColor = CSS_Color.BackgroundColor;
             new TopViewDiv(bodyView, Language.StringByID(StringId.Setting)).LoadTopView(actionRefresh);
 
+            var contentView = new VerticalScrolViewLayout()
+            {
+                Y = Application.GetRealHeight(64),
+                Height = Application.GetRealHeight(600),
+                ScrollEnabled = false,
+            };
+            bodyView.AddChidren(contentView);
+
             #region name view
             var nameView = new FrameLayout()
             {
-                Y = Application.GetRealHeight(64),
                 Height = Application.GetRealHeight(50),
                 BackgroundColor = CSS_Color.MainBackgroundColor,
             };
-            bodyView.AddChidren(nameView);
+            contentView.AddChidren(nameView);
 
             var btnNameText = new Button()
             {
@@ -106,11 +115,10 @@
             #region 浣嶇疆绠$悊
             var locationMagtView = new FrameLayout()
             {
-                Y = nameView.Bottom,
                 Height = Application.GetRealHeight(55),
                 BackgroundColor = CSS_Color.MainBackgroundColor,
             };
-            bodyView.AddChidren(locationMagtView);
+            contentView.AddChidren(locationMagtView);
 
             var btnLocationMagtTitle = new Button()
             {
@@ -158,11 +166,10 @@
             #region 鍏变韩
             //var sharedView = new FrameLayout()
             //{
-            //    Y = locationMagtView.Bottom,
             //    Height = Application.GetRealHeight(55),
             //    BackgroundColor = CSS_Color.MainBackgroundColor,
             //};
-            //bodyView.AddChidren(sharedView);
+            //contentView.AddChidren(sharedView);
 
             //var btnSharedText = new Button()
             //{
@@ -200,11 +207,10 @@
             #region 娣诲姞鍒版闈�
             var addToDesktopView = new FrameLayout()
             {
-                Y = locationMagtView.Bottom,
                 Height = Application.GetRealHeight(55),
                 BackgroundColor = CSS_Color.MainBackgroundColor,
             };
-            bodyView.AddChidren(addToDesktopView);
+            contentView.AddChidren(addToDesktopView);
 
             var btnAddToDesktopText = new Button()
             {
@@ -229,6 +235,128 @@
 
             #endregion
 #endif
+
+            if (function.spk == SPK.ElectricEnergy)
+            {
+                #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.RealTimeEnergyConsumption,
+                };
+                energyView1.AddChidren(btnEnergyText1);
+
+
+                double realTimePower = 0;
+                double.TryParse(function.GetAttrState(FunctionAttributeKey.Power), out realTimePower);
+                realTimePower /= 1000;
+
+                var energyValue1 = new Button()
+                {
+                    Width = Application.GetRealWidth(355),
+                    TextAlignment = TextAlignment.CenterRight,
+                    TextSize = CSS_FontSize.TextFontSize,
+                    TextColor = CSS_Color.PromptingColor1,
+                    Text = realTimePower + "kW",
+                };
+                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)
+                    });
+                //-----------------
+
+                var energyView2 = new FrameLayout()
+                {
+                    Height = Application.GetRealHeight(55),
+                    BackgroundColor = CSS_Color.MainBackgroundColor,
+                };
+                contentView.AddChidren(energyView2);
+
+                var btnEnergyText2 = new Button()
+                {
+                    X = Application.GetRealWidth(16),
+                    Width = Application.GetRealWidth(160),
+                    TextAlignment = TextAlignment.CenterLeft,
+                    TextColor = CSS_Color.FirstLevelTitleColor,
+                    TextSize = CSS_FontSize.SubheadingFontSize,
+                    TextID = StringId.EnergyConsumptionOfThisMonth,
+                };
+                energyView2.AddChidren(btnEnergyText2);
+
+                var btnEnergyValue2 = new Button()
+                {
+                    Width = Application.GetRealWidth(355),
+                    TextAlignment = TextAlignment.CenterRight,
+                    TextSize = CSS_FontSize.TextFontSize,
+                    TextColor = CSS_Color.PromptingColor1,
+                    Text = "--kW",
+                };
+                energyView2.AddChidren(btnEnergyValue2);
+
+                energyView2.AddChidren(
+                    new Button()
+                    {
+                        Gravity = Gravity.CenterHorizontal,
+                        Y = Application.GetRealHeight(54),
+                        BackgroundColor = CSS_Color.DividingLineColor,
+                        Width = Application.GetRealWidth(343),
+                        Height = Application.GetRealHeight(1)
+                    });
+
+                new System.Threading.Thread(() =>
+                {
+                    var pm = new HttpServerRequest();
+                    var data = pm.GetLastMonthHistory(function.deviceId, FunctionAttributeKey.TotalElectricity);
+                    if (data != null)
+                    {
+                        if (data.Code == StateCode.SUCCESS)
+                        {
+                            var dataPack = Newtonsoft.Json.JsonConvert.DeserializeObject<JObject>(data.Data.ToString());
+                            if (dataPack != null)
+                            {
+                                try
+                                {
+                                    var dataValue = dataPack.GetValue("monthDiff").ToString();
+                                    if (!string.IsNullOrEmpty(dataValue))
+                                    {
+                                        Application.RunOnMainThread(() =>
+                                        {
+                                            btnEnergyValue2.Text = dataValue + "kW鈥";
+                                        });
+                                    }
+                                }
+                                catch
+                                {
+
+                                }
+                            }
+                        }
+                    }
+
+                })
+                { IsBackground = true }.Start();
+
+                #endregion
+            }
+
             LoadEventList();
         }
 
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Video/VideoMainView.cs b/HDL_ON/UI/UI2/FuntionControlView/Video/VideoMainView.cs
index 3271e9e..109cdc4 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Video/VideoMainView.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Video/VideoMainView.cs
@@ -35,8 +35,8 @@
             pageView.AddChidren(view1);
             var view2 = new FrameLayout();
             pageView.AddChidren(view2);
-            View1(view1, listVideo, video);
-            View2(view2, listCall, video);
+            ViewFrameLayout1(view1, listVideo, video);
+            ViewFrameLayout2(view2, listCall, video);
             Button btn11 = new Button
             {
                 X = Application.GetRealWidth(170),
@@ -113,8 +113,10 @@
         /// <param name="view1">鐖舵帶浠�</param>
         /// <param name="list">闂ㄥ彛鏈哄垪琛�</param>
         /// <param name="videoClouds">褰撳墠鐨勫彲瑙嗗璁�</param>
-        void View1(FrameLayout view1, List<FlVideo> list, VideoClouds videoClouds)
+        void ViewFrameLayout1(FrameLayout view1, List<FlVideo> list, VideoClouds videoClouds)
         {
+
+
             #region 甯冨眬鐣岄潰
             var bjFl = new FrameLayout
             {
@@ -220,17 +222,16 @@
                 #region
                 var fLayout = new FrameLayout
                 {
-                    Width = Application.GetRealWidth(50),
+                    Width = Application.GetRealWidth(96),
                     Height = Application.GetRealWidth(48),
-                    X = Application.GetRealWidth(31 + (58 + 50) * j),
+                    X = Application.GetRealWidth(20 + (26 + 28 + 42) * j),
                     Y = Application.GetRealHeight(20 + (48 + 24) * line),
-
                 };
                 fL.AddChidren(fLayout);
 
                 var iconBtn = new Button
                 {
-                    X = Application.GetRealWidth(11),
+                    Gravity=Gravity.CenterHorizontal,
                     Width = Application.GetRealWidth(28),
                     Height = Application.GetRealWidth(28),
                     UnSelectedImagePath = "VideoIcon/weiqiangji.png",
@@ -240,7 +241,8 @@
                 var deviceNameBtn = new Button
                 {
                     Y = iconBtn.Bottom + Application.GetRealHeight(6),
-                    Width = Application.GetRealWidth(50),
+                    X = Application.GetRealWidth(6),
+                    Width = Application.GetRealWidth(96-12),
                     Height = Application.GetRealHeight(14),
                     TextSize = TextSize.Text10,
                     TextColor = CSS.CSS_Color.TextualColor,
@@ -306,7 +308,7 @@
         /// <param name="view2">鐖舵帶浠�</param>
         /// <param name="listCall">閫氳瘽璁板綍鍒楄〃</param>
         /// <param name="video">褰撳墠鐨勫彲瑙嗗璁�</param>
-        void View2(FrameLayout view2, List<CallView> listCall, VideoClouds video)
+        void ViewFrameLayout2(FrameLayout view2, List<CallView> listCall, VideoClouds video) 
         {
 
             var bjFl = new FrameLayout
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Video/VideoMethod.cs b/HDL_ON/UI/UI2/FuntionControlView/Video/VideoMethod.cs
index 72536fd..c7d4797 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Video/VideoMethod.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Video/VideoMethod.cs
@@ -189,7 +189,7 @@
                         }
                         else
                         {
-                            Method method = new Method();
+                            PirMethod method = new PirMethod();
                             //鑷畾涔夐敊璇彁绀烘枃鏈�
                             string eorroText = "";
                             if (str == "鑾峰彇鍙瀵硅")
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Video/View/ShowDialog.cs b/HDL_ON/UI/UI2/FuntionControlView/Video/View/ShowDialog.cs
index 814a7ed..cbb2043 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Video/View/ShowDialog.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Video/View/ShowDialog.cs
@@ -130,7 +130,7 @@
                 Height = Application.GetRealHeight(32),
                 Width = Application.GetRealWidth(82+5),
                 TextColor = MusicColor.SelectedColor,
-                TextSize =20,//24
+                TextSize =18,//24
                 TextAlignment = TextAlignment.Center,
                 IsBold = true,
                 Text = str1,

--
Gitblit v1.8.0