wxr
2022-11-23 5b77d9d57a6cddb474a66ca54401ad5ab0892db3
HDL_ON/UI/UI2/FuntionControlView/Acst/AcstParentPage.cs
@@ -16,7 +16,9 @@
    {
        static AcstParentPage basePage;
        VerticalScrolViewLayout bodyView;
        VerticalScrolViewLayout contentView;
        string helloText = "上午好";
        #region 天气控件
        Button btnOutdoorTemp;
@@ -64,132 +66,7 @@
        public AcstParentPage()
        {
            basePage = this;
            this.function = FunctionList.List.GetAcstParentList()[0];
            this.BackgroundColor = CSS.CSS_Color.BackgroundColor;
            bodyView = new VerticalScrolViewLayout();
            this.AddChidren(bodyView);
            subViewList = new Dictionary<string, AcstSubControlView>();
        }
        /// <summary>
        /// 更新天气信息
        /// </summary>
        public void InitGetWeatherAction()
        {
            MainPage.CityWeatherAction = () =>
            {
                Application.RunOnMainThread(() =>
                {
                    btnOutdoorTemp.Text = MainPage.cityInfo.temperature + "°";
                    btnWeather.Text = MainPage.cityInfo.weather;
                    btnHumidityValues.Text = MainPage.cityInfo.humidity + "%";
                    btnHumidityValues.Width = btnHumidityValues.GetTextWidth() + Application.GetRealWidth(10);
                    btnPm25Values.Text = MainPage.cityInfo.pm25;
                    btnPm25Values.Width = btnPm25Values.GetTextWidth() + Application.GetRealWidth(10);
                });
            };
        }
        /// <summary>
        /// 更新主控数据信息
        /// </summary>
        public static void UpdateAcstParentInfo(Function temp)
        {
            if (basePage == null)
            {
                return;
            }
            Application.RunOnMainThread(() =>
            {
                if (basePage.sensorDiyView_Temp != null)
                    basePage.sensorDiyView_Temp.UpdateValue(temp.GetAttribute(AcstParent_AttrEnum.room_temp.ToString()).state);
                if (basePage.sensorDiyView_Humi != null)
                    basePage.sensorDiyView_Humi.UpdateValue(temp.GetAttribute(AcstParent_AttrEnum.room_humidity.ToString()).state);
                if (basePage.sensorDiyView_Pm25 != null)
                    basePage.sensorDiyView_Pm25.UpdateValue(temp.GetAttribute(AcstParent_AttrEnum.pm25.ToString()).state);
                if (basePage.sensorDiyView_Co2 != null)
                    basePage.sensorDiyView_Co2.UpdateValue(temp.GetAttribute(AcstParent_AttrEnum.co2.ToString()).state);
                if (basePage.sensorDiyView_Tvoc != null)
                    basePage.sensorDiyView_Tvoc.UpdateValue(temp.GetAttribute(AcstParent_AttrEnum.tvoc.ToString()).state);
                if (basePage.sensorDiyView_EleDay != null)
                    basePage.sensorDiyView_EleDay.UpdateValue(temp.GetAttribute(AcstParent_AttrEnum.day_electricity.ToString()).state);
                if (basePage.sensorDiyView_EleMonth != null)
                    basePage.sensorDiyView_EleMonth.UpdateValue(temp.GetAttribute(AcstParent_AttrEnum.month_electricity.ToString()).state);
                if (basePage.sensorDiyView_EleActivePower != null)
                    basePage.sensorDiyView_EleActivePower.UpdateValue(temp.GetAttribute(AcstParent_AttrEnum.active_power.ToString()).state);
                switch (temp.GetAttrState("mode"))
                {
                    case "cool"://制冷
                        basePage.btnModeControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/ModeCoolIcon2.png";
                        basePage.btnModeControl.SelectedImagePath = $"FunctionIcon/Acst/{basePage.imageFolder}/ModeCoolIcon2.png";
                        break;
                    case "heat"://制热
                        basePage.btnModeControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/ModeHeatIcon2.png";
                        basePage.btnModeControl.SelectedImagePath = $"FunctionIcon/Acst/{basePage.imageFolder}/ModeHeatIcon2.png";
                        break;
                    case "fan"://通风
                        basePage.btnModeControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/ModeFanIcon2.png";
                        basePage.btnModeControl.SelectedImagePath = $"FunctionIcon/Acst/{basePage.imageFolder}/ModeFanIcon2.png";
                        break;
                    case "dry"://除湿
                        basePage.btnModeControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/ModeDeHumiIcon2.png";
                        basePage.btnModeControl.SelectedImagePath = $"FunctionIcon/Acst/{basePage.imageFolder}/ModeDeHumiIcon2.png";
                        break;
                    case "humidity"://加湿
                        basePage.btnModeControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/ModeHumiIcon2.png";
                        basePage.btnModeControl.SelectedImagePath = $"FunctionIcon/Acst/{basePage.imageFolder}/ModeHumiIcon2.png";
                        break;
                    case "heat_humidity"://制热加湿
                        basePage.btnModeControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/ModeHeatHumiIcon2.png";
                        basePage.btnModeControl.SelectedImagePath = $"FunctionIcon/Acst/{basePage.imageFolder}/ModeHeatHumiIcon2.png";
                        break;
                }
                switch (temp.GetAttrState("scene"))
                {
                    case "at_home"://在家
                        basePage.btnWorkSceneControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/SceneAtHome2.png";
                        basePage.btnWorkSceneControl.SelectedImagePath = $"FunctionIcon/Acst/{basePage.imageFolder}/SceneAtHome2.png";
                        break;
                    case "leave_home"://离家
                        basePage.btnWorkSceneControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/SceneAwayHomeIcon2.png";
                        basePage.btnWorkSceneControl.SelectedImagePath = $"FunctionIcon/Acst/{basePage.imageFolder}/SceneAwayHomeIcon2.png";
                        break;
                    case "sleep"://睡眠
                        basePage.btnWorkSceneControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/SceneSleepIcon2.png";
                        basePage.btnWorkSceneControl.SelectedImagePath = $"FunctionIcon/Acst/{basePage.imageFolder}/SceneSleepIcon2.png";
                        break;
                }
                basePage.btnModeControl.IsSelected = basePage.btnWorkSceneControl.IsSelected = basePage.btnPowerControl.IsSelected = temp.GetAttrState("on_off") == "on";
            });
        }
        /// <summary>
        /// 更新子控信息
        /// </summary>
        /// <param name="temp"></param>
        public static void UpdateAcstSubInfo(Function temp)
        {
            if(basePage == null)
            {
                return;
            }
            Application.RunOnMainThread(() => {
                var view = basePage.subViewList[temp.sid];
                if(view!= null)
                {
                    view.btnSubHumidityValues.Text = temp.GetAttrState(AcstSub_AttrEnum.room_humidity.ToString()) + "%";
                    view.btnSubTempValues.Text = temp.GetAttrState(AcstSub_AttrEnum.room_temp.ToString()) + "°";
                    view.btnSubPower.IsSelected = temp.GetAttrState(AcstSub_AttrEnum.on_off.ToString()) == "on";
                }
            });
        }
        public void LoadPage()
        {
            var curTime = DateTime.Now;
            string helloText = "上午好";
            if (Language.CurrentLanguage != "Chinese")
            {
                helloText = "Good morning";
@@ -221,18 +98,158 @@
                {
                    helloText = "Good evening";
                }
                curColor = 0xFF9175F3;
                imageFolder = "purple";
            }
            this.function = FunctionList.List.GetAcstParentList()[0];
            this.BackgroundColor = CSS.CSS_Color.BackgroundColor;
            this.AddChidren(new Button() { Height = Application.GetRealHeight(50), BackgroundColor = curColor });
            contentView = new VerticalScrolViewLayout() {
                Height = Application.GetRealHeight(667 - 56),
            };
            this.AddChidren(contentView);
            subViewList = new Dictionary<string, AcstSubControlView>();
        }
        /// <summary>
        /// 更新天气信息
        /// </summary>
        public void InitGetWeatherAction()
        {
            MainPage.CityWeatherAction = () =>
            {
                Application.RunOnMainThread(() =>
                {
                    btnOutdoorTemp.Text = MainPage.cityInfo.temperature + "°";
                    btnWeather.Text = MainPage.cityInfo.weather;
                    btnHumidityValues.Text = MainPage.cityInfo.humidity + "%";
                    btnHumidityValues.Width = btnHumidityValues.GetTextWidth() + Application.GetRealWidth(10);
                    btnPm25Values.Text = MainPage.cityInfo.pm25;
                    btnPm25Values.Width = btnPm25Values.GetTextWidth() + Application.GetRealWidth(10);
                });
            };
        }
        /// <summary>
        /// 更新主控数据信息
        /// </summary>
        public static void UpdateAcstParentInfo(Function temp)
        {
            try
            {
                if (basePage == null)
                {
                    return;
                }
                Application.RunOnMainThread(() =>
                {
                    if (basePage.sensorDiyView_Temp != null)
                        basePage.sensorDiyView_Temp.UpdateValue(temp.GetAttribute(AcstParent_AttrEnum.room_temp.ToString()).state, true);
                    if (basePage.sensorDiyView_Humi != null)
                        basePage.sensorDiyView_Humi.UpdateValue(temp.GetAttribute(AcstParent_AttrEnum.room_humidity.ToString()).state, true);
                    if (basePage.sensorDiyView_Pm25 != null)
                        basePage.sensorDiyView_Pm25.UpdateValue(temp.GetAttribute(AcstParent_AttrEnum.pm25.ToString()).state, false);
                    if (basePage.sensorDiyView_Co2 != null)
                        basePage.sensorDiyView_Co2.UpdateValue(temp.GetAttribute(AcstParent_AttrEnum.co2.ToString()).state, false);
                    if (basePage.sensorDiyView_Tvoc != null)
                        basePage.sensorDiyView_Tvoc.UpdateValue(temp.GetAttribute(AcstParent_AttrEnum.tvoc.ToString()).state, false);
                    if (basePage.sensorDiyView_EleDay != null)
                        basePage.sensorDiyView_EleDay.UpdateValue(temp.GetAttribute(AcstParent_AttrEnum.day_electricity.ToString()).state, false);
                    if (basePage.sensorDiyView_EleMonth != null)
                        basePage.sensorDiyView_EleMonth.UpdateValue(temp.GetAttribute(AcstParent_AttrEnum.month_electricity.ToString()).state, false);
                    if (basePage.sensorDiyView_EleActivePower != null)
                        basePage.sensorDiyView_EleActivePower.UpdateValue(temp.GetAttribute(AcstParent_AttrEnum.active_power.ToString()).state, false);
                    switch (temp.GetAttrState("mode"))
                    {
                        case "cool"://制冷
                        basePage.btnModeControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/ModeCoolIcon2.png";
                            basePage.btnModeControl.SelectedImagePath = $"FunctionIcon/Acst/{basePage.imageFolder}/ModeCoolIcon2.png";
                            break;
                        case "heat"://制热
                        basePage.btnModeControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/ModeHeatIcon2.png";
                            basePage.btnModeControl.SelectedImagePath = $"FunctionIcon/Acst/{basePage.imageFolder}/ModeHeatIcon2.png";
                            break;
                        case "fan"://通风
                        basePage.btnModeControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/ModeFanIcon2.png";
                            basePage.btnModeControl.SelectedImagePath = $"FunctionIcon/Acst/{basePage.imageFolder}/ModeFanIcon2.png";
                            break;
                        case "dry"://除湿
                        basePage.btnModeControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/ModeDeHumiIcon2.png";
                            basePage.btnModeControl.SelectedImagePath = $"FunctionIcon/Acst/{basePage.imageFolder}/ModeDeHumiIcon2.png";
                            break;
                        case "humidity"://加湿
                        basePage.btnModeControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/ModeHumiIcon2.png";
                            basePage.btnModeControl.SelectedImagePath = $"FunctionIcon/Acst/{basePage.imageFolder}/ModeHumiIcon2.png";
                            break;
                        case "heat_humidity"://制热加湿
                        basePage.btnModeControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/ModeHeatHumiIcon2.png";
                            basePage.btnModeControl.SelectedImagePath = $"FunctionIcon/Acst/{basePage.imageFolder}/ModeHeatHumiIcon2.png";
                            break;
                    }
                    switch (temp.GetAttrState("scene"))
                    {
                        case "at_home"://在家
                        basePage.btnWorkSceneControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/SceneAtHome2.png";
                            basePage.btnWorkSceneControl.SelectedImagePath = $"FunctionIcon/Acst/{basePage.imageFolder}/SceneAtHome2.png";
                            break;
                        case "leave_home"://离家
                        basePage.btnWorkSceneControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/SceneAwayHomeIcon2.png";
                            basePage.btnWorkSceneControl.SelectedImagePath = $"FunctionIcon/Acst/{basePage.imageFolder}/SceneAwayHomeIcon2.png";
                            break;
                        case "sleep"://睡眠
                        basePage.btnWorkSceneControl.UnSelectedImagePath = "FunctionIcon/Acst/grey/SceneSleepIcon2.png";
                            basePage.btnWorkSceneControl.SelectedImagePath = $"FunctionIcon/Acst/{basePage.imageFolder}/SceneSleepIcon2.png";
                            break;
                    }
                    basePage.btnModeControl.IsSelected = basePage.btnWorkSceneControl.IsSelected = basePage.btnPowerControl.IsSelected = temp.GetAttrState("on_off") == "on";
                });
            }catch (Exception ex)
            {
                MainPage.Log("科技系统更新数据失败");
            }
        }
        /// <summary>
        /// 更新子控信息
        /// </summary>
        /// <param name="temp"></param>
        public static void UpdateAcstSubInfo(Function temp)
        {
            try
            {
                if (basePage == null)
                {
                    return;
                }
                Application.RunOnMainThread(() =>
                {
                    var view = basePage.subViewList[temp.sid];
                    if (view != null)
                    {
                        view.btnSubHumidityValues.Text = temp.GetAttrState(AcstSub_AttrEnum.room_humidity.ToString()) + "%";
                        view.btnSubTempValues.Text = temp.GetAttrState(AcstSub_AttrEnum.room_temp.ToString()) + "°";
                        view.btnSubPower.IsSelected = temp.GetAttrState(AcstSub_AttrEnum.on_off.ToString()) == "on";
                    }
                });
            }
            catch (Exception ex)
            {
                MainPage.Log("科技系统更新异常11");
            }
        }
        public void LoadPage()
        {
            #region 头部信息区域
            FrameLayout topView = new FrameLayout()
            {
                Height = Application.GetRealHeight(180),
                BackgroundImagePath = $"FunctionIcon/Acst/{imageFolder}/TopViewBg.png",
            };
            bodyView.AddChidren(topView);
            contentView.AddChidren(topView);
            var backView = new FrameLayout()
            {
@@ -353,7 +370,7 @@
            #endregion
            bodyView.AddChidren(new Button
            contentView.AddChidren(new Button
            {
                Height = Application.GetRealHeight(8),
            });
@@ -417,7 +434,7 @@
                    Height = Application.GetRealHeight(104),
                    BackgroundColor = CSS.CSS_Color.MainBackgroundColor,
                };
                bodyView.AddChidren(infoView);
                contentView.AddChidren(infoView);
                var infoContentView = new FrameLayout()
                {
@@ -442,23 +459,33 @@
                if (tempObj != null)
                {
                    sensorDiyView_Temp = new SensorDiyView(sensorListView, curColor, tempObj.state == "" ? "--" : tempObj.state, "°", Language.StringByID(StringId.Temp));
                    string tempValues = tempObj.state == "" ? "--" : tempObj.state;
                    if (tempValues.Contains("."))
                    {
                        tempValues = tempValues.Remove(tempValues.IndexOf('.'), tempValues.Length - tempValues.IndexOf('.'));
                    }
                    sensorDiyView_Temp = new SensorDiyView(sensorListView, curColor, tempValues, "°","", Language.StringByID(StringId.Temp));
                }
                if (humiObj != null)
                {
                    sensorDiyView_Humi = new SensorDiyView(sensorListView, curColor, humiObj.state == "" ? "--" : humiObj.state, "%", Language.StringByID(StringId.Humidity));
                    string humiValues = humiObj.state == "" ? "--" : humiObj.state;
                    if (humiValues.Contains("."))
                    {
                        humiValues = humiValues.Remove(humiValues.IndexOf('.'), humiValues.Length - humiValues.IndexOf('.'));
                    }
                    sensorDiyView_Humi = new SensorDiyView(sensorListView, curColor, humiValues , "%", "", Language.StringByID(StringId.Humidity));
                }
                if (pm25Obj != null)
                {
                    sensorDiyView_Pm25 = new SensorDiyView(sensorListView, curColor, pm25Obj.state == "" ? "--" : pm25Obj.state, "", "PM2.5");
                    sensorDiyView_Pm25 = new SensorDiyView(sensorListView, curColor, pm25Obj.state == "" ? "--" : pm25Obj.state, "", "", "PM2.5");
                }
                if (co2Obj != null)
                {
                    sensorDiyView_Co2 = new SensorDiyView(sensorListView, curColor, co2Obj.state == "" ? "--" : co2Obj.state, "", "CO2");
                    sensorDiyView_Co2 = new SensorDiyView(sensorListView, curColor, co2Obj.state == "" ? "--" : co2Obj.state, "", "", "CO2");
                }
                if (tvocObj != null)
                {
                    sensorDiyView_Tvoc = new SensorDiyView(sensorListView, curColor, tvocObj.state == "" ? "--" : tvocObj.state, "", "TVOC");
                    sensorDiyView_Tvoc = new SensorDiyView(sensorListView, curColor, tvocObj.state == "" ? "--" : tvocObj.state, "", "", "TVOC");
                }
                #endregion
@@ -467,7 +494,7 @@
                {
                    Width = Application.GetRealWidth(100 * energyCount),
                    Gravity = Gravity.Center,
                    Visible = false,
                    Visible = sensorCount == 0
                };
                if (energyCount > 0)
                {
@@ -480,8 +507,7 @@
                    {
                        text = "Power";
                    }
                    sensorDiyView_EleActivePower = new SensorDiyView(energyListView, curColor, totalObj.state == "" ? "--" : totalObj.state, "KW", text, 100);
                    sensorDiyView_EleActivePower = new SensorDiyView(energyListView, curColor, totalObj.state == "" ? "--" : totalObj.state, "", "KW", text, 100);
                }
                if (dayObj != null)
                {
@@ -490,7 +516,7 @@
                    {
                        text = "Power of today";
                    }
                    sensorDiyView_EleDay = new SensorDiyView(energyListView, curColor, dayObj.state == "" ? "--" : dayObj.state, "KW", text, 100);
                    sensorDiyView_EleDay = new SensorDiyView(energyListView, curColor, dayObj.state == "" ? "--" : dayObj.state, "", "KWh", text, 100);
                }
                if (monthObj != null)
                {
@@ -499,7 +525,7 @@
                    {
                        text = "Power of month";
                    }
                    sensorDiyView_EleMonth = new SensorDiyView(energyListView, curColor, monthObj.state == "" ? "--" : monthObj.state, "KWh", text, 100);
                    sensorDiyView_EleMonth = new SensorDiyView(energyListView, curColor, monthObj.state == "" ? "--" : monthObj.state, "", "KWh", text, 100);
                }
@@ -537,7 +563,7 @@
            {
                Height = Application.GetRealHeight(54-11),
            };
            bodyView.AddChidren(subTitleView);
            contentView.AddChidren(subTitleView);
            var btnCollection = new Button()
            {
@@ -583,42 +609,53 @@
            {
                Height = Application.GetRealHeight(88),
            };
            bodyView.AddChidren(subFunctionListView);
            contentView.AddChidren(subFunctionListView);
            subFunctionListView.AddChidren(new Button { Width = Application.GetRealWidth(9) });
            foreach (var sub in FunctionList.List.GetAcstSubList())
            new System.Threading.Thread(() =>
            {
                if (subViewList.ContainsKey(sub.sid))
                try
                {
                    continue;
                }
                if (subFunctionCount > 0 && subFunctionCount % 2 == 0)
                {
                    subFunctionListView = new HorizontalScrolViewLayout()
                    foreach (var sub in FunctionList.List.GetAcstSubList())
                    {
                        Height = Application.GetRealHeight(93),
                    };
                    bodyView.AddChidren(subFunctionListView);
                    subFunctionListView.AddChidren(new Button { Width = Application.GetRealWidth(9) });
                        if (subViewList.ContainsKey(sub.sid))
                        {
                            continue;
                        }
                        Application.RunOnMainThread(() =>
                        {
                            if (subFunctionCount > 0 && subFunctionCount % 2 == 0)
                            {
                                subFunctionListView = new HorizontalScrolViewLayout()
                                {
                                    Height = Application.GetRealHeight(93),
                                };
                                contentView.AddChidren(subFunctionListView);
                                subFunctionListView.AddChidren(new Button { Width = Application.GetRealWidth(9) });
                            }
                            AcstSubControlView subFunctionView = new AcstSubControlView(sub, subFunctionListView, imageFolder);
                            subViewList.Add(sub.sid, subFunctionView);
                            new System.Threading.Thread(() =>
                            {
                                Control.Ins.SendReadCommand(sub);
                            })
                            { IsBackground = true }.Start();
                        subFunctionCount++;
                        });
                        System.Threading.Thread.Sleep(10);
                    }
                }
                AcstSubControlView subFunctionView = new AcstSubControlView(sub, subFunctionListView,imageFolder);
                subViewList.Add(sub.sid, subFunctionView);
                Control.Ins.SendReadCommand(sub);
                subFunctionCount++;
            }
                catch { }
                finally{
                }
            }).Start();
            #endregion
            bodyView.AddChidren(new Button()
            {
                Height = Application.GetRealHeight(72),
            });
            #region 底部控制栏
            var bottomView = new FrameLayout()
@@ -643,10 +680,10 @@
            bottomView.AddChidren(btnModeControl);
            btnModeControl.MouseUpEventHandler = (sender3, e3) =>
            {
                if(function.trait_on_off.state == "off")
                {
                    return;
                }
                //if(function.trait_on_off.state == "off")
                //{
                //    return;
                //}
                Dialog dialog = new Dialog();
                var dialogView = new FrameLayout();
@@ -675,7 +712,7 @@
                {
                    X = Application.GetRealWidth(16),
                    Width = Application.GetRealWidth(100),
                    TextID = StringId.SelectScene,
                    TextID = StringId.SelectMode,
                    TextSize = 16,
                    TextColor = CSS.CSS_Color.FirstLevelTitleColor,
                    IsBold = true,
@@ -752,41 +789,6 @@
                    heatView.AddChidren(heatIconButton);
                    #endregion
                }
                if (function.GetAttribute(AcstParent_AttrEnum.mode.ToString()).value.Contains(AcstParent_Attr_ModeValueEnum.humidity.ToString()))
                {
                    #region 除湿
                    var dehumiView = new FrameLayout()
                    {
                        X = Application.GetRealWidth(2),
                        Width = Application.GetRealWidth(144),
                        Height = Application.GetRealHeight(44),
                    };
                    dialogContentView.AddChidren(dehumiView);
                    dehumiView.AddChidren(new Button
                    {
                        Width = Application.GetRealWidth(112),
                        Gravity = Gravity.CenterHorizontal,
                        Height = 1,
                        BackgroundColor = CSS.CSS_Color.DividingLineColor,
                    });
                    IconButton dehumiIconButton = new IconButton("FunctionIcon/Acst/grey/ModeDeHumiIcon.png", $"FunctionIcon/Acst/{imageFolder}/ModeDeHumiIcon.png",
                        Language.StringByID(StringId.Humidity), curColor, function.GetAttrState(AcstParent_AttrEnum.mode.ToString()) == AcstParent_Attr_ModeValueEnum.dry.ToString());
                    dehumiIconButton.Click(() =>
                    {
                        btnModeControl.SelectedImagePath = $"FunctionIcon/Acst/{imageFolder}/ModeDeHumiIcon2.png";
                        dialog.Close();
                        new System.Threading.Thread(() =>
                        {
                            Dictionary<string, string> d = new Dictionary<string, string>();
                            d.Add("mode", AcstParent_Attr_ModeValueEnum.dry.ToString());
                            Control.Ins.SendWriteCommand(function, d);
                        })
                        { IsBackground = true }.Start();
                    });
                    dehumiView.AddChidren(dehumiIconButton);
                    #endregion
                }
                if (function.GetAttribute(AcstParent_AttrEnum.mode.ToString()).value.Contains(AcstParent_Attr_ModeValueEnum.fan.ToString()))
                {
@@ -823,6 +825,40 @@
                    #endregion
                }
                if (function.GetAttribute(AcstParent_AttrEnum.mode.ToString()).value.Contains(AcstParent_Attr_ModeValueEnum.dry.ToString()))
                {
                    #region 除湿
                    var dehumiView = new FrameLayout()
                    {
                        X = Application.GetRealWidth(2),
                        Width = Application.GetRealWidth(144),
                        Height = Application.GetRealHeight(44),
                    };
                    dialogContentView.AddChidren(dehumiView);
                    dehumiView.AddChidren(new Button
                    {
                        Width = Application.GetRealWidth(112),
                        Gravity = Gravity.CenterHorizontal,
                        Height = 1,
                        BackgroundColor = CSS.CSS_Color.DividingLineColor,
                    });
                    IconButton dehumiIconButton = new IconButton("FunctionIcon/Acst/grey/ModeDeHumiIcon.png", $"FunctionIcon/Acst/{imageFolder}/ModeDeHumiIcon.png",
                        Language.StringByID(StringId.Dry), curColor, function.GetAttrState(AcstParent_AttrEnum.mode.ToString()) == AcstParent_Attr_ModeValueEnum.dry.ToString());
                    dehumiIconButton.Click(() =>
                    {
                        btnModeControl.SelectedImagePath = $"FunctionIcon/Acst/{imageFolder}/ModeDeHumiIcon2.png";
                        dialog.Close();
                        new System.Threading.Thread(() =>
                        {
                            Dictionary<string, string> d = new Dictionary<string, string>();
                            d.Add("mode", AcstParent_Attr_ModeValueEnum.dry.ToString());
                            Control.Ins.SendWriteCommand(function, d);
                        })
                        { IsBackground = true }.Start();
                    });
                    dehumiView.AddChidren(dehumiIconButton);
                    #endregion
                }
                if (function.GetAttribute(AcstParent_AttrEnum.mode.ToString()).value.Contains(AcstParent_Attr_ModeValueEnum.heat_humidity.ToString()))
                {
@@ -861,7 +897,6 @@
                if (function.GetAttribute(AcstParent_AttrEnum.mode.ToString()).value.Contains(AcstParent_Attr_ModeValueEnum.humidity.ToString()))
                {
                    #region 加湿
                    var humiView = new FrameLayout()
                    {
@@ -943,10 +978,10 @@
            btnWorkSceneControl.MouseUpEventHandler = (sender2, e2) =>
            {
                if (function.trait_on_off.state == "off")
                {
                    return;
                }
                //if (function.trait_on_off.state == "off")
                //{
                //    return;
                //}
                Dialog dialog = new Dialog();
                var dialogView = new FrameLayout();
@@ -1009,7 +1044,7 @@
                    Language.StringByID(StringId.AtHome), curColor, function.GetAttrState(AcstParent_AttrEnum.scene.ToString()) == AcstParent_Attr_SceneValueEnum.at_home.ToString());
                    atHomeIconButton.Click(() =>
                    {
                        btnModeControl.SelectedImagePath = $"FunctionIcon/Acst/{imageFolder}/SceneAtHome2.png";
                        btnWorkSceneControl.SelectedImagePath = $"FunctionIcon/Acst/{imageFolder}/SceneAtHome2.png";
                        dialog.Close();
                        new System.Threading.Thread(() =>
                        {
@@ -1046,7 +1081,7 @@
                        Language.StringByID(StringId.AwayHome), curColor, function.GetAttrState(AcstParent_AttrEnum.scene.ToString()) == AcstParent_Attr_SceneValueEnum.leave_home.ToString());
                    awayHomeIconButton.Click(() =>
                    {
                        btnModeControl.SelectedImagePath = $"FunctionIcon/Acst/{imageFolder}/SceneAwayHomeIcon2.png";
                        btnWorkSceneControl.SelectedImagePath = $"FunctionIcon/Acst/{imageFolder}/SceneAwayHomeIcon2.png";
                        dialog.Close();
                        new System.Threading.Thread(() =>
                        {
@@ -1084,7 +1119,7 @@
                        Language.StringByID(StringId.Sleep), curColor, function.GetAttrState(AcstParent_AttrEnum.scene.ToString()) == AcstParent_Attr_SceneValueEnum.sleep.ToString());
                    sleepIconButton.Click(() =>
                    {
                        btnModeControl.SelectedImagePath = $"FunctionIcon/Acst/{imageFolder}/SceneSleepIcon2.png";
                        btnWorkSceneControl.SelectedImagePath = $"FunctionIcon/Acst/{imageFolder}/SceneSleepIcon2.png";
                        dialog.Close();
                        new System.Threading.Thread(() =>
                        {
@@ -1108,7 +1143,11 @@
            InitGetWeatherAction();
            Control.Ins.SendReadCommand(function);
            new System.Threading.Thread(() =>
            {
                Control.Ins.SendReadCommand(function);
            })
            { IsBackground = true }.Start();
        }
@@ -1127,7 +1166,7 @@
        public string Tag;
        public string unitString;
        public SensorDiyView(HorizontalScrolViewLayout view,uint color,string value,string unitStr,string text,int setWidth = 60)
        public SensorDiyView(HorizontalScrolViewLayout view,uint color,string value,string unitStr, string unitStr2, string text,int setWidth = 60)
        {
            unitString = unitStr;
            if (string.IsNullOrEmpty(value))
@@ -1163,13 +1202,24 @@
                TextAlignment = TextAlignment.Center,
                TextColor = 0xFF949AA5,
                TextSize = 12,
                Text = text,
                Text = text ,
            };
            contentView.AddChidren(btnText);
            if(!string.IsNullOrEmpty(unitStr2))
            {
                btnText.Text += "(" + unitStr2 + ")";
            }
        }
        public void UpdateValue(string value)
        public void UpdateValue(string value,bool isInt)
        {
            if (value.Contains(".") && isInt)
            {
                value = value.Remove(value.IndexOf('.'), value.Length - value.IndexOf('.'));
            }
            btnValue.Text = value + unitString;
        }
    }