mac
2023-10-20 e7290281eabcb88d2e430dea9782565474837ce1
Merge branch 'Dev-Branch' into wjc
27个文件已添加
36个文件已修改
842 ■■■■■ 已修改文件
DLL/Shared.IOS-1.dll 补丁 | 查看 | 原始文档 | blame | 历史
DLL/Shared.IOS.dll 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Language.ini 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/sensordryContact_blue.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/sensordryContact_white.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/sensorpir_hold_blue.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/sensorpir_hold_white.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensordryContact.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensorlight.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensorpir_hold.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 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Properties/AndroidManifest.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/AppDelegate.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/HDL-ON_iOS.csproj 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Info.plist 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Language.ini 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/sensordryContact_blue.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/sensordryContact_white.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/sensorpir_hold_blue.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/sensorpir_hold_white.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensordryContact.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensorlight.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensorpir_hold.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/Common/R.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/DriverLayer/Control.cs 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/Mqtt/MqttClient.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/Server/HttpServerRequest.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Entity/Function/Function.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Entity/Function/Sensor.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/MainPage.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI1-Login/LoginPage.cs 141 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI1-Login/RegisterPage.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/1-HomePage/HomePage.cs 128 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | 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/LogicMethod.cs 14 ●●●● 补丁 | 查看 | 原始文档 | 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/4-PersonalCenter/RoomListManage/ResidentialManagePage.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | 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/ColorTureLampPageBLL.cs 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Light/ColorfulInfoPage.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Light/DimmerPageBLL.cs 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Light/GroupControlPage_V2.cs 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Light/RGBWPageBLL.cs 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SiriIntents/Server/HttpUtil.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DLL/Shared.IOS-1.dll
Binary files differ
DLL/Shared.IOS.dll
Binary files differ
HDL-ON_Android/Assets/Language.ini
@@ -682,7 +682,7 @@
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.
698=Break
@@ -2078,6 +2078,7 @@
695=过去一个月的每日数据
696=过去一年的每月数据
697=提示:起始颜色选择越靠近色环边缘,炫彩效果越明显。越靠近白色中心,炫彩效果越不明显。
698=断开
@@ -2628,9 +2629,6 @@
7174=照明度高于
7175=照明度低于
7176=光照
@@ -3473,6 +3471,7 @@
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.
698=Break
@@ -4861,6 +4860,7 @@
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.
698=Break
@@ -6234,6 +6234,7 @@
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.
698=Break
@@ -6943,8 +6944,6 @@
10032=Потребителят няма разрешение.
10033=Устройството не съществува.
[Ukraine]
1=Вхід в систему
2=Номер телефону
@@ -7535,7 +7534,7 @@
601=Виберіть два або більше пристроїв
602=Мій дім
603=Будь ласка, прочитайте уважно
604=Протокол збору інформації про обличчя Pro Face
604="Протокол збору інформації про обличчя Pro Face
605= Якщо ви згодні з цією угодою, будь ласка, натисніть кнопку [Згоден].
606=Прив'язка облікового запису успішна, ви можете продовжити операцію зв'язування пристроїв
607=Попередня сторінка
HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/sensordryContact_blue.png
HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/sensordryContact_white.png
HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/sensorpir_hold_blue.png
HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/HomeIcon/sensorpir_hold_white.png
HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensordryContact.png
HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensorlight.png
HDL-ON_Android/Assets/Phone/FunctionIcon/Icon/sensorpir_hold.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
@@ -606,6 +606,19 @@
    <AndroidAsset Include="Assets\Phone\FunctionIcon\GroupControl\gp_all_on_home_click.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\GroupControl\gp_all_on_home.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\GroupControl\gp_all_on.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\sensordryContact.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\sensorpir_hold.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Icon\HomeIcon\sensordryContact_blue.png" />
    <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,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="2.1.3" package="com.hdl.onpro" xmlns:tools="http://schemas.android.com/tools" android:versionCode="202309111">
    <uses-sdk android:minSdkVersion="26" android:targetSdkVersion="29" />
<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" />
    <!--友盟-->
    <!--<uses-sdk android:minSdkVersion="8"></uses-sdk>-->
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
@@ -1762,6 +1762,24 @@
      <BundleResource Include="Resources\Phone\FunctionIcon\GroupControl\gp_all_on_home_click.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\GroupControl\gp_all_on_home.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\GroupControl\gp_all_on.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\sensordryContact_blue.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\sensordryContact_white.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\Icon\HomeIcon\sensorpir_hold_blue.png" />
      <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.1.3</string>
    <string>2.3.0</string>
    <key>CFBundleURLTypes</key>
    <array>
        <dict>
@@ -36,7 +36,7 @@
        </dict>
    </array>
    <key>CFBundleVersion</key>
    <string>2.1.3</string>
    <string>2.3.0</string>
    <key>LSApplicationQueriesSchemes</key>
    <array>
        <string>weixinULAPI</string>
HDL-ON_iOS/Resources/Language.ini
@@ -682,7 +682,7 @@
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.
698=Break
@@ -2078,6 +2078,7 @@
695=过去一个月的每日数据
696=过去一年的每月数据
697=提示:起始颜色选择越靠近色环边缘,炫彩效果越明显。越靠近白色中心,炫彩效果越不明显。
698=断开
@@ -3470,6 +3471,7 @@
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.
698=Break
@@ -4858,6 +4860,7 @@
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.
698=Break
@@ -6231,6 +6234,7 @@
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.
698=Break
HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/sensordryContact_blue.png
HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/sensordryContact_white.png
HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/sensorpir_hold_blue.png
HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/HomeIcon/sensorpir_hold_white.png
HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensordryContact.png
HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensorlight.png
HDL-ON_iOS/Resources/Phone/FunctionIcon/Icon/sensorpir_hold.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/Common/R.cs
@@ -5,6 +5,10 @@
    public static class StringId
    {
        /// <summary>
        /// 断开(干接点)
        /// </summary>
        public const int DryBreak = 698;
        /// <summary>
        /// 提示:起始颜色选择越靠近色环边缘,炫彩效果越明显。越靠近白色中心,炫彩效果越不明显。
        /// </summary>
        public const int ColorfulSetTip = 697;
HDL_ON/DAL/DriverLayer/Control.cs
@@ -1137,6 +1137,7 @@
                    receiveObj.Topic.Contains(CommunicationTopic.ct.GatewayUpSortTopic))
                {
                    //TODO 暂时不传正确的数据上去,如果后面要优化前面这些代码
                    //Console.WriteLine($"{receiveObj.Topic}\r\n{receiveObj.BodyDataString}");
                    UpdataFunctionStatus(receiveObj.BodyDataString, null);
                }
                else if (receiveObj.Topic == CommunicationTopic.ct.ControlSeurity + "_reply"
@@ -1246,7 +1247,7 @@
                        {
                            continue;
                        }
                        MainPage.Log($"收到数据:{revString}");
                        MainPage.Log($"收到群控数据:{revString}");
                        foreach (var attr in updateTemp.status)
                        {
                            localFunction.time_stamp = temp.time_stamp;
@@ -1496,6 +1497,7 @@
                            case SPK.SensorTemperature:
                            case SPK.SensorHumidity:
                            case SPK.SensorHcho:
                            case SPK.SensorLight:
                                if (localFunction.spk == SPK.SensorTemperature)
                                {
                                    HomePage.LoadEvent_RefreshEnvirIndoorTemp();
@@ -1536,7 +1538,6 @@
                            case SPK.ElectricTuyaWeepRobot2:
                            case SPK.ElectricTuyaWaterValve:
                            case SPK.ElectricTuyaWaterValve2:
                            case SPK.SensorPir:
                            case SPK.SensorDoorWindow:
                            case SPK.SensorSmoke:
                            case SPK.SensorWater:
@@ -1551,6 +1552,22 @@
                                //状态更新
                                Stan.HdlDeviceStatuPushLogic.Current.UpdateDeviceStatu(updateTemp.sid, updateTemp.status);
                                break;
                            case SPK.SensorPir:
                            case SPK.SensorPirHold:
                                var tempPirStatus = localFunction.attributes.Find((sta) => sta.key == "people_status");
                                if (tempPirStatus != null)
                                {
                                    if(tempPirStatus.state == "true")
                                    {
                                        localFunction.lastState = Language.StringByID(StringId.Someone);
                                    }
                                    else
                                    {
                                        localFunction.lastState = Language.StringByID(StringId.wuren);
                                    }
                                }
                                Stan.HdlDeviceStatuPushLogic.Current.UpdateDeviceStatu(updateTemp.sid, updateTemp.status);
                                break;
                            case SPK.SenesorMegahealth:
                            case SPK.SenesorMegahealth2:
                            case SPK.SensorMmvPose:
@@ -1562,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/DAL/Mqtt/MqttClient.cs
@@ -111,7 +111,7 @@
            {
                MqttInfoConfig.Current.IfGetMqttInfoSuccess = false;
            }
            Control.Ins.GatewayOnline_Cloud = Control.Ins.GatewayOnline_Local = false;
            //Control.Ins.GatewayOnline_Cloud = Control.Ins.GatewayOnline_Local = false;
            await DisConnectRemoteMqttClient(s);
        }
HDL_ON/DAL/Server/HttpServerRequest.cs
@@ -698,7 +698,7 @@
                        {
                            if (mHomeGatewayRes.Count > 0)
                            {
                                DB_ResidenceData.Instance.HomeGateway = mHomeGatewayRes[0];
                                DB_ResidenceData.Instance.HomeGateway = mHomeGatewayRes[0];//网关状态
                                DriverLayer.Control.Ins.GatewayOnline_Cloud = mHomeGatewayRes[0].gatewayStatus;
                                DB_ResidenceData.Instance.SaveResidenceData();
                                return revertObj.Code;
HDL_ON/Entity/Function/Function.cs
@@ -173,6 +173,13 @@
                string iconPath = spk.Replace(".", "");
                switch (spk)
                {
                    case SPK.SensorDryContact2:
                    case SPK.OtherCommon:
                        iconPath = "sensordryContact";
                        break;
                    //case SPK.SensorLight:
                    //    iconPath = "lightswitch";
                    //    break;
                    case SPK.AirSwitchP3:
                        iconPath = "electricalbreaker";
                        break;
@@ -1487,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.1.4";
        public static string VersionString = "2.3.0";
        ///// <summary>
        ///// 客户端类型
        ///// </summary>
@@ -124,7 +124,9 @@
            SPK.GroupControl,
            SPK.AvMusic,
            SPK.MusicStandard,
            SPK.ElectricalTvHisense
            SPK.ElectricalTvHisense,
            SPK.OtherCommon,
        };
@@ -635,7 +637,7 @@
                || msg.Contains("接收到推送")
                   || msg.Contains("api")
                || msg.Contains("读取功能状态")
                //|| true
                || true
                )
                Console.WriteLine(msg);
#endif
HDL_ON/UI/UI1-Login/LoginPage.cs
@@ -327,8 +327,10 @@
                    etAccount.Text = "18316672920";
                    etAccount.Text = "18244942707";
                    etAccount.Text = "1272061968@qq.com";//万科城市之光E区8栋206
                    etAccount.Text = "18933160333";
                    etAccount.Text = "18402017839";//wjc
                    etAccount.Text = "13533335801";
                    etAccount.Text = "13682244600";
                    etAccount.Text = "marketing@australindo.co.id";
                    etAccount.Text = "dcai.assist@gmail.com";
                }
                else
@@ -364,9 +366,9 @@
                {
                    etPassword.Text = "hdl123";
                }
                else if(etAccount.Text == "13143792049")
                else if(etAccount.Text == "18600200915")
                {
                    etPassword.Text = "BVVBQATD";
                    etPassword.Text = "ZJtiaoshi";
                }else if(etAccount.Text == "13288623489")
                {
                    etPassword.Text = "luoxiaodong";
@@ -380,9 +382,9 @@
                else if (etAccount.Text == "18100573477")
                {
                    etPassword.Text = "huang12345";
                }else if(etAccount.Text == "1272061968@qq.com")
                }else if(etAccount.Text == "dcai.assist@gmail.com")
                {
                    etPassword.Text = "a123456";
                    etPassword.Text = "GraniteTileS57";
                }
                //etPassword.Text = "Hdl85521566";
                btnLogin.IsSelected = true;
@@ -476,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")
@@ -973,7 +978,7 @@
                        new FunctionAttributes() { key = FunctionAttributeKey.ElectricityC,value =new List<string>(){ "" }, curValue="26",state = "26" ,max = 1000,min = 0  },
                        new FunctionAttributes() { key = FunctionAttributeKey.TotalElectricity,value =new List<string>(){ "" }, curValue="26",state = "26" ,max = 1000,min = 0  },
                    },
                    collect=true,
                    //collect = true,
                };
                airSwitchP3.SaveFunctionFile();
@@ -1077,7 +1082,7 @@
                {
                    name = "测试-空调科技系统总控",
                    spk = SPK.AcstParent,
                    collect = true,
                    //collect = true,
                    attributes = new List<FunctionAttributes>()
                {
                    new FunctionAttributes(){ key = FunctionAttributeKey.OnOff ,curValue = "on",state = "on" },
@@ -1202,7 +1207,7 @@
                        new FunctionAttributes(){ key = "enable",curValue = "true",state = "true" },
                        new FunctionAttributes(){ key = "people_num",curValue = "0",state = "0" },
                        new FunctionAttributes(){ key = "people_id",curValue = "1",state = "1" },
                        new FunctionAttributes(){ key = "target_status",curValue = "0",state = "0" },//0空,1走,2跑,3坐,4跌倒,5站
                        new FunctionAttributes(){ key = "target_status",curValue = "1",state = "1" },//0空,1走,2跑,3坐,4跌倒,5站
                        new FunctionAttributes(){ key = "people_status",curValue = "false",state = "false" },//状态  有人无人
                        //new FunctionAttributes(){ key = "",curValue = "",state = "" },
                        //new FunctionAttributes(){ key = "",curValue = "",state = "" },
@@ -1279,15 +1284,69 @@
                //    }
                //});
                //FunctionList.List.Functions.Add(new Function()
                //{
                //    spk = SPK.SensorDryContact,
                //    name = "干接点",
                //    attributes = new List<FunctionAttributes>()
                //    {
                //        new FunctionAttributes(){ key = "status",curValue= "on",state = "on" },
                //    },
                //});
                FunctionList.List.Functions.Add(new Function()
                {
                    spk = SPK.SensorDryContact,
                    name = "干接点",
                    //collect = true,
                    sid = "sss000001",
                    attributes = new List<FunctionAttributes>()
                    {
                        new FunctionAttributes(){ key = "contact_status",curValue= "open",state = "open" },
                    },
                });
                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()
                {
                    spk = SPK.OtherCommon,
                    name = "通用开关",
                    //collect = true,
                    sid = "sssCommon000001",
                    attributes = new List<FunctionAttributes>()
                    {
                        new FunctionAttributes(){ key = "on_off",curValue= "on",state = "off" },
                    },
                });
                FunctionList.List.Functions.Add(new Function()
                {
                    spk = SPK.SensorPir,
                    name = "人体存在传感器1",
                    collect = true,
                    sid = "sss000001111",
                    attributes = new List<FunctionAttributes>()
                    {
                        new FunctionAttributes(){ key = "people_status",curValue= "false",state = "false" },
                    },
                });
                FunctionList.List.Functions.Add(new Function()
                {
                    spk = SPK.SensorPirHold,
                    name = "人体存在传感器2",
                    collect = true,
                    sid = "sss0000011112",
                    attributes = new List<FunctionAttributes>()
                    {
                        new FunctionAttributes(){ key = "people_status",curValue= "true",state = "true" },
                    },
                });
                //FunctionList.List.Functions.Add(new Function()
                //{
@@ -1312,19 +1371,19 @@
                //    },
                //});
                //FunctionList.List.Functions.Add(new Function()
                //{
                //    spk = SPK.SensorHelp,
                //    name = "测试紧急求助按钮",
                //    attributes = new List<FunctionAttributes>()
                //    {
                //        new FunctionAttributes(){ key = "status",curValue= "on",state = "on" },
                //        new FunctionAttributes(){ key = "alarm_status",curValue= "alarm",state = "alarm" },
                //        new FunctionAttributes(){ key = "battery_value",curValue= "200",state = "200" },
                //        new FunctionAttributes(){ key = "battery_percentage",curValue= "10",state = "10" },
                //        new FunctionAttributes(){ key = "battery_state",curValue= "low",state = "low" },
                //    },
                //});
                FunctionList.List.Functions.Add(new Function()
                {
                    spk = SPK.SensorHelp,
                    name = "测试紧急求助按钮",
                    attributes = new List<FunctionAttributes>()
                    {
                        new FunctionAttributes(){ key = "status",curValue= "on",state = "on" },
                        new FunctionAttributes(){ key = "alarm_status",curValue= "alarm",state = "alarm" },
                        new FunctionAttributes(){ key = "battery_value",curValue= "200",state = "200" },
                        new FunctionAttributes(){ key = "battery_percentage",curValue= "10",state = "10" },
                        new FunctionAttributes(){ key = "battery_state",curValue= "low",state = "low" },
                    },
                });
                //FunctionList.List.Functions.Add(new Function()
                //{
@@ -1366,16 +1425,16 @@
                //    },
                //});
                //FunctionList.List.Functions.Add(new Function()
                //{
                //    spk = SPK.SensorGas,
                //    name = "燃气传感器",
                //    attributes = new List<FunctionAttributes>()
                //    {
                //        new FunctionAttributes(){ key = "enable",curValue= "true",state = "true" ,value = new List<string>(){ "true", "false" } },
                //        new FunctionAttributes(){ key = "status",curValue= "normal",state = "normal" ,value = new List<string>(){ "alarm", "normal" } },
                //    },
                //});
                FunctionList.List.Functions.Add(new Function()
                {
                    spk = SPK.SensorGas,
                    name = "燃气传感器",
                    attributes = new List<FunctionAttributes>()
                    {
                        new FunctionAttributes(){ key = "enable",curValue= "true",state = "true" ,value = new List<string>(){ "true", "false" } },
                        new FunctionAttributes(){ key = "status",curValue= "normal",state = "normal" ,value = new List<string>(){ "alarm", "normal" } },
                    },
                });
                //FunctionList.List.Functions.Add(new Function() { spk = SPK.PjtIr, name = "测试投影仪",
                //                            attributes = new List<FunctionAttributes>() {
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
@@ -1279,7 +1279,8 @@
                };
                if (function.spk == SPK.SenesorMegahealth || function.spk == SPK.SensorMmvPose)
                if (function.spk == SPK.SenesorMegahealth || function.spk == SPK.SensorMmvPose ||
                    function.spk == SPK.SensorPir || function.spk == SPK.SensorPirHold)
                {
                    btnIcon.UnSelectedImagePath = "FunctionIcon/Icon/HomeIcon/sensormegahealth.png";
                    btnIcon.SelectedImagePath = "FunctionIcon/Icon/HomeIcon/sensormegahealth.png";
@@ -1293,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);
@@ -1334,6 +1335,47 @@
                        }
                        btnState.Text = function.lastState;
                    }
                    else
                    {
                        tempStatus = function.attributes.Find((sta) => sta.key == "people_status");
                        if (tempStatus != null)
                        {
                            switch (tempStatus.state)
                            {
                                case "true":
                                    function.lastState = Language.StringByID(StringId.Someone);
                                    break;
                                case "false":
                                    function.lastState = Language.StringByID(StringId.wuren);
                                    break;
                            }
                            btnState.Text = function.lastState;
                        }
                    }
                }
                else if(function.spk == SPK.SensorDryContact || function.spk == SPK.SensorDryContact2)
                {
                    btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_white.png";
                    btnIcon.SelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_white.png";
                    btnName.TextColor = CSS_Color.MainBackgroundColor;
                    btnZone.TextColor = CSS_Color.MainBackgroundColor;
                    btnState.TextColor = CSS_Color.MainBackgroundColor;
                    var tempStatus = function.attributes.Find((sta) => sta.key == FunctionAttributeKey.ContactStatus);
                    if (tempStatus != null)
                    {
                        switch (tempStatus.state)
                        {
                            case "open":
                                function.lastState = Language.StringByID(StringId.DryBreak);
                                break;
                            case "close":
                                function.lastState = Language.StringByID(StringId.Shut);
                                break;
                        }
                        btnState.Text = function.lastState;
                    }
                }
                
                else
@@ -1369,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";
@@ -1384,6 +1427,7 @@
                        SelectedImagePath = "FunctionIcon/Curtain/CurtainCloseWhiteIcon_Shadow.png",
                    };
                    view.AddChidren(btnCurtainClose);
                    Button btnCurtainOpen;
                    btnCurtainOpen = new Button()
@@ -1434,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
@@ -1494,13 +1538,13 @@
                }
                else if (function.spk == SPK.SenesorMegahealth || function.spk == SPK.SensorMmvPose)
                //else if (function.spk == SPK.SenesorMegahealth || function.spk == SPK.SensorMmvPose)
                else if (SPK.ArmSensorSpkList().Contains(function.spk))
                {
                    //btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}.png";
                    //btnIcon.SelectedImagePath = "FunctionIcon/Icon/HomeIcon/sensormegahealth.png";
                    //btnIcon.IsSelected = true;
                    btnName.TextColor = CSS_Color.MainBackgroundColor;
                    btnZone.TextColor = CSS_Color.MainBackgroundColor;
                    btnState.SelectedTextColor = CSS_Color.MainBackgroundColor;
                    btnState.TextColor = CSS_Color.MainColor;//PromptingColor1
                    btnState.TextColor = CSS_Color.MainBackgroundColor;
                }
                //紧急求助
@@ -1526,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
@@ -438,6 +438,22 @@
                                        state = tempStatus.curValue.ToString() == "alarm";
                                    }
                                }
                                else if (function.spk == SPK.SensorPir || function.spk == SPK.SensorPirHold)
                                {
                                    var tempStatus = function.attributes.Find((sta) => sta.key == "people_status");
                                    if (tempStatus != null)
                                    {
                                        state = tempStatus.curValue.ToString() == "true";
                                    }
                                }
                                else if (function.spk == SPK.SensorDryContact || function.spk == SPK.SensorDryContact2)
                                {
                                    var tempStatus = function.attributes.Find((sta) => sta.key == "contact_status");
                                    if (tempStatus != null)
                                    {
                                        state = tempStatus.curValue.ToString() == "open";
                                    }
                                }
                                else
                                {
                                    state = function.trait_on_off.curValue.ToString() == "on";
@@ -682,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())//离线不允许操作
@@ -696,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/LogicMethod.cs
@@ -370,13 +370,13 @@
            {
                return "FunctionIcon/DoorLock/DoorLock.png";
            }
            else if (SPK.SensorDryContact == device.spk
                || SPK.SensorDryContact2 == device.spk
                || SPK.OtherCommon == device.spk
                )
            {
                return "LogicIcon/ganjiedian.png";
            }
            //else if (SPK.SensorDryContact == device.spk
            //    || SPK.SensorDryContact2 == device.spk
            //    || SPK.OtherCommon == device.spk
            //    )
            //{
            //    return "LogicIcon/ganjiedian.png";
            //}
            else if (SPK.SensorLight == device.spk)
            {
                return "LogicIcon/lightloguc.png";
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/4-PersonalCenter/RoomListManage/ResidentialManagePage.cs
@@ -652,8 +652,6 @@
                #endregion
            }
            LoadEventList();
        }
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/ColorTureLampPageBLL.cs
@@ -7,12 +7,7 @@
{
    public partial class ColorTureLampPage
    {
        /// <summary>
        /// 通知更新界面的时间
        /// </summary>
        DateTime notiyUpdateTime = DateTime.MinValue;
        System.Threading.Thread updateUiThread;
        object lockObj = new object();
        /// <summary>
        /// 更新功能状态
        /// </summary>
@@ -21,31 +16,6 @@
            if(bodyView == null)
            {
                return;
            }
            lock (bodyView.lockObj)
            {
                MainPage.Log($"收到更新" + DateTime.Now.Ticks);
                bodyView.notiyUpdateTime = DateTime.Now;
                if (bodyView.updateUiThread == null)
                {
                    bodyView.updateUiThread = new System.Threading.Thread(() =>
                    {
                        while (true)
                        {
                            System.Threading.Thread.Sleep(1500);
                            if (bodyView == null)
                            {
                                return;
                            }
                            if (DateTime.Now.AddMilliseconds(-1500) > bodyView.notiyUpdateTime)
                            {
                                MainPage.Log("没有新数据,更新UI");
                                break;
                            }
                            else
                            {
                                MainPage.Log("有新数据,继续等待");
                            }
                        }
                        Application.RunOnMainThread(() =>
@@ -89,16 +59,9 @@
                            }
                            finally
                            {
                                bodyView.updateUiThread = null;
                            }
                        });
                        bodyView.updateUiThread.IsBackground = true;
                        bodyView.updateUiThread.Start();
                    });
                }
            }
        }
        void LoadEventList()
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/DimmerPageBLL.cs
@@ -7,12 +7,6 @@
{
    public partial class DimmerPage
    {
        /// <summary>
        /// 通知更新界面的时间
        /// </summary>
        DateTime notiyUpdateTime = DateTime.MinValue;
        System.Threading.Thread updateUiThread;
        object lockObj = new object();
        
        /// <summary>
        /// 更新功能状态
@@ -22,31 +16,6 @@
            if (bodyView == null)
            {
                return;
            }
            lock (bodyView.lockObj)
            {
                MainPage.Log($"收到更新" + DateTime.Now.Ticks);
                bodyView.notiyUpdateTime = DateTime.Now;
                if (bodyView.updateUiThread == null)
                {
                    bodyView.updateUiThread = new System.Threading.Thread(() =>
                    {
                        while (true)
                        {
                            System.Threading.Thread.Sleep(1500);
                            if (bodyView == null)
                            {
                                return;
                            }
                            if (DateTime.Now.AddMilliseconds(-1500) > bodyView.notiyUpdateTime)
                            {
                                MainPage.Log("没有新数据,更新UI");
                                break;
                            }
                            else
                            {
                                MainPage.Log("有新数据,继续等待");
                            }
                        }
                        Application.RunOnMainThread(() =>{
@@ -79,16 +48,9 @@
                            }
                            finally
                            {
                                bodyView.updateUiThread = null;
                            }
                        });
                        bodyView.updateUiThread.IsBackground = true;
                        bodyView.updateUiThread.Start();
                    });
                }
            }
        }
        void LoadEventList()
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)
HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs
@@ -6,12 +6,6 @@
{
    public partial class RGBPage
    {
        /// <summary>
        /// 通知更新界面的时间
        /// </summary>
        DateTime notiyUpdateTime = DateTime.MinValue;
        System.Threading.Thread updateUiThread;
        object lockObj = new object();
        public override void RemoveFromParent()
        {
@@ -26,31 +20,6 @@
            if(bodyView == null)
            {
                return;
            }
            lock (bodyView.lockObj)
            {
                MainPage.Log($"收到更新"+ DateTime.Now.Ticks);
                bodyView.notiyUpdateTime = DateTime.Now;
                if (bodyView.updateUiThread == null)
                {
                    bodyView.updateUiThread = new System.Threading.Thread(() =>
                    {
                        while (true)
                        {
                            System.Threading.Thread.Sleep(1500);
                            if(bodyView == null)
                            {
                                return;
                            }
                            if (DateTime.Now.AddMilliseconds(-1500) > bodyView.notiyUpdateTime)
                            {
                                MainPage.Log("没有新数据,更新UI");
                                break;
                            }
                            else
                            {
                                MainPage.Log("有新数据,继续等待");
                            }
                        }
                        Application.RunOnMainThread((() =>
@@ -123,15 +92,9 @@
                            }
                            finally
                            {
                                bodyView.updateUiThread = null;
                            }
                        }));
                    });
                    bodyView.updateUiThread.IsBackground = true;
                    bodyView.updateUiThread.Start();
                }
            }
        }
HDL_ON/UI/UI2/FuntionControlView/Light/RGBWPageBLL.cs
@@ -7,12 +7,6 @@
    public partial class RGBWPage
    {
        /// <summary>
        /// 通知更新界面的时间
        /// </summary>
        DateTime notiyUpdateTime = DateTime.MinValue;
        System.Threading.Thread updateUiThread;
        object lockObj = new object();
        /// <summary>
        /// 更新功能状态
        /// </summary>
        public static void UpdataStates(Function updateTemp)
@@ -20,31 +14,6 @@
            if (bodyView == null)
            {
                return;
            }
            lock (bodyView.lockObj)
            {
                MainPage.Log($"收到更新" + DateTime.Now.Ticks);
                bodyView.notiyUpdateTime = DateTime.Now;
                if (bodyView.updateUiThread == null)
                {
                    bodyView.updateUiThread = new System.Threading.Thread(() =>
                    {
                        while (true)
                        {
                            System.Threading.Thread.Sleep(1500);
                            if (bodyView == null)
                            {
                                return;
                            }
                            if (DateTime.Now.AddMilliseconds(-1500) > bodyView.notiyUpdateTime)
                            {
                                MainPage.Log("没有新数据,更新UI");
                                break;
                            }
                            else
                            {
                                MainPage.Log("有新数据,继续等待");
                            }
                        }
                        Application.RunOnMainThread(() =>
                        {
@@ -101,16 +70,9 @@
                            }
                            finally
                            {
                                bodyView.updateUiThread = null;
                            }
                        });
                        bodyView.updateUiThread.IsBackground = true;
                        bodyView.updateUiThread.Start();
                    });
                }
            }
        }
SiriIntents/Server/HttpUtil.cs
@@ -16,8 +16,8 @@
        /// 固定域名,正式环境
        /// 公共域名就近解析
        /// </summary>
        //public const string GlobalRequestHttpsHost = "https://nearest.hdlcontrol.com";
        public const string GlobalRequestHttpsHost = "https://test-gz.hdlcontrol.com";
        public const string GlobalRequestHttpsHost = "https://nearest.hdlcontrol.com";
        //public const string GlobalRequestHttpsHost = "https://test-gz.hdlcontrol.com";
        const string APP_KEY = "HDL-HOME-APP-TEST";
        const string SECRET_KEY = "WeJ8TY88vbakCcnvH8G1tDUqzLWY8yss";
        //public const string GlobalRequestHttpsHost = "http://59.41.255.150:7777";//mmmm