From e76381c3393d284f3f8ab61930cb6b71f18b2d6b Mon Sep 17 00:00:00 2001
From: wxr <wxr@hdlchina.com.cn>
Date: 星期二, 13 八月 2024 14:43:43 +0800
Subject: [PATCH] 金茂定制热水器,光伏储能,UI完成

---
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/EsIconShutdown.png                  |    0 
 HDL-ON_Android/Properties/AndroidManifest.xml                                             |    2 
 HDL-ON_Android/Assets/Language.ini                                                        |    9 
 HDL_ON/UI/UI2/FuntionControlView/Acst/InverterJinmaoHistroyPage.cs                        |  451 ++++++
 HDL-ON_iOS/HDL-ON_iOS.csproj                                                              |   35 
 HDL_ON/Entity/Function/InverterJinmao.cs                                                  |  123 +
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/ElectricityConsumptionIcon.png      |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/SocialContributionInfoIcon_Coal.png |    0 
 HDL_ON/HDL_ON.projitems                                                                   |    7 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/PvIconRun.png                       |    0 
 HDL_ON/UI/UI2/FuntionControlView/Curtain/CurtainDreamPage.cs                              |   27 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/BatteryIconFault.png                |    0 
 HDL_ON/Entity/Enumerative/MyEnum.cs                                                       |    4 
 HDL_ON/UI/UI1-Login/LoginPage.cs                                                          |  221 ++-
 HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EchartsOption_Histogram.cs          |  144 ++
 HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/CacHistoryChoosePage.cs                     |   12 
 HDL_ON/UI/UI2/FuntionControlView/Acst/AcstSubHistoryPage.cs                               |  101 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/ElectricityGenerationIcon.png       |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/SocialContributionInfoBg_3.png   |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/SocialContributionInfoBg_2.png   |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/PowerOffIcon.png                        |    0 
 HDL_ON/Entity/DB_ResidenceData.cs                                                         |    2 
 HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs                                      |   65 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/BatteryIconDischarg.png             |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/EnergyStorageStatusBg.png           |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/SocialContributionInfoIcon_1.png |    0 
 HDL_ON/UI/UI0-Public/TopViewDiv.cs                                                        |    4 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/PreIcon.png                      |    0 
 HDL_ON/Entity/Function/WaterHeaterJinmao.cs                                               |   75 +
 HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/CacWeekHistoryPage.cs                       |   47 
 HDL_ON/Entity/Function/Function.cs                                                        |   10 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/SocialContributionInfoBg_1.png   |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/BatteryIconShutdown.png             |    0 
 HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs                                      |   28 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/PvBgRun.png                         |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/PvBgDischarge.png                   |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/SocialContributionInfoIcon_2.png |    0 
 HDL_ON/UI/UI2/FuntionControlView/Acst/WaterHeaterJinmaoPage.cs                            |  796 +++++++++++
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/PvIconFault.png                     |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/Mode_QuickHeat.png               |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/ModeFree_False.png               |    0 
 HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs                                                 |   20 
 HDL_ON/UI/UI2/1-HomePage/HomePage.cs                                                      |  126 +
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/TempBg.png                       |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/EsIconDischarge.png                 |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/SocialContributionInfoBg_Coal.png   |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/BatteryIconCharg.png                |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/SocialContributionInfoIcon_3.png |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/ElectricityConsumptionBg.png        |    0 
 HDL-ON_iOS/Resources/Language.ini                                                         |    9 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/ElectricityGenerationBg.png         |    0 
 HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/CacDayHistoryPage.cs                        |   64 
 HDL_ON/UI/UI2/FuntionControlView/Acst/AcstSubPage.cs                                      |    5 
 HDL_ON/DAL/DriverLayer/Control.cs                                                         |    4 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/EsIconFault.png                     |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/PvIconStandby.png                   |    0 
 HDL_ON/UI/UI2/FuntionControlView/Acst/AcstParentPage.cs                                   |  248 ++-
 HDL_ON/Entity/FunctionList.cs                                                             |   61 
 HDL_ON/UI/UI1-Login/RegisterPage.cs                                                       |   11 
 HDL_ON/UI/UI1-Login/SelectServerDialog.cs                                                 |    5 
 HDL_ON/UI/UI2/FuntionControlView/Acst/WetarHeaterJinmaoHistoryPage.cs                     |  448 ++++++
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/Mode_Economic_On.png             |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/NextIcon.png                     |    0 
 HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/EsIconCharg.png                     |    0 
 HDL_ON/Common/R.cs                                                                        |    5 
 HDL_ON/UI/UI2/FuntionControlView/Acst/InverterJinmaoPage.cs                               |  971 ++++++++++++++
 66 files changed, 3,718 insertions(+), 422 deletions(-)

diff --git a/HDL-ON_Android/Assets/Language.ini b/HDL-ON_Android/Assets/Language.ini
index 5d74616..0a74118 100644
--- a/HDL-ON_Android/Assets/Language.ini
+++ b/HDL-ON_Android/Assets/Language.ini
@@ -690,6 +690,7 @@
 703=Chinese users choose
 704=Non Chinese users choose
 705=Please select a server
+706=NewEnergy
 
 
 
@@ -2095,6 +2096,8 @@
 703=涓浗鐢ㄦ埛閫夋嫨
 704=闈炰腑鍥界敤鎴烽�夋嫨
 705=璇烽�夋嫨鏈嶅姟鍣�
+706=鏂拌兘婧�
+
 
 
 
@@ -3496,6 +3499,7 @@
 703=Chinese users choose
 704=Non Chinese users choose
 705=Please select a server
+706=NewEnergy
 
 
 
@@ -4893,6 +4897,9 @@
 703=Chinese users choose
 704=Non Chinese users choose
 705=Please select a server
+706=NewEnergy
+
+
 
 
 2532=Visitor Invitation Record
@@ -6276,6 +6283,7 @@
 703=Chinese users choose
 704=Non Chinese users choose
 705=Please select a server
+706=NewEnergy
 
 
 
@@ -7679,6 +7687,7 @@
 703=Chinese users choose
 704=Non Chinese users choose
 705=Please select a server
+706=NewEnergy
 
 
 
diff --git a/HDL-ON_Android/Properties/AndroidManifest.xml b/HDL-ON_Android/Properties/AndroidManifest.xml
index 8d5327d..e96b57f 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:versionName="2.5.0" package="com.hdl.onpro" xmlns:tools="http://schemas.android.com/tools" android:versionCode="202407022">
+<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="2.5.0" package="com.hdl.onpro" xmlns:tools="http://schemas.android.com/tools" android:versionCode="202408091">
 	<uses-sdk android:minSdkVersion="26" android:targetSdkVersion="29" />
 	<uses-permission android:name="android.permission.RECEIVE_SMS" />
 	<!--绋嬪簭鍙互璇诲彇璁惧澶栭儴瀛樺偍绌洪棿(鍐呯疆SDcard鍜屽缃甋DCard)鐨勬枃浠讹紝鎴戠殑鏂囦欢绛�-->
diff --git a/HDL-ON_iOS/HDL-ON_iOS.csproj b/HDL-ON_iOS/HDL-ON_iOS.csproj
index 3b72080..684300b 100644
--- a/HDL-ON_iOS/HDL-ON_iOS.csproj
+++ b/HDL-ON_iOS/HDL-ON_iOS.csproj
@@ -517,6 +517,8 @@
         <Folder Include="Resources\Phone\FunctionIcon\Inverter\" />
         <Folder Include="Resources\Phone\FunctionIcon\Electrical\MechanicalArm\" />
         <Folder Include="Resources\Phone\FunctionIcon\GroupControl\" />
+        <Folder Include="Resources\Phone\FunctionIcon\Acst\WaterHeater\" />
+        <Folder Include="Resources\Phone\FunctionIcon\Acst\Inverter\" />
     </ItemGroup>
     <ItemGroup>
         <InterfaceDefinition Include="LaunchScreen.storyboard" />
@@ -1804,6 +1806,39 @@
       <BundleResource Include="Resources\ic_esvideo_on_takephoto_unselect.png" />
       <BundleResource Include="Resources\ic_esvideo_on_unlock_select.png" />
       <BundleResource Include="Resources\ic_esvideo_on_unlock_unselect.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\grey\PowerOffIcon.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\WaterHeater\ModeFree_False.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\WaterHeater\TempBg.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\WaterHeater\Mode_Economic_On.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\WaterHeater\Mode_QuickHeat.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\WaterHeater\SocialContributionInfoBg_1.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\WaterHeater\SocialContributionInfoBg_2.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\WaterHeater\SocialContributionInfoBg_3.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\WaterHeater\SocialContributionInfoIcon_1.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\WaterHeater\SocialContributionInfoIcon_2.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\WaterHeater\SocialContributionInfoIcon_3.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\WaterHeater\NextIcon.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\WaterHeater\PreIcon.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\Inverter\ElectricityConsumptionBg.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\Inverter\ElectricityGenerationBg.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\Inverter\ElectricityConsumptionIcon.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\Inverter\ElectricityGenerationIcon.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\Inverter\BatteryIconCharg.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\Inverter\BatteryIconDischarg.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\Inverter\BatteryIconFault.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\Inverter\BatteryIconShutdown.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\Inverter\EsIconCharg.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\Inverter\EsIconDischarge.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\Inverter\EsIconFault.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\Inverter\EsIconShutdown.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\Inverter\PvBgDischarge.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\Inverter\PvBgRun.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\Inverter\PvIconFault.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\Inverter\PvIconRun.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\Inverter\PvIconStandby.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\Inverter\SocialContributionInfoBg_Coal.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\Inverter\SocialContributionInfoIcon_Coal.png" />
+      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\Inverter\EnergyStorageStatusBg.png" />
     </ItemGroup>
     <ItemGroup>
       <ITunesArtwork Include="iTunesArtwork" />
diff --git a/HDL-ON_iOS/Resources/Language.ini b/HDL-ON_iOS/Resources/Language.ini
index 5d74616..0a74118 100644
--- a/HDL-ON_iOS/Resources/Language.ini
+++ b/HDL-ON_iOS/Resources/Language.ini
@@ -690,6 +690,7 @@
 703=Chinese users choose
 704=Non Chinese users choose
 705=Please select a server
+706=NewEnergy
 
 
 
@@ -2095,6 +2096,8 @@
 703=涓浗鐢ㄦ埛閫夋嫨
 704=闈炰腑鍥界敤鎴烽�夋嫨
 705=璇烽�夋嫨鏈嶅姟鍣�
+706=鏂拌兘婧�
+
 
 
 
@@ -3496,6 +3499,7 @@
 703=Chinese users choose
 704=Non Chinese users choose
 705=Please select a server
+706=NewEnergy
 
 
 
@@ -4893,6 +4897,9 @@
 703=Chinese users choose
 704=Non Chinese users choose
 705=Please select a server
+706=NewEnergy
+
+
 
 
 2532=Visitor Invitation Record
@@ -6276,6 +6283,7 @@
 703=Chinese users choose
 704=Non Chinese users choose
 705=Please select a server
+706=NewEnergy
 
 
 
@@ -7679,6 +7687,7 @@
 703=Chinese users choose
 704=Non Chinese users choose
 705=Please select a server
+706=NewEnergy
 
 
 
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/BatteryIconCharg.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/BatteryIconCharg.png
new file mode 100644
index 0000000..be81759
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/BatteryIconCharg.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/BatteryIconDischarg.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/BatteryIconDischarg.png
new file mode 100644
index 0000000..9220a3e
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/BatteryIconDischarg.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/BatteryIconFault.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/BatteryIconFault.png
new file mode 100644
index 0000000..2340d15
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/BatteryIconFault.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/BatteryIconShutdown.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/BatteryIconShutdown.png
new file mode 100644
index 0000000..f100885
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/BatteryIconShutdown.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/ElectricityConsumptionBg.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/ElectricityConsumptionBg.png
new file mode 100644
index 0000000..601dc35
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/ElectricityConsumptionBg.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/ElectricityConsumptionIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/ElectricityConsumptionIcon.png
new file mode 100644
index 0000000..6294feb
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/ElectricityConsumptionIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/ElectricityGenerationBg.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/ElectricityGenerationBg.png
new file mode 100644
index 0000000..e5b8d1e
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/ElectricityGenerationBg.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/ElectricityGenerationIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/ElectricityGenerationIcon.png
new file mode 100644
index 0000000..00d0d77
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/ElectricityGenerationIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/EnergyStorageStatusBg.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/EnergyStorageStatusBg.png
new file mode 100644
index 0000000..40e3ca0
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/EnergyStorageStatusBg.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/EsIconCharg.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/EsIconCharg.png
new file mode 100644
index 0000000..e307f25
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/EsIconCharg.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/EsIconDischarge.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/EsIconDischarge.png
new file mode 100644
index 0000000..15ae7f0
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/EsIconDischarge.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/EsIconFault.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/EsIconFault.png
new file mode 100644
index 0000000..699d4ee
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/EsIconFault.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/EsIconShutdown.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/EsIconShutdown.png
new file mode 100644
index 0000000..e009295
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/EsIconShutdown.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/PvBgDischarge.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/PvBgDischarge.png
new file mode 100644
index 0000000..b00cac3
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/PvBgDischarge.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/PvBgRun.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/PvBgRun.png
new file mode 100644
index 0000000..4fe6422
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/PvBgRun.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/PvIconFault.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/PvIconFault.png
new file mode 100644
index 0000000..5b2ec16
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/PvIconFault.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/PvIconRun.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/PvIconRun.png
new file mode 100644
index 0000000..4b27c5c
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/PvIconRun.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/PvIconStandby.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/PvIconStandby.png
new file mode 100644
index 0000000..0f62825
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/PvIconStandby.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/SocialContributionInfoBg_Coal.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/SocialContributionInfoBg_Coal.png
new file mode 100644
index 0000000..e777f14
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/SocialContributionInfoBg_Coal.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/SocialContributionInfoIcon_Coal.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/SocialContributionInfoIcon_Coal.png
new file mode 100644
index 0000000..b7b59ec
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/SocialContributionInfoIcon_Coal.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/ModeFree_False.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/ModeFree_False.png
new file mode 100644
index 0000000..7ef209a
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/ModeFree_False.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/Mode_Economic_On.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/Mode_Economic_On.png
new file mode 100644
index 0000000..b4c83f5
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/Mode_Economic_On.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/Mode_QuickHeat.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/Mode_QuickHeat.png
new file mode 100644
index 0000000..f8820e4
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/Mode_QuickHeat.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/NextIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/NextIcon.png
new file mode 100644
index 0000000..689bea6
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/NextIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/PreIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/PreIcon.png
new file mode 100644
index 0000000..4b91428
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/PreIcon.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/SocialContributionInfoBg_1.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/SocialContributionInfoBg_1.png
new file mode 100644
index 0000000..51199ba
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/SocialContributionInfoBg_1.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/SocialContributionInfoBg_2.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/SocialContributionInfoBg_2.png
new file mode 100644
index 0000000..1b04c61
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/SocialContributionInfoBg_2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/SocialContributionInfoBg_3.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/SocialContributionInfoBg_3.png
new file mode 100644
index 0000000..ad44a95
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/SocialContributionInfoBg_3.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/SocialContributionInfoIcon_1.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/SocialContributionInfoIcon_1.png
new file mode 100644
index 0000000..c545256
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/SocialContributionInfoIcon_1.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/SocialContributionInfoIcon_2.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/SocialContributionInfoIcon_2.png
new file mode 100644
index 0000000..7ce8788
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/SocialContributionInfoIcon_2.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/SocialContributionInfoIcon_3.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/SocialContributionInfoIcon_3.png
new file mode 100644
index 0000000..43ddc5a
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/SocialContributionInfoIcon_3.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/TempBg.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/TempBg.png
new file mode 100644
index 0000000..8b2adca
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/WaterHeater/TempBg.png
Binary files differ
diff --git a/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/PowerOffIcon.png b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/PowerOffIcon.png
new file mode 100644
index 0000000..56b8ee1
--- /dev/null
+++ b/HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/grey/PowerOffIcon.png
Binary files differ
diff --git a/HDL_ON/Common/R.cs b/HDL_ON/Common/R.cs
index c44e51e..b0e0a67 100644
--- a/HDL_ON/Common/R.cs
+++ b/HDL_ON/Common/R.cs
@@ -5,7 +5,10 @@
 {
     public static class StringId
     {
-
+        /// <summary>
+        /// 鏂拌兘婧�
+        /// </summary>
+        public const int NewEnergy = 706;
         /// <summary>
         /// 璇烽�夋嫨鏈嶅姟鍣�
         /// </summary>
diff --git a/HDL_ON/DAL/DriverLayer/Control.cs b/HDL_ON/DAL/DriverLayer/Control.cs
index 2a23bd8..b8ea39d 100644
--- a/HDL_ON/DAL/DriverLayer/Control.cs
+++ b/HDL_ON/DAL/DriverLayer/Control.cs
@@ -1359,6 +1359,10 @@
                                 AcstParentPage.UpdateAcstSubInfo(localFunction);
                                 AcstSubPage.UpdateStatus(localFunction);
                                 break;
+                            case SPK.WaterHeaterJinmao:
+                                AcstParentPage.UpdateAcstSubInfo(localFunction);
+
+                                break;
                             case SPK.AirSwitch:
                                 AirSwitchPage.UpdataState(localFunction);
                                 if (localFunction.GetAttribute(FunctionAttributeKey.Power) != null)//濡傛灉鏄甫鐢甸噺鐨勭┖寮�涔熻鏇存柊鑳芥簮鐣岄潰
diff --git a/HDL_ON/Entity/DB_ResidenceData.cs b/HDL_ON/Entity/DB_ResidenceData.cs
index 219fe33..67b7adf 100644
--- a/HDL_ON/Entity/DB_ResidenceData.cs
+++ b/HDL_ON/Entity/DB_ResidenceData.cs
@@ -74,7 +74,7 @@
                                     ShowFunction.FreshAir,ShowFunction.DoorLock,
                                     ShowFunction.Panel,
                                     ShowFunction.Sensor,ShowFunction.VideoIntercom,
-                                    ShowFunction.SecurityCenter,ShowFunction.Acst,
+                                    ShowFunction.SecurityCenter,ShowFunction.Acst,ShowFunction.InverterJinmao,
                                     ShowFunction.MechanicalArm ,
                                     ShowFunction.SecurityMonitoring,
                                     ShowFunction.VideoDoorLock,
diff --git a/HDL_ON/Entity/Enumerative/MyEnum.cs b/HDL_ON/Entity/Enumerative/MyEnum.cs
index a14796c..75ef640 100644
--- a/HDL_ON/Entity/Enumerative/MyEnum.cs
+++ b/HDL_ON/Entity/Enumerative/MyEnum.cs
@@ -197,6 +197,10 @@
         /// 褰遍煶涓帶
         /// </summary>
         Aks = 0x28,
+        /// <summary>
+        /// 閲戣寕浠夸經鍌ㄨ兘
+        /// </summary>
+        InverterJinmao=0x29,
 
 
     }
diff --git a/HDL_ON/Entity/Function/Function.cs b/HDL_ON/Entity/Function/Function.cs
index 7bcc154..1048e69 100644
--- a/HDL_ON/Entity/Function/Function.cs
+++ b/HDL_ON/Entity/Function/Function.cs
@@ -1751,6 +1751,16 @@
         /// 瀛愭帶
         /// </summary>
         public const string AcstSub = "acst.sub";
+        /// <summary>
+        /// 鐑按鍣�
+        /// 閲戣寕
+        /// </summary>
+        public const string WaterHeaterJinmao = "electrical.water_heater.jinmao";
+        /// <summary>
+        /// 閫嗗彉鍣�/鏂拌兘婧�
+        /// 閲戣寕
+        /// </summary>
+        public const string InverterJinmao = "energy.inverter.jinmao";
 
         /// <summary>
         /// 闂ㄩ攣
diff --git a/HDL_ON/Entity/Function/InverterJinmao.cs b/HDL_ON/Entity/Function/InverterJinmao.cs
new file mode 100644
index 0000000..3dd2f1a
--- /dev/null
+++ b/HDL_ON/Entity/Function/InverterJinmao.cs
@@ -0,0 +1,123 @@
+锘縰sing System;
+namespace HDL_ON.Entity
+{
+    /// <summary>
+    /// 閲戣寕閫嗗彉鍣�
+    /// </summary>
+    public class InverterJinmao
+    {
+        public InverterJinmao()
+        {
+        }
+    }
+
+
+    public enum InverterJinmao_AttrEnum
+    {
+        /// <summary>
+        /// 鍙戠數鍔熺巼
+        /// </summary>
+        pv_power,
+        /// <summary>
+        /// 浠婃棩鍙戠數閲�
+        /// </summary>
+        pv_electricity_today,
+        /// <summary>
+        /// 鏈湀鍙戠數閲�
+        /// </summary>
+        pv_electricity_month,
+        /// <summary>
+        /// 鎬诲彂鐢甸噺
+        /// </summary>
+        pv_electricity,
+        /// <summary>
+        /// 鍏変紡杩愯鐘舵��
+        /// </summary>
+        system_status,
+        /// <summary>
+        /// 鍌ㄨ兘鐘舵��
+        /// </summary>
+        ess_status,
+        /// <summary>
+        /// 鍌ㄨ兘鍏呯數鍔熺巼
+        /// </summary>
+        ess_charge_power,
+        /// <summary>
+        /// 鍌ㄨ兘鏀剧數鍔熺巼
+        /// </summary>
+        ess_discharg_power,
+        /// <summary>
+        /// 褰撳墠鐢垫睜瀹归噺
+        /// </summary>
+        battery_soc,
+        /// <summary>
+        /// 鐢ㄧ數鍔熺巼
+        /// </summary>
+        load_active_power,
+        /// <summary>
+        /// 浠婃棩鐢ㄧ數閲�
+        /// </summary>
+        load_electricity_today,
+        /// <summary>
+        /// 鏈湀鐢ㄧ數閲�
+        /// </summary>
+        load_electricity_month,
+        /// <summary>
+        /// 鎬荤敤鐢甸噺
+        /// </summary>
+        load_electricity,
+        /// <summary>
+        /// 鑺傜害鏍囧噯鐓�
+        /// </summary>
+        coal,
+        /// <summary>
+        /// //CO2鍑忔帓
+        /// </summary>
+        co2,
+        /// <summary>
+        /// 绛夋晥妞嶆爲閲� 
+        /// </summary>
+        trees,
+    }
+    /// <summary>
+    /// 鍏変紡杩愯鐘舵��
+    /// </summary>
+    public enum InverterJinmao_Attr_SystemStatusEnum
+    {
+        /// <summary>
+        /// 杩愯锛�
+        /// </summary>
+        run,
+        /// <summary>
+        /// 鏁呴殰锛�
+        /// </summary>
+        fault,
+        /// <summary>
+        /// 寰呮満锛�
+        /// </summary>
+        standby
+    }
+    /// <summary>
+    /// 鍌ㄨ兘鐘舵��
+    /// </summary>
+    public enum InverterJinmao_Attr_EssStatusEnum
+    {
+        /// <summary>
+        /// 鍏呯數锛�
+        /// </summary>
+        charge,
+        /// <summary>
+        /// 鏀剧數锛�
+        /// </summary>
+        discharge,
+        /// <summary>
+        /// 鍋滄満锛�
+        /// </summary>
+        shutdown,
+        /// <summary>
+        /// 鏁呴殰锛�
+        /// </summary>
+        fault
+    }
+}
+
diff --git a/HDL_ON/Entity/Function/WaterHeaterJinmao.cs b/HDL_ON/Entity/Function/WaterHeaterJinmao.cs
new file mode 100644
index 0000000..dc1bcc4
--- /dev/null
+++ b/HDL_ON/Entity/Function/WaterHeaterJinmao.cs
@@ -0,0 +1,75 @@
+锘縰sing System;
+namespace HDL_ON.Entity
+{
+    /// <summary>
+    /// 閲戣寕鐑按鍣�
+    /// </summary>
+    public class WaterHeaterJinmao
+    {
+        public WaterHeaterJinmao()
+        {
+        }
+
+
+
+
+    }
+
+    public enum WaterHeaterJinmao_AttrEnum
+    {
+        /// <summary>
+        /// 寮�鍏�  WR  string on/off
+        /// </summary>
+        on_off,
+        /// <summary>
+        ///  鐑按娓╁害 掳C R   float	%d
+        /// </summary>
+        temp,
+        /// <summary>
+        ///    鐑按娓╁害璁剧疆 掳C WR  float	%d	35-60
+        /// </summary>
+        set_temp,
+        /// <summary>
+        /// 鐑按妯″紡璁剧疆  WR string 鑺傝兘锛歟conomic 閫熺儹锛歲uick_heat
+        /// </summary>
+        mode,
+        /// <summary>
+        ///   鍏嶈垂鐑按鐘舵�� R   boolean		true/false
+        /// </summary>
+        mode_free,
+        /// <summary>
+        /// 鐑按娴侀噺 L/min R   float	%d
+        /// </summary>
+        flow,
+        /// <summary>
+        ///   鐑洖鏀剁儹姘撮噺 t   R float	%d
+        /// </summary>
+        recycl_volume,
+        /// <summary>
+        ///  鎬荤儹姘撮噺 t   R float	%d
+        /// </summary>
+        volume,
+        /// <summary>
+        ///  鐑洖鏀惰妭鐢甸噺 kwh R float	%d
+        /// </summary>
+        energy_electricity,
+        /// <summary>
+        /// CO2鍑忔帓閲� R   float	%d
+        /// </summary>
+        co2,
+        /// <summary>
+        ///   绛夋晥妞嶆爲閲� R   float	%d
+        /// </summary>
+        trees,
+
+    }
+    /// <summary>
+    /// 鐑按妯″紡璁剧疆
+    /// </summary>
+    public enum WaterHeaterJinmao_Attr_ModeEnum
+    {
+        economic,//鑺傝兘
+        quick_heat,//閫熺儹
+    }
+}
+
diff --git a/HDL_ON/Entity/FunctionList.cs b/HDL_ON/Entity/FunctionList.cs
index f91b737..d190820 100644
--- a/HDL_ON/Entity/FunctionList.cs
+++ b/HDL_ON/Entity/FunctionList.cs
@@ -111,7 +111,7 @@
         /// <returns></returns>
         public List<Function> GetAcstParentList()
         {
-            return Functions.FindAll((obj) => obj.spk == SPK.AcstParent);//.OrderByDescending(o=>o.controlCounter).ToList()
+            return Functions.FindAll((obj) => obj.spk == SPK.AcstParent);
         }
 
         /// <summary>
@@ -122,6 +122,23 @@
         public List<Function> GetAcstSubList()
         {
             return Functions.FindAll((obj) => obj.spk == SPK.AcstSub);
+        }
+        /// <summary>
+        /// 缁垮缓绉戞妧绯荤粺
+        /// 鐑按鍣ㄥ垪琛�
+        /// </summary>
+        /// <returns></returns>
+        public List<Function> GetWaterHeaterJinmaoList()
+        {
+            return Functions.FindAll((obj) => obj.spk == SPK.WaterHeaterJinmao);
+        }
+        /// <summary>
+        /// 閲戣寕鍏変紡鍌ㄨ兘
+        /// </summary>
+        /// <returns></returns>
+        public List<Function> GetInverterJinmaoList()
+        {
+            return Functions.FindAll((obj) => obj.spk == SPK.InverterJinmao);
         }
 
         /// <summary>
@@ -228,11 +245,11 @@
         /// </summary>
         public List<Function> GetElectricals()
         {
-        var spkList = SPK.ElectricalSpkList();
+            var spkList = SPK.ElectricalSpkList();
             return Functions.FindAll((obj) => spkList.Contains(obj.spk));
         }
-    
-      
+
+
         /// <summary>
         /// 绾㈠瀹濆垪琛�
         /// </summary>
@@ -240,7 +257,7 @@
         {
             return Functions.FindAll((obj) => obj.spk == SPK.IrModule);
         }
-#endregion
+        #endregion
 
         /// <summary>
         /// 闊充箰鍒楄〃
@@ -304,7 +321,7 @@
         {
             get
             {
-                if(_OtherBrandFunction == null)
+                if (_OtherBrandFunction == null)
                 {
                     _OtherBrandFunction = new List<Function>();
                     var spkList = SPK.GetAll3tySPK();
@@ -372,9 +389,9 @@
                     {
                         //妫�娴嬮噸澶�
                         var same = Functions.FindAll((obj) => obj.deviceId == tempFunction.deviceId);
-                        if(same!= null)
+                        if (same != null)
                         {
-                            foreach(var sameTemp in same)
+                            foreach (var sameTemp in same)
                             {
                                 Functions.Remove(sameTemp);
                             }
@@ -446,7 +463,7 @@
             {
             }
             else
-            { 
+            {
                 switch (brandType)
                 {
                     case SPK.BrandType.Hdl:
@@ -513,11 +530,11 @@
         /// <summary>
         /// 鍔熻兘缁戝畾鎴块棿
         /// </summary>
-        public string FunctionsBindRooms(List<string> roomIds,List<string> deviceIds)
+        public string FunctionsBindRooms(List<string> roomIds, List<string> deviceIds)
         {
             var pm = new HttpServerRequest();
             var pack = pm.BindDeviceToRoom(deviceIds, roomIds);
-            if(pack.Code == StateCode.SUCCESS)
+            if (pack.Code == StateCode.SUCCESS)
             {
 
             }
@@ -531,7 +548,7 @@
         /// <summary>
         /// 鍒犻櫎鍦烘櫙
         /// </summary>
-        public void DeleteScene(Scene scene,bool upSevser)
+        public void DeleteScene(Scene scene, bool upSevser)
         {
             if (upSevser)
             {
@@ -614,7 +631,7 @@
                 {
                     Read3tyFunctionStatus();
 
-                    if(DriverLayer.Control.Ins.GatewayOnline_Local)
+                    if (DriverLayer.Control.Ins.GatewayOnline_Local)
                     {
 
                         //List<Function> functions = GetDeviceFunctionList(SPK.BrandType.Hdl);
@@ -678,12 +695,12 @@
                     MainPage.Log($"缁撴潫--璇诲彇");
                 }
 
-                
+
             })
             { IsBackground = true }.Start();
         }
 
-#region 鍦烘櫙鐩稿叧
+        #region 鍦烘櫙鐩稿叧
         /// <summary>
         /// 娣诲姞鍦烘櫙
         /// </summary>
@@ -715,10 +732,10 @@
             }
             return revPack.Code;
         }
-#endregion
+        #endregion
 
-#region 鏀惰棌鍔熻兘
-     
+        #region 鏀惰棌鍔熻兘
+
         /// <summary>
         /// 鏀惰棌鍦烘櫙
         /// </summary>
@@ -743,14 +760,14 @@
             return result;
         }
 
-#endregion
+        #endregion
 
 
-#region 
-       
+        #region 
 
 
-#endregion
+
+        #endregion
     }
 
 }
diff --git a/HDL_ON/HDL_ON.projitems b/HDL_ON/HDL_ON.projitems
index 59a87d6..fd365da 100644
--- a/HDL_ON/HDL_ON.projitems
+++ b/HDL_ON/HDL_ON.projitems
@@ -596,6 +596,13 @@
     <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\3-Intelligence\Scene\SceneTargetTypeChoosePage.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Common\AliyunLog\AliyunLogClient.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)Common\AliyunLog\AliyunLogInvokeAsync.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)Entity\Function\WaterHeaterJinmao.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Acst\WaterHeaterJinmaoPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Acst\WetarHeaterJinmaoHistoryPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\EnvironmentalScience\EchartsOption_Histogram.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)Entity\Function\InverterJinmao.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Acst\InverterJinmaoPage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Acst\InverterJinmaoHistroyPage.cs" />
   </ItemGroup>
   <ItemGroup>
     <Folder Include="$(MSBuildThisFileDirectory)Entity\Device\" />
diff --git a/HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs b/HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs
index f45fb41..235a962 100644
--- a/HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs
+++ b/HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs
@@ -13,7 +13,7 @@
         /// <summary>
         /// 鍔熻兘鎺у埗鐣岄潰璺宠浆浜嬩欢
         /// </summary>
-        public EventHandler<MouseEventArgs> LoadEvent_SkipFunctionControlPage(Function function, Button btnCollectionIcon, Button btnName, Button btnFromFloor, Comerom comerom,Action action
+        public EventHandler<MouseEventArgs> LoadEvent_SkipFunctionControlPage(Function function, Button btnCollectionIcon, Button btnName, Button btnFromFloor, Comerom comerom, Action action
             )
         {
             EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
@@ -29,9 +29,9 @@
                         MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                         break;
                     case SPK.GroupControl:
-                         //var dialog = new GroupControlPage(FunctionList.List.groupControls.Find((obj) => obj.sid == function.sid));
-                         //dialog.ShowDialog();
-                         var groupControlPage = new GroupControlPage_V2(FunctionList.List.groupControls.Find((obj) => obj.sid == function.sid));
+                        //var dialog = new GroupControlPage(FunctionList.List.groupControls.Find((obj) => obj.sid == function.sid));
+                        //dialog.ShowDialog();
+                        var groupControlPage = new GroupControlPage_V2(FunctionList.List.groupControls.Find((obj) => obj.sid == function.sid));
                         MainPage.BasePageView.AddChidren(groupControlPage);
                         groupControlPage.LoadPage(btnCollectionIcon, btnName, btnFromFloor);
                         MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
@@ -169,7 +169,7 @@
                         break;
                     case SPK.MusicStandard:
                     case SPK.AvMusic:
-                        Music.A31MusicModel.Current = new Music.A31MusicModel { functionMusic = function ,LastDateTime = DateTime.Now};//褰撳墠鎾斁鍣�
+                        Music.A31MusicModel.Current = new Music.A31MusicModel { functionMusic = function, LastDateTime = DateTime.Now };//褰撳墠鎾斁鍣�
                         var a31PlayMusicPage = new Music.A31PlayMusicPage();
                         MainPage.BasePageView.AddChidren(a31PlayMusicPage);
                         a31PlayMusicPage.Show();
@@ -290,7 +290,8 @@
                                                 new PublicAssmebly().TipMsg(Language.StringByID(StringId.Tip), Language.StringByID(StringId.huoqushujushibao));
                                             });
                                         }
-                                        Application.RunOnMainThread(() =>{
+                                        Application.RunOnMainThread(() =>
+                                        {
                                             try
                                             {
 
@@ -343,9 +344,10 @@
                         }
 #endif
                         break;
-                    case SPK.VideoDoorLock: {
+                    case SPK.VideoDoorLock:
+                        {
                             //钀ょ煶瑙嗛闂ㄩ攣
-                            var form = new VideoDoorLockPage(function, btnName, btnFromFloor,comerom,action);
+                            var form = new VideoDoorLockPage(function, btnName, btnFromFloor, comerom, action);
                             MainPage.BasePageView.AddChidren(form);
                             MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                             form.Show();
@@ -364,7 +366,7 @@
                     case SPK.ElectricalTvHisense:
                         {
                             //娴蜂俊鐢佃
-                            var form = new UI2.FuntionControlView.HisenseTV.HisenseTvPage(function, btnName, btnFromFloor,btnCollectionIcon, comerom, action);
+                            var form = new UI2.FuntionControlView.HisenseTV.HisenseTvPage(function, btnName, btnFromFloor, btnCollectionIcon, comerom, action);
                             MainPage.BasePageView.AddChidren(form);
                             MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                             form.Show();
diff --git a/HDL_ON/UI/UI0-Public/TopViewDiv.cs b/HDL_ON/UI/UI0-Public/TopViewDiv.cs
index 78a3258..a98c233 100644
--- a/HDL_ON/UI/UI0-Public/TopViewDiv.cs
+++ b/HDL_ON/UI/UI0-Public/TopViewDiv.cs
@@ -11,7 +11,7 @@
         /// <summary>
         /// 鐖剁獥浣�
         /// </summary>
-        FrameLayout baseView;
+        public FrameLayout baseView;
         /// <summary>
         /// 鐖剁獥浣揇ialog
         /// </summary>
@@ -19,7 +19,7 @@
         /// <summary>
         /// 鍐呭鍖哄煙
         /// </summary>
-        FrameLayout contentView;
+        public FrameLayout contentView;
 
         /// <summary>
         /// 鍚庨��鎸夐挳
diff --git a/HDL_ON/UI/UI1-Login/LoginPage.cs b/HDL_ON/UI/UI1-Login/LoginPage.cs
index 59aed9c..ed0ce44 100644
--- a/HDL_ON/UI/UI1-Login/LoginPage.cs
+++ b/HDL_ON/UI/UI1-Login/LoginPage.cs
@@ -6,6 +6,7 @@
 using HDL_ON.DAL.Server;
 using HDL_ON.Entity;
 using HDL_ON.UI.CSS;
+using Security;
 using Shared;
 
 namespace HDL_ON.UI.UI1Login
@@ -18,12 +19,14 @@
             //AddChidren(bodyView);
             bodyView = this;
             //2020-12-22 澧炲姞鐐瑰嚮闅愯棌閿洏浜嬩欢
-            bodyView.MouseDownEventHandler += (sender, e) => {
+            bodyView.MouseDownEventHandler += (sender, e) =>
+            {
                 Application.HideSoftInput();
             };
             pm = new HttpServerRequest();
 #if __ANDROID__
-            BaseActivity.HideKeyboardEvent = () => {
+            BaseActivity.HideKeyboardEvent = () =>
+            {
                 if (this.Y != 0)
                 {
                     Application.RunOnMainThread(() =>
@@ -36,12 +39,13 @@
                     });
                 }
             };
-            BaseActivity.ShowKeyboardEvent = () => {
+            BaseActivity.ShowKeyboardEvent = () =>
+            {
                 try
                 {
                     if (etPassword.Foucs)
                     {
-                     
+
                         new Thread(() =>
                         {
                             Thread.Sleep(100);
@@ -67,8 +71,9 @@
                 }
                 catch { }
             };
-            BaseActivity.SmsAction = (message) => {
-                Console.WriteLine($"鎺ユ敹鍒扮煭淇★細"+ message);
+            BaseActivity.SmsAction = (message) =>
+            {
+                Console.WriteLine($"鎺ユ敹鍒扮煭淇★細" + message);
 
                 string pattern = @"銆怘DL銆�.*(\d{6}).*";
 
@@ -80,7 +85,7 @@
                 {
                     string code = match.Groups[1].Value;
                     Console.WriteLine("楠岃瘉鐮佷负锛�" + code);
-                    if(loginType==0 && logintMode == 1)
+                    if (loginType == 0 && logintMode == 1)
                     {
                         etPassword.Text = code;
                     }
@@ -104,7 +109,8 @@
             }
 
 #if __ANDROID__
-            BaseActivity.HideKeyboardEvent = () => {
+            BaseActivity.HideKeyboardEvent = () =>
+            {
 
             };
             BaseActivity.ShowKeyboardEvent = () => { };
@@ -116,7 +122,7 @@
             //Application.HideSoftInput();
         }
 
-#region 灞�閮ㄥ彉閲�
+        #region 灞�閮ㄥ彉閲�
         /// <summary>
         /// 鐧诲綍绫诲瀷
         /// 0:鎵嬫満
@@ -135,9 +141,9 @@
         /// 鐭俊楠岃瘉鐮�
         /// </summary>
         string smsCode = "";
-#endregion
+        #endregion
 
-#region 鎺т欢鍒楄〃
+        #region 鎺т欢鍒楄〃
         /// <summary>
         /// 绛夊緟鎻愮ず
         /// </summary>
@@ -230,7 +236,7 @@
         /// 鏈嶅姟鍣ㄨ姹傚璞�
         /// </summary>
         HttpServerRequest pm;
-#endregion
+        #endregion
 
         string verAccount = "";
 
@@ -273,7 +279,8 @@
                 UnSelectedImagePath = "Public/Logo-bg.png"
             };
             bodyView.AddChidren(btnIcon_bg);
-            btnIcon_bg.MouseDownEventHandler += (sender, e) => {
+            btnIcon_bg.MouseDownEventHandler += (sender, e) =>
+            {
                 Application.HideSoftInput();
             };
 
@@ -281,7 +288,7 @@
             btnIcon_bg.MouseUpEventHandler += (sender, e) =>
             {
                 return;
-                
+
             };
 
             bool b = false;
@@ -311,7 +318,7 @@
                     etAccount.Text = "13336018868";
                     etAccount.Text = "649362315@qq.com";
                     //etAccount.Text = "18402017839";
-                    etAccount.Text = "13616515037";
+                    etAccount.Text = "18620993214";
 
                 }
                 else
@@ -331,27 +338,31 @@
                 }
                 b = !b;
                 etPassword.Text = "123456";
-                if(etAccount.Text == "649362315@qq.com")
+                if (etAccount.Text == "18620993214")
                 {
-                    etPassword.Text = "aa123456";
+                    etPassword.Text = "hdl1985.";
                 }
-                else if(etAccount.Text == "13580507523")
+                else if (etAccount.Text == "13580507523")
                 {
                     etPassword.Text = "a123456";
-                }else if(etAccount.Text == "13288623489")
+                }
+                else if (etAccount.Text == "13288623489")
                 {
                     etPassword.Text = "luoxiaodong";
-                }else if(etAccount.Text == "15014291819")
+                }
+                else if (etAccount.Text == "15014291819")
                 {
                     etPassword.Text = "hdl123456";
-                }else if (etAccount.Text == "15262988048")
+                }
+                else if (etAccount.Text == "15262988048")
                 {
                     etPassword.Text = "15262988048";
                 }
                 else if (etAccount.Text == "649362315@qq.com")
                 {
                     etPassword.Text = "aa123456";
-                }else if(etAccount.Text == "dcai.assist@gmail.com")
+                }
+                else if (etAccount.Text == "dcai.assist@gmail.com")
                 {
                     etPassword.Text = "GraniteTileS57";
                 }
@@ -376,7 +387,7 @@
 
             btnEmailLogin = new Button()
             {
-                X = btnPhoneLogin.Right ,//+ Application.GetRealWidth(20),
+                X = btnPhoneLogin.Right,//+ Application.GetRealWidth(20),
                 Y = Application.GetRealHeight(177),
                 Width = Application.GetRealWidth(140),
                 Height = Application.GetRealHeight(40),
@@ -386,9 +397,9 @@
                 TextSize = CSS_FontSize.TextFontSize,
             };
             bodyView.AddChidren(btnEmailLogin);
-#endregion
+            #endregion
 
-#region 璐﹀彿濉啓
+            #region 璐﹀彿濉啓
             accountView = new FrameLayout()
             {
                 X = Application.GetRealWidth(28),
@@ -479,9 +490,9 @@
                 accountView.AddChidren(btnAccountIcon);
             }
 
-#endregion
+            #endregion
 
-#region 瀵嗙爜濉啓
+            #region 瀵嗙爜濉啓
             passwordView = new FrameLayout()
             {
                 X = Application.GetRealWidth(28),
@@ -522,11 +533,11 @@
                 PlaceholderText = Language.StringByID(StringId.PlsEntryPassword),
                 SecureTextEntry = true,
                 TextAlignment = TextAlignment.CenterLeft,
-                
+
             };
             passwordView.AddChidren(etPassword);
 
-#region 瀵嗙爜鐧诲綍-鎺т欢鍔犺浇
+            #region 瀵嗙爜鐧诲綍-鎺т欢鍔犺浇
             btnVisiblePassword = new Button()
             {
                 X = Application.GetRealWidth(223),
@@ -558,9 +569,9 @@
                 TextSize = 12,
             };
             passwordView.AddChidren(btnForgetPassword);
-#endregion
+            #endregion
 
-#region 楠岃瘉鐮佺櫥褰�-鎺т欢鍔犺浇
+            #region 楠岃瘉鐮佺櫥褰�-鎺т欢鍔犺浇
             btnGetVerificationCode = new Button()
             {
                 X = Application.GetRealWidth(219),
@@ -574,7 +585,7 @@
                 IsSelected = false,
             };
             passwordView.AddChidren(btnGetVerificationCode);
-#endregion
+            #endregion
 
             btnPasswordViewBottomLine = new Button()
             {
@@ -585,9 +596,9 @@
             };
             passwordView.AddChidren(btnPasswordViewBottomLine);
 
-#endregion
+            #endregion
 
-#region 娉ㄥ唽涓庡揩鎹风櫥褰�
+            #region 娉ㄥ唽涓庡揩鎹风櫥褰�
             btnRegister = new Button()
             {
                 X = Application.GetRealWidth(28),
@@ -614,7 +625,7 @@
             };
             bodyView.AddChidren(btnSwitchLoginMode);
 
-#endregion
+            #endregion
 
             btnLogin = new Button()
             {
@@ -656,7 +667,8 @@
                 }
             }
 
-            btnDomeLogin.MouseUpEventHandler = (sender, e) => {
+            btnDomeLogin.MouseUpEventHandler = (sender, e) =>
+            {
 
                 MainPage.NoLoginMode = true;
 #if DEBUG
@@ -666,13 +678,13 @@
                 //妤煎眰鎴块棿鍒楄〃
                 var floor1 = new SpatialInfo("FLOOR") { roomName = "F1", parentId = DB_ResidenceData.Instance.CurrentRegion.id };
                 floor1.SaveRoomFile();
-#region 鎴块棿涓� -- 瀹㈠巺
+                #region 鎴块棿涓� -- 瀹㈠巺
                 //澶勭悊鎴块棿鍒楄〃
 
                 var room1 = new Room()
                 {
                     roomId = "1405771366041378818",
-                    roomName = Language.CurrentLanguage == "Chinese"? "娲楁墜闂�" : "Restroom",
+                    roomName = Language.CurrentLanguage == "Chinese" ? "娲楁墜闂�" : "Restroom",
                     roomImage = "Classification/Room/Roombg.png",
                     uid = "47c98953-6fd4-4379-88b9-4b748963504f",
                     roomType = "ROOM",
@@ -700,7 +712,7 @@
                 var room3 = new Room()
                 {
                     roomId = "1405771193802285057",
-                    roomName = Language.CurrentLanguage == "Chinese"? "椁愬巺" : "Restaurant",
+                    roomName = Language.CurrentLanguage == "Chinese" ? "椁愬巺" : "Restaurant",
                     roomImage = "Classification/Room/Roombg.png",
                     uid = "ed7fc784-aace-44b8-97a3-bc3e727e598b",
                     roomType = "ROOM",
@@ -714,7 +726,7 @@
                 var room4 = new Room()
                 {
                     roomId = "1405771024583090178",
-                    roomName = Language.CurrentLanguage == "Chinese"? "瀹㈠巺" : "Drawing room",
+                    roomName = Language.CurrentLanguage == "Chinese" ? "瀹㈠巺" : "Drawing room",
                     roomImage = "Classification/Room/Roombg.png",
                     uid = "9191a3a2-026f-4667-a0b1-e3af699e7295",
                     roomType = "ROOM",
@@ -746,15 +758,15 @@
                 SpatialInfo.CurrentSpatial.RoomList.Add(room4);
 
 
-#region 瀹㈠巺
-#region 鍔熻兘
+                #region 瀹㈠巺
+                #region 鍔熻兘
                 var lightRgb1 = new Function()
                 {
                     sid = "light10000000000",
                     deviceId = "light10000000000",
-                    name = Language.CurrentLanguage == "Chinese"?  "瀹㈠巺姘涘洿鐏�1": "RGB light 1",
+                    name = Language.CurrentLanguage == "Chinese" ? "瀹㈠巺姘涘洿鐏�1" : "RGB light 1",
                     spk = SPK.LightRGB,
-                    roomIds = new List<string>() { "1405771024583090178"},
+                    roomIds = new List<string>() { "1405771024583090178" },
                     collect = true,
                     attributes = new List<FunctionAttributes>()
                     {
@@ -776,7 +788,7 @@
                     deviceId = "light2",
                     name = Language.CurrentLanguage == "Chinese" ? "瀹㈠巺姘涘洿鐏�2" : "RGB light 2",
                     spk = SPK.LightRGB,
-                    roomIds = new List<string>() { "1405771024583090178"},
+                    roomIds = new List<string>() { "1405771024583090178" },
                     attributes = new List<FunctionAttributes>()
                     {
                         new FunctionAttributes() { key = "on_off",value =new List<string>(){ "on","off" }, curValue="on",state = "on"   },
@@ -793,7 +805,7 @@
                     deviceId = "light3",
                     name = Language.CurrentLanguage == "Chinese" ? "闃呰鐏�" : "CCT light",
                     spk = SPK.LightCCT,
-                    roomIds = new List<string>() { "1405771024583090178"},
+                    roomIds = new List<string>() { "1405771024583090178" },
                     attributes = new List<FunctionAttributes>()
                     {
                         new FunctionAttributes() { key = "on_off",value =new List<string>(){ "on","off" }, curValue="on",state = "on"   },
@@ -825,7 +837,7 @@
                     deviceId = "light5",
                     name = Language.CurrentLanguage == "Chinese" ? "寮�鍏崇伅" : "light 2",
                     spk = SPK.LightSwitch,
-                    roomIds = new List<string>() { "1405771024583090178"},
+                    roomIds = new List<string>() { "1405771024583090178" },
                     attributes = new List<FunctionAttributes>()
                     {
                         new FunctionAttributes() { key = "on_off",value =new List<string>(){ "on","off" }, curValue="on",state = "on"   },
@@ -839,7 +851,7 @@
                     deviceId = "curtain1",
                     name = Language.CurrentLanguage == "Chinese" ? "寮�鍚堝笜" : "Curtain 1",
                     spk = SPK.CurtainTrietex,
-                    roomIds = new List<string>() { "1405771024583090178"},
+                    roomIds = new List<string>() { "1405771024583090178" },
                     attributes = new List<FunctionAttributes>()
                     {
                         new FunctionAttributes() { key = "on_off",value =new List<string>(){ "on","off" }, curValue="on",state = "on"   },
@@ -853,7 +865,7 @@
                     deviceId = "curtain2",
                     name = Language.CurrentLanguage == "Chinese" ? "鍗峰笜" : "Curtain 2",
                     spk = SPK.CurtainRoller,
-                    roomIds = new List<string>() { "1405771024583090178"},
+                    roomIds = new List<string>() { "1405771024583090178" },
                     attributes = new List<FunctionAttributes>()
                     {
                         new FunctionAttributes() { key = "on_off",value =new List<string>(){ "on","off" }, curValue="on",state = "on"   },
@@ -886,7 +898,7 @@
                     deviceId = "floorheat1",
                     name = Language.CurrentLanguage == "Chinese" ? "鍦版殩" : "Floorheat 1",
                     spk = SPK.FloorHeatStandard,
-                    roomIds = new List<string>() { "1405771024583090178"},
+                    roomIds = new List<string>() { "1405771024583090178" },
                     attributes = new List<FunctionAttributes>()
                     {
                         new FunctionAttributes() { key = "on_off",value =new List<string>(){ "on","off" }, curValue="on",state = "on"   },
@@ -1050,11 +1062,37 @@
 
                 FunctionList.List.Functions.Add(new Function
                 {
+                    name = "娴嬭瘯-閲戣寕鍏変紡鍌ㄨ兘",
+                    spk = SPK.InverterJinmao,
+                    collect = true,
+                    attributes = new List<FunctionAttributes>()
+                    {
+                        new FunctionAttributes(){key = InverterJinmao_AttrEnum.pv_power.ToString(),value =new List<string>(){ "on","off" }, curValue="28",state = "28" },
+                        new FunctionAttributes(){key = InverterJinmao_AttrEnum.pv_electricity_today.ToString(),value = new List<string>(){ "0" },curValue ="20",state = "20"},
+                        new FunctionAttributes(){key = InverterJinmao_AttrEnum.pv_electricity_month.ToString(),value = new List<string>(){ "0" },curValue ="500",state = "500"},
+                        new FunctionAttributes(){key = InverterJinmao_AttrEnum.pv_electricity.ToString(),value = new List<string>(){ "0" },curValue ="2100",state = "2100"},
+                        new FunctionAttributes(){key = InverterJinmao_AttrEnum.system_status.ToString(),value = new List<string>(){ "0" },curValue = InverterJinmao_Attr_SystemStatusEnum.run.ToString(),state = InverterJinmao_Attr_SystemStatusEnum.run.ToString()},
+                        new FunctionAttributes(){key = InverterJinmao_AttrEnum.ess_status.ToString(),value = new List<string>(){ "0" },curValue = InverterJinmao_Attr_EssStatusEnum.charge.ToString(),state = InverterJinmao_Attr_EssStatusEnum.charge.ToString()},
+                        new FunctionAttributes(){key = InverterJinmao_AttrEnum.ess_charge_power.ToString(),value = new List<string>(){ "0" },curValue ="100",state = "100"},
+                        new FunctionAttributes(){key = InverterJinmao_AttrEnum.ess_discharg_power.ToString(),value = new List<string>(){ "0" },curValue ="100",state = "100"},
+                        new FunctionAttributes(){key = InverterJinmao_AttrEnum.battery_soc.ToString(),value = new List<string>(){ "0" },curValue ="100",state = "100"},
+                        new FunctionAttributes(){key = InverterJinmao_AttrEnum.load_active_power.ToString(),value = new List<string>(){ "0" },curValue ="100",state = "100"},
+                        new FunctionAttributes(){key = InverterJinmao_AttrEnum.load_electricity_today.ToString(),value = new List<string>(){ "0" },curValue ="100",state = "100"},
+                        new FunctionAttributes(){key = InverterJinmao_AttrEnum.load_electricity_month.ToString(),value = new List<string>(){ "0" },curValue ="200",state = "200"},
+                        new FunctionAttributes(){key = InverterJinmao_AttrEnum.load_electricity.ToString(),value = new List<string>(){ "0" },curValue ="1000",state = "1000"},
+                        new FunctionAttributes(){key = InverterJinmao_AttrEnum.coal.ToString(),value = new List<string>(){ "0" },curValue ="100",state = "100"},
+                        new FunctionAttributes(){key = InverterJinmao_AttrEnum.co2.ToString(),value = new List<string>(){ "0" },curValue ="1000",state = "1000"},
+                        new FunctionAttributes(){key = InverterJinmao_AttrEnum.trees.ToString(),value = new List<string>(){ "0" },curValue ="10",state = "10"},
+                    }
+                });
+
+                FunctionList.List.Functions.Add(new Function
+                {
                     name = "娴嬭瘯-绌鸿皟绉戞妧绯荤粺鎬绘帶",
                     spk = SPK.AcstParent,
-                    //collect = true,
+                    collect = true,
                     attributes = new List<FunctionAttributes>()
-                {
+                    {
                     new FunctionAttributes(){ key = FunctionAttributeKey.OnOff ,curValue = "on",state = "on" },
                     new FunctionAttributes(){ key = AcstParent_AttrEnum.mode.ToString(),curValue = AcstParent_Attr_ModeValueEnum.cool.ToString(),state = AcstParent_Attr_ModeValueEnum.cool.ToString(),
                          value = new List<string>
@@ -1084,7 +1122,7 @@
                     new FunctionAttributes(){ key = AcstParent_AttrEnum.co2.ToString(),curValue = "266",state = "266"},
                     new FunctionAttributes(){ key = AcstParent_AttrEnum.tvoc.ToString(),curValue = "666",state = "666"},
                     new FunctionAttributes(){ key = AcstParent_AttrEnum.pm25.ToString(),curValue = "36",state = "36"},
-                }
+                    }
                 });
 
                 FunctionList.List.Functions.Add(new Function
@@ -1145,12 +1183,48 @@
                     spk = SPK.AcstSub,
                     sid = "0000005",
                     attributes = new List<FunctionAttributes>()
+                    {
+                        new FunctionAttributes(){ key = FunctionAttributeKey.OnOff ,curValue = "on",state = "on" },
+                        new FunctionAttributes(){ key = AcstSub_AttrEnum.set_temp.ToString(),curValue = "26",state = "26"},
+                        new FunctionAttributes(){ key = AcstSub_AttrEnum.room_temp.ToString(),curValue = "26",state = "26"},
+                        new FunctionAttributes(){ key = AcstSub_AttrEnum.room_humidity.ToString(),curValue = "66",state = "66"},
+                    }
+                });
+
+                FunctionList.List.Functions.Add(new Function
                 {
-                    new FunctionAttributes(){ key = FunctionAttributeKey.OnOff ,curValue = "on",state = "on" },
-                    new FunctionAttributes(){ key = AcstSub_AttrEnum.set_temp.ToString(),curValue = "26",state = "26"},
-                    new FunctionAttributes(){ key = AcstSub_AttrEnum.room_temp.ToString(),curValue = "26",state = "26"},
-                    new FunctionAttributes(){ key = AcstSub_AttrEnum.room_humidity.ToString(),curValue = "66",state = "66"},
-                }
+                    name = "瀛愭帶-5",
+                    spk = SPK.AcstSub,
+                    sid = "0000005",
+                    attributes = new List<FunctionAttributes>()
+                    {
+                        new FunctionAttributes(){ key = FunctionAttributeKey.OnOff ,curValue = "on",state = "on" },
+                        new FunctionAttributes(){ key = AcstSub_AttrEnum.set_temp.ToString(),curValue = "26",state = "26"},
+                        new FunctionAttributes(){ key = AcstSub_AttrEnum.room_temp.ToString(),curValue = "26",state = "26"},
+                        new FunctionAttributes(){ key = AcstSub_AttrEnum.room_humidity.ToString(),curValue = "66",state = "66"},
+                    }
+                });
+
+                FunctionList.List.Functions.Add(new Function
+                {
+                    name = "鐑按鍣�-1",
+                    spk = SPK.WaterHeaterJinmao,
+                    sid = "0000000001",
+                    attributes = new List<FunctionAttributes>()
+                    {
+                        new FunctionAttributes(){ key = FunctionAttributeKey.OnOff ,curValue = "on",state = "on" },
+                        new FunctionAttributes(){ key = WaterHeaterJinmao_AttrEnum.co2.ToString(),curValue = "52",state = "52" },
+                        new FunctionAttributes(){ key = WaterHeaterJinmao_AttrEnum.energy_electricity.ToString(),curValue = "100",state = "100" },
+                        new FunctionAttributes(){ key = WaterHeaterJinmao_AttrEnum.flow.ToString(),curValue = "2",state = "2" },
+                        new FunctionAttributes(){ key = WaterHeaterJinmao_AttrEnum.mode.ToString(),curValue = "economic",state = "economic" },
+                        new FunctionAttributes(){ key = WaterHeaterJinmao_AttrEnum.mode_free.ToString(),curValue = "true",state = "true" },
+                        new FunctionAttributes(){ key = WaterHeaterJinmao_AttrEnum.recycl_volume.ToString(),curValue = "5",state = "5" },
+                        new FunctionAttributes(){ key = WaterHeaterJinmao_AttrEnum.set_temp.ToString(),curValue = "25",state = "25" },
+                        new FunctionAttributes(){ key = WaterHeaterJinmao_AttrEnum.temp.ToString(),curValue = "23",state = "23" },
+                        new FunctionAttributes(){ key = WaterHeaterJinmao_AttrEnum.trees.ToString(),curValue = "8",state = "8" },
+                        new FunctionAttributes(){ key = WaterHeaterJinmao_AttrEnum.volume.ToString(),curValue = "88",state = "88" },
+
+                    },
                 });
 
 
@@ -1188,6 +1262,7 @@
                 {
                     name = "娴嬭瘯娓╂帶鍣�",
                     spk = SPK.HvacCac,
+                    collect = true,
                     attributes = new List<FunctionAttributes>
                 {
                     new FunctionAttributes(){ key = "on_off",curValue = "on",state = "on" },
@@ -1643,9 +1718,9 @@
 
                 };
                 scene2.SaveSceneFile();
-#endregion
-#endregion
-#region 椁愬巺
+                #endregion
+                #endregion
+                #region 椁愬巺
                 var lightSwitch3 = new Function()
                 {
                     sid = "light6",
@@ -1749,8 +1824,8 @@
                     }
                 };
                 scene4.SaveSceneFile();
-#endregion
-#region 鍗у
+                #endregion
+                #region 鍗у
                 var ac = new Function()
                 {
                     sid = "ac1",
@@ -1812,7 +1887,7 @@
                 //    collect = false,
                 //};
                 //scene6.SaveSceneFile();
-#endregion
+                #endregion
 
 
                 var lightSwitch6 = new Function()
@@ -1830,12 +1905,12 @@
                 };
                 lightSwitch6.SaveFunctionFile();
 
-#endregion
+                #endregion
 
                 var fileList = Common.FileUtlis.Files.ReadFiles();
-                foreach(var file in fileList)
+                foreach (var file in fileList)
                 {
-                    FunctionList.List.IniFunctionList(file,true);
+                    FunctionList.List.IniFunctionList(file, true);
                 }
                 Room.CurrentSpatial.InitRoomListFunctions();
 
@@ -1850,13 +1925,13 @@
             account = etAccount.Text.Trim();
 
 
-#region 闅愮鏀跨瓥
+            #region 闅愮鏀跨瓥
             AddServiceAgreementControl(bodyView);
-#endregion
+            #endregion
 
         }
 
-#region 鈻� 鏈嶅姟鍗忚___________________________
+        #region 鈻� 鏈嶅姟鍗忚___________________________
         bool isAgreePrivacyPolicy = false;
         /// <summary>
         /// 娣诲姞鏈嶅姟鍗忚鎺т欢
@@ -1886,7 +1961,7 @@
                 X = Application.GetRealWidth(22),
             };
             frameRow.AddChidren(agreeView);
-            if(Language.CurrentLanguage == "Chinese")
+            if (Language.CurrentLanguage == "Chinese")
             {
                 agreeView.X = Application.GetRealWidth(52);
             }
@@ -2006,7 +2081,7 @@
 #if DEBUG
             return true;
 #endif
-            if(HttpUtil.GlobalRequestHttpsHost == "https://test-gz.hdlcontrol.com")
+            if (HttpUtil.GlobalRequestHttpsHost == "https://test-gz.hdlcontrol.com")
             {
                 return true;
             }
@@ -2019,6 +2094,6 @@
             return true;
         }
 
-#endregion
+        #endregion
     }
 }
\ No newline at end of file
diff --git a/HDL_ON/UI/UI1-Login/RegisterPage.cs b/HDL_ON/UI/UI1-Login/RegisterPage.cs
index 4307f3a..132ee76 100644
--- a/HDL_ON/UI/UI1-Login/RegisterPage.cs
+++ b/HDL_ON/UI/UI1-Login/RegisterPage.cs
@@ -233,7 +233,8 @@
             AddChidren(bodyView);
 
             //2020-12-22 澧炲姞鐐瑰嚮闅愯棌閿洏浜嬩欢
-            bodyView.MouseDownEventHandler += (sender, e) => {
+            bodyView.MouseDownEventHandler += (sender, e) =>
+            {
                 Application.HideSoftInput();
             };
 
@@ -290,7 +291,7 @@
                 TextSize = CSS_FontSize.TextFontSize,
             };
             bodyView.AddChidren(btnEmailLogin);
-            if(Language.CurrentLanguage!= "Chinese")
+            if (Language.CurrentLanguage != "Chinese")
             {
                 btnPhoneLogin.Width = Application.GetRealWidth(180);
                 btnEmailLogin.Width = Application.GetRealWidth(180);
@@ -373,8 +374,10 @@
             };
 
             //璺宠浆鍥藉鍖哄彿閫夋嫨鐣岄潰
-            EventHandler<MouseEventArgs> eHandler = (sender, e) => {
-                JLCountrycode.CountryCodeView.Current.Show((countryName, code) => {
+            EventHandler<MouseEventArgs> eHandler = (sender, e) =>
+            {
+                JLCountrycode.CountryCodeView.Current.Show((countryName, code) =>
+                {
                     if (!string.IsNullOrEmpty(code))
                     {
                         phoneZoneCode = code;
diff --git a/HDL_ON/UI/UI1-Login/SelectServerDialog.cs b/HDL_ON/UI/UI1-Login/SelectServerDialog.cs
index 5520931..6d71973 100644
--- a/HDL_ON/UI/UI1-Login/SelectServerDialog.cs
+++ b/HDL_ON/UI/UI1-Login/SelectServerDialog.cs
@@ -169,8 +169,9 @@
             };
             VerticalScrolViewMiddle.AddChidren(rowView);
 
-            rowView.AddChidren(new Button() {
-                Y = Application.GetRealHeight(50-1),
+            rowView.AddChidren(new Button()
+            {
+                Y = Application.GetRealHeight(50 - 1),
                 Height = Application.GetRealHeight(1),
                 BackgroundColor = CSS_Color.DividingLineColor,
             });
diff --git a/HDL_ON/UI/UI2/1-HomePage/HomePage.cs b/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
index 72a1cdf..7693cb4 100644
--- a/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
+++ b/HDL_ON/UI/UI2/1-HomePage/HomePage.cs
@@ -7,7 +7,7 @@
 namespace HDL_ON.UI
 {
 #if __IOS__
-    public partial class HomePage :  VerticalRefreshLayout
+    public partial class HomePage : VerticalRefreshLayout
 #else
     public partial class HomePage : VerticalScrolViewLayout
 #endif
@@ -98,9 +98,9 @@
         /// 鍔熻兘鍖哄煙闆嗗悎
         /// </summary>
         List<FrameLayout> functionViews;
-#endregion
+        #endregion
 
-#region 鍖哄煙鍙橀噺
+        #region 鍖哄煙鍙橀噺
         /// <summary>
         /// 褰撳墠鏄剧ず瀵规帶鍒剁被鍨嬫槸鍚︽槸璁惧鍔熻兘鎺у埗
         /// 0 鍔熻兘
@@ -108,9 +108,9 @@
         /// 2 缇ゆ帶
         /// </summary>
         int CurShowTypeContent = 0;
-#endregion
+        #endregion
 
-#region 鎶ヨ淇℃伅
+        #region 鎶ヨ淇℃伅
         //Button btnMsgBg;
         //Button btnMsgTime;
         //Button btnMsg;
@@ -244,7 +244,7 @@
                 topView.AddChidren(environmentalView);
                 CheckLinkStatus();//2020-12-22
 
-#region 鐜鏁版嵁
+                #region 鐜鏁版嵁
                 var tempSensorList = FunctionList.List.GetEnvirSensorsList().FindAll((obj) => obj.spk == SPK.SensorTemperature);
                 var humiSensorList = FunctionList.List.GetEnvirSensorsList().FindAll((obj) => obj.spk == SPK.SensorHumidity);
                 var enviList = FunctionList.List.GetEnvirSensorsList().FindAll((obj) => SPK.EvironmentSensorList().Contains(obj.spk));
@@ -276,7 +276,8 @@
                     }
                 }
 
-                var btnEnvirValuesTitle = new Button() {
+                var btnEnvirValuesTitle = new Button()
+                {
                     X = Application.GetRealWidth(12),
                     Gravity = Gravity.CenterVertical,
                     TextColor = CSS_Color.MainBackgroundColor,
@@ -342,7 +343,7 @@
                     }
                     if (tempTotalValues > 0)
                     {
-                        btnIndoorTempValues.Text = "/" + (tempTotalValues/ tempTotalCount).ToString("0.0") + "掳";
+                        btnIndoorTempValues.Text = "/" + (tempTotalValues / tempTotalCount).ToString("0.0") + "掳";
                     }
                 }
                 btnIndoorTempValues.Width = btnIndoorTempValues.GetTextWidth();
@@ -440,7 +441,7 @@
                 };
                 if (DB_ResidenceData.Instance.GatewayType == 1 && !DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
                 {
-                        
+
                     topView.AddChidren(btnSecurityStatus);
                     foreach (var temp in FunctionList.List.securities)
                     {
@@ -459,7 +460,8 @@
                         }
                     }
 
-                    btnSecurityStatus.MouseUpEventHandler = (sender, e) => {
+                    btnSecurityStatus.MouseUpEventHandler = (sender, e) =>
+                    {
                         var page = new ArmCenterPage();
                         MainPage.BasePageView.AddChidren(page);
                         page.LoadPage();
@@ -468,7 +470,7 @@
                 }
 
 
-#region msg
+                #region msg
                 //FrameLayout msgView;
                 //msgView = new FrameLayout()
                 //{
@@ -496,7 +498,7 @@
                     UnSelectedImagePath = "Collection/MsgIcon.png",
                     SelectedImagePath = "Collection/MsgIconTip.png",
                 };
-                if(btnSecurityStatus.Parent == null)
+                if (btnSecurityStatus.Parent == null)
                 {
                     btnMsgIcon.X = Application.GetRealWidth(329);
                 }
@@ -527,11 +529,11 @@
 
                 LoadEvent_GotoMessageCenterPage();
 
-#endregion
+                #endregion
 
-#endregion
+                #endregion
 
-#region 鍔熻兘鍦烘櫙鍒囨崲
+                #region 鍔熻兘鍦烘櫙鍒囨崲
 
                 bodyView.AddChidren(new Button() { Height = Application.GetRealHeight(20), BackgroundColor = 0x00000000 });
 
@@ -549,7 +551,8 @@
                 #endregion
 
 #if DEBUG
-                btnResidenceName.MouseUpEventHandler = (envent, ee) => {
+                btnResidenceName.MouseUpEventHandler = (envent, ee) =>
+                {
                     MainPage.Log("sss");
 
 #if __ANDROID__
@@ -589,7 +592,7 @@
 
         void loadNavView()
         {
-            if(changeBaseView == null)
+            if (changeBaseView == null)
             {
                 changeBaseView = new FrameLayout()
                 {
@@ -685,7 +688,8 @@
 
 
 
-                btnChangeGroupControl.MouseUpEventHandler = (sender, e) => {
+                btnChangeGroupControl.MouseUpEventHandler = (sender, e) =>
+                {
                     btnChangeFunction.IsSelected = false;
                     btnChangeFunction.TextSize = CSS.CSS_FontSize.TextFontSize;
                     btnChangeFunction.IsBold = false;
@@ -699,7 +703,8 @@
                     contentView.PageIndex = 2;
                 };
 
-                btnChangeFunction.MouseUpEventHandler = (sender, e) => {
+                btnChangeFunction.MouseUpEventHandler = (sender, e) =>
+                {
                     btnChangeFunction.IsSelected = true;
                     btnChangeFunction.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
                     btnChangeFunction.IsBold = true;
@@ -713,7 +718,8 @@
                     btnChangeGroupControl.TextSize = CSS.CSS_FontSize.TextFontSize;
                     btnChangeGroupControl.IsBold = false;
                 };
-                btnChangeScene.MouseUpEventHandler = (sender, e) => {
+                btnChangeScene.MouseUpEventHandler = (sender, e) =>
+                {
                     btnChangeScene.IsSelected = true;
                     btnChangeScene.TextSize = CSS.CSS_FontSize.HeadlineFontSize;
                     btnChangeScene.IsBold = true;
@@ -880,7 +886,7 @@
         /// </summary>
         void LoadContentView()
         {
-           
+
             if (!Common.ApiUtlis.Ins.DownloadDataComplete && !MainPage.NoLoginMode)
             {
                 var waitPage = new Loading();
@@ -931,7 +937,8 @@
                             }
                         });
                     }
-                    catch (Exception ex) {
+                    catch (Exception ex)
+                    {
                         MainPage.Log($"鍒锋柊涓婚〉寮傚父:{ex.Message}");
                     }
                     finally { }
@@ -1016,8 +1023,8 @@
                     };
                     rowView.AddChidren(functionView);
                     functionViews.Add(functionView);
-                    //缁垮缓浜哄眳鐜锛岀鎶�绯荤粺
-                    if (function.spk == SPK.AcstParent)
+                    //缁垮缓浜哄眳鐜锛岀鎶�绯荤粺,閲戣寕鍏変紡鍌ㄨ兘
+                    if (function.spk == SPK.AcstParent || function.spk == SPK.InverterJinmao)
                     {
                         LoadAcstDiv(functionView, function);
                     }
@@ -1114,14 +1121,14 @@
                     };
                     rowView.AddChidren(functionView);
                     functionViews.Add(functionView);
-                        var btnbg = new Button()
-                        {
-                            UnSelectedImagePath = "Collection/Functionbg.png",
-                            SelectedImagePath = "Collection/FunctionOnbg.png",
-                            Tag = function.sid
-                        };
-                        functionView.AddChidren(btnbg);
-                        LoadDeviceFunctionDiv(functionView, function);
+                    var btnbg = new Button()
+                    {
+                        UnSelectedImagePath = "Collection/Functionbg.png",
+                        SelectedImagePath = "Collection/FunctionOnbg.png",
+                        Tag = function.sid
+                    };
+                    functionView.AddChidren(btnbg);
+                    LoadDeviceFunctionDiv(functionView, function);
 
                     index++;
                 }
@@ -1205,7 +1212,7 @@
                     //2020-12-03 淇敼鍥剧墖鍔犺浇鏂规硶
                     ImageUtlis.Current.LoadLocalOrNetworkImages((scene as Scene).ImagePath, functionView);
 
-                    LoadSceneFunctionDiv( functionView, scene);
+                    LoadSceneFunctionDiv(functionView, scene);
                     index++;
                 }
 
@@ -1384,7 +1391,7 @@
 
                 }
 
-                else if(function.spk == SPK.SensorDryContact || function.spk == SPK.SensorDryContact2)
+                else if (function.spk == SPK.SensorDryContact || function.spk == SPK.SensorDryContact2)
                 {
                     btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_white.png";
                     btnIcon.SelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_white.png";
@@ -1456,7 +1463,7 @@
                         SelectedImagePath = "FunctionIcon/Curtain/CurtainCloseWhiteIcon_Shadow.png",
                     };
                     view.AddChidren(btnCurtainClose);
-                   
+
 
                     Button btnCurtainOpen;
                     btnCurtainOpen = new Button()
@@ -1631,11 +1638,13 @@
                         view.AddChidren(btnClose);
 
 
-                        btnClose.MouseDownEventHandler = (sender, e) => {
+                        btnClose.MouseDownEventHandler = (sender, e) =>
+                        {
                             btnClose.IsSelected = true;
                         };
 
-                        btnClose.MouseUpEventHandler = (sender, e) => {
+                        btnClose.MouseUpEventHandler = (sender, e) =>
+                        {
                             btnClose.IsSelected = false;
                             if (function.spk == SPK.GroupControl)
                             {
@@ -1644,10 +1653,12 @@
                                 (function as GroupControl).Control(d);
                             }
                         };
-                        btnOpen.MouseDownEventHandler = (sender, e) => {
+                        btnOpen.MouseDownEventHandler = (sender, e) =>
+                        {
                             btnOpen.IsSelected = true;
                         };
-                        btnOpen.MouseUpEventHandler = (sender, e) => {
+                        btnOpen.MouseUpEventHandler = (sender, e) =>
+                        {
                             btnOpen.IsSelected = false;
                             if (function.spk == SPK.GroupControl)
                             {
@@ -1682,7 +1693,8 @@
                     LoadEvent_SwitchFunction(function, btnSwitch);
                 }
                 //鍙栨秷鏀惰棌浜嬩欢
-                Action cannelCollect = () => {
+                Action cannelCollect = () =>
+                {
                     function.collect = false;
                     //if (SPK.MusicSpkList().Contains(function.spk))//澶勭悊闊充箰涓讳粠鍏崇郴
                     //{
@@ -1698,7 +1710,8 @@
                 };
 
 
-                var skipControlPageEvent = new PublicAssmebly().LoadEvent_SkipFunctionControlPage(function, btnCollection, btnName, btnZone, UI2.FuntionControlView.VideoDoorLock.CommonMethod.Comerom.collect,()=> {
+                var skipControlPageEvent = new PublicAssmebly().LoadEvent_SkipFunctionControlPage(function, btnCollection, btnName, btnZone, UI2.FuntionControlView.VideoDoorLock.CommonMethod.Comerom.collect, () =>
+                {
                     this.LoadDeviceFunctionControlZone();//鍒犻櫎璁惧鍚庨噸鏂板埛鏂癠I
                 });
                 view.MouseUpEventHandler = skipControlPageEvent;
@@ -1706,7 +1719,7 @@
                 btnIcon.MouseUpEventHandler = skipControlPageEvent;
                 btnState.MouseUpEventHandler = skipControlPageEvent;
                 //涓嶉渶瑕佹洿鏂扮姸鎬佺殑鍔熻兘鍒楄〃
-                if(!SPK.NotStatusSpkList.Contains(function.spk) || function.spk != SPK.IpCam_Imou)
+                if (!SPK.NotStatusSpkList.Contains(function.spk) || function.spk != SPK.IpCam_Imou)
                 {
                     UpdataFunctionStates(function);
                 }
@@ -1780,12 +1793,27 @@
                 UnSelectedImagePath = "FunctionIcon/FunctionBg/AcstFunctionBg.png",
             };
             view.AddChidren(btnFunctionViewBg);
-            btnFunctionViewBg.MouseUpEventHandler = (sender, e) => {
-                var page = new AcstParentPage();
-                MainPage.BasePageView.AddChidren(page);
-                page.LoadPage();
-                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-            };
+            if (function.spk == SPK.AcstParent)
+            {
+                btnFunctionViewBg.MouseUpEventHandler = (sender, e) =>
+                {
+                    var page = new AcstParentPage();
+                    MainPage.BasePageView.AddChidren(page);
+                    page.LoadPage();
+                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                };
+            }
+            else if (function.spk == SPK.InverterJinmao)
+            {
+                btnName.TextID = StringId.NewEnergy;
+                btnFunctionViewBg.MouseUpEventHandler = (sender, e) =>
+                {
+                    var page = new InverterJinmaoPage();
+                    MainPage.BasePageView.AddChidren(page);
+                    page.LoadPage();
+                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                };
+            }
 
 
             //Button btnAcstPower = new Button()
@@ -1813,7 +1841,7 @@
             //    })
             //    { IsBackground = true }.Start();
             //};
-           
+
 
 
 
diff --git a/HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs b/HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs
index 59d643c..0370365 100644
--- a/HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs
+++ b/HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs
@@ -772,7 +772,11 @@
                         break;
                     case ShowFunction.Acst:
                         functionCount = FunctionList.List.GetAcstParentList().Count;
-                        functionOnCount = FunctionList.List.GetAcstParentList().FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count;
+                        functionOnCount = 0;
+                        break;
+                    case ShowFunction.InverterJinmao:
+                        functionCount = FunctionList.List.GetInverterJinmaoList().Count;
+                        functionOnCount = 0;
                         break;
                     case ShowFunction.VideoDoorLock:
                         if (Common.ApiUtlis.Ins.hadInternet)
@@ -858,7 +862,7 @@
                     && item != ShowFunction.Music
                     && item != ShowFunction.EnergyMonitoring
                     && item != ShowFunction.SecurityCenter
-                    && item != ShowFunction.Acst && item != ShowFunction.IpCam
+                    && item != ShowFunction.Acst && item != ShowFunction.IpCam && item != ShowFunction.InverterJinmao
                     && functionCount != 0)
                 {
                     btnFunctionCount = new Button()
@@ -1174,8 +1178,7 @@
                         };
                         break;
                     case ShowFunction.Acst:
-                        btnName.TextID = StringId.Acst;
-
+                    case ShowFunction.InverterJinmao:
                         Button btnJMLogo = new Button()
                         {
                             Y = specialList.Contains(index) ? Application.GetRealWidth(147) : Application.GetRealWidth(104),
@@ -1185,38 +1188,30 @@
                         };
                         functionView.AddChidren(btnJMLogo);
 
-                        //Button btnAcstPower = new Button()
-                        //{
-                        //    X = Application.GetRealWidth(120),
-                        //    Y = specialList.Contains(index) ? Application.GetRealWidth(160) : Application.GetRealWidth(117),
-                        //    Width = Application.GetRealWidth(32),
-                        //    Height = Application.GetRealWidth(32),
-                        //    SelectedImagePath = "Public/PowerOpen.png",
-                        //    UnSelectedImagePath = "Public/PowerClose.png",
-                        //    IsSelected = functionOnCount > 0,
-                        //    Tag = item + "_AllControl",
-                        //};
-                        //functionView.AddChidren(btnAcstPower);
-                        //btnAcstPower.MouseUpEventHandler = (sender, e) =>
-                        //{
-                        //    btnAcstPower.IsSelected = !btnAcstPower.IsSelected;
-                        //    string onoff = btnAcstPower.IsSelected ? "on" : "off";
-                        //    Dictionary<string, string> d = new Dictionary<string, string>();
-                        //    d.Add(FunctionAttributeKey.OnOff, onoff);
-                        //    foreach (var temp in FunctionList.List.GetAcstParentList())
-                        //    {
-                        //        Control.Ins.SendWriteCommand(temp, d);
-                        //    }
-                        //};
 
-
-                        btnFunctionViewBg.MouseUpEventHandler = (sender, e) =>
+                        if (item == ShowFunction.Acst)
                         {
-                            var page = new AcstParentPage();
-                            MainPage.BasePageView.AddChidren(page);
-                            page.LoadPage();
-                            MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-                        };
+                            btnName.TextID = StringId.Acst;
+
+                            btnFunctionViewBg.MouseUpEventHandler = (sender, e) =>
+                            {
+                                var page = new AcstParentPage();
+                                MainPage.BasePageView.AddChidren(page);
+                                page.LoadPage();
+                                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                            };
+                        }
+                        else if (item == ShowFunction.InverterJinmao)
+                        {
+                            btnName.TextID = StringId.NewEnergy;
+                            btnFunctionViewBg.MouseUpEventHandler = (sender, e) =>
+                            {
+                                var page = new InverterJinmaoPage();
+                                MainPage.BasePageView.AddChidren(page);
+                                page.LoadPage();
+                                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                            };
+                        }
                         break;
                     case ShowFunction.VideoDoorLock:
                         //钀ょ煶瑙嗛闂ㄩ攣
@@ -1257,7 +1252,7 @@
                     && ShowFunction.VideoIntercom != item
                     && ShowFunction.SecurityCenter != item
                     && ShowFunction.Series != item
-                    && ShowFunction.Acst != item)
+                    && ShowFunction.Acst != item && ShowFunction.InverterJinmao != item)
                 {
                     btnFunctionViewBg.MouseUpEventHandler = (sender, e) =>
                     {
diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs b/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs
index a7cd03f..d84205d 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/PersonalCenterPage.cs
@@ -215,10 +215,10 @@
                 TextAlignment = TextAlignment.Center,
                 TextColor = CSS_Color.FirstLevelTitleColor,
                 TextSize = CSS_FontSize.SubheadingFontSize,
-                Text = UserInfo.Current.userName// string.IsNullOrEmpty(UserInfo.Current.userName) ? Language.StringByID(StringId.UsersWhoNameIsEmpty) : UserInfo.Current.userName
+                Text = UserInfo.Current.userName // string.IsNullOrEmpty(UserInfo.Current.userName) ? Language.StringByID(StringId.UsersWhoNameIsEmpty) : UserInfo.Current.userName
             };
             personalInfoView.AddChidren(btnUserName);
-            if (!string.IsNullOrEmpty( UserInfo.Current.userName) && UserInfo.Current.userName == UserInfo.Current.AccountString)
+            if (!string.IsNullOrEmpty(UserInfo.Current.userName) && UserInfo.Current.userName == UserInfo.Current.AccountString)
             {
                 btnUserName.Text = Language.StringByID(StringId.UsersWhoNameIsEmpty);
             }
@@ -229,7 +229,7 @@
                 TextAlignment = TextAlignment.Center,
                 TextColor = CSS_Color.TextualColor,
                 TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                Text =  UserInfo.Current.AccountString
+                Text = UserInfo.Current.AccountString
             };
             personalInfoView.AddChidren(btnEmail);
 
@@ -240,7 +240,7 @@
                 Width = Application.GetMinRealAverage(84),
                 Height = Application.GetMinRealAverage(84),
                 Radius = (uint)Application.GetMinRealAverage(42),
-                ImagePath =  UserInfo.Current.headImagePagePath
+                ImagePath = UserInfo.Current.headImagePagePath
             };
             bodyView.AddChidren(userHeadImageView);
             //if (  UserInfo.Current.headImagePageBytes==null)
@@ -254,7 +254,7 @@
             #endregion
 
             //浣撻獙妯″紡
-            if(MainPage.NoLoginMode)
+            if (MainPage.NoLoginMode)
             {
                 Button btnExit = new Button()
                 {
@@ -271,7 +271,7 @@
                     BackgroundColor = CSS_Color.MainBackgroundColor,
                     SelectedBackgroundColor = CSS_Color.MainBackgroundColor,
                 };
-                if(Language.CurrentLanguage =="Chinese")
+                if (Language.CurrentLanguage == "Chinese")
                 {
                     btnExit.Text = "閫�鍑�";
                 }
@@ -376,7 +376,7 @@
                 BackgroundImagePath = "PersonalCenter/UserTypebg.png",
             };
             residenceInfoView.AddChidren(userTypeView);
-            if (Language.CurrentLanguage != "Chinese" )//&& !DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
+            if (Language.CurrentLanguage != "Chinese")//&& !DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
             {
                 userTypeView.X = Application.GetRealWidth(200);
                 userTypeView.Width = Application.GetRealWidth(180);
@@ -932,7 +932,7 @@
             #endregion
 
             #region Siri
-            #if __IOS__
+#if __IOS__
             //if (Application.PhoneType >= 12)
             {
                 supportViewCellCount++;
@@ -965,10 +965,11 @@
                     TextAlignment = TextAlignment.CenterLeft,
                     TextSize = CSS_FontSize.TextFontSize
                 };
-                if(Language.CurrentLanguage == "Chinese")
+                if (Language.CurrentLanguage == "Chinese")
                 {
                     btnSiriText.Text = "Siri蹇嵎鏂瑰紡";
-                }else
+                }
+                else
                 {
                     btnSiriText.Text = "Siri Shortcut";
                 }
@@ -976,8 +977,9 @@
                 siriView.AddChidren(btnSiriText);
 
 
-                btnSiriText.MouseUpEventHandler = (sender, e) => {
-                    var ddd =new Other.SkipControl();
+                btnSiriText.MouseUpEventHandler = (sender, e) =>
+                {
+                    var ddd = new Other.SkipControl();
                     ddd.SkipSiriView();
                 };
 
@@ -1001,7 +1003,7 @@
                 };
                 siriView.AddChidren(btnSmartSpeakerViewLine);
             }
-            #endif
+#endif
             #endregion
 
             #region 鑾峰彇鏀寔
diff --git a/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/CacDayHistoryPage.cs b/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/CacDayHistoryPage.cs
index 4553294..2668f25 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/CacDayHistoryPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/CacDayHistoryPage.cs
@@ -31,12 +31,14 @@
         /// </summary>
         public void InitView()
         {
-            new TopViewDiv(bodyView, Language.StringByID(StringId.StatisticalChart24Hour)).LoadTopView();
+            var topview = new TopViewDiv(bodyView, Language.StringByID(StringId.StatisticalChart24Hour));
+            topview.maginY = 10;
+            topview.LoadTopView();
             bodyView.BackgroundColor = CSS_Color.BackgroundColor;
 
             var contentView = new FrameLayout()
             {
-                Y = Application.GetRealHeight(64),
+                Y = Application.GetRealHeight(74),
                 Height = Application.GetRealHeight(603),
             };
             bodyView.AddChidren(contentView);
@@ -80,38 +82,38 @@
 
 #if DEBUG
 
-            //List<string> vs = new List<string>() {
-            //            "1","2","3","4","5","6","7","8","9","10","11","12","13","14"
-            //        };
-            //brokenLine.InitXdataText(vs);
-            //brokenLine.InitYdataText("yData", new List<EnvironmentalSensorHistor>() {
-            //    new EnvironmentalSensorHistor{ fieldName = "1", fieldValue= "23"  },
-            //    new EnvironmentalSensorHistor{ fieldName = "2", fieldValue= "22"  },
-            //    new EnvironmentalSensorHistor{ fieldName = "3", fieldValue= "-11"  },
-            //    new EnvironmentalSensorHistor{ fieldName = "4", fieldValue= "21"  },
-            //    new EnvironmentalSensorHistor{ fieldName = "5", fieldValue= "-41"  },
-            //    new EnvironmentalSensorHistor{ fieldName = "6", fieldValue= "23"  },
-            //    new EnvironmentalSensorHistor{ fieldName = "7", fieldValue= "-31"  },
-            //    new EnvironmentalSensorHistor{ fieldName = "8", fieldValue= "-23"  },
-            //    new EnvironmentalSensorHistor{ fieldName = "9", fieldValue= "-11"  },
-            //    new EnvironmentalSensorHistor{ fieldName = "10", fieldValue= "-21"  },
-            //    new EnvironmentalSensorHistor{ fieldName = "11", fieldValue= "24"  },
-            //    new EnvironmentalSensorHistor{ fieldName = "12", fieldValue= "41"  },
-            //    new EnvironmentalSensorHistor{ fieldName = "13", fieldValue= "32"  },
-            //    new EnvironmentalSensorHistor{ fieldName = "14", fieldValue= "23"  }
-            //}, "#FF9D54");
-            //brokenLine.yTitle = "(鈩�)";
-            //brokenLine.xTitle = "";
-            ////if (curQueryType != "hour")
-            ////{
-            ////    brokenLine.xTitle = Language.StringByID(StringId.Date);
-            ////}
-            //var opString = brokenLine.InitOption();
+            List<string> vs = new List<string>() {
+                        "1","2","3","4","5","6","7","8","9","10","11","12","13","14"
+                    };
+            brokenLine.InitXdataText(vs);
+            brokenLine.InitYdataText("yData", new List<EnvironmentalSensorHistor>() {
+                new EnvironmentalSensorHistor{ fieldName = "1", fieldValue= "23"  },
+                new EnvironmentalSensorHistor{ fieldName = "2", fieldValue= "22"  },
+                new EnvironmentalSensorHistor{ fieldName = "3", fieldValue= "-11"  },
+                new EnvironmentalSensorHistor{ fieldName = "4", fieldValue= "21"  },
+                new EnvironmentalSensorHistor{ fieldName = "5", fieldValue= "-41"  },
+                new EnvironmentalSensorHistor{ fieldName = "6", fieldValue= "23"  },
+                new EnvironmentalSensorHistor{ fieldName = "7", fieldValue= "-31"  },
+                new EnvironmentalSensorHistor{ fieldName = "8", fieldValue= "-23"  },
+                new EnvironmentalSensorHistor{ fieldName = "9", fieldValue= "-11"  },
+                new EnvironmentalSensorHistor{ fieldName = "10", fieldValue= "-21"  },
+                new EnvironmentalSensorHistor{ fieldName = "11", fieldValue= "24"  },
+                new EnvironmentalSensorHistor{ fieldName = "12", fieldValue= "41"  },
+                new EnvironmentalSensorHistor{ fieldName = "13", fieldValue= "32"  },
+                new EnvironmentalSensorHistor{ fieldName = "14", fieldValue= "23"  }
+            }, "#FF9D54");
+            brokenLine.yTitle = "(鈩�)";
+            brokenLine.xTitle = "";
+            //if (curQueryType != "hour")
+            //{
+            //    brokenLine.xTitle = Language.StringByID(StringId.Date);
+            //}
+            var opString = brokenLine.InitOption();
 
-            //    myEchartsView_Line.ShowWithOption(opString);
+            myEchartsView_Line.ShowWithOptionJsonString(opString);
 
 #endif
-            LoadMothed_GetHistoryData();
+            //LoadMothed_GetHistoryData();
         }
 
         /// <summary>
diff --git a/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/CacHistoryChoosePage.cs b/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/CacHistoryChoosePage.cs
index d9514ef..f46c646 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/CacHistoryChoosePage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/CacHistoryChoosePage.cs
@@ -19,12 +19,12 @@
 
         public void InitView()
         {
-            new TopViewDiv(bodyView, Language.StringByID(StringId.Data)).LoadTopView();
+            new TopViewDiv(bodyView, Language.StringByID(StringId.Data)) { maginY = 10 }.LoadTopView();
             bodyView.BackgroundColor = CSS_Color.BackgroundColor;
 
             FrameLayout tempView = new FrameLayout()
             {
-                Y = Application.GetRealHeight(64),
+                Y = Application.GetRealHeight(74),
                 Height = Application.GetRealHeight(50),
                 BackgroundColor = CSS_Color.MainBackgroundColor,
             };
@@ -59,7 +59,8 @@
                 TextID = StringId.TemperatureStatistics
             };
             tempView.AddChidren(btnTempName);
-            btnTempName.MouseUpEventHandler = (sender, e) => {
+            btnTempName.MouseUpEventHandler = (sender, e) =>
+            {
                 var page = new CacWeekHistoryPage(device, "room_temp");
                 MainPage.BasePageView.AddChidren(page);
                 page.InitView();
@@ -70,7 +71,7 @@
 
             FrameLayout humidityView = new FrameLayout()
             {
-                Y = Application.GetRealHeight(64 + 50),
+                Y = Application.GetRealHeight(74 + 50),
                 Height = Application.GetRealHeight(50),
                 BackgroundColor = CSS_Color.MainBackgroundColor,
             };
@@ -95,7 +96,8 @@
                 TextID = StringId.HumidityStatistics
             };
             humidityView.AddChidren(btnHumidityName);
-            btnHumidityName.MouseUpEventHandler = (sender, e) => {
+            btnHumidityName.MouseUpEventHandler = (sender, e) =>
+            {
                 var page = new CacWeekHistoryPage(device, "room_humidity");
                 MainPage.BasePageView.AddChidren(page);
                 page.InitView();
diff --git a/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/CacWeekHistoryPage.cs b/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/CacWeekHistoryPage.cs
index c5084de..5a064b9 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/CacWeekHistoryPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/CacWeekHistoryPage.cs
@@ -34,11 +34,15 @@
         {
             if (showType == "room_temp")
             {
-                new TopViewDiv(bodyView, Language.StringByID(StringId.Temp)).LoadTopView();
+                var topView = new TopViewDiv(bodyView, Language.StringByID(StringId.Temp));
+                topView.maginY = 10;
+                topView.LoadTopView();
             }
             else
             {
-                new TopViewDiv(bodyView, Language.StringByID(StringId.Humidity)).LoadTopView();
+                var topView = new TopViewDiv(bodyView, Language.StringByID(StringId.Humidity));
+                topView.maginY = 10;
+                topView.LoadTopView();
             }
 
 
@@ -51,7 +55,7 @@
         {
             FrameLayout contentView = new FrameLayout()
             {
-                Y = Application.GetRealHeight(80),
+                Y = Application.GetRealHeight(90),
                 Gravity = Gravity.CenterHorizontal,
                 Width = Application.GetRealWidth(343),
                 Height = Application.GetRealHeight(482),
@@ -99,18 +103,18 @@
             }
             else
             {
-                btnUnit.Text = Language.StringByID(StringId.Uint) + "%";
+                btnUnit.Text = Language.StringByID(StringId.Uint) + "锛�%";
             }
             dataView.AddChidren(btnUnit);
 
 #if DEBUG
-            //dataDic.Add("0201", 49);
-            //dataDic.Add("0202", 20);
-            //dataDic.Add("0203", 10);
-            //dataDic.Add("0204", 49);
-            //dataDic.Add("0205", 20);
-            //dataDic.Add("0206", 20);
-            //dataDic.Add("0207", 48);
+            dataDic.Add("0201", 49);
+            dataDic.Add("0202", 20);
+            dataDic.Add("0203", 10);
+            dataDic.Add("0204", 49);
+            dataDic.Add("0205", 20);
+            dataDic.Add("0206", 20);
+            dataDic.Add("0207", 48);
 
             //dataDic.Add("0201", -20);
             //dataDic.Add("0202", -20);
@@ -176,7 +180,17 @@
 
             new System.Threading.Thread(() =>
             {
-
+#if DEBUG
+                if (MainPage.NoLoginMode)
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        RefrshDataView(dataDic, dataShowView);
+                        RefreshXtext();
+                    });
+                    return;
+                }
+#endif
                 var revertObj = new HttpServerRequest().GetSensorHistory("week", device.deviceId, showType);
                 if (revertObj.Code == StateCode.SUCCESS)
                 {
@@ -254,14 +268,9 @@
                 cv.InitView();
                 dataShowView.AddChidren(cv);
                 cv.Clicker();
-
-
                 valueIndex++;
             }
         }
-
-
-
     }
 
     class DataItemView : FrameLayout
@@ -281,7 +290,7 @@
 
             Button btnValue = new Button()
             {
-                Width = Application.GetRealWidth(18),
+                Width = Application.GetRealWidth(24),
                 Height = Application.GetRealHeight(30),
                 TextAlignment = TextAlignment.CenterRight,
                 TextColor = 0xFF43425D,
@@ -356,6 +365,8 @@
             }
             Width = Application.GetRealWidth(39);
             Height = Application.GetRealHeight((int)(value * 3 + 30));
+
+            ScrollEnabled = false;
         }
 
         public void InitView()
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Acst/AcstParentPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Acst/AcstParentPage.cs
index 97c577b..ae162ff 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Acst/AcstParentPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Acst/AcstParentPage.cs
@@ -6,7 +6,25 @@
 
 namespace HDL_ON.UI
 {
-
+    public class VerticalScrolViewLayoutJinmao : VerticalScrolViewLayout
+    {
+        public VerticalScrolViewLayoutJinmao()
+        {
+#if __IOS__
+            try
+            {
+                //鑷姩鍋忕Щ鍙栨秷
+                if (UIKit.UIDevice.CurrentDevice.CheckSystemVersion(11, 0))
+                {
+                    (this.uiView as UIKit.UIScrollView).ContentInsetAdjustmentBehavior = UIKit.UIScrollViewContentInsetAdjustmentBehavior.Never;
+                }
+            }catch(Exception ex)
+            {
+                MainPage.Log("error", "閲戣寕iOS 婊氬姩瀹瑰櫒鍋忕Щ鍊艰缃紓甯革細" + ex.Message);
+            }
+#endif
+        }
+    }
 
     /// <summary>
 	/// 缁垮缓绉戞妧绯荤粺
@@ -16,7 +34,7 @@
     {
         static AcstParentPage basePage;
 
-        VerticalScrolViewLayout contentView;
+        VerticalScrolViewLayoutJinmao contentView;
 
         string helloText = "涓婂崍濂�";
 
@@ -42,9 +60,7 @@
         /// </summary>
         Dictionary<string, AcstSubControlView> subViewList;
 
-
         Button btnWorkSceneControl;
-
         Button btnModeControl;
         Button btnPowerControl;
 
@@ -105,10 +121,14 @@
             this.function = FunctionList.List.GetAcstParentList()[0];
             this.BackgroundColor = CSS.CSS_Color.BackgroundColor;
             //this.AddChidren(new Button() { Height = Application.GetRealHeight(50), BackgroundColor = curColor });
-            contentView = new VerticalScrolViewLayout() {
+            contentView = new VerticalScrolViewLayoutJinmao()
+            {
                 Height = Application.GetRealHeight(667 - 56),
+                VerticalScrollBarEnabled = false,
             };
-            this.AddChidren(contentView);
+            basePage.AddChidren(contentView);
+
+
             subViewList = new Dictionary<string, AcstSubControlView>();
         }
         /// <summary>
@@ -164,53 +184,53 @@
                     switch (temp.GetAttrState("mode"))
                     {
                         case "cool"://鍒跺喎
-                        basePage.btnModeControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/ModeCoolIcon2.png";
+                            basePage.btnModeControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/ModeCoolIcon2.png";
                             basePage.btnModeControl.SelectedImagePath = $"FunctionIcon/Acst/{basePage.imageFolder}/ModeCoolIcon2.png";
                             break;
                         case "heat"://鍒剁儹
-                        basePage.btnModeControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/ModeHeatIcon2.png";
+                            basePage.btnModeControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/ModeHeatIcon2.png";
                             basePage.btnModeControl.SelectedImagePath = $"FunctionIcon/Acst/{basePage.imageFolder}/ModeHeatIcon2.png";
                             break;
                         case "fan"://閫氶
-                        basePage.btnModeControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/ModeFanIcon2.png";
+                            basePage.btnModeControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/ModeFanIcon2.png";
                             basePage.btnModeControl.SelectedImagePath = $"FunctionIcon/Acst/{basePage.imageFolder}/ModeFanIcon2.png";
                             break;
                         case "dry"://闄ゆ箍
-                        basePage.btnModeControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/ModeDeHumiIcon2.png";
+                            basePage.btnModeControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/ModeDeHumiIcon2.png";
                             basePage.btnModeControl.SelectedImagePath = $"FunctionIcon/Acst/{basePage.imageFolder}/ModeDeHumiIcon2.png";
                             break;
                         case "humidity"://鍔犳箍
-                        basePage.btnModeControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/ModeHumiIcon2.png";
+                            basePage.btnModeControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/ModeHumiIcon2.png";
                             basePage.btnModeControl.SelectedImagePath = $"FunctionIcon/Acst/{basePage.imageFolder}/ModeHumiIcon2.png";
                             break;
                         case "heat_humidity"://鍒剁儹鍔犳箍
-                        basePage.btnModeControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/ModeHeatHumiIcon2.png";
+                            basePage.btnModeControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/ModeHeatHumiIcon2.png";
                             basePage.btnModeControl.SelectedImagePath = $"FunctionIcon/Acst/{basePage.imageFolder}/ModeHeatHumiIcon2.png";
                             break;
                     }
                     switch (temp.GetAttrState("scene"))
                     {
                         case "at_home"://鍦ㄥ
-                        basePage.btnWorkSceneControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/SceneAtHome2.png";
+                            basePage.btnWorkSceneControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/SceneAtHome2.png";
                             basePage.btnWorkSceneControl.SelectedImagePath = $"FunctionIcon/Acst/{basePage.imageFolder}/SceneAtHome2.png";
                             break;
                         case "leave_home"://绂诲
-                        basePage.btnWorkSceneControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/SceneAwayHomeIcon2.png";
+                            basePage.btnWorkSceneControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/SceneAwayHomeIcon2.png";
                             basePage.btnWorkSceneControl.SelectedImagePath = $"FunctionIcon/Acst/{basePage.imageFolder}/SceneAwayHomeIcon2.png";
                             break;
                         case "sleep"://鐫$湢
-                        basePage.btnWorkSceneControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/SceneSleepIcon2.png";
+                            basePage.btnWorkSceneControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/SceneSleepIcon2.png";
                             basePage.btnWorkSceneControl.SelectedImagePath = $"FunctionIcon/Acst/{basePage.imageFolder}/SceneSleepIcon2.png";
                             break;
                     }
                     basePage.btnModeControl.IsSelected = basePage.btnWorkSceneControl.IsSelected = basePage.btnPowerControl.IsSelected = temp.GetAttrState("on_off") == "on";
                 });
-            }catch (Exception ex)
+            }
+            catch (Exception ex)
             {
-                MainPage.Log("绉戞妧绯荤粺鏇存柊鏁版嵁澶辫触");
+                MainPage.Log("绉戞妧绯荤粺鏇存柊鏁版嵁澶辫触:" + ex.Message);
             }
         }
-
 
         /// <summary>
         /// 鏇存柊瀛愭帶淇℃伅
@@ -232,12 +252,21 @@
                         basePage.subViewList.TryGetValue(temp.sid, out view);
                         if (view != null)
                         {
-                            view.btnSubHumidityValues.Text = temp.GetAttrState(AcstSub_AttrEnum.room_humidity.ToString()) + "%";
-                            view.btnSubTempValues.Text = temp.GetAttrState(AcstSub_AttrEnum.room_temp.ToString()) + "掳";
-                            view.btnSubPower.IsSelected = temp.GetAttrState(AcstSub_AttrEnum.on_off.ToString()) == "on";
+                            if (temp.spk == SPK.AcstSub)
+                            {
+                                view.btnSubHumidityValues.Text = temp.GetAttrState(AcstSub_AttrEnum.room_humidity.ToString()) + "%";
+                                view.btnSubTempValues.Text = temp.GetAttrState(AcstSub_AttrEnum.room_temp.ToString()) + "掳";
+                                view.btnSubPower.IsSelected = temp.GetAttrState(AcstSub_AttrEnum.on_off.ToString()) == "on";
+                            }
+                            else if (temp.spk == SPK.WaterHeaterJinmao)
+                            {
+                                view.btnSubTempValues.Text = temp.GetAttrState(WaterHeaterJinmao_AttrEnum.temp.ToString()) + "掳";
+                                view.btnSubPower.IsSelected = temp.GetAttrState(WaterHeaterJinmao_AttrEnum.on_off.ToString()) == "on";
+                            }
                         }
                     }
-                    catch (Exception ex ) {
+                    catch (Exception ex)
+                    {
                         MainPage.Log($"绉戞妧绯荤粺鏇存柊寮傚父1:{ex.Message}");
                     }
                 });
@@ -278,7 +307,8 @@
             Button btnBackClick = new Button();
             backView.AddChidren(btnBackClick);
 
-            btnBackClick.MouseUpEventHandler = (sender, e) => {
+            btnBackClick.MouseUpEventHandler = (sender, e) =>
+            {
                 this.RemoveFromParent();
             };
 
@@ -471,7 +501,7 @@
                     {
                         tempValues = tempValues.Remove(tempValues.IndexOf('.'), tempValues.Length - tempValues.IndexOf('.'));
                     }
-                    sensorDiyView_Temp = new SensorDiyView(sensorListView, curColor, tempValues, "掳","", Language.StringByID(StringId.Temp));
+                    sensorDiyView_Temp = new SensorDiyView(sensorListView, curColor, tempValues, "掳", "", Language.StringByID(StringId.Temp));
                 }
                 if (humiObj != null)
                 {
@@ -480,7 +510,7 @@
                     {
                         humiValues = humiValues.Remove(humiValues.IndexOf('.'), humiValues.Length - humiValues.IndexOf('.'));
                     }
-                    sensorDiyView_Humi = new SensorDiyView(sensorListView, curColor, humiValues , "%", "", Language.StringByID(StringId.Humidity));
+                    sensorDiyView_Humi = new SensorDiyView(sensorListView, curColor, humiValues, "%", "", Language.StringByID(StringId.Humidity));
                 }
                 if (pm25Obj != null)
                 {
@@ -568,7 +598,7 @@
 
             var subTitleView = new FrameLayout()
             {
-                Height = Application.GetRealHeight(54-11),
+                Height = Application.GetRealHeight(54 - 11),
             };
             contentView.AddChidren(subTitleView);
 
@@ -584,7 +614,8 @@
             };
             subTitleView.AddChidren(btnCollection);
             //鏀惰棌
-            btnCollection.MouseUpEventHandler = (sender, e) => {
+            btnCollection.MouseUpEventHandler = (sender, e) =>
+            {
                 function.collect = !function.collect;
                 btnCollection.IsSelected = function.collect;
 
@@ -623,8 +654,9 @@
 #if DEBUG
                     System.Threading.Thread.Sleep(200);
 #endif
-
-                    foreach (var sub in FunctionList.List.GetAcstSubList())
+                    var showList = FunctionList.List.GetAcstSubList();
+                    showList.AddRange(FunctionList.List.GetWaterHeaterJinmaoList());
+                    foreach (var sub in showList)
                     {
                         if (subViewList.ContainsKey(sub.sid))
                         {
@@ -638,6 +670,7 @@
                                 subFunctionListView = new HorizontalScrolViewLayout()
                                 {
                                     Height = Application.GetRealHeight(93),
+                                    ScrollEnabled = false,
                                 };
                                 contentView.AddChidren(subFunctionListView);
                                 subFunctionListView.AddChidren(new Button { Width = Application.GetRealWidth(9) });
@@ -653,15 +686,16 @@
                                 })
                                 { IsBackground = true }.Start();
                             }
-                        subFunctionCount++;
+                            subFunctionCount++;
                         });
 
                         System.Threading.Thread.Sleep(10);
                     }
                 }
                 catch { }
-                finally{
-             
+                finally
+                {
+
                 }
             }).Start();
             #endregion
@@ -670,9 +704,12 @@
             #region 搴曢儴鎺у埗鏍�
             var bottomView = new FrameLayout()
             {
-                Y = Application.GetRealHeight(667 - 56),
-                Height = Application.GetRealHeight(56),
+                Y = Application.GetRealHeight(667 - 66),
+                Height = Application.GetRealHeight(66+16),
                 BackgroundColor = CSS.CSS_Color.MainBackgroundColor,
+                Radius = (uint)Application.GetRealHeight(16),
+                BorderColor = 0x00FFFFFF,
+                BorderWidth = 0,
             };
             this.AddChidren(bottomView);
 
@@ -698,11 +735,13 @@
 
                 var dialogView = new FrameLayout();
                 dialog.AddChidren(dialogView);
-                dialogView.MouseUpEventHandler = (sender, e) => {
+                dialogView.MouseUpEventHandler = (sender, e) =>
+                {
                     dialog.Close();
                 };
 
-                var dialogContentView = new VerticalScrolViewLayout() {
+                var dialogContentView = new VerticalScrolViewLayout()
+                {
                     X = Application.GetRealWidth(34),
                     Y = Application.GetRealHeight(291),
                     Width = Application.GetRealWidth(148),
@@ -711,7 +750,8 @@
                 };
                 dialogView.AddChidren(dialogContentView);
 
-                var titleView = new FrameLayout() {
+                var titleView = new FrameLayout()
+                {
                     X = Application.GetRealWidth(2),
                     Y = Application.GetRealHeight(3),
                     Width = Application.GetRealWidth(144),
@@ -988,15 +1028,12 @@
 
             btnWorkSceneControl.MouseUpEventHandler = (sender2, e2) =>
             {
-                //if (function.trait_on_off.state == "off")
-                //{
-                //    return;
-                //}
                 Dialog dialog = new Dialog();
 
                 var dialogView = new FrameLayout();
                 dialog.AddChidren(dialogView);
-                dialogView.MouseUpEventHandler = (sender, e) => {
+                dialogView.MouseUpEventHandler = (sender, e) =>
+                {
                     dialog.Close();
                 };
 
@@ -1176,7 +1213,7 @@
         public string Tag;
         public string unitString;
 
-        public SensorDiyView(HorizontalScrolViewLayout view,uint color,string value,string unitStr, string unitStr2, string text,int setWidth = 60)
+        public SensorDiyView(HorizontalScrolViewLayout view, uint color, string value, string unitStr, string unitStr2, string text, int setWidth = 60)
         {
             unitString = unitStr;
             if (string.IsNullOrEmpty(value))
@@ -1212,11 +1249,11 @@
                 TextAlignment = TextAlignment.Center,
                 TextColor = 0xFF949AA5,
                 TextSize = 12,
-                Text = text ,
+                Text = text,
             };
             contentView.AddChidren(btnText);
 
-            if(!string.IsNullOrEmpty(unitStr2))
+            if (!string.IsNullOrEmpty(unitStr2))
             {
                 btnText.Text += "(" + unitStr2 + ")";
             }
@@ -1224,7 +1261,7 @@
 
         }
 
-        public void UpdateValue(string value,bool isInt)
+        public void UpdateValue(string value, bool isInt)
         {
             if (value.Contains(".") && isInt)
             {
@@ -1244,7 +1281,7 @@
         public Button btnSubPower;
         public string Tag;
 
-        public AcstSubControlView(Function sub, HorizontalScrolViewLayout subFunctionListView,string imageFolder)
+        public AcstSubControlView(Function sub, HorizontalScrolViewLayout subFunctionListView, string imageFolder)
         {
             Tag = sub.sid;
 
@@ -1286,33 +1323,9 @@
                 Width = Application.GetRealWidth(35),
                 TextColor = 0xFF1b3035,
                 TextSize = 10,
-                Text = sub.GetAttrState(AcstSub_AttrEnum.room_temp.ToString()) + "掳C",
                 TextAlignment = TextAlignment.CenterLeft,
             };
             subFunctionView.AddChidren(btnSubTempValues);
-
-            Button btnSubHumidityIcon = new Button()
-            {
-                X = btnSubTempValues.Right + Application.GetRealWidth(5),
-                Y = Application.GetRealHeight(47 + 11),
-                Width = Application.GetMinRealAverage(11),
-                Height = Application.GetMinRealAverage(11),
-                UnSelectedImagePath = "FunctionIcon/CAC/HvacCacHumidityIcon.png",
-            };
-            subFunctionView.AddChidren(btnSubHumidityIcon);
-
-            btnSubHumidityValues = new TextButton()
-            {
-                X = btnSubHumidityIcon.Right,
-                Y = Application.GetRealHeight(45 + 11),
-                Height = Application.GetRealHeight(14),
-                Width = Application.GetRealWidth(35),
-                TextColor = 0xFF1b3053,
-                TextSize = 10,
-                Text = sub.GetAttrState(AcstSub_AttrEnum.room_humidity.ToString()) + "%",
-                TextAlignment = TextAlignment.CenterLeft,
-            };
-            subFunctionView.AddChidren(btnSubHumidityValues);
 
             btnSubPower = new Button()
             {
@@ -1325,7 +1338,8 @@
                 TextAlignment = TextAlignment.Center,
             };
             subFunctionView.AddChidren(btnSubPower);
-            btnSubPower.MouseUpEventHandler = (sender, e) => {
+            btnSubPower.MouseUpEventHandler = (sender, e) =>
+            {
                 btnSubPower.IsSelected = !btnSubPower.IsSelected;
                 string onoff = btnSubPower.IsSelected ? "on" : "off";
                 Dictionary<string, string> d = new Dictionary<string, string>();
@@ -1333,21 +1347,70 @@
                 Control.Ins.SendWriteCommand(sub, d);
             };
 
-            EventHandler<MouseEventArgs> eventHandler = (sender, e) => {
-                var page = new AcstSubPage(sub,imageFolder);
-                MainPage.BasePageView.AddChidren(page);
-                page.LoadPage(()=> {
-                    btnRoomInfo.Text = sub.name;
-                });
-                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-            };
+            if (sub.spk == SPK.AcstSub)
+            {
+                btnSubTempValues.Text = sub.GetAttrState(AcstSub_AttrEnum.room_temp.ToString()) + "掳C";
+                Button btnSubHumidityIcon = new Button()
+                {
+                    X = btnSubTempValues.Right + Application.GetRealWidth(5),
+                    Y = Application.GetRealHeight(47 + 11),
+                    Width = Application.GetMinRealAverage(11),
+                    Height = Application.GetMinRealAverage(11),
+                    UnSelectedImagePath = "FunctionIcon/CAC/HvacCacHumidityIcon.png",
+                };
+                subFunctionView.AddChidren(btnSubHumidityIcon);
 
-            btnRoomInfo.MouseUpEventHandler = eventHandler;
-            btnSubHumidityIcon.MouseUpEventHandler = eventHandler;
-            btnSubHumidityValues.MouseUpEventHandler = eventHandler;
-            btnSubTempIcon.MouseUpEventHandler = eventHandler;
-            btnSubTempValues.MouseUpEventHandler = eventHandler;
-            subFunctionView.MouseUpEventHandler = eventHandler;
+                btnSubHumidityValues = new TextButton()
+                {
+                    X = btnSubHumidityIcon.Right,
+                    Y = Application.GetRealHeight(45 + 11),
+                    Height = Application.GetRealHeight(14),
+                    Width = Application.GetRealWidth(35),
+                    TextColor = 0xFF1b3053,
+                    TextSize = 10,
+                    Text = sub.GetAttrState(AcstSub_AttrEnum.room_humidity.ToString()) + "%",
+                    TextAlignment = TextAlignment.CenterLeft,
+                };
+                subFunctionView.AddChidren(btnSubHumidityValues);
+
+                EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+                {
+                    var page = new AcstSubPage(sub, imageFolder);
+                    MainPage.BasePageView.AddChidren(page);
+                    page.LoadPage(() =>
+                    {
+                        btnRoomInfo.Text = sub.name;
+                    });
+                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                };
+
+                btnRoomInfo.MouseUpEventHandler = eventHandler;
+                btnSubTempIcon.MouseUpEventHandler = eventHandler;
+                btnSubTempValues.MouseUpEventHandler = eventHandler;
+                subFunctionView.MouseUpEventHandler = eventHandler;
+                btnSubHumidityIcon.MouseUpEventHandler = eventHandler;
+                btnSubHumidityValues.MouseUpEventHandler = eventHandler;
+            }
+            else if (sub.spk == SPK.WaterHeaterJinmao)
+            {
+                btnSubTempValues.Text = sub.GetAttrState(WaterHeaterJinmao_AttrEnum.temp.ToString()) + "掳C";
+                EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
+                {
+                    var page = new WaterHeaterJinmaoPage(sub);
+                    MainPage.BasePageView.AddChidren(page);
+                    page.LoadPage(() =>
+                    {
+                        btnRoomInfo.Text = sub.name;
+                    });
+                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                };
+
+                btnRoomInfo.MouseUpEventHandler = eventHandler;
+                btnSubTempIcon.MouseUpEventHandler = eventHandler;
+                btnSubTempValues.MouseUpEventHandler = eventHandler;
+                subFunctionView.MouseUpEventHandler = eventHandler;
+
+            }
         }
     }
 
@@ -1360,7 +1423,7 @@
 
         public Button btnText;
 
-        public IconButton(string iconPath,string iconPath2,string text,uint color,bool isSelect)
+        public IconButton(string iconPath, string iconPath2, string text, uint color, bool isSelect)
         {
             view = this;
             view.Width = Application.GetRealWidth(144);
@@ -1391,19 +1454,22 @@
             };
             view.AddChidren(btnText);
 
-            
+
         }
 
 
         public void Click(Action action)
         {
-            view.MouseUpEventHandler = (sender, e) => {
+            view.MouseUpEventHandler = (sender, e) =>
+            {
                 action();
             };
-            btnText.MouseUpEventHandler = (sender, e) => {
+            btnText.MouseUpEventHandler = (sender, e) =>
+            {
                 action();
             };
-            btnIcon.MouseUpEventHandler = (sender, e) => {
+            btnIcon.MouseUpEventHandler = (sender, e) =>
+            {
                 action();
             };
         }
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Acst/AcstSubHistoryPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Acst/AcstSubHistoryPage.cs
index bd1070c..786666a 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Acst/AcstSubHistoryPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Acst/AcstSubHistoryPage.cs
@@ -49,7 +49,10 @@
         /// </summary>
         public void LoadPage()
         {
-            new TopViewDiv(bodyView, function.name).LoadTopView();
+            var topView = new TopViewDiv(bodyView, function.name);
+            topView.maginY = 10;
+            topView.LoadTopView();
+
             bodyView.BackgroundColor = CSS_Color.BackgroundColor;
 
             //var contentView = new FrameLayout()
@@ -181,59 +184,59 @@
 
 #if DEBUG
 
-            //List<string> vs = new List<string>() {
-            //            "1","2","3","4","5","6","7","8","9","10","11","12","13","14"
-            //        };
-            //tempEchartOption.InitXdataText(vs);
-            //tempEchartOption.InitYdataText("yData", new List<EnvironmentalSensorHistor>() {
-            //    new EnvironmentalSensorHistor{ fieldName = "1", fieldValue= "23"  },
-            //    new EnvironmentalSensorHistor{ fieldName = "2", fieldValue= "22"  },
-            //    new EnvironmentalSensorHistor{ fieldName = "3", fieldValue= "-11"  },
-            //    new EnvironmentalSensorHistor{ fieldName = "4", fieldValue= "21"  },
-            //    new EnvironmentalSensorHistor{ fieldName = "5", fieldValue= "-41"  },
-            //    new EnvironmentalSensorHistor{ fieldName = "6", fieldValue= "23"  },
-            //    new EnvironmentalSensorHistor{ fieldName = "7", fieldValue= "-31"  },
-            //    new EnvironmentalSensorHistor{ fieldName = "8", fieldValue= "-23"  },
-            //    new EnvironmentalSensorHistor{ fieldName = "9", fieldValue= "-11"  },
-            //    new EnvironmentalSensorHistor{ fieldName = "10", fieldValue= "-21"  },
-            //    new EnvironmentalSensorHistor{ fieldName = "11", fieldValue= "24"  },
-            //    new EnvironmentalSensorHistor{ fieldName = "12", fieldValue= "41"  },
-            //    new EnvironmentalSensorHistor{ fieldName = "13", fieldValue= "32"  },
-            //    new EnvironmentalSensorHistor{ fieldName = "14", fieldValue= "23"  }
-            //}, "#FF9D54");
-            //tempEchartOption.yTitle = "娓╁害 (掳)";
-            //tempEchartOption.xTitle = "";
-            //var opString = tempEchartOption.InitOption();
-            //tempEchartsView.ShowWithOption(opString);
+            List<string> vs = new List<string>() {
+                        "1","2","3","4","5","6","7","8","9","10","11","12","13","14"
+                    };
+            tempEchartOption.InitXdataText(vs);
+            tempEchartOption.InitYdataText("yData", new List<EnvironmentalSensorHistor>() {
+                new EnvironmentalSensorHistor{ fieldName = "1", fieldValue= "23"  },
+                new EnvironmentalSensorHistor{ fieldName = "2", fieldValue= "22"  },
+                new EnvironmentalSensorHistor{ fieldName = "3", fieldValue= "-11"  },
+                new EnvironmentalSensorHistor{ fieldName = "4", fieldValue= "21"  },
+                new EnvironmentalSensorHistor{ fieldName = "5", fieldValue= "-41"  },
+                new EnvironmentalSensorHistor{ fieldName = "6", fieldValue= "23"  },
+                new EnvironmentalSensorHistor{ fieldName = "7", fieldValue= "-31"  },
+                new EnvironmentalSensorHistor{ fieldName = "8", fieldValue= "-23"  },
+                new EnvironmentalSensorHistor{ fieldName = "9", fieldValue= "-11"  },
+                new EnvironmentalSensorHistor{ fieldName = "10", fieldValue= "-21"  },
+                new EnvironmentalSensorHistor{ fieldName = "11", fieldValue= "24"  },
+                new EnvironmentalSensorHistor{ fieldName = "12", fieldValue= "41"  },
+                new EnvironmentalSensorHistor{ fieldName = "13", fieldValue= "32"  },
+                new EnvironmentalSensorHistor{ fieldName = "14", fieldValue= "23"  }
+            }, "#FF9D54");
+            tempEchartOption.yTitle = "娓╁害 (掳)";
+            tempEchartOption.xTitle = "";
+            var opString = tempEchartOption.InitOption();
+            tempEchartsView.ShowWithOption(opString);
 
 
 
 
-            //List<string> vs2 = new List<string>() {
-            //            "1","2","3","4","5","6","7","8","9","10","11","12","13","14"
-            //        };
-            //humiEchartsOption.InitXdataText(vs2);
-            //humiEchartsOption.InitYdataText("yData", new List<EnvironmentalSensorHistor>() {
-            //    new EnvironmentalSensorHistor{ fieldName = "1", fieldValue= "23"  },
-            //    new EnvironmentalSensorHistor{ fieldName = "2", fieldValue= "22"  },
-            //    new EnvironmentalSensorHistor{ fieldName = "3", fieldValue= "-11"  },
-            //    new EnvironmentalSensorHistor{ fieldName = "4", fieldValue= "21"  },
-            //    new EnvironmentalSensorHistor{ fieldName = "5", fieldValue= "-41"  },
-            //    new EnvironmentalSensorHistor{ fieldName = "6", fieldValue= "23"  },
-            //    new EnvironmentalSensorHistor{ fieldName = "7", fieldValue= "-31"  },
-            //    new EnvironmentalSensorHistor{ fieldName = "8", fieldValue= "-23"  },
-            //    new EnvironmentalSensorHistor{ fieldName = "9", fieldValue= "-11"  },
-            //    new EnvironmentalSensorHistor{ fieldName = "10", fieldValue= "-21"  },
-            //    new EnvironmentalSensorHistor{ fieldName = "11", fieldValue= "24"  },
-            //    new EnvironmentalSensorHistor{ fieldName = "12", fieldValue= "41"  },
-            //    new EnvironmentalSensorHistor{ fieldName = "13", fieldValue= "32"  },
-            //    new EnvironmentalSensorHistor{ fieldName = "14", fieldValue= "23"  }
-            //}, "#FF9D54");
-            //humiEchartsOption.yTitle = "婀垮害 (%)";
-            //humiEchartsOption.xTitle = "";
-            //var opString2 = humiEchartsOption.InitOption();
+            List<string> vs2 = new List<string>() {
+                        "1","2","3","4","5","6","7","8","9","10","11","12","13","14"
+                    };
+            humiEchartsOption.InitXdataText(vs2);
+            humiEchartsOption.InitYdataText("yData", new List<EnvironmentalSensorHistor>() {
+                new EnvironmentalSensorHistor{ fieldName = "1", fieldValue= "23"  },
+                new EnvironmentalSensorHistor{ fieldName = "2", fieldValue= "22"  },
+                new EnvironmentalSensorHistor{ fieldName = "3", fieldValue= "-11"  },
+                new EnvironmentalSensorHistor{ fieldName = "4", fieldValue= "21"  },
+                new EnvironmentalSensorHistor{ fieldName = "5", fieldValue= "-41"  },
+                new EnvironmentalSensorHistor{ fieldName = "6", fieldValue= "23"  },
+                new EnvironmentalSensorHistor{ fieldName = "7", fieldValue= "-31"  },
+                new EnvironmentalSensorHistor{ fieldName = "8", fieldValue= "-23"  },
+                new EnvironmentalSensorHistor{ fieldName = "9", fieldValue= "-11"  },
+                new EnvironmentalSensorHistor{ fieldName = "10", fieldValue= "-21"  },
+                new EnvironmentalSensorHistor{ fieldName = "11", fieldValue= "24"  },
+                new EnvironmentalSensorHistor{ fieldName = "12", fieldValue= "41"  },
+                new EnvironmentalSensorHistor{ fieldName = "13", fieldValue= "32"  },
+                new EnvironmentalSensorHistor{ fieldName = "14", fieldValue= "23"  }
+            }, "#FF9D54");
+            humiEchartsOption.yTitle = "婀垮害 (%)";
+            humiEchartsOption.xTitle = "";
+            var opString2 = humiEchartsOption.InitOption();
 
-            //humiEchartsView.ShowWithOption(opString2);
+            humiEchartsView.ShowWithOption(opString2);
 
 #endif
 
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Acst/AcstSubPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Acst/AcstSubPage.cs
index 6669399..18f467b 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Acst/AcstSubPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Acst/AcstSubPage.cs
@@ -174,7 +174,12 @@
                 Text = function.GetAttrState(AcstSub_AttrEnum.room_humidity.ToString(),"---"),
                 TextAlignment = TextAlignment.TopRight,
             };
+
+#if __IOS__
+            btnHumiValues.Width = btnTempValues.GetTextWidth() + Application.GetRealWidth(10);
+#else
             btnHumiValues.Width = btnTempValues.GetTextWidth();
+#endif
             btnHumiValues.Gravity = Gravity.CenterHorizontal;
             humiValuesView.AddChidren(btnHumiValues);
             var btnHumiValuesUint = new Button()
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Acst/InverterJinmaoHistroyPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Acst/InverterJinmaoHistroyPage.cs
new file mode 100644
index 0000000..87ae412
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/Acst/InverterJinmaoHistroyPage.cs
@@ -0,0 +1,451 @@
+锘�
+
+using System;
+using System.Collections.Generic;
+using HDL_ON.Entity;
+using HDL_ON.UI.CSS;
+using Shared;
+namespace HDL_ON.UI
+{
+    public class InverterJinmaoHistroyPage : FrameLayout
+    {
+        InverterJinmaoHistroyPage bodyView;
+        Function device;
+
+
+        /// <summary>
+        /// echart瀹瑰櫒
+        /// </summary>
+        MyEchartsViewOn tempEchartsView;
+
+        public InverterJinmaoHistroyPage(Function function)
+        {
+            bodyView = this;
+            device = function;
+        }
+
+        public void LoadPage()
+        {
+            var topView = new TopViewDiv(bodyView, "鑳芥簮鍒嗘瀽");
+            topView.maginY = 10;
+            topView.LoadTopView();
+
+            var contentView = new VerticalScrolViewLayout()
+            {
+                Y = Application.GetRealHeight(74 + 16),
+                Height = Application.GetRealHeight(Application.DesignHeight - 74),
+            };
+            bodyView.AddChidren(contentView);
+
+            #region 鍙戠數閲�
+            var infoView1 = new FrameLayout()
+            {
+                Width = Application.GetRealWidth(343),
+                Height = Application.GetRealWidth(382),
+                Gravity = Gravity.CenterHorizontal,
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+                Radius = (uint)Application.GetRealWidth(12),
+                BorderColor = 0x00FFFFFF,
+                BorderWidth = 0,
+            };
+            contentView.AddChidren(infoView1);
+
+            #region 鏃堕棿鏉′欢閫夋嫨
+            var infoView1_DateView = new HorizontalScrolViewLayout()
+            {
+                Width = Application.GetRealWidth(343 - 34),
+                Height = Application.GetRealWidth(26),
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealWidth(17),
+                BackgroundColor = CSS_Color.BackgroundColor,
+                Radius = (uint)Application.GetRealWidth(13),
+                BorderColor = 0x00FFFFFF,
+                BorderWidth = 0,
+                ScrollEnabled = false,
+            };
+            infoView1.AddChidren(infoView1_DateView);
+
+            var infoView1_Date_Day = new Button()
+            {
+                Width = Application.GetRealWidth(103),
+                Height = Application.GetRealWidth(26),
+                BackgroundColor = CSS_Color.BackgroundColor,
+                SelectedBackgroundColor = CSS_Color.MainBackgroundColor,
+                Radius = (uint)Application.GetRealWidth(13),
+                BorderColor = CSS_Color.BackgroundColor,
+                BorderWidth = (uint)Application.GetRealWidth(1),
+                Text = "鏃�",
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                SelectedTextColor = CSS_Color.MainColor,
+                TextSize = CSS_FontSize.TextFontSize,
+                IsSelected = true,
+            };
+            infoView1_DateView.AddChidren(infoView1_Date_Day);
+
+
+            var infoView1_Date_Month = new Button()
+            {
+                Width = Application.GetRealWidth(103),
+                Height = Application.GetRealWidth(26),
+                BackgroundColor = CSS_Color.BackgroundColor,
+                SelectedBackgroundColor = CSS_Color.MainBackgroundColor,
+                Radius = (uint)Application.GetRealWidth(13),
+                BorderColor = CSS_Color.BackgroundColor,
+                BorderWidth = (uint)Application.GetRealWidth(1),
+                Text = "鏈�",
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                SelectedTextColor = CSS_Color.MainColor,
+                TextSize = CSS_FontSize.TextFontSize,
+                IsSelected = false,
+            };
+            infoView1_DateView.AddChidren(infoView1_Date_Month);
+
+
+            var infoView1_Date_Year = new Button()
+            {
+                Width = Application.GetRealWidth(103),
+                Height = Application.GetRealWidth(26),
+                BackgroundColor = CSS_Color.BackgroundColor,
+                SelectedBackgroundColor = CSS_Color.MainBackgroundColor,
+                Radius = (uint)Application.GetRealWidth(13),
+                BorderColor = CSS_Color.BackgroundColor,
+                BorderWidth = (uint)Application.GetRealWidth(1),
+                Text = "骞�",
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                SelectedTextColor = CSS_Color.MainColor,
+                TextSize = CSS_FontSize.TextFontSize,
+                IsSelected = false,
+            };
+            infoView1_DateView.AddChidren(infoView1_Date_Year);
+
+            var infoView1_DateInfoView = new FrameLayout()
+            {
+                Y = Application.GetRealWidth(43),
+                Height = Application.GetRealWidth(55),
+            };
+            infoView1.AddChidren(infoView1_DateInfoView);
+
+            var infoView1_DateInfo_PreIconButton = new Button()
+            {
+                X = Application.GetRealWidth(18),
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetRealWidth(6),
+                Height = Application.GetRealWidth(10),
+                UnSelectedImagePath = "FunctionIcon/Acst/WaterHeater/PreIcon.png",
+            };
+            infoView1_DateInfoView.AddChidren(infoView1_DateInfo_PreIconButton);
+
+            var infoView1_DateInfo_PreClickButton = new Button()
+            {
+                Width = Application.GetRealWidth(32 + 6),
+            };
+            infoView1_DateInfoView.AddChidren(infoView1_DateInfo_PreClickButton);
+
+            var infoView1_DateInfo_DateTextButton = new Button()
+            {
+                Gravity = Gravity.Center,
+                Width = Application.GetRealWidth(200),
+                TextAlignment = TextAlignment.Center,
+                Text = "2024-8-12",
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                IsBold = true,
+                TextSize = 16,
+            };
+            infoView1_DateInfoView.AddChidren(infoView1_DateInfo_DateTextButton);
+
+
+            var infoView1_DateInfo_NextIconButton = new Button()
+            {
+                X = Application.GetRealWidth(343 - 18 - 6),
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetRealWidth(6),
+                Height = Application.GetRealWidth(10),
+                UnSelectedImagePath = "FunctionIcon/Acst/WaterHeater/NextIcon.png",
+            };
+            infoView1_DateInfoView.AddChidren(infoView1_DateInfo_NextIconButton);
+
+            var infoView1_DateInfo_NextClickButton = new Button()
+            {
+                Width = Application.GetRealWidth(32 + 6),
+            };
+            infoView1_DateInfoView.AddChidren(infoView1_DateInfo_NextClickButton);
+
+            #endregion
+
+            #region 鏁版嵁鍥捐〃
+            MyEchartsViewOn infoView1_EchartsView = new MyEchartsViewOn()
+            {
+                Y = Application.GetRealWidth(101),
+                Height = Application.GetRealWidth(246),
+            };
+            infoView1.AddChidren(infoView1_EchartsView);
+
+            var echartOption = new EchartsOption_Histogram();
+            echartOption.xTitle = "鏃堕棿";
+            echartOption.yTitle = "娓╁害锛堚剝锛�";
+            echartOption.InitXdataText(new List<string>()
+            {
+                "21","22","23","24","25","26","26","27","28","29",
+                "21","22","23","24","25","26","26","27","28","29",
+                "21","22","23","24"
+            });
+            echartOption.InitYdataText(new List<EnvironmentalSensorHistor>() {
+                new EnvironmentalSensorHistor{ fieldName = "1", fieldValue= "23"  },
+                new EnvironmentalSensorHistor{ fieldName = "2", fieldValue= "22"  },
+                new EnvironmentalSensorHistor{ fieldName = "3", fieldValue= "11"  },
+                new EnvironmentalSensorHistor{ fieldName = "4", fieldValue= "21"  },
+                new EnvironmentalSensorHistor{ fieldName = "5", fieldValue= "41"  },
+                new EnvironmentalSensorHistor{ fieldName = "6", fieldValue= "23"  },
+                new EnvironmentalSensorHistor{ fieldName = "7", fieldValue= "31"  },
+                new EnvironmentalSensorHistor{ fieldName = "8", fieldValue= "23"  },
+                new EnvironmentalSensorHistor{ fieldName = "9", fieldValue= "11"  },
+                new EnvironmentalSensorHistor{ fieldName = "10", fieldValue= "21"  },
+                new EnvironmentalSensorHistor{ fieldName = "11", fieldValue= "24"  },
+                new EnvironmentalSensorHistor{ fieldName = "12", fieldValue= "41"  },
+                new EnvironmentalSensorHistor{ fieldName = "13", fieldValue= "32"  },
+                new EnvironmentalSensorHistor{ fieldName = "14", fieldValue= "23"  },
+                new EnvironmentalSensorHistor{ fieldName = "15", fieldValue= "23"  },
+                new EnvironmentalSensorHistor{ fieldName = "16", fieldValue= "22"  },
+                new EnvironmentalSensorHistor{ fieldName = "17", fieldValue= "11"  },
+                new EnvironmentalSensorHistor{ fieldName = "18", fieldValue= "21"  },
+                new EnvironmentalSensorHistor{ fieldName = "19", fieldValue= "41"  },
+                new EnvironmentalSensorHistor{ fieldName = "20", fieldValue= "23"  },
+                new EnvironmentalSensorHistor{ fieldName = "21", fieldValue= "31"  },
+                new EnvironmentalSensorHistor{ fieldName = "22", fieldValue= "23"  },
+                new EnvironmentalSensorHistor{ fieldName = "23", fieldValue= "11"  },
+                new EnvironmentalSensorHistor{ fieldName = "24", fieldValue= "21"  },
+            });
+            var ddd = echartOption.InitOption();
+            infoView1_EchartsView.ShowWithOption(ddd);
+
+            infoView1.AddChidren(new Button()
+            {
+                Height = Application.GetRealWidth(35),
+                Y = Application.GetRealWidth(340),
+                Text = "鍙戠數閲�",
+                TextSize = 14,
+                TextAlignment = TextAlignment.Center,
+                TextColor = 0xFFC0C7D4
+            });
+
+            #endregion
+
+            #endregion
+
+            contentView.AddChidren(new Button()
+            {
+                Height = Application.GetRealWidth(16)
+            });
+
+            #region 鐢ㄧ數閲�
+            var infoView2 = new FrameLayout()
+            {
+                Width = Application.GetRealWidth(343),
+                Height = Application.GetRealWidth(382),
+                Y = Application.GetRealHeight(16) + infoView1.Bottom,
+                Gravity = Gravity.CenterHorizontal,
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+                Radius = (uint)Application.GetRealWidth(12),
+                BorderColor = 0x00FFFFFF,
+                BorderWidth = 0,
+            };
+            contentView.AddChidren(infoView2);
+
+            #region 鏃堕棿鏉′欢閫夋嫨
+            var infoView2_DateView = new HorizontalScrolViewLayout()
+            {
+                Width = Application.GetRealWidth(343 - 34),
+                Height = Application.GetRealWidth(26),
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealWidth(17),
+                BackgroundColor = CSS_Color.BackgroundColor,
+                Radius = (uint)Application.GetRealWidth(13),
+                BorderColor = 0x00FFFFFF,
+                BorderWidth = 0,
+                ScrollEnabled = false,
+            };
+            infoView2.AddChidren(infoView2_DateView);
+
+            var infoView2_Date_Day = new Button()
+            {
+                Width = Application.GetRealWidth(103),
+                Height = Application.GetRealWidth(26),
+                BackgroundColor = CSS_Color.BackgroundColor,
+                SelectedBackgroundColor = CSS_Color.MainBackgroundColor,
+                Radius = (uint)Application.GetRealWidth(13),
+                BorderColor = CSS_Color.BackgroundColor,
+                BorderWidth = (uint)Application.GetRealWidth(1),
+                Text = "鏃�",
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                SelectedTextColor = CSS_Color.MainColor,
+                TextSize = CSS_FontSize.TextFontSize,
+                IsSelected = true,
+            };
+            infoView2_DateView.AddChidren(infoView2_Date_Day);
+
+
+            var infoView2_Date_Month = new Button()
+            {
+                Width = Application.GetRealWidth(103),
+                Height = Application.GetRealWidth(26),
+                BackgroundColor = CSS_Color.BackgroundColor,
+                SelectedBackgroundColor = CSS_Color.MainBackgroundColor,
+                Radius = (uint)Application.GetRealWidth(13),
+                BorderColor = CSS_Color.BackgroundColor,
+                BorderWidth = (uint)Application.GetRealWidth(1),
+                Text = "鏈�",
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                SelectedTextColor = CSS_Color.MainColor,
+                TextSize = CSS_FontSize.TextFontSize,
+                IsSelected = false,
+            };
+            infoView2_DateView.AddChidren(infoView2_Date_Month);
+
+
+            var infoView2_Date_Year = new Button()
+            {
+                Width = Application.GetRealWidth(103),
+                Height = Application.GetRealWidth(26),
+                BackgroundColor = CSS_Color.BackgroundColor,
+                SelectedBackgroundColor = CSS_Color.MainBackgroundColor,
+                Radius = (uint)Application.GetRealWidth(13),
+                BorderColor = CSS_Color.BackgroundColor,
+                BorderWidth = (uint)Application.GetRealWidth(1),
+                Text = "骞�",
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                SelectedTextColor = CSS_Color.MainColor,
+                TextSize = CSS_FontSize.TextFontSize,
+                IsSelected = false,
+            };
+            infoView2_DateView.AddChidren(infoView2_Date_Year);
+
+            var infoView2_DateInfoView = new FrameLayout()
+            {
+                Y = Application.GetRealWidth(43),
+                Height = Application.GetRealWidth(55),
+            };
+            infoView2.AddChidren(infoView2_DateInfoView);
+
+            var infoView2_DateInfo_PreIconButton = new Button()
+            {
+                X = Application.GetRealWidth(18),
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetRealWidth(6),
+                Height = Application.GetRealWidth(10),
+                UnSelectedImagePath = "FunctionIcon/Acst/WaterHeater/PreIcon.png",
+            };
+            infoView2_DateInfoView.AddChidren(infoView2_DateInfo_PreIconButton);
+
+            var infoView2_DateInfo_PreClickButton = new Button()
+            {
+                Width = Application.GetRealWidth(32 + 6),
+            };
+            infoView2_DateInfoView.AddChidren(infoView2_DateInfo_PreClickButton);
+
+            var infoView2_DateInfo_DateTextButton = new Button()
+            {
+                Gravity = Gravity.Center,
+                Width = Application.GetRealWidth(200),
+                TextAlignment = TextAlignment.Center,
+                Text = "2024-8-12",
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                IsBold = true,
+                TextSize = 16,
+            };
+            infoView2_DateInfoView.AddChidren(infoView2_DateInfo_DateTextButton);
+
+
+            var infoView2_DateInfo_NextIconButton = new Button()
+            {
+                X = Application.GetRealWidth(343 - 18 - 6),
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetRealWidth(6),
+                Height = Application.GetRealWidth(10),
+                UnSelectedImagePath = "FunctionIcon/Acst/WaterHeater/NextIcon.png",
+            };
+            infoView2_DateInfoView.AddChidren(infoView2_DateInfo_NextIconButton);
+
+            var infoView2_DateInfo_NextClickButton = new Button()
+            {
+                Width = Application.GetRealWidth(32 + 6),
+            };
+            infoView2_DateInfoView.AddChidren(infoView2_DateInfo_NextClickButton);
+
+            #endregion
+
+            #region 鏁版嵁鍥捐〃
+            MyEchartsViewOn infoView2_EchartsView = new MyEchartsViewOn()
+            {
+                Y = Application.GetRealWidth(101),
+                Height = Application.GetRealWidth(246),
+            };
+            infoView2.AddChidren(infoView2_EchartsView);
+
+            var echartOption2 = new EchartsOption_Histogram();
+            echartOption2.xTitle = "鏃堕棿";
+            echartOption2.yTitle = "娓╁害锛堚剝锛�";
+            echartOption2.InitXdataText(new List<string>()
+            {
+                "21","22","23","24","25","26","26","27","28","29",
+                "21","22","23","24","25","26","26","27","28","29",
+                "21","22","23","24"
+            });
+            echartOption2.InitYdataText(new List<EnvironmentalSensorHistor>() {
+                new EnvironmentalSensorHistor{ fieldName = "1", fieldValue= "23"  },
+                new EnvironmentalSensorHistor{ fieldName = "2", fieldValue= "22"  },
+                new EnvironmentalSensorHistor{ fieldName = "3", fieldValue= "11"  },
+                new EnvironmentalSensorHistor{ fieldName = "4", fieldValue= "21"  },
+                new EnvironmentalSensorHistor{ fieldName = "5", fieldValue= "41"  },
+                new EnvironmentalSensorHistor{ fieldName = "6", fieldValue= "23"  },
+                new EnvironmentalSensorHistor{ fieldName = "7", fieldValue= "31"  },
+                new EnvironmentalSensorHistor{ fieldName = "8", fieldValue= "23"  },
+                new EnvironmentalSensorHistor{ fieldName = "9", fieldValue= "11"  },
+                new EnvironmentalSensorHistor{ fieldName = "10", fieldValue= "21"  },
+                new EnvironmentalSensorHistor{ fieldName = "11", fieldValue= "24"  },
+                new EnvironmentalSensorHistor{ fieldName = "12", fieldValue= "41"  },
+                new EnvironmentalSensorHistor{ fieldName = "13", fieldValue= "32"  },
+                new EnvironmentalSensorHistor{ fieldName = "14", fieldValue= "23"  },
+                new EnvironmentalSensorHistor{ fieldName = "15", fieldValue= "23"  },
+                new EnvironmentalSensorHistor{ fieldName = "16", fieldValue= "22"  },
+                new EnvironmentalSensorHistor{ fieldName = "17", fieldValue= "11"  },
+                new EnvironmentalSensorHistor{ fieldName = "18", fieldValue= "21"  },
+                new EnvironmentalSensorHistor{ fieldName = "19", fieldValue= "41"  },
+                new EnvironmentalSensorHistor{ fieldName = "20", fieldValue= "23"  },
+                new EnvironmentalSensorHistor{ fieldName = "21", fieldValue= "31"  },
+                new EnvironmentalSensorHistor{ fieldName = "22", fieldValue= "23"  },
+                new EnvironmentalSensorHistor{ fieldName = "23", fieldValue= "11"  },
+                new EnvironmentalSensorHistor{ fieldName = "24", fieldValue= "21"  },
+            });
+            infoView2_EchartsView.ShowWithOption(echartOption2.InitOption());
+
+            infoView2.AddChidren(new Button()
+            {
+                Height = Application.GetRealWidth(35),
+                Y = Application.GetRealWidth(340),
+                Text = "鐢ㄧ數閲�",
+                TextSize = 14,
+                TextAlignment = TextAlignment.Center,
+                TextColor = 0xFFC0C7D4
+            });
+
+            #endregion
+
+
+            #endregion
+
+
+            contentView.AddChidren(new Button()
+            {
+                Height = Application.GetRealWidth(26)
+            });
+        }
+
+    }
+}
+
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Acst/InverterJinmaoPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Acst/InverterJinmaoPage.cs
new file mode 100644
index 0000000..5de0923
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/Acst/InverterJinmaoPage.cs
@@ -0,0 +1,971 @@
+锘縰sing System;
+using HDL_ON.Entity;
+using HDL_ON.UI.CSS;
+using Shared;
+
+namespace HDL_ON.UI
+{
+    public class InverterJinmaoPage : FrameLayout
+    {
+        FrameLayout bodyView;
+        Function function;
+
+        public InverterJinmaoPage()
+        {
+            bodyView = this;
+            try
+            {
+                function = FunctionList.List.GetInverterJinmaoList()[0];
+            }
+            catch (Exception ex)
+            {
+                MainPage.Log($"{ex.Message}");
+                this.RemoveFromParent();
+            }
+            BackgroundColor = CSS_Color.BackgroundColor;
+        }
+
+        public void LoadPage()
+        {
+            new TopViewDiv(bodyView, Language.StringByID(StringId.NewEnergy)) { maginY = 10 }.LoadTopView();
+
+            var contentView = new VerticalScrolViewLayout()
+            {
+                Y = Application.GetRealHeight(74),
+                Height = Application.GetRealHeight(Application.DesignHeight - 74),
+            };
+            bodyView.AddChidren(contentView);
+
+            contentView.AddChidren(new Button()
+            {
+                Height = Application.GetRealWidth(16),
+            });
+
+            #region 鍙戠數閲�  鐢ㄧ數閲�
+            var electricityQuantityView = new FrameLayout()
+            {
+                Width = Application.GetRealWidth(343),
+                Height = Application.GetRealWidth(99),
+                Gravity = Gravity.CenterHorizontal,
+            };
+            contentView.AddChidren(electricityQuantityView);
+
+            #region 鍙戠數閲� Electricity generation
+            var electricityGenerationView = new FrameLayout()
+            {
+                Width = Application.GetRealWidth(181),
+                Height = Application.GetRealWidth(99),
+                BackgroundImagePath = "FunctionIcon/Acst/Inverter/ElectricityGenerationBg.png"
+            };
+            electricityQuantityView.AddChidren(electricityGenerationView);
+
+            var electricityGeneration_IconButton = new Button()
+            {
+                X = Application.GetRealWidth(14),
+                Y = Application.GetRealWidth(16),
+                Width = Application.GetRealWidth(12),
+                Height = Application.GetRealWidth(12),
+                UnSelectedImagePath = "FunctionIcon/Acst/Inverter/ElectricityGenerationIcon.png"
+            };
+            electricityQuantityView.AddChidren(electricityGeneration_IconButton);
+
+            var electricityGeneration_TextButton = new Button()
+            {
+                X = Application.GetRealWidth(32),
+                Y = Application.GetRealWidth(12),
+                Width = Application.GetRealWidth(140),
+                Height = Application.GetRealWidth(20),
+                Text = "浠婃棩鍙戠數閲�",
+                TextSize = CSS_FontSize.TextFontSize,
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = CSS_Color.MainBackgroundColor,
+            };
+            electricityGenerationView.AddChidren(electricityGeneration_TextButton);
+
+            var electricityGeneration_ValuesButton = new Button()
+            {
+                X = Application.GetRealWidth(12),
+                Y = Application.GetRealWidth(34),
+                Height = Application.GetRealWidth(24),
+                Text = function.GetAttrState(InverterJinmao_AttrEnum.pv_electricity_today.ToString()),
+                TextColor = CSS_Color.MainBackgroundColor,
+                TextSize = 18,
+                IsBold = true,
+            };
+            electricityGenerationView.AddChidren(electricityGeneration_ValuesButton);
+
+#if __IOS__
+            electricityGeneration_ValuesButton.TextAlignment = TextAlignment.TopLeft;
+            electricityGeneration_ValuesButton.Width = electricityGeneration_ValuesButton.GetTextWidth() + Application.GetRealWidth(8);
+#else
+            electricityGeneration_ValuesButton.TextAlignment = TextAlignment.BottomLeft;
+            electricityGeneration_ValuesButton.Width = electricityGeneration_ValuesButton.GetTextWidth();
+#endif
+            var electricityGeneration_UintButton = new Button()
+            {
+                Y = Application.GetRealWidth(41),
+                Height = Application.GetRealWidth(17),
+                Text = "kwh",
+                TextColor = CSS_Color.MainBackgroundColor,
+                TextSize = 12,
+                TextAlignment = TextAlignment.CenterLeft,
+            };
+            electricityGeneration_UintButton.X = electricityGeneration_ValuesButton.Right;
+            electricityGenerationView.AddChidren(electricityGeneration_UintButton);
+
+            var electricityGeneration_TotalValuesButton = new Button()
+            {
+                X = Application.GetRealWidth(12),
+                Y = Application.GetRealWidth(69),
+                Height = Application.GetRealWidth(18),
+                Text = "绱鍙戠數閲忥細" + function.GetAttrState(InverterJinmao_AttrEnum.pv_electricity.ToString()),
+                TextColor = CSS_Color.MainBackgroundColor,
+                TextSize = 12,
+                TextAlignment = TextAlignment.CenterLeft,
+                //IsBold = true,
+            };
+            electricityGenerationView.AddChidren(electricityGeneration_TotalValuesButton);
+
+
+
+            #endregion
+
+
+            #region 鐢ㄧ數閲� Electricity consumption
+            var electricityConsumptionView = new FrameLayout()
+            {
+                X = Application.GetRealWidth(178-16),
+                Width = Application.GetRealWidth(181),
+                Height = Application.GetRealWidth(99),
+                BackgroundImagePath = "FunctionIcon/Acst/Inverter/ElectricityConsumptionBg.png"
+            };
+            electricityQuantityView.AddChidren(electricityConsumptionView);
+
+            var electricityConsumption_IconButton = new Button()
+            {
+                X = Application.GetRealWidth(155),
+                Y = Application.GetRealWidth(16),
+                Width = Application.GetRealWidth(12),
+                Height = Application.GetRealWidth(12),
+                UnSelectedImagePath = "FunctionIcon/Acst/Inverter/ElectricityConsumptionIcon.png"
+            };
+            electricityConsumptionView.AddChidren(electricityConsumption_IconButton);
+
+            var electricityConsumption_TextButton = new Button()
+            {
+                //X = Application.GetRealWidth(181 - 32),
+                Y = Application.GetRealWidth(12),
+                Width = Application.GetRealWidth(181 - 32),
+                Height = Application.GetRealWidth(20),
+                Text = "浠婃棩鐢ㄧ數閲�",
+                TextSize = CSS_FontSize.TextFontSize,
+                TextAlignment = TextAlignment.CenterRight,
+                TextColor = CSS_Color.MainBackgroundColor,
+            };
+            electricityConsumptionView.AddChidren(electricityConsumption_TextButton);
+
+
+            var electricityConsumption_UintButton = new Button()
+            {
+                Y = Application.GetRealWidth(41),
+                Height = Application.GetRealWidth(17),
+                Text = "kwh",
+                TextColor = CSS_Color.MainBackgroundColor,
+                TextSize = 12,
+                TextAlignment = TextAlignment.CenterRight,
+            };
+            electricityConsumptionView.AddChidren(electricityConsumption_UintButton);
+#if __IOS__
+            electricityConsumption_UintButton.Width = electricityConsumption_UintButton.GetTextWidth() + Application.GetRealWidth(8);
+#else
+            electricityConsumption_UintButton.Width = electricityConsumption_UintButton.GetTextWidth();
+#endif
+            electricityConsumption_UintButton.X = Application.GetRealWidth(181 - 12) - electricityConsumption_UintButton.Width;
+
+            var electricityConsumption_ValuesButton = new Button()
+            {
+                X = Application.GetRealWidth(81 - 12) - electricityConsumption_UintButton.Width,
+                Y = Application.GetRealWidth(34),
+                Height = Application.GetRealWidth(53),
+                Width = Application.GetRealWidth(100),
+                Text = function.GetAttrState(InverterJinmao_AttrEnum.load_electricity_today.ToString()),
+                TextColor = CSS_Color.MainBackgroundColor,
+                TextSize = 18,
+                TextAlignment = TextAlignment.TopRight,
+                IsBold = true,
+            };
+            electricityConsumptionView.AddChidren(electricityConsumption_ValuesButton);
+
+
+            var electricityConsumption_TotalValuesButton = new Button()
+            {
+                Y = Application.GetRealWidth(69),
+                Height = Application.GetRealWidth(18),
+                Width = Application.GetRealWidth(181-12),
+                Text = "绱鐢ㄧ數閲忥細" + function.GetAttrState(InverterJinmao_AttrEnum.load_electricity.ToString()),
+                TextColor = CSS_Color.MainBackgroundColor,
+                TextSize = 12,
+                TextAlignment = TextAlignment.CenterRight,
+                //IsBold = true,
+            };
+            electricityConsumptionView.AddChidren(electricityConsumption_TotalValuesButton);
+
+            #endregion
+
+            var goHistroyButton = new Button();
+            electricityQuantityView.AddChidren(goHistroyButton);
+            goHistroyButton.MouseUpEventHandler = (sender, e) => {
+                var page = new InverterJinmaoHistroyPage(function);
+                MainPage.BasePageView.AddChidren(page);
+                page.LoadPage();
+                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+            };
+
+            #endregion
+            contentView.AddChidren(new Button()
+            {
+                Height = Application.GetRealWidth(8),
+            });
+            #region 鍏変紡杩愯鐘舵��
+            var runStatus_TitleButton = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Height = Application.GetRealWidth(47),
+                TextAlignment = TextAlignment.CenterLeft,
+                Text = "鍏変紡杩愯鐘舵��",
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = 16,
+                IsBold = true,
+            };
+            contentView.AddChidren(runStatus_TitleButton);
+
+            #region 鍙戠數閲� electricity generation
+            var electricityGenerationStatusView = new FrameLayout()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth(343),
+                Height = Application.GetRealWidth(253),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+                Radius = (uint)Application.GetRealHeight(12),
+                BorderColor = 0x00FFFFFF,
+                BorderWidth = 0,
+            };
+            contentView.AddChidren(electricityGenerationStatusView);
+
+            var electricityGenerationStatus_InfoView = new FrameLayout()
+            {
+                X = 0 - Application.GetRealWidth(14),
+                Y = Application.GetRealWidth(12),
+                Width = Application.GetRealWidth(68 + 14),
+                Height = Application.GetRealWidth(28),
+                BackgroundColor = 0x154484F4,
+                Radius = (uint)Application.GetRealHeight(14),
+                BorderColor = 0x00FFFFFF,
+                BorderWidth = 0,
+            };
+            electricityGenerationStatusView.AddChidren(electricityGenerationStatus_InfoView);
+
+            var runStatus_Info_IconButton = new Button()
+            {
+                X = Application.GetRealWidth(8 + 14),
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetRealWidth(12),
+                Height = Application.GetRealWidth(12),
+                UnSelectedImagePath = "FunctionIcon/Acst/Inverter/PvIconRun.png",
+            };
+            electricityGenerationStatus_InfoView.AddChidren(runStatus_Info_IconButton);
+
+            var runStatus_Info_TextButton = new Button()
+            {
+                X = Application.GetRealWidth(8 + 14 + 4 + 12),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextSize = 14,
+                TextColor = 0xFF4484F4,
+                Text = "杩愯",
+            };
+            electricityGenerationStatus_InfoView.AddChidren(runStatus_Info_TextButton);
+
+            var powerGenerationView = new FrameLayout()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealWidth(20),
+                Width = Application.GetRealWidth(151),
+                Height = Application.GetRealWidth(151),
+                BackgroundImagePath = "FunctionIcon/Acst/Inverter/PvBgRun.png"
+            };
+            electricityGenerationStatusView.AddChidren(powerGenerationView);
+
+            var powerGeneration_ValuesButton = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealWidth(46),
+                Width = Application.GetRealWidth(100),
+                Height = Application.GetRealWidth(32),
+                Text = function.GetAttrState(InverterJinmao_AttrEnum.pv_power.ToString()),
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = 24,
+                IsBold = true,
+            };
+            powerGenerationView.AddChidren(powerGeneration_ValuesButton);
+
+            var powerGeneration_TextButton = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealWidth(78),
+                //Width = Application.GetRealWidth(100),
+                Height = Application.GetRealWidth(25),
+                Text = "瀹炴椂鍙戠數鍔熺巼 (kwh)",
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.TextualColor,
+                TextSize = 12,
+            };
+            powerGenerationView.AddChidren(powerGeneration_TextButton);
+
+
+            var powerGeneration_TodayValuesButton = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Y = Application.GetRealWidth(191),
+                Width = Application.GetRealWidth(100),
+                Height = Application.GetRealWidth(24),
+                Text = function.GetAttrState(InverterJinmao_AttrEnum.pv_electricity_today.ToString()),
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = 18,
+                IsBold = true,
+            };
+            electricityGenerationStatusView.AddChidren(powerGeneration_TodayValuesButton);
+
+            var powerGeneration_TodayTextButton = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Y = Application.GetRealWidth(220),
+                Width = Application.GetRealWidth(100),
+                Height = Application.GetRealWidth(17),
+                Text = "浠婃棩鍙戠數閲� (kwh)",
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.TextualColor,
+                TextSize = 12,
+            };
+            electricityGenerationStatusView.AddChidren(powerGeneration_TodayTextButton);
+
+
+            var powerGeneration_MonthValuesButton = new Button()
+            {
+                X = Application.GetRealWidth(16 + 105),
+                Y = Application.GetRealWidth(191),
+                Width = Application.GetRealWidth(100),
+                Height = Application.GetRealWidth(24),
+                Text = function.GetAttrState(InverterJinmao_AttrEnum.pv_electricity_month.ToString()),
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = 18,
+                IsBold = true,
+            };
+            electricityGenerationStatusView.AddChidren(powerGeneration_MonthValuesButton);
+
+            var powerGeneration_MonthTextButton = new Button()
+            {
+                X = Application.GetRealWidth(16 + 105),
+                Y = Application.GetRealWidth(220),
+                Width = Application.GetRealWidth(100),
+                Height = Application.GetRealWidth(17),
+                Text = "鏈湀鍙戠數閲� (kwh)",
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.TextualColor,
+                TextSize = 12,
+            };
+            electricityGenerationStatusView.AddChidren(powerGeneration_MonthTextButton);
+
+
+            var powerGeneration_YearValuesButton = new Button()
+            {
+                X = Application.GetRealWidth(16 + 212),
+                Y = Application.GetRealWidth(191),
+                Width = Application.GetRealWidth(100),
+                Height = Application.GetRealWidth(24),
+                Text = function.GetAttrState(InverterJinmao_AttrEnum.pv_electricity.ToString()),
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = 18,
+                IsBold = true,
+            };
+            electricityGenerationStatusView.AddChidren(powerGeneration_YearValuesButton);
+
+            var powerGeneration_YearTextButton = new Button()
+            {
+                X = Application.GetRealWidth(16 + 212),
+                Y = Application.GetRealWidth(220),
+                Width = Application.GetRealWidth(100),
+                Height = Application.GetRealWidth(17),
+                Text = "鎬诲彂鐢甸噺 (kwh)",
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.TextualColor,
+                TextSize = 12,
+            };
+            electricityGenerationStatusView.AddChidren(powerGeneration_YearTextButton);
+            #endregion
+
+            contentView.AddChidren(new Button()
+            {
+                Height = Application.GetRealWidth(12),
+            });
+
+            #region 鐢ㄧ數閲忕姸鎬� electricity usage status
+            var electricityUsageStatusView = new FrameLayout()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth(343),
+                Height = Application.GetRealWidth(253),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+                Radius = (uint)Application.GetRealHeight(12),
+                BorderColor = 0x00FFFFFF,
+                BorderWidth = 0,
+            };
+            contentView.AddChidren(electricityUsageStatusView);
+
+            var powerUsageView = new FrameLayout()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealWidth(20),
+                Width = Application.GetRealWidth(151),
+                Height = Application.GetRealWidth(151),
+                BackgroundImagePath = "FunctionIcon/Acst/Inverter/PvBgDischarge.png"
+            };
+            electricityUsageStatusView.AddChidren(powerUsageView);
+
+            var powerUsage_ValuesButton = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealWidth(46),
+                Width = Application.GetRealWidth(100),
+                Height = Application.GetRealWidth(32),
+                Text = function.GetAttrState(InverterJinmao_AttrEnum.load_active_power.ToString()),
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = 24,
+                IsBold = true,
+            };
+            powerUsageView.AddChidren(powerUsage_ValuesButton);
+
+            var powerUsage_TextButton = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealWidth(78),
+                //Width = Application.GetRealWidth(100),
+                Height = Application.GetRealWidth(25),
+                Text = "瀹炴椂鐢ㄧ數鍔熺巼 (kwh)",
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.TextualColor,
+                TextSize = 12,
+            };
+            powerUsageView.AddChidren(powerUsage_TextButton);
+
+
+            var powerUsage_TodayValuesButton = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Y = Application.GetRealWidth(191),
+                Width = Application.GetRealWidth(100),
+                Height = Application.GetRealWidth(24),
+                Text = function.GetAttrState(InverterJinmao_AttrEnum.load_electricity_today.ToString()),
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = 18,
+                IsBold = true,
+            };
+            electricityUsageStatusView.AddChidren(powerUsage_TodayValuesButton);
+
+            var powerUsage_TodayTextButton = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Y = Application.GetRealWidth(220),
+                Width = Application.GetRealWidth(100),
+                Height = Application.GetRealWidth(17),
+                Text = "浠婃棩鐢ㄧ數閲� (kwh)",
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.TextualColor,
+                TextSize = 12,
+            };
+            electricityUsageStatusView.AddChidren(powerUsage_TodayTextButton);
+
+
+            var powerUsage_MonthValuesButton = new Button()
+            {
+                X = Application.GetRealWidth(16 + 105),
+                Y = Application.GetRealWidth(191),
+                Width = Application.GetRealWidth(100),
+                Height = Application.GetRealWidth(24),
+                Text = function.GetAttrState(InverterJinmao_AttrEnum.load_electricity_month.ToString()),
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = 18,
+                IsBold = true,
+            };
+            electricityUsageStatusView.AddChidren(powerUsage_MonthValuesButton);
+
+            var powerUsage_MonthTextButton = new Button()
+            {
+                X = Application.GetRealWidth(16 + 105),
+                Y = Application.GetRealWidth(220),
+                Width = Application.GetRealWidth(100),
+                Height = Application.GetRealWidth(17),
+                Text = "鏈湀鐢ㄧ數閲� (kwh)",
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.TextualColor,
+                TextSize = 12,
+            };
+            electricityUsageStatusView.AddChidren(powerUsage_MonthTextButton);
+
+
+            var powerUsage_YearValuesButton = new Button()
+            {
+                X = Application.GetRealWidth(16 + 212),
+                Y = Application.GetRealWidth(191),
+                Width = Application.GetRealWidth(100),
+                Height = Application.GetRealWidth(24),
+                Text = function.GetAttrState(InverterJinmao_AttrEnum.load_electricity.ToString()),
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = 18,
+                IsBold = true,
+            };
+            electricityUsageStatusView.AddChidren(powerUsage_YearValuesButton);
+
+            var powerUsage_YearTextButton = new Button()
+            {
+                X = Application.GetRealWidth(16 + 212),
+                Y = Application.GetRealWidth(220),
+                Width = Application.GetRealWidth(100),
+                Height = Application.GetRealWidth(17),
+                Text = "鎬荤敤鐢甸噺 (kwh)",
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.TextualColor,
+                TextSize = 12,
+            };
+            electricityUsageStatusView.AddChidren(powerUsage_YearTextButton);
+            #endregion
+
+
+
+
+            #endregion
+
+            contentView.AddChidren(new Button()
+            {
+                Height = Application.GetRealWidth(8)
+            });
+
+            #region 鍌ㄨ兘杩愯鐘舵�� Energy storage
+            var esRunStatus_TitleButton = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Height = Application.GetRealWidth(47),
+                TextAlignment = TextAlignment.CenterLeft,
+                Text = "鍌ㄨ兘杩愯鐘舵��",
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = 16,
+                IsBold = true,
+            };
+            contentView.AddChidren(esRunStatus_TitleButton);
+
+            #region 
+            var esStatusView = new FrameLayout()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth(343),
+                Height = Application.GetRealWidth(194),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+                Radius = (uint)Application.GetRealHeight(12),
+                BorderColor = 0x00FFFFFF,
+                BorderWidth = 0,
+            };
+            contentView.AddChidren(esStatusView);
+
+            var esStatus_InfoView = new FrameLayout()
+            {
+                X = 0 - Application.GetRealWidth(14),
+                Y = Application.GetRealWidth(12),
+                Width = Application.GetRealWidth(68 + 14),
+                Height = Application.GetRealWidth(28),
+                BackgroundColor = 0x1500C22D,
+                Radius = (uint)Application.GetRealHeight(14),
+                BorderColor = 0x00FFFFFF,
+                BorderWidth = 0,
+            };
+            esStatusView.AddChidren(esStatus_InfoView);
+
+            var esRunStatus_Info_IconButton = new Button()
+            {
+                X = Application.GetRealWidth(8 + 14),
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetRealWidth(12),
+                Height = Application.GetRealWidth(12),
+                UnSelectedImagePath = "FunctionIcon/Acst/Inverter/EsIconCharg.png",
+            };
+            esStatus_InfoView.AddChidren(esRunStatus_Info_IconButton);
+
+            var esRunStatus_Info_TextButton = new Button()
+            {
+                X = Application.GetRealWidth(8 + 14 + 4 + 12),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextSize = 14,
+                TextColor = 0xFF00C22D,
+                Text = "鍏呯數",
+            };
+            esStatus_InfoView.AddChidren(esRunStatus_Info_TextButton);
+
+            var esRunStatus_BatteryValuesButton = new Button()
+            {
+                Y = Application.GetRealWidth(18),
+                Height = Application.GetRealWidth(17),
+                TextAlignment = TextAlignment.CenterRight,
+                Text = function.GetAttrState(InverterJinmao_AttrEnum.battery_soc.ToString()) + "%",
+                TextSize = 12,
+                TextColor = 0xFF00C22D,
+            };
+#if __IOS__
+            esRunStatus_BatteryValuesButton.Width = esRunStatus_BatteryValuesButton.GetTextWidth() + Application.GetRealWidth(8);
+#else
+            esRunStatus_BatteryValuesButton.Width = esRunStatus_BatteryValuesButton.GetTextWidth();
+#endif
+            esRunStatus_BatteryValuesButton.X = Application.GetRealWidth(343 - 12) - esRunStatus_BatteryValuesButton.Width;
+            esStatusView.AddChidren(esRunStatus_BatteryValuesButton);
+
+            var esRunStatus_BatteryIconButton = new Button()
+            {
+                X = Application.GetRealWidth(343 - 12 -20) - esRunStatus_BatteryValuesButton.Width,
+                Y = Application.GetRealWidth(16),
+                Width = Application.GetRealWidth(20),
+                Height = Application.GetRealWidth(20),
+                UnSelectedImagePath = "FunctionIcon/Acst/Inverter/BatteryIconCharg.png",
+            };
+            esStatusView.AddChidren(esRunStatus_BatteryIconButton);
+
+            var esRunStatus_ValuesInfoView = new FrameLayout()
+            {
+                Width = Application.GetRealWidth(263),
+                Height = Application.GetRealWidth(134),
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealWidth(40),
+                BackgroundImagePath = "FunctionIcon/Acst/Inverter/EnergyStorageStatusBg.png",
+            };
+            esStatusView.AddChidren(esRunStatus_ValuesInfoView);
+
+            #region 瀹炴椂鍏呯數鍔熺巼
+            var esRunStatus_ChargeValuesView = new FrameLayout()
+            {
+                X = Application.GetRealWidth(2),
+                Width = Application.GetRealWidth(128),
+                Height = Application.GetRealWidth(128),
+            };
+            esRunStatus_ValuesInfoView.AddChidren(esRunStatus_ChargeValuesView);
+
+            var esRunStatus_ChargeValuesButton = new Button()
+            {
+                Y = Application.GetRealWidth(36),
+                Height = Application.GetRealWidth(32),
+                TextAlignment = TextAlignment.Center,
+                Text = function.GetAttrState(InverterJinmao_AttrEnum.ess_charge_power.ToString()),
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = 24,
+                IsBold = true,
+            };
+            esRunStatus_ChargeValuesView.AddChidren(esRunStatus_ChargeValuesButton);
+
+            var esRunStatus_ChargeTextButton = new Button()
+            {
+                X = Application.GetRealWidth(1),
+                Y = Application.GetRealWidth(76),
+                Height = Application.GetRealWidth(17),
+                TextAlignment = TextAlignment.Center,
+                Text = "瀹炴椂鍏呯數鍔熺巼(kwh)",
+                TextColor = CSS_Color.TextualColor,
+                TextSize = 12,
+            };
+            esRunStatus_ChargeValuesView.AddChidren(esRunStatus_ChargeTextButton);
+            #endregion
+
+            #region 瀹炴椂鏀剧數鍔熺巼
+            var esRunStatus_DischargeValuesView = new FrameLayout()
+            {
+                X = Application.GetRealWidth(132),
+                Width = Application.GetRealWidth(128),
+                Height = Application.GetRealWidth(128),
+            };
+            esRunStatus_ValuesInfoView.AddChidren(esRunStatus_DischargeValuesView);
+
+            var esRunStatus_DischargeValuesButton = new Button()
+            {
+                Y = Application.GetRealWidth(36),
+                Height = Application.GetRealWidth(32),
+                TextAlignment = TextAlignment.Center,
+                Text = function.GetAttrState(InverterJinmao_AttrEnum.ess_discharg_power.ToString()),
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = 24,
+                IsBold = true,
+            };
+            esRunStatus_DischargeValuesView.AddChidren(esRunStatus_DischargeValuesButton);
+
+            var esRunStatus_DischargeTextButton = new Button()
+            {
+                X = Application.GetRealWidth(1),
+                Y = Application.GetRealWidth(76),
+                Height = Application.GetRealWidth(17),
+                TextAlignment = TextAlignment.Center,
+                Text = "瀹炴椂鏀剧數鍔熺巼(kwh)",
+                TextColor = CSS_Color.TextualColor,
+                TextSize = 12,
+            };
+            esRunStatus_DischargeValuesView.AddChidren(esRunStatus_DischargeTextButton);
+            #endregion
+
+
+
+            #endregion
+
+            #endregion
+
+
+            contentView.AddChidren(new Button()
+            {
+                Height = Application.GetRealWidth(8)
+            });
+
+            #region 绀句細璐$尞 Social contribution
+            contentView.AddChidren(new Button()
+            {
+                Height = Application.GetRealWidth(46),
+                Width = Application.GetRealWidth(100),
+                X = Application.GetRealWidth(16),
+                Text = "绀句細璐$尞",
+                TextAlignment = TextAlignment.CenterLeft,
+                TextSize = 16,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                IsBold = true
+            });
+
+            var socialContributionView = new HorizontalScrolViewLayout()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth(343),
+                Height = Application.GetRealHeight(142),
+                ScrollEnabled = false,
+            };
+            contentView.AddChidren(socialContributionView);
+
+            #region 鑺傜害鏍囧噯鐓�
+            var socialContribution_InfoView_1 = new FrameLayout()
+            {
+                Width = Application.GetRealWidth(109),
+                Height = Application.GetRealWidth(130),
+                BackgroundImagePath = "FunctionIcon/Acst/Inverter/SocialContributionInfoBg_Coal.png"
+            };
+            socialContributionView.AddChidren(socialContribution_InfoView_1);
+
+            var socialContribution_Info1_IconButton = new Button()
+            {
+                X = Application.GetRealWidth(12),
+                Y = Application.GetRealWidth(16),
+                Width = Application.GetRealWidth(36),
+                Height = Application.GetRealWidth(36),
+                UnSelectedImagePath = "FunctionIcon/Acst/Inverter/SocialContributionInfoIcon_Coal.png"
+            };
+            socialContribution_InfoView_1.AddChidren(socialContribution_Info1_IconButton);
+
+            var socialContribution_Info1_ValuesButton = new Button()
+            {
+                X = Application.GetRealWidth(12),
+                Y = Application.GetRealWidth(68),
+                Width = Application.GetRealWidth(36),
+                Height = Application.GetRealWidth(25),
+                Text = function.GetAttrState(InverterJinmao_AttrEnum.coal.ToString()),
+                TextSize = 18,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextAlignment = TextAlignment.BottomLeft,
+                IsBold = true,
+            };
+#if __IOS__
+            socialContribution_Info1_ValuesButton.Width = socialContribution_Info1_ValuesButton.GetTextWidth() + Application.GetRealWidth(8);
+#else
+            socialContribution_Info1_ValuesButton.Width = socialContribution_Info1_ValuesButton.GetTextWidth();
+#endif
+            socialContribution_InfoView_1.AddChidren(socialContribution_Info1_ValuesButton);
+
+            var socialContribution_Info1_UintButton = new Button()
+            {
+                X = socialContribution_Info1_ValuesButton.Right - Application.GetRealWidth(4),
+                Y = Application.GetRealWidth(68),
+                Width = Application.GetRealWidth(50),
+                Height = Application.GetRealWidth(23),
+                Text = "鍚�",
+                TextSize = 12,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextAlignment = TextAlignment.BottomLeft,
+            };
+            socialContribution_InfoView_1.AddChidren(socialContribution_Info1_UintButton);
+
+            var socialContribution_Info1_TipButton = new Button()
+            {
+                X = Application.GetRealWidth(12),
+                Y = Application.GetRealWidth(98),
+                Width = Application.GetRealWidth(100),
+                Height = Application.GetRealWidth(17),
+                Text = "鑺傜害鏍囧噯鐓�",
+                TextSize = 12,
+                TextColor = 0xFF798394,
+                TextAlignment = TextAlignment.CenterLeft,
+            };
+            socialContribution_InfoView_1.AddChidren(socialContribution_Info1_TipButton);
+            #endregion
+
+            socialContributionView.AddChidren(new Button()
+            {
+                Width = Application.GetRealWidth(8),
+            });
+
+            #region CO2鍑忔帓閲�
+            var socialContribution_InfoView_2 = new FrameLayout()
+            {
+                Width = Application.GetRealWidth(109),
+                Height = Application.GetRealWidth(130),
+                BackgroundImagePath = "FunctionIcon/Acst/WaterHeater/SocialContributionInfoBg_2.png"
+            };
+            socialContributionView.AddChidren(socialContribution_InfoView_2);
+
+            var socialContribution_Info2_IconButton = new Button()
+            {
+                X = Application.GetRealWidth(12),
+                Y = Application.GetRealWidth(16),
+                Width = Application.GetRealWidth(36),
+                Height = Application.GetRealWidth(36),
+                UnSelectedImagePath = "FunctionIcon/Acst/WaterHeater/SocialContributionInfoIcon_2.png"
+            };
+            socialContribution_InfoView_2.AddChidren(socialContribution_Info2_IconButton);
+
+            var socialContribution_Info2_ValuesButton = new Button()
+            {
+                X = Application.GetRealWidth(12),
+                Y = Application.GetRealWidth(68),
+                Width = Application.GetRealWidth(36),
+                Height = Application.GetRealWidth(25),
+                Text = function.GetAttrState(InverterJinmao_AttrEnum.co2.ToString()),
+                TextSize = 18,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextAlignment = TextAlignment.BottomLeft,
+                IsBold = true,
+            };
+#if __IOS__
+            socialContribution_Info2_ValuesButton.Width = socialContribution_Info2_ValuesButton.GetTextWidth() + Application.GetRealWidth(8);
+#else
+            socialContribution_Info2_ValuesButton.Width = socialContribution_Info2_ValuesButton.GetTextWidth();
+#endif
+            socialContribution_InfoView_2.AddChidren(socialContribution_Info2_ValuesButton);
+
+            var socialContribution_Info2_UintButton = new Button()
+            {
+                X = socialContribution_Info2_ValuesButton.Right - Application.GetRealWidth(4),
+                Y = Application.GetRealWidth(68),
+                Width = Application.GetRealWidth(50),
+                Height = Application.GetRealWidth(23),
+                Text = "鍚�",
+                TextSize = 12,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextAlignment = TextAlignment.BottomLeft,
+            };
+            socialContribution_InfoView_2.AddChidren(socialContribution_Info2_UintButton);
+
+            var socialContribution_Info2_TipButton = new Button()
+            {
+                X = Application.GetRealWidth(12),
+                Y = Application.GetRealWidth(98),
+                Width = Application.GetRealWidth(100),
+                Height = Application.GetRealWidth(17),
+                Text = "CO2鍑忔帓閲�",
+                TextSize = 12,
+                TextColor = 0xFF798394,
+                TextAlignment = TextAlignment.CenterLeft,
+            };
+            socialContribution_InfoView_2.AddChidren(socialContribution_Info2_TipButton);
+            #endregion
+
+            socialContributionView.AddChidren(new Button()
+            {
+                Width = Application.GetRealWidth(8),
+            });
+
+            #region 绛夋晥妞嶆爲閲�
+            var socialContribution_InfoView_3 = new FrameLayout()
+            {
+                Width = Application.GetRealWidth(109),
+                Height = Application.GetRealWidth(130),
+                BackgroundImagePath = "FunctionIcon/Acst/WaterHeater/SocialContributionInfoBg_3.png"
+            };
+            socialContributionView.AddChidren(socialContribution_InfoView_3);
+
+            var socialContribution_Info3_IconButton = new Button()
+            {
+                X = Application.GetRealWidth(12),
+                Y = Application.GetRealWidth(16),
+                Width = Application.GetRealWidth(36),
+                Height = Application.GetRealWidth(36),
+                UnSelectedImagePath = "FunctionIcon/Acst/WaterHeater/SocialContributionInfoIcon_3.png"
+            };
+            socialContribution_InfoView_3.AddChidren(socialContribution_Info3_IconButton);
+
+            var socialContribution_Info3_ValuesButton = new Button()
+            {
+                X = Application.GetRealWidth(12),
+                Y = Application.GetRealWidth(68),
+                Width = Application.GetRealWidth(36),
+                Height = Application.GetRealWidth(25),
+                Text = function.GetAttrState(InverterJinmao_AttrEnum.trees.ToString()),
+                TextSize = 18,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextAlignment = TextAlignment.BottomLeft,
+                IsBold = true,
+            };
+#if __IOS__
+            socialContribution_Info3_ValuesButton.Width = socialContribution_Info3_ValuesButton.GetTextWidth() + Application.GetRealWidth(8);
+#else
+            socialContribution_Info3_ValuesButton.Width = socialContribution_Info3_ValuesButton.GetTextWidth();
+#endif
+            socialContribution_InfoView_3.AddChidren(socialContribution_Info3_ValuesButton);
+
+            var socialContribution_Info3_UintButton = new Button()
+            {
+                X = socialContribution_Info3_ValuesButton.Right - Application.GetRealWidth(4),
+                Y = Application.GetRealWidth(68),
+                Width = Application.GetRealWidth(50),
+                Height = Application.GetRealWidth(23),
+                Text = "妫�",
+                TextSize = 12,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextAlignment = TextAlignment.BottomLeft,
+            };
+            socialContribution_InfoView_3.AddChidren(socialContribution_Info3_UintButton);
+
+            var socialContribution_Info3_TipButton = new Button()
+            {
+                X = Application.GetRealWidth(12),
+                Y = Application.GetRealWidth(98),
+                Width = Application.GetRealWidth(100),
+                Height = Application.GetRealWidth(17),
+                Text = "绛夋晥妞嶆爲閲�",
+                TextSize = 12,
+                TextColor = 0xFF798394,
+                TextAlignment = TextAlignment.CenterLeft,
+            };
+            socialContribution_InfoView_3.AddChidren(socialContribution_Info3_TipButton);
+            #endregion
+
+
+
+            #endregion
+
+
+        }
+    }
+}
+
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Acst/WaterHeaterJinmaoPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Acst/WaterHeaterJinmaoPage.cs
new file mode 100644
index 0000000..26256e4
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/Acst/WaterHeaterJinmaoPage.cs
@@ -0,0 +1,796 @@
+锘縰sing System;
+using System.Collections.Generic;
+using HDL_ON.DriverLayer;
+using HDL_ON.Entity;
+using HDL_ON.UI.CSS;
+using Shared;
+
+namespace HDL_ON.UI
+{
+    public class WaterHeaterJinmaoPage : FrameLayout
+    {
+        FrameLayout bodyView;
+        VerticalScrolViewLayout contentView;
+        FrameLayout bottomView;
+        Function function;
+
+        public WaterHeaterJinmaoPage(Function deviceFunction)
+        {
+            bodyView = this;
+            function = deviceFunction;
+        }
+
+        public void LoadPage(Action action)
+        {
+
+            var topView = new TopViewDiv(bodyView, function.name);
+            topView.LoadTopView_FunctionTop(function, action);
+
+
+            contentView = new VerticalScrolViewLayout()
+            {
+                Y = topView.contentView.Height,
+                Height = Application.GetRealHeight(Application.DesignHeight - 94 - 5) - topView.contentView.Height,
+            };
+            bodyView.AddChidren(contentView);
+
+            bottomView = new FrameLayout()
+            {
+                Y = Application.GetRealHeight(Application.DesignHeight - 94),
+                Height = Application.GetRealHeight(94 + 16),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+                Radius = (uint)Application.GetRealHeight(16),
+                BorderColor = 0x00FFFFFF,
+                BorderWidth = 0,
+            };
+            bodyView.AddChidren(bottomView);
+
+            initContentView();
+            initBottomView();
+            Control.Ins.SendReadCommand(function);
+        }
+        /// <summary>
+        /// 鍔犺浇鍐呭鍖哄煙
+        /// </summary>
+        private void initContentView()
+        {
+            contentView.AddChidren(new Button() { Height = Application.GetRealHeight(16) });
+
+            #region 鐑按鍣ㄧ姸鎬�
+            var infoView = new FrameLayout()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth(343),
+                Height = Application.GetRealHeight(181),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+                Radius = (uint)Application.GetRealHeight(12),
+                BorderColor = 0x00FFFFFF,
+                BorderWidth = 0,
+            };
+            contentView.AddChidren(infoView);
+
+            var infoView_ModeFreeView = new FrameLayout()
+            {
+                X = 0 - Application.GetRealWidth(14),
+                Y = Application.GetRealWidth(12),
+                Width = Application.GetRealWidth(68 + 14),
+                Height = Application.GetRealWidth(28),
+                BackgroundColor = 0x15FC9C04,
+                Radius = (uint)Application.GetRealHeight(14),
+                BorderColor = 0x00FFFFFF,
+                BorderWidth = 0,
+            };
+            infoView.AddChidren(infoView_ModeFreeView);
+
+            var infoView_ModeFree_IconButton = new Button()
+            {
+                X = Application.GetRealWidth(8 + 14),
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetRealWidth(12),
+                Height = Application.GetRealWidth(12),
+                UnSelectedImagePath = "FunctionIcon/Acst/WaterHeater/ModeFree_False.png",
+            };
+            infoView_ModeFreeView.AddChidren(infoView_ModeFree_IconButton);
+
+            var infoView_ModeFree_TextButton = new Button()
+            {
+                X = Application.GetRealWidth(8 + 14 + 8 + 12),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextSize = 14,
+                TextColor = 0xFFFC9C04,
+                Text = "鐢ㄧ數",
+            };
+            infoView_ModeFreeView.AddChidren(infoView_ModeFree_TextButton);
+
+            var infoView_Temp_View = new FrameLayout()
+            {
+                Gravity = Gravity.Center,
+                Width = Application.GetRealWidth(133),
+                Height = Application.GetRealWidth(133),
+                BackgroundImagePath = "FunctionIcon/Acst/WaterHeater/TempBg.png"
+            };
+            infoView.AddChidren(infoView_Temp_View);
+
+            var btnTempValues = new Button()
+            {
+                Y = Application.GetRealWidth(34),
+                Gravity = Gravity.CenterVertical,
+                Height = Application.GetRealWidth(43),
+                IsBold = true,
+                TextSize = 32,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextAlignment = TextAlignment.TopCenter,
+                Text = function.GetAttrState(WaterHeaterJinmao_AttrEnum.temp.ToString(), "---"),
+            };
+#if __IOS__
+            btnTempValues.Width = btnTempValues.GetTextWidth() + Application.GetRealWidth(8);
+#else
+            btnTempValues.Width = btnTempValues.GetTextWidth();
+#endif
+            btnTempValues.Gravity = Gravity.CenterHorizontal;
+            infoView_Temp_View.AddChidren(btnTempValues);
+            var btnTempValuesUint = new Button()
+            {
+                X = btnTempValues.Right - Application.GetRealWidth(4),
+                Y = Application.GetRealWidth(40),
+                Height = Application.GetRealWidth(66),
+                TextAlignment = TextAlignment.TopLeft,
+                Width = Application.GetRealWidth(30),
+                TextSize = 10,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                Text = "掳C"
+            };
+            infoView_Temp_View.AddChidren(btnTempValuesUint);
+
+            var infoView_Temp_Text = new Button()
+            {
+                Y = Application.GetRealWidth(80),
+                Height = Application.GetRealWidth(23),
+                TextAlignment = TextAlignment.Center,
+                TextSize = 12,
+                TextColor = 0xFF798394,
+                Text = "鐑按娓╁害"
+            };
+            infoView_Temp_View.AddChidren(infoView_Temp_Text);
+
+            var infoView_HistoryButton = new Button();
+            infoView_Temp_View.AddChidren(infoView_HistoryButton);
+            infoView_HistoryButton.MouseUpEventHandler = (sender, e) =>
+            {
+                var page = new WetarHeaterJinmaoHistoryPage(function);
+                MainPage.BasePageView.AddChidren(page);
+                page.LoadPage();
+                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+            };
+
+
+            #endregion
+
+            #region 鐑按鍣ㄦā寮�
+            var modeView = new HorizontalScrolViewLayout()
+            {
+                Height = Application.GetRealHeight(76),
+                ScrollEnabled = false,
+            };
+            contentView.AddChidren(modeView);
+
+            modeView.AddChidren(new Button()
+            {
+                Width = Application.GetRealWidth(16),
+            });
+
+            var mode_EconomicView = new FrameLayout()
+            {
+                Width = Application.GetRealWidth(165),
+                Height = Application.GetRealWidth(52),
+                Gravity = Gravity.CenterVertical,
+                Radius = (uint)Application.GetRealHeight(12),
+                BorderColor = 0xFF00C22D,
+                BorderWidth = (uint)Application.GetRealWidth(1),
+                BackgroundColor = 0xFFEBFAEE
+            };
+            modeView.AddChidren(mode_EconomicView);
+
+            var mode_Economic_IconButton = new Button()
+            {
+                Width = Application.GetRealWidth(20),
+                Height = Application.GetRealWidth(20),
+                X = Application.GetRealWidth(53),
+                Gravity = Gravity.CenterVertical,
+                UnSelectedImagePath = "FunctionIcon/Acst/WaterHeater/Mode_Economic_On.png"
+            };
+            mode_EconomicView.AddChidren(mode_Economic_IconButton);
+
+            var mode_Economic_TextButton = new Button()
+            {
+                Width = Application.GetRealWidth(80),
+                X = Application.GetRealWidth(73 + 8),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextSize = 16,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                Text = "鑺傝兘",
+            };
+            mode_EconomicView.AddChidren(mode_Economic_TextButton);
+
+            modeView.AddChidren(new Button()
+            {
+                Width = Application.GetRealWidth(13),
+            });
+
+            //閫熺儹
+            var mode_QuickHeatView = new FrameLayout()
+            {
+                Width = Application.GetRealWidth(165),
+                Height = Application.GetRealWidth(52),
+                Gravity = Gravity.CenterVertical,
+                Radius = (uint)Application.GetRealHeight(12),
+                BorderColor = 0x0000C22D,
+                BorderWidth = (uint)Application.GetRealWidth(1),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+            };
+            modeView.AddChidren(mode_QuickHeatView);
+
+            var mode_QuickHeat_IconButton = new Button()
+            {
+                Width = Application.GetRealWidth(20),
+                Height = Application.GetRealWidth(20),
+                X = Application.GetRealWidth(53),
+                Gravity = Gravity.CenterVertical,
+                UnSelectedImagePath = "FunctionIcon/Acst/WaterHeater/Mode_QuickHeat.png"
+            };
+            mode_QuickHeatView.AddChidren(mode_QuickHeat_IconButton);
+
+            var mode_QuickHeat_TextButton = new Button()
+            {
+                Width = Application.GetRealWidth(80),
+                X = Application.GetRealWidth(81),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextSize = 16,
+                TextColor = CSS_Color.TextualColor,
+                Text = "閫熺儹"
+            };
+            mode_QuickHeatView.AddChidren(mode_QuickHeat_TextButton);
+            #endregion
+
+            #region 璁剧疆娓╁害
+            var setTempView = new FrameLayout()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth(343),
+                Height = Application.GetRealWidth(168),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+                Radius = (uint)Application.GetRealHeight(12),
+                BorderColor = 0x00FFFFFF,
+                BorderWidth = 0,
+            };
+            contentView.AddChidren(setTempView);
+
+            var setTemp_TextButtont = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Y = Application.GetRealWidth(16),
+                Width = Application.GetRealWidth(200),
+                Height = Application.GetRealHeight(23),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextSize = 16,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                IsBold = true,
+                Text = "娓╁害璁剧疆",
+            };
+            setTempView.AddChidren(setTemp_TextButtont);
+
+            var setTemp_Temp_ValuesTextButton = new Button()
+            {
+                Y = Application.GetRealWidth(34),
+                Gravity = Gravity.CenterVertical,
+                Height = Application.GetRealWidth(43),
+                IsBold = true,
+                TextSize = 32,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextAlignment = TextAlignment.TopCenter,
+                Text = function.GetAttrState(WaterHeaterJinmao_AttrEnum.set_temp.ToString(), "---"),
+            };
+#if __IOS__
+            setTemp_Temp_ValuesTextButton.Width = setTemp_Temp_ValuesTextButton.GetTextWidth() + Application.GetRealWidth(8);
+#else
+            setTemp_Temp_ValuesTextButton.Width = setTemp_Temp_ValuesTextButton.GetTextWidth();
+#endif
+            setTemp_Temp_ValuesTextButton.Gravity = Gravity.CenterHorizontal;
+            setTempView.AddChidren(setTemp_Temp_ValuesTextButton);
+            var setTemp_Temp_ValuesUintButton = new Button()
+            {
+                X = setTemp_Temp_ValuesTextButton.Right - Application.GetRealWidth(4),
+                Y = Application.GetRealWidth(40),
+                Height = Application.GetRealWidth(66),
+                TextAlignment = TextAlignment.TopLeft,
+                Width = Application.GetRealWidth(30),
+                TextSize = 10,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                Text = "掳C"
+            };
+            setTempView.AddChidren(setTemp_Temp_ValuesUintButton);
+
+
+            int setTempValue = 0;
+            string setTempStr = "--";
+            double dd = 0;
+            double.TryParse(function.GetAttrState(WaterHeaterJinmao_AttrEnum.set_temp.ToString(), "--"), out dd);
+            setTempValue = Convert.ToInt32(dd);
+            var setTemp_Temp_Bar = new DiyImageSeekBar()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealHeight(126 - 72),
+                Width = Application.GetRealWidth(Application.DesignWidth - 32),
+                Height = Application.GetRealHeight(72),
+                SeekBarViewHeight = Application.GetRealHeight(14),
+                ThumbImagePath = "FunctionIcon/Acst/ThumbImage.png",
+                ThumbImageHeight = Application.GetRealHeight(51),
+                ProgressBarColor = function.trait_on_off.curValue.ToString() == "on" ? 0xFFFFB848 : CSS_Color.DividingLineColor,
+                MaxValue = 25,
+                Progress = setTempValue - 35,
+                SeekBarPadding = Application.GetRealWidth(20),
+                IsProgressTextShow = false,
+                ProgressChangeDelayTime = 0,
+            };
+            setTempView.AddChidren(setTemp_Temp_Bar);
+
+            var setTemp_Temp_MinValuesTextButton = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Y = Application.GetRealWidth(130),
+                Width = Application.GetRealWidth(100),
+                Height = Application.GetRealWidth(26),
+                Text = "35掳C",
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = 0xFF7C8590,
+                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+            };
+            setTempView.AddChidren(setTemp_Temp_MinValuesTextButton);
+
+            var setTemp_Temp_MaxValuesTextButton = new Button()
+            {
+                X = Application.GetRealWidth(343 - 116),
+                Y = Application.GetRealWidth(130),
+                Width = Application.GetRealWidth(100),
+                Height = Application.GetRealWidth(26),
+                Text = "60掳C",
+                TextAlignment = TextAlignment.CenterRight,
+                TextColor = 0xFF7C8590,
+                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+            };
+            setTempView.AddChidren(setTemp_Temp_MaxValuesTextButton);
+            #endregion
+
+            contentView.AddChidren(new Button()
+            {
+                Height = Application.GetRealWidth(12),
+            });
+
+            #region flow 鐑按娴侀噺
+            var flowView = new FrameLayout()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth(343),
+                Height = Application.GetRealWidth(186),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+                Radius = (uint)Application.GetRealHeight(12),
+                BorderColor = 0x00FFFFFF,
+                BorderWidth = 0,
+            };
+            contentView.AddChidren(flowView);
+
+            var flow_ValuesButton = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Y = Application.GetRealWidth(14),
+                Width = Application.GetRealWidth(200),
+                Height = Application.GetRealWidth(25),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextSize = 16,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                Text = "鐑按娴侀噺锛�0.3L/min",
+                IsBold = true,
+            };
+            flowView.AddChidren(flow_ValuesButton);
+
+            var flow_HotWaterVolumeTextButton = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Y = Application.GetRealWidth(55),
+                Width = Application.GetRealWidth(100),
+                Height = Application.GetRealWidth(20),
+                Text = "鐑按閲�",
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS_FontSize.TextFontSize,
+            };
+            flowView.AddChidren(flow_HotWaterVolumeTextButton);
+
+            var flow_HotWaterVolumeValuesButton = new Button()
+            {
+                X = Application.GetRealWidth(343 - 116),
+                Y = Application.GetRealWidth(55),
+                Width = Application.GetRealWidth(100),
+                Height = Application.GetRealWidth(26),
+                Text = "24t",
+                TextAlignment = TextAlignment.CenterRight,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS_FontSize.TextFontSize,
+            };
+            flowView.AddChidren(flow_HotWaterVolumeValuesButton);
+
+            var flow_ValuesBar = new DiyImageSeekBar()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealWidth(79),
+                Width = Application.GetRealWidth(Application.DesignWidth - 64),
+                Height = Application.GetRealHeight(8),
+                SeekBarViewHeight = Application.GetRealHeight(8),
+                ThumbImageHeight = Application.GetRealHeight(0),
+                ProgressBarColor = 0xFF42D163,
+                SeekBarBackgroundColor = 0xFFFFB848,
+                MaxValue = 100,
+                Progress = 80,
+                SeekBarPadding = Application.GetRealWidth(0),
+                IsProgressTextShow = false,
+                ProgressChangeDelayTime = 0,
+                Enable = false,
+                IsClickable = false,
+            };
+            flowView.AddChidren(flow_ValuesBar);
+
+            var flow_HeatRecoveryCapacitytTextButton = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Y = Application.GetRealWidth(103),
+                Width = Application.GetRealWidth(100),
+                Height = Application.GetRealWidth(20),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextSize = 14,
+                TextColor = 0xFF00C22D,
+                Text = "鐑洖鏀堕噺"
+            };
+            flowView.AddChidren(flow_HeatRecoveryCapacitytTextButton);
+
+            var flow_HeatRecoveryCapacitytProgressButton = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Y = Application.GetRealWidth(125),
+                Width = Application.GetRealWidth(100),
+                Height = Application.GetRealWidth(22),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextSize = 14,
+                TextColor = 0xFF00C22D,
+                Text = "80%"
+            };
+            flowView.AddChidren(flow_HeatRecoveryCapacitytProgressButton);
+
+            var flow_HeatRecoveryCapacitytValuesButton = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Y = Application.GetRealWidth(148),
+                Width = Application.GetRealWidth(100),
+                Height = Application.GetRealWidth(22),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextSize = 14,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                Text = "19.2t"
+            };
+            flowView.AddChidren(flow_HeatRecoveryCapacitytValuesButton);
+
+
+
+            var flow_ElectricDirectDriveQuantityTextButton = new Button()
+            {
+                X = Application.GetRealWidth(343 - 116),
+                Y = Application.GetRealWidth(103),
+                Width = Application.GetRealWidth(100),
+                Height = Application.GetRealWidth(20),
+                TextAlignment = TextAlignment.CenterRight,
+                TextSize = 14,
+                TextColor = 0xFFFC9C04,
+                Text = "鐢电洿椹遍噺"
+            };
+            flowView.AddChidren(flow_ElectricDirectDriveQuantityTextButton);
+
+            var flow_ElectricDirectDriveQuantityProgressButton = new Button()
+            {
+                X = Application.GetRealWidth(343 - 116),
+                Y = Application.GetRealWidth(125),
+                Width = Application.GetRealWidth(100),
+                Height = Application.GetRealWidth(22),
+                TextAlignment = TextAlignment.CenterRight,
+                TextSize = 14,
+                TextColor = 0xFFFC9C04,
+                Text = "20%"
+            };
+            flowView.AddChidren(flow_ElectricDirectDriveQuantityProgressButton);
+
+            var flow_ElectricDirectDriveQuantityValuesButton = new Button()
+            {
+                X = Application.GetRealWidth(343 - 116),
+                Y = Application.GetRealWidth(148),
+                Width = Application.GetRealWidth(100),
+                Height = Application.GetRealWidth(22),
+                TextAlignment = TextAlignment.CenterRight,
+                TextSize = 14,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                Text = "4.8t"
+            };
+            flowView.AddChidren(flow_ElectricDirectDriveQuantityValuesButton);
+
+            #endregion
+
+            contentView.AddChidren(new Button()
+            {
+                Height = Application.GetRealWidth(8)
+            });
+
+            #region 绀句細璐$尞 Social contribution
+            contentView.AddChidren(new Button()
+            {
+                Height = Application.GetRealWidth(46),
+                Width = Application.GetRealWidth(100),
+                X = Application.GetRealWidth(16),
+                Text = "绀句細璐$尞",
+                TextAlignment = TextAlignment.CenterLeft,
+                TextSize = 16,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                IsBold = true
+            });
+
+            var socialContributionView = new HorizontalScrolViewLayout()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth(343),
+                Height = Application.GetRealHeight(142),
+                ScrollEnabled = false,
+            };
+            contentView.AddChidren(socialContributionView);
+
+            #region 鐑洖鏀惰妭鐢甸噺
+            var socialContribution_InfoView_1 = new FrameLayout()
+            {
+                Width = Application.GetRealWidth(109),
+                Height = Application.GetRealWidth(130),
+                BackgroundImagePath = "FunctionIcon/Acst/WaterHeater/SocialContributionInfoBg_1.png"
+            };
+            socialContributionView.AddChidren(socialContribution_InfoView_1);
+
+            var socialContribution_Info1_IconButton = new Button()
+            {
+                X = Application.GetRealWidth(12),
+                Y = Application.GetRealWidth(16),
+                Width = Application.GetRealWidth(36),
+                Height = Application.GetRealWidth(36),
+                UnSelectedImagePath = "FunctionIcon/Acst/WaterHeater/SocialContributionInfoIcon_1.png"
+            };
+            socialContribution_InfoView_1.AddChidren(socialContribution_Info1_IconButton);
+
+            var socialContribution_Info1_ValuesButton = new Button()
+            {
+                X = Application.GetRealWidth(12),
+                Y = Application.GetRealWidth(68),
+                Width = Application.GetRealWidth(36),
+                Height = Application.GetRealWidth(25),
+                Text = function.GetAttrState(WaterHeaterJinmao_AttrEnum.recycl_volume.ToString()),
+                TextSize = 18,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextAlignment = TextAlignment.BottomLeft,
+                IsBold = true,
+            };
+#if __IOS__
+            socialContribution_Info1_ValuesButton.Width = socialContribution_Info1_ValuesButton.GetTextWidth() + Application.GetRealWidth(8);
+#else
+            socialContribution_Info1_ValuesButton.Width = socialContribution_Info1_ValuesButton.GetTextWidth();
+#endif
+            socialContribution_InfoView_1.AddChidren(socialContribution_Info1_ValuesButton);
+
+            var socialContribution_Info1_UintButton = new Button()
+            {
+                X = socialContribution_Info1_ValuesButton.Right - Application.GetRealWidth(4),
+                Y = Application.GetRealWidth(68),
+                Width = Application.GetRealWidth(50),
+                Height = Application.GetRealWidth(23),
+                Text = "kwh",
+                TextSize = 12,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextAlignment = TextAlignment.BottomLeft,
+            };
+            socialContribution_InfoView_1.AddChidren(socialContribution_Info1_UintButton);
+
+            var socialContribution_Info1_TipButton = new Button()
+            {
+                X = Application.GetRealWidth(12),
+                Y = Application.GetRealWidth(98),
+                Width = Application.GetRealWidth(100),
+                Height = Application.GetRealWidth(17),
+                Text = "鐑洖鏀惰妭鐢甸噺",
+                TextSize = 12,
+                TextColor = 0xFF798394,
+                TextAlignment = TextAlignment.CenterLeft,
+            };
+            socialContribution_InfoView_1.AddChidren(socialContribution_Info1_TipButton);
+            #endregion
+
+            socialContributionView.AddChidren(new Button()
+            {
+                Width = Application.GetRealWidth(8),
+            });
+
+            #region CO2鍑忔帓閲�
+            var socialContribution_InfoView_2 = new FrameLayout()
+            {
+                Width = Application.GetRealWidth(109),
+                Height = Application.GetRealWidth(130),
+                BackgroundImagePath = "FunctionIcon/Acst/WaterHeater/SocialContributionInfoBg_2.png"
+            };
+            socialContributionView.AddChidren(socialContribution_InfoView_2);
+
+            var socialContribution_Info2_IconButton = new Button()
+            {
+                X = Application.GetRealWidth(12),
+                Y = Application.GetRealWidth(16),
+                Width = Application.GetRealWidth(36),
+                Height = Application.GetRealWidth(36),
+                UnSelectedImagePath = "FunctionIcon/Acst/WaterHeater/SocialContributionInfoIcon_2.png"
+            };
+            socialContribution_InfoView_2.AddChidren(socialContribution_Info2_IconButton);
+
+            var socialContribution_Info2_ValuesButton = new Button()
+            {
+                X = Application.GetRealWidth(12),
+                Y = Application.GetRealWidth(68),
+                Width = Application.GetRealWidth(36),
+                Height = Application.GetRealWidth(25),
+                Text = function.GetAttrState(WaterHeaterJinmao_AttrEnum.co2.ToString()),
+                TextSize = 18,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextAlignment = TextAlignment.BottomLeft,
+                IsBold = true,
+            };
+#if __IOS__
+            socialContribution_Info2_ValuesButton.Width = socialContribution_Info2_ValuesButton.GetTextWidth() + Application.GetRealWidth(8);
+#else
+            socialContribution_Info2_ValuesButton.Width = socialContribution_Info2_ValuesButton.GetTextWidth();
+#endif
+            socialContribution_InfoView_2.AddChidren(socialContribution_Info2_ValuesButton);
+
+            var socialContribution_Info2_UintButton = new Button()
+            {
+                X = socialContribution_Info2_ValuesButton.Right - Application.GetRealWidth(4),
+                Y = Application.GetRealWidth(68),
+                Width = Application.GetRealWidth(50),
+                Height = Application.GetRealWidth(23),
+                Text = "鍚�",
+                TextSize = 12,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextAlignment = TextAlignment.BottomLeft,
+            };
+            socialContribution_InfoView_2.AddChidren(socialContribution_Info2_UintButton);
+
+            var socialContribution_Info2_TipButton = new Button()
+            {
+                X = Application.GetRealWidth(12),
+                Y = Application.GetRealWidth(98),
+                Width = Application.GetRealWidth(100),
+                Height = Application.GetRealWidth(17),
+                Text = "CO2鍑忔帓閲�",
+                TextSize = 12,
+                TextColor = 0xFF798394,
+                TextAlignment = TextAlignment.CenterLeft,
+            };
+            socialContribution_InfoView_2.AddChidren(socialContribution_Info2_TipButton);
+            #endregion
+
+            socialContributionView.AddChidren(new Button()
+            {
+                Width = Application.GetRealWidth(8),
+            });
+
+            #region 绛夋晥妞嶆爲閲�
+            var socialContribution_InfoView_3 = new FrameLayout()
+            {
+                Width = Application.GetRealWidth(109),
+                Height = Application.GetRealWidth(130),
+                BackgroundImagePath = "FunctionIcon/Acst/WaterHeater/SocialContributionInfoBg_3.png"
+            };
+            socialContributionView.AddChidren(socialContribution_InfoView_3);
+
+            var socialContribution_Info3_IconButton = new Button()
+            {
+                X = Application.GetRealWidth(12),
+                Y = Application.GetRealWidth(16),
+                Width = Application.GetRealWidth(36),
+                Height = Application.GetRealWidth(36),
+                UnSelectedImagePath = "FunctionIcon/Acst/WaterHeater/SocialContributionInfoIcon_3.png"
+            };
+            socialContribution_InfoView_3.AddChidren(socialContribution_Info3_IconButton);
+
+            var socialContribution_Info3_ValuesButton = new Button()
+            {
+                X = Application.GetRealWidth(12),
+                Y = Application.GetRealWidth(68),
+                Width = Application.GetRealWidth(36),
+                Height = Application.GetRealWidth(25),
+                Text = function.GetAttrState(WaterHeaterJinmao_AttrEnum.trees.ToString()),
+                TextSize = 18,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextAlignment = TextAlignment.BottomLeft,
+                IsBold = true,
+            };
+#if __IOS__
+            socialContribution_Info3_ValuesButton.Width = socialContribution_Info3_ValuesButton.GetTextWidth() + Application.GetRealWidth(8);
+#else
+            socialContribution_Info3_ValuesButton.Width = socialContribution_Info3_ValuesButton.GetTextWidth();
+#endif
+            socialContribution_InfoView_3.AddChidren(socialContribution_Info3_ValuesButton);
+
+            var socialContribution_Info3_UintButton = new Button()
+            {
+                X = socialContribution_Info3_ValuesButton.Right - Application.GetRealWidth(4),
+                Y = Application.GetRealWidth(68),
+                Width = Application.GetRealWidth(50),
+                Height = Application.GetRealWidth(23),
+                Text = "妫�",
+                TextSize = 12,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextAlignment = TextAlignment.BottomLeft,
+            };
+            socialContribution_InfoView_3.AddChidren(socialContribution_Info3_UintButton);
+
+            var socialContribution_Info3_TipButton = new Button()
+            {
+                X = Application.GetRealWidth(12),
+                Y = Application.GetRealWidth(98),
+                Width = Application.GetRealWidth(100),
+                Height = Application.GetRealWidth(17),
+                Text = "绛夋晥妞嶆爲閲�",
+                TextSize = 12,
+                TextColor = 0xFF798394,
+                TextAlignment = TextAlignment.CenterLeft,
+            };
+            socialContribution_InfoView_3.AddChidren(socialContribution_Info3_TipButton);
+            #endregion
+
+
+
+            #endregion
+
+
+        }
+
+        private void initBottomView()
+        {
+            var btnPowerControl = new Button()
+            {
+                Width = Application.GetRealWidth(50),
+                Height = Application.GetRealWidth(50),
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealWidth(16),
+                UnSelectedImagePath = "FunctionIcon/Acst/grey/PowerOffIcon.png",
+                SelectedImagePath = $"FunctionIcon/Acst/blue/PowerIcon.png",
+                IsSelected = function.trait_on_off.curValue.ToString() == "on"
+            };
+            bottomView.AddChidren(btnPowerControl);
+
+            btnPowerControl.MouseUpEventHandler = (sender, e) => {
+                btnPowerControl.IsSelected = !btnPowerControl.IsSelected;
+
+                new System.Threading.Thread(() => {
+                    Dictionary<string, string> d = new Dictionary<string, string>();
+                    d.Add(FunctionAttributeKey.OnOff, btnPowerControl.IsSelected ? "on" : "off");
+                    Control.Ins.SendWriteCommand(function, d);
+                })
+                { IsBackground = true }.Start();
+            };
+
+        }
+
+        public void UpdateStatus(Function temp)
+        {
+
+        }
+    }
+}
+
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Acst/WetarHeaterJinmaoHistoryPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Acst/WetarHeaterJinmaoHistoryPage.cs
new file mode 100644
index 0000000..402c310
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/Acst/WetarHeaterJinmaoHistoryPage.cs
@@ -0,0 +1,448 @@
+锘縰sing System;
+using System.Collections.Generic;
+using HDL_ON.Entity;
+using HDL_ON.UI.CSS;
+using Shared;
+namespace HDL_ON.UI
+{
+    public class WetarHeaterJinmaoHistoryPage : FrameLayout
+    {
+        WetarHeaterJinmaoHistoryPage bodyView;
+        Function device;
+
+        /// <summary>
+        /// echart瀹瑰櫒
+        /// </summary>
+        MyEchartsViewOn tempEchartsView;
+
+        public WetarHeaterJinmaoHistoryPage(Function function)
+        {
+            bodyView = this;
+            device = function;
+        }
+
+        public void LoadPage()
+        {
+            var topView = new TopViewDiv(bodyView, device.name);
+            topView.maginY = 10;
+            topView.LoadTopView();
+
+            var contentView = new VerticalScrolViewLayout()
+            {
+                Y = Application.GetRealHeight(74+16),
+                Height = Application.GetRealHeight(Application.DesignHeight - 74),
+            };
+            bodyView.AddChidren(contentView);
+
+            #region 娓╁害鍊�
+            var infoView1 = new FrameLayout()
+            {
+                Width = Application.GetRealWidth(343),
+                Height = Application.GetRealWidth(382),
+                Gravity = Gravity.CenterHorizontal,
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+                Radius = (uint)Application.GetRealWidth(12),
+                BorderColor = 0x00FFFFFF,
+                BorderWidth = 0,
+            };
+            contentView.AddChidren(infoView1);
+
+            #region 鏃堕棿鏉′欢閫夋嫨
+            var infoView1_DateView = new HorizontalScrolViewLayout()
+            {
+                Width = Application.GetRealWidth(343 - 34),
+                Height = Application.GetRealWidth(26),
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealWidth(17),
+                BackgroundColor = CSS_Color.BackgroundColor,
+                Radius = (uint)Application.GetRealWidth(13),
+                BorderColor = 0x00FFFFFF,
+                BorderWidth = 0,
+                ScrollEnabled = false,
+            };
+            infoView1.AddChidren(infoView1_DateView);
+
+            var infoView1_Date_Day = new Button()
+            {
+                Width = Application.GetRealWidth(103),
+                Height = Application.GetRealWidth(26),
+                BackgroundColor = CSS_Color.BackgroundColor,
+                SelectedBackgroundColor = CSS_Color.MainBackgroundColor,
+                Radius = (uint)Application.GetRealWidth(13),
+                BorderColor = CSS_Color.BackgroundColor,
+                BorderWidth = (uint)Application.GetRealWidth(1),
+                Text = "鏃�",
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                SelectedTextColor = CSS_Color.MainColor,
+                TextSize = CSS_FontSize.TextFontSize,
+                IsSelected = true,
+            };
+            infoView1_DateView.AddChidren(infoView1_Date_Day);
+
+
+            var infoView1_Date_Month = new Button()
+            {
+                Width = Application.GetRealWidth(103),
+                Height = Application.GetRealWidth(26),
+                BackgroundColor = CSS_Color.BackgroundColor,
+                SelectedBackgroundColor = CSS_Color.MainBackgroundColor,
+                Radius = (uint)Application.GetRealWidth(13),
+                BorderColor = CSS_Color.BackgroundColor,
+                BorderWidth = (uint)Application.GetRealWidth(1),
+                Text = "鏈�",
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                SelectedTextColor = CSS_Color.MainColor,
+                TextSize = CSS_FontSize.TextFontSize,
+                IsSelected = false,
+            };
+            infoView1_DateView.AddChidren(infoView1_Date_Month);
+
+
+            var infoView1_Date_Year = new Button()
+            {
+                Width = Application.GetRealWidth(103),
+                Height = Application.GetRealWidth(26),
+                BackgroundColor = CSS_Color.BackgroundColor,
+                SelectedBackgroundColor = CSS_Color.MainBackgroundColor,
+                Radius = (uint)Application.GetRealWidth(13),
+                BorderColor = CSS_Color.BackgroundColor,
+                BorderWidth = (uint)Application.GetRealWidth(1),
+                Text = "骞�",
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                SelectedTextColor = CSS_Color.MainColor,
+                TextSize = CSS_FontSize.TextFontSize,
+                IsSelected = false,
+            };
+            infoView1_DateView.AddChidren(infoView1_Date_Year);
+
+            var infoView1_DateInfoView = new FrameLayout()
+            {
+                Y = Application.GetRealWidth(43),
+                Height = Application.GetRealWidth(55),
+            };
+            infoView1.AddChidren(infoView1_DateInfoView);
+
+            var infoView1_DateInfo_PreIconButton = new Button()
+            {
+                X = Application.GetRealWidth(18),
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetRealWidth(6),
+                Height = Application.GetRealWidth(10),
+                UnSelectedImagePath = "FunctionIcon/Acst/WaterHeater/PreIcon.png",
+            };
+            infoView1_DateInfoView.AddChidren(infoView1_DateInfo_PreIconButton);
+
+            var infoView1_DateInfo_PreClickButton = new Button()
+            {
+                Width = Application.GetRealWidth(32 + 6),
+            };
+            infoView1_DateInfoView.AddChidren(infoView1_DateInfo_PreClickButton);
+
+            var infoView1_DateInfo_DateTextButton = new Button()
+            {
+                Gravity = Gravity.Center,
+                Width = Application.GetRealWidth(200),
+                TextAlignment = TextAlignment.Center,
+                Text = "2024-8-12",
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                IsBold = true,
+                TextSize = 16,
+            };
+            infoView1_DateInfoView.AddChidren(infoView1_DateInfo_DateTextButton);
+
+
+            var infoView1_DateInfo_NextIconButton = new Button()
+            {
+                X = Application.GetRealWidth(343 - 18 - 6),
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetRealWidth(6),
+                Height = Application.GetRealWidth(10),
+                UnSelectedImagePath = "FunctionIcon/Acst/WaterHeater/NextIcon.png",
+            };
+            infoView1_DateInfoView.AddChidren(infoView1_DateInfo_NextIconButton);
+
+            var infoView1_DateInfo_NextClickButton = new Button()
+            {
+                Width = Application.GetRealWidth(32 + 6),
+            };
+            infoView1_DateInfoView.AddChidren(infoView1_DateInfo_NextClickButton);
+
+            #endregion
+
+            #region 鏁版嵁鍥捐〃
+            MyEchartsViewOn infoView1_EchartsView = new MyEchartsViewOn()
+            {
+                Y = Application.GetRealWidth(101),
+                Height = Application.GetRealWidth(246),
+            };
+            infoView1.AddChidren(infoView1_EchartsView);
+
+            var echartOption = new EchartsOption_Histogram();
+            echartOption.xTitle = "鏃堕棿";
+            echartOption.yTitle = "娓╁害锛堚剝锛�";
+            echartOption.InitXdataText(new List<string>()
+            {
+                "21","22","23","24","25","26","26","27","28","29",
+                "21","22","23","24","25","26","26","27","28","29",
+                "21","22","23","24"
+            });
+            echartOption.InitYdataText(new List<EnvironmentalSensorHistor>() {
+                new EnvironmentalSensorHistor{ fieldName = "1", fieldValue= "23"  },
+                new EnvironmentalSensorHistor{ fieldName = "2", fieldValue= "22"  },
+                new EnvironmentalSensorHistor{ fieldName = "3", fieldValue= "11"  },
+                new EnvironmentalSensorHistor{ fieldName = "4", fieldValue= "21"  },
+                new EnvironmentalSensorHistor{ fieldName = "5", fieldValue= "41"  },
+                new EnvironmentalSensorHistor{ fieldName = "6", fieldValue= "23"  },
+                new EnvironmentalSensorHistor{ fieldName = "7", fieldValue= "31"  },
+                new EnvironmentalSensorHistor{ fieldName = "8", fieldValue= "23"  },
+                new EnvironmentalSensorHistor{ fieldName = "9", fieldValue= "11"  },
+                new EnvironmentalSensorHistor{ fieldName = "10", fieldValue= "21"  },
+                new EnvironmentalSensorHistor{ fieldName = "11", fieldValue= "24"  },
+                new EnvironmentalSensorHistor{ fieldName = "12", fieldValue= "41"  },
+                new EnvironmentalSensorHistor{ fieldName = "13", fieldValue= "32"  },
+                new EnvironmentalSensorHistor{ fieldName = "14", fieldValue= "23"  },
+                new EnvironmentalSensorHistor{ fieldName = "15", fieldValue= "23"  },
+                new EnvironmentalSensorHistor{ fieldName = "16", fieldValue= "22"  },
+                new EnvironmentalSensorHistor{ fieldName = "17", fieldValue= "11"  },
+                new EnvironmentalSensorHistor{ fieldName = "18", fieldValue= "21"  },
+                new EnvironmentalSensorHistor{ fieldName = "19", fieldValue= "41"  },
+                new EnvironmentalSensorHistor{ fieldName = "20", fieldValue= "23"  },
+                new EnvironmentalSensorHistor{ fieldName = "21", fieldValue= "31"  },
+                new EnvironmentalSensorHistor{ fieldName = "22", fieldValue= "23"  },
+                new EnvironmentalSensorHistor{ fieldName = "23", fieldValue= "11"  },
+                new EnvironmentalSensorHistor{ fieldName = "24", fieldValue= "21"  },
+            });
+            var ddd = echartOption.InitOption();
+            infoView1_EchartsView.ShowWithOption(ddd);
+
+            infoView1.AddChidren(new Button()
+            {
+                Height = Application.GetRealWidth(35),
+                Y = Application.GetRealWidth(340),
+                Text = "娓╁害鍊�",
+                TextSize = 14,
+                TextAlignment = TextAlignment.Center,
+                TextColor = 0xFFC0C7D4
+            });
+
+            #endregion
+
+            #endregion
+
+            contentView.AddChidren(new Button()
+            {
+                Height = Application.GetRealWidth(16)
+            });
+
+            #region 鐢ㄦ按閲�
+            var infoView2 = new FrameLayout()
+            {
+                Width = Application.GetRealWidth(343),
+                Height = Application.GetRealWidth(382),
+                Y = Application.GetRealHeight(16) + infoView1.Bottom,
+                Gravity = Gravity.CenterHorizontal,
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+                Radius = (uint)Application.GetRealWidth(12),
+                BorderColor = 0x00FFFFFF,
+                BorderWidth = 0,
+            };
+            contentView.AddChidren(infoView2);
+
+            #region 鏃堕棿鏉′欢閫夋嫨
+            var infoView2_DateView = new HorizontalScrolViewLayout()
+            {
+                Width = Application.GetRealWidth(343 - 34),
+                Height = Application.GetRealWidth(26),
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealWidth(17),
+                BackgroundColor = CSS_Color.BackgroundColor,
+                Radius = (uint)Application.GetRealWidth(13),
+                BorderColor = 0x00FFFFFF,
+                BorderWidth = 0,
+                ScrollEnabled = false,
+            };
+            infoView2.AddChidren(infoView2_DateView);
+
+            var infoView2_Date_Day = new Button()
+            {
+                Width = Application.GetRealWidth(103),
+                Height = Application.GetRealWidth(26),
+                BackgroundColor = CSS_Color.BackgroundColor,
+                SelectedBackgroundColor = CSS_Color.MainBackgroundColor,
+                Radius = (uint)Application.GetRealWidth(13),
+                BorderColor = CSS_Color.BackgroundColor,
+                BorderWidth = (uint)Application.GetRealWidth(1),
+                Text = "鏃�",
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                SelectedTextColor = CSS_Color.MainColor,
+                TextSize = CSS_FontSize.TextFontSize,
+                IsSelected = true,
+            };
+            infoView2_DateView.AddChidren(infoView2_Date_Day);
+
+
+            var infoView2_Date_Month = new Button()
+            {
+                Width = Application.GetRealWidth(103),
+                Height = Application.GetRealWidth(26),
+                BackgroundColor = CSS_Color.BackgroundColor,
+                SelectedBackgroundColor = CSS_Color.MainBackgroundColor,
+                Radius = (uint)Application.GetRealWidth(13),
+                BorderColor = CSS_Color.BackgroundColor,
+                BorderWidth = (uint)Application.GetRealWidth(1),
+                Text = "鏈�",
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                SelectedTextColor = CSS_Color.MainColor,
+                TextSize = CSS_FontSize.TextFontSize,
+                IsSelected = false,
+            };
+            infoView2_DateView.AddChidren(infoView2_Date_Month);
+
+
+            var infoView2_Date_Year = new Button()
+            {
+                Width = Application.GetRealWidth(103),
+                Height = Application.GetRealWidth(26),
+                BackgroundColor = CSS_Color.BackgroundColor,
+                SelectedBackgroundColor = CSS_Color.MainBackgroundColor,
+                Radius = (uint)Application.GetRealWidth(13),
+                BorderColor = CSS_Color.BackgroundColor,
+                BorderWidth = (uint)Application.GetRealWidth(1),
+                Text = "骞�",
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                SelectedTextColor = CSS_Color.MainColor,
+                TextSize = CSS_FontSize.TextFontSize,
+                IsSelected = false,
+            };
+            infoView2_DateView.AddChidren(infoView2_Date_Year);
+
+            var infoView2_DateInfoView = new FrameLayout()
+            {
+                Y = Application.GetRealWidth(43),
+                Height = Application.GetRealWidth(55),
+            };
+            infoView2.AddChidren(infoView2_DateInfoView);
+
+            var infoView2_DateInfo_PreIconButton = new Button()
+            {
+                X = Application.GetRealWidth(18),
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetRealWidth(6),
+                Height = Application.GetRealWidth(10),
+                UnSelectedImagePath = "FunctionIcon/Acst/WaterHeater/PreIcon.png",
+            };
+            infoView2_DateInfoView.AddChidren(infoView2_DateInfo_PreIconButton);
+
+            var infoView2_DateInfo_PreClickButton = new Button()
+            {
+                Width = Application.GetRealWidth(32 + 6),
+            };
+            infoView2_DateInfoView.AddChidren(infoView2_DateInfo_PreClickButton);
+
+            var infoView2_DateInfo_DateTextButton = new Button()
+            {
+                Gravity = Gravity.Center,
+                Width = Application.GetRealWidth(200),
+                TextAlignment = TextAlignment.Center,
+                Text = "2024-8-12",
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                IsBold = true,
+                TextSize = 16,
+            };
+            infoView2_DateInfoView.AddChidren(infoView2_DateInfo_DateTextButton);
+
+
+            var infoView2_DateInfo_NextIconButton = new Button()
+            {
+                X = Application.GetRealWidth(343 - 18 - 6),
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetRealWidth(6),
+                Height = Application.GetRealWidth(10),
+                UnSelectedImagePath = "FunctionIcon/Acst/WaterHeater/NextIcon.png",
+            };
+            infoView2_DateInfoView.AddChidren(infoView2_DateInfo_NextIconButton);
+
+            var infoView2_DateInfo_NextClickButton = new Button()
+            {
+                Width = Application.GetRealWidth(32 + 6),
+            };
+            infoView2_DateInfoView.AddChidren(infoView2_DateInfo_NextClickButton);
+
+            #endregion
+
+            #region 鏁版嵁鍥捐〃
+            MyEchartsViewOn infoView2_EchartsView = new MyEchartsViewOn()
+            {
+                Y = Application.GetRealWidth(101),
+                Height = Application.GetRealWidth(246),
+            };
+            infoView2.AddChidren(infoView2_EchartsView);
+
+            var echartOption2 = new EchartsOption_Histogram();
+            echartOption2.xTitle = "鏃堕棿";
+            echartOption2.yTitle = "娓╁害锛堚剝锛�";
+            echartOption2.InitXdataText(new List<string>()
+            {
+                "21","22","23","24","25","26","26","27","28","29",
+                "21","22","23","24","25","26","26","27","28","29",
+                "21","22","23","24"
+            });
+            echartOption2.InitYdataText(new List<EnvironmentalSensorHistor>() {
+                new EnvironmentalSensorHistor{ fieldName = "1", fieldValue= "23"  },
+                new EnvironmentalSensorHistor{ fieldName = "2", fieldValue= "22"  },
+                new EnvironmentalSensorHistor{ fieldName = "3", fieldValue= "11"  },
+                new EnvironmentalSensorHistor{ fieldName = "4", fieldValue= "21"  },
+                new EnvironmentalSensorHistor{ fieldName = "5", fieldValue= "41"  },
+                new EnvironmentalSensorHistor{ fieldName = "6", fieldValue= "23"  },
+                new EnvironmentalSensorHistor{ fieldName = "7", fieldValue= "31"  },
+                new EnvironmentalSensorHistor{ fieldName = "8", fieldValue= "23"  },
+                new EnvironmentalSensorHistor{ fieldName = "9", fieldValue= "11"  },
+                new EnvironmentalSensorHistor{ fieldName = "10", fieldValue= "21"  },
+                new EnvironmentalSensorHistor{ fieldName = "11", fieldValue= "24"  },
+                new EnvironmentalSensorHistor{ fieldName = "12", fieldValue= "41"  },
+                new EnvironmentalSensorHistor{ fieldName = "13", fieldValue= "32"  },
+                new EnvironmentalSensorHistor{ fieldName = "14", fieldValue= "23"  },
+                new EnvironmentalSensorHistor{ fieldName = "15", fieldValue= "23"  },
+                new EnvironmentalSensorHistor{ fieldName = "16", fieldValue= "22"  },
+                new EnvironmentalSensorHistor{ fieldName = "17", fieldValue= "11"  },
+                new EnvironmentalSensorHistor{ fieldName = "18", fieldValue= "21"  },
+                new EnvironmentalSensorHistor{ fieldName = "19", fieldValue= "41"  },
+                new EnvironmentalSensorHistor{ fieldName = "20", fieldValue= "23"  },
+                new EnvironmentalSensorHistor{ fieldName = "21", fieldValue= "31"  },
+                new EnvironmentalSensorHistor{ fieldName = "22", fieldValue= "23"  },
+                new EnvironmentalSensorHistor{ fieldName = "23", fieldValue= "11"  },
+                new EnvironmentalSensorHistor{ fieldName = "24", fieldValue= "21"  },
+            });
+            infoView2_EchartsView.ShowWithOption(echartOption2.InitOption());
+
+            infoView2.AddChidren(new Button()
+            {
+                Height = Application.GetRealWidth(35),
+                Y = Application.GetRealWidth(340),
+                Text = "鐢ㄦ按閲�",
+                TextSize = 14,
+                TextAlignment = TextAlignment.Center,
+                TextColor = 0xFFC0C7D4
+            });
+
+            #endregion
+
+
+            #endregion
+
+
+            contentView.AddChidren(new Button()
+            {
+                Height = Application.GetRealWidth(26)
+            });
+        }
+
+    }
+}
+
diff --git a/HDL_ON/UI/UI2/FuntionControlView/Curtain/CurtainDreamPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Curtain/CurtainDreamPage.cs
index 1cbcd2b..a8a547d 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Curtain/CurtainDreamPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Curtain/CurtainDreamPage.cs
@@ -300,24 +300,19 @@
                     return;
                 if (updateTemp.spk == bodyView.function.spk && updateTemp.sid == bodyView.function.sid)
                 {
-                try
+                    try
                     {
-                        if (!bodyView.onCurtainAnimation)
+                        var percent = Convert.ToInt32(updateTemp.GetAttrState(FunctionAttributeKey.Percent));
+                        bodyView.curtainSeekBar.Progress = percent;
+                        bodyView.btnProgress.Text = percent + "%";
+
+                        var e = Convert.ToInt32(updateTemp.GetAttrState(FunctionAttributeKey.Angle));
+                        bodyView.angleBar.Progress = e;
+                        float angle = e - 90;
+                        bodyView.btnAngle.Text = (e - 0) + "掳";
+                        foreach (var btn in bodyView.buttons)
                         {
-                            var percent = Convert.ToInt32(updateTemp.GetAttrState(FunctionAttributeKey.Percent));
-                            bodyView.CurtainAnimation(percent);
-                            bodyView.btnProgress.Text = percent + "%";
-
-                            var e = Convert.ToInt32( updateTemp.GetAttrState(FunctionAttributeKey.Angle));
-                            bodyView.angleBar.Progress = e;
-                            float angle = e - 90;
-                            bodyView.btnAngle.Text = (e - 0) + "掳";
-                            foreach (var btn in bodyView.buttons)
-                            {
-                                btn.SetRotation(angle);
-                            }
-
-
+                            btn.SetRotation(angle);
                         }
                     }
                     catch { }
diff --git a/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EchartsOption_Histogram.cs b/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EchartsOption_Histogram.cs
new file mode 100644
index 0000000..3bfd3af
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EchartsOption_Histogram.cs
@@ -0,0 +1,144 @@
+锘縰sing System;
+using System.Collections.Generic;
+
+namespace HDL_ON.UI
+{
+    public class EchartsOption_Histogram
+    {
+        /// <summary>
+        /// x杞存暟鎹�
+        /// </summary>
+        private string XvalueText = "";
+
+        /// <summary>
+        /// Y杞存暟鎹�
+        /// </summary>
+        private string YvalueText = "";
+        /// <summary>
+        /// x杞存爣棰�
+        /// </summary>
+        public string xTitle = "";
+        /// <summary>
+        /// y杞存爣棰�
+        /// </summary>
+        public string yTitle = "";
+
+        public EchartsOption_Histogram()
+        {
+
+        }
+
+
+        /// <summary>
+        /// 缁勮Option鏁版嵁
+        /// </summary>
+        /// <returns></returns>
+        public string InitOption()
+        {
+            //缁勮Value
+            var newstring = optionString.Replace("{xData}", XvalueText);
+            newstring = newstring.Replace("{yData}", YvalueText);
+            newstring = newstring.Replace("{xName}", xTitle);
+            newstring = newstring.Replace("{yName}", yTitle);
+            newstring = newstring.Replace(",,", ",");
+            return newstring;
+        }
+
+        /// <summary>
+        /// 缁勮x杞存枃鏈�
+        /// </summary>
+        /// <param name="xData"></param>
+        public void InitXdataText(List<string> xData)
+        {
+            XvalueText = "";
+            foreach (var data in xData)
+            {
+                XvalueText += "'" + data + "',";
+            }
+        }
+
+        /// <summary>
+        /// 缁勮y杞存枃鏈�
+        /// </summary>
+        /// <param name="yData"></param>
+        public string InitYdataText(List<EnvironmentalSensorHistor> yData)
+        {
+            YvalueText = "";
+            foreach (var data in yData)
+            {
+                YvalueText += "'" + data.fieldValue + "',";
+            }
+
+            return YvalueText;
+        }
+
+
+        public string optionString = @"{
+                              grid: {
+                                    top: '10%',
+                                    left: '10%',
+                                    right: '10%',
+                                    bottom: '10%',
+                                    },
+                              xAxis: {
+                                data: [{xData}],
+                                axisTick: {
+                                  show: false
+                                },
+                                axisLine: {
+                                  show: false
+                                },
+                                name:'{xName}',
+                                nameTextStyle:{
+                                  color:'#7C8590',
+                                  fontSize:24
+                                },
+                                axisLabel: {
+                                  color: '#7C8590',
+                                  fontSize:20
+                                }
+                              },
+                              yAxis: {
+                                name:'{yName}',
+                                nameGap:35,
+                                nameTextStyle:{
+                                  color:'#030D1C',
+                                  fontSize:24
+                                },
+                                axisLine: {
+                                  show: false
+                                },
+                                axisTick: {
+                                  show: false
+                                },
+                                axisLabel: {
+                                  color: '#7C8590',
+                                  fontSize:20
+                                }
+                              },
+                              dataZoom: [
+                                {
+                                  type: 'inside'
+                                }
+                              ],
+                              series: [
+                                {
+                                  type: 'bar',
+                                  showBackground: false,
+                                  itemStyle: {
+                                    color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+                                      { offset: 0, color: '#6AB7F9' },
+                                      { offset: 0.5, color: '#5AA6FF' },
+                                      { offset: 1, color: '#6B97F9' }
+                                    ])
+                                  },
+                                  data: [{yData}]
+                                }
+                              ]
+                            }";
+
+
+    }
+
+}
+

--
Gitblit v1.8.0