wxr
2023-10-20 6de7f8a29b04737d80ad8cb17804fcc50d267bd9
2.3版本
14个文件已添加
26个文件已修改
433 ■■■■ 已修改文件
HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensorlight.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Light/LightScene/gp_all_off.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Light/LightScene/gp_all_off_home.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Light/LightScene/gp_all_off_home_click.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Light/LightScene/gp_all_on.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Light/LightScene/gp_all_on_home.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Light/LightScene/gp_all_on_home_click.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/HDL-ON_Android.csproj 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Properties/AndroidManifest.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/AppDelegate.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/HDL-ON_iOS.csproj 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Info.plist 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensorlight.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Light/LightScene/gp_all_off.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Light/LightScene/gp_all_off_home.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Light/LightScene/gp_all_off_home_click.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Light/LightScene/gp_all_on.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Light/LightScene/gp_all_on_home.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Light/LightScene/gp_all_on_home_click.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/DriverLayer/Control.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Entity/Function/Function.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Entity/Function/Sensor.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/MainPage.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI1-Login/LoginPage.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI1-Login/RegisterPage.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/1-HomePage/HomePage.cs 74 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/2-Classification/ClassificaitionPublicBLL.cs 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/TipPopView.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/BrandListPage.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPageBLL.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/ArmCenter/ArmCenterPage.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SenesorMegahealthPage.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorPirPage.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalPage.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Light/ColorfulInfoPage.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Light/GroupControlPage_V2.cs 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensorlight.png
HDL-ON_Android/Assets/Phone/FunctionIcon/Light/LightScene/gp_all_off.png
HDL-ON_Android/Assets/Phone/FunctionIcon/Light/LightScene/gp_all_off_home.png
HDL-ON_Android/Assets/Phone/FunctionIcon/Light/LightScene/gp_all_off_home_click.png
HDL-ON_Android/Assets/Phone/FunctionIcon/Light/LightScene/gp_all_on.png
HDL-ON_Android/Assets/Phone/FunctionIcon/Light/LightScene/gp_all_on_home.png
HDL-ON_Android/Assets/Phone/FunctionIcon/Light/LightScene/gp_all_on_home_click.png
HDL-ON_Android/HDL-ON_Android.csproj
@@ -612,6 +612,13 @@
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\sensordryContact_white.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\sensorpir_hold_blue.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\sensorpir_hold_white.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\sensorlight.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Light\LightScene\gp_all_off_home_click.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Light\LightScene\gp_all_off_home.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Light\LightScene\gp_all_off.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Light\LightScene\gp_all_on_home_click.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Light\LightScene\gp_all_on_home.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Light\LightScene\gp_all_on.png" />
  </ItemGroup>
  <ItemGroup>
    <AndroidResource Include="Resources\values\colors.xml" />
HDL-ON_Android/Properties/AndroidManifest.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="2.2.0" package="com.hdl.onpro" xmlns:tools="http://schemas.android.com/tools" android:versionCode="202310131">
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="2.3.0" package="com.hdl.onpro" xmlns:tools="http://schemas.android.com/tools" android:versionCode="202310201">
    <uses-sdk android:minSdkVersion="26" android:targetSdkVersion="30" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <!--友盟-->
HDL-ON_iOS/AppDelegate.cs
@@ -62,6 +62,17 @@
        {
            UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0;
        }
        [Export("application:shouldAllowExtensionPointIdentifier:")]
        public override bool ShouldAllowExtensionPointIdentifier(UIApplication application, NSString extensionPointIdentifier)
        {
            //if (extensionPointIdentifier == UIApplicationKeyboardExtensionPointIdentifier)
            //{
            //    return false;
            //}
            return true;
        }
        public override void RegisteredForRemoteNotifications(UIApplication application, NSData deviceToken)
        {
HDL-ON_iOS/HDL-ON_iOS.csproj
@@ -1768,6 +1768,18 @@
      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\sensorpir_hold_white.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\sensorpir_hold.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\sensordryContact.png" />
      <BundleResource Include="Resources\Phone\Collection\FunctionArmOnbg.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\sensormegahealth.png" />
      <BundleResource Include="Resources\Phone\LogicIcon\selectlocation.png" />
      <BundleResource Include="Resources\Phone\LogicIcon\ganjiedian.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\FunctionBg\VideoDoorLockFunctionBg.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\sensorlight.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Light\LightScene\gp_all_off_home_click.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Light\LightScene\gp_all_off_home.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Light\LightScene\gp_all_off.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Light\LightScene\gp_all_on_home_click.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Light\LightScene\gp_all_on_home.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Light\LightScene\gp_all_on.png" />
    </ItemGroup>
    <ItemGroup>
      <ITunesArtwork Include="iTunesArtwork" />
HDL-ON_iOS/Info.plist
@@ -11,7 +11,7 @@
    <key>CFBundleName</key>
    <string>On Pro</string>
    <key>CFBundleShortVersionString</key>
    <string>2.2.0</string>
    <string>2.3.0</string>
    <key>CFBundleURLTypes</key>
    <array>
        <dict>
@@ -36,7 +36,7 @@
        </dict>
    </array>
    <key>CFBundleVersion</key>
    <string>2.2.0</string>
    <string>2.3.0</string>
    <key>LSApplicationQueriesSchemes</key>
    <array>
        <string>weixinULAPI</string>
HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensorlight.png
HDL-ON_iOS/Resources/Phone/FunctionIcon/Light/LightScene/gp_all_off.png
HDL-ON_iOS/Resources/Phone/FunctionIcon/Light/LightScene/gp_all_off_home.png
HDL-ON_iOS/Resources/Phone/FunctionIcon/Light/LightScene/gp_all_off_home_click.png
HDL-ON_iOS/Resources/Phone/FunctionIcon/Light/LightScene/gp_all_on.png
HDL-ON_iOS/Resources/Phone/FunctionIcon/Light/LightScene/gp_all_on_home.png
HDL-ON_iOS/Resources/Phone/FunctionIcon/Light/LightScene/gp_all_on_home_click.png
HDL_ON/DAL/DriverLayer/Control.cs
@@ -1497,6 +1497,7 @@
                            case SPK.SensorTemperature:
                            case SPK.SensorHumidity:
                            case SPK.SensorHcho:
                            case SPK.SensorLight:
                                if (localFunction.spk == SPK.SensorTemperature)
                                {
                                    HomePage.LoadEvent_RefreshEnvirIndoorTemp();
@@ -1578,7 +1579,7 @@
                                    switch (tempStatus.state)
                                    {//0空,1走,2跑,3坐,4跌倒,5站
                                        case "0":
                                            localFunction.lastState = Language.StringByID(StringId.SensorNormalState);
                                            localFunction.lastState = Language.StringByID(StringId.wuren);
                                            break;
                                        case "1":
                                            localFunction.lastState = Language.StringByID(StringId.SomeoneIn);
HDL_ON/Entity/Function/Function.cs
@@ -177,9 +177,9 @@
                    case SPK.OtherCommon:
                        iconPath = "sensordryContact";
                        break;
                    case SPK.SensorLight:
                        iconPath = "lightswitch";
                        break;
                    //case SPK.SensorLight:
                    //    iconPath = "lightswitch";
                    //    break;
                    case SPK.AirSwitchP3:
                        iconPath = "electricalbreaker";
                        break;
@@ -1494,6 +1494,10 @@
        public const string Temperature = "temperature";
        public const string Hcho = "hcho";
        public const string Humidity = "humidity";
        /// <summary>
        /// 照度
        /// </summary>
        public const string Illuminance = "illuminance";
        public const string Pm25 = "pm25";
        public const string Tvoc = "tvoc";
        /// <summary>
HDL_ON/Entity/Function/Sensor.cs
@@ -90,10 +90,10 @@
        /// </summary>
        public List<string> GetIntervalValue(string spk)
        {
            if(_intervalValue.Count != 0)
            {
                return _intervalValue;
            }
            //if (_intervalValue.Count != 0)
            //{
            //    return _intervalValue;
            //}
            _intervalValue = new List<string>();
            switch (spk)
            {
HDL_ON/UI/MainPage.cs
@@ -26,7 +26,7 @@
        /// <summary>
        /// 版本号
        /// </summary>
        public static string VersionString = "2.2.0";
        public static string VersionString = "2.3.0";
        ///// <summary>
        ///// 客户端类型
        ///// </summary>
HDL_ON/UI/UI1-Login/LoginPage.cs
@@ -478,6 +478,9 @@
                PlaceholderText = Language.StringByID(StringId.PlsEntryPhoneNumber),
                TextAlignment = TextAlignment.CenterLeft,
            };
#if __IOS__
            etAccount.MyTextContentType = UIKit.UITextContentType.Name;
#endif
            accountView.AddChidren(etAccount);
            if (userInfo != null && userInfo.ID != "1234567890")
@@ -1293,6 +1296,18 @@
                    },
                });
                FunctionList.List.Functions.Add(new Function()
                {
                    spk = SPK.SensorLight,
                    name = "光照传感器",
                    //collect = true,
                    sid = "SensorLightsss000001",
                    attributes = new List<FunctionAttributes>()
                    {
                        new FunctionAttributes(){ key = "illuminance",curValue= "100",state = "100" },
                    },
                });
                FunctionList.List.Functions.Add(new Function()
                {
HDL_ON/UI/UI1-Login/RegisterPage.cs
@@ -238,6 +238,7 @@
            };
            pm = new HttpServerRequest();
        }
        //public RegisterPage(Action action)
HDL_ON/UI/UI2/1-HomePage/HomePage.cs
@@ -1294,7 +1294,7 @@
                        switch (tempStatus.state)
                        {//0空,1走,2跑,3坐,4跌倒,5站
                            case "0":
                                function.lastState = Language.StringByID(StringId.SensorNormalState);
                                function.lastState = Language.StringByID(StringId.wuren);
                                break;
                            case "1":
                                function.lastState = Language.StringByID(StringId.SomeoneIn);
@@ -1411,7 +1411,8 @@
                if (//SPK.CurtainSpkList().Contains(function.spk))
                    function.spk == SPK.CurtainRoller || function.spk == SPK.CurtainShades ||
                    function.spk == SPK.CurtainDream ||
                    function.spk == SPK.CurtainSwitch || function.spk == SPK.CurtainTrietex)
                    function.spk == SPK.CurtainSwitch || function.spk == SPK.CurtainTrietex
                    )
                {
                    btnIcon.UnSelectedImagePath = "FunctionIcon/Curtain/CurtainIcon.png";
                    btnIcon.SelectedImagePath = "FunctionIcon/Curtain/CurtainOnIcon.png";
@@ -1426,6 +1427,7 @@
                        SelectedImagePath = "FunctionIcon/Curtain/CurtainCloseWhiteIcon_Shadow.png",
                    };
                    view.AddChidren(btnCurtainClose);
                    Button btnCurtainOpen;
                    btnCurtainOpen = new Button()
@@ -1476,7 +1478,7 @@
                    view.AddChidren(btnPower);
                    btnState.Text = function.GetAttrState("song_name");
                    btnState.Width = Application.GetRealWidth(90);
                    btnState.SelectedTextColor = CSS_Color.MainBackgroundColor;
                    btnState.TextColor = CSS_Color.MainBackgroundColor;//PromptingColor1
@@ -1568,11 +1570,67 @@
                    //为了去掉开关按钮
                    btnIcon.UnSelectedImagePath = "AksIcon/yingyinzhongkong1.png";
                }
                //else if (function.spk == SPK.GroupControl)
                //{
                //    btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/HomeIcon/lightswitch_blue.png";
                //    btnIcon.SelectedImagePath = $"FunctionIcon/Icon/HomeIcon/lightswitch_white.png";
                //}
                else if (function.spk == SPK.GroupControl)
                {
                    btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_blue.png";
                    btnIcon.SelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_white.png";
                    if (function.spk == SPK.GroupControl)
                    {
                        Button btnClose;
                        Button btnOpen;
                        btnOpen = new Button()
                        {
                            X = Application.GetRealWidth(84),
                            Y = Application.GetRealWidth(89),
                            Width = Application.GetRealWidth(40),
                            Height = Application.GetRealWidth(40),
                            UnSelectedImagePath = "FunctionIcon/Light/LightScene/gp_all_on_home.png",
                            SelectedImagePath = "FunctionIcon/Light/LightScene/gp_all_on_home_click.png",
                        };
                        view.AddChidren(btnOpen);
                        btnClose = new Button()
                        {
                            X = btnOpen.Right,
                            Y = Application.GetRealWidth(89),
                            Width = Application.GetRealWidth(40),
                            Height = Application.GetRealWidth(40),
                            UnSelectedImagePath = "FunctionIcon/Light/LightScene/gp_all_off_home.png",
                            SelectedImagePath = "FunctionIcon/Light/LightScene/gp_all_off_home_click.png",
                        };
                        view.AddChidren(btnClose);
                        btnClose.MouseDownEventHandler = (sender, e) => {
                            btnClose.IsSelected = true;
                        };
                        btnClose.MouseUpEventHandler = (sender, e) => {
                            btnClose.IsSelected = false;
                            if (function.spk == SPK.GroupControl)
                            {
                                var d = new Dictionary<string, string>();
                                d.Add("on_off", "off");
                                (function as GroupControl).Control(d);
                            }
                        };
                        btnOpen.MouseDownEventHandler = (sender, e) => {
                            btnOpen.IsSelected = true;
                        };
                        btnOpen.MouseUpEventHandler = (sender, e) => {
                            btnOpen.IsSelected = false;
                            if (function.spk == SPK.GroupControl)
                            {
                                var d = new Dictionary<string, string>();
                                d.Add("on_off", "on");
                                (function as GroupControl).Control(d);
                            }
                        };
                    }
                }
                else if (function.spk == SPK.ElectricEnergy || function.spk == SPK.AirSwitch || function.spk == SPK.AirSwitchP3)
                {
HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs
@@ -698,7 +698,6 @@
                d.Add(FunctionAttributeKey.OnOff, curtain.trait_on_off.curValue.ToString());
                Control.Ins.SendWriteCommand(curtain, d);
            };
            btnOpen.MouseUpEventHandler = (sender, e) =>
            {
                //if (!curtain.isOnline())//离线不允许操作
@@ -712,9 +711,10 @@
                //    return;
                //}
                btnOpen.IsSelected = true;
                Dictionary<string, string> d = new Dictionary<string, string>();
                curtain.trait_on_off.curValue = "on";
                curtain.SetAttrState(FunctionAttributeKey.Percent, 100);
                Dictionary<string, string> d = new Dictionary<string, string>();
                d.Add(FunctionAttributeKey.OnOff, curtain.trait_on_off.curValue.ToString());
                Control.Ins.SendWriteCommand(curtain, d);
            };
HDL_ON/UI/UI2/2-Classification/ClassificaitionPublicBLL.cs
@@ -193,7 +193,7 @@
                                                    switch (tempStatus.state)
                                                    {//0空,1走,2跑,3坐,4跌倒,5站
                                                        case "0":
                                                            btnStatus.TextID = StringId.SensorNormalState;
                                                            btnStatus.TextID = StringId.wuren;
                                                            btnStatus.TextColor = CSS_Color.MainColor;
                                                            break;
                                                        case "1":
@@ -248,6 +248,70 @@
                                            }
                                        }
                                    }
                                    else if (SPK.ArmSensorSpkList().Contains(updataFunction.spk))
                                    {
                                        if (cTag == updataFunction.sid + "_Sensor_Status")
                                        {
                                            Button btnStatus = (fcView.GetChildren(j) as Button);
                                            var alarm_status = updataFunction.attributes.Find((sta) => sta.key == FunctionAttributeKey.AlarmStatus);
                                            if (alarm_status != null)
                                            {
                                                if (alarm_status.curValue.ToString() == "normal")
                                                {
                                                    btnStatus.TextID = StringId.SensorNormalState;
                                                    btnStatus.TextColor = CSS_Color.MainColor;
                                                }
                                                else
                                                {
                                                    btnStatus.TextID = StringId.InAlarm;
                                                    btnStatus.TextColor = CSS_Color.WarningColor;
                                                }
                                            }
                                            else
                                            {
                                                alarm_status = updataFunction.attributes.Find((sta) => sta.key == "contact_status");
                                                if (alarm_status != null)
                                                {
                                                    if (alarm_status.curValue.ToString() == "close")
                                                    {
                                                        btnStatus.TextID = StringId.Shut;
                                                        btnStatus.TextColor = CSS_Color.MainColor;
                                                    }
                                                    else
                                                    {
                                                        if (updataFunction.spk == SPK.SensorDryContact || updataFunction.spk == SPK.SensorDryContact2)
                                                        {
                                                            btnStatus.TextID = StringId.DryBreak;
                                                        }
                                                        else
                                                        {
                                                            btnStatus.TextID = StringId.Open;
                                                        }
                                                        btnStatus.TextColor = CSS_Color.WarningColor;
                                                    }
                                                }
                                                else
                                                {
                                                    alarm_status = updataFunction.attributes.Find((sta) => sta.key == "people_status");
                                                    if (alarm_status != null)
                                                    {
                                                        if (alarm_status.curValue.ToString() == "false")
                                                        {
                                                            btnStatus.TextID = StringId.wuren;
                                                            btnStatus.TextColor = CSS_Color.MainColor;
                                                        }
                                                        else
                                                        {
                                                            btnStatus.TextID = StringId.youren;
                                                            btnStatus.TextColor = CSS_Color.WarningColor;
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                    //更新温控器状态
                                    else if(SPK.HvacCac == updataFunction.spk)
                                    {
HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs
@@ -101,7 +101,7 @@
                        Button btnTipPowerLow = new Button()
                        {
                            X = Application.GetRealWidth(307),
                            Y = Application.GetRealHeight(25),
                            Y = Application.GetRealHeight(45),
                            Width = Application.GetRealWidth(24),
                            Height = Application.GetRealWidth(24),
                            UnSelectedImagePath = "FunctionIcon/ArmSensor/PowerLowIcon.png",
@@ -137,7 +137,7 @@
                        switch (tempStatus.state)
                        {//0空,1走,2跑,3坐,4跌倒,5站
                            case "0":
                                btnStatus.TextID = StringId.SensorNormalState;
                                btnStatus.TextID = StringId.wuren;
                                btnStatus.TextColor = CSS_Color.MainColor;
                                break;
                            case "1":
@@ -187,6 +187,79 @@
                        }
                    }
                }
                else if (SPK.ArmSensorSpkList().Contains(function.spk))
                {
                    var btnStatus = new Button()
                    {
                        X = Application.GetRealWidth(51),
                        Y = Application.GetRealHeight(64),
                        Height = Application.GetRealHeight(18),
                        TextColor = CSS_Color.MainColor,
                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
                        Text = "",
                        TextAlignment = TextAlignment.CenterLeft,
                        Tag = function.sid + "_Sensor_Status"
                    };
                    bodyDiv.AddChidren(btnStatus);
                    var alarm_status = function.attributes.Find((sta) => sta.key == FunctionAttributeKey.AlarmStatus);
                    if(alarm_status!= null)
                    {
                        if (alarm_status.curValue.ToString() == "normal")
                        {
                            btnStatus.TextID = StringId.SensorNormalState;
                            btnStatus.TextColor = CSS_Color.MainColor;
                        }
                        else
                        {
                            btnStatus.TextID = StringId.InAlarm;
                            btnStatus.TextColor = CSS_Color.WarningColor;
                        }
                    }
                    else
                    {
                        alarm_status = function.attributes.Find((sta) => sta.key == "contact_status");
                        if (alarm_status != null)
                        {
                            if (alarm_status.curValue.ToString() == "close")
                            {
                                btnStatus.TextID = StringId.Shut;
                                btnStatus.TextColor = CSS_Color.MainColor;
                            }
                            else
                            {
                                if (function.spk == SPK.SensorDryContact || function.spk == SPK.SensorDryContact2)
                                {
                                    btnStatus.TextID = StringId.DryBreak;
                                }
                                else
                                {
                                    btnStatus.TextID = StringId.Open;
                                }
                                btnStatus.TextColor = CSS_Color.WarningColor;
                            }
                        }
                        else
                        {
                            alarm_status = function.attributes.Find((sta) => sta.key == "people_status");
                            if (alarm_status != null)
                            {
                                if (alarm_status.curValue.ToString() == "false")
                                {
                                    btnStatus.TextID = StringId.wuren;
                                    btnStatus.TextColor = CSS_Color.MainColor;
                                }
                                else
                                {
                                    btnStatus.TextID = StringId.youren;
                                    btnStatus.TextColor = CSS_Color.WarningColor;
                                }
                            }
                        }
                    }
                }
@@ -449,15 +522,15 @@
                UnSelectedImagePath = "Collection/CollectionGrayIcon.png",
                IsSelected = function.collect
            };
            if ( !SPK.ArmSensorSpkList().Contains(function.spk)
                && function.spk != SPK.DoorLock
            if ( !SPK.ArmSensorSpkList().Contains(function.spk)&&
                function.spk != SPK.DoorLock
                && function.spk != SPK.GroupControl
                && !SPK.EnvironDeviceSpkList().Contains( function.spk))//!DB_ResidenceData.Instance.CurrentRegion.isOtherShare &&
                && !SPK.EnvironDeviceSpkList().Contains( function.spk))
            {
                bodyDiv.AddChidren(btnCollectionIcon);
            }
            if(function.spk == SPK.SenesorMegahealth || function.spk == SPK.SensorMmvPose)
            if(function.spk == SPK.SensorPir || function.spk == SPK.SensorPirHold || function.spk == SPK.SenesorMegahealth || function.spk == SPK.SensorMmvPose)
            {
                bodyDiv.AddChidren(btnCollectionIcon);
            }
HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs
@@ -269,11 +269,11 @@
                case SPK.SensorHelp:
                    {
                        LogicView.FunTypeView view = new LogicView.FunTypeView();
                        view.btnText.TextID = StringId.qiujiuandzhengchang;
                        view.btnText.TextID = StringId.mubiaozhuangtai;
                        fLayout.AddChidren(view.FLayoutView());
                        view.btnClick.MouseUpEventHandler += (sender, e) =>
                        {
                            DeviceView(device, view.btnState, StringId.qiujiu, StringId.zhengchang );
                            DeviceView(device, view.btnState, StringId.qiujiu, StringId.zhengchang ,1);
                        };
                        if (edit)
                        {
@@ -998,11 +998,20 @@
                    case StringId.onLogic:
                        {
                            value = "on";
                            if (device.spk == SPK.SensorDryContact)
                            {
                                value = "open";
                            }
                        }
                        break;
                    case StringId.offLogic:
                        {
                            value = "off";
                            if (device.spk == SPK.SensorDryContact)
                            {
                                value = "close";
                            }
                        }
                        break;
                    case StringId.youren:
@@ -1116,7 +1125,7 @@
            if (device.spk == SPK.SensorLight)
            {
                //照明传感器
                max =int.MaxValue;
                max =1200;
            }
            new LogicView.TipPopView { }.InputBox(textInt, stateValue, (value) =>
HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs
@@ -218,9 +218,9 @@
                                case SPK.SensorDryContact2:
                                    {
                                        string value = this.GetKeyValue("on_off", dicList);
                                        string value = this.GetKeyValue(FunctionAttributeKey.ContactStatus, dicList);
                                        inputView.btnState.Text = Language.StringByID(StringId.offLogic);
                                        if (value == "on")
                                        if (value == "open")
                                        {
                                            inputView.btnState.Text = Language.StringByID(StringId.onLogic);
                                        }
@@ -2292,7 +2292,7 @@
                        foreach (var dic in dicList)
                        {
                            string value = dic["value"];
                            if (value == "on")
                            if (value == "on" || value == "open")
                            {
                                button1.Text = Language.StringByID(StringId.onLogic);
                            }
HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/TipPopView.cs
@@ -542,7 +542,7 @@
                    int intValue = int.Parse(editText.Text.Trim());
                    if (intValue <minValue || intValue > maxValue)
                    {
                        errorId_IsNullOrEmpty = Language.StringByID(StringId.setvalue).Replace("1",minValue.ToString()).Replace("000",maxValue.ToString());
                        errorId_IsNullOrEmpty = Language.StringByID(StringId.setvalue).Replace("1",minValue.ToString()).Replace("100",maxValue.ToString());
                    }
                }
                if (errorId_IsNullOrEmpty!="")
@@ -555,8 +555,8 @@
                    btnConfirm.Gravity = Gravity.BottomRight;
                    btnTip.X = Application.GetRealWidth(53);
                    btnTip.Y = editBjView.Bottom + Application.GetRealHeight(12);
                    btnTip.Width = Application.GetRealWidth(157);//200
                    btnTip.Y = editBjView.Bottom + Application.GetRealHeight(6);
                    btnTip.Width = Application.GetRealWidth(187);//200
                    btnTip.Height = Application.GetRealHeight(24);//17
                    btnTip.Text = errorId_IsNullOrEmpty;
                    btnTip.TextColor = CSS_Color.textRedColor;
HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/BrandListPage.cs
@@ -110,6 +110,12 @@
                if(brand.productPlatform == "HaiLin")//子晴需要隐藏这个入口,由调试软件上传数据 2023-03-09 17:20:33
                {
                    continue;
                }else if(brand.productPlatform == "TUYA") {
                    if(DB_ResidenceData.Instance.CurrentRegion.regionUrl != "https://test-gz.hdlcontrol.com" &&
                       DB_ResidenceData.Instance.CurrentRegion.regionUrl != "https://china-gateway.hdlcontrol.com")
                    {
                        continue;
                    }
                }
                var row = new RowLayout()
                {
HDL_ON/UI/UI2/4-PersonalCenter/PersonalDataPageBLL.cs
@@ -368,6 +368,7 @@
        {
            EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
            {
                Action<string> callBack = (str) =>
                {
                    if (string.IsNullOrEmpty(str))
HDL_ON/UI/UI2/FuntionControlView/ArmCenter/ArmCenterPage.cs
@@ -512,7 +512,11 @@
                        }
                        else
                        {
                            try
                            {
                            //撤防
                                if (bodyView.InDefenseMode != null)
                                {
                            if (bodyView.InDefenseMode.sid == updataTemp.sid)
                            {
                                bodyView.InDefenseMode.status = updataTemp.status;
@@ -520,6 +524,11 @@
                                {
                                    tempView.LightingView(false);
                                }
                                    }
                                }
                            }catch(Exception ex)
                            {
                                MainPage.Log($"撤防异常:{ex.Message}");
                            }
                        }
@@ -546,9 +555,12 @@
                            bodyView.btnArmTipIcon.IsSelected = true; 
                            bodyView.btnDefenseName.Text = bodyView.InDefenseMode.name; 
                        }
                        if (bodyView.InDefenseMode != null)
                        {
                        bodyView.InitAlarmStatus(bodyView.InDefenseMode.alarm);
                    }
                }
                }
                catch (Exception ex)
                {
                    MainPage.Log($"安防界面更新异常:{ex.Message}");
HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SenesorMegahealthPage.cs
@@ -244,7 +244,7 @@
                    else if (temp.state == "uninhabited")//无人
                    {
                        btnIcon.UnSelectedImagePath = "FunctionIcon/ArmSensor/UnderProtectionBgIcon.png";
                        btnSuctionView.TextID = StringId.SensorNormalState;
                        btnSuctionView.TextID = StringId.wuren;
                        btnSuctionView.IsSelected = false;
                    }
                    else//有人
@@ -271,7 +271,7 @@
                        else
                        {
                            btnIcon.IsSelected = false;
                            btnSuctionView.TextID = StringId.SensorNormalState;
                            btnSuctionView.TextID = StringId.wuren;
                            btnSuctionView.IsSelected = false;
                        }
                        //增加实验室模式反馈
@@ -285,7 +285,7 @@
                                    btnIcon.UnSelectedImagePath = "FunctionIcon/ArmSensor/UnderProtectionBgIcon.png";
                                    btnIcon.IsSelected = true;
                                    btnIcon.IsSelected = false;
                                    btnSuctionView.TextID = StringId.SensorNormalState;
                                    btnSuctionView.TextID = StringId.wuren;
                                    btnSuctionView.IsSelected = false;
                                    break;
                                case "1":
HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorPirPage.cs
@@ -129,7 +129,7 @@
                    else
                    {
                        btnIcon.IsSelected = false;
                        btnSuctionView.TextID = StringId.SensorNormalState;
                        btnSuctionView.TextID = StringId.wuren;
                        btnSuctionView.IsSelected = false;
                    }
                }
@@ -147,7 +147,7 @@
                    else
                    {
                        btnIcon.IsSelected = false;
                        btnSuctionView.TextID = StringId.SensorNormalState;
                        btnSuctionView.TextID = StringId.wuren;
                        btnSuctionView.IsSelected = false;
                    }
                }
HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalPage.cs
@@ -91,7 +91,7 @@
                TextAlignment = TextAlignment.CenterLeft,
                TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
                TextColor = CSS_Color.FirstLevelTitleColor,
                Text = MainPage.cityInfo.location,
                Text = MainPage.cityInfo.city,
            };
            topWeatherView.AddChidren(btnLocationText);
@@ -903,6 +903,7 @@
                            }
                        }
                        Console.WriteLine(updateTemp.spk);
                        for (int i = 0; i < bodyView.sensorListView.ChildrenCount; i++)
                        {
                            var sensorTag = updateTemp.spk + updateTemp.sid + updateTemp.deviceId;
@@ -943,6 +944,10 @@
                                                    case SPK.SensorHumidity:
                                                        attr = updateTemp.GetAttribute(FunctionAttributeKey.Humidity);
                                                        break;
                                                    case SPK.SensorLight:
                                                        attr = updateTemp.GetAttribute(FunctionAttributeKey.Illuminance);
                                                        break;
                                                }
                                            }
@@ -953,11 +958,14 @@
                                            }
                                            else if (tag == "SensorLevel")
                                            {
                                                if (updateTemp.spk != SPK.SensorLight)
                                                {
                                                (btn as Button).TextID = bodyView.sensorTemp.GetLevelTextList(updateTemp.spk)[bodyView.sensorTemp.GetCurLevel(updateTemp) - 1];
                                                (btn as Button).TextColor = bodyView.sensorTemp.GetLevelColorList(updateTemp.spk)[bodyView.sensorTemp.GetCurLevel(updateTemp) - 1];
                                            }
                                        }
                                    }
                                    }
                                    else if (btn.GetType() == typeof(ArcSeekBar))
                                    {
                                        (btn as ArcSeekBar).ProgressBarColor = bodyView.sensorTemp.GetLevelColorList(updateTemp.spk)[bodyView.sensorTemp.GetCurLevel(updateTemp) - 1];
HDL_ON/UI/UI2/FuntionControlView/Light/ColorfulInfoPage.cs
@@ -292,18 +292,18 @@
                        {
                            LoadEditDialog(() =>
                            {
                                if(hour == 0 && minute == 0 && second == 0)
                                if( second == 0)
                                {
                                    new PublicAssmebly().TipMsg(StringId.Tip, StringId.TimeInvalid);
                                    return;
                                }
                                //btnWorkHours.Text = hour + "时";
                                btnWorkHours.Text = minute + "分";
                                btnWorkHours.Text += second + "秒";
                                btnWorkHours.Text = second/60 + "分";
                                btnWorkHours.Text += second%60 + "秒";
                                new System.Threading.Thread(() => {
                                    var d = new Dictionary<string, string>();
                                    function.SetAttrState(FunctionAttributeKey.ColorfulTime, (hour * 360 + minute * 60 + second).ToString());
                                    d.Add(FunctionAttributeKey.ColorfulTime, (hour * 360 + minute * 60 + second).ToString());
                                    function.SetAttrState(FunctionAttributeKey.ColorfulTime, ( minute * 60 + second).ToString());
                                    d.Add(FunctionAttributeKey.ColorfulTime, ( minute * 60 + second).ToString());
                                    Control.Ins.SendWriteCommand(function, d);
                                }) { IsBackground = true }.Start();
                            });
@@ -402,7 +402,7 @@
            {
                item1.Add(i+Language.StringByID(StringId.h));
            }
            for (int i = 1; i <= 119; i += 1)
            for (int i = 1; i <= 120; i += 1)
            {
                item2.Add(i + Language.StringByID(StringId.m));
                item3.Add(i + Language.StringByID(StringId.s));
@@ -421,9 +421,7 @@
                dialog.Close();
            };
            uIPickerView.OnSelectChangeEvent = (int1, int2, int3) => {
                hour = int1;
                minute = int2;
                second = int3;
                second = int1+1;
            };
            btnConfrim.MouseUpEventHandler = (sender, e) => {
                dialog.Close();
HDL_ON/UI/UI2/FuntionControlView/Light/GroupControlPage_V2.cs
@@ -213,10 +213,22 @@
                Y = Application.GetRealHeight(466),
                Width = Application.GetMinRealAverage(32),
                Height = Application.GetMinRealAverage(32),
                //UnSelectedImagePath = "Public/PowerClose.png",
                UnSelectedImagePath = "Public/PowerOpen.png",
                UnSelectedImagePath = "FunctionIcon/Light/LightScene/gp_all_on.png",
            };
            controlView.AddChidren(btnOn);
            var btnOnText = new Button()
            {
                X = Application.GetRealWidth(100-9),
                Y = Application.GetRealHeight(500),
                Width = Application.GetMinRealAverage(50),
                Height = Application.GetMinRealAverage(32),
                TextColor = CSS_Color.TextualColor,
                TextSize = CSS_FontSize.TextFontSize,
                TextAlignment = TextAlignment.Center,
                TextID = StringId.Open,
            };
            controlView.AddChidren(btnOnText);
            var btnOff = new Button()
            {
@@ -224,10 +236,24 @@
                Y = Application.GetRealHeight(466),
                Width = Application.GetMinRealAverage(32),
                Height = Application.GetMinRealAverage(32),
                UnSelectedImagePath = "Public/PowerClose.png",
                //UnSelectedImagePath = "Public/PowerOpen.png",
                UnSelectedImagePath = "FunctionIcon/Light/LightScene/gp_all_off.png",
            };
            controlView.AddChidren(btnOff);
            var btnOffText = new Button()
            {
                X = Application.GetRealWidth(180 - 9),
                Y = Application.GetRealHeight(500),
                Width = Application.GetMinRealAverage(50),
                Height = Application.GetMinRealAverage(32),
                TextColor = CSS_Color.TextualColor,
                TextSize = CSS_FontSize.TextFontSize,
                TextAlignment = TextAlignment.Center,
                TextID = StringId.Close,
            };
            controlView.AddChidren(btnOffText);
            btnOn.MouseUpEventHandler = (sender, e) =>
            {
                var d = new Dictionary<string, string>();
@@ -241,6 +267,19 @@
                d.Add(FunctionAttributeKey.OnOff, "off");
                function.Control(d);
            };
            btnOnText.MouseUpEventHandler = (sender, e) =>
            {
                var d = new Dictionary<string, string>();
                d.Add(FunctionAttributeKey.OnOff, "on");
                function.Control(d);
            };
            btnOffText.MouseUpEventHandler = (sender, e) =>
            {
                var d = new Dictionary<string, string>();
                d.Add(FunctionAttributeKey.OnOff, "off");
                function.Control(d);
            };
            if (hadRGB)