wxr
2023-08-18 3fcb73db484d2bed5ee993702913a7eaea68068c
2.1.2
28个文件已修改
536 ■■■■■ 已修改文件
HDL-ON_Android/AgreementActivity.cs 95 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Language.ini 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Properties/AndroidManifest.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/SplashActivity.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Info.plist 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Language.ini 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Common/HDLCommon.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Common/R.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/DriverLayer/Control.cs 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/Mqtt/MqttClient.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/Server/HttpServerRequest.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Entity/Function/Scene.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/MainPage.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI1-Login/LoginPage.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/1-HomePage/HomePage.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/2-Classification/SeriesFunctionListPage.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/TargetDeviceFunList.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Scene/SceneAddPage.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/CombinedDimmingListPage.cs 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Light/ColorTureLampPageBLL.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Light/ColorfulSettingPage.cs 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Light/DimmerPage.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Light/DimmerPageBLL.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Light/GroupControlPage_V2.cs 190 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Light/RGBPage.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/AgreementActivity.cs
@@ -16,54 +16,61 @@
    {
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            // Create your application here
            SetContentView(Resource.Layout.activity_splash);
            Android.Widget.TextView tvPrivacyPolicy = FindViewById<Android.Widget.TextView>(Resource.Id.privacy_policy_btn);
            Android.Widget.TextView tvServiceAgreement = FindViewById<Android.Widget.TextView>(Resource.Id.service_agreement_btn);
            Android.Widget.Button btnDisagree = FindViewById<Android.Widget.Button>(Resource.Id.disagree_btn);
            Android.Widget.Button btnAgree = FindViewById<Android.Widget.Button>(Resource.Id.agree_btn);
            tvPrivacyPolicy.Click += (sender, e) =>
            try
            {
                Intent i = new Intent(this, typeof(WebviewActivity));
                base.OnCreate(savedInstanceState);
                i.PutExtra("url", HDL_ON.Constant.URL_PRIVACYPOLICY);
                StartActivity(i);
                Intent data = new Intent();
                data.PutExtra("data", "disagree");
                SetResult(Result.Canceled, Intent);
            };
            tvServiceAgreement.Click += (sender, e) =>
                // Create your application here
                SetContentView(Resource.Layout.activity_splash);
                Android.Widget.TextView tvPrivacyPolicy = FindViewById<Android.Widget.TextView>(Resource.Id.privacy_policy_btn);
                Android.Widget.TextView tvServiceAgreement = FindViewById<Android.Widget.TextView>(Resource.Id.service_agreement_btn);
                Android.Widget.Button btnDisagree = FindViewById<Android.Widget.Button>(Resource.Id.disagree_btn);
                Android.Widget.Button btnAgree = FindViewById<Android.Widget.Button>(Resource.Id.agree_btn);
                tvPrivacyPolicy.Click += (sender, e) =>
                {
                    Intent i = new Intent(this, typeof(WebviewActivity));
                    i.PutExtra("url", HDL_ON.Constant.URL_PRIVACYPOLICY);
                    StartActivity(i);
                    Intent data = new Intent();
                    data.PutExtra("data", "disagree");
                    SetResult(Result.Canceled, Intent);
                };
                tvServiceAgreement.Click += (sender, e) =>
                {
                    Intent i = new Intent(this, typeof(WebviewActivity));
                    i.PutExtra("url", HDL_ON.Constant.URL_USERAGREEMENT);
                    StartActivity(i);
                    Intent data = new Intent();
                    data.PutExtra("data", "disagree");
                    SetResult(Result.Canceled, Intent);
                };
                btnDisagree.Click += (sender, e) =>
                {
                    //Java.Lang.JavaSystem.Exit(0);
                    FinishAffinity();
                };
                btnAgree.Click += (sender, e) =>
                {
                    OnAppConfig.Instance.isAgreePrivacyPolicy = true;
                    OnAppConfig.Instance.FirstRunApp = false;
                    OnAppConfig.Instance.SaveConfig();
                    Intent data = new Intent();
                    data.PutExtra("data", "agree");
                    SetResult(Result.Ok, Intent);
                    Finish();
                };
            }catch(Exception ex)
            {
                Intent i = new Intent(this, typeof(WebviewActivity));
                Console.WriteLine("AgreementActivity----------------------------1"+ex.Message);
                i.PutExtra("url",HDL_ON.Constant.URL_USERAGREEMENT);
                StartActivity(i);
                Intent data = new Intent();
                data.PutExtra("data", "disagree");
                SetResult(Result.Canceled, Intent);
            };
            btnDisagree.Click += (sender, e) =>
            {
                //Java.Lang.JavaSystem.Exit(0);
                FinishAffinity();
            };
            btnAgree.Click += (sender, e) =>
            {
                OnAppConfig.Instance.isAgreePrivacyPolicy = true;
                OnAppConfig.Instance.FirstRunApp = false;
                OnAppConfig.Instance.SaveConfig();
                Intent data = new Intent();
                data.PutExtra("data", "agree");
                SetResult(Result.Ok, Intent);
                Finish();
            };
            }
        }
    }
}
HDL-ON_Android/Assets/Language.ini
@@ -681,6 +681,7 @@
694=Hourly electricity consumption in the past 24 hours
695=Daily data of the past month
696=Monthly data of the past year
697=prompt: The closer the starting color selection is to the edge of the color ring, the more obvious the dazzling effect. The closer to the white center, the less noticeable the dazzling effect.
@@ -2039,6 +2040,7 @@
694=过去24小时的每小时用电量
695=过去一个月的每日数据
696=过去一年的每月数据
697=提示:起始颜色选择越靠近色环边缘,炫彩效果越明显。越靠近白色中心,炫彩效果越不明显。
@@ -3398,7 +3400,7 @@
694=Hourly electricity consumption in the past 24 hours
695=Daily data of the past month
696=Monthly data of the past year
697=prompt: The closer the starting color selection is to the edge of the color ring, the more obvious the dazzling effect. The closer to the white center, the less noticeable the dazzling effect.
@@ -4750,7 +4752,7 @@
694=Hourly electricity consumption in the past 24 hours
695=Daily data of the past month
696=Monthly data of the past year
697=prompt: The closer the starting color selection is to the edge of the color ring, the more obvious the dazzling effect. The closer to the white center, the less noticeable the dazzling effect.
@@ -6087,7 +6089,7 @@
694=Hourly electricity consumption in the past 24 hours
695=Daily data of the past month
696=Monthly data of the past year
697=prompt: The closer the starting color selection is to the edge of the color ring, the more obvious the dazzling effect. The closer to the white center, the less noticeable the dazzling effect.
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.1.0" package="com.hdl.onpro" xmlns:tools="http://schemas.android.com/tools" android:versionCode="202308091">
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="2.1.2" package="com.hdl.onpro" xmlns:tools="http://schemas.android.com/tools" android:versionCode="202308171">
    <uses-sdk android:minSdkVersion="26" android:targetSdkVersion="29" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <!--友盟-->
HDL-ON_Android/SplashActivity.cs
@@ -59,6 +59,9 @@
            //StartActivityForResult(i, 1);
            //OverridePendingTransition(0, 0);
            //initAll();
#if DEBUG
            HDL_ON.OnAppConfig.Instance.isAgreePrivacyPolicy = true;
#endif
            if (HDL_ON.OnAppConfig.Instance.FirstRunApp || !HDL_ON.OnAppConfig.Instance.isAgreePrivacyPolicy)
            {
                //OnAppConfig.Instance.FirstRunApp = false;
HDL-ON_iOS/Info.plist
@@ -11,7 +11,7 @@
    <key>CFBundleName</key>
    <string>On Pro</string>
    <key>CFBundleShortVersionString</key>
    <string>2.1.0</string>
    <string>2.1.2</string>
    <key>CFBundleURLTypes</key>
    <array>
        <dict>
@@ -36,7 +36,7 @@
        </dict>
    </array>
    <key>CFBundleVersion</key>
    <string>2.1.0</string>
    <string>2.1.2</string>
    <key>LSApplicationQueriesSchemes</key>
    <array>
        <string>weixinULAPI</string>
HDL-ON_iOS/Resources/Language.ini
@@ -681,6 +681,7 @@
694=Hourly electricity consumption in the past 24 hours
695=Daily data of the past month
696=Monthly data of the past year
697=prompt: The closer the starting color selection is to the edge of the color ring, the more obvious the dazzling effect. The closer to the white center, the less noticeable the dazzling effect.
@@ -2039,6 +2040,7 @@
694=过去24小时的每小时用电量
695=过去一个月的每日数据
696=过去一年的每月数据
697=提示:起始颜色选择越靠近色环边缘,炫彩效果越明显。越靠近白色中心,炫彩效果越不明显。
@@ -3398,7 +3400,7 @@
694=Hourly electricity consumption in the past 24 hours
695=Daily data of the past month
696=Monthly data of the past year
697=prompt: The closer the starting color selection is to the edge of the color ring, the more obvious the dazzling effect. The closer to the white center, the less noticeable the dazzling effect.
@@ -4750,7 +4752,7 @@
694=Hourly electricity consumption in the past 24 hours
695=Daily data of the past month
696=Monthly data of the past year
697=prompt: The closer the starting color selection is to the edge of the color ring, the more obvious the dazzling effect. The closer to the white center, the less noticeable the dazzling effect.
@@ -6087,7 +6089,7 @@
694=Hourly electricity consumption in the past 24 hours
695=Daily data of the past month
696=Monthly data of the past year
697=prompt: The closer the starting color selection is to the edge of the color ring, the more obvious the dazzling effect. The closer to the white center, the less noticeable the dazzling effect.
HDL_ON/Common/HDLCommon.cs
@@ -689,7 +689,7 @@
            if (internetStatus == 0)//没有网络连接 0
            {
                MainPage.InternetStatus = 0;
                DAL.Mqtt.MqttClient.InitState();
                //DAL.Mqtt.MqttClient.DisConnectRemote();//.InitState();
            }
            else if (internetStatus == 1)//3,4G的网络连接 1
            {
HDL_ON/Common/R.cs
@@ -5,6 +5,10 @@
    public static class StringId
    {
        /// <summary>
        /// 提示:起始颜色选择越靠近色环边缘,炫彩效果越明显。越靠近白色中心,炫彩效果越不明显。
        /// </summary>
        public const int ColorfulSetTip = 697;
        /// <summary>
        /// 过去一年的每月数据
        /// </summary>
        public const int AirSwitchP3HistroyTip3 = 696;
HDL_ON/DAL/DriverLayer/Control.cs
@@ -641,7 +641,10 @@
                        System.Threading.Thread.Sleep(100);
                    }
                }
                var pack = pm.ControlDevice(actionObjs);
                if (actionObjs.Count > 0)
                {
                    var pack = pm.ControlDevice(actionObjs);
                }
            }
        }
HDL_ON/DAL/Mqtt/MqttClient.cs
@@ -133,6 +133,10 @@
            new System.Threading.Thread(async () => {
                while (true)
                {
                    if (!UserInfo.Current.IsLogin)
                    {
                        return;
                    }
                    try
                    {
                        System.Threading.Thread.Sleep(2000);
HDL_ON/DAL/Server/HttpServerRequest.cs
@@ -2288,7 +2288,7 @@
            d.Add("actions", actionObjs);
            var requestJson = HttpUtil.GetSignRequestJson(d);
            MainPage.Log($"api功能控制:{requestJson}");
            MainPage.Log($"api发送控制:{requestJson}");
            return HttpUtil.RequestHttpsPostFroHome(NewAPI.Api_Post_ControlDevice, requestJson);
        }
        /// <summary>
HDL_ON/Entity/Function/Scene.cs
@@ -151,6 +151,7 @@
        /// 配合豆豆修改云端数据
        /// 调试宝、on pro和平台对应
        /// </summary>
        [Newtonsoft.Json.JsonIgnore]
        public List<SceneImageInfo> OssSceneImages = new List<SceneImageInfo>()
        {
            new SceneImageInfo
HDL_ON/UI/MainPage.cs
@@ -26,7 +26,7 @@
        /// <summary>
        /// 版本号
        /// </summary>
        public static string VersionString = "2.0.0";
        public static string VersionString = "2.1.2";
        ///// <summary>
        ///// 客户端类型
        ///// </summary>
@@ -629,8 +629,8 @@
        {
#if DEBUG
            if (msg.Contains("收到数据")
                || msg.Contains("api功能控制")
                //|| msg.Contains("接收到推送")
                || msg.Contains("发送")
                || msg.Contains("读取功能状态")
                //|| true
                )
                Console.WriteLine(msg);
HDL_ON/UI/UI1-Login/LoginPage.cs
@@ -323,9 +323,9 @@
                    etAccount.Text = "13375012446";//测试服务器
                    etAccount.Text = "15855403939";
                    etAccount.Text = "15006564444";
                    etAccount.Text = "jeremy@ruma.my";
                    etAccount.Text = "pjh@hdlchina.com.cn";
                    //etAccount.Text = "12345678904";//2.0 测试  萤石
                    //etAccount.Text = "18316672920";
                    etAccount.Text = "18316672920";
                }
                else
                {
@@ -357,9 +357,9 @@
                }
                b = !b;
                etPassword.Text = "123456";
                if(etAccount.Text == "jeremy@ruma.my")
                if(etAccount.Text == "pjh@hdlchina.com.cn")
                {
                    etPassword.Text = "CEBCWINP";
                    etPassword.Text = "hdl123";
                }
                else if(etAccount.Text == "13143792049")
                {
HDL_ON/UI/UI2/1-HomePage/HomePage.cs
@@ -1090,7 +1090,6 @@
            #region ContextView
            gcFunctionView.RemoveAll();
            functionViews.Clear();
            var rowView = new FrameLayout();
            try
            {
HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs
@@ -755,10 +755,6 @@
                        break;
                    case ShowFunction.SecurityCenter:
                        functionCount = FunctionList.List.securities.Count;
                        //if (DB_ResidenceData.Instance.GatewayType == 1)
                        //{
                        //    functionCount = 1;
                        //}
                        break;
                    case ShowFunction.Acst:
                        functionCount = FunctionList.List.GetAcstParentList().Count;
@@ -766,14 +762,10 @@
                        break;
                    case ShowFunction.VideoDoorLock:
                        functionCount = FunctionList.List.GetVideoDoorLockList().Count;
#if DEBUG
                        //functionCount = 1;
#endif
                        functionOnCount = 1;
                        functionOnCount = FunctionList.List.GetAcstParentList().FindAll((obj) => obj.GetAttrState("status").ToString() == "open"
                            || obj.GetAttrState("status").ToString() == "normal_open").Count;
                        break;
                }
                if (functionCount == 0)
HDL_ON/UI/UI2/2-Classification/SeriesFunctionListPage.cs
@@ -78,10 +78,6 @@
                        TextColor = CSS_Color.MainColor,
                        Text =Language.StringByID( StringId.HorseRaceLampGroup )+ " "+ oidList.Count.ToString(),
                    };
                    if(Language.CurrentLanguage == "Chinese")
                    {
                        btnTitle.Text = Language.StringByID(StringId.HorseRaceLampGroup) + oidList.Count.ToString();
                    }
                    titleView.AddChidren(btnTitle);
                    #endregion
HDL_ON/UI/UI2/3-Intelligence/Automation/TargetDeviceFunList.cs
@@ -164,6 +164,21 @@
                        #endregion
                    }
                    break;
                case SPK.CommonSeries:
                    #region 界面
                    ///开关
                    LogicView.FunTypeView SerriesSwitchView = new LogicView.FunTypeView();
                    SerriesSwitchView.btnText.TextID = StringId.switchLogic;
                    fLayout.AddChidren(SerriesSwitchView.FLayoutView());
                    #endregion
                    ///开关点击事件
                    SerriesSwitchView.btnClick.MouseUpEventHandler += (sender, e) =>
                    {
                        SwitchViewMethod(device, SerriesSwitchView.btnState, 2);
                    };
                    break;
                //开关灯光 
                case SPK.AirSwitch:
                case SPK.LightSwitch:
HDL_ON/UI/UI2/3-Intelligence/Scene/SceneAddPage.cs
@@ -468,10 +468,16 @@
                EventHandler<MouseEventArgs> skipEvent= (sender, e) =>
                {
                    var ssf = new SceneFunctionInfoEditPage(scene, scenefunction.localFunction.ConvertSceneFunction(), refreshFunctionRowAction);
                    MainPage.BasePageView.AddChidren(ssf);
                    ssf.LoadPage();
                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                    try
                    {
                        var ssf = new SceneFunctionInfoEditPage(scene, scenefunction.localFunction.ConvertSceneFunction(), refreshFunctionRowAction);
                        MainPage.BasePageView.AddChidren(ssf);
                        ssf.LoadPage();
                        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                    }catch(Exception ex)
                    {
                        MainPage.Log($"load SceneFunctionInfoEditPage error : {ex.Message}");
                    }
                };
                btnFunctionName.MouseUpEventHandler = skipEvent;
@@ -542,7 +548,7 @@
            var perAngle = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Angle);
            if (perAngle != null)
            {
                sceneFunctionInfo += " "+ perState.value + "°";
                sceneFunctionInfo += " "+ perAngle.value + "°";
            }
            var perColorful = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Colorful);
HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs
@@ -61,11 +61,18 @@
            bodyView.AddChidren(contentView);
            var onOffStatus = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff);
            if(onOffStatus.value == "on")
            if (onOffStatus != null)
            {
                if (onOffStatus.value == "on")
                {
                    isOnStatus = true;
                }
                LoadFunctionRow(onOffStatus);
            }
            else
            {
                isOnStatus = true;
            }
            LoadFunctionRow(onOffStatus);
            if (sceneFunction.localFunction.spk == SPK.LightRGB || sceneFunction.localFunction.spk == SPK.GroupControl)
            {
@@ -179,8 +186,11 @@
                    }
                    else
                    {
                        sceneFunction.status.Clear();
                        sceneFunction.status.Add(new SceneFunctionStatus() { key = FunctionAttributeKey.OnOff, value = "off" });
                        if (sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff) != null)
                        {
                            sceneFunction.status.Clear();
                            sceneFunction.status.Add(new SceneFunctionStatus() { key = FunctionAttributeKey.OnOff, value = "off" });
                        }
                    }
                }
                var temp = scene.functions.Find((obj) => obj.sid == sceneFunction.sid);
HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/CombinedDimmingListPage.cs
@@ -4,6 +4,7 @@
using HDL_ON.DAL.Server;
using HDL_ON.Entity;
using HDL_ON.UI.CSS;
using Newtonsoft.Json;
using Shared;
namespace HDL_ON.UI
@@ -29,7 +30,10 @@
                        var page = new AddGroupControlPage(null,
                            (newGC) =>
                            {
                                ReadGroupControlList();
                                Application.RunOnMainThread(() =>
                                {
                                    LoadGroupControlView();
                                });
                            }, () => { });
                        MainPage.BasePageView.AddChidren(page);
                        page.LoadPage();
@@ -71,8 +75,57 @@
                    {
                        try
                        {
                            FunctionList.List.groupControls.Clear();
                            FunctionList.List.groupControls = Newtonsoft.Json.JsonConvert.DeserializeObject<List<GroupControl>>(pack.Data.ToString());
                            //FunctionList.List.groupControls.Clear();
                            //FunctionList.List.groupControls = Newtonsoft.Json.JsonConvert.DeserializeObject<List<GroupControl>>(pack.Data.ToString());
                            try
                            {
                                var groupControlList = JsonConvert.DeserializeObject<List<GroupControl>>(pack.Data.ToString());
                                var readSidList = new List<string>();
                                foreach (var temp in groupControlList)
                                {
                                    FunctionList.List.groupControls.Clear();
                                    readSidList.Add(temp.userDeviceGroupControlId);
                                    if (readSidList.Count >= 20)
                                    {
                                        var data = ApiUtlis.Ins.HttpRequest.GetGroupControInfo(readSidList);
                                        if (data != null)
                                        {
                                            if (data.Code == StateCode.SUCCESS)
                                            {
                                                var groupControlInfoList = JsonConvert.DeserializeObject<List<GroupControl>>(data.Data.ToString());
                                                FunctionList.List.groupControls.AddRange(groupControlInfoList);
                                            }
                                            else
                                            {
                                                IMessageCommon.Current.ShowErrorInfoAlter(pack.Code);
                                            }
                                        }
                                        readSidList.Clear();
                                    }
                                }
                                if (readSidList.Count > 0)
                                {
                                    var data = ApiUtlis.Ins.HttpRequest.GetGroupControInfo(readSidList);
                                    if (data != null)
                                    {
                                        if (data.Code == StateCode.SUCCESS)
                                        {
                                            var groupControlInfoList = JsonConvert.DeserializeObject<List<GroupControl>>(data.Data.ToString());
                                            FunctionList.List.groupControls.AddRange(groupControlInfoList);
                                        }
                                        else
                                        {
                                            IMessageCommon.Current.ShowErrorInfoAlter(pack.Code);
                                        }
                                    }
                                    readSidList.Clear();
                                }
                            }
                            catch (Exception ex)
                            {
                                MainPage.Log($"读取组控列表失败:{ex.Message}");
                            }
                            Application.RunOnMainThread(() =>
                            {
HDL_ON/UI/UI2/FuntionControlView/Light/ColorTureLampPageBLL.cs
@@ -81,7 +81,7 @@
                    function.SetAttrState(FunctionAttributeKey.FadeTime, e.ToString());
                    var d = new System.Collections.Generic.Dictionary<string, string>();
                    d.Add(FunctionAttributeKey.FadeTime, e.ToString());
                    Control.Ins.SendWriteCommand(function, d);
                    //Control.Ins.SendWriteCommand(function, d);
                    function.SaveFunctionFile();
                };
            }
HDL_ON/UI/UI2/FuntionControlView/Light/ColorfulSettingPage.cs
@@ -313,21 +313,28 @@
            contentView.AddChidren(new Button()
            {
                Height = Application.GetRealHeight(30)
                Height = Application.GetRealHeight(12)
            });
            var btnSelectColorTip = new Button()
            if (isSatrtColor)
            {
                Height = Application.GetRealWidth(35),
                Width = Application.GetRealWidth(300),
                TextAlignment = TextAlignment.CenterLeft,
                TextSize = 12,
                TextColor = 0x21000000,
                Text = "提示:起始颜色选择越靠近色环边缘,炫彩效果越明显。越靠近白色中心,炫彩效果越不明显。",
                IsMoreLines = true,
            };
            contentView.AddChidren(btnSelectColorTip);
                var btnSelectColorTip = new Button()
                {
                    X = Application.GetRealWidth(16),
                    Height = Application.GetRealWidth(35),
                    Width = Application.GetRealWidth(300),
                    TextAlignment = TextAlignment.CenterLeft,
                    TextSize = 12,
                    TextColor = 0x21000000,
                    TextID = StringId.ColorfulSetTip,// = "提示:起始颜色选择越靠近色环边缘,炫彩效果越明显。越靠近白色中心,炫彩效果越不明显。",
                    IsMoreLines = true,
                };
                contentView.AddChidren(btnSelectColorTip);
                contentView.AddChidren(new Button()
                {
                    Height = Application.GetRealHeight(12)
                });
            }
            #region 保存
            var btnConfrim = new Button()
            {
HDL_ON/UI/UI2/FuntionControlView/Light/DimmerPage.cs
@@ -220,11 +220,6 @@
                    Enable = function.GetAttribute(FunctionAttributeKey.FadeTime) != null,
                };
                controlView.AddChidren(barFadeTime);
                barFadeTime.OnStopTrackingTouchEvent = (sender, e) =>
                {
                    function.SetAttrState(FunctionAttributeKey.FadeTime, e.ToString());
                    function.UpdataFuncitonInfo();
                };
                var btnGradualChangeMaxValuesText = new Button()
                {
HDL_ON/UI/UI2/FuntionControlView/Light/DimmerPageBLL.cs
@@ -69,7 +69,7 @@
                    function.SetAttrState(FunctionAttributeKey.FadeTime, e.ToString());
                    var d = new System.Collections.Generic.Dictionary<string, string>();
                    d.Add(FunctionAttributeKey.FadeTime, e.ToString());
                    Control.Ins.SendWriteCommand(function, d);
                    //Control.Ins.SendWriteCommand(function, d);
                    function.SaveFunctionFile();
                };
            }
HDL_ON/UI/UI2/FuntionControlView/Light/GroupControlPage_V2.cs
@@ -4,6 +4,7 @@
using HDL_ON.DriverLayer;
using HDL_ON.Entity;
using HDL_ON.UI.CSS;
using Java.Util.Functions;
using Shared;
namespace HDL_ON.UI
@@ -209,31 +210,39 @@
            attrView.AddChidren(new Button() { Height = Application.GetRealHeight(18) });
            btnSwitch = new Button()
            var btnOn = new Button()
            {
                Gravity = Gravity.CenterHorizontal,
                X = Application.GetRealWidth(100),
                Y = Application.GetRealHeight(466),
                Width = Application.GetMinRealAverage(32),
                Height = Application.GetMinRealAverage(32),
                //UnSelectedImagePath = "Public/PowerClose.png",
                UnSelectedImagePath = "Public/PowerOpen.png",
            };
            controlView.AddChidren(btnOn);
            var btnOff = new Button()
            {
                X = Application.GetRealWidth(180),
                Y = Application.GetRealHeight(466),
                Width = Application.GetMinRealAverage(32),
                Height = Application.GetMinRealAverage(32),
                UnSelectedImagePath = "Public/PowerClose.png",
                SelectedImagePath = "Public/PowerOpen.png",
                //UnSelectedImagePath = "Public/PowerOpen.png",
            };
            controlView.AddChidren(btnSwitch);
            btnSwitch.MouseUpEventHandler = (sender, e) => {
                if (btnSwitch.IsSelected)
                {
                    btnSwitch.IsSelected = false;
                    var d = new Dictionary<string, string>();
                    d.Add(FunctionAttributeKey.OnOff, "off");
                    function.Control(d);
                }
                else
                {
                    btnSwitch.IsSelected = true;
                    var d = new Dictionary<string, string>();
                    d.Add(FunctionAttributeKey.OnOff, "on");
                    function.Control(d);
                }
            controlView.AddChidren(btnOff);
            btnOn.MouseUpEventHandler = (sender, e) =>
            {
                var d = new Dictionary<string, string>();
                d.Add(FunctionAttributeKey.OnOff, "on");
                function.Control(d);
            };
            btnOff.MouseUpEventHandler = (sender, e) =>
            {
                var d = new Dictionary<string, string>();
                d.Add(FunctionAttributeKey.OnOff, "off");
                function.Control(d);
            };
@@ -267,21 +276,16 @@
                btnSwitchIcon.MouseUpEventHandler = (sender, e) => {
                    if (btnSwitchIcon.IsSelected)
                    {
                        btnSwitchIcon.IsSelected = btnSwitch.IsSelected = false;
                        var d = new Dictionary<string, string>();
                        d.Add(FunctionAttributeKey.OnOff, "off");
                        function.Control(d);
                    }
                    else
                    {
                        btnSwitchIcon.IsSelected = btnSwitch.IsSelected = true;
                        var d = new Dictionary<string, string>();
                        d.Add(FunctionAttributeKey.OnOff, "on");
                        function.Control(d);
                    }
                };
                btnSwitch.MouseUpEventHandler += (sender, e) => {
                    btnSwitchIcon.IsSelected = btnSwitch.IsSelected;
                };
            }
@@ -289,7 +293,6 @@
        }
        Button btnSwitch;
        /// <summary>
        /// 加载调光属性设置控件
@@ -337,18 +340,26 @@
            };
            dimmerView.AddChidren(btnBrightnessText);
            dimmerBar.OnStopTrackingTouchEvent = (sender, e) => {
                new System.Threading.Thread(() =>
                {
                    var d = new Dictionary<string, string>();
                    d.Add(FunctionAttributeKey.Brightness, e.ToString());
                    function.Control(d);
                })
                { IsBackground = true }.Start();
            };
            dimmerBar.OnProgressChangedEvent = (sender, e) =>
            {
                if (e == 0 && lastBrightness != 0)
                {
                    btnSwitch.IsSelected = false;
                    lastBrightness = 0;
                }
                else
                {
                    if (lastBrightness == 0)
                        lastBrightness = e;
                    btnSwitch.IsSelected = true;
                }
                if (e == 0 || e == 100)
                {
@@ -373,19 +384,6 @@
                }
                btnBrightnessText.Y = ((100 - dimmerBar.Progress) * Application.GetRealHeight(222 - 16) / 100);
                btnBrightnessText.Text = dimmerBar.Progress + "%";
            };
            btnSwitch.MouseUpEventHandler += (sender, e) => {
                if (btnSwitch.IsSelected)
                {
                    dimmerBar.Progress = 100;
                }
                else
                {
                    dimmerBar.Progress = 0;
                }
                btnBrightnessText.Y = ((100 - dimmerBar.Progress) * Application.GetRealHeight(222 - 16) / 100);
                btnBrightnessText.Text = dimmerBar.Progress + "%";
            };
@@ -436,18 +434,26 @@
            };
            dimmerView.AddChidren(btnBrightnessText);
            dimmerBar.OnStopTrackingTouchEvent = (sender, e) => {
                new System.Threading.Thread(() =>
                {
                    var d = new Dictionary<string, string>();
                    d.Add(FunctionAttributeKey.Brightness, e.ToString());
                    function.Control(d);
                })
                { IsBackground = true }.Start();
            };
            dimmerBar.OnProgressChangedEvent = (sender, e) =>
            {
                if (e == 0 && lastBrightness != 0)
                {
                    btnSwitch.IsSelected = false;
                    lastBrightness = 0;
                }
                else
                {
                    if (lastBrightness == 0)
                        lastBrightness = e;
                    btnSwitch.IsSelected = true;
                }
                if (e == 0 || e == 100)
@@ -477,19 +483,7 @@
                btnBrightnessText.Text = dimmerBar.Progress + "%";
            };
            btnSwitch.MouseUpEventHandler += (sender, e) => {
                if (btnSwitch.IsSelected)
                {
                    dimmerBar.Progress = 100;
                }
                else
                {
                    dimmerBar.Progress = 0;
                }
                btnBrightnessText.Y = ((100 - dimmerBar.Progress) * Application.GetRealHeight(222 - 16) / 100);
                btnBrightnessText.Text = dimmerBar.Progress + "%";
            };
            //attrView.AddChidren(new Button() { Height = Application.GetRealHeight(10) });
            #region 色温
@@ -628,10 +622,10 @@
                ColorImagePath = "FunctionIcon/Light/ColorWheel.png",
            };
            framePickerBack.AddChidren(colorPicker);
            if (function.trait_on_off.curValue.ToString() == "off")
            {
                colorPicker.ColorImagePath = "FunctionIcon/Light/ColorWheelGray.png";
            }
            //if (function.trait_on_off.curValue.ToString() == "off")
            //{
            //    colorPicker.ColorImagePath = "FunctionIcon/Light/ColorWheelGray.png";
            //}
            //colorPicker.MouseDownEventHandler = (sender, e) => {
            //    MainPage.BasePageView.ScrollEnabled = false;
            //};
@@ -668,7 +662,22 @@
            };
            colorPicker.ColorChaged += (sender2, e2) =>
            {
                if (  pointIsRight == false)
                {
                    return;
                }
                //if (colorPicker.ColorImagePath == "FunctionIcon/Light/ColorWheelGray.png")
                //{
                //    return;
                //}
                    if (function.refreshTime.AddMilliseconds(350) > DateTime.Now)
                {
                    MainPage.Log("频繁控制,退出");
                    return;
                }
                function.refreshTime = DateTime.Now;
                rgbString = (e2[0] + "," + e2[1] + "," + e2[2]).ToString();
                btnCurColor.BackgroundColor = (uint)(0xFF000000 + rgbTemp.GetRGBcolor(rgbString));
                var d = new Dictionary<string, string>();
                d.Add(FunctionAttributeKey.RGB, rgbString);
@@ -677,12 +686,15 @@
            colorPicker.MouseDownEventHandler += (sender, e) =>
            {
                pointIsRight = this.CheckPoint(circleR, colorPicker.Width / 2, colorPicker.Height / 2, (int)e.X, (int)e.Y);
                if (function.trait_on_off.curValue.ToString() == "off" || pointIsRight == false)
                if (pointIsRight == false)
                {
                    //pointIsRight:点的区域不是圆盘内
                    return;
                }
                //if (colorPicker.ColorImagePath == "FunctionIcon/Light/ColorWheelGray.png")
                //{
                //    return;
                //}
                //显示白点
                btnWhiteRound.X = (int)e.X - btnWhiteRound.Width / 2;
                btnWhiteRound.Y = (int)e.Y - btnWhiteRound.Height / 2;
@@ -743,19 +755,26 @@
            };
            controlView.AddChidren(dimmerBar);
            dimmerBar.OnStopTrackingTouchEvent = (sender, e) => {
                new System.Threading.Thread(() =>
                {
                    var d = new Dictionary<string, string>();
                    d.Add(FunctionAttributeKey.Brightness, e.ToString());
                    function.Control(d);
                })
                { IsBackground = true }.Start();
            };
            dimmerBar.OnProgressChangedEvent = (sender, e) =>
            {
                if (e == 0 && lastBrightness != 0)
                {
                    btnSwitch.IsSelected = false;
                    lastBrightness = 0;
                }
                else
                {
                    if (lastBrightness == 0)
                        lastBrightness = e;
                    btnSwitch.IsSelected = true;
                }
                if (e == 0 || e == 100)
                {
@@ -778,23 +797,22 @@
                        { IsBackground = true }.Start();
                    }
                }
                if (e == 0)
                {
                    if (function.trait_on_off.curValue.ToString() == "on")
                    {
                        function.SetAttrState(FunctionAttributeKey.OnOff, "off");
                        colorPicker.ColorImagePath = "FunctionIcon/Light/ColorWheelGray.png";
                    }
                }
                else
                {
                    if (function.trait_on_off.curValue.ToString() == "off")
                    {
                        function.SetAttrState(FunctionAttributeKey.OnOff, "on");
                        colorPicker.ColorImagePath = "FunctionIcon/Light/ColorWheel.png";
                    }
                }
                //if (e == 0)
                //{
                //    if (colorPicker.ColorImagePath != "FunctionIcon/Light/ColorWheelGray.png")
                //    {
                //        colorPicker.ColorImagePath = "FunctionIcon/Light/ColorWheelGray.png";
                //    }
                //}
                //else
                //{
                //    if (colorPicker.ColorImagePath != "FunctionIcon/Light/ColorWheel.png")
                //    {
                //        colorPicker.ColorImagePath = "FunctionIcon/Light/ColorWheel.png";
                //    }
                //}
            };
            var btnMaxValuesText = new Button()
@@ -810,20 +828,6 @@
            };
            controlView.AddChidren(btnMaxValuesText);
            btnSwitch.MouseUpEventHandler += (sender, e) => {
                if (btnSwitch.IsSelected)
                {
                    dimmerBar.Progress = 100;
                    function.SetAttrState(FunctionAttributeKey.OnOff, "on");
                    colorPicker.ColorImagePath = "FunctionIcon/Light/ColorWheel.png";
                }
                else
                {
                    dimmerBar.Progress = 0;
                    function.SetAttrState(FunctionAttributeKey.OnOff, "off");
                    colorPicker.ColorImagePath = "FunctionIcon/Light/ColorWheelGray.png";
                }
            };
            #endregion
            int heightMore = 375 - magriHeight-20;
HDL_ON/UI/UI2/FuntionControlView/Light/RGBPage.cs
@@ -314,11 +314,11 @@
                    SeekBarPadding = Application.GetRealWidth(20),
                };
                controlView.AddChidren(barFadeTime);
                barFadeTime.OnStopTrackingTouchEvent = (sender, e) =>
                {
                    function.SetAttrState(FunctionAttributeKey.FadeTime, barFadeTime.Progress);
                    function.UpdataFuncitonInfo();
                };
                //barFadeTime.OnStopTrackingTouchEvent = (sender, e) =>
                //{
                //    function.SetAttrState(FunctionAttributeKey.FadeTime, barFadeTime.Progress);
                //    function.UpdataFuncitonInfo();
                //};
                var btnGradualChangeMaxValuesText = new Button()
                {
HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs
@@ -182,7 +182,6 @@
                            lightTemp.SetRGBcolor(lastColor, function);
                            System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                            d.Add(FunctionAttributeKey.RGB, lightTemp.GetRGBcolorString(function));
                            d.Add(FunctionAttributeKey.Brightness, dimmerBar.Progress.ToString());
                            Control.Ins.SendWriteCommand(function, d,false,0);
                            break;
                        }
@@ -224,7 +223,19 @@
                    }.Show(MainPage.BaseView);
                    return;
                }
                curDimmerStatus = false;
                if(dimmerBar.Progress==0|| dimmerBar.Progress == 100)
                {
                    if (dimmerBar.Progress == 0)
                    {
                        //解决部分安卓手机,刷新图片时会变小问题
                        if (bodyView.colorPicker.ColorImagePath != "FunctionIcon/Light/ColorWheelGray.png")
                        {
                            bodyView.colorPicker.ColorImagePath = "FunctionIcon/Light/ColorWheelGray.png";
                        }
                    }
                    return;
                }
                onDimmerBar = curDimmerStatus = false;
                function.SetAttrState(FunctionAttributeKey.Brightness, dimmerBar.Progress);
                System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                d.Add(FunctionAttributeKey.Brightness, dimmerBar.Progress.ToString());
@@ -286,7 +297,7 @@
                    function.SetAttrState(FunctionAttributeKey.FadeTime, e.ToString());
                    var d = new System.Collections.Generic.Dictionary<string, string>();
                    d.Add(FunctionAttributeKey.FadeTime, e.ToString());
                    Control.Ins.SendWriteCommand(function, d);
                    //Control.Ins.SendWriteCommand(function, d);
                    function.SaveFunctionFile();
                };
            }