wxr
2024-09-26 f748908e5414736eb243ae7ec66a80dc9f5d9d49
水浸传感器,红外传感器,面板空调

增加电池状态显示;增加面板空调支持,新增SPK
2个文件已添加
28个文件已修改
270 ■■■■■ 已修改文件
HDL-ON_Android/Assets/Phone/FunctionIcon/ArmSensor/Power80pIcon.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/HDL-ON_Android.csproj 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Properties/AndroidManifest.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/HDL-ON_iOS.csproj 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/ArmSensor/Power80pIcon.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Common/ApiUtlis.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Common/HDLCommon.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/DriverLayer/Control.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/DriverLayer/Control_Udp.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/Mqtt/MqttClient.cs 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Entity/Function/Function.cs 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Entity/Function/Scene.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/MainPage.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI0-Stan/Controls/CompoundControls/BatteryPersentControl.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI1-Login/LoginPage.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/1-HomePage/HomePage.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/TargetDeviceFunList.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/AddDevciePage.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/BrandListPage.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/DeviceListPage.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/Iot_BrandListPage.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorPirPage.cs 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorWaterImmersionPage.cs 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/ArmSensor/Power80pIcon.png
HDL-ON_Android/HDL-ON_Android.csproj
@@ -671,6 +671,7 @@
    <AndroidAsset Include="Assets\Phone\FunctionIcon\Acst\Inverter\BatteryIconShutdown100.png" />
    <AndroidAsset Include="Assets\Phone\Collection\TokenInvalidTipIcon.png" />
    <AndroidAsset Include="Assets\Phone\Public\RightIcon2.png" />
    <AndroidAsset Include="Assets\Phone\FunctionIcon\ArmSensor\Power80pIcon.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.7.0" package="com.hdl.onpro" xmlns:tools="http://schemas.android.com/tools" android:versionCode="202409201">
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="2.7.0" package="com.hdl.onpro" xmlns:tools="http://schemas.android.com/tools" android:versionCode="202409231">
    <uses-sdk android:minSdkVersion="26" android:targetSdkVersion="29" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <!--程序可以读取设备外部存储空间(内置SDcard和外置SDCard)的文件,我的文件等-->
HDL-ON_iOS/HDL-ON_iOS.csproj
@@ -1849,6 +1849,7 @@
      <BundleResource Include="Resources\Phone\FunctionIcon\Acst\Inverter\BatteryIconShutdown100.png" />
      <BundleResource Include="Resources\Phone\Collection\TokenInvalidTipIcon.png" />
      <BundleResource Include="Resources\Phone\Public\RightIcon2.png" />
      <BundleResource Include="Resources\Phone\FunctionIcon\ArmSensor\Power80pIcon.png" />
    </ItemGroup>
    <ItemGroup>
      <ITunesArtwork Include="iTunesArtwork" />
HDL-ON_iOS/Resources/Phone/FunctionIcon/ArmSensor/Power80pIcon.png
HDL_ON/Common/ApiUtlis.cs
@@ -326,7 +326,7 @@
                            {
                                FunctionList.List.ClearDatas();
                                MainPage.Log($"读取设备信息成功");
                                MainPage.Log($"sid列表获取====\r\n", deviceResult.Data.ToString());
                                //MainPage.Log($"sid列表获取====\r\n", deviceResult.Data.ToString());
                                var deviceList = JsonConvert.DeserializeObject<DevcieApiPack>(deviceResult.Data.ToString());
                                if (deviceList == null)
                                {
HDL_ON/Common/HDLCommon.cs
@@ -533,14 +533,7 @@
            //Application.Activity.StartActivity()
#endif
            //测试账号,不挤下线
            switch (UserInfo.Current.AccountString)
            {
                case "464027401@qq.com":
                case "15626203746":
                    
                    return;
            }
            //未登录不用处理
            //if (!UserInfo.Current.IsLogin) return;
HDL_ON/DAL/DriverLayer/Control.cs
@@ -1431,7 +1431,7 @@
                                VenetianBlindsPage.UpdataState(localFunction);
                                break;
                            case SPK.AcStandard:
                            case SPK.HvacAC:
                            case SPK.HvacAC:case SPK.HvacAcPanel:
                            case SPK.AcIr:
                                Stan.HdlDeviceStatuPushLogic.Current.UpdateDeviceStatu(updateTemp.sid, updateTemp.status);
                                if (localFunction != null)
HDL_ON/DAL/DriverLayer/Control_Udp.cs
@@ -197,7 +197,7 @@
                            }
                            break;
                        case SPK.AcStandard:
                        case SPK.HvacAC:
                        case SPK.HvacAC:case SPK.HvacAcPanel:
                            AC acTemp = new AC();
                            byte onoff = 0;
                            byte mode = 0;
@@ -609,7 +609,7 @@
                        }
                        break;
                    case SPK.AcStandard:
                    case SPK.HvacAC:
                    case SPK.HvacAC:case SPK.HvacAcPanel:
                        var ac = new AC();
                        byte onoff = 0;
@@ -957,7 +957,7 @@
                        ControlBytesSend(Command.ReadCurtainStatus, subnetId, deviceId, new byte[] { function.bus.LoopId });
                        break;
                    case SPK.AcStandard:
                    case SPK.HvacAC:
                    case SPK.HvacAC:case SPK.HvacAcPanel:
                        ControlBytesSend(Command.ReadACMode, subnetId, deviceId, new byte[] { function.bus.LoopId });
                        break;
                    case SPK.HvacFloorHeat:case SPK.FloorHeatStandard:case SPK.HvacFloorHeatPanel:
HDL_ON/DAL/Mqtt/MqttClient.cs
@@ -357,7 +357,7 @@
            //{
            //    return;
            //}
            if (DB_ResidenceData.Instance.CurrentRegion == null || DB_ResidenceData.Instance.CurrentRegion.id == null)
            if (OnAppConfig.Instance.LastLoginUserId == ""|| DB_ResidenceData.Instance.CurrentRegion == null || DB_ResidenceData.Instance.CurrentRegion.id == null)
            {
                return;
            }
@@ -860,18 +860,8 @@
        /// </summary>
        static void ReceiveNotifySqueezeAsync(string mMes)
        {
            MainPage.Log($"推送标识:{mMes};本地标识:{PushSignStr}");
            if (mMes == PushSignStr) return;//是自己的登录推送不处理//或者当前不是远程链接状态
            //测试账号,不挤下线
            switch (UserInfo.Current.userMobileInfo)
            {
                case "15626203746":
                    return;
            }
            //if (!UserInfo.Current.IsLogin)
            //{
            //    return;
            //}
            DisConnectRemoteMqttClient("挤下线");
@@ -880,18 +870,6 @@
                //弹窗提示被挤下线
                HDLCommon.Current.CheckLogout();
            });
            //UserInfo.Current.LastTime = DateTime.MinValue;
            //UserInfo.Current.SaveUserInfo();
            //Application.RunOnMainThread(() => {
            //    MainPage.GoLoginPage(UserInfo.Current);
            //    //弹窗提示被挤下线
            //});
            //2020-08-11 删除推送数据
            //HDLRequest.Current.PushserivceSignOut ();
        }
        ///// <summary>
@@ -914,6 +892,18 @@
        /// </summary>
        static void SendPushSignOut()
        {
#if DEBUG
            MainPage.Log("调试模式,不发布挤下线主题。");
            return;
#endif
            //测试账号,不挤下线
            switch (UserInfo.Current.AccountString)
            {
                case "15626203746":
                case "13580507523":
                    return;
            }
            byte[] message = Encoding.UTF8.GetBytes(PushSignStr);
            MqttRemoteSend(message, 4);
        }
@@ -941,7 +931,6 @@
                        break;
                    case 4://发布新方案的挤下线主题
                        topicName = $"/BusGateWayToClient/{UserInfo.Current.ID}" + PushNotifySqueeze;
                        //message = Encoding.UTF8.GetBytes (PushSignStr);
                        await RemoteMqttClient.PublishAsync(new MqttApplicationMessage { Topic = topicName, Payload = message, Retain = false, QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce });
                        break;
                }
HDL_ON/Entity/Function/Function.cs
@@ -198,7 +198,7 @@
                    case SPK.HvacAirFreshJinmao:
                        iconPath = "airFreshjinmao";
                        break;
                    case SPK.HvacAC:
                    case SPK.HvacAC:case SPK.HvacAcPanel:
                        iconPath = "acstandard";
                        break;
                    case SPK.HvacFan:
@@ -677,10 +677,12 @@
                        collect = !collect;
                        IMessageCommon.Current.ShowErrorInfoAlter(result);
                    });
                } else
                }
                else
                {
                    Application.RunOnMainThread(() =>
                    {
                        this.SaveFunctionFile();
                        UI.HomePage.RefreshFunctionView();
                    });
                }
@@ -1942,6 +1944,10 @@
        /// </summary>
        public const string HvacAC = "hvac.ac";
        /// <summary>
        /// 面板空调
        /// </summary>
        public const string HvacAcPanel = "hvac.ac_panel";
        /// <summary>
        /// 毛细管空调
        /// </summaryc
        public const string HvacCac = "hvac.cac";
@@ -1955,6 +1961,7 @@
            var spkList = new List<string>();
            spkList.Add(AcStandard);
            spkList.Add(HvacAC);
            spkList.Add(HvacAcPanel);
            spkList.Add(AcIr);
            spkList.Add(HvacCac);
            return spkList;
HDL_ON/Entity/Function/Scene.cs
@@ -421,6 +421,10 @@
                        IMessageCommon.Current.ShowErrorInfoAlter(result);
                    });
                }
                else
                {
                    this.SaveSceneFile();
                }
            })
            { IsBackground = true }.Start();
        }
HDL_ON/UI/MainPage.cs
@@ -115,7 +115,7 @@
        public static List<string> SceneSupportFunctionList = new List<string> {
            SPK.LightCCT,SPK.LightDimming,SPK.LightSwitch,SPK.LightRGB,
            SPK.CurtainRoller,SPK.CurtainSwitch,SPK.CurtainTrietex,SPK.CurtainDream,
            SPK.AcIr,SPK.AcStandard,SPK.HvacAC,
            SPK.AcIr,SPK.AcStandard,SPK.HvacAC,SPK.HvacAcPanel,
            SPK.FloorHeatStandard,SPK.HvacFloorHeat,SPK.HvacFloorHeatPanel,
            SPK.AirFreshStandard,SPK.HvacAirFresh,
            SPK.AirSwitch,
HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs
@@ -228,7 +228,7 @@
                        break;
                    case SPK.AcIr:
                    case SPK.AcStandard:
                    case SPK.HvacAC:
                    case SPK.HvacAC:case SPK.HvacAcPanel:
                        var acPage = new AcControlPage();
                        acPage.AddForm(function, btnCollectionIcon, btnName, btnFromFloor);
                        break;
HDL_ON/UI/UI0-Stan/Controls/CompoundControls/BatteryPersentControl.cs
@@ -20,11 +20,11 @@
        /// <summary>
        /// 进度条
        /// </summary>
        private NormalViewControl btnProgress = null;
        public NormalViewControl btnProgress = null;
        /// <summary>
        /// 图标控件
        /// </summary>
        private IconViewControl btnIcon = null;
        public IconViewControl btnIcon = null;
        #endregion
@@ -91,12 +91,14 @@
                //变红色
                this.btnProgress.BackgroundColor = 0xfff62f48;
                this.btnIcon.UnSelectedImagePath = "Public/BatteryNot.png";
                this.btnIcon.SelectedImagePath = "Public/BatteryNot.png";
            }
            else
            {
                //变灰色
                this.btnProgress.BackgroundColor = CSS_Color.PromptingColor1;
                this.btnIcon.UnSelectedImagePath = "Public/BatteryEnough.png";
                this.btnIcon.SelectedImagePath = "Public/BatteryEnough.png";
            }
        }
HDL_ON/UI/UI1-Login/LoginPage.cs
@@ -282,6 +282,11 @@
            {
                Application.HideSoftInput();
            };
            //btnIcon.MouseUpEventHandler = (sender, e) =>
            //{
            //    etAccount.Text = "13580507523";
            //    etPassword.Text = "a123456";
            //};
#if DEBUG
            btnIcon_bg.MouseUpEventHandler += (sender, e) =>
@@ -291,13 +296,8 @@
            };
            bool b = false;
            btnIcon.MouseUpEventHandler += (sender, e) =>
            btnIcon.MouseUpEventHandler = (sender, e) =>
            {
                //ESOnVideo.Current.Test(false);
                //return;
                if (b)
                {
                    //etAccount.Text = "18022428438";//wjc
@@ -538,6 +538,10 @@
            };
            passwordView.AddChidren(etPassword);
            etAccount.Text = "13580507523";
            etPassword.Text = "a123456";
            #region 密码登录-控件加载
            btnVisiblePassword = new Button()
            {
HDL_ON/UI/UI2/1-HomePage/HomePage.cs
@@ -1006,10 +1006,10 @@
                    //    continue;
                    //}
                    //else
                    {
                    //{
                        if (!function.collect&& function.spk != SPK.InverterJinmao)
                            continue;
                    }
                    //}
                    if (index % 2 == 0)
                    {
                        rowView = new FrameLayout()
HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs
@@ -330,8 +330,10 @@
                    }
                }
                #endregion
                if (bodyView.linkStateMsgView != null){
                bodyView.linkStateMsgView.Y = ApiUtlis.Ins.IsValidToken ? Application.GetRealHeight(113) : Application.GetRealHeight(113) - Application.GetRealWidth(24);
            }
            }
            catch (Exception ex)
            {
                MainPage.Log("Error", $"HomePage 账号登录状态信息显示异常:{ex.StackTrace}");
HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs
@@ -765,8 +765,11 @@
                    case ShowFunction.VideoIntercom:
                        if (FunctionList.List.videoIntercom != null && FunctionList.List.videoIntercom.Count > 0)
                        {
                            if (Common.ApiUtlis.Ins.hadInternet)
                            {
                            functionCount = 1;
                        }
                        }
                        break;
                    case ShowFunction.SecurityCenter:
                        functionCount = FunctionList.List.securities.Count;
HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs
@@ -1,5 +1,6 @@
using System;
using HDL_ON.Entity;
using HDL_ON.Stan;
using HDL_ON.UI.CSS;
using Shared;
@@ -93,25 +94,36 @@
            }
            else if (SPK.EvironmentSensorList().Contains(function.spk) || SPK.ArmSensorSpkList().Contains(function.spk)) //传感器没有开关按钮)
            {
                //if(function.spk == SPK.SensorPir || function.spk == SPK.SensorWater) { }
                var powerLowTipAttr = function.attributes.Find((obj) => obj.key == FunctionAttributeKey.BatteryState);
                if (powerLowTipAttr != null)
                if (powerLowTipAttr != null && !string.IsNullOrEmpty( powerLowTipAttr.state.ToString()))
                {
                    if (powerLowTipAttr.state.ToLower() == "low")
                    {
                    //电池控件、
                        Button btnTipPowerLow = new Button()
                        {
                            X = Application.GetRealWidth(307),
                            Y = Application.GetRealHeight(45),
                            Width = Application.GetRealWidth(24),
                            Height = Application.GetRealWidth(24),
                            UnSelectedImagePath = "FunctionIcon/ArmSensor/PowerLowIcon.png",
                        UnSelectedImagePath = "FunctionIcon/ArmSensor/Power80pIcon.png",
                            SelectedImagePath = "FunctionIcon/ArmSensor/PowerLowIcon.png",
                        IsSelected = powerLowTipAttr.state.ToLower() == "low"
                        };
                        this.AddChidren(btnTipPowerLow);
                    }
                }
                    //var batteryControl = new BatteryPersentControl();
                    //batteryControl.X = Application.GetRealWidth(107);
                    //batteryControl.Y = Application.GetRealHeight(45);
                    //batteryControl.InitControl();
                    //this.AddChidren(batteryControl);
                    //batteryControl.SetValue(80);
                    //if (powerLowTipAttr.state.ToLower() == "low")
                    //{
                    //    batteryControl.SetValue(20);
                    //}
                    //batteryControl.btnIcon.Visible = true;
                    //batteryControl.btnIcon.BackgroundColor = 0x88008800;
                }
                else if (function.spk == SPK.SenesorMegahealth || function.spk == SPK.SensorMmvPose  )
                {
@@ -127,8 +139,6 @@
                        Tag = function.sid + "_SenesorMegahealth_Status"
                    };
                    bodyDiv.AddChidren(btnStatus);
                    var tempStatus = function.attributes.Find((sta) => sta.key == FunctionAttributeKey.TargetStatus);
                    if (tempStatus != null)
HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs
@@ -100,7 +100,7 @@
                case SPK.CurtainTrietex:
                //空调
                case SPK.AcStandard:
                case SPK.HvacAC:
                case SPK.HvacAC:case SPK.HvacAcPanel:
                case SPK.AcIr:
                //地热
                case SPK.FloorHeatStandard:
HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs
@@ -161,7 +161,7 @@
                                case SPK.CurtainTrietex:
                                //空调
                                case SPK.AcStandard:
                                case SPK.HvacAC:
                                case SPK.HvacAC:case SPK.HvacAcPanel:
                                case SPK.AcIr:
                                //地热
                                case SPK.HvacFloorHeat:case SPK.HvacFloorHeatPanel:
@@ -1283,7 +1283,7 @@
                                    }
                                    break;
                                case SPK.AcStandard:
                                case SPK.HvacAC:
                                case SPK.HvacAC:case SPK.HvacAcPanel:
                                case SPK.AcIr:
                                    {
                                        string on_off = GetKeyValue("on_off", dicList);
@@ -2010,7 +2010,7 @@
                    }
                    break;
                case SPK.AcStandard:
                case SPK.AcStandard:case SPK.HvacAcPanel:
                case SPK.HvacAC:
                case SPK.AcIr:
                    {
@@ -2829,7 +2829,7 @@
                                        }
                                    }
                                    break;
                                case SPK.AcStandard:
                                case SPK.AcStandard:case SPK.HvacAcPanel:
                                case SPK.HvacAC:
                                case SPK.AcIr:
                                case SPK.FloorHeatStandard:case SPK.HvacFloorHeatPanel:
HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs
@@ -422,7 +422,7 @@
                deviceStrTypeList.Add(Language.StringByID(StringId.Curtain));
            }
            ///空调类
            var ac = deviceList.Find((device) => device.spk == SPK.AcStandard || device.spk == SPK.HvacAC|| device.spk == SPK.AcIr);
            var ac = deviceList.Find((device) => device.spk == SPK.AcStandard || device.spk == SPK.HvacAC|| device.spk == SPK.AcIr || device.spk == SPK.HvacAcPanel);
            if (ac != null)
            {
                deviceStrTypeList.Add(Language.StringByID(StringId.AC));
@@ -557,7 +557,7 @@
            else if (deviceType == Language.StringByID(StringId.AC))
            {
                functionTypeList.Add(SPK.AcStandard);
                functionTypeList.Add(SPK.HvacAC);
                functionTypeList.Add(SPK.HvacAC); functionTypeList.Add(SPK.HvacAcPanel);
                functionTypeList.Add(SPK.HvacCac);
                functionTypeList.Add(SPK.AcIr);
            }
@@ -657,7 +657,7 @@
                functionTypeList.Add(SPK.CurtainRoller);
                functionTypeList.Add(SPK.CurtainTrietex);
                functionTypeList.Add(SPK.AcStandard);
                functionTypeList.Add(SPK.HvacAC);
                functionTypeList.Add(SPK.HvacAC); functionTypeList.Add(SPK.HvacAcPanel);
                functionTypeList.Add(SPK.AcIr);
                functionTypeList.Add(SPK.FloorHeatStandard);
                functionTypeList.Add(SPK.HvacFloorHeat); functionTypeList.Add(SPK.HvacFloorHeatPanel);
@@ -732,7 +732,7 @@
                        deviceTypeList.Add(SPK.CurtainSwitch);
                        deviceTypeList.Add(SPK.CurtainRoller);
                        deviceTypeList.Add(SPK.CurtainTrietex);
                        deviceTypeList.Add(SPK.AcStandard); deviceTypeList.Add(SPK.HvacAC);deviceTypeList.Add(SPK.AcIr);
                        deviceTypeList.Add(SPK.AcStandard); deviceTypeList.Add(SPK.HvacAC);deviceTypeList.Add(SPK.AcIr); deviceTypeList.Add(SPK.HvacAcPanel);
                        deviceTypeList.Add(SPK.AirFreshStandard); deviceTypeList.Add(SPK.HvacAirFresh);
                        deviceTypeList.Add(SPK.FloorHeatStandard); deviceTypeList.Add(SPK.HvacFloorHeat); deviceTypeList.Add(SPK.HvacFloorHeatPanel);
                        deviceTypeList.Add(SPK.SensorSmoke);
@@ -783,7 +783,7 @@
                        deviceTypeList.Add(SPK.CurtainSwitch);
                        deviceTypeList.Add(SPK.CurtainRoller);
                        deviceTypeList.Add(SPK.CurtainTrietex);
                        deviceTypeList.Add(SPK.AcStandard); deviceTypeList.Add(SPK.HvacAC); deviceTypeList.Add(SPK.AcIr);
                        deviceTypeList.Add(SPK.AcStandard); deviceTypeList.Add(SPK.HvacAC); deviceTypeList.Add(SPK.AcIr); deviceTypeList.Add(SPK.HvacAcPanel);
                        deviceTypeList.Add(SPK.FloorHeatStandard); deviceTypeList.Add(SPK.HvacFloorHeat); deviceTypeList.Add(SPK.HvacFloorHeatPanel);
                        deviceTypeList.Add(SPK.AirFreshStandard); deviceTypeList.Add(SPK.HvacAirFresh);
                        deviceTypeList.Add(SPK.AirSwitch);
HDL_ON/UI/UI2/3-Intelligence/Automation/TargetDeviceFunList.cs
@@ -455,6 +455,7 @@
                    break;
                case SPK.AcStandard:
                case SPK.HvacAC:
                case SPK.HvacAcPanel:
                case SPK.AcIr:
                    {
                        #region 界面
@@ -987,6 +988,7 @@
                            }
                        case SPK.HvacAC:
                        case SPK.AcIr:
                        case SPK.HvacAcPanel:
                        case SPK.AcStandard:
                        case SPK.FloorHeatStandard:
                        case SPK.HvacFloorHeat:case SPK.HvacFloorHeatPanel:
HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/AddDevciePage.cs
@@ -181,8 +181,6 @@
                };
                row.AddChidren(btnName);
                btnName.MouseUpEventHandler = (sender, e) =>
                {
                    switch (device.spk)
HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/BrandListPage.cs
@@ -112,7 +112,9 @@
                if(brand.productPlatform == "HaiLin")//子晴需要隐藏这个入口,由调试软件上传数据 2023-03-09 17:20:33
                {
                    continue;
                }else if(brand.productPlatform == "TUYA") {
                }
                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")
                    {
@@ -127,12 +129,7 @@
                };
                contentView.AddChidren(row);
                //if (isFrist)
                //{
                //    isFrist = false;
                //}
                //else
                {
                    Button btnLine = new Button()
                    {
                        Y = Application.GetRealHeight(86),
@@ -142,7 +139,6 @@
                        BackgroundColor = CSS_Color.DividingLineColor,
                    };
                    row.AddChidren(btnLine);
                }
                ImageView btnIcon = new ImageView()
                {
@@ -177,8 +173,8 @@
                //下载第三方品牌icon
                ImageUtlis.Current.Load3tyBrandIconImages(brand.brandName, brand.brandIcon, btnIcon);
                EventHandler<MouseEventArgs> eventHandler = (sender, e) => {
                EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
                {
                    var page = new DeviceListPage(brand);
                    MainPage.BasePageView.AddChidren(page);
                    page.LoadPage();
HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/DeviceListPage.cs
@@ -24,7 +24,6 @@
            brand = integratedBrand;
        }
        public void LoadPage()
        {
            Action<string, string> action = (s, a) =>
@@ -68,7 +67,7 @@
                {
                    var pm = new HttpServerRequest();
                    var pack = pm.Get3TyBrandBindDeviceList(brand.productPlatform, brand.productBrand);
                    if (pack.Code == DAL.Server.StateCode.SUCCESS)
                    if (pack.Code == StateCode.SUCCESS)
                    {
                        var revData = Newtonsoft.Json.JsonConvert.DeserializeObject<Function3tyBrandObj>(pack.Data.ToString());
@@ -118,10 +117,6 @@
            bool isFrist = true;
            foreach (var device in deviceList)
            {
                //if (!this.CheckSupportDevice(device))
                //{
                //    continue;
                //}
                var row = new RowLayout()
                {
                    Height = Application.GetRealHeight(50),
HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/Iot_BrandListPage.cs
@@ -26,8 +26,6 @@
        public void LoadPage()
        {
            var topView = new TopViewDiv(bodyView, Language.StringByID(StringId.Bind3thIotAccount));
            topView.maginY = 10;
            topView.LoadTopView(CSS_Color.MainBackgroundColor);
HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorPirPage.cs
@@ -46,11 +46,38 @@
            { IsBackground = true }.Start();
        }
        BatteryPersentControl batteryControl;
        /// <summary>
        /// 初始化第一个索引页的内容
        /// </summary>
        private void InitFrameWhiteContent1()
        {
            //电池控件
            this.batteryControl = new BatteryPersentControl();
            //它有个最小的X轴
            batteryControl.X = Application.GetRealWidth(104) > base.btnRoomName.Right ? Application.GetRealWidth(104) : base.btnRoomName.Right + Application.GetRealWidth(4);
            if (batteryControl.Height > base.btnRoomName.Height)
            {
                //一个是25,一个是21,弄不准到底谁更高,因为计算方法不一样
                batteryControl.Y = base.btnRoomName.Y - (batteryControl.Height - base.btnRoomName.Height) / 2;
            }
            else
            {
                batteryControl.Y = base.btnRoomName.Y + (batteryControl.Height - base.btnRoomName.Height) / 2;
            }
            batteryControl.InitControl(false);
            batteryControl.SetValue(80);
            var powerLowTipAttr = device.attributes.Find((obj) => obj.key == FunctionAttributeKey.BatteryState);
            if (powerLowTipAttr != null)
            {
                if (powerLowTipAttr.state.ToLower() == "low")
                {
                    batteryControl.SetValue(20);
                }
            }
            FrameWhiteCentet1.AddChidren(batteryControl);
            btnIcon = new IconViewControl(198)
            {
                Gravity = Gravity.CenterHorizontal,
@@ -133,8 +160,6 @@
                        btnSuctionView.IsSelected = false;
                    }
                }
                else
                {
                    temp = device.attributes.Find((sta) => sta.key == FunctionAttributeKey.AlarmStatus);
@@ -151,6 +176,19 @@
                        btnSuctionView.IsSelected = false;
                    }
                }
                var powerLowTipAttr = device.attributes.Find((obj) => obj.key == FunctionAttributeKey.BatteryState);
                if (powerLowTipAttr != null)
                {
                    if (powerLowTipAttr.state.ToLower() == "low")
                    {
                        batteryControl.SetValue(20);
                    }
                    else
                    {
                        batteryControl.SetValue(80);
                    }
                }
            });
        }
HDL_ON/UI/UI2/FuntionControlView/ArmSensor/SensorWaterImmersionPage.cs
@@ -47,12 +47,38 @@
            })
            { IsBackground = true }.Start();
        }
        BatteryPersentControl batteryControl;
        /// <summary>
        /// 初始化第一个索引页的内容
        /// </summary>
        private void InitFrameWhiteContent1()
        {
            //电池控件
            this.batteryControl = new BatteryPersentControl();
            //它有个最小的X轴
            batteryControl.X = Application.GetRealWidth(104) > base.btnRoomName.Right ? Application.GetRealWidth(104) : base.btnRoomName.Right + Application.GetRealWidth(4);
            if (batteryControl.Height > base.btnRoomName.Height)
            {
                //一个是25,一个是21,弄不准到底谁更高,因为计算方法不一样
                batteryControl.Y = base.btnRoomName.Y - (batteryControl.Height - base.btnRoomName.Height) / 2;
            }
            else
            {
                batteryControl.Y = base.btnRoomName.Y + (batteryControl.Height - base.btnRoomName.Height) / 2;
            }
            batteryControl.InitControl(false);
            batteryControl.SetValue(80);
            var powerLowTipAttr = device.attributes.Find((obj) => obj.key == FunctionAttributeKey.BatteryState);
            if (powerLowTipAttr != null)
            {
                if(powerLowTipAttr.state.ToLower() == "low")
                {
                    batteryControl.SetValue(20);
                }
            }
            FrameWhiteCentet1.AddChidren(batteryControl);
            btnIcon = new IconViewControl(198)
            {
                Gravity = Gravity.CenterHorizontal,
@@ -136,6 +162,19 @@
                        btnSuctionView.IsSelected = false;
                    }
                }
                var powerLowTipAttr = device.attributes.Find((obj) => obj.key == FunctionAttributeKey.BatteryState);
                if (powerLowTipAttr != null)
                {
                    if (powerLowTipAttr.state.ToLower() == "low")
                    {
                        batteryControl.SetValue(20);
                    }
                    else
                    {
                        batteryControl.SetValue(80);
                    }
                }
            });
        }