From 8e940d7f0c873cfedf7f6d8c885be98b96f1d046 Mon Sep 17 00:00:00 2001
From: wxr <wxr@hdlchina.com.cn>
Date: 星期二, 10 九月 2024 15:43:41 +0800
Subject: [PATCH] 金茂光伏,金茂热水器

---
 HDL_ON/UI/UI2/FuntionControlView/Acst/InverterJinmaoPage.cs |  632 ++++++++++++++++++++++++++++++++-------------------------
 1 files changed, 353 insertions(+), 279 deletions(-)

diff --git a/HDL_ON/UI/UI2/FuntionControlView/Acst/InverterJinmaoPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Acst/InverterJinmaoPage.cs
index 5345a30..b5397a1 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Acst/InverterJinmaoPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Acst/InverterJinmaoPage.cs
@@ -10,7 +10,7 @@
 {
     public class InverterJinmaoPage : FrameLayout
     {
-        FrameLayout bodyView;
+        static InverterJinmaoPage bodyView;
         Function function;
         /// <summary>
         /// 浠婃棩鍙戠數閲忔暟鎹寜閽�
@@ -39,7 +39,7 @@
         /// <summary>
         /// 鍏変紡杩愯鐘舵�佸浘鏍囨寜閽�
         /// </summary>
-        Button pvRunStatus_IconButtonp;
+        Button pvRunStatus_IconButton;
         /// <summary>
         /// 鍏変紡杩愯鐘舵�佹枃鏈寜閽�
         /// </summary>
@@ -63,7 +63,7 @@
         /// <summary>
         /// 鍏変紡鐘舵�佷粖鏃ョ敤鐢甸噺鏁版嵁鎸夐挳
         /// </summary>
-        Button loadElec_TodayTextButton;
+        Button powerUsage_TodayValuesButton;
         /// <summary>
         /// 鍏変紡鐘舵�佹湰鏈堢敤鐢甸噺鏁版嵁鎸夐挳
         /// </summary>
@@ -203,7 +203,7 @@
 
 #if __IOS__
             pvGenerate_TodayValuesButton.TextAlignment = TextAlignment.TopLeft;
-            pvGenerate_TodayValuesButton.Width = pvGenerate_TodayValuesButton.GetTextWidth() + Application.GetRealWidth(6);
+            pvGenerate_TodayValuesButton.Width = pvGenerate_TodayValuesButton.GetTextWidth() + Application.GetRealWidth(8);
 #else
             pvGenerate_TodayValuesButton.TextAlignment = TextAlignment.BottomLeft;
             pvGenerate_TodayValuesButton.Y = Application.GetRealWidth(37);
@@ -213,12 +213,12 @@
             {
                 Y = Application.GetRealWidth(43),
                 Height = Application.GetRealWidth(17),
-                Text = "kw",
+                Text = "kwh",
                 TextColor = CSS_Color.MainBackgroundColor,
                 TextSize = 12,
                 TextAlignment = TextAlignment.CenterLeft,
             };
-            pvGenerate_todayUintButton.X = pvGenerate_TodayValuesButton.Right;
+            pvGenerate_todayUintButton.X = pvGenerate_TodayValuesButton.Right - Application.GetRealWidth(2);
             electricityGenerationView.AddChidren(pvGenerate_todayUintButton);
 
             pvGenerate_TotalValuesButton = new Button()
@@ -276,7 +276,7 @@
             {
                 Y = Application.GetRealWidth(43),
                 Height = Application.GetRealWidth(17),
-                Text = "kw",
+                Text = "kwh",
                 TextColor = CSS_Color.MainBackgroundColor,
                 TextSize = 12,
                 TextAlignment = TextAlignment.CenterRight,
@@ -377,7 +377,7 @@
             };
             pvEleGenerationInfoView.AddChidren(pvRunStatusInfoView);
 
-            pvRunStatus_IconButtonp = new Button()
+            pvRunStatus_IconButton = new Button()
             {
                 X = Application.GetRealWidth(8 + 14),
                 Gravity = Gravity.CenterVertical,
@@ -385,7 +385,7 @@
                 Height = Application.GetRealWidth(12),
                 UnSelectedImagePath = "FunctionIcon/Acst/Inverter/PvIconRun.png",
             };
-            pvRunStatusInfoView.AddChidren(pvRunStatus_IconButtonp);
+            pvRunStatusInfoView.AddChidren(pvRunStatus_IconButton);
 
             pvRunStatus_TextButton = new Button()
             {
@@ -417,20 +417,21 @@
                 try
                 {
                     int index = 1;
+                    float pvPower = 0.00f;
                     while (index < 361)
                     {
-                        if (function.GetAttrState(InverterJinmao_AttrEnum.pv_power.ToString()) == "0")
+                        float.TryParse(function.GetAttrState(InverterJinmao_AttrEnum.pv_power.ToString()), out pvPower);
+                        if (pvPower > 0.00f)
                         {
-                            continue;
-                        }
-                        Application.RunOnMainThread(() =>
-                        {
-                            powerGenerationBg.SetRotation(1f * index++);
-                        });
-                        System.Threading.Thread.Sleep(50);
-                        if (index == 361)
-                        {
-                            index = 1;
+                            Application.RunOnMainThread(() =>
+                            {
+                                powerGenerationBg.SetRotation(1f * index++);
+                            });
+                            System.Threading.Thread.Sleep(50);
+                            if (index == 361)
+                            {
+                                index = 1;
+                            }
                         }
                     }
                 }
@@ -465,7 +466,7 @@
                 Y = Application.GetRealWidth(78),
                 //Width = Application.GetRealWidth(100),
                 Height = Application.GetRealWidth(25),
-                Text = "瀹炴椂鍙戠數鍔熺巼 (kwh)",
+                Text = "瀹炴椂鍙戠數鍔熺巼 (kw)",
                 TextAlignment = TextAlignment.Center,
                 TextColor = CSS_Color.TextualColor,
                 TextSize = 12,
@@ -494,7 +495,7 @@
                 Y = Application.GetRealWidth(220),
                 Width = Application.GetRealWidth(100),
                 Height = Application.GetRealWidth(17),
-                Text = "浠婃棩鍙戠數閲� (kw)",
+                Text = "浠婃棩鍙戠數閲� (kwh)",
                 TextAlignment = TextAlignment.Center,
                 TextColor = CSS_Color.TextualColor,
                 TextSize = 12,
@@ -523,7 +524,7 @@
                 Y = Application.GetRealWidth(220),
                 Width = Application.GetRealWidth(100),
                 Height = Application.GetRealWidth(17),
-                Text = "鏈湀鍙戠數閲� (kw)",
+                Text = "鏈湀鍙戠數閲� (kwh)",
                 TextAlignment = TextAlignment.Center,
                 TextColor = CSS_Color.TextualColor,
                 TextSize = 12,
@@ -552,7 +553,7 @@
                 Y = Application.GetRealWidth(220),
                 Width = Application.GetRealWidth(100),
                 Height = Application.GetRealWidth(17),
-                Text = "鏈勾鍙戠數閲� (kw)",
+                Text = "鏈勾鍙戠數閲� (kwh)",
                 TextAlignment = TextAlignment.Center,
                 TextColor = CSS_Color.TextualColor,
                 TextSize = 12,
@@ -563,7 +564,7 @@
                 try
                 {
                     var revertObj = new HttpServerRequest().GetSensorHistory("custom_year",
-                        function.deviceId, InverterJinmao_AttrEnum.load_electricity.ToString(), DateTime.Now.Year.ToString());
+                        function.deviceId, InverterJinmao_AttrEnum.pv_electricity.ToString(), DateTime.Now.Year.ToString());
                     if (revertObj != null)
                     {
                         if (revertObj.Code == StateCode.SUCCESS)
@@ -643,20 +644,21 @@
                 try
                 {
                     int index = 1;
+                    float loadPower = 0.00f;
                     while (index < 361)
                     {
-                        if (function.GetAttrState(InverterJinmao_AttrEnum.load_active_power.ToString()) == "0")
+                        float.TryParse(function.GetAttrState(InverterJinmao_AttrEnum.load_active_power.ToString()), out loadPower);
+                        if (loadPower > 0.00f)
                         {
-                            continue;
-                        }
-                        Application.RunOnMainThread(() =>
-                        {
-                            powerUsageBg.SetRotation(1f * index++);
-                        });
-                        System.Threading.Thread.Sleep(50);
-                        if (index == 361)
-                        {
-                            index = 1;
+                            Application.RunOnMainThread(() =>
+                            {
+                                powerUsageBg.SetRotation(1f * index++);
+                            });
+                            System.Threading.Thread.Sleep(50);
+                            if (index == 361)
+                            {
+                                index = 1;
+                            }
                         }
                     }
                 }
@@ -687,7 +689,7 @@
                 Y = Application.GetRealWidth(78),
                 //Width = Application.GetRealWidth(100),
                 Height = Application.GetRealWidth(25),
-                Text = "瀹炴椂鐢ㄧ數鍔熺巼 (kwh)",
+                Text = "瀹炴椂鐢ㄧ數鍔熺巼 (kw)",
                 TextAlignment = TextAlignment.Center,
                 TextColor = CSS_Color.TextualColor,
                 TextSize = 12,
@@ -695,7 +697,7 @@
             powerUsageView.AddChidren(powerUsage_TextButton);
 
 
-            var powerUsage_TodayValuesButton = new Button()
+            powerUsage_TodayValuesButton = new Button()
             {
                 X = Application.GetRealWidth(16),
                 Y = Application.GetRealWidth(191),
@@ -709,13 +711,13 @@
             };
             electricityUsageStatusView.AddChidren(powerUsage_TodayValuesButton);
 
-            loadElec_TodayTextButton = new Button()
+            var loadElec_TodayTextButton = new Button()
             {
                 X = Application.GetRealWidth(16),
                 Y = Application.GetRealWidth(220),
                 Width = Application.GetRealWidth(100),
                 Height = Application.GetRealWidth(17),
-                Text = "浠婃棩鐢ㄧ數閲� (kw)",
+                Text = "浠婃棩鐢ㄧ數閲� (kwh)",
                 TextAlignment = TextAlignment.Center,
                 TextColor = CSS_Color.TextualColor,
                 TextSize = 12,
@@ -742,7 +744,7 @@
                 Y = Application.GetRealWidth(220),
                 Width = Application.GetRealWidth(100),
                 Height = Application.GetRealWidth(17),
-                Text = "鏈湀鐢ㄧ數閲� (kw)",
+                Text = "鏈湀鐢ㄧ數閲� (kwh)",
                 TextAlignment = TextAlignment.Center,
                 TextColor = CSS_Color.TextualColor,
                 TextSize = 12,
@@ -770,189 +772,236 @@
                 Y = Application.GetRealWidth(220),
                 Width = Application.GetRealWidth(100),
                 Height = Application.GetRealWidth(17),
-                Text = "鏈勾鐢ㄧ數閲� (kw)",
+                Text = "鏈勾鐢ㄧ數閲� (kwh)",
                 TextAlignment = TextAlignment.Center,
                 TextColor = CSS_Color.TextualColor,
                 TextSize = 12,
             };
             electricityUsageStatusView.AddChidren(powerUsage_YearTextButton);
+
+
+            new System.Threading.Thread(() =>
+            {
+                try
+                {
+                    var revertObj = new HttpServerRequest().GetSensorHistory("custom_year",
+                        function.deviceId, InverterJinmao_AttrEnum.load_electricity.ToString(), DateTime.Now.Year.ToString());
+                    if (revertObj != null)
+                    {
+                        if (revertObj.Code == StateCode.SUCCESS)
+                        {
+                            var revertData = Newtonsoft.Json.JsonConvert.DeserializeObject<List<EnvironmentalSensorHistor>>(revertObj.Data.ToString());
+                            double totalValues = 0.0;
+                            double values = 0.0;
+                            foreach (var data in revertData)
+                            {
+                                double.TryParse(data.fieldValue, out values);
+                                totalValues += values;
+                            }
+                            Application.RunOnMainThread(() =>
+                            {
+                                powerUsage_YearValuesButton.Text = totalValues.ToString();
+                                while (true)
+                                {
+                                    if (powerUsage_YearValuesButton.Width < powerUsage_YearValuesButton.GetTextWidth())
+                                    {
+                                        powerUsage_YearValuesButton.TextSize--;
+                                    }
+                                    else
+                                    {
+                                        break;
+                                    }
+                                }
+                            });
+                        }
+                    }
+                }
+                catch (Exception ex)
+                {
+                    MainPage.Log("Error", "璇诲彇閲戣寕鏈勾鍙戠數閲忔暟鎹紓甯革細" + ex.Message);
+                }
+            })
+            { IsBackground = true }.Start();
+
             #endregion
 
 
             #endregion
 
-            contentView.AddChidren(new Button()
+            if (function.attributes.Find((obj) => obj.key == InverterJinmao_AttrEnum.ess_status.ToString()) != null)
             {
-                Height = Application.GetRealWidth(8)
-            });
+                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 鍌ㄨ兘杩愯鐘舵�� 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);
+                #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);
 
-            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);
+                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);
 
-            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);
+                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);
 
-            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);
+                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);
 
-            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,
-            };
-            esRunStatus_BatteryValuesButton.Width = esRunStatus_BatteryValuesButton.GetTextWidth() + Application.GetRealWidth(8);
-            esRunStatus_BatteryValuesButton.X = Application.GetRealWidth(343 - 12) - esRunStatus_BatteryValuesButton.Width;
-            esStatusView.AddChidren(esRunStatus_BatteryValuesButton);
+                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,
+                };
+                esRunStatus_BatteryValuesButton.Width = esRunStatus_BatteryValuesButton.GetTextWidth() + Application.GetRealWidth(8);
+                esRunStatus_BatteryValuesButton.X = Application.GetRealWidth(343 - 12) - esRunStatus_BatteryValuesButton.Width;
+                esStatusView.AddChidren(esRunStatus_BatteryValuesButton);
 
-            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",
-                SelectedImagePath = "FunctionIcon/Acst/Inverter/BatteryIconCharg100.png",
-                IsSelected = esRunStatus_BatteryValuesButton.Text == "100%"
-            };
-            esStatusView.AddChidren(esRunStatus_BatteryIconButton);
+                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",
+                    SelectedImagePath = "FunctionIcon/Acst/Inverter/BatteryIconCharg100.png",
+                    IsSelected = esRunStatus_BatteryValuesButton.Text == "100%"
+                };
+                esStatusView.AddChidren(esRunStatus_BatteryIconButton);
 
-            var esRunStatus_ValuesInfoView = new FrameLayout()
-            {
-                Width = Application.GetRealWidth(282),
-                Height = Application.GetRealWidth(153),
-                Gravity = Gravity.CenterHorizontal,
-                Y = Application.GetRealWidth(40),
-                BackgroundImagePath = "FunctionIcon/Acst/Inverter/EnergyStorageStatusBg.png",
-            };
-            esStatusView.AddChidren(esRunStatus_ValuesInfoView);
+                var esRunStatus_ValuesInfoView = new FrameLayout()
+                {
+                    Width = Application.GetRealWidth(282),
+                    Height = Application.GetRealWidth(153),
+                    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(15),
-                Width = Application.GetRealWidth(128),
-                Height = Application.GetRealWidth(128),
-            };
-            esRunStatus_ValuesInfoView.AddChidren(esRunStatus_ChargeValuesView);
+                #region 瀹炴椂鍏呯數鍔熺巼
+                var esRunStatus_ChargeValuesView = new FrameLayout()
+                {
+                    X = Application.GetRealWidth(15),
+                    Width = Application.GetRealWidth(128),
+                    Height = Application.GetRealWidth(128),
+                };
+                esRunStatus_ValuesInfoView.AddChidren(esRunStatus_ChargeValuesView);
 
-            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);
+                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
+                var esRunStatus_ChargeTextButton = new Button()
+                {
+                    X = Application.GetRealWidth(1),
+                    Y = Application.GetRealWidth(76),
+                    Height = Application.GetRealWidth(17),
+                    TextAlignment = TextAlignment.Center,
+                    Text = "瀹炴椂鍏呯數鍔熺巼(kw)",
+                    TextColor = CSS_Color.TextualColor,
+                    TextSize = 12,
+                };
+                esRunStatus_ChargeValuesView.AddChidren(esRunStatus_ChargeTextButton);
+                #endregion
 
-            #region 瀹炴椂鐢ㄧ數鍔熺巼
-            var esRunStatus_DischargeValuesView = new FrameLayout()
-            {
-                X = Application.GetRealWidth(132+13),
-                Width = Application.GetRealWidth(128),
-                Height = Application.GetRealWidth(128),
-            };
-            esRunStatus_ValuesInfoView.AddChidren(esRunStatus_DischargeValuesView);
+                #region 瀹炴椂鐢ㄧ數鍔熺巼
+                var esRunStatus_DischargeValuesView = new FrameLayout()
+                {
+                    X = Application.GetRealWidth(132 + 13),
+                    Width = Application.GetRealWidth(128),
+                    Height = Application.GetRealWidth(128),
+                };
+                esRunStatus_ValuesInfoView.AddChidren(esRunStatus_DischargeValuesView);
 
-            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);
+                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
+                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
 
-            #endregion
-
-            #endregion
+            }
 
             contentView.AddChidren(new Button()
             {
@@ -1026,6 +1075,9 @@
                 TextColor = CSS_Color.FirstLevelTitleColor,
                 TextAlignment = TextAlignment.BottomLeft,
             };
+#if __IOS__
+            socialContribution_Info1_UintButton.Y = Application.GetRealWidth(66);
+#endif
             socialContribution_InfoView_1.AddChidren(socialContribution_Info1_UintButton);
 
             var socialContribution_Info1_TipButton = new Button()
@@ -1092,6 +1144,9 @@
                 TextColor = CSS_Color.FirstLevelTitleColor,
                 TextAlignment = TextAlignment.BottomLeft,
             };
+#if __IOS__
+            socialContribution_Info2_UintButton.Y = Application.GetRealWidth(66);
+#endif
             socialContribution_InfoView_2.AddChidren(socialContribution_Info2_UintButton);
 
             var socialContribution_Info2_TipButton = new Button()
@@ -1158,6 +1213,9 @@
                 TextColor = CSS_Color.FirstLevelTitleColor,
                 TextAlignment = TextAlignment.BottomLeft,
             };
+            #if __IOS__
+            socialContribution_Info3_UintButton.Y = Application.GetRealWidth(66);
+            #endif
             socialContribution_InfoView_3.AddChidren(socialContribution_Info3_UintButton);
 
             var socialContribution_Info3_TipButton = new Button()
@@ -1184,7 +1242,7 @@
         /// 鏇存柊鐣岄潰鏁版嵁
         /// </summary>
         /// <param name="temp"></param>
-        public void UpdateStatus(Function temp)
+        public static void UpdateStatus(Function temp)
         {
             if (bodyView == null)
             {
@@ -1195,38 +1253,38 @@
                 try
                 {
                     /// 鏇存柊浠婃棩鍙戠數閲�
-                    upatePvGenerateTodayValues();
+                    bodyView.upatePvGenerateTodayValues();
                     /// 鏇存柊绱鍙戠數閲�
-                    upatePvGenerateTotalValues();
+                    bodyView.upatePvGenerateTotalValues();
                     /// 鏇存柊浠婃棩鐢ㄧ數閲�
-                    upatePvLoadTodayValues();
+                    bodyView.upatePvLoadTodayValues();
                     /// 鏇存柊绱鐢ㄧ數閲�
-                    upatePvLoadTotalValues();
+                    bodyView.upatePvLoadTotalValues();
                     /// 鏇存柊鍏変紡杩愯鐘舵��
-                    upatePvRunStatus();
+                    bodyView.upatePvRunStatus();
                     /// 鏇存柊鍏変紡鍙戠數鍔熺巼
-                    updatePvPower();
+                    bodyView.updatePvPower();
                     /// 鏇存柊鍏変紡鏈湀鍙戠數閲�
-                    upatePvGenerateMonthValues();
+                    bodyView.upatePvGenerateMonthValues();
                     /// 鏇存柊鍏変紡鐢ㄧ數鍔熺巼
-                    updateLoadElec();
+                    bodyView.updateLoadElec();
                     ///鏇存柊鍏変紡鐘舵�佹湰鏈堢敤鐢甸噺
-                    updateLoadElecMonthValues();
+                    bodyView.updateLoadElecMonthValues();
                     //鏇存柊鍌ㄨ兘杩愯鐘舵��
-                    updateEsRunStates();
+                    bodyView.updateEsRunStates();
                     //鏇存柊鍌ㄨ兘鐢垫睜鐧惧垎姣�
-                    updateEsBatterySoc();
+                    bodyView.updateEsBatterySoc();
                     //鏇存柊鍌ㄨ兘瀹炴椂鍏呯數鐘舵��
-                    updateEsCharge();
+                    bodyView.updateEsCharge();
                     //鏇存柊鍌ㄨ兘瀹炴椂鏀剧數鐘舵��
-                    updateEsDischarge();
-                    updateSocialContribution1();
-                    updateSocialContribution2();
-                    updateSocialContribution3();
+                    bodyView.updateEsDischarge();
+                    bodyView.updateSocialContribution1();
+                    bodyView.updateSocialContribution2();
+                    bodyView.updateSocialContribution3();
                 }
                 catch (Exception ex)
                 {
-                    MainPage.Log("Error", $"閲戣寕鍏変紡鏇存柊寮傚父:{ex.Message}");
+                    MainPage.Log("Error", $"閲戣寕鍏変紡鏇存柊寮傚父:{ex.StackTrace}");
                 }
             });
         }
@@ -1251,14 +1309,14 @@
         /// </summary>
         private void upatePvGenerateTotalValues()
         {
-            pvGenerate_TodayValuesButton.Text = "绱鍙戠數閲忥細" + function.GetAttrState(InverterJinmao_AttrEnum.pv_electricity.ToString());
+            pvGenerate_TotalValuesButton.Text = "绱鍙戠數閲�:" + function.GetAttrState(InverterJinmao_AttrEnum.pv_electricity.ToString());
         }
         /// <summary>
         /// 鏇存柊浠婃棩鐢ㄧ數閲�
         /// </summary>
         private void upatePvLoadTodayValues()
         {
-            pvLoad_TodayValuesButton.Text = loadElec_TodayTextButton.Text = function.GetAttrState(InverterJinmao_AttrEnum.load_electricity_today.ToString());
+            pvLoad_TodayValuesButton.Text = powerUsage_TodayValuesButton.Text = function.GetAttrState(InverterJinmao_AttrEnum.load_electricity_today.ToString());
         }
         /// <summary>
         /// 鏇存柊鏈湀鐢ㄧ數閲�
@@ -1284,19 +1342,19 @@
             {
                 case "run":
                     pvRunStatusInfoView.BackgroundColor = 0x154484F4;
-                    pvRunStatus_IconButtonp.UnSelectedImagePath = "FunctionIcon/Acst/Inverter/PvIconRun.png";
+                    pvRunStatus_IconButton.UnSelectedImagePath = "FunctionIcon/Acst/Inverter/PvIconRun.png";
                     pvRunStatus_TextButton.Text = "杩愯";
                     pvRunStatus_TextButton.TextColor = 0xFF4484F4;
                     break;
                 case "fault":
                     pvRunStatusInfoView.BackgroundColor = 0x15FF4747;
-                    pvRunStatus_IconButtonp.UnSelectedImagePath = "FunctionIcon/Acst/Inverter/PvIconFault.png";
+                    pvRunStatus_IconButton.UnSelectedImagePath = "FunctionIcon/Acst/Inverter/PvIconFault.png";
                     pvRunStatus_TextButton.Text = "鏁呴殰";
                     pvRunStatus_TextButton.TextColor = 0xFFFF4747;
                     break;
                 case "standby":
                     pvRunStatusInfoView.BackgroundColor = 0x15798394;
-                    pvRunStatus_IconButtonp.UnSelectedImagePath = "FunctionIcon/Acst/Inverter/PvIconStandby.png";
+                    pvRunStatus_IconButton.UnSelectedImagePath = "FunctionIcon/Acst/Inverter/PvIconStandby.png";
                     pvRunStatus_TextButton.Text = "寰呮満";
                     pvRunStatus_TextButton.TextColor = 0xFF798394;
                     break;
@@ -1322,40 +1380,43 @@
         /// </summary>
         private void updateEsRunStates()
         {
-            switch (function.GetAttrState(InverterJinmao_AttrEnum.ess_status.ToString()))
+            if (function.attributes.Find((obj) => obj.key == InverterJinmao_AttrEnum.ess_status.ToString()) != null)
             {
-                case "charge":
-                    esStatus_InfoView.BackgroundColor = 0x1500C22D;
-                    esRunStatus_BatteryValuesButton.TextColor = 0xFF00C22D;
-                    esRunStatus_Info_IconButton.UnSelectedImagePath = "FunctionIcon/Acst/Inverter/EsIconCharg.png";
-                    esRunStatus_Info_TextButton.Text = "鍏呯數";
-                    esRunStatus_BatteryIconButton.UnSelectedImagePath = "FunctionIcon/Acst/Inverter/BatteryIconCharg.png";
-                    esRunStatus_BatteryIconButton.SelectedImagePath = "FunctionIcon/Acst/Inverter/BatteryIconCharg100.png";
-                    break;
-                case "discharge":
-                    esStatus_InfoView.BackgroundColor = 0x15FC9C04;
-                    esRunStatus_BatteryValuesButton.TextColor = 0xFFFC9C04;
-                    esRunStatus_Info_IconButton.UnSelectedImagePath = "FunctionIcon/Acst/Inverter/EsIconDischarge.png";
-                    esRunStatus_Info_TextButton.Text = "鏀剧數";
-                    esRunStatus_BatteryIconButton.UnSelectedImagePath = "FunctionIcon/Acst/Inverter/BatteryIconDischarg.png";
-                    esRunStatus_BatteryIconButton.SelectedImagePath = "FunctionIcon/Acst/Inverter/BatteryIconDischarg100.png";
-                    break;
-                case "shutdown":
-                    esStatus_InfoView.BackgroundColor = 0x15798394;
-                    esRunStatus_BatteryValuesButton.TextColor = 0xFF798394;
-                    esRunStatus_Info_IconButton.UnSelectedImagePath = "FunctionIcon/Acst/Inverter/EsIconShutdown.png";
-                    esRunStatus_Info_TextButton.Text = "鍋滄満";
-                    esRunStatus_BatteryIconButton.UnSelectedImagePath = "FunctionIcon/Acst/Inverter/BatteryIconShutdown.png";
-                    esRunStatus_BatteryIconButton.SelectedImagePath = "FunctionIcon/Acst/Inverter/BatteryIconShutdown100.png";
-                    break;
-                case "fault":
-                    esStatus_InfoView.BackgroundColor = 0x15FF4747;
-                    esRunStatus_BatteryValuesButton.TextColor = 0xFFFF4747;
-                    esRunStatus_Info_IconButton.UnSelectedImagePath = "FunctionIcon/Acst/Inverter/EsIconFault.png";
-                    esRunStatus_Info_TextButton.Text = "鏁呴殰";
-                    esRunStatus_BatteryIconButton.UnSelectedImagePath = "FunctionIcon/Acst/Inverter/BatteryIconFault.png";
-                    esRunStatus_BatteryIconButton.SelectedImagePath = "FunctionIcon/Acst/Inverter/BatteryIconFault100.png";
-                    break;
+                switch (function.GetAttrState(InverterJinmao_AttrEnum.ess_status.ToString()))
+                {
+                    case "charge":
+                        esStatus_InfoView.BackgroundColor = 0x1500C22D;
+                        esRunStatus_Info_TextButton.TextColor = esRunStatus_BatteryValuesButton.TextColor = 0xFF00C22D;
+                        esRunStatus_Info_IconButton.UnSelectedImagePath = "FunctionIcon/Acst/Inverter/EsIconCharg.png";
+                        esRunStatus_Info_TextButton.Text = "鍏呯數";
+                        esRunStatus_BatteryIconButton.UnSelectedImagePath = "FunctionIcon/Acst/Inverter/BatteryIconCharg.png";
+                        esRunStatus_BatteryIconButton.SelectedImagePath = "FunctionIcon/Acst/Inverter/BatteryIconCharg100.png";
+                        break;
+                    case "discharge":
+                        esStatus_InfoView.BackgroundColor = 0x15FC9C04;
+                        esRunStatus_Info_TextButton.TextColor = esRunStatus_BatteryValuesButton.TextColor = 0xFFFC9C04;
+                        esRunStatus_Info_IconButton.UnSelectedImagePath = "FunctionIcon/Acst/Inverter/EsIconDischarge.png";
+                        esRunStatus_Info_TextButton.Text = "鏀剧數";
+                        esRunStatus_BatteryIconButton.UnSelectedImagePath = "FunctionIcon/Acst/Inverter/BatteryIconDischarg.png";
+                        esRunStatus_BatteryIconButton.SelectedImagePath = "FunctionIcon/Acst/Inverter/BatteryIconDischarg100.png";
+                        break;
+                    case "shutdown":
+                        esStatus_InfoView.BackgroundColor = 0x15798394;
+                        esRunStatus_Info_TextButton.TextColor = esRunStatus_BatteryValuesButton.TextColor = 0xFF798394;
+                        esRunStatus_Info_IconButton.UnSelectedImagePath = "FunctionIcon/Acst/Inverter/EsIconShutdown.png";
+                        esRunStatus_Info_TextButton.Text = "鍋滄満";
+                        esRunStatus_BatteryIconButton.UnSelectedImagePath = "FunctionIcon/Acst/Inverter/BatteryIconShutdown.png";
+                        esRunStatus_BatteryIconButton.SelectedImagePath = "FunctionIcon/Acst/Inverter/BatteryIconShutdown100.png";
+                        break;
+                    case "fault":
+                        esStatus_InfoView.BackgroundColor = 0x15FF4747;
+                        esRunStatus_Info_TextButton.TextColor = esRunStatus_BatteryValuesButton.TextColor = 0xFFFF4747;
+                        esRunStatus_Info_IconButton.UnSelectedImagePath = "FunctionIcon/Acst/Inverter/EsIconFault.png";
+                        esRunStatus_Info_TextButton.Text = "鏁呴殰";
+                        esRunStatus_BatteryIconButton.UnSelectedImagePath = "FunctionIcon/Acst/Inverter/BatteryIconFault.png";
+                        esRunStatus_BatteryIconButton.SelectedImagePath = "FunctionIcon/Acst/Inverter/BatteryIconFault100.png";
+                        break;
+                }
             }
         }
         /// <summary>
@@ -1363,10 +1424,13 @@
         /// </summary>
         private void updateEsBatterySoc()
         {
-            esRunStatus_BatteryValuesButton.Text = function.GetAttrState(InverterJinmao_AttrEnum.battery_soc.ToString()) + "%";
-            if(esRunStatus_BatteryIconButton.Text == "100%")
+            if (function.attributes.Find((obj) => obj.key == InverterJinmao_AttrEnum.ess_status.ToString()) != null)
             {
-                esRunStatus_BatteryIconButton.IsSelected = true;
+                esRunStatus_BatteryValuesButton.Text = function.GetAttrState(InverterJinmao_AttrEnum.battery_soc.ToString()) + "%";
+                if (esRunStatus_BatteryIconButton.Text == "100%")
+                {
+                    esRunStatus_BatteryIconButton.IsSelected = true;
+                }
             }
         }
         /// <summary>
@@ -1374,51 +1438,59 @@
         /// </summary>
         private void updateEsCharge()
         {
-            esRunStatus_ChargeValuesButton.Text = function.GetAttrState(InverterJinmao_AttrEnum.ess_charge_power.ToString());
+            if (function.attributes.Find((obj) => obj.key == InverterJinmao_AttrEnum.ess_status.ToString()) != null)
+            {
+                esRunStatus_ChargeValuesButton.Text = function.GetAttrState(InverterJinmao_AttrEnum.ess_charge_power.ToString());
+            }
         }
         /// <summary>
         /// 鏇存柊鍌ㄨ兘瀹炴椂鏀剧數鐘舵��
         /// </summary>
         private void updateEsDischarge()
         {
-            esRunStatus_DischargeValuesButton.Text = function.GetAttrState(InverterJinmao_AttrEnum.ess_discharg_power.ToString());
+            if (function.attributes.Find((obj) => obj.key == InverterJinmao_AttrEnum.ess_status.ToString()) != null)
+            {
+                esRunStatus_DischargeValuesButton.Text = function.GetAttrState(InverterJinmao_AttrEnum.ess_discharg_power.ToString());
+            }
         }
-
         /// <summary>
         /// 鏇存柊绀句細璐$尞1鏁版嵁UI
         /// </summary>
         private void updateSocialContribution1()
         {
             socialContribution_Info1_ValuesButton.Text = function.GetAttrState(InverterJinmao_AttrEnum.coal.ToString());
-#if __IOS__
-            socialContribution_Info1_ValuesButton.Width = socialContribution_Info1_ValuesButton.GetTextWidth() + Application.GetRealWidth(8);
-#else
             socialContribution_Info1_ValuesButton.Width = socialContribution_Info1_ValuesButton.GetTextWidth();
-#endif
             if (socialContribution_Info1_ValuesButton.Width > Application.GetRealWidth(61))
             {
-                socialContribution_Info1_ValuesButton.TextSize = socialContribution_Info1_ValuesButton.TextSize - 4;
+                socialContribution_Info1_ValuesButton.TextSize = 14;
+                socialContribution_Info1_ValuesButton.Width = socialContribution_Info1_ValuesButton.GetTextWidth();
+                socialContribution_Info1_UintButton.Height = Application.GetRealWidth(25);
             }
-
+#if __IOS__
+            socialContribution_Info1_ValuesButton.Width += Application.GetRealWidth(6);
             socialContribution_Info1_UintButton.X = socialContribution_Info1_ValuesButton.Right - Application.GetRealWidth(4);
+#else
+            socialContribution_Info1_UintButton.X = socialContribution_Info1_ValuesButton.Right +Application.GetRealWidth(2);
+#endif
         }
         /// <summary>
         /// 鏇存柊绀句細璐�2鐚暟鎹甎I
         /// </summary>
         private void updateSocialContribution2()
         {
-            socialContribution_Info2_ValuesButton.Text = function.GetAttrState(InverterJinmao_AttrEnum.co2.ToString());
-#if __IOS__
-            socialContribution_Info2_ValuesButton.Width = socialContribution_Info2_ValuesButton.GetTextWidth() + Application.GetRealWidth(8);
-#else
+            socialContribution_Info2_ValuesButton.Text = function.GetAttrState(WaterHeaterJinmao_AttrEnum.co2.ToString());
             socialContribution_Info2_ValuesButton.Width = socialContribution_Info2_ValuesButton.GetTextWidth();
-#endif
-            if (socialContribution_Info2_UintButton.Width > Application.GetRealWidth(61))
+            if (socialContribution_Info2_ValuesButton.Width > Application.GetRealWidth(61))
             {
-                socialContribution_Info2_UintButton.TextSize = socialContribution_Info2_UintButton.TextSize - 4;
+                socialContribution_Info2_ValuesButton.TextSize = 14;
+                socialContribution_Info2_ValuesButton.Width = socialContribution_Info2_ValuesButton.GetTextWidth();
             }
-
+#if __IOS__
+            socialContribution_Info2_ValuesButton.Width += Application.GetRealWidth(6);
             socialContribution_Info2_UintButton.X = socialContribution_Info2_ValuesButton.Right - Application.GetRealWidth(4);
+#else
+            socialContribution_Info2_UintButton.X = socialContribution_Info2_ValuesButton.Right +Application.GetRealWidth(2);
+#endif
 
         }
         /// <summary>
@@ -1426,18 +1498,20 @@
         /// </summary>
         private void updateSocialContribution3()
         {
-
-            socialContribution_Info3_ValuesButton.Text = function.GetAttrState(InverterJinmao_AttrEnum.trees.ToString());
-#if __IOS__
-            socialContribution_Info3_ValuesButton.Width = socialContribution_Info3_ValuesButton.GetTextWidth() + Application.GetRealWidth(8);
-#else
+            socialContribution_Info3_ValuesButton.Text = function.GetAttrState(WaterHeaterJinmao_AttrEnum.trees.ToString());
             socialContribution_Info3_ValuesButton.Width = socialContribution_Info3_ValuesButton.GetTextWidth();
-#endif
             if (socialContribution_Info3_ValuesButton.Width > Application.GetRealWidth(61))
             {
-                socialContribution_Info3_ValuesButton.TextSize = socialContribution_Info3_ValuesButton.TextSize - 4;
+                socialContribution_Info3_ValuesButton.TextSize = 14;
+                socialContribution_Info3_ValuesButton.Width = socialContribution_Info3_ValuesButton.GetTextWidth();
+                socialContribution_Info3_UintButton.Height = Application.GetRealWidth(25);
             }
+#if __IOS__
+            socialContribution_Info3_ValuesButton.Width += Application.GetRealWidth(6);
             socialContribution_Info3_UintButton.X = socialContribution_Info3_ValuesButton.Right - Application.GetRealWidth(4);
+#else
+            socialContribution_Info3_UintButton.X = socialContribution_Info3_ValuesButton.Right +Application.GetRealWidth(2);
+#endif
         }
     }
 }

--
Gitblit v1.8.0