wxr
2024-09-05 eeb6f0b4bf0a81834325638401d5fa404e53db93
金茂光伏储能,热水器;自动化,空调,地暖步进判断
8个文件已添加
22个文件已修改
1467 ■■■■■ 已修改文件
HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/Inverter/BatteryIconCharg100.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/Inverter/BatteryIconDischarg100.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/Inverter/BatteryIconFault100.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/Inverter/BatteryIconShutdown100.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/HDL-ON_Android.csproj 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Properties/AndroidManifest.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/HDL-ON_iOS.csproj 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Info.plist 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/BatteryIconCharg100.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/BatteryIconDischarg100.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/BatteryIconFault100.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/BatteryIconShutdown100.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Common/HDLCommon.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/DriverLayer/Control.cs 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/DriverLayer/Control_Udp.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/Server/HttpUtil.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Entity/FunctionList.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI1-Login/LoginPage.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/1-HomePage/HomePage.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/TemperatureView.cs 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/TargetDeviceFunList.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Acst/AcstParentPage.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Acst/InverterJinmaoHistroyPage.cs 412 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Acst/InverterJinmaoPage.cs 428 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Acst/WaterHeaterJinmaoPage.cs 203 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Acst/WetarHeaterJinmaoHistoryPage.cs 290 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPage.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SiriIntents/Server/HttpUtil.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SiriIntents/SiriIntents.csproj 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SiriIntentsUI/SiriIntentsUI.csproj 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/Inverter/BatteryIconCharg100.png
HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/Inverter/BatteryIconDischarg100.png
HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/Inverter/BatteryIconFault100.png
HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/Inverter/BatteryIconShutdown100.png
HDL-ON_Android/HDL-ON_Android.csproj
@@ -662,6 +662,10 @@
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Acst\Inverter\EsIconFault.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\FunctionBg\AcstFunctionBg.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\FunctionBg\InverterJinmaoFunctionBg.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Acst\Inverter\BatteryIconCharg100.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Acst\Inverter\BatteryIconDischarg100.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Acst\Inverter\BatteryIconFault100.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Acst\Inverter\BatteryIconShutdown100.png" />
  </ItemGroup>
  <ItemGroup>
    <AndroidResource Include="Resources\values\colors.xml" />
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="202408091">
<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="202409051">
    <uses-sdk android:minSdkVersion="26" android:targetSdkVersion="29" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <!--程序可以读取设备外部存储空间(内置SDcard和外置SDCard)的文件,我的文件等-->
HDL-ON_iOS/HDL-ON_iOS.csproj
@@ -27,7 +27,7 @@
        <MtouchDebug>true</MtouchDebug>
        <CodesignKey>iPhone Developer</CodesignKey>
        <MtouchExtraArgs>-gcc_flags="-dead_strip -ObjC"</MtouchExtraArgs>
        <CodesignProvision>0002-OnPro-240830-1-Dev</CodesignProvision>
        <CodesignProvision>Automatic</CodesignProvision>
        <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
        <MtouchI18n>cjk</MtouchI18n>
        <MtouchSdkVersion>17.5</MtouchSdkVersion>
@@ -61,7 +61,7 @@
        <MtouchEnableSGenConc>false</MtouchEnableSGenConc>
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<CodesignProvision>0002-OnPro-240704-1-Dev</CodesignProvision>
<CodesignProvision>0002-OnPro-240905-1-Dev</CodesignProvision>
<MtouchSdkVersion>17.5</MtouchSdkVersion>
    </PropertyGroup>
    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
@@ -1843,6 +1843,10 @@
      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\WaterHeater\Mode_QuickHeat_On.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\WaterHeater\ModeFree_True.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\FunctionBg\InverterJinmaoFunctionBg.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\Inverter\BatteryIconCharg100.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\Inverter\BatteryIconDischarg100.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\Inverter\BatteryIconFault100.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\Inverter\BatteryIconShutdown100.png" />
    </ItemGroup>
    <ItemGroup>
      <ITunesArtwork Include="iTunesArtwork" />
HDL-ON_iOS/Info.plist
@@ -11,7 +11,7 @@
    <key>CFBundleName</key>
    <string>On Pro</string>
    <key>CFBundleShortVersionString</key>
    <string>2.4.8</string>
    <string>2.5.0</string>
    <key>CFBundleURLTypes</key>
    <array>
        <dict>
@@ -36,7 +36,7 @@
        </dict>
    </array>
    <key>CFBundleVersion</key>
    <string>2.4.8</string>
    <string>2.5.0</string>
    <key>LSApplicationQueriesSchemes</key>
    <array>
        <string>weixinULAPI</string>
HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/BatteryIconCharg100.png
HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/BatteryIconDischarg100.png
HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/BatteryIconFault100.png
HDL-ON_iOS/Resources/Phone/FunctionIcon/Acst/Inverter/BatteryIconShutdown100.png
HDL_ON/Common/HDLCommon.cs
@@ -537,6 +537,7 @@
            switch (UserInfo.Current.AccountString)
            {
                case "464027401@qq.com":
                case "649362315@qq.com":
                case "13580507523":
                case "15626203746":
                case "18316672920":
HDL_ON/DAL/DriverLayer/Control.cs
@@ -111,7 +111,7 @@
                    {
                        //修改主页连接状态
                        HomePage.LoadEvent_CheckLinkStatus();
                        MainPage.Log($"网关局域网在线,刷新设备状态");
                        //MainPage.Log($"网关局域网在线,刷新设备状态");
                        new System.Threading.Thread(() =>
                        {
                            System.Threading.Thread.Sleep(1000);
@@ -127,7 +127,7 @@
                }
                else
                {
                    MainPage.Log($"状态一致,不更新数据(本地)");
                    //MainPage.Log($"状态一致,不更新数据(本地)");
                }
            }
        }
@@ -404,7 +404,7 @@
                    }
                    asd.status = status1;
                    upDataObj.objects.Add(asd);
                    revString = Newtonsoft.Json.JsonConvert.SerializeObject(upDataObj);
                    revString = JsonConvert.SerializeObject(upDataObj);
                    UpdataFunctionStatus(revString, null, true);
                }
                return;
@@ -480,12 +480,12 @@
                }
                asd.status = status1;
                upDataObj.objects.Add(asd);
                revString = Newtonsoft.Json.JsonConvert.SerializeObject(upDataObj);
                revString = JsonConvert.SerializeObject(upDataObj);
                UpdataFunctionStatus(revString, null, true);
                return true;
            }
            //MainPage.Log($"发送数据:{Newtonsoft.Json.JsonConvert.SerializeObject(commandDictionary)}");
            //MainPage.Log($"发送数据:{JsonConvert.SerializeObject(commandDictionary)}");
            ///第三方涂鸦设备统一使用远程控制
            switch (function.spk)
@@ -532,7 +532,7 @@
                    else
                    {
                        var functionControlDataObj = function.GetGatewayAlinkControlData(commandDictionary);
                        var functionControlDataJson = Newtonsoft.Json.JsonConvert.SerializeObject(functionControlDataObj);
                        var functionControlDataJson = JsonConvert.SerializeObject(functionControlDataObj);
                        var sendBytes = Ins.ConvertSendBodyData(CommunicationTopic.ct.ControlFunctionTopic, functionControlDataJson);
                        new Control_Udp().SendLocalHdlLinkData(sendBytes, functionControlDataObj.id, resend);
                        MainPage.Log($"本地通讯 发送HDL-Link数据:{functionControlDataJson}");
@@ -664,7 +664,7 @@
            if (pack != null && pack.Data != null)
            {
                //待测试2021-03-04
                var ddd = Newtonsoft.Json.JsonConvert.DeserializeObject<List<AlinkStatusData>>(pack.Data.ToString());
                var ddd = JsonConvert.DeserializeObject<List<AlinkStatusData>>(pack.Data.ToString());
                if (ddd != null)
                {
                    foreach (var function in ddd)
@@ -724,7 +724,7 @@
                                        },
                            time_stamp = Utlis.GetTimestamp()
                        };
                        var functionControlDataJson = Newtonsoft.Json.JsonConvert.SerializeObject(readDataObj);
                        var functionControlDataJson = JsonConvert.SerializeObject(readDataObj);
                        var sendBytes = Ins.ConvertSendBodyData(CommunicationTopic.ct.ReadStatus, functionControlDataJson);
                        MainPage.Log($"本地通讯 发送HDL-Link数据:{functionControlDataJson}");
                        new Control_Udp().SendLocalHdlLinkData(sendBytes, readDataObj.id);
@@ -806,7 +806,7 @@
                            objects = objects,
                            time_stamp = Utlis.GetTimestamp()
                        };
                        var functionControlDataJson = Newtonsoft.Json.JsonConvert.SerializeObject(readDataObj);
                        var functionControlDataJson = JsonConvert.SerializeObject(readDataObj);
                        var sendBytes = Ins.ConvertSendBodyData(CommunicationTopic.ct.ReadStatus, functionControlDataJson);
                        MainPage.Log($"本地通讯 发送HDL-Link数据:{functionControlDataJson}");
                        new Control_Udp().SendLocalHdlLinkData(sendBytes, readDataObj.id);
@@ -850,7 +850,7 @@
                        },
                    time_stamp = Utlis.GetTimestamp()
                };
                var aLinkJson = Newtonsoft.Json.JsonConvert.SerializeObject(aLinkData);
                var aLinkJson = JsonConvert.SerializeObject(aLinkData);
                var sendBytes = Ins.ConvertSendBodyData(CommunicationTopic.ct.ControlSeurity, aLinkJson);
                new Control_Udp().SendLocalHdlLinkData(sendBytes, aLinkData.id);
            }
@@ -904,7 +904,7 @@
                    objects = objects,
                    time_stamp = Utlis.GetTimestamp()
                };
                var functionControlDataJson = Newtonsoft.Json.JsonConvert.SerializeObject(readDataObj);
                var functionControlDataJson = JsonConvert.SerializeObject(readDataObj);
                var sendBytes = Ins.ConvertSendBodyData($"/base/{DB_ResidenceData.Instance.HomeGateway.gatewayId}/thing/service/MusicPlayGroupListGet/down", functionControlDataJson);
                MainPage.Log($"本地通讯 发送HDL-Link数据:{functionControlDataJson}");
                new Control_Udp().SendLocalHdlLinkData(sendBytes, readDataObj.id);
@@ -922,7 +922,7 @@
            var sendId = Ins.msg_id.ToString();
            var sendObj = new { objects = objects1, id = sendId, time_stamp = Utlis.GetTimestamp() };
            var aLinkJson = Newtonsoft.Json.JsonConvert.SerializeObject(sendObj);
            var aLinkJson = JsonConvert.SerializeObject(sendObj);
            var sendBytes = Ins.ConvertSendBodyData(CommunicationTopic.ct.AuthGateway, aLinkJson);
            new Control_Udp().SendLocalHdlLinkData(sendBytes, Ins.msg_id.ToString());
        }
@@ -1079,7 +1079,7 @@
                try
                {
                    var idMsg = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponsePack>(res[1]);
                    var idMsg = JsonConvert.DeserializeObject<ResponsePack>(res[1]);
                    var hasProcess = hasItBeenProcessed(idMsg.id);
                    if (hasProcess)
                    {
@@ -1096,16 +1096,16 @@
                if (receiveObj.Topic == CommunicationTopic.SearchLoaclGatewayReply || receiveObj.Topic == CommunicationTopic.GatewayBroadcast)
                {
                    var bodyJObj = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponsePack>(res[1]);
                    var bodyJObj = JsonConvert.DeserializeObject<ResponsePack>(res[1]);
                    if (bodyJObj == null)
                    {
                        return receiveObj;
                    }
                    var device = Newtonsoft.Json.JsonConvert.DeserializeObject<DeviceModule>(bodyJObj.objects.ToString());
                    var device = JsonConvert.DeserializeObject<DeviceModule>(bodyJObj.objects.ToString());
                    if (device.device_mac.ToUpper() == DB_ResidenceData.Instance.HomeGateway.mac.ToUpper())
                    {
                        MainPage.Log("本地搜索网关成功");
                        MainPage.Log("本地搜索网关成功:"+ receiveObj.Topic);
                        Ins.IsSearchLocalGatewaySuccessful = true;
                        Ins.GatewayOnline_Local = true;
                        if (!string.IsNullOrEmpty(device.gatewayId))
@@ -1150,7 +1150,7 @@
                        var tt = "";
                        lock (tt)
                        {
                            var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<SecurityStatusObj>(receiveObj.BodyDataString);
                            var temp = JsonConvert.DeserializeObject<SecurityStatusObj>(receiveObj.BodyDataString);
                            if (temp != null)
                            {
                                Control_Udp.ReceiveRepeatManager(temp.id, null);
@@ -1175,7 +1175,7 @@
                }
                else if (receiveObj.Topic == $"/user/{GatewayId}/custom/gateway/login_reply")
                {
                    var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<JObject>(receiveObj.BodyDataString);
                    var temp = JsonConvert.DeserializeObject<JObject>(receiveObj.BodyDataString);
                    if (temp.GetValue("objects").ToString().Contains("success"))
                    {
                        LocalTcpClientLogin = true;
@@ -1361,7 +1361,7 @@
                                break;
                            case SPK.WaterHeaterJinmao:
                                AcstParentPage.UpdateAcstSubInfo(localFunction);
                                WaterHeaterJinmaoPage.UpdateStatus(localFunction);
                                WaterHeaterJinmaoPage.UpdateStatus();
                                break;
                            case SPK.AirSwitch:
                                AirSwitchPage.UpdataState(localFunction);
@@ -1639,7 +1639,7 @@
                                var status = new Dictionary<string, object> { ["method"] = "status", ["data"] = temp.objects };
                                Application.RunOnMainThread(() =>
                                {
                                    Inverter.Ins.H5Page.CallJS($"nativeToJs(\'{Newtonsoft.Json.JsonConvert.SerializeObject(status)}\')");
                                    Inverter.Ins.H5Page.CallJS($"nativeToJs(\'{JsonConvert.SerializeObject(status)}\')");
                                });
                                break;
                        }
@@ -1672,7 +1672,7 @@
            {
                Dictionary<string, string> dic = new Dictionary<string, string>();
                var functionControlDataObj = doorlock.GetGatewayAlinkDoorlockData(UserInfo.Current.ID, extStr);
                var functionControlDataJson = Newtonsoft.Json.JsonConvert.SerializeObject(functionControlDataObj);
                var functionControlDataJson = JsonConvert.SerializeObject(functionControlDataObj);
                var sendBytes = Ins.ConvertSendBodyData($"/base/{Control.Ins.GatewayId}/thing/service/doorRemoteOpen/down", functionControlDataJson);
                new Control_Udp().SendLocalHdlLinkData(sendBytes, functionControlDataObj.id, 0);
            }
@@ -1705,7 +1705,7 @@
                    var pack = HttpUtil.RequestHttpsPost("/home-wisdom/app/device/door/pwdConfirm", requestJson);
                    if (pack.Code == StateCode.SUCCESS)
                    {
                        Newtonsoft.Json.Linq.JObject pairs = Newtonsoft.Json.Linq.JObject.Parse(pack.Data.ToString());
                        JObject pairs = JObject.Parse(pack.Data.ToString());
                        var scrip = pairs.GetValue("scrip");
                        d = new Dictionary<string, object>();
HDL_ON/DAL/DriverLayer/Control_Udp.cs
@@ -1218,6 +1218,7 @@
        /// </summary>
        public void SearchLocalGateway(bool broadcast = false)
        {
            //MainPage.Log("SearchLocalGateway");
            try
            {
                var sendJob = new JObject { { "id", Control.Ins.msg_id.ToString() }, { "time_stamp", Utlis.GetTimestamp ()} };
HDL_ON/DAL/Server/HttpUtil.cs
@@ -18,15 +18,13 @@
        /// 固定域名,正式环境
        /// 公共域名就近解析
        /// </summary>
        //public const string GlobalRequestHttpsHost = "https://nearest.hdlcontrol.com";
        //public const string APP_KEY = "HDL-HOME-APP";
        //public const string SECRET_KEY = "CPL345bn28gHnvi9G4tYbq3cTYkiHC";
        public const string GlobalRequestHttpsHost = "https://nearest.hdlcontrol.com";
        public const string APP_KEY = "HDL-HOME-APP";
        public const string SECRET_KEY = "CPL345bn28gHnvi9G4tYbq3cTYkiHC";
        public const string GlobalRequestHttpsHost = "https://test-gz.hdlcontrol.com";
        public const string APP_KEY = "HDL-HOME-APP-TEST";
        public const string SECRET_KEY = "WeJ8TY88vbakCcnvH8G1tDUqzLWY8yss";
        //public const string GlobalRequestHttpsHost = "https://test-gz.hdlcontrol.com";
        //public const string APP_KEY = "HDL-HOME-APP-TEST";
        //public const string SECRET_KEY = "WeJ8TY88vbakCcnvH8G1tDUqzLWY8yss";
        //public const string GlobalRequestHttpsHost = "http://59.41.255.150:7777";//mmmm
        //const string APP_KEY = "CPEVRLRT";
HDL_ON/Entity/FunctionList.cs
@@ -138,7 +138,12 @@
        /// <returns></returns>
        public List<Function> GetInverterJinmaoList()
        {
            return Functions.FindAll((obj) => obj.spk == SPK.InverterJinmao);
            var tempList = Functions.FindAll((obj) => obj.spk == SPK.InverterJinmao);
            foreach(var device in tempList)
            {
                device.collect = true;
            }
            return tempList;
        }
        /// <summary>
HDL_ON/UI/UI1-Login/LoginPage.cs
@@ -315,10 +315,10 @@
                    //etAccount.Text = "13922115008";//刘总
                    //etAccount.Text = "support7@hdlautomation.com";
                    etAccount.Text = "13336018868";
                    etAccount.Text = "649362315@qq.com";
                    etAccount.Text = "649362315@qq.com";//蔡淑娴
                    //etAccount.Text = "18402017839";
                    etAccount.Text = "18620993214";
                    etAccount.Text = "13414984501";
                    //etAccount.Text = "18620993214";
                    //etAccount.Text = "13414984501";//吴晓聪
                }
                else
HDL_ON/UI/UI2/1-HomePage/HomePage.cs
@@ -997,7 +997,7 @@
                    //}
                    //else
                    {
                        if (!function.collect)
                        if (!function.collect&& function.spk != SPK.InverterJinmao)
                            continue;
                    }
                    if (index % 2 == 0)
HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/TemperatureView.cs
@@ -11,7 +11,7 @@
        /// <param name="frameLayout">弹窗父控件</param>
        /// <param name="stateValue">之前状态值</param>
        /// <param name="action">返回结果</param>
        public void FLayoutView(FrameLayout frameLayout, string stateValue, Action<string> action,int min,int max,string unit)
        public void FLayoutView(FrameLayout frameLayout, string stateValue, Action<string> action,int min,int max,string unit, string setTempAttr)
        {
            FrameLayout frame = new FrameLayout
            {
@@ -32,8 +32,11 @@
            {
                //添加数据
                temperatureList.Add(i.ToString() + unit);
                if (setTempAttr == "0.5")
                {
                temperatureList.Add((i + 0.5).ToString() + unit);
            }
            }
            //加载数据界面的设置方法(列表互不联动)
            view.mUIPickerView.setNPicker(temperatureList, null, null);
            //默认初始选中状态
HDL_ON/UI/UI2/3-Intelligence/Automation/TargetDeviceFunList.cs
@@ -492,6 +492,7 @@
                        int min = device.GetAttribute("set_temp") == null ? 16 : device.GetAttribute("set_temp").min;
                        int max = device.GetAttribute("set_temp") == null ? 32 : device.GetAttribute("set_temp").max;
                        string unit = InpOrOutLogicMethod.Current.GetTemperatureUnit(device);
                        var setTempAttr = device.GetAttribute(FunctionAttributeKey.SetTemp);
                        ///温度点击事件
                        temperatureView.btnClick.MouseUpEventHandler += (sender, e) =>
                        {
@@ -508,7 +509,7 @@
                                string set_temp_value = stateStr.Replace(unit, "");
                                //数据封装
                                AddDictionary(keyVlaue, set_temp_value);
                            }, min, max, unit);
                            }, min, max, unit, setTempAttr.step);
                        };
                        ///模式点击事件
@@ -586,6 +587,7 @@
                        DelayView(fLayout, floorHeatingModehView.frameLayout.Bottom);
                        #endregion
                        #region 点击事件
                        var setTempAttr = device.GetAttribute(FunctionAttributeKey.SetTemp);
                        ///开关点击事件
                        floorHeatingSwitchVie.btnClick.MouseUpEventHandler += (sender, e) =>
                        {
@@ -611,7 +613,7 @@
                                //数据封装
                                AddDictionary(keyVlaue, set_temp_value);
                            }, min, max, unit);
                            }, min, max, unit, setTempAttr.step);
                        };
                        ///模式点击事件
HDL_ON/UI/UI2/FuntionControlView/Acst/AcstParentPage.cs
@@ -1393,6 +1393,7 @@
            }
            else if (sub.spk == SPK.WaterHeaterJinmao)
            {
                btnSubTempValues.Width = Application.GetRealWidth(45);
                btnSubTempValues.Text = sub.GetAttrState(WaterHeaterJinmao_AttrEnum.temp.ToString()) + "°C";
                EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
                {
HDL_ON/UI/UI2/FuntionControlView/Acst/InverterJinmaoHistroyPage.cs
@@ -48,15 +48,11 @@
        string queryTimeString2 = DateTime.Now.ToString("yyyy/MM/dd");
        /// <summary>
        /// echart容器
        /// </summary>
        MyEchartsViewOn tempEchartsView;
        public InverterJinmaoHistroyPage(Function deviceFunction)
        {
            bodyView = this;
            function = deviceFunction;
            BackgroundColor = CSS_Color.BackgroundColor;
        }
        public void LoadPage()
@@ -73,7 +69,7 @@
            bodyView.AddChidren(contentView);
            #region 发电量
            var infoView1 = new FrameLayout()
            infoView1 = new FrameLayout()
            {
                Width = Application.GetRealWidth(343),
                Height = Application.GetRealWidth(382),
@@ -100,7 +96,7 @@
            };
            infoView1.AddChidren(infoView1_DateView);
            var infoView1_Date_Day = new Button()
            infoView1_Date_Day = new Button()
            {
                Width = Application.GetRealWidth(103),
                Height = Application.GetRealWidth(26),
@@ -119,7 +115,7 @@
            infoView1_DateView.AddChidren(infoView1_Date_Day);
            var infoView1_Date_Month = new Button()
            infoView1_Date_Month = new Button()
            {
                Width = Application.GetRealWidth(103),
                Height = Application.GetRealWidth(26),
@@ -138,7 +134,7 @@
            infoView1_DateView.AddChidren(infoView1_Date_Month);
            var infoView1_Date_Year = new Button()
            infoView1_Date_Year = new Button()
            {
                Width = Application.GetRealWidth(103),
                Height = Application.GetRealWidth(26),
@@ -163,7 +159,7 @@
            };
            infoView1.AddChidren(infoView1_DateInfoView);
            var infoView1_DateInfo_PreIconButton = new Button()
            infoView1_DateInfo_PreIconButton = new Button()
            {
                X = Application.GetRealWidth(18),
                Gravity = Gravity.CenterVertical,
@@ -173,7 +169,7 @@
            };
            infoView1_DateInfoView.AddChidren(infoView1_DateInfo_PreIconButton);
            var infoView1_DateInfo_PreClickButton = new Button()
            infoView1_DateInfo_PreClickButton = new Button()
            {
                Width = Application.GetRealWidth(32 + 6),
            };
@@ -212,50 +208,50 @@
            #endregion
            #region 数据图表
            MyEchartsViewOn infoView1_EchartsView = new 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 = "电量(kw)";
            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);
            echartOption1 = new EchartsOption_Histogram();
            echartOption1.xTitle = "时间";
            echartOption1.yTitle = "电量(kw)";
            //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()
            {
@@ -277,7 +273,7 @@
            });
            #region 用电量
            var infoView2 = new FrameLayout()
            infoView2 = new FrameLayout()
            {
                Width = Application.GetRealWidth(343),
                Height = Application.GetRealWidth(382),
@@ -305,7 +301,7 @@
            };
            infoView2.AddChidren(infoView2_DateView);
            var infoView2_Date_Day = new Button()
            infoView2_Date_Day = new Button()
            {
                Width = Application.GetRealWidth(103),
                Height = Application.GetRealWidth(26),
@@ -324,7 +320,7 @@
            infoView2_DateView.AddChidren(infoView2_Date_Day);
            var infoView2_Date_Month = new Button()
            infoView2_Date_Month = new Button()
            {
                Width = Application.GetRealWidth(103),
                Height = Application.GetRealWidth(26),
@@ -343,7 +339,7 @@
            infoView2_DateView.AddChidren(infoView2_Date_Month);
            var infoView2_Date_Year = new Button()
            infoView2_Date_Year = new Button()
            {
                Width = Application.GetRealWidth(103),
                Height = Application.GetRealWidth(26),
@@ -368,7 +364,7 @@
            };
            infoView2.AddChidren(infoView2_DateInfoView);
            var infoView2_DateInfo_PreIconButton = new Button()
            infoView2_DateInfo_PreIconButton = new Button()
            {
                X = Application.GetRealWidth(18),
                Gravity = Gravity.CenterVertical,
@@ -378,13 +374,13 @@
            };
            infoView2_DateInfoView.AddChidren(infoView2_DateInfo_PreIconButton);
            var infoView2_DateInfo_PreClickButton = new Button()
            infoView2_DateInfo_PreClickButton = new Button()
            {
                Width = Application.GetRealWidth(32 + 6),
            };
            infoView2_DateInfoView.AddChidren(infoView2_DateInfo_PreClickButton);
            var infoView2_DateInfo_DateTextButton = new Button()
            infoView2_DateInfo_DateTextButton = new Button()
            {
                Gravity = Gravity.Center,
                Width = Application.GetRealWidth(200),
@@ -397,7 +393,7 @@
            infoView2_DateInfoView.AddChidren(infoView2_DateInfo_DateTextButton);
            var infoView2_DateInfo_NextIconButton = new Button()
            infoView2_DateInfo_NextIconButton = new Button()
            {
                X = Application.GetRealWidth(343 - 18 - 6),
                Gravity = Gravity.CenterVertical,
@@ -407,7 +403,7 @@
            };
            infoView2_DateInfoView.AddChidren(infoView2_DateInfo_NextIconButton);
            var infoView2_DateInfo_NextClickButton = new Button()
            infoView2_DateInfo_NextClickButton = new Button()
            {
                X = Application.GetRealWidth(343 - 18 - 6 -32),
                Width = Application.GetRealWidth(32 + 6),
@@ -417,49 +413,49 @@
            #endregion
            #region 数据图表
            MyEchartsViewOn infoView2_EchartsView = new MyEchartsViewOn()
            infoView2_EchartsView = new MyEchartsViewOn()
            {
                Y = Application.GetRealWidth(101),
                Height = Application.GetRealWidth(246),
            };
            infoView2.AddChidren(infoView2_EchartsView);
            var echartOption2 = new EchartsOption_Histogram();
            echartOption2 = new EchartsOption_Histogram();
            echartOption2.xTitle = "时间";
            echartOption2.yTitle = "电量(kw)";
            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());
            //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()
            {
@@ -483,15 +479,18 @@
            });
            initQueryButton();
            getPvElectricityHistory();
            getLoadElectricityHistory();
        }
        /// <summary>
        /// 读取温度值历史数据
        /// 读取发电量历史数据
        /// hour=近24小时、day_hour =某日24小时、week=近一周、month = 近一月、custom_month=某年某月 y/M、custom_year=某年 y
        /// </summary>
        private void getTempHistory()
        private void getPvElectricityHistory()
        {
            if (MainPage.NoLoginMode)
            {
@@ -501,6 +500,7 @@
            var loadPage = new Loading()
            {
                LodingBackgroundColor = 0x88888888,
                BackgroundColor = 0x00FFFFFF,
            };
            infoView1.AddChidren(loadPage);
@@ -510,7 +510,7 @@
                {
                    Application.RunOnMainThread(() =>
                    {
                        loadPage.Start(Language.StringByID(StringId.PleaseWait));
                        loadPage.Start();
                    });
                    switch (queryType1)
@@ -563,9 +563,9 @@
        }
        /// <summary>
        /// 获取用水量历史记录
        /// 获取用电量历史记录
        /// </summary>
        private void getWaterHistory()
        private void getLoadElectricityHistory()
        {
            if (MainPage.NoLoginMode)
            {
@@ -574,6 +574,7 @@
            var loadPage = new Loading()
            {
                LodingBackgroundColor = 0x88888888,
                BackgroundColor = 0x00FFFFFF,
            };
            infoView2.AddChidren(loadPage);
@@ -583,7 +584,7 @@
                {
                    Application.RunOnMainThread(() =>
                    {
                        loadPage.Start(Language.StringByID(StringId.PleaseWait));
                        loadPage.Start();
                    });
                    switch (queryType2)
                    {
@@ -641,110 +642,83 @@
            {
                SetTempQureyDateDialog();
            };
            infoView1_DateInfo_PreClickButton.MouseUpEventHandler = (sender, e) => {
                var tempQueryDate = new DateTime(queryTime_Year1, queryTime_Month1, queryTime_Day1);
            infoView1_DateInfo_PreClickButton.MouseUpEventHandler = (sender, e) =>
            {
                var pvElecQueryDate = new DateTime(queryTime_Year1, queryTime_Month1, queryTime_Day1);
                if (queryType1 == QueryType.day_hour)
                {
                    tempQueryDate = tempQueryDate.AddDays(-1);
                    if (tempQueryDate.Year == 2023 && tempQueryDate.Month == 1 && tempQueryDate.Day == 1)
                    if (pvElecQueryDate.Year == 2023 && pvElecQueryDate.Month == 1 && pvElecQueryDate.Day == 1)
                    {
                        infoView1_DateInfo_PreIconButton.Visible = false;
                        infoView1_DateInfo_PreClickButton.Enable = false;
                        return;
                    }
                    if (tempQueryDate.Year == DateTime.Now.Year && tempQueryDate.Month == DateTime.Now.Month && tempQueryDate.Day == DateTime.Now.Day - 1)
                    {
                        infoView1_DateInfo_NextIconButton.Visible = true;
                        infoView1_DateInfo_NextClickButton.Enable = true;
                    }
                    pvElecQueryDate = pvElecQueryDate.AddDays(-1);
                    infoView1_DateInfo_DateTextButton.Text = pvElecQueryDate.ToString("yyyy-MM-dd");
                }
                else if (queryType1 == QueryType.custom_month)
                {
                    tempQueryDate = tempQueryDate.AddMonths(-1);
                    if (tempQueryDate.Year == 2023 && tempQueryDate.Month == 1)
                    if (pvElecQueryDate.Year == 2023 && pvElecQueryDate.Month == 1)
                    {
                        infoView1_DateInfo_PreIconButton.Visible = false;
                        infoView1_DateInfo_PreClickButton.Enable = false;
                        return;
                    }
                    if (tempQueryDate.Year == DateTime.Now.Year && tempQueryDate.Month == DateTime.Now.Month - 1)
                    {
                        infoView1_DateInfo_NextIconButton.Visible = true;
                        infoView1_DateInfo_NextClickButton.Enable = true;
                    }
                    pvElecQueryDate = pvElecQueryDate.AddMonths(-1);
                    infoView1_DateInfo_DateTextButton.Text = pvElecQueryDate.ToString("yyyy-MM");
                }
                else if (queryType1 == QueryType.custom_year)
                {
                    tempQueryDate = tempQueryDate.AddYears(-1);
                    if (tempQueryDate.Year == 2023)
                    if (pvElecQueryDate.Year == 2023)
                    {
                        infoView1_DateInfo_PreIconButton.Visible = false;
                        infoView1_DateInfo_PreClickButton.Enable = false;
                        return;
                    }
                    if (tempQueryDate.Year == DateTime.Now.Year - 1)
                    {
                        infoView1_DateInfo_NextIconButton.Visible = true;
                        infoView1_DateInfo_NextClickButton.Enable = true;
                    pvElecQueryDate = pvElecQueryDate.AddYears(-1);
                    infoView1_DateInfo_DateTextButton.Text = pvElecQueryDate.ToString("yyyy");
                    }
                }
                queryTime_Year1 = tempQueryDate.Year;
                queryTime_Month1 = tempQueryDate.Month;
                queryTime_Day1 = tempQueryDate.Day;
                infoView1_DateInfo_DateTextButton.Text = tempQueryDate.ToString("yyyy-MM-dd");
                getTempHistory();
                queryTime_Year1 = pvElecQueryDate.Year;
                queryTime_Month1 = pvElecQueryDate.Month;
                queryTime_Day1 = pvElecQueryDate.Day;
                getPvElectricityHistory();
            };
            infoView1_DateInfo_NextIconButton.Visible = false;
            infoView1_DateInfo_NextClickButton.Enable = false;
            infoView1_DateInfo_NextClickButton.MouseUpEventHandler = (sender, e) => {
            infoView1_DateInfo_NextClickButton.MouseUpEventHandler = (sender, e) =>
            {
                var tempQueryDate = new DateTime(queryTime_Year1, queryTime_Month1, queryTime_Day1);
                if (queryType1 == QueryType.day_hour)
                {
                    tempQueryDate = tempQueryDate.AddDays(1);
                    if (tempQueryDate.Year == 2023 && tempQueryDate.Month == 1 && tempQueryDate.Day == 2)
                    {
                        infoView1_DateInfo_PreIconButton.Visible = true;
                        infoView1_DateInfo_PreClickButton.Enable = true;
                    }
                    if (tempQueryDate.Year == DateTime.Now.Year && tempQueryDate.Month == DateTime.Now.Month && tempQueryDate.Day == DateTime.Now.Day)
                    {
                        infoView1_DateInfo_NextIconButton.Visible = false;
                        infoView1_DateInfo_NextClickButton.Enable = false;
                        return;
                    }
                    tempQueryDate = tempQueryDate.AddDays(1);
                    infoView1_DateInfo_DateTextButton.Text = tempQueryDate.ToString("yyyy-MM-dd");
                }
                else if (queryType1 == QueryType.custom_month)
                {
                    tempQueryDate = tempQueryDate.AddMonths(1);
                    if (tempQueryDate.Year == 2023 && tempQueryDate.Month == 2)
                    {
                        infoView1_DateInfo_PreIconButton.Visible = true;
                        infoView1_DateInfo_PreClickButton.Enable = true;
                    }
                    if (tempQueryDate.Year == DateTime.Now.Year && tempQueryDate.Month == DateTime.Now.Month)
                    {
                        infoView1_DateInfo_NextIconButton.Visible = false;
                        infoView1_DateInfo_NextClickButton.Enable = false;
                        return;
                    }
                    tempQueryDate = tempQueryDate.AddMonths(1);
                    infoView1_DateInfo_DateTextButton.Text = tempQueryDate.ToString("yyyy-MM");
                }
                else if (queryType1 == QueryType.custom_year)
                {
                    tempQueryDate = tempQueryDate.AddYears(1);
                    if (tempQueryDate.Year == 2023)
                    {
                        infoView1_DateInfo_PreIconButton.Visible = false;
                        infoView1_DateInfo_PreClickButton.Enable = false;
                        return;
                    }
                    if (tempQueryDate.Year == DateTime.Now.Year)
                    {
                        infoView1_DateInfo_NextIconButton.Visible = false;
                        infoView1_DateInfo_NextClickButton.Enable = false;
                        return;
                    }
                    tempQueryDate = tempQueryDate.AddYears(1);
                    infoView1_DateInfo_DateTextButton.Text = tempQueryDate.ToString("yyyy");
                }
                queryTime_Year1 = tempQueryDate.Year;
                queryTime_Month1 = tempQueryDate.Month;
                queryTime_Day1 = tempQueryDate.Day;
                infoView1_DateInfo_DateTextButton.Text = tempQueryDate.ToString("yyyy-MM-dd");
                getTempHistory();
                getPvElectricityHistory();
            };
            infoView1_Date_Day.MouseUpEventHandler = (sender, e) => {
            infoView1_Date_Day.MouseUpEventHandler = (sender, e) =>
            {
                if (infoView1_Date_Day.IsSelected)
                {
                    return;
@@ -754,9 +728,10 @@
                infoView1_Date_Year.IsSelected = false;
                queryType1 = QueryType.day_hour;
                infoView1_DateInfo_DateTextButton.Text = new DateTime(queryTime_Year1, queryTime_Month1, queryTime_Day1).ToString("yyyy-MM-dd");
                getTempHistory();
                getPvElectricityHistory();
            };
            infoView1_Date_Month.MouseUpEventHandler = (sender, e) => {
            infoView1_Date_Month.MouseUpEventHandler = (sender, e) =>
            {
                if (infoView1_Date_Month.IsSelected)
                {
                    return;
@@ -766,9 +741,10 @@
                infoView1_Date_Year.IsSelected = false;
                queryType1 = QueryType.custom_month;
                infoView1_DateInfo_DateTextButton.Text = new DateTime(queryTime_Year1, queryTime_Month1, queryTime_Day1).ToString("yyyy-MM");
                getTempHistory();
                getPvElectricityHistory();
            };
            infoView1_Date_Year.MouseUpEventHandler = (sender, e) => {
            infoView1_Date_Year.MouseUpEventHandler = (sender, e) =>
            {
                if (infoView1_Date_Year.IsSelected)
                {
                    return;
@@ -778,116 +754,89 @@
                infoView1_Date_Year.IsSelected = true;
                queryType1 = QueryType.custom_year;
                infoView1_DateInfo_DateTextButton.Text = queryTime_Year1.ToString();
                getTempHistory();
                getPvElectricityHistory();
            };
            //-----------用水
            infoView2_DateInfo_DateTextButton.MouseUpEventHandler = (sender, e) =>
            {
                SetWaterQureyDateDialog();
            };
            infoView2_DateInfo_PreClickButton.MouseUpEventHandler = (sender, e) => {
            infoView2_DateInfo_PreClickButton.MouseUpEventHandler = (sender, e) =>
            {
                var waterQueryDate = new DateTime(queryTime_Year2, queryTime_Month2, queryTime_Day2);
                if (queryType2 == QueryType.day_hour)
                {
                    waterQueryDate = waterQueryDate.AddDays(-1);
                    if (waterQueryDate.Year == 2023 && waterQueryDate.Month == 1 && waterQueryDate.Day == 1)
                    {
                        infoView2_DateInfo_PreIconButton.Visible = false;
                        infoView2_DateInfo_PreClickButton.Enable = false;
                        return;
                    }
                    if (waterQueryDate.Year == DateTime.Now.Year && waterQueryDate.Month == DateTime.Now.Month && waterQueryDate.Day == DateTime.Now.Day - 1)
                    {
                        infoView2_DateInfo_NextIconButton.Visible = true;
                        infoView2_DateInfo_NextClickButton.Enable = true;
                    }
                    waterQueryDate = waterQueryDate.AddDays(-1);
                    infoView2_DateInfo_DateTextButton.Text = waterQueryDate.ToString("yyyy-MM-dd");
                }
                else if (queryType2 == QueryType.custom_month)
                {
                    waterQueryDate = waterQueryDate.AddMonths(-1);
                    if (waterQueryDate.Year == 2023 && waterQueryDate.Month == 1)
                    {
                        infoView2_DateInfo_PreIconButton.Visible = false;
                        infoView2_DateInfo_PreClickButton.Enable = false;
                        return;
                    }
                    if (waterQueryDate.Year == DateTime.Now.Year && waterQueryDate.Month == DateTime.Now.Month - 1)
                    {
                        infoView2_DateInfo_NextIconButton.Visible = true;
                        infoView2_DateInfo_NextClickButton.Enable = true;
                    }
                    waterQueryDate = waterQueryDate.AddMonths(-1);
                    infoView2_DateInfo_DateTextButton.Text = waterQueryDate.ToString("yyyy-MM");
                }
                else if (queryType2 == QueryType.custom_year)
                {
                    waterQueryDate = waterQueryDate.AddYears(-1);
                    if (waterQueryDate.Year == 2023)
                    {
                        infoView2_DateInfo_PreIconButton.Visible = false;
                        infoView2_DateInfo_PreClickButton.Enable = false;
                        return;
                    }
                    if (waterQueryDate.Year == DateTime.Now.Year - 1)
                    {
                        infoView2_DateInfo_NextIconButton.Visible = true;
                        infoView2_DateInfo_NextClickButton.Enable = true;
                    }
                    waterQueryDate = waterQueryDate.AddYears(-1);
                    infoView2_DateInfo_DateTextButton.Text = waterQueryDate.ToString("yyyy");
                }
                queryTime_Year2 = waterQueryDate.Year;
                queryTime_Month2 = waterQueryDate.Month;
                queryTime_Day2 = waterQueryDate.Day;
                infoView2_DateInfo_DateTextButton.Text = waterQueryDate.ToString("yyyy-MM-dd");
                getWaterHistory();
                getLoadElectricityHistory();
            };
            infoView2_DateInfo_NextIconButton.Visible = false;
            infoView2_DateInfo_NextClickButton.Enable = false;
            infoView2_DateInfo_NextClickButton.MouseUpEventHandler = (sender, e) => {
            infoView2_DateInfo_NextClickButton.MouseUpEventHandler = (sender, e) =>
            {
                var waterQueryDate = new DateTime(queryTime_Year2, queryTime_Month2, queryTime_Day2);
                if (queryType2 == QueryType.day_hour)
                {
                    waterQueryDate = waterQueryDate.AddDays(1);
                    if (waterQueryDate.Year == 2023 && waterQueryDate.Month == 1 && waterQueryDate.Day == 2)
                    {
                        infoView2_DateInfo_PreIconButton.Visible = true;
                        infoView2_DateInfo_PreClickButton.Enable = true;
                    }
                    if (waterQueryDate.Year == DateTime.Now.Year && waterQueryDate.Month == DateTime.Now.Month && waterQueryDate.Day == DateTime.Now.Day)
                    {
                        infoView2_DateInfo_NextIconButton.Visible = false;
                        infoView2_DateInfo_NextClickButton.Enable = false;
                        return;
                    }
                    waterQueryDate = waterQueryDate.AddDays(1);
                    infoView2_DateInfo_DateTextButton.Text = waterQueryDate.ToString("yyyy-MM-dd");
                }
                else if (queryType2 == QueryType.custom_month)
                {
                    waterQueryDate = waterQueryDate.AddMonths(1);
                    if (waterQueryDate.Year == 2023 && waterQueryDate.Month == 2)
                    {
                        infoView2_DateInfo_PreIconButton.Visible = true;
                        infoView2_DateInfo_PreClickButton.Enable = true;
                    }
                    if (waterQueryDate.Year == DateTime.Now.Year && waterQueryDate.Month == DateTime.Now.Month)
                    {
                        infoView2_DateInfo_NextIconButton.Visible = false;
                        infoView2_DateInfo_NextClickButton.Enable = false;
                        return;
                    }
                    waterQueryDate = waterQueryDate.AddMonths(1);
                    infoView2_DateInfo_DateTextButton.Text = waterQueryDate.ToString("yyyy-MM");
                }
                else if (queryType2 == QueryType.custom_year)
                {
                    waterQueryDate = waterQueryDate.AddYears(1);
                    if (waterQueryDate.Year == 2023)
                    {
                        infoView2_DateInfo_PreIconButton.Visible = false;
                        infoView2_DateInfo_PreClickButton.Enable = false;
                        return;
                    }
                    if (waterQueryDate.Year == DateTime.Now.Year)
                    {
                        infoView2_DateInfo_NextIconButton.Visible = false;
                        infoView2_DateInfo_NextClickButton.Enable = false;
                        return;
                    }
                    waterQueryDate = waterQueryDate.AddYears(1);
                    infoView2_DateInfo_DateTextButton.Text = waterQueryDate.ToString("yyyy");
                }
                queryTime_Year2 = waterQueryDate.Year;
                queryTime_Month2 = waterQueryDate.Month;
                queryTime_Day2 = waterQueryDate.Day;
                infoView2_DateInfo_DateTextButton.Text = waterQueryDate.ToString("yyyy-MM-dd");
                getWaterHistory();
                getLoadElectricityHistory();
            };
            infoView2_Date_Day.MouseDownEventHandler = (sender, e) => {
            infoView2_Date_Day.MouseDownEventHandler = (sender, e) =>
            {
                if (infoView2_Date_Day.IsSelected)
                {
                    return;
@@ -897,9 +846,10 @@
                infoView2_Date_Year.IsSelected = false;
                queryType2 = QueryType.day_hour;
                infoView2_DateInfo_DateTextButton.Text = new DateTime(queryTime_Year2, queryTime_Month2, queryTime_Day2).ToString("yyyy-MM-dd");
                getWaterHistory();
                getLoadElectricityHistory();
            };
            infoView2_Date_Month.MouseDownEventHandler = (sender, e) => {
            infoView2_Date_Month.MouseDownEventHandler = (sender, e) =>
            {
                if (infoView2_Date_Month.IsSelected)
                {
                    return;
@@ -909,9 +859,10 @@
                infoView2_Date_Year.IsSelected = false;
                queryType2 = QueryType.custom_month;
                infoView2_DateInfo_DateTextButton.Text = new DateTime(queryTime_Year2, queryTime_Month2, queryTime_Day2).ToString("yyyy-MM");
                getWaterHistory();
                getLoadElectricityHistory();
            };
            infoView2_Date_Year.MouseDownEventHandler = (sender, e) => {
            infoView2_Date_Year.MouseDownEventHandler = (sender, e) =>
            {
                if (infoView2_Date_Year.IsSelected)
                {
                    return;
@@ -921,7 +872,7 @@
                infoView2_Date_Year.IsSelected = true;
                queryType2 = QueryType.custom_year;
                infoView2_DateInfo_DateTextButton.Text = queryTime_Year2.ToString();
                getWaterHistory();
                getLoadElectricityHistory();
            };
        }
@@ -1115,6 +1066,10 @@
                }
                if (pickerItems_Month != null)
                {
                    if (int2 > pickerItems_Month.Count)
                    {
                        int2 = 0;
                    }
                    if (pickerItems_Month[int2] != item2.ToString())
                    {
                        int.TryParse(pickerItems_Month[int2], out item2);
@@ -1178,7 +1133,7 @@
                        infoView1_DateInfo_DateTextButton.Text = new DateTime(queryTime_Year1, queryTime_Month1, queryTime_Day1).ToString("yyyy-MM-dd");
                    }
                }
                getTempHistory();
                getPvElectricityHistory();
            };
        }
@@ -1370,6 +1325,10 @@
                }
                if (pickerItems_Month != null)
                {
                    if (int2 > pickerItems_Month.Count)
                    {
                        int2 = 0;
                    }
                    if (pickerItems_Month[int2] != item2.ToString())
                    {
                        int.TryParse(pickerItems_Month[int2], out item2);
@@ -1433,7 +1392,7 @@
                        infoView2_DateInfo_DateTextButton.Text = new DateTime(queryTime_Year2, queryTime_Month2, queryTime_Day2).ToString("yyyy-MM-dd");
                    }
                }
                getWaterHistory();
                getLoadElectricityHistory();
            };
        }
@@ -1442,4 +1401,3 @@
    }
}
HDL_ON/UI/UI2/FuntionControlView/Acst/InverterJinmaoPage.cs
@@ -1,4 +1,7 @@
using System;
using System.Collections.Generic;
using HDL_ON.DAL.Server;
using HDL_ON.DriverLayer;
using HDL_ON.Entity;
using HDL_ON.UI.CSS;
using Shared;
@@ -54,9 +57,64 @@
        /// </summary>
        Button pvGeneration_MonthValuesButton;
        /// <summary>
        /// 光伏本年发电量数据按钮
        /// 光伏实时用电功率数据按钮
        /// </summary>
        Button pvGeneration_YearValuesButton;
        Button loadElec_ValuesButton;
        /// <summary>
        /// 光伏状态今日用电量数据按钮
        /// </summary>
        Button loadElec_TodayTextButton;
        /// <summary>
        /// 光伏状态本月用电量数据按钮
        /// </summary>
        Button loadElec_MonthValuesButton;
        /// <summary>
        /// 储能运行状态信息区域
        /// </summary>
        FrameLayout esStatus_InfoView;
        /// <summary>
        /// 储能运行状态图标按钮
        /// </summary>
        Button esRunStatus_Info_IconButton;
        /// <summary>
        /// 储能运行状态文本按钮
        /// </summary>
        Button esRunStatus_Info_TextButton;
        /// <summary>
        /// 储能电池状态图标按钮
        /// </summary>
        Button esRunStatus_BatteryIconButton;
        /// <summary>
        /// 储能电池状态百分比按钮
        /// </summary>
        Button esRunStatus_BatteryValuesButton;
        /// <summary>
        /// 储能实时充电功率
        /// </summary>
        Button esRunStatus_ChargeValuesButton;
        /// <summary>
        /// 储能实时放电功率
        /// </summary>
        Button esRunStatus_DischargeValuesButton;
        /// <summary>
        /// </summary>
        Button socialContribution_Info1_ValuesButton;
        /// <summary>
        /// </summary>
        Button socialContribution_Info1_UintButton;
        /// <summary>
        /// </summary>
        Button socialContribution_Info2_ValuesButton;
        /// <summary>
        /// </summary>
        Button socialContribution_Info2_UintButton;
        /// <summary>
        /// </summary>
        Button socialContribution_Info3_UintButton;
        /// <summary>
        /// </summary>
        Button socialContribution_Info3_ValuesButton;
        public InverterJinmaoPage()
@@ -145,7 +203,7 @@
#if __IOS__
            pvGenerate_TodayValuesButton.TextAlignment = TextAlignment.TopLeft;
            pvGenerate_TodayValuesButton.Width = pvGenerate_TodayValuesButton.GetTextWidth() + Application.GetRealWidth(4);
            pvGenerate_TodayValuesButton.Width = pvGenerate_TodayValuesButton.GetTextWidth() + Application.GetRealWidth(6);
#else
            pvGenerate_TodayValuesButton.TextAlignment = TextAlignment.BottomLeft;
            pvGenerate_TodayValuesButton.Y = Application.GetRealWidth(37);
@@ -345,9 +403,44 @@
                Y = Application.GetRealWidth(20),
                Width = Application.GetRealWidth(151),
                Height = Application.GetRealWidth(151),
                BackgroundImagePath = "FunctionIcon/Acst/Inverter/PvBgRun.png"
            };
            pvEleGenerationInfoView.AddChidren(powerGenerationView);
            var powerGenerationBg = new Button()
            {
                UnSelectedImagePath = "FunctionIcon/Acst/Inverter/PvBgRun.png"
            };
            powerGenerationView.AddChidren(powerGenerationBg);
            new System.Threading.Thread(() =>
            {
                try
                {
                    int index = 1;
                    while (index < 361)
                    {
                        if (function.GetAttrState(InverterJinmao_AttrEnum.pv_power.ToString()) == "0")
                        {
                            continue;
                        }
                        Application.RunOnMainThread(() =>
                        {
                            powerGenerationBg.SetRotation(1f * index++);
                        });
                        System.Threading.Thread.Sleep(50);
                        if (index == 361)
                        {
                            index = 1;
                        }
                    }
                }
                catch (Exception ex)
                {
                    MainPage.Log("Error", $"金茂UI控件旋转异常:{ex.Message}");
                }
            })
            { IsBackground = true }.Start();
            #endregion
            #region 光伏发电量
@@ -439,13 +532,13 @@
            #endregion
            #region 光伏本年发电量
            pvGeneration_YearValuesButton = new Button()
            var pvGeneration_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()),
                Text = "---",
                TextAlignment = TextAlignment.Center,
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextSize = 18,
@@ -459,13 +552,57 @@
                Y = Application.GetRealWidth(220),
                Width = Application.GetRealWidth(100),
                Height = Application.GetRealWidth(17),
                Text = "累计发电量 (kw)",
                Text = "本年发电量 (kw)",
                TextAlignment = TextAlignment.Center,
                TextColor = CSS_Color.TextualColor,
                TextSize = 12,
            };
            pvEleGenerationInfoView.AddChidren(powerGeneration_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(() =>
                            {
                                pvGeneration_YearValuesButton.Text = totalValues.ToString();
                                while (true)
                                {
                                    if (pvGeneration_YearValuesButton.Width < pvGeneration_YearValuesButton.GetTextWidth())
                                    {
                                        pvGeneration_YearValuesButton.TextSize--;
                                    }
                                    else
                                    {
                                        break;
                                    }
                                }
                            });
                        }
                    }
                }
                catch (Exception ex)
                {
                    MainPage.Log("Error", "读取金茂本年发电量数据异常:" + ex.Message);
                }
            })
            { IsBackground = true }.Start();
            #endregion
            #endregion
            contentView.AddChidren(new Button()
@@ -492,11 +629,45 @@
                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()
            var powerUsageBg = new Button()
            {
                UnSelectedImagePath = "FunctionIcon/Acst/Inverter/PvBgDischarge.png"
            };
            powerUsageView.AddChidren(powerUsageBg);
            new System.Threading.Thread(() =>
            {
                try
                {
                    int index = 1;
                    while (index < 361)
                    {
                        if (function.GetAttrState(InverterJinmao_AttrEnum.load_active_power.ToString()) == "0")
                        {
                            continue;
                        }
                        Application.RunOnMainThread(() =>
                        {
                            powerUsageBg.SetRotation(1f * index++);
                        });
                        System.Threading.Thread.Sleep(50);
                        if (index == 361)
                        {
                            index = 1;
                        }
                    }
                }
                catch (Exception ex)
                {
                    MainPage.Log("Error", $"金茂UI控件旋转异常2:{ex.Message}");
                }
            })
            { IsBackground = true }.Start();
            loadElec_ValuesButton = new Button()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealWidth(46),
@@ -508,7 +679,7 @@
                TextSize = 24,
                IsBold = true,
            };
            powerUsageView.AddChidren(powerUsage_ValuesButton);
            powerUsageView.AddChidren(loadElec_ValuesButton);
            var powerUsage_TextButton = new Button()
            {
@@ -538,7 +709,7 @@
            };
            electricityUsageStatusView.AddChidren(powerUsage_TodayValuesButton);
            var powerUsage_TodayTextButton = new Button()
            loadElec_TodayTextButton = new Button()
            {
                X = Application.GetRealWidth(16),
                Y = Application.GetRealWidth(220),
@@ -549,10 +720,9 @@
                TextColor = CSS_Color.TextualColor,
                TextSize = 12,
            };
            electricityUsageStatusView.AddChidren(powerUsage_TodayTextButton);
            electricityUsageStatusView.AddChidren(loadElec_TodayTextButton);
            var powerUsage_MonthValuesButton = new Button()
            loadElec_MonthValuesButton = new Button()
            {
                X = Application.GetRealWidth(16 + 105),
                Y = Application.GetRealWidth(191),
@@ -564,7 +734,7 @@
                TextSize = 18,
                IsBold = true,
            };
            electricityUsageStatusView.AddChidren(powerUsage_MonthValuesButton);
            electricityUsageStatusView.AddChidren(loadElec_MonthValuesButton);
            var powerUsage_MonthTextButton = new Button()
            {
@@ -642,7 +812,7 @@
            };
            contentView.AddChidren(esStatusView);
            var esStatus_InfoView = new FrameLayout()
            esStatus_InfoView = new FrameLayout()
            {
                X = 0 - Application.GetRealWidth(14),
                Y = Application.GetRealWidth(12),
@@ -655,7 +825,7 @@
            };
            esStatusView.AddChidren(esStatus_InfoView);
            var esRunStatus_Info_IconButton = new Button()
            esRunStatus_Info_IconButton = new Button()
            {
                X = Application.GetRealWidth(8 + 14),
                Gravity = Gravity.CenterVertical,
@@ -665,7 +835,7 @@
            };
            esStatus_InfoView.AddChidren(esRunStatus_Info_IconButton);
            var esRunStatus_Info_TextButton = new Button()
            esRunStatus_Info_TextButton = new Button()
            {
                X = Application.GetRealWidth(8 + 14 + 4 + 12),
                TextAlignment = TextAlignment.CenterLeft,
@@ -675,7 +845,7 @@
            };
            esStatus_InfoView.AddChidren(esRunStatus_Info_TextButton);
            var esRunStatus_BatteryValuesButton = new Button()
            esRunStatus_BatteryValuesButton = new Button()
            {
                Y = Application.GetRealWidth(18),
                Height = Application.GetRealWidth(17),
@@ -684,21 +854,19 @@
                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()
            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);
@@ -721,7 +889,7 @@
            };
            esRunStatus_ValuesInfoView.AddChidren(esRunStatus_ChargeValuesView);
            var esRunStatus_ChargeValuesButton = new Button()
            esRunStatus_ChargeValuesButton = new Button()
            {
                Y = Application.GetRealWidth(36),
                Height = Application.GetRealWidth(32),
@@ -746,7 +914,7 @@
            esRunStatus_ChargeValuesView.AddChidren(esRunStatus_ChargeTextButton);
            #endregion
            #region 实时放电功率
            #region 实时用电功率
            var esRunStatus_DischargeValuesView = new FrameLayout()
            {
                X = Application.GetRealWidth(132+13),
@@ -755,7 +923,7 @@
            };
            esRunStatus_ValuesInfoView.AddChidren(esRunStatus_DischargeValuesView);
            var esRunStatus_DischargeValuesButton = new Button()
            esRunStatus_DischargeValuesButton = new Button()
            {
                Y = Application.GetRealWidth(36),
                Height = Application.GetRealWidth(32),
@@ -832,7 +1000,7 @@
            };
            socialContribution_InfoView_1.AddChidren(socialContribution_Info1_IconButton);
            var socialContribution_Info1_ValuesButton = new Button()
            socialContribution_Info1_ValuesButton = new Button()
            {
                X = Application.GetRealWidth(12),
                Y = Application.GetRealWidth(68),
@@ -847,7 +1015,7 @@
            socialContribution_Info1_ValuesButton.Width = socialContribution_Info1_ValuesButton.GetTextWidth() + Application.GetRealWidth(8);
            socialContribution_InfoView_1.AddChidren(socialContribution_Info1_ValuesButton);
            var socialContribution_Info1_UintButton = new Button()
            socialContribution_Info1_UintButton = new Button()
            {
                X = socialContribution_Info1_ValuesButton.Right - Application.GetRealWidth(4),
                Y = Application.GetRealWidth(68),
@@ -898,7 +1066,7 @@
            };
            socialContribution_InfoView_2.AddChidren(socialContribution_Info2_IconButton);
            var socialContribution_Info2_ValuesButton = new Button()
            socialContribution_Info2_ValuesButton = new Button()
            {
                X = Application.GetRealWidth(12),
                Y = Application.GetRealWidth(68),
@@ -913,7 +1081,7 @@
            socialContribution_Info2_ValuesButton.Width = socialContribution_Info2_ValuesButton.GetTextWidth() + Application.GetRealWidth(8);
            socialContribution_InfoView_2.AddChidren(socialContribution_Info2_ValuesButton);
            var socialContribution_Info2_UintButton = new Button()
            socialContribution_Info2_UintButton = new Button()
            {
                X = socialContribution_Info2_ValuesButton.Right - Application.GetRealWidth(4),
                Y = Application.GetRealWidth(68),
@@ -964,7 +1132,7 @@
            };
            socialContribution_InfoView_3.AddChidren(socialContribution_Info3_IconButton);
            var socialContribution_Info3_ValuesButton = new Button()
            socialContribution_Info3_ValuesButton = new Button()
            {
                X = Application.GetRealWidth(12),
                Y = Application.GetRealWidth(68),
@@ -979,7 +1147,7 @@
            socialContribution_Info3_ValuesButton.Width = socialContribution_Info3_ValuesButton.GetTextWidth() + Application.GetRealWidth(8);
            socialContribution_InfoView_3.AddChidren(socialContribution_Info3_ValuesButton);
            var socialContribution_Info3_UintButton = new Button()
            socialContribution_Info3_UintButton = new Button()
            {
                X = socialContribution_Info3_ValuesButton.Right - Application.GetRealWidth(4),
                Y = Application.GetRealWidth(68),
@@ -1010,7 +1178,7 @@
            #endregion
            Control.Ins.SendReadCommand(function);
        }
        /// <summary>
        /// 更新界面数据
@@ -1024,45 +1192,41 @@
            }
            Application.RunOnMainThread(() =>
            {
                try
                {
                /// 更新今日发电量
                if (function.GetAttrState(InverterJinmao_AttrEnum.pv_electricity_today.ToString()) != temp.GetAttrState(InverterJinmao_AttrEnum.pv_electricity_today.ToString()))
                {
                    upatePvGenerateTodayValues();
                }
                /// 更新累计发电量
                if (function.GetAttrState(InverterJinmao_AttrEnum.pv_electricity.ToString()) != temp.GetAttrState(InverterJinmao_AttrEnum.pv_electricity.ToString()))
                {
                    upatePvGenerateTotalValues();
                }
                /// 更新今日用电量
                if (function.GetAttrState(InverterJinmao_AttrEnum.load_electricity_today.ToString()) != temp.GetAttrState(InverterJinmao_AttrEnum.load_electricity_today.ToString()))
                {
                    upatePvLoadTodayValues();
                }
                /// 更新累计用电量
                if (function.GetAttrState(InverterJinmao_AttrEnum.load_electricity.ToString()) != temp.GetAttrState(InverterJinmao_AttrEnum.load_electricity.ToString()))
                {
                    upatePvLoadTotalValues();
                }
                /// 更新光伏运行状态
                if (function.GetAttrState(InverterJinmao_AttrEnum.system_status.ToString()) != temp.GetAttrState(InverterJinmao_AttrEnum.system_status.ToString()))
                {
                    upatePvRunStatus();
                }
                /// 更新光伏发电功能
                if (function.GetAttrState(InverterJinmao_AttrEnum.pv_power.ToString()) != temp.GetAttrState(InverterJinmao_AttrEnum.pv_power.ToString()))
                {
                    upatePvPower();
                }
                    /// 更新光伏发电功率
                    updatePvPower();
                /// 更新光伏本月发电量
                if (function.GetAttrState(InverterJinmao_AttrEnum.pv_electricity_month.ToString()) != temp.GetAttrState(InverterJinmao_AttrEnum.pv_electricity_month.ToString()))
                {
                    upatePvGenerateMonthValues();
                    /// 更新光伏用电功率
                    updateLoadElec();
                    ///更新光伏状态本月用电量
                    updateLoadElecMonthValues();
                    //更新储能运行状态
                    updateEsRunStates();
                    //更新储能电池百分比
                    updateEsBatterySoc();
                    //更新储能实时充电状态
                    updateEsCharge();
                    //更新储能实时放电状态
                    updateEsDischarge();
                    updateSocialContribution1();
                    updateSocialContribution2();
                    updateSocialContribution3();
                }
                /// 更新光伏本年发电量
                if (function.GetAttrState(InverterJinmao_AttrEnum.pv_electricity.ToString()) != temp.GetAttrState(InverterJinmao_AttrEnum.pv_electricity.ToString()))
                catch (Exception ex)
                {
                    upatePvGenerateYearValues();
                    MainPage.Log("Error", $"金茂光伏更新异常:{ex.Message}");
                }
            });
        }
@@ -1083,13 +1247,6 @@
            pvGeneration_MonthValuesButton.Text = function.GetAttrState(InverterJinmao_AttrEnum.pv_electricity_month.ToString());
        }
        /// <summary>
        /// 更新光伏本年发电量
        /// </summary>
        private void upatePvGenerateYearValues()
        {
            pvGeneration_YearValuesButton.Text = function.GetAttrState(InverterJinmao_AttrEnum.pv_electricity.ToString());
        }
        /// <summary>
        /// 更新累计发电量
        /// </summary>
        private void upatePvGenerateTotalValues()
@@ -1101,7 +1258,14 @@
        /// </summary>
        private void upatePvLoadTodayValues()
        {
            pvLoad_TodayValuesButton.Text = function.GetAttrState(InverterJinmao_AttrEnum.load_electricity_today.ToString());
            pvLoad_TodayValuesButton.Text = loadElec_TodayTextButton.Text = function.GetAttrState(InverterJinmao_AttrEnum.load_electricity_today.ToString());
        }
        /// <summary>
        /// 更新本月用电量
        /// </summary>
        private void updateLoadElecMonthValues()
        {
            loadElec_MonthValuesButton.Text = function.GetAttrState(InverterJinmao_AttrEnum.load_electricity_month.ToString());
        }
        /// <summary>
        /// 更新累计用电量
@@ -1142,11 +1306,139 @@
        /// <summary>
        /// 更新光伏发电功率
        /// </summary>
        private void upatePvPower()
        private void updatePvPower()
        {
            pvPower_ValuesButton.Text = function.GetAttrState(InverterJinmao_AttrEnum.pv_power.ToString());
        }
        /// <summary>
        /// 更新光伏用电功率
        /// </summary>
        private void updateLoadElec()
        {
            loadElec_ValuesButton.Text = function.GetAttrState(InverterJinmao_AttrEnum.load_active_power.ToString());
        }
        /// <summary>
        /// 更新储能运行状态
        /// </summary>
        private void updateEsRunStates()
        {
            switch (function.GetAttrState(InverterJinmao_AttrEnum.ess_status.ToString()))
            {
                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;
            }
        }
        /// <summary>
        /// 更新储能电池百分比状态
        /// </summary>
        private void updateEsBatterySoc()
        {
            esRunStatus_BatteryValuesButton.Text = function.GetAttrState(InverterJinmao_AttrEnum.battery_soc.ToString()) + "%";
            if(esRunStatus_BatteryIconButton.Text == "100%")
            {
                esRunStatus_BatteryIconButton.IsSelected = true;
            }
        }
        /// <summary>
        /// 更新储能实时充电状态
        /// </summary>
        private void updateEsCharge()
        {
            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());
        }
        /// <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_UintButton.X = socialContribution_Info1_ValuesButton.Right - Application.GetRealWidth(4);
        }
        /// <summary>
        /// 更新社会贡2献数据UI
        /// </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.Width = socialContribution_Info2_ValuesButton.GetTextWidth();
#endif
            if (socialContribution_Info2_UintButton.Width > Application.GetRealWidth(61))
            {
                socialContribution_Info2_UintButton.TextSize = socialContribution_Info2_UintButton.TextSize - 4;
            }
            socialContribution_Info2_UintButton.X = socialContribution_Info2_ValuesButton.Right - Application.GetRealWidth(4);
        }
        /// <summary>
        /// 更新社会贡3献数据UI
        /// </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.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_UintButton.X = socialContribution_Info3_ValuesButton.Right - Application.GetRealWidth(4);
        }
    }
}
HDL_ON/UI/UI2/FuntionControlView/Acst/WaterHeaterJinmaoPage.cs
@@ -110,8 +110,8 @@
        Button flow_ElectricDriveValuesButton;
        string volumeString = string.Empty;
        string recyclVolumeString = string.Empty;
        double volume = 0;
        double recyclVolume = 0;
        double volume = 0.00;
        double recyclVolume = 0.00;
        int recyclVolumePercent = 0;
        /// <summary>
@@ -181,6 +181,8 @@
            initBottomView();
            initControlEvent();
            Control.Ins.SendReadCommand(function);
            UpdateStatus();
        }
        /// <summary>
        /// 加载内容区域
@@ -190,7 +192,7 @@
            contentView.AddChidren(new Button() { Height = Application.GetRealHeight(16) });
            #region 热水器状态
            var infoView = new FrameLayout()
            FrameLayout infoView = new FrameLayout()
            {
                Gravity = Gravity.CenterHorizontal,
                Width = Application.GetRealWidth(343),
@@ -206,7 +208,7 @@
            {
                X = 0 - Application.GetRealWidth(14),
                Y = Application.GetRealWidth(12),
                Width = Application.GetRealWidth(68 + 14),
                Width = Application.GetRealWidth(82 + 14),
                Height = Application.GetRealWidth(28),
                BackgroundColor = 0x15FC9C04,
                Radius = (uint)Application.GetRealWidth(14),
@@ -255,14 +257,18 @@
                TextAlignment = TextAlignment.TopCenter,
                Text = function.GetAttrState(WaterHeaterJinmao_AttrEnum.temp.ToString(), "---"),
            };
            btnTempValues.Width = btnTempValues.GetTextWidth() + Application.GetRealWidth(8);
            btnTempValues.Width = btnTempValues.GetTextWidth() + Application.GetRealWidth(6);
            if (btnTempValues.Width > Application.GetRealWidth(80))
            {
                btnTempValues.TextSize = 28;
            }
            btnTempValues.Gravity = Gravity.CenterHorizontal;
            infoView_Temp_View.AddChidren(btnTempValues);
            btnTempValuesUint = new Button()
            {
                X = btnTempValues.Right - Application.GetRealWidth(4),
                X = btnTempValues.Right,
                Y = Application.GetRealWidth(40),
                Height = Application.GetRealWidth(66),
                TextAlignment = TextAlignment.TopLeft,
@@ -392,7 +398,7 @@
            #endregion
            #region 设置温度
            #region 温度设置
            var setTempView = new FrameLayout()
            {
                Gravity = Gravity.CenterHorizontal,
@@ -462,13 +468,14 @@
                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,
                ProgressBarColor =  0xFFFFB848 ,
                MaxValue = 60,
                MinValue = 35,
                Progress = setTempValue,
                SeekBarPadding = Application.GetRealWidth(20),
                IsProgressTextShow = false,
                ProgressChangeDelayTime = 0,
            };
            setTemp_Bar.ProgressChangeDelayTime = 0;
            setTempView.AddChidren(setTemp_Bar);
            var setTemp_Temp_MinValuesTextButton = new Button()
@@ -625,8 +632,6 @@
            };
            flowView.AddChidren(flow_HeatRecoverytValuesButton);
            var flow_ElectricDriveTextButton = new Button()
            {
                X = Application.GetRealWidth(343 - 116),
@@ -636,7 +641,7 @@
                TextAlignment = TextAlignment.CenterRight,
                TextSize = 14,
                TextColor = 0xFFFC9C04,
                Text = "电直驱量"
                Text = "电直驱量",
            };
            flowView.AddChidren(flow_ElectricDriveTextButton);
@@ -649,8 +654,12 @@
                TextAlignment = TextAlignment.CenterRight,
                TextSize = 14,
                TextColor = 0xFFFC9C04,
                Text = (100 - recyclVolumePercent) + "%"
                Text = "0%"
            };
            if(volume > 0)
            {
                flow_ElectricDriveProgressButton.Text = (100 - recyclVolumePercent) + "%";
            }
            flowView.AddChidren(flow_ElectricDriveProgressButton);
            flow_ElectricDriveValuesButton = new Button()
@@ -731,7 +740,7 @@
            socialContribution_Info1_UintButton = new Button()
            {
                X = socialContribution_Info1_ValuesButton.Right - Application.GetRealWidth(4),
                X = socialContribution_Info1_ValuesButton.Right ,
                Y = Application.GetRealWidth(68),
                Width = Application.GetRealWidth(50),
                Height = Application.GetRealWidth(23),
@@ -798,7 +807,7 @@
            socialContribution_Info2_UintButton = new Button()
            {
                X = socialContribution_Info2_ValuesButton.Right - Application.GetRealWidth(4),
                X = socialContribution_Info2_ValuesButton.Right ,
                Y = Application.GetRealWidth(68),
                Width = Application.GetRealWidth(50),
                Height = Application.GetRealWidth(23),
@@ -864,7 +873,7 @@
            socialContribution_Info3_UintButton = new Button()
            {
                X = socialContribution_Info3_ValuesButton.Right - Application.GetRealWidth(4),
                X = socialContribution_Info3_ValuesButton.Right ,
                Y = Application.GetRealWidth(68),
                Width = Application.GetRealWidth(50),
                Height = Application.GetRealWidth(23),
@@ -907,7 +916,7 @@
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealWidth(16),
                UnSelectedImagePath = "FunctionIcon/Acst/grey/PowerOffIcon.png",
                SelectedImagePath = $"FunctionIcon/Acst/blue/PowerIcon.png",
                SelectedImagePath = "FunctionIcon/Acst/blue/PowerIcon.png",
                IsSelected = function.trait_on_off.curValue.ToString() == "on"
            };
            bottomView.AddChidren(btnPowerControl);
@@ -935,7 +944,6 @@
            //节能模式控制
            btnControlModeEconomic.MouseUpEventHandler = (sender, e) =>
            {
                if (function.GetAttrState(WaterHeaterJinmao_AttrEnum.mode.ToString()) != WaterHeaterJinmao_Attr_ModeEnum.economic.ToString())
                {
                    new System.Threading.Thread(() =>
                    {
@@ -954,7 +962,6 @@
            //速热模式控制
            btnControlModeQuickHeat.MouseUpEventHandler = (sender, e) =>
            {
                if (function.GetAttrState(WaterHeaterJinmao_AttrEnum.mode.ToString()) != WaterHeaterJinmao_Attr_ModeEnum.quick_heat.ToString())
                {
                    new System.Threading.Thread(() =>
                    {
@@ -970,9 +977,21 @@
                    { IsBackground = true }.Start();
                }
            };
            setTemp_Bar.OnStartTrackingTouchEvent = (sender, e) =>
            {
                contentView.ScrollEnabled = false;
            };
            //设置温度调节
            setTemp_Bar.OnStopTrackingTouchEvent = (sender, e) =>
            {
                contentView.ScrollEnabled = true;
#if __IOS__
                setTemp_ValuesButton.Width = setTemp_ValuesButton.GetTextWidth() + Application.GetRealWidth(8);
#else
            setTemp_ValuesButton.Width = setTemp_ValuesButton.GetTextWidth();
#endif
                setTemp_ValuesButton.Gravity = Gravity.CenterHorizontal;
                setTemp_UintButton.X = setTemp_ValuesButton.Right + Application.GetRealWidth(4);
                new System.Threading.Thread(() =>
                {
                    var dic = new Dictionary<string, string>();
@@ -1007,86 +1026,26 @@
        /// 更新界面状态
        /// </summary>
        /// <param name="temp"></param>
        public static void UpdateStatus(Function temp)
        public static void UpdateStatus()
        {
            if (bodyView == null)
            {
                return;
            }
            //免费热水
            if (bodyView.function.GetAttrState(WaterHeaterJinmao_AttrEnum.mode_free.ToString()) != temp.GetAttrState(WaterHeaterJinmao_AttrEnum.mode_free.ToString()))
            {
                bodyView.function.SetAttrState(WaterHeaterJinmao_AttrEnum.mode_free.ToString(), temp.GetAttrState(WaterHeaterJinmao_AttrEnum.mode_free.ToString()));
                Application.RunOnMainThread(() =>
                {
                    bodyView.updateFreeMode();
                });
            }
            //热水温度
            if (bodyView.function.GetAttrState(WaterHeaterJinmao_AttrEnum.temp.ToString()) != temp.GetAttrState(WaterHeaterJinmao_AttrEnum.temp.ToString()))
            {
                bodyView.function.SetAttrState(WaterHeaterJinmao_AttrEnum.temp.ToString(), temp.GetAttrState(WaterHeaterJinmao_AttrEnum.temp.ToString()));
                Application.RunOnMainThread(() =>
                {
                    bodyView.updateTemp();
                });
            }
            //热水器模式
            if (bodyView.function.GetAttrState(WaterHeaterJinmao_AttrEnum.mode.ToString()) != temp.GetAttrState(WaterHeaterJinmao_AttrEnum.mode.ToString()))
            {
                bodyView.function.SetAttrState(WaterHeaterJinmao_AttrEnum.mode.ToString(), temp.GetAttrState(WaterHeaterJinmao_AttrEnum.mode.ToString()));
                Application.RunOnMainThread(() =>
                {
                    bodyView.updateModeUI();
                });
            }
            //热水器设置温度
            if (bodyView.function.GetAttrState(WaterHeaterJinmao_AttrEnum.set_temp.ToString()) != temp.GetAttrState(WaterHeaterJinmao_AttrEnum.set_temp.ToString()))
            {
                bodyView.function.SetAttrState(WaterHeaterJinmao_AttrEnum.set_temp.ToString(), temp.GetAttrState(WaterHeaterJinmao_AttrEnum.set_temp.ToString()));
                Application.RunOnMainThread(() =>
                {
                    bodyView.updateSetTemp();
                });
            }
            //热水流量
            if (bodyView.function.GetAttrState(WaterHeaterJinmao_AttrEnum.flow.ToString()) != temp.GetAttrState(WaterHeaterJinmao_AttrEnum.flow.ToString()))
            {
                Application.RunOnMainThread(() =>
                {
                    bodyView.updateFlow();
                });
            }
            //热水总量
            if (bodyView.function.GetAttrState(WaterHeaterJinmao_AttrEnum.volume.ToString()) != temp.GetAttrState(WaterHeaterJinmao_AttrEnum.volume.ToString()) ||
                bodyView.function.GetAttrState(WaterHeaterJinmao_AttrEnum.recycl_volume.ToString()) != temp.GetAttrState(WaterHeaterJinmao_AttrEnum.recycl_volume.ToString()))
            {
                Application.RunOnMainThread(() =>
                {
                    bodyView.updateVolume();
                });
            }
            //社会贡献-节电量
            if (bodyView.function.GetAttrState(WaterHeaterJinmao_AttrEnum.energy_electricity.ToString()) != temp.GetAttrState(WaterHeaterJinmao_AttrEnum.energy_electricity.ToString()))
            {
                bodyView.updateSocialContribution1();
            }
            //社会贡献-co2
            if (bodyView.function.GetAttrState(WaterHeaterJinmao_AttrEnum.co2.ToString()) != temp.GetAttrState(WaterHeaterJinmao_AttrEnum.co2.ToString()))
            {
                bodyView.updateSocialContribution2();
            }
            //社会贡献-植树
            if (bodyView.function.GetAttrState(WaterHeaterJinmao_AttrEnum.trees.ToString()) != temp.GetAttrState(WaterHeaterJinmao_AttrEnum.trees.ToString()))
            {
                bodyView.updateSocialContribution3();
            }
            //开关按钮
            if (bodyView.function.GetAttrState(FunctionAttributeKey.OnOff.ToString()) != temp.GetAttrState(FunctionAttributeKey.OnOff.ToString()))
            {
                bodyView.updatePowerButton();
            }
            });
        }
        /// <summary>
@@ -1094,10 +1053,9 @@
        /// </summary>
        private void updateFreeMode()
        {
            if (function.GetAttrState(WaterHeaterJinmao_AttrEnum.mode_free.ToString()) != "true")
            if (function.GetAttrState(WaterHeaterJinmao_AttrEnum.mode_free.ToString()) == "true")
            {
                modeFreeView.BackgroundColor = 0x1500C22D;
                modeFreeView.Width = Width = Application.GetRealWidth(82 + 14);
                modeFree_IconButton.UnSelectedImagePath = "FunctionIcon/Acst/WaterHeater/ModeFree_True.png";
                modeFree_TextButton.Text = "热回收";
                modeFree_TextButton.TextColor = 0xFF00C22D;
@@ -1105,7 +1063,6 @@
            else
            {
                modeFreeView.BackgroundColor = 0x15FC9C04;
                modeFreeView.Width = Width = Application.GetRealWidth(68 + 14);
                modeFree_IconButton.UnSelectedImagePath = "FunctionIcon/Acst/WaterHeater/ModeFree_False.png";
                modeFree_TextButton.Text = "用电";
                modeFree_TextButton.TextColor = 0xFFFC9C04;
@@ -1118,13 +1075,17 @@
        {
            btnTempValues.Text = function.GetAttrState(WaterHeaterJinmao_AttrEnum.temp.ToString(), "---");
#if __IOS__
            btnTempValues.Width = btnTempValues.GetTextWidth() + Application.GetRealWidth(8);
            btnTempValues.Width = btnTempValues.GetTextWidth() + Application.GetRealWidth(6);
#else
            btnTempValues.Width = btnTempValues.GetTextWidth();
#endif
            if (btnTempValues.Width > Application.GetRealWidth(80))
            {
                btnTempValues.TextSize = 28;
            }
            btnTempValues.Gravity = Gravity.CenterHorizontal;
            btnTempValuesUint.X = btnTempValues.Right - Application.GetRealWidth(4);
            btnTempValuesUint.X = btnTempValues.Right ;
        }
        /// <summary>
@@ -1176,12 +1137,12 @@
#endif
            setTemp_ValuesButton.Gravity = Gravity.CenterHorizontal;
            setTemp_UintButton.X = setTemp_ValuesButton.Right - Application.GetRealWidth(4);
            setTemp_UintButton.X = setTemp_ValuesButton.Right + Application.GetRealWidth(4);
            double dd = 0;
            double dd = 35;
            double.TryParse(function.GetAttrState(WaterHeaterJinmao_AttrEnum.set_temp.ToString(), "0"), out dd);
            setTemp_Bar.Progress = Convert.ToInt32(dd) - 35;
            setTemp_Bar.Progress = Convert.ToInt32(dd);
        }
@@ -1209,8 +1170,11 @@
            flow_ValuesBar.Progress = recyclVolumePercent;
            flow_HeatRecoveryProgressButton.Text = recyclVolumePercent + "%";
            flow_HeatRecoverytValuesButton.Text = recyclVolume + "t";
            flow_ElectricDriveProgressButton.Text = (100 - recyclVolumePercent) + "%";
            flow_ElectricDriveValuesButton.Text = (volume - recyclVolume) + "t";
            if (volume > 0)
            {
                flow_ElectricDriveProgressButton.Text = ((int)(100 - recyclVolumePercent)) + "%";
            }
            flow_ElectricDriveValuesButton.Text = (((int)(volume * 100) - (int)(recyclVolume * 100)) / 100.0) + "t";
        }
        /// <summary>
@@ -1224,20 +1188,48 @@
#else
            socialContribution_Info1_ValuesButton.Width = socialContribution_Info1_ValuesButton.GetTextWidth();
#endif
            socialContribution_Info1_UintButton.X = socialContribution_Info1_ValuesButton.Right - Application.GetRealWidth(4);
            if (socialContribution_Info1_ValuesButton.Width > Application.GetRealWidth(61))
            {
                socialContribution_Info1_ValuesButton.TextSize = 14;
#if __IOS__
                socialContribution_Info1_ValuesButton.Width = socialContribution_Info1_ValuesButton.GetTextWidth() + Application.GetRealWidth(8);
#else
            socialContribution_Info1_ValuesButton.Width = socialContribution_Info1_ValuesButton.GetTextWidth();
#endif
                socialContribution_Info1_UintButton.Height = Application.GetRealWidth(25);
            }
#if __IOS__
            socialContribution_Info1_UintButton.X = socialContribution_Info1_ValuesButton.Right ;
#else
            socialContribution_Info1_UintButton.X = socialContribution_Info1_ValuesButton.Right +Application.GetRealWidth(2);
#endif
        }
        /// <summary>
        /// 更新社会贡2献数据UI
        /// </summary>
        private void updateSocialContribution2()
        {
            socialContribution_Info3_ValuesButton.Text = function.GetAttrState(WaterHeaterJinmao_AttrEnum.co2.ToString());
            socialContribution_Info2_ValuesButton.Text = function.GetAttrState(WaterHeaterJinmao_AttrEnum.co2.ToString());
#if __IOS__
            socialContribution_Info3_ValuesButton.Width = socialContribution_Info2_ValuesButton.GetTextWidth() + Application.GetRealWidth(8);
            socialContribution_Info2_ValuesButton.Width = socialContribution_Info2_ValuesButton.GetTextWidth() + Application.GetRealWidth(8);
#else
            socialContribution_Info2_ValuesButton.Width = socialContribution_Info2_ValuesButton.GetTextWidth();
#endif
            socialContribution_Info2_UintButton.X = socialContribution_Info2_ValuesButton.Right - Application.GetRealWidth(4);
            if (socialContribution_Info2_ValuesButton.Width > Application.GetRealWidth(61))
            {
                socialContribution_Info2_ValuesButton.TextSize = 14;
#if __IOS__
                socialContribution_Info2_ValuesButton.Width = socialContribution_Info2_ValuesButton.GetTextWidth() + Application.GetRealWidth(8);
#else
            socialContribution_Info2_ValuesButton.Width = socialContribution_Info2_ValuesButton.GetTextWidth();
#endif
                socialContribution_Info2_UintButton.Y = socialContribution_Info2_UintButton.Y - Application.GetRealWidth(4);
            }
#if __IOS__
            socialContribution_Info2_UintButton.X = socialContribution_Info2_ValuesButton.Right;
#else
            socialContribution_Info2_UintButton.X = socialContribution_Info2_ValuesButton.Right +Application.GetRealWidth(2);
#endif
        }
        /// <summary>
@@ -1252,7 +1244,20 @@
#else
            socialContribution_Info3_ValuesButton.Width = socialContribution_Info3_ValuesButton.GetTextWidth();
#endif
            socialContribution_Info3_UintButton.X = socialContribution_Info3_ValuesButton.Right - Application.GetRealWidth(4);
            if (socialContribution_Info3_ValuesButton.Width > Application.GetRealWidth(61))
            {
                socialContribution_Info3_ValuesButton.TextSize = 14;
#if __IOS__
                socialContribution_Info3_ValuesButton.Width = socialContribution_Info3_ValuesButton.GetTextWidth() + Application.GetRealWidth(8);
#else
            socialContribution_Info3_ValuesButton.Width = socialContribution_Info3_ValuesButton.GetTextWidth();
#endif
            }
#if __IOS__
            socialContribution_Info3_UintButton.X = socialContribution_Info3_ValuesButton.Right;
#else
            socialContribution_Info3_UintButton.X = socialContribution_Info3_ValuesButton.Right +Application.GetRealWidth(2);
#endif
        }
        /// <summary>
@@ -1262,8 +1267,6 @@
        {
            btnPowerControl.IsSelected = function.GetAttrState(FunctionAttributeKey.OnOff.ToString()) == "on";
        }
    }
}
HDL_ON/UI/UI2/FuntionControlView/Acst/WetarHeaterJinmaoHistoryPage.cs
@@ -215,40 +215,40 @@
            tempEchartOption = new EchartsOption_Histogram();
            tempEchartOption.xTitle = "时间";
            tempEchartOption.yTitle = "温度(℃)";
            tempEchartOption.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"
            });
            tempEchartOption.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 = tempEchartOption.InitOption();
            infoView1_EchartsView.ShowWithOption(ddd);
            //tempEchartOption.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"
            //});
            //tempEchartOption.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 = tempEchartOption.InitOption();
            //infoView1_EchartsView.ShowWithOption(ddd);
            infoView1.AddChidren(new Button()
            {
@@ -420,39 +420,39 @@
            echartOption2 = new EchartsOption_Histogram();
            echartOption2.xTitle = "时间";
            echartOption2.yTitle = "用水量(t)";
            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());
            //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()
            {
@@ -476,6 +476,8 @@
            });
            initQueryButton();
            getTempHistory();
            getWaterHistory();
        }
@@ -493,6 +495,7 @@
            var loadPage = new Loading()
            {
                LodingBackgroundColor = 0x88888888,
                BackgroundColor = 0x00FFFFFF,
            };
            infoView1.AddChidren(loadPage);
@@ -502,7 +505,7 @@
                {
                    Application.RunOnMainThread(() =>
                    {
                        loadPage.Start(Language.StringByID(StringId.PleaseWait));
                        loadPage.Start();
                    });
                    switch (tempQueryType)
@@ -566,6 +569,7 @@
            var loadPage = new Loading()
            {
                LodingBackgroundColor = 0x88888888,
                BackgroundColor = 0x00FFFFFF,
            };
            infoView2.AddChidren(loadPage);
@@ -575,7 +579,7 @@
                {
                    Application.RunOnMainThread(() =>
                    {
                        loadPage.Start(Language.StringByID(StringId.PleaseWait));
                        loadPage.Start();
                    });
                    switch (waterQueryType)
                    {
@@ -637,102 +641,68 @@
                var tempQueryDate = new DateTime(tempQueryTime_Year,tempQueryTime_Month,tempQueryTime_Day);
                if (tempQueryType == QueryType.day_hour)
                {
                    tempQueryDate = tempQueryDate.AddDays(-1);
                    if(tempQueryDate.Year == 2023 && tempQueryDate.Month == 1 && tempQueryDate.Day == 1)
                    {
                        infoView1_DateInfo_PreIconButton.Visible = false;
                        infoView1_DateInfo_PreClickButton.Enable = false;
                        return;
                    }
                    if (tempQueryDate.Year == DateTime.Now.Year && tempQueryDate.Month == DateTime.Now.Month && tempQueryDate.Day == DateTime.Now.Day - 1)
                    {
                        infoView1_DateInfo_NextIconButton.Visible = true;
                        infoView1_DateInfo_NextClickButton.Enable = true;
                    }
                    tempQueryDate = tempQueryDate.AddDays(-1);
                infoView1_DateInfo_DateTextButton.Text = tempQueryDate.ToString("yyyy-MM-dd");
                }
                else if(tempQueryType == QueryType.custom_month)
                {
                    tempQueryDate = tempQueryDate.AddMonths(-1);
                    if (tempQueryDate.Year == 2023 && tempQueryDate.Month == 1)
                    {
                        infoView1_DateInfo_PreIconButton.Visible = false;
                        infoView1_DateInfo_PreClickButton.Enable = false;
                        return;
                    }
                    if (tempQueryDate.Year == DateTime.Now.Year && tempQueryDate.Month == DateTime.Now.Month - 1)
                    {
                        infoView1_DateInfo_NextIconButton.Visible = true;
                        infoView1_DateInfo_NextClickButton.Enable = true;
                    }
                    tempQueryDate = tempQueryDate.AddMonths(-1);
                infoView1_DateInfo_DateTextButton.Text = tempQueryDate.ToString("yyyy-MM");
                }
                else if(tempQueryType == QueryType.custom_year)
                {
                    tempQueryDate = tempQueryDate.AddYears(-1);
                    if (tempQueryDate.Year == 2023)
                    {
                        infoView1_DateInfo_PreIconButton.Visible = false;
                        infoView1_DateInfo_PreClickButton.Enable = false;
                        return;
                    }
                    if (tempQueryDate.Year == DateTime.Now.Year - 1)
                    {
                        infoView1_DateInfo_NextIconButton.Visible = true;
                        infoView1_DateInfo_NextClickButton.Enable = true;
                    }
                    tempQueryDate = tempQueryDate.AddYears(-1);
                infoView1_DateInfo_DateTextButton.Text = tempQueryDate.ToString("yyyy");
                }
                tempQueryTime_Year = tempQueryDate.Year;
                tempQueryTime_Month = tempQueryDate.Month;
                tempQueryTime_Day = tempQueryDate.Day;
                infoView1_DateInfo_DateTextButton.Text = tempQueryDate.ToString("yyyy-MM-dd");
                getTempHistory();
            };
            infoView1_DateInfo_NextIconButton.Visible = false;
            infoView1_DateInfo_NextClickButton.Enable = false;
            infoView1_DateInfo_NextClickButton.MouseUpEventHandler = (sender, e) => {
                var tempQueryDate = new DateTime(tempQueryTime_Year, tempQueryTime_Month, tempQueryTime_Day);
                if (tempQueryType == QueryType.day_hour)
                {
                    tempQueryDate = tempQueryDate.AddDays(1);
                    if (tempQueryDate.Year == 2023 && tempQueryDate.Month == 1 && tempQueryDate.Day == 2)
                    {
                        infoView1_DateInfo_PreIconButton.Visible = true;
                        infoView1_DateInfo_PreClickButton.Enable = true;
                    }
                    if (tempQueryDate.Year == DateTime.Now.Year && tempQueryDate.Month == DateTime.Now.Month && tempQueryDate.Day == DateTime.Now.Day)
                    {
                        infoView1_DateInfo_NextIconButton.Visible = false;
                        infoView1_DateInfo_NextClickButton.Enable = false;
                        return;
                    }
                    tempQueryDate = tempQueryDate.AddDays(1);
                infoView1_DateInfo_DateTextButton.Text = tempQueryDate.ToString("yyyy-MM-dd");
                }
                else if (tempQueryType == QueryType.custom_month)
                {
                    tempQueryDate = tempQueryDate.AddMonths(1);
                    if (tempQueryDate.Year == 2023 && tempQueryDate.Month == 2)
                    {
                        infoView1_DateInfo_PreIconButton.Visible = true;
                        infoView1_DateInfo_PreClickButton.Enable = true;
                    }
                    if (tempQueryDate.Year == DateTime.Now.Year && tempQueryDate.Month == DateTime.Now.Month )
                    {
                        infoView1_DateInfo_NextIconButton.Visible = false;
                        infoView1_DateInfo_NextClickButton.Enable = false;
                        return;
                    }
                    tempQueryDate = tempQueryDate.AddMonths(1);
                infoView1_DateInfo_DateTextButton.Text = tempQueryDate.ToString("yyyy-MM");
                }
                else if (tempQueryType == QueryType.custom_year)
                {
                    tempQueryDate = tempQueryDate.AddYears(1);
                    if (tempQueryDate.Year == 2023)
                    {
                        infoView1_DateInfo_PreIconButton.Visible = false;
                        infoView1_DateInfo_PreClickButton.Enable = false;
                    }
                    if (tempQueryDate.Year == DateTime.Now.Year)
                    {
                        infoView1_DateInfo_NextIconButton.Visible = false;
                        infoView1_DateInfo_NextClickButton.Enable = false;
                        return;
                    }
                    tempQueryDate = tempQueryDate.AddYears(1);
                infoView1_DateInfo_DateTextButton.Text = tempQueryDate.ToString("yyyy");
                }
                tempQueryTime_Year = tempQueryDate.Year;
                tempQueryTime_Month = tempQueryDate.Month;
                tempQueryTime_Day = tempQueryDate.Day;
                infoView1_DateInfo_DateTextButton.Text = tempQueryDate.ToString("yyyy-MM-dd");
                getTempHistory();
            };
@@ -781,102 +751,68 @@
                var waterQueryDate = new DateTime(waterQueryTime_Year, waterQueryTime_Month, waterQueryTime_Day);
                if (waterQueryType == QueryType.day_hour)
                {
                    waterQueryDate = waterQueryDate.AddDays(-1);
                    if (waterQueryDate.Year == 2023 && waterQueryDate.Month == 1 && waterQueryDate.Day == 1)
                    {
                        infoView2_DateInfo_PreIconButton.Visible = false;
                        infoView2_DateInfo_PreClickButton.Enable = false;
                        return;
                    }
                    if (waterQueryDate.Year == DateTime.Now.Year && waterQueryDate.Month == DateTime.Now.Month && waterQueryDate.Day == DateTime.Now.Day - 1)
                    {
                        infoView2_DateInfo_NextIconButton.Visible = true;
                        infoView2_DateInfo_NextClickButton.Enable = true;
                    }
                    waterQueryDate = waterQueryDate.AddDays(-1);
                infoView2_DateInfo_DateTextButton.Text = waterQueryDate.ToString("yyyy-MM-dd");
                }
                else if (waterQueryType == QueryType.custom_month)
                {
                    waterQueryDate = waterQueryDate.AddMonths(-1);
                    if (waterQueryDate.Year == 2023 && waterQueryDate.Month == 1)
                    {
                        infoView2_DateInfo_PreIconButton.Visible = false;
                        infoView2_DateInfo_PreClickButton.Enable = false;
                        return;
                    }
                    if (waterQueryDate.Year == DateTime.Now.Year && waterQueryDate.Month == DateTime.Now.Month - 1)
                    {
                        infoView2_DateInfo_NextIconButton.Visible = true;
                        infoView2_DateInfo_NextClickButton.Enable = true;
                    }
                    waterQueryDate = waterQueryDate.AddMonths(-1);
                infoView2_DateInfo_DateTextButton.Text = waterQueryDate.ToString("yyyy-MM");
                }
                else if (waterQueryType == QueryType.custom_year)
                {
                    waterQueryDate = waterQueryDate.AddYears(-1);
                    if (waterQueryDate.Year == 2023)
                    {
                        infoView2_DateInfo_PreIconButton.Visible = false;
                        infoView2_DateInfo_PreClickButton.Enable = false;
                        return;
                    }
                    if (waterQueryDate.Year == DateTime.Now.Year - 1)
                    {
                        infoView2_DateInfo_NextIconButton.Visible = true;
                        infoView2_DateInfo_NextClickButton.Enable = true;
                    }
                    waterQueryDate = waterQueryDate.AddYears(-1);
                infoView2_DateInfo_DateTextButton.Text = waterQueryDate.ToString("yyyy");
                }
                waterQueryTime_Year = waterQueryDate.Year;
                waterQueryTime_Month = waterQueryDate.Month;
                waterQueryTime_Day = waterQueryDate.Day;
                infoView2_DateInfo_DateTextButton.Text = waterQueryDate.ToString("yyyy-MM-dd");
                getWaterHistory();
            };
            infoView2_DateInfo_NextIconButton.Visible = false;
            infoView2_DateInfo_NextClickButton.Enable = false;
            infoView2_DateInfo_NextClickButton.MouseUpEventHandler = (sender, e) => {
                var waterQueryDate = new DateTime(waterQueryTime_Year, waterQueryTime_Month, waterQueryTime_Day);
                if (waterQueryType == QueryType.day_hour)
                {
                    waterQueryDate = waterQueryDate.AddDays(1);
                    if (waterQueryDate.Year == 2023 && waterQueryDate.Month == 1 && waterQueryDate.Day == 2)
                    {
                        infoView2_DateInfo_PreIconButton.Visible = true;
                        infoView2_DateInfo_PreClickButton.Enable = true;
                        return;
                    }
                    if (waterQueryDate.Year == DateTime.Now.Year && waterQueryDate.Month == DateTime.Now.Month && waterQueryDate.Day == DateTime.Now.Day)
                    {
                        infoView2_DateInfo_NextIconButton.Visible = false;
                        infoView2_DateInfo_NextClickButton.Enable = false;
                    }
                    waterQueryDate = waterQueryDate.AddDays(1);
                infoView2_DateInfo_DateTextButton.Text = waterQueryDate.ToString("yyyy-MM-dd");
                }
                else if (waterQueryType == QueryType.custom_month)
                {
                    waterQueryDate = waterQueryDate.AddMonths(1);
                    if (waterQueryDate.Year == 2023 && waterQueryDate.Month == 2)
                    {
                        infoView2_DateInfo_PreIconButton.Visible = true;
                        infoView2_DateInfo_PreClickButton.Enable = true;
                    }
                    if (waterQueryDate.Year == DateTime.Now.Year && waterQueryDate.Month == DateTime.Now.Month)
                    {
                        infoView2_DateInfo_NextIconButton.Visible = false;
                        infoView2_DateInfo_NextClickButton.Enable = false;
                        return;
                    }
                    waterQueryDate = waterQueryDate.AddMonths(1);
                infoView2_DateInfo_DateTextButton.Text = waterQueryDate.ToString("yyyy-MM");
                }
                else if (waterQueryType == QueryType.custom_year)
                {
                    waterQueryDate = waterQueryDate.AddYears(1);
                    if (waterQueryDate.Year == 2023)
                    {
                        infoView2_DateInfo_PreIconButton.Visible = false;
                        infoView2_DateInfo_PreClickButton.Enable = false;
                        return;
                    }
                    if (waterQueryDate.Year == DateTime.Now.Year)
                    {
                        infoView2_DateInfo_NextIconButton.Visible = false;
                        infoView2_DateInfo_NextClickButton.Enable = false;
                    }
                    waterQueryDate = waterQueryDate.AddYears(1);
                infoView2_DateInfo_DateTextButton.Text = waterQueryDate.ToString("yyyy");
                }
                waterQueryTime_Year = waterQueryDate.Year;
                waterQueryTime_Month = waterQueryDate.Month;
                waterQueryTime_Day = waterQueryDate.Day;
                infoView2_DateInfo_DateTextButton.Text = waterQueryDate.ToString("yyyy-MM-dd");
                getWaterHistory();
            };
            infoView2_Date_Day.MouseDownEventHandler = (sender, e) => {
@@ -1107,6 +1043,10 @@
                }
                if (pickerItems_Month != null)
                {
                    if (int2 > pickerItems_Month.Count)
                    {
                        int2 = 0;
                    }
                    if (pickerItems_Month[int2] != item2.ToString())
                    {
                        int.TryParse(pickerItems_Month[int2], out item2);
@@ -1362,6 +1302,10 @@
                }
                if (pickerItems_Month != null)
                {
                    if (int2 > pickerItems_Month.Count)
                    {
                        int2 = 0;
                    }
                    if (pickerItems_Month[int2] != item2.ToString())
                    {
                        int.TryParse(pickerItems_Month[int2], out item2);
HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPage.cs
@@ -240,7 +240,6 @@
            };
            controlView.AddChidren(btnIndoorTemp);
           
            btnMinus = new Button()
            {
                X = Application.GetRealWidth(21),
SiriIntents/Server/HttpUtil.cs
@@ -16,15 +16,13 @@
        /// 固定域名,正式环境
        /// 公共域名就近解析
        /// </summary>
        //public const string GlobalRequestHttpsHost = "https://nearest.hdlcontrol.com";
        //const string APP_KEY = "HDL-HOME-APP";
        //const string SECRET_KEY = "CPL345bn28gHnvi9G4tYbq3cTYkiHC";
        public const string GlobalRequestHttpsHost = "https://nearest.hdlcontrol.com";
        const string APP_KEY = "HDL-HOME-APP";
        const string SECRET_KEY = "CPL345bn28gHnvi9G4tYbq3cTYkiHC";
        public const string GlobalRequestHttpsHost = "https://test-gz.hdlcontrol.com";
        public const string APP_KEY = "HDL-HOME-APP-TEST";
        public const string SECRET_KEY = "WeJ8TY88vbakCcnvH8G1tDUqzLWY8yss";
        //public const string GlobalRequestHttpsHost = "https://test-gz.hdlcontrol.com";
        //public const string APP_KEY = "HDL-HOME-APP-TEST";
        //public const string SECRET_KEY = "WeJ8TY88vbakCcnvH8G1tDUqzLWY8yss";
        //public const string GlobalRequestHttpsHost = "http://59.41.255.150:7777";//mmmm
        //const string APP_KEY = "CPEVRLRT";
SiriIntents/SiriIntents.csproj
@@ -28,7 +28,7 @@
    <MtouchHttpClientHandler>NSUrlSessionHandler</MtouchHttpClientHandler>
    <DeviceSpecificBuild>false</DeviceSpecificBuild>
    <MtouchVerbosity></MtouchVerbosity>
    <CodesignProvision>0002-OnProSiri-240704-1-Dev</CodesignProvision>
    <CodesignProvision>0002-OnProSiri-240905-1-Dev</CodesignProvision>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
    <DebugType>pdbonly</DebugType>
@@ -37,7 +37,7 @@
    <DefineConstants></DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <CodesignKey>Apple Development: xuebiao huang (4P32GXQWWK)</CodesignKey>
    <CodesignKey>Apple Distribution: HDL Automation Co., Ltd (BVTA78PRYA)</CodesignKey>
    <MtouchUseLlvm>true</MtouchUseLlvm>
    <MtouchFloat32>true</MtouchFloat32>
    <CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
@@ -45,7 +45,7 @@
    <MtouchArch>ARM64</MtouchArch>
    <MtouchHttpClientHandler>NSUrlSessionHandler</MtouchHttpClientHandler>
    <MtouchVerbosity></MtouchVerbosity>
    <CodesignProvision>0002-OnProSiri-240830-1-Dev</CodesignProvision>
    <CodesignProvision>0002-OnProSiri-240905-1-Hoc</CodesignProvision>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhoneSimulator' ">
    <DebugType>pdbonly</DebugType>
@@ -81,7 +81,7 @@
    <MtouchArch>ARM64</MtouchArch>
    <MtouchHttpClientHandler>NSUrlSessionHandler</MtouchHttpClientHandler>
    <MtouchVerbosity></MtouchVerbosity>
    <CodesignProvision>0002-OnProSiri-240704-1-Dev</CodesignProvision>
    <CodesignProvision>0002-OnProSiri-240905-1-Dev</CodesignProvision>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="System" />
SiriIntentsUI/SiriIntentsUI.csproj
@@ -29,7 +29,7 @@
    <DeviceSpecificBuild>false</DeviceSpecificBuild>
    <MtouchVerbosity></MtouchVerbosity>
    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
    <CodesignProvision>0002-OnProSiriUI-240704-1-Dev</CodesignProvision>
    <CodesignProvision>0002-OnProSiriUI-240905-1-Dev</CodesignProvision>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
    <DebugType>pdbonly</DebugType>
@@ -47,7 +47,7 @@
    <MtouchHttpClientHandler>NSUrlSessionHandler</MtouchHttpClientHandler>
    <MtouchVerbosity></MtouchVerbosity>
    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
    <CodesignProvision>0002-OnProSiriUI-240703-1-Hoc</CodesignProvision>
    <CodesignProvision>0002-OnProSiriUI-240905-1-Hoc</CodesignProvision>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhoneSimulator' ">
    <DebugType>pdbonly</DebugType>
@@ -85,7 +85,7 @@
    <MtouchHttpClientHandler>NSUrlSessionHandler</MtouchHttpClientHandler>
    <MtouchVerbosity></MtouchVerbosity>
    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
    <CodesignProvision></CodesignProvision>
    <CodesignProvision>0002-OnProSiriUI-240905-1-Dev</CodesignProvision>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="System" />