From d7e25d6a5960b3495cd4d8a67545410e03ca7962 Mon Sep 17 00:00:00 2001
From: wxr <464027401@qq.com>
Date: 星期日, 06 六月 2021 16:42:08 +0800
Subject: [PATCH] Merge branch 'wxr4' into temp-wxr

---
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irtvxm_white.png                          |    0 
 HDL-ON_Android/Properties/AndroidManifest.xml                                                    |    2 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconRight.png                          |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorMegahealth/AddSenesorMegahealthDirection1Page.cs |  165 ++++++
 HDL-ON_Android/Assets/Phone/FunctionIcon/ArmSensor/SomeoneInBgIcon.png                           |    0 
 HDL-ON_Android/Assets/Language.ini                                                               |  193 +++++++
 HDL-ON_Android/Assets/Phone/FunctionIcon/ArmSensor/SomeoneFellBgIcon.png                         |    0 
 HDL-ON_iOS/HDL-ON_iOS.csproj                                                                     |   15 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/irtvxm_blue.png                           |    0 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/TVPageBLL.cs                                         |   21 
 HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/DeviceListPage.cs                                     |   24 
 HDL_ON/HDL_ON.projitems                                                                          |   16 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/irtvxm.png                                          |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconRight.png                         |    0 
 HDL-ON_Android/HDL-ON_Android.csproj                                                             |   15 
 HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs                                                          |   60 +-
 HDL-ON_iOS/Info.plist                                                                            |    4 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconUp.png                             |    0 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/IrFanPage.cs                                         |   10 
 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/Entity/Function/Scene.cs                                                                  |    9 
 HDL-ON_Android/Assets/Phone/FunctionIcon/ArmSensor/UnderProtectionBgIcon.png                     |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/MiniRemoteControl/AddMiniRemoteControlDirection2Page.cs |    0 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/irtvxm.png                                         |    0 
 HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs                                             |    3 
 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/Electrical/TV/TVOkIconOk.png                            |    0 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/StbPage.cs                                           |   35 +
 HDL-ON_Android/Assets/Phone/Public/Scan.png                                                      |    0 
 HDL_ON/Entity/Function/Function.cs                                                               |   36 +
 HDL-ON_iOS/Resources/Phone/Public/Scan.png                                                       |    0 
 HDL_ON/UI/UI0-Public/OperationSuccessPromptPage.cs                                               |   15 
 HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorMegahealth/SenesorMegahealthManagerPage.cs       |  117 ++++
 HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconDown.png                          |    0 
 HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SenesorMegahealthPage.cs                              |  183 +++++++
 HDL-ON_iOS/Resources/Phone/FunctionIcon/ArmSensor/SomeoneInBgIcon.png                            |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/irtvxm_white.png                           |    0 
 HDL_ON/UI/UI2/FuntionControlView/Electrical/PjtPage.cs                                           |   47 +
 HDL-ON_iOS/Resources/Phone/PersonalCenter/AddDevice/SenesorMegahealthBg.png                      |    0 
 HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs                                                        |    6 
 HDL_ON/UI/UI2/1-HomePage/HomePage.cs                                                             |    5 
 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/FuntionControlView/EnvironmentalScience/EchartsOption_BrokenLine.cs                |    1 
 HDL_ON/UI/UI0-Public/Widget/EmptyTipView.cs                                                      |   16 
 HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Matching.cs                                             |   16 
 HDL-ON_Android/Assets/Phone/PersonalCenter/AddDevice/SenesorMegahealthBg.png                     |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Electrical/TV/TVOkIconOk.png                             |    0 
 HDL_ON/UI/UI2/FuntionControlView/Energy/EnergyMainPage.cs                                        |   26 
 HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/AddDevciePage.cs                                      |   12 
 HDL-ON_iOS/Resources/Language.ini                                                                |  193 +++++++
 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 
 .vs/HDL_APP_Project/xs/UserPrefs.xml                                                             |   64 +
 HDL_ON/DAL/DriverLayer/Control.cs                                                                |   93 ++-
 HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorDoorWinwsPage.cs                                |    2 
 HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/MiniRemoteControl/AddMiniRemoteControlDirection1Page.cs |    0 
 HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorWaterImmersionPage.cs                           |    2 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconLeft.png                          |    0 
 HDL_ON/Entity/FunctionList.cs                                                                    |   22 
 HDL-ON_Android/Assets/Phone/FunctionIcon/Electrical/TV/TVOkIconUp.png                            |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/ArmSensor/SomeoneFellBgIcon.png                          |    0 
 HDL_ON/DAL/Server/NewAPI.cs                                                                      |    4 
 HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/MiniRemoteControl/AddThirdPartyDeviceMenuListPage.cs    |    0 
 HDL_ON/Common/R.cs                                                                               |   41 +
 HDL_ON/DAL/Server/HttpServerRequest.cs                                                           |   28 +
 70 files changed, 1,353 insertions(+), 157 deletions(-)

diff --git a/.vs/HDL_APP_Project/xs/UserPrefs.xml b/.vs/HDL_APP_Project/xs/UserPrefs.xml
index 7d9bb56..47df2ca 100644
--- a/.vs/HDL_APP_Project/xs/UserPrefs.xml
+++ b/.vs/HDL_APP_Project/xs/UserPrefs.xml
@@ -1,28 +1,48 @@
-锘�<Properties StartupConfiguration="{09712674-2A38-407B-B1E2-560B2C352F9A}|Default">
+锘�<Properties StartupConfiguration="{D998E133-F0DD-4760-BE3C-461632F54DA4}|Default">
   <MonoDevelop.Ide.ItemProperties.HDL-ON__iOS automaticSigning="False" PreferredExecutionTarget="MonoDevelop.IPhone.IPhoneDeviceTarget.6242be7109c740c6cb8999a8904b6e0ea8d45192" />
-  <MonoDevelop.Ide.Workbench ActiveDocument="HDL_ON/DAL/Server/NewAPI.cs">
+  <MonoDevelop.Ide.Workbench ActiveDocument="HDL_ON/DAL/DriverLayer/Control.cs">
     <Files>
-      <File FileName="HDL_ON/UI/UI2/2-Classification/RoomPage.cs" Line="72" Column="11" />
-      <File FileName="HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs" Line="9" Column="45" />
-      <File FileName="HDL_ON/UI/UI2/FuntionControlView/Energy/EnergyMainPage.cs" Line="692" Column="21" />
-      <File FileName="HDL_ON/DAL/Mqtt/MqttClient.cs" Line="693" Column="36" />
-      <File FileName="HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSensorPage.cs" Line="363" Column="55" />
-      <File FileName="HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs" Line="531" Column="80" />
-      <File FileName="HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPageBLL.cs" Line="265" Column="45" />
-      <File FileName="HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/BrandListPage.cs" Line="157" Column="50" />
-      <File FileName="HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/DeviceListPage.cs" Line="127" Column="74" />
-      <File FileName="HDL_ON/UI/UI1-Login/LoginPage.cs" Line="203" Column="52" />
-      <File FileName="HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalSciencePage.cs" Line="1" Column="1" />
-      <File FileName="HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalPage.cs" Line="179" Column="46" />
-      <File FileName="HDL_ON/Entity/ResponseEntity/CityInfo.cs" Line="34" Column="16" />
-      <File FileName="HDL_ON/DAL/Server/HttpServerRequest.cs" Line="1841" Column="90" />
-      <File FileName="HDL_ON/DAL/Server/NewAPI.cs" Line="324" Column="23" />
+      <File FileName="HDL_ON/Common/R.cs" Line="9" Column="19" />
+      <File FileName="HDL-ON_iOS/Resources/Language.ini" />
+      <File FileName="HDL-ON_Android/Assets/Language.ini" />
+      <File FileName="HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/AddDevciePage.cs" />
+      <File FileName="HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/DeviceListPage.cs" />
+      <File FileName="HDL_ON/UI/MainPage.cs" />
+      <File FileName="HDL-ON_iOS/Info.plist" />
+      <File FileName="HDL_ON/DAL/Server/HttpUtil.cs" />
+      <File FileName="HDL_ON/UI/UI0-Stan/Form/Base/EditorCommonForm.cs" />
+      <File FileName="HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorMegahealth/SenesorMegahealthManagerPage.cs" />
+      <File FileName="HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs" />
+      <File FileName="HDL_ON/UI/UI2/2-Classification/FunctionControlZoneBLL.cs" />
+      <File FileName="HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs" />
+      <File FileName="HDL_ON/UI/UI2/FuntionControlView/ArmSensor/ArmSensorHistroyPaging.cs" />
+      <File FileName="HDL_ON/UI/UI0-Stan/Form/DeviceFunctionCardCommonForm.cs" />
+      <File FileName="HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SenesorMegahealthPage.cs" />
+      <File FileName="HDL_ON/DAL/DriverLayer/Control.cs" Line="675" Column="34" />
+      <File FileName="HDL_ON/DAL/Server/NewApiRes.cs" />
+      <File FileName="HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirSend.cs" />
+      <File FileName="HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs" />
+      <File FileName="HDL_ON/DAL/Server/HttpServerRequest.cs" />
+      <File FileName="HDL_ON/DAL/Server/NewAPI.cs" />
+      <File FileName="HDL_ON/DAL/Mqtt/MqttClient.cs" Line="424" Column="69" />
     </Files>
     <Pads>
       <Pad Id="ProjectPad">
         <State name="__root__">
           <Node name="HDL_APP_Project" expanded="True">
-            <Node name="HDL-ON_Android" selected="True" />
+            <Node name="HDL_ON" expanded="True">
+              <Node name="DAL" expanded="True">
+                <Node name="DriverLayer" expanded="True">
+                  <Node name="Control.cs" selected="True" />
+                </Node>
+                <Node name="Mqtt" expanded="True" />
+                <Node name="Server" expanded="True" />
+              </Node>
+              <Node name="Entity" expanded="True">
+                <Node name="Function" expanded="True" />
+              </Node>
+              <Node name="UI" expanded="True" />
+            </Node>
           </Node>
         </State>
       </Pad>
@@ -34,13 +54,17 @@
     <String>Shared.Droid.TouchID/Shared.Droid.TouchID.csproj</String>
     <String>Shared.IOS/Shared.IOS.csproj</String>
   </DisabledProjects>
-  <MonoDevelop.Ide.Workspace ActiveConfiguration="Release|iPhone" />
+  <MonoDevelop.Ide.Workspace ActiveConfiguration="Debug|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/DAL/Server/HttpServerRequest.cs" relfile="HDL_ON/DAL/Server/HttpServerRequest.cs" line="1841" 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" />
+      <Breakpoint file="/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/DAL/Server/HttpServerRequest.cs" relfile="HDL_ON/DAL/Server/HttpServerRequest.cs" line="1857" column="1" />
+      <Breakpoint file="/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorMegahealth/AddSenesorMegahealthDirection1Page.cs" relfile="HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorMegahealth/AddSenesorMegahealthDirection1Page.cs" line="119" column="1" />
+      <Breakpoint file="/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/DAL/Mqtt/MqttClient.cs" relfile="HDL_ON/DAL/Mqtt/MqttClient.cs" line="678" column="1" />
+      <Breakpoint file="/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/DAL/DriverLayer/Control.cs" relfile="HDL_ON/DAL/DriverLayer/Control.cs" line="673" column="1" />
     </BreakpointStore>
   </MonoDevelop.Ide.DebuggingService.Breakpoints>
   <MultiItemStartupConfigurations />
diff --git a/HDL-ON_Android/Assets/Language.ini b/HDL-ON_Android/Assets/Language.ini
index e9bb792..c86eddb 100644
--- a/HDL-ON_Android/Assets/Language.ini
+++ b/HDL-ON_Android/Assets/Language.ini
@@ -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
@@ -446,6 +446,18 @@
 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
@@ -536,6 +548,30 @@
 1085=2nd Gear
 1086=3rd Gear
 
+
+
+
+
+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
@@ -584,7 +620,147 @@
 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
+
+
+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
@@ -1248,6 +1424,17 @@
 459=瀹炴椂鑳借��
 460=鏈湀鑳借��
 461=瀹ゅ/瀹ゅ唴
+462=鎮ㄥ綋鍓嶈繕鏈坊鍔犱换浣曡澶�
+463=璇疯緭鍏ヨ澶囨満涓婄殑sn鐮�
+464=鍙互寮�濮嬩娇鐢ㄥ厗瑙傛绫虫尝浜�
+465=鍒犻櫎璁惧
+466=鏈洪《鐩�
+467=鎶曞奖浠�
+468=鏈変汉璺屽��
+469=鏈変汉杩涘叆
+470=闃叉姢涓�
+471=姣背娉紶鎰熷櫒
+
 
 1000=瀹ゅ唴婀垮害
 1001=绔ラ攣
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/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/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/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 aa3ea82..efa837a 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>
@@ -1143,6 +1143,19 @@
     <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 361acf9..81d934a 100644
--- a/HDL-ON_Android/Properties/AndroidManifest.xml
+++ b/HDL-ON_Android/Properties/AndroidManifest.xml
@@ -1,5 +1,5 @@
 锘�<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="202105252" android:versionName="1.2.202105252" package="com.hdl.onpro">
+<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="202105255" android:versionName="1.2.202105255" package="com.hdl.onpro">
 	<uses-sdk android:minSdkVersion="26" android:targetSdkVersion="29" />
 	<!--  鍙瀵硅鏉冮檺-->
 	<uses-permission android:name="android.permission.CAMERA" />
diff --git a/HDL-ON_iOS/HDL-ON_iOS.csproj b/HDL-ON_iOS/HDL-ON_iOS.csproj
index 2de0050..fc3a4d3 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-20210519-1</CodesignProvision>
+<CodesignProvision>On+Dev-20210604-1</CodesignProvision>
     </PropertyGroup>
     <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
         <DebugType>none</DebugType>
@@ -1246,6 +1246,19 @@
       <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 270e485..9d26e8c 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.202105252</string>
+	<string>1.2.202105255</string>
 	<key>CFBundleVersion</key>
-	<string>1.2.05252</string>
+	<string>1.2.05255</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 e9bb792..c86eddb 100644
--- a/HDL-ON_iOS/Resources/Language.ini
+++ b/HDL-ON_iOS/Resources/Language.ini
@@ -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
@@ -446,6 +446,18 @@
 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
@@ -536,6 +548,30 @@
 1085=2nd Gear
 1086=3rd Gear
 
+
+
+
+
+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
@@ -584,7 +620,147 @@
 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
+
+
+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
@@ -1248,6 +1424,17 @@
 459=瀹炴椂鑳借��
 460=鏈湀鑳借��
 461=瀹ゅ/瀹ゅ唴
+462=鎮ㄥ綋鍓嶈繕鏈坊鍔犱换浣曡澶�
+463=璇疯緭鍏ヨ澶囨満涓婄殑sn鐮�
+464=鍙互寮�濮嬩娇鐢ㄥ厗瑙傛绫虫尝浜�
+465=鍒犻櫎璁惧
+466=鏈洪《鐩�
+467=鎶曞奖浠�
+468=鏈変汉璺屽��
+469=鏈変汉杩涘叆
+470=闃叉姢涓�
+471=姣背娉紶鎰熷櫒
+
 
 1000=瀹ゅ唴婀垮害
 1001=绔ラ攣
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/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/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/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/R.cs b/HDL_ON/Common/R.cs
index 3a5c9e3..6d72a47 100644
--- a/HDL_ON/Common/R.cs
+++ b/HDL_ON/Common/R.cs
@@ -4,6 +4,47 @@
 {
     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>
diff --git a/HDL_ON/DAL/DriverLayer/Control.cs b/HDL_ON/DAL/DriverLayer/Control.cs
index f66b0e0..559605c 100644
--- a/HDL_ON/DAL/DriverLayer/Control.cs
+++ b/HDL_ON/DAL/DriverLayer/Control.cs
@@ -477,47 +477,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 });
             }
         }
 
@@ -661,15 +669,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 +678,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)
                         {
@@ -837,7 +852,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/Server/HttpServerRequest.cs b/HDL_ON/DAL/Server/HttpServerRequest.cs
index 65389f4..bac8ac7 100644
--- a/HDL_ON/DAL/Server/HttpServerRequest.cs
+++ b/HDL_ON/DAL/Server/HttpServerRequest.cs
@@ -1290,6 +1290,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)
@@ -1817,7 +1820,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);
@@ -1836,10 +1842,28 @@
             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)
+        {
+            Dictionary<string, object> d = new Dictionary<string, object>();
+            d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
+            d.Add("spk", spk);
+            d.Add("extDevId", extDevId);
+
+            var requestJson = HttpUtil.GetSignRequestJson(d);
+            return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_IndependentRegister3TyDevcie, requestJson);
+        }
+
+
+
 
         /// <summary>
         /// 鑾峰彇璁惧璇︽儏
diff --git a/HDL_ON/DAL/Server/NewAPI.cs b/HDL_ON/DAL/Server/NewAPI.cs
index 17e079e..c3ce296 100644
--- a/HDL_ON/DAL/Server/NewAPI.cs
+++ b/HDL_ON/DAL/Server/NewAPI.cs
@@ -328,6 +328,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";
diff --git a/HDL_ON/Entity/Function/Function.cs b/HDL_ON/Entity/Function/Function.cs
index db891e9..35baaa8 100644
--- a/HDL_ON/Entity/Function/Function.cs
+++ b/HDL_ON/Entity/Function/Function.cs
@@ -777,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";
@@ -941,6 +945,8 @@
 
     public static class SPK
     {
+       
+
 
         #region 鐏厜
         /// <summary>
@@ -1240,6 +1246,10 @@
         /// </summary>
         public const string TvIr = "ir.tv";
         /// <summary>
+        /// 绾㈠銆佸皬绫崇數瑙�
+        /// </summary>
+        public const string TvXmIr = "ir.tvxm";
+        /// <summary>
         /// 瀹剁數銆侀鎵�
         /// </summary>
         public const string ElectricFan = "electrical.fan";
@@ -1306,6 +1316,7 @@
             spkList.Add(ElectricSocket);
             spkList.Add(ElectricTV);
             spkList.Add(TvIr);
+            spkList.Add(TvXmIr);
             spkList.Add(ElectricFan);
             spkList.Add(ClothesHanger);
             spkList.Add(IrLearn);
@@ -1340,7 +1351,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>
@@ -1351,16 +1376,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>
@@ -1371,6 +1399,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 cc4379a..f4bdd83 100644
--- a/HDL_ON/Entity/Function/Scene.cs
+++ b/HDL_ON/Entity/Function/Scene.cs
@@ -352,7 +352,14 @@
             {
                 return Language.StringByID(StringId.NoDelay);
             }
-            string text = (delayInt / 60)+Language.StringByID(StringId.m)+(delayInt % 60)+Language.StringByID(StringId.s);
+            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/HDL_ON.projitems b/HDL_ON/HDL_ON.projitems
index ef68471..6145835 100644
--- a/HDL_ON/HDL_ON.projitems
+++ b/HDL_ON/HDL_ON.projitems
@@ -359,11 +359,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,6 +404,15 @@
     <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\" />
@@ -454,5 +458,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/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/PublicAssmeblyBLL.cs b/HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs
index ac8c136..82d5d2b 100644
--- a/HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs
+++ b/HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs
@@ -76,6 +76,7 @@
                         break;
                     case SPK.ElectricTV:
                     case SPK.TvIr:
+                    case SPK.TvXmIr:
                         var tvView = new TVPage(function);
                         MainPage.BasePageView.AddChidren(tvView);
                         tvView.LoadPage(btnCollectionIcon, btnName, btnFromFloor);
@@ -142,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/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/Form/DeviceFunctionCardCommonForm.cs b/HDL_ON/UI/UI0-Stan/Form/DeviceFunctionCardCommonForm.cs
index 1ff1ef2..1250082 100644
--- a/HDL_ON/UI/UI0-Stan/Form/DeviceFunctionCardCommonForm.cs
+++ b/HDL_ON/UI/UI0-Stan/Form/DeviceFunctionCardCommonForm.cs
@@ -140,8 +140,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/UI2/1-HomePage/HomePage.cs b/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
index 1badfb1..0d4f5f3 100644
--- a/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
+++ b/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
@@ -946,10 +946,9 @@
                     LoadEvent_ControlCurtain(function, btnCurtainClose, btnCurtainOpen);
                 }
 
-                else if (function.spk == SPK.ElectricTV || function.spk == SPK.TvIr
-                    ||function.spk == SPK.StbIr || function.spk == SPK.PjtIr)
+                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/Icon/HomeIcon/{function.IconName}_blue.png";
                     //btnIcon.SelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_white.png";
 
diff --git a/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs b/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs
index 79ccdd8..1883317 100644
--- a/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs
+++ b/HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs
@@ -27,45 +27,51 @@
         /// </summary>
         public static void LoadEvent_RefreshEnvirIndoorHumi()
         {
-            if (bodyView != null)
+            Application.RunOnMainThread(() =>
             {
-                var humiSensorList = FunctionList.List.GetEnvirSensorsList().FindAll((obj) => obj.spk == SPK.SensorHumidity);
-                double humiTotalValues = 0;
-                foreach (var temp in humiSensorList)
+                if (bodyView != null)
                 {
-                    double humiValue = 0;
-                    double.TryParse(temp.GetAttrState(FunctionAttributeKey.Value), out humiValue);
-                    humiTotalValues += humiValue;
+                    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();
                 }
-                if (humiTotalValues > 0)
-                {
-                    bodyView.btnIndoorHumiValues.Text = "/" + humiTotalValues + "%";
-                }
-                bodyView.btnIndoorHumiValues.Width = bodyView.btnIndoorHumiValues.GetTextWidth();
-            }
+            });
         }
 
         /// <summary>
         /// 鏇存柊瀹ゅ唴浼犳劅鍣ㄦ暟鎹�-鏅氱偣
         /// </summary>
         public static void LoadEvent_RefreshEnvirIndoorTemp()
-        {
-            if (bodyView != null)
+        { 
+            Application.RunOnMainThread(() =>
             {
-                var tempSensorList = FunctionList.List.GetEnvirSensorsList().FindAll((obj) => obj.spk == SPK.SensorTemperature);
-                double tempTotalValues = 0;
-                foreach (var temp in tempSensorList)
+                if (bodyView != null)
                 {
-                    double tempValue = 0;
-                    double.TryParse(temp.GetAttrState(FunctionAttributeKey.Value), out tempValue);
-                    tempTotalValues += tempValue;
+                    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();
                 }
-                if (tempTotalValues > 0)
-                {
-                    bodyView.btnIndoorTempValues.Text = "/" + tempTotalValues + "掳";
-                }
-                bodyView.btnIndoorTempValues.Width = bodyView.btnIndoorTempValues.GetTextWidth();
-            }
+            });
         }
 
         /// <summary>
diff --git a/HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs b/HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs
index 085e701..2f3552a 100644
--- a/HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs
+++ b/HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs
@@ -562,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/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..2d0768c
--- /dev/null
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorMegahealth/AddSenesorMegahealthDirection1Page.cs
@@ -0,0 +1,165 @@
+锘縰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);
+                            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();
+                                    this.CloseForm();
+                                });
+                            }
+                            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..acd8f61
--- /dev/null
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/AddDevice/SenesorMegahealth/SenesorMegahealthManagerPage.cs
@@ -0,0 +1,117 @@
+锘縰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 is planned to be used in the corresponding category for security sensor.";
+            }
+
+            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();
+                }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..00b0713 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,13 @@
                                 refreshView.BeginHeaderRefreshing();
                             }; 
                             break;
+                        case SPK.SenesorMegahealth:
+                            var form1 = new AddSenesorMegahealthDirection1Page();
+                            form1.AddForm(device);
+                            form1.AddDeviceEvent = (functionObj) => {
+                                refreshView.BeginHeaderRefreshing();
+                            };
+                            break;
                     }
                 };
             }
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/DeviceListPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/DeviceListPage.cs
index db0e205..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)
             {
@@ -154,6 +166,14 @@
                         case SPK.IrModule:
                             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/Matching.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Matching.cs
index cf58a30..a56be68 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Matching.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Matching.cs
@@ -215,6 +215,22 @@
                 {
                     var library = libraryList[index-1];
                     var control = GetControl(spk, testBtn.TextID, library);
+
+                    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) =>  
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
index 0725212..523142c 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/PjtPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/PjtPage.cs
@@ -322,7 +322,7 @@
 
             #endregion
 
-            new TopViewDiv(bodyView, Language.StringByID(StringId.TV)).LoadTopView_FunctionTop(device, actionRefresh);
+            new TopViewDiv(bodyView, Language.StringByID(StringId.PJT)).LoadTopView_FunctionTop(device, actionRefresh);
             DriverLayer.Control.Ins.SendReadCommand(device);
 
             LoadEventList();
@@ -546,7 +546,7 @@
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     Dictionary<string, string> d = new Dictionary<string, string>();
-                    d.Add("ch+", "");
+                    d.Add("zoom+", "");
                     Control.Ins.SendWriteCommand(device, d);
                 }
             };
@@ -555,7 +555,7 @@
                 if (DB_ResidenceData.Instance.GatewayType == 1)
                 {
                     Dictionary<string, string> d = new Dictionary<string, string>();
-                    d.Add("ch-", "");
+                    d.Add("zoom-", "");
                     Control.Ins.SendWriteCommand(device, d);
                 }
             };
@@ -586,16 +586,6 @@
                     Control.Ins.SendWriteCommand(device, 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(device, d);
-                }
-            };
             btnPower.MouseUpEventHandler = (sender, e) =>
             {
                 if (DB_ResidenceData.Instance.GatewayType == 1)
@@ -606,7 +596,34 @@
                 }
             };
 
+
+            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>();
@@ -615,6 +632,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>();
@@ -623,6 +641,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>();
@@ -631,6 +650,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>();
@@ -639,6 +659,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/Electrical/StbPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Electrical/StbPage.cs
index c007007..b96c396 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Electrical/StbPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Electrical/StbPage.cs
@@ -337,7 +337,7 @@
 
             LoadEventList();
 
-            new TopViewDiv(bodyView, Language.StringByID(StringId.TV)).LoadTopView_FunctionTop(function, actionRefresh);
+            new TopViewDiv(bodyView, Language.StringByID(StringId.STB)).LoadTopView_FunctionTop(function, actionRefresh);
             DriverLayer.Control.Ins.SendReadCommand(function);
 
         }
@@ -558,7 +558,34 @@
                 }
             };
 
+
+            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>();
@@ -567,6 +594,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>();
@@ -575,6 +603,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>();
@@ -583,6 +612,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>();
@@ -591,6 +621,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>();
@@ -598,6 +629,8 @@
                     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/EnergyMainPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Energy/EnergyMainPage.cs
index 0bccd57..f6365e3 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Energy/EnergyMainPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Energy/EnergyMainPage.cs
@@ -386,13 +386,15 @@
                 brokenLine.YvalueText = "";
                 foreach (var ene in queryList)
                 {
-                    brokenLine.YvalueText += ene.GetAttrState("ydata") + ",";
+                    brokenLine.YvalueText += ene.GetAttrState("ydata");
                 }
+                var opString = brokenLine.InitOption();
 
                 Application.RunOnMainThread(() =>
                 {
-                    myEchartsView.ShowWithOption(brokenLine.InitOption());
+                    myEchartsView.ShowWithOption(opString);
                 });
+
                 return;
             }
 
@@ -427,21 +429,17 @@
                                     vs.Add(data.fieldName);
                                 }
                                 brokenLine.InitXdataText(vs);
-
-                                if (sr.GetAttribute("ydata") == null)
-                                {
-                                    sr.attributes.Add(new FunctionAttributes() { key = "ydata" });
-                                }
-                                sr.SetAttrState("ydata", brokenLine.InitYdataText(sr.name, revertData, sr.GetAttrState("color")) + ",");
                             }
-                            else
+                            if (sr.GetAttribute("ydata") == null)
                             {
-                                if (sr.GetAttribute("ydata") == null)
-                                {
-                                    sr.attributes.Add(new FunctionAttributes() { key = "ydata" });
-                                }
-                                sr.SetAttrState("ydata", brokenLine.InitYdataText(sr.name, revertData, sr.GetAttrState("color"))+",");
+                                sr.attributes.Add(new FunctionAttributes() { key = "ydata" });
                             }
+                            sr.SetAttrState("ydata", brokenLine.InitYdataText(sr.name, revertData, sr.GetAttrState("color")) + ",");
+                            //if (sr.GetAttribute("ydata") == null)
+                            //{
+                            //    sr.attributes.Add(new FunctionAttributes() { key = "ydata" });
+                            //}
+                            //sr.SetAttrState("ydata", brokenLine.InitYdataText(sr.name, revertData, sr.GetAttrState("color")) + ",");
                         }
                     }
                     brokenLine.yTitle = Language.StringByID(StringId.EnergyConsumption) + "(kW)";
diff --git a/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EchartsOption_BrokenLine.cs b/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EchartsOption_BrokenLine.cs
index c6edf75..2f3bccc 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EchartsOption_BrokenLine.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EchartsOption_BrokenLine.cs
@@ -38,6 +38,7 @@
             newstring = newstring.Replace("{1}", YvalueText);
             newstring = newstring.Replace("{10}", xTitle);
             newstring = newstring.Replace("{20}", yTitle);
+            newstring = newstring.Replace(",,",",");
             return newstring;
         }
 

--
Gitblit v1.8.0