wxr
2022-09-20 d8dd712b682362671ed81554ce4e5a2979f78cc8
绿建科技系统
11个文件已添加
14个文件已修改
1038 ■■■■■ 已修改文件
HDL-ON_Android/Assets/Language.ini 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/CollectionIcon.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/CoolIcon.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/MsgViewBg.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/NightIcon.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/PowerOffIcon.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/PowerOnIcon.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/TempAndHumiBack.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/TopViewBg.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/HDL-ON_Android.csproj 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Common/R.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/Server/HttpServerRequest.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Entity/DB_ResidenceData.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Entity/Enumerative/MyEnum.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Entity/Function/Acst.cs 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Entity/Function/Function.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Entity/FunctionList.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/HDL_ON.projitems 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/MainPage.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI1-Login/LoginPage.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/1-HomePage/HomePage.cs 146 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Acst/AcstParentPage.cs 585 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Acst/AcstSubPage.cs 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Language.ini
@@ -1771,6 +1771,7 @@
566=当前发电功率: ----w
567=电池SOC: --%
568=运行数量/总数量: --/--
569=人居环境
 
HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/CollectionIcon.png
HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/CoolIcon.png
HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/MsgViewBg.png
HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/NightIcon.png
HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/PowerOffIcon.png
HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/PowerOnIcon.png
HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/TempAndHumiBack.png
HDL-ON_Android/Assets/Phone/FunctionIcon/Acst/blue/TopViewBg.png
HDL-ON_Android/HDL-ON_Android.csproj
@@ -290,6 +290,14 @@
    <AndroidAsset Include="Assets\h5\static\img\co2-reduction-ic.9c75228c.png" />
    <AndroidAsset Include="Assets\h5\static\img\equal-plant-ic.7ef6befa.png" />
    <AndroidAsset Include="Assets\h5\static\img\coal-save-ic.6c5fd125.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Acst\blue\PowerOnIcon.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Acst\blue\NightIcon.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Acst\blue\CoolIcon.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Acst\blue\TempAndHumiBack.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Acst\blue\CollectionIcon.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Acst\blue\TopViewBg.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Acst\blue\PowerOffIcon.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Acst\blue\MsgViewBg.png" />
  </ItemGroup>
  <ItemGroup>
    <AndroidResource Include="Resources\values\colors.xml" />
@@ -1498,6 +1506,7 @@
    <Folder Include="Zxing\" />
    <Folder Include="Assets\Phone\FunctionIcon\CAC\" />
    <Folder Include="Assets\Phone\FunctionIcon\Panel\" />
    <Folder Include="Assets\Phone\FunctionIcon\Acst\" />
  </ItemGroup>
  <Import Project="..\HDL_ON\HDL_ON.projitems" Label="Shared" Condition="Exists('..\HDL_ON\HDL_ON.projitems')" />
  <Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
HDL_ON/Common/R.cs
@@ -4,7 +4,13 @@
{
    public static class StringId
    {
        /// <summary>
        /// 科技
        /// </summary>
        public const int Acst = 569;
        /// <summary>
        /// 运行数量/总数量: --/--
        /// </summary>
        public const int OperationDataTotalData = 568;
        /// <summary>
        /// 电池SOC
HDL_ON/DAL/Server/HttpServerRequest.cs
@@ -551,7 +551,7 @@
                {
                    foreach (var home in homeList)
                    {
                        if (home.isBindGateway)
                        if (home.isBindGateway)//是否绑定网关
                        {
                            UserInfo.Current.regionList.Add(home);
                            //新绑定的住宅,直接切换到新住宅
@@ -1414,7 +1414,7 @@
                            MainPage.cityInfo.weather = jt.GetValue("Weather").ToString();
                            MainPage.cityInfo.lowestTemperature = jt.GetValue("lowestTemperature").ToString();
                            MainPage.cityInfo.highestTemperature = jt.GetValue("highestTemperature").ToString();
                            MainPage.CityWeatherAction?.Invoke();
                            break;
                        }
                        catch (Exception ex)
HDL_ON/Entity/DB_ResidenceData.cs
@@ -78,7 +78,7 @@
                                    ShowFunction.FreshAir,ShowFunction.DoorLock,
                                    ShowFunction.Panel,ShowFunction.SecurityMonitoring,
                                    ShowFunction.Sensor,ShowFunction.VideoIntercom,
                                    ShowFunction.SecurityCenter
                                    ShowFunction.SecurityCenter,ShowFunction.Acst,
                                });
                        instance.SaveResidenceData();
                        instance.residenceImage = "Classification/Room/Roombg.png";
@@ -119,7 +119,7 @@
                                    ShowFunction.FreshAir,ShowFunction.DoorLock,
                                    ShowFunction.Panel,ShowFunction.SecurityMonitoring,
                                    ShowFunction.Sensor,ShowFunction.VideoIntercom,
                                    ShowFunction.SecurityCenter
                                    ShowFunction.SecurityCenter,ShowFunction.Acst,
                                });
                        instance.SupportFacePass = false;
                        instance.SaveResidenceData();
HDL_ON/Entity/Enumerative/MyEnum.cs
@@ -173,6 +173,10 @@
        /// 安防中心
        /// </summary>
        SecurityCenter  = 0x22,
        /// <summary>
        /// 绿建科技系统
        /// </summary>
        Acst = 0x23,
    }
HDL_ON/Entity/Function/Acst.cs
New file
@@ -0,0 +1,102 @@
using System;
using Shared;
namespace HDL_ON.Entity
{
    /// <summary>
    /// 空调科技系统 (绿建)
    /// </summary>
    public class Acst
    {
        public Acst()
        {
        }
    }
    #region 空调科技系统 (绿建) 总控
    /// <summary>
    /// 空调科技系统 (绿建)
    /// 总控
    /// </summary>
    public class AcstParent : Function
    {
    }
    /// <summary>
    /// 空调科技系统 (绿建)
    /// 总控
    /// 属性枚举
    /// </summary>
    public enum AcstParent_AttrEnum
    {
        on_off,// 开关
        mode,//模式
        scene,//  场景 WR
        day_electricity,// 今日耗电量(kW·h)    R float        0-999999
        month_electricity,// 本月耗电量(kW·h)    R float        0-999999
        total_electricity,// 总耗电量(kW·h)    R float        0-999999
        active_power,// 用电功率    R float        0-999999
        room_temp,// 室内温度    R            -30 - 100
        room_humidity,// 室内湿度    R float    %    0-100
        co2,// CO2值    R integer    %d ppm
        tvoc,// tvoc值   R integer    %d mg/m3
        pm25,//    PM2.5值 R   integer    %d ppm
    }
    /// <summary>
    /// 空调科技系统 (绿建)
    /// 总控
    /// 模式属性值枚举
    /// </summary>
    public enum AcstParent_Attr_ModeValueEnum
    {
        cool,//制冷
        heat,//制热
        fan,//通风
        dry,//除湿
        humidity,//加湿
        heat_humidity,//制热加湿
    }
    /// <summary>
    /// 空调科技系统 (绿建)
    /// 总控
    /// 场景属性值枚举
    /// </summary>
    public enum AcstParent_Attr_SceneValueEnum
    {
        at_home,//在家
        leave_home,//离家
        sleep,//睡眠
    }
    #endregion
    #region 空调科技系统 (绿建)子控
    /// <summary>
    /// 空调科技系统 (绿建)
    /// 子控
    /// </summary>
    public class AcstSub
    {
    }
    /// <summary>
    /// 空调科技系统 (绿建)
    /// 子控
    /// 属性枚举
    /// </summary>
    public enum AcstSub_AttrEnum
    {
        on_off,//  开关  WR    string        on/off  on
        set_temp,//    设置温度    WR    float        -30-100
        set_temp_step,//   温度加减    W    string        up/down
        room_temp,//   室内温度    R    float
        room_humidity,//   室内湿度    R    float    %    0-100
    }
    #endregion
}
HDL_ON/Entity/Function/Function.cs
@@ -1318,6 +1318,17 @@
        public const string OtherCommon = "other.common";
        /// <summary>
        /// 空调科技系统(绿建)
        /// 总控
        /// </summary>
        public const string AcstParent = "acst.parent";
        /// <summary>
        /// 空调科技系统(绿建)
        /// 子控
        /// </summary>
        public const string AcstSub = "acst.sub";
        /// <summary>
        /// 门锁
        /// </summary>
        public const string DoorLock = "security.door";
HDL_ON/Entity/FunctionList.cs
@@ -41,6 +41,26 @@
        public List<Function> Functions = new List<Function>();
        /// <summary>
        /// 绿建科技系统
        /// 总控列表
        /// </summary>
        /// <returns></returns>
        public List<Function> GetAcstParentList()
        {
            return Functions.FindAll((obj) => obj.spk == SPK.AcstParent);
        }
        /// <summary>
        /// 绿建科技系统
        /// 子控列表
        /// </summary>
        /// <returns></returns>
        public List<Function> GetAcstSubList()
        {
            return Functions.FindAll((obj) => obj.spk == SPK.AcstSub);
        }
        /// <summary>
        /// 空调列表
        /// </summary>
        /// <returns></returns>
HDL_ON/HDL_ON.projitems
@@ -515,6 +515,9 @@
    <Compile Include="$(MSBuildThisFileDirectory)DAL\DriverLayer\Control_Tcp.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Entity\Function\InverterInfo.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\H5Page.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Entity\Function\Acst.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Acst\AcstParentPage.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Acst\AcstSubPage.cs" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="$(MSBuildThisFileDirectory)Entity\Device\" />
@@ -541,5 +544,6 @@
    <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddDevice\SenesorEnvironment\" />
    <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Light\LightScene\" />
    <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\FaceManagement\" />
    <Folder Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Acst\" />
  </ItemGroup>
</Project>
HDL_ON/UI/MainPage.cs
@@ -37,6 +37,11 @@
        /// </summary>
        public static Entity.CityInfo cityInfo = new Entity.CityInfo();
        /// <summary>
        /// 城市天气信息antion
        /// </summary>
        public static Action CityWeatherAction = null;
        /// <summary>
        /// 天气刷新action
        /// </summary>
        public static Action RefreshAir;
HDL_ON/UI/UI1-Login/LoginPage.cs
@@ -218,7 +218,7 @@
                    //etAccount.Text = "13450425807";//黄竹溪 knx项目
                    etAccount.Text = "18244942707";
                    etAccount.Text = "tf@smarttech.com.ua";
                    etAccount.Text = "13418062953";
                    etAccount.Text = "15871702179";
                }
                else
                {
@@ -251,7 +251,7 @@
                    //etAccount.Text = "s.savinov@hdlautomation.ru";
                }
                b = !b;
                etPassword.Text = "123456";
                etPassword.Text = "qunhui105113";
                if(etAccount.Text == "13418062953")
                {
                    etPassword.Text = "a123456";
HDL_ON/UI/UI2/1-HomePage/HomePage.cs
@@ -193,36 +193,6 @@
#if DEBUG
                btnResidenceName.MouseUpEventHandler = (sender, e) =>
                {
                        var imageUrl = ImageUtlis.Current.GetSceneDefaultIconList();
                    if (imageUrl != null)
                    {
                    }
                    //if (UserInfo.Current.VerOpenDoorPw || string.IsNullOrEmpty(UserInfo.Current.doorPasswordString))
                    //{
                    //    var page = new DoorLockUnlockPage(new Function());
                    //    MainPage.BasePageView.AddChidren(page);
                    //    page.LoadView();
                    //    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                    //}
                    //else
                    //{
                    //    Control.Ins.OneKeyUnlocking(new Function(), UserInfo.Current.doorPasswordString);
                    //}
                //ddd++;
                //    Function function_online = FunctionList.List.GetLightList().Find((obj) => obj.sid == "0001017DB92D2602020100010101");
                //    if(ddd%2 == 0)
                //    {
                //        function_online.online = true;
                //    }
                //    else
                //    {
                //        function_online.online = false;
                //    }
                //    HomePage.LoadEvent_RefreshDevcieOnline(function_online);
                };
#endif
@@ -586,16 +556,118 @@
#if DEBUG
            FunctionList.List.Functions.Add(new Function
            {
                name = "测试梦幻窗帘",
                spk = SPK.CurtainDream,
                sid = "1234577",
                attributes = new List<FunctionAttributes> {
                    new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
                    new FunctionAttributes(){ key = "percent",curValue= "100",state = "100" },
                    new FunctionAttributes(){ key = "angle",curValue= "0",state = "0" },
                name = "测试-空调科技系统总控",
                spk = SPK.AcstParent,
                attributes = new List<FunctionAttributes>()
                {
                    new FunctionAttributes(){ key = FunctionAttributeKey.OnOff ,curValue = "on",state = "on" },
                    new FunctionAttributes(){ key = AcstParent_AttrEnum.mode.ToString(),curValue = AcstParent_Attr_ModeValueEnum.cool.ToString(),state = AcstParent_Attr_ModeValueEnum.cool.ToString(),
                         value = new List<string>
                         {
                             AcstParent_Attr_ModeValueEnum.cool.ToString(),
                             AcstParent_Attr_ModeValueEnum.dry.ToString(),
                             AcstParent_Attr_ModeValueEnum.fan.ToString(),
                             AcstParent_Attr_ModeValueEnum.heat.ToString(),
                             AcstParent_Attr_ModeValueEnum.humidity.ToString(),
                             AcstParent_Attr_ModeValueEnum.heat_humidity.ToString(),
                         }
                    },
                    new FunctionAttributes(){ key = AcstParent_AttrEnum.scene.ToString(), curValue = AcstParent_Attr_SceneValueEnum.at_home.ToString(), state = AcstParent_Attr_SceneValueEnum.at_home.ToString(),
                        value = new List<string>()
                        {
                            AcstParent_Attr_SceneValueEnum.at_home.ToString(),
                            AcstParent_Attr_SceneValueEnum.leave_home.ToString(),
                            AcstParent_Attr_SceneValueEnum.sleep.ToString(),
                        }
                    },
                    new FunctionAttributes(){ key = AcstParent_AttrEnum.day_electricity.ToString(),curValue = "99",state = "99"},
                    new FunctionAttributes(){ key = AcstParent_AttrEnum.month_electricity.ToString(),curValue = "999",state = "999"},
                    new FunctionAttributes(){ key = AcstParent_AttrEnum.total_electricity.ToString(),curValue = "9999",state = "9999"},
                    new FunctionAttributes(){ key = AcstParent_AttrEnum.active_power.ToString(),curValue = "9999",state = "9999"},
                    new FunctionAttributes(){ key = AcstParent_AttrEnum.room_temp.ToString(),curValue = "26",state = "26"},
                    new FunctionAttributes(){ key = AcstParent_AttrEnum.room_humidity.ToString(),curValue = "66",state = "66"},
                    new FunctionAttributes(){ key = AcstParent_AttrEnum.co2.ToString(),curValue = "266",state = "266"},
                    new FunctionAttributes(){ key = AcstParent_AttrEnum.tvoc.ToString(),curValue = "666",state = "666"},
                    new FunctionAttributes(){ key = AcstParent_AttrEnum.pm25.ToString(),curValue = "36",state = "36"},
                }
            });
            FunctionList.List.Functions.Add(new Function
            {
                name = "测试-空调科技系统子控-1",
                spk = SPK.AcstSub,
                attributes = new List<FunctionAttributes>()
                {
                    new FunctionAttributes(){ key = FunctionAttributeKey.OnOff ,curValue = "on",state = "on" },
                    new FunctionAttributes(){ key = AcstSub_AttrEnum.set_temp.ToString(),curValue = "26",state = "26"},
                    new FunctionAttributes(){ key = AcstSub_AttrEnum.room_temp.ToString(),curValue = "26",state = "26"},
                    new FunctionAttributes(){ key = AcstSub_AttrEnum.room_humidity.ToString(),curValue = "66",state = "66"},
                }
            });
            FunctionList.List.Functions.Add(new Function
            {
                name = "测试-空调科技系统子控-2",
                spk = SPK.AcstSub,
                attributes = new List<FunctionAttributes>()
                {
                    new FunctionAttributes(){ key = FunctionAttributeKey.OnOff ,curValue = "on",state = "on" },
                    new FunctionAttributes(){ key = AcstSub_AttrEnum.set_temp.ToString(),curValue = "26",state = "26"},
                    new FunctionAttributes(){ key = AcstSub_AttrEnum.room_temp.ToString(),curValue = "26",state = "26"},
                    new FunctionAttributes(){ key = AcstSub_AttrEnum.room_humidity.ToString(),curValue = "66",state = "66"},
                }
            });
            FunctionList.List.Functions.Add(new Function
            {
                name = "测试-空调科技系统子控-3",
                spk = SPK.AcstSub,
                attributes = new List<FunctionAttributes>()
                {
                    new FunctionAttributes(){ key = FunctionAttributeKey.OnOff ,curValue = "on",state = "on" },
                    new FunctionAttributes(){ key = AcstSub_AttrEnum.set_temp.ToString(),curValue = "26",state = "26"},
                    new FunctionAttributes(){ key = AcstSub_AttrEnum.room_temp.ToString(),curValue = "26",state = "26"},
                    new FunctionAttributes(){ key = AcstSub_AttrEnum.room_humidity.ToString(),curValue = "66",state = "66"},
                }
            });
            FunctionList.List.Functions.Add(new Function
            {
                name = "测试-空调科技系统子控-4",
                spk = SPK.AcstSub,
                attributes = new List<FunctionAttributes>()
                {
                    new FunctionAttributes(){ key = FunctionAttributeKey.OnOff ,curValue = "on",state = "on" },
                    new FunctionAttributes(){ key = AcstSub_AttrEnum.set_temp.ToString(),curValue = "26",state = "26"},
                    new FunctionAttributes(){ key = AcstSub_AttrEnum.room_temp.ToString(),curValue = "26",state = "26"},
                    new FunctionAttributes(){ key = AcstSub_AttrEnum.room_humidity.ToString(),curValue = "66",state = "66"},
                }
            });
            FunctionList.List.Functions.Add(new Function
            {
                name = "测试-空调科技系统子控-5",
                spk = SPK.AcstSub,
                attributes = new List<FunctionAttributes>()
                {
                    new FunctionAttributes(){ key = FunctionAttributeKey.OnOff ,curValue = "on",state = "on" },
                    new FunctionAttributes(){ key = AcstSub_AttrEnum.set_temp.ToString(),curValue = "26",state = "26"},
                    new FunctionAttributes(){ key = AcstSub_AttrEnum.room_temp.ToString(),curValue = "26",state = "26"},
                    new FunctionAttributes(){ key = AcstSub_AttrEnum.room_humidity.ToString(),curValue = "66",state = "66"},
                }
            });
            //FunctionList.List.Functions.Add(new Function
            //{
            //    name = "测试梦幻窗帘",
            //    spk = SPK.CurtainDream,
            //    sid = "1234577",
            //    attributes = new List<FunctionAttributes> {
            //        new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
            //        new FunctionAttributes(){ key = "percent",curValue= "100",state = "100" },
            //        new FunctionAttributes(){ key = "angle",curValue= "0",state = "0" },
            //    }
            //});
            //FunctionList.List.Functions.Add(new Function
            //{
            //    name = "测试毫米波传感器",
HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs
@@ -731,6 +731,11 @@
                        //    functionCount = 1;
                        //}
                        break;
                    case ShowFunction.Acst:
                        functionCount = FunctionList.List.GetAcstParentList().Count;
                        functionOnCount = FunctionList.List.GetAcstParentList().FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count;
                        break;
                }
@@ -788,6 +793,7 @@
                if (item != ShowFunction.Environmental && item != ShowFunction.Sensor && item != ShowFunction.VideoIntercom
                    && item != ShowFunction.SecurityMonitoring && item != ShowFunction.FreshAir && item != ShowFunction.Music
                    && item != ShowFunction.EnergyMonitoring && item != ShowFunction.SecurityCenter
                    && item != ShowFunction.Acst
                    && functionCount != 0)
                {
                    Button btnFunctionCount = new Button()
@@ -1050,11 +1056,35 @@
                            MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                        };
                        break;
                    case ShowFunction.Acst:
                        btnName.TextID = StringId.Acst;
                        Button btnAcstPower = new Button()
                        {
                            X = Application.GetRealWidth(120),
                            Y = specialList.Contains(index) ? Application.GetRealWidth(160) : Application.GetRealWidth(117),
                            Width = Application.GetRealWidth(32),
                            Height = Application.GetRealWidth(32),
                            SelectedImagePath = "Public/PowerOpen.png",
                            UnSelectedImagePath = "Public/PowerClose.png",
                            IsSelected = functionOnCount > 0,
                            Tag = item + "_AllControl",
                        };
                        functionView.AddChidren(btnAcstPower);
                        btnFunctionViewBg.MouseUpEventHandler = (sender, e) => {
                            //绿建科技系统todo
                            var page = new AcstParentPage();
                            MainPage.BasePageView.AddChidren(page);
                            page.LoadPage();
                            MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                        };
                        break;
                }
                //界面跳转--音乐跳转自己的界面--环境跳转自己的界面
                if (item != ShowFunction.Music && item != ShowFunction.Environmental && item != ShowFunction.SecurityMonitoring && item != ShowFunction.DoorLock
                    && ShowFunction.EnergyMonitoring!= item && ShowFunction.VideoIntercom != item && ShowFunction.SecurityCenter != item)
                    && ShowFunction.EnergyMonitoring!= item && ShowFunction.VideoIntercom != item && ShowFunction.SecurityCenter != item
                    && ShowFunction.Acst != item)
                {
                    btnFunctionViewBg.MouseUpEventHandler = (sender, e) =>
                    {
HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs
@@ -67,7 +67,7 @@
            btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/{function.IconName}.png";
            if (SPK.CurtainSpkList().Contains(function.spk))
            {//窗帘没有开关按钮
                CurtainFragment();
@@ -243,6 +243,8 @@
            }
            else if (function.spk == SPK.AcstParent) {
            }
            else
            {
                if (function.spk == SPK.ClothesHanger)//晾衣架
HDL_ON/UI/UI2/FuntionControlView/Acst/AcstParentPage.cs
New file
@@ -0,0 +1,585 @@
using System;
using HDL_ON.Entity;
using Shared;
namespace HDL_ON.UI
{
    /// <summary>
    /// 绿建科技系统
    /// 总控主页
    /// </summary>
    public class AcstParentPage : FrameLayout
    {
        VerticalScrolViewLayout bodyView;
        Function function;
        /// <summary>
        /// 当前时段颜色
        /// </summary>
        uint curColor = CSS.CSS_Color.MainColor;
        public AcstParentPage()
        {
            this.function = FunctionList.List.GetAcstParentList()[0];
            this.BackgroundColor = CSS.CSS_Color.BackgroundColor;
            bodyView = new VerticalScrolViewLayout();
            this.AddChidren(bodyView);
        }
        public void InitGetWeatherAction()
        {
            MainPage.CityWeatherAction = () => {
            };
        }
        public void LoadPage()
        {
            #region 头部信息区域
            FrameLayout topView = new FrameLayout()
            {
                Height = Application.GetRealHeight(181),
                BackgroundColor = 0xFFb0eafa,
            };
            bodyView.AddChidren(topView);
            var backView = new FrameLayout()
            {
                Y = Application.GetRealHeight(32),
                Width = Application.GetRealWidth(100),
                Height = Application.GetRealHeight(34),
                BackgroundColor = 0x33333333,
            };
            topView.AddChidren(backView);
            Button btnBackIcon = new Button()
            {
                X = Application.GetRealWidth(16),
                Width = Application.GetRealWidth(40),
                Height = Application.GetRealWidth(28),
                UnSelectedImagePath = "Public/BackIcon.png",
            };
            backView.AddChidren(btnBackIcon);
            btnBackIcon.MouseUpEventHandler = (sender, e) => {
                this.RemoveFromParent();
            };
            var btnHelloText = new Button()
            {
                X = Application.GetRealWidth(25),
                Y = Application.GetRealHeight(55),
                Width = Application.GetRealWidth(200),
                Height = Application.GetRealHeight(38),
                TextSize = 20,
                TextColor = 0xFFFFFFFF,
                TextAlignment = TextAlignment.CenterLeft,
            };
            topView.AddChidren(btnHelloText);
            var curTime = DateTime.Now;
            if (curTime.Hour >= 8 && curTime.Hour < 12)
            {
                btnHelloText.Text = "上午好";
            }
            else if (curTime.Hour >= 12 && curTime.Hour < 18)
            {
                btnHelloText.Text = "下午好";
            }
            else
            {
                btnHelloText.Text = "晚上好";
            }
            var btnOutdoorTemp = new Button()
            {
                X = Application.GetRealWidth(25),
                Y = Application.GetRealHeight(90),
                Width = Application.GetRealWidth(85),
                Height = Application.GetRealHeight(66),
                TextColor = 0xFFFFFFFF,
                TextSize = 50,
                TextAlignment = TextAlignment.TopLeft,
                Text = MainPage.cityInfo.temperature + "°"
            };
            topView.AddChidren(btnOutdoorTemp);
            var btnWeather = new Button()
            {
                X = btnOutdoorTemp.Right,
                Y = Application.GetRealHeight(95),
                Width = Application.GetRealWidth(80),
                Height = Application.GetRealHeight(26),
                Text = MainPage.cityInfo.weather,
                TextColor = 0xFFFFFFFF,
                TextSize = 14,
                TextAlignment = TextAlignment.CenterLeft,
            };
            topView.AddChidren(btnWeather);
            var environmentalView = new FrameLayout()
            {
                Y = Application.GetRealHeight(150),
                Height = Application.GetRealHeight(32),
            };
            topView.AddChidren(environmentalView);
            var btnHumidityIcon = new Button()
            {
                X = Application.GetRealWidth(25),
                Gravity = Gravity.CenterVertical,
                Width = Application.GetMinRealAverage(16),
                Height = Application.GetMinRealAverage(16),
                UnSelectedImagePath = "Public/DeviceInfoIcon/HumidityIcon.png",
            };
            environmentalView.AddChidren(btnHumidityIcon);
            var btnHumidityValues = new TextButton()
            {
                X = btnHumidityIcon.Right + Application.GetRealWidth(4),
                Gravity = Gravity.CenterVertical,
                TextColor = 0xFFFFFFFF,
                TextSize = 16,
                Text = MainPage.cityInfo.humidity + "%",
                TextAlignment = TextAlignment.CenterLeft,
            };
            btnHumidityValues.Width = btnHumidityValues.GetTextWidth();
            environmentalView.AddChidren(btnHumidityValues);
            var btnPm25Icon = new Button()
            {
                X = btnHumidityValues.Right + Application.GetRealWidth(14),
                Gravity = Gravity.CenterVertical,
                Width = Application.GetMinRealAverage(16),
                Height = Application.GetMinRealAverage(16),
                UnSelectedImagePath = "Public/DeviceInfoIcon/Pm25Icon.png",
            };
            environmentalView.AddChidren(btnPm25Icon);
            var btnPm25Values = new TextButton()
            {
                X = btnPm25Icon.Right + Application.GetRealWidth(4),
                Gravity = Gravity.CenterVertical,
                TextColor = 0xFFFFFFFF,
                TextSize = 16,
                Text = MainPage.cityInfo.pm25,
                TextAlignment = TextAlignment.CenterLeft,
            };
            btnPm25Values.Width = btnPm25Values.GetTextWidth();
            environmentalView.AddChidren(btnPm25Values);
            #endregion
            bodyView.AddChidren(new Button
            {
                Height = Application.GetRealHeight(8),
            });
            #region 数据
            var infoView = new FrameLayout()
            {
                Y = topView.Bottom,
                Height = Application.GetRealHeight(104),
                BackgroundColor = CSS.CSS_Color.MainBackgroundColor,
            };
            bodyView.AddChidren(infoView);
            var infoContentView = new FrameLayout()
            {
                Gravity = Gravity.Center,
                Width = Application.GetRealWidth(343),
                Height = Application.GetRealHeight(72),
                BackgroundColor = 0x22222222,
            };
            infoView.AddChidren(infoContentView);
            #region 传感器数据
            int sensorCount = 0;
            var tempObj = function.GetAttribute(AcstParent_AttrEnum.room_temp.ToString());
            if(tempObj!= null)
            {
                sensorCount++;
            }
            var humiObj = function.GetAttribute(AcstParent_AttrEnum.room_humidity.ToString());
            if(humiObj != null)
            {
                sensorCount++;
            }
            var pm25Obj = function.GetAttribute(AcstParent_AttrEnum.pm25.ToString());
            if (pm25Obj != null)
            {
                sensorCount++;
            }
            var co2Obj = function.GetAttribute(AcstParent_AttrEnum.co2.ToString());
            if (co2Obj != null)
            {
                sensorCount++;
            }
            var tvocObj = function.GetAttribute(AcstParent_AttrEnum.tvoc.ToString());
            if (tvocObj != null)
            {
                sensorCount++;
            }
            var sensorListView = new HorizontalScrolViewLayout()
            {
                Width = Application.GetRealWidth(60 * sensorCount),
                Gravity = Gravity.Center,
            };
            infoContentView.AddChidren(sensorListView);
            if (tempObj != null)
            {
                new SensorDiyView(sensorListView, curColor, tempObj.curValue.ToString() + "°", "温度");
            }
            if (humiObj != null)
            {
                new SensorDiyView(sensorListView, curColor, humiObj.curValue.ToString() + "%", "湿度");
            }
            if (pm25Obj != null)
            {
                new SensorDiyView(sensorListView, curColor, pm25Obj.curValue.ToString(), "PM2.5");
            }
            if (co2Obj != null)
            {
                new SensorDiyView(sensorListView, curColor, co2Obj.curValue.ToString(), "CO2");
            }
            if (tvocObj != null)
            {
                new SensorDiyView(sensorListView, curColor, tvocObj.curValue.ToString(), "TVOC");
            }
            #endregion
            #region 能耗数据
            int energyCount = 0;
            var dayObj = function.GetAttribute(AcstParent_AttrEnum.day_electricity.ToString());
            if (dayObj != null)
            {
                energyCount++;
            }
            var monthObj = function.GetAttribute(AcstParent_AttrEnum.month_electricity.ToString());
            if (monthObj != null)
            {
                energyCount++;
            }
            var totalObj = function.GetAttribute(AcstParent_AttrEnum.total_electricity.ToString());
            if (totalObj != null)
            {
                energyCount++;
            }
            var energyListView = new HorizontalScrolViewLayout()
            {
                Width = Application.GetRealWidth(60 * energyCount),
                Gravity = Gravity.Center,
                Visible = false,
            };
            infoContentView.AddChidren(energyListView);
            if (dayObj != null)
            {
                new SensorDiyView(energyListView, curColor, dayObj.curValue.ToString(), "今日耗电");
            }
            if (monthObj != null)
            {
                new SensorDiyView(energyListView, curColor, monthObj.curValue.ToString(), "本月耗电");
            }
            if (totalObj != null)
            {
                new SensorDiyView(energyListView, curColor, totalObj.curValue.ToString(), "总耗电量");
            }
            var btnChangeClick = new Button();
            infoView.AddChidren(btnChangeClick);
            bool showSensor = true;
            EventHandler<MouseEventArgs> changeInfoEvent = (sender, e) => {
                if (showSensor)
                {
                    sensorListView.Visible = false;
                    showSensor = false;
                    energyListView.Visible = true;
                }
                else
                {
                    sensorListView.Visible = true;
                    showSensor = true;
                    energyListView.Visible = false;
                }
            };
            btnChangeClick.MouseUpEventHandler = changeInfoEvent;
            #endregion
            #endregion
            #region 子控列表
            var subTitleView = new FrameLayout()
            {
                Height = Application.GetRealHeight(54),
            };
            bodyView.AddChidren(subTitleView);
            var btnCollection = new Button()
            {
                X = Application.GetRealWidth(6),
                Gravity = Gravity.CenterVertical,
                Width = Application.GetRealWidth(39),
                Height = Application.GetRealHeight(39),
                UnSelectedImagePath = "Function/Acst/CollectionIcon_bule.png",
            };
            subTitleView.AddChidren(btnCollection);
            var btnTitleText = new Button()
            {
                X = btnCollection.Right,
                Text = "我的家庭",
                TextSize = 16,
                TextColor = 0xFF242424,
                TextAlignment = TextAlignment.CenterLeft,
                IsBold = true,
            };
            subTitleView.AddChidren(btnTitleText);
            int subFunctionCount = 0;
            var subFunctionListView = new HorizontalScrolViewLayout()
            {
                Height = Application.GetRealHeight(88),
            };
            bodyView.AddChidren(subFunctionListView);
            foreach(var sub in FunctionList.List.GetAcstSubList())
            {
                if(subFunctionCount > 0 && subFunctionCount % 2 == 0)
                {
                    subFunctionListView = new HorizontalScrolViewLayout()
                    {
                        Height = Application.GetRealHeight(88),
                    };
                    bodyView.AddChidren(subFunctionListView);
                }
                subFunctionListView.AddChidren(new Button { Width = Application.GetRealWidth(16) });
                var subFunctionView = new FrameLayout() {
                    Width = Application.GetRealWidth(164),
                    Height = Application.GetRealHeight(72),
                    BackgroundColor = CSS.CSS_Color.MainBackgroundColor,
                };
                subFunctionListView.AddChidren(subFunctionView);
                var btnRoomInfo = new Button()
                {
                    X = Application.GetRealWidth(18),
                    Height = Application.GetRealHeight(40),
                    TextAlignment = TextAlignment.CenterLeft,
                    TextColor = 0xFF1b3053,
                    TextSize = 13,
                    Text = sub.GetRoomListName(),
                };
                subFunctionView.AddChidren(btnRoomInfo);
                var btnSubTempIcon = new Button()
                {
                    X = Application.GetRealWidth(16),
                    Y = Application.GetRealHeight(47),
                    Width = Application.GetMinRealAverage(11),
                    Height = Application.GetMinRealAverage(11),
                    UnSelectedImagePath = "FunctionIcon/CAC/HvacCacTempIcon.png",
                };
                subFunctionView.AddChidren(btnSubTempIcon);
                var btnSubTempValues = new TextButton()
                {
                    X = btnSubTempIcon.Right,
                    Y = Application.GetRealHeight(45),
                    Height = Application.GetRealHeight(14),
                    Width = Application.GetRealWidth(22),
                    TextColor =0xFF1b3035,
                    TextSize = 10,
                    Text = sub.GetAttrState(AcstSub_AttrEnum.room_temp.ToString()) + "°C",
                    TextAlignment = TextAlignment.CenterLeft,
                };
                subFunctionView.AddChidren(btnSubTempValues);
                Button btnSubHumidityIcon = new Button()
                {
                    X = btnSubTempValues.Right + Application.GetRealWidth(5),
                    Y = Application.GetRealHeight(47),
                    Width = Application.GetMinRealAverage(11),
                    Height = Application.GetMinRealAverage(11),
                    UnSelectedImagePath = "FunctionIcon/CAC/HvacCacHumidityIcon.png",
                };
                subFunctionView.AddChidren(btnSubHumidityIcon);
                var btnSubHumidityValues = new TextButton()
                {
                    X = btnSubHumidityIcon.Right,
                    Y = Application.GetRealHeight(45),
                    Height = Application.GetRealHeight(14),
                    Width = Application.GetRealWidth(22),
                    TextColor = 0xFF1b3053,
                    TextSize = 10,
                    Text = sub.GetAttrState(AcstSub_AttrEnum.room_humidity.ToString()) + "%",
                    TextAlignment = TextAlignment.CenterLeft,
                };
                subFunctionView.AddChidren(btnSubHumidityValues);
                var btnSubPower = new Button()
                {
                    X = Application.GetRealWidth(121),
                    Gravity = Gravity.CenterVertical,
                    Width = Application.GetRealWidth(28),
                    Height = Application.GetRealWidth(28),
                    BackgroundColor = curColor,
                    Text = "开关",
                    TextAlignment = TextAlignment.Center,
                };
                subFunctionView.AddChidren(btnSubPower);
                subFunctionCount++;
            }
            #endregion
            bodyView.AddChidren(new Button()
            {
                Height = Application.GetRealHeight(72),
            });
            #region 底部控制栏
            var bottomView = new FrameLayout()
            {
                Y = Application.GetRealHeight(667 - 56),
                Height = Application.GetRealHeight(56),
                BackgroundColor = CSS.CSS_Color.MainBackgroundColor,
            };
            this.AddChidren(bottomView);
            var btnModeControl = new Button()
            {
                X = Application.GetRealWidth(89),
                Gravity = Gravity.CenterVertical,
                Width = Application.GetRealWidth(38),
                Height = Application.GetRealWidth(38),
                BackgroundColor = curColor,
                Text = "模式",
                TextAlignment = TextAlignment.Center,
            };
            bottomView.AddChidren(btnModeControl);
            btnModeControl.MouseUpEventHandler = (sender, e) =>
            {
            };
            var btnPowerControl = new Button()
            {
                Gravity = Gravity.Center,
                Width = Application.GetRealWidth(38),
                Height = Application.GetRealWidth(38),
                BackgroundColor = curColor,
                Text = "开关",
                TextAlignment = TextAlignment.Center,
            };
            bottomView.AddChidren(btnPowerControl);
            var btnWorkSceneControl = new Button()
            {
                Gravity = Gravity.CenterVertical,
                X = Application.GetRealWidth(249),
                Width = Application.GetRealWidth(38),
                Height = Application.GetRealWidth(38),
                BackgroundColor = curColor,
                Text = "场景",
                TextAlignment = TextAlignment.Center,
            };
            bottomView.AddChidren(btnWorkSceneControl);
            #endregion
            InitGetWeatherAction();
        }
    }
    public class SensorDiyView
    {
        private FrameLayout contentView;
        private Button btnValue;
        private Button btnText;
        public string Tag;
        public SensorDiyView(HorizontalScrolViewLayout view,uint color,string value,string text)
        {
            contentView = new FrameLayout()
            {
                Width = Application.GetRealWidth(60),
                Height = Application.GetRealHeight(72),
            };
            view.AddChidren(contentView);
            btnValue = new Button()
            {
                Y = Application.GetRealHeight(10),
                Height = Application.GetRealHeight(72 - 37),
                TextAlignment = TextAlignment.Center,
                TextColor = color,
                TextSize = 20,
                Text = value,
            };
            contentView.AddChidren(btnValue);
            btnText = new Button()
            {
                Y = Application.GetRealHeight(72 - 37),
                Height = Application.GetRealHeight(37),
                TextAlignment = TextAlignment.Center,
                TextColor = 0xFF949AA5,
                TextSize = 12,
                Text = text,
            };
            contentView.AddChidren(btnText);
        }
        public void UpdateValue(string value)
        {
            btnText.Text = value;
        }
    }
}
HDL_ON/UI/UI2/FuntionControlView/Acst/AcstSubPage.cs
New file
@@ -0,0 +1,95 @@
using System;
using Shared;
namespace HDL_ON.UI
{
    public class AcstSubPage : FrameLayout
    {
        FrameLayout bodyView;
        string imageFolder = "blue";
        public AcstSubPage()
        {
            bodyView = this;
        }
        public void LoadPage()
        {
            //一个背景图片
            var framePic = new FrameLayout();
            framePic.Y = Application.GetRealHeight(120);
            framePic.Width = Application.GetRealWidth(303);
            framePic.Height = Application.GetRealHeight(175);
            framePic.Gravity = Gravity.CenterHorizontal;
            framePic.BackgroundImagePath = $"FunctionIcon/Acst/{imageFolder}/TempAndHumiBack.png";
            this.FrameWhiteCentet1.AddChidren(framePic);
            //室内湿度 的容器(为了重新计算坐标使用)
            int frameWidth = framePic.Width / 2 - this.GetPictrueRealSize(21);
            var frameHumidity = new FrameLayout();
            frameHumidity.X = this.GetPictrueRealSize(21);
            frameHumidity.Y = this.GetPictrueRealSize(12);
            frameHumidity.Width = frameWidth;
            frameHumidity.Height = frameWidth;
            framePic.AddChidren(frameHumidity);
            //室内湿度值
            this.btnHumidity = new NormalViewControl(20, this.GetPicChidrenTextHeight(30), false);
            btnHumidity.Y = this.GetPictrueRealSize(39);
            btnHumidity.TextSize = 30;
            btnHumidity.TextColor = CSS_Color.FirstLevelTitleColor;
            btnHumidity.TextAlignment = TextAlignment.TopCenter;
            frameHumidity.AddChidren(btnHumidity);
            //%
            this.btnHumidityUnit = new NormalViewControl(10, 10, true);
            btnHumidityUnit.Y = btnHumidity.Y + this.GetPictrueRealSize(8);
            btnHumidityUnit.TextColor = CSS_Color.TextualColor;
            btnHumidityUnit.Text = "%";
            btnHumidityUnit.TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel;
            btnHumidityUnit.Width = btnHumidityUnit.GetRealWidthByText();
            frameHumidity.AddChidren(btnHumidityUnit);
            //室内湿度
            var btnHumidityView = new NormalViewControl(frameHumidity.Width, this.GetPicChidrenTextHeight(18), false);
            btnHumidityView.Y = btnHumidity.Bottom + this.GetPictrueRealSize(8);
            btnHumidityView.TextAlignment = TextAlignment.Center;
            btnHumidityView.TextColor = CSS_Color.TextualColor;
            btnHumidityView.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
            btnHumidityView.TextID = StringId.IndoorHumidity;
            frameHumidity.AddChidren(btnHumidityView);
            //室内温度 的容器(为了重新计算坐标使用)
            var frameTemperature = new FrameLayout();
            frameTemperature.Y = frameHumidity.Y;
            frameTemperature.X = frameHumidity.Right;
            frameTemperature.Width = frameWidth;
            frameTemperature.Height = frameWidth;
            framePic.AddChidren(frameTemperature);
            //室内温度值
            this.btnTemperature = new NormalViewControl(20, this.GetPicChidrenTextHeight(30), false);
            btnTemperature.Y = btnHumidity.Y;
            btnTemperature.TextSize = 30;
            btnTemperature.TextColor = CSS_Color.FirstLevelTitleColor;
            btnTemperature.TextAlignment = TextAlignment.TopCenter;
            btnTemperature.GetRealWidthByText();
            frameTemperature.AddChidren(btnTemperature);
            //℃
            this.btnTemperatureUnit = new NormalViewControl(10, 10, true);
            btnTemperatureUnit.Y = btnTemperature.Y + this.GetPictrueRealSize(8);
            btnTemperatureUnit.TextColor = CSS_Color.TextualColor;
            btnTemperatureUnit.Text = "℃";
            btnTemperatureUnit.TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel;
            btnTemperatureUnit.Width = btnTemperatureUnit.GetRealWidthByText();
            frameTemperature.AddChidren(btnTemperatureUnit);
            //室内温度
            var btnTemperatureView = new NormalViewControl(frameTemperature.Width, this.GetPicChidrenTextHeight(18), false);
            btnTemperatureView.Y = btnTemperature.Bottom + this.GetPictrueRealSize(8);
            btnTemperatureView.TextAlignment = TextAlignment.Center;
            btnTemperatureView.TextColor = CSS_Color.TextualColor;
            btnTemperatureView.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
            btnTemperatureView.TextID = StringId.IndoorTemp;
            frameTemperature.AddChidren(btnTemperatureView);
        }
    }
}