wei
2021-07-09 6e8dba90956d7068df68144aa4c6d1189e596255
调光设备本地控制问题
13个文件已修改
213 ■■■■ 已修改文件
.vs/HDL_APP_Project/xs/UserPrefs.xml 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Properties/AndroidManifest.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Info.plist 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/DriverLayer/Control.cs 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/DriverLayer/Control_Udp.cs 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/DriverLayer/Packet.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Entity/FunctionList.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/MainPage.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI1-Login/LoginPage.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage_AddIrButton.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPageBLL.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.vs/HDL_APP_Project/xs/UserPrefs.xml
@@ -1,35 +1,23 @@
<Properties StartupConfiguration="{D998E133-F0DD-4760-BE3C-461632F54DA4}|Default">
  <MonoDevelop.Ide.ItemProperties.HDL-ON__iOS PreferredExecutionTarget="MonoDevelop.IPhone.IPhoneDeviceTarget.00008020-000404163432002E" />
  <MonoDevelop.Ide.Workbench ActiveDocument="HDL_ON/UI/UI1-Login/LoginPage.cs">
  <MonoDevelop.Ide.Workbench ActiveDocument="HDL-ON_iOS/Info.plist">
    <Files>
      <File FileName="HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalPage.cs" Line="760" Column="169" />
      <File FileName="HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs" />
      <File FileName="HDL_ON/UI/UI2/FuntionControlView/AC/ACPageBLL.cs" />
      <File FileName="HDL_ON/Common/ApiUtlis.cs" Line="154" Column="69" />
      <File FileName="HDL_ON/DAL/Server/HttpServerRequest.cs" Line="1848" Column="82" />
      <File FileName="HDL_ON/DAL/Server/NewAPI.cs" Line="346" Column="86" />
      <File FileName="HDL_ON/UI/UI1-Login/LoginPage.cs" Line="527" Column="46" />
      <File FileName="HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs" Line="704" Column="80" />
      <File FileName="HDL_ON/UI/UI2/2-Classification/RoomPage.cs" />
      <File FileName="HDL_ON/DAL/Server/HttpUtil.cs" />
      <File FileName="HDL_ON/Common/ApiUtlis.cs" />
      <File FileName="HDL_ON/DAL/DriverLayer/Control.cs" />
      <File FileName="HDL_ON/DAL/DriverLayer/Control_Udp.cs" />
      <File FileName="HDL_ON/DAL/DriverLayer/Packet.cs" />
      <File FileName="HDL-ON_iOS/Info.plist" />
    </Files>
    <Pads>
      <Pad Id="ProjectPad">
        <State name="__root__">
          <Node name="HDL_APP_Project" expanded="True">
            <Node name="HDL_ON" expanded="True">
              <Node name="Common" expanded="True" />
              <Node name="DAL" expanded="True">
                <Node name="DriverLayer" expanded="True" />
                <Node name="Server" expanded="True" />
              </Node>
              <Node name="Entity" expanded="True">
                <Node name="Function" expanded="True" />
              </Node>
              <Node name="UI" expanded="True">
                <Node name="UI1-Login" expanded="True">
                  <Node name="LoginPage.cs" selected="True" />
                </Node>
              </Node>
            <Node name="HDL-ON_iOS" expanded="True">
              <Node name="Info.plist" selected="True" />
            </Node>
            <Node name="HDL-ON_iOS" expanded="True" />
          </Node>
        </State>
      </Pad>
@@ -41,11 +29,13 @@
    <String>Shared.Droid.TouchID/Shared.Droid.TouchID.csproj</String>
    <String>Shared.IOS/Shared.IOS.csproj</String>
  </DisabledProjects>
  <MonoDevelop.Ide.Workspace ActiveConfiguration="Debug|iPhone" />
  <MonoDevelop.Ide.Workspace ActiveConfiguration="Release|iPhone" />
  <MonoDevelop.Ide.ItemProperties.HDL-ON__Android PreferredExecutionTarget="Android.SelectDevice" />
  <MonoDevelop.Ide.DebuggingService.Breakpoints>
    <BreakpointStore>
      <Breakpoint file="/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/UI/UI2/FuntionControlView/Electrical/IrFanPage.cs" relfile="HDL_ON/UI/UI2/FuntionControlView/Electrical/IrFanPage.cs" line="42" column="1" />
      <Breakpoint file="/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/Common/ApiUtlis.cs" relfile="HDL_ON/Common/ApiUtlis.cs" line="390" column="1" />
      <Breakpoint file="/Users/kaede/Desktop/HDL_APP_Project/HDL_ON/DAL/Mqtt/MqttClient.cs" relfile="HDL_ON/DAL/Mqtt/MqttClient.cs" line="422" column="1" />
    </BreakpointStore>
  </MonoDevelop.Ide.DebuggingService.Breakpoints>
  <MultiItemStartupConfigurations />
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:versionCode="202107081" android:versionName="1.2.202107081" package="com.hdl.onpro">
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="202107094" android:versionName="1.2.202107094" package="com.hdl.onpro">
    <uses-sdk android:minSdkVersion="23" android:targetSdkVersion="29" />
    <!--  可视对讲权限-->
    <uses-permission android:name="android.permission.CAMERA" />
HDL-ON_iOS/Info.plist
@@ -100,9 +100,9 @@
    <key>UIStatusBarStyle</key>
    <string>UIStatusBarStyleLightContent</string>
    <key>CFBundleShortVersionString</key>
    <string>1.2.202107081</string>
    <string>1.2.202107095</string>
    <key>CFBundleVersion</key>
    <string>1.2.07081</string>
    <string>1.2.07095</string>
    <key>NSLocationWhenInUseUsageDescription</key>
    <string>Use geographic location to provide services such as weather</string>
    <key>NSAppleMusicUsageDescription</key>
HDL_ON/DAL/DriverLayer/Control.cs
@@ -359,15 +359,6 @@
                    }
                }
            }
            //Bug修复:一端口远程控制调光设备的调光属性时,无法控制到0,反复横跳。
            //因为On + 远程控制发送给云端使用的是link协议数据,杨涛中转给高胜处理时候逻辑上有冲突,导致无法单独控制亮度值,需要同时发送开关值与亮度值。
            if (DB_ResidenceData.Instance.GatewayType == 0)
            {
                if(commandDictionary.Count == 1 && commandDictionary.ContainsKey(FunctionAttributeKey.Brightness))
                {
                    commandDictionary.Add(FunctionAttributeKey.OnOff, commandDictionary[FunctionAttributeKey.Brightness] == "0" ? "off" : "on");
                }
            }
            ///dome控制
            if (MainPage.NoLoginMode)
@@ -443,6 +434,25 @@
                //远程通讯
                else
                {
                    //Bug修复:一端口远程控制调光设备的调光属性时,无法控制到0,反复横跳。
                    //因为On + 远程控制发送给云端使用的是link协议数据,杨涛中转给高胜处理时候逻辑上有冲突,导致无法单独控制亮度值,需要同时发送开关值与亮度值。
                    if (DB_ResidenceData.Instance.GatewayType == 0)
                    {
                        if (commandDictionary.Count == 1)
                        {
                            if (commandDictionary.ContainsKey(FunctionAttributeKey.Brightness))
                            {
                                commandDictionary.Add(FunctionAttributeKey.OnOff, commandDictionary[FunctionAttributeKey.Brightness] == "0" ? "off" : "on");
                            }
                        }
                        if(function.spk == SPK.LightCCT)
                        {
                            if (!commandDictionary.ContainsKey(FunctionAttributeKey.CCT))
                            {
                                commandDictionary.Add(FunctionAttributeKey.CCT, function.GetAttrState(FunctionAttributeKey.CCT));
                            }
                        }
                    }
                    DAL.Server.HttpServerRequest httpServer = new DAL.Server.HttpServerRequest();
                    //ALink控制、Bus控制使用同一个接口控制,由云端负责解析
                    var apiControlData = function.GetApiControlData(commandDictionary);
HDL_ON/DAL/DriverLayer/Control_Udp.cs
@@ -437,17 +437,21 @@
                        switch (function.spk)
                        {
                            case SPK.LightCCT:
                                byte b0 = 100;//开关操作依据on_off字段,实际开关值依据brightness,当on_off为打开,brightness不能为0
                                if(commandDictionary.ContainsKey(FunctionAttributeKey.OnOff))
                                byte b0 = 100;
                                if (commandDictionary.ContainsKey(FunctionAttributeKey.OnOff))
                                {
                                    if (function.trait_on_off.curValue.ToString() == "off")
                                    {
                                        b0 = 0;
                                    }
                                    else
                                    {
                                        b0 = function.lastBrightness == 0 ? (byte)100 : Convert.ToByte(function.lastBrightness);
                                    }
                                }
                                else
                                {
                                    b0 = Convert.ToByte(function.GetAttrState(FunctionAttributeKey.Brightness));// == 0 ? (byte)100 : Convert.ToByte(function.GetAttrState(FunctionAttributeKey.Brightness));
                                    b0 = Convert.ToByte(function.GetAttrState(FunctionAttributeKey.Brightness));
                                }
                                var bytes0 = new byte[] { function.bus.LoopId,
                                            b0,
@@ -459,22 +463,21 @@
                                ControlBytesSend(Command.SetLogicLoopColor, subnetId, deviceId, bytes0, 1);
                                break;
                            case SPK.LightRGB:
                                byte b = 100;//开关操作依据on_off字段,实际开关值依据brightness,当on_off为打开,brightness不能为0
                                if (function.trait_on_off.curValue.ToString() == "off")
                                byte b = 100;
                                if (commandDictionary.ContainsKey(FunctionAttributeKey.OnOff))
                                {
                                    b = 0;
                                }
                                else
                                {
                                    byte lightBri1 = Convert.ToByte(function.GetAttrState(FunctionAttributeKey.Brightness));
                                    if (lightBri1 == 0)
                                    if (function.trait_on_off.curValue.ToString() == "off")
                                    {
                                        b = 100;
                                        b = 0;
                                    }
                                    else
                                    {
                                        b = lightBri1;
                                        b = function.lastBrightness == 0 ? (byte)100 : Convert.ToByte(function.lastBrightness);
                                    }
                                }
                                else
                                {
                                    b = Convert.ToByte(function.GetAttrState(FunctionAttributeKey.Brightness));
                                }
                                var tempLight = new Light();
                                var bytes = new byte[] { function.bus.LoopId,
@@ -488,22 +491,21 @@
                                break;
                            case SPK.LightDimming:
                                byte b1 = 100;
                                if (function.trait_on_off.curValue.ToString() == "off")
                                if (commandDictionary.ContainsKey(FunctionAttributeKey.OnOff))
                                {
                                    b1 = 0;
                                }
                                else
                                {
                                    byte lightBri = Convert.ToByte(function.GetAttrState(FunctionAttributeKey.Brightness));
                                    if (lightBri == 0)
                                    if (function.trait_on_off.curValue.ToString() == "off")
                                    {
                                        b1 = 100;
                                        b1 = 0;
                                    }
                                    else
                                    {
                                        b1 = lightBri;
                                        b1 = function.lastBrightness == 0 ? (byte)100 : Convert.ToByte(function.lastBrightness);
                                    }
                                }
                                else
                                {
                                    b1 = Convert.ToByte(function.GetAttrState(FunctionAttributeKey.Brightness));
                                }
                                ControlBytesSend(Command.SetSingleLight, subnetId, deviceId, new byte[] {
                                            function.bus.LoopId,
                                            b1,
HDL_ON/DAL/DriverLayer/Packet.cs
@@ -180,7 +180,7 @@
                                    light.trait_on_off.curValue = receiveBytes[light.bus.LoopId] == 0 ? "off" : "on";
                                    if (light.trait_on_off.curValue.ToString() == "on")
                                    {
                                        light.SetAttrState(FunctionAttributeKey.Brightness, receiveBytes[2].ToString());
                                        light.SetAttrState(FunctionAttributeKey.Brightness, receiveBytes[i+1].ToString());
                                        light.lastState = Language.StringByID(StringId.Brightness) + " : " + receiveBytes[2] + "%";
                                    }
                                    HomePage.UpdataFunctionStates(light);
HDL_ON/Entity/FunctionList.cs
@@ -184,6 +184,7 @@
        /// <para>false:直接无条件添加</para></param>
        public void IniFunctionList(string filePath, bool checkRepeat = false)
        {
            MainPage.Log("初始化功能数据");
            // todo 增加设备,增加功能进功能列表
            if (filePath.StartsWith("FunctionData_"))
            {
HDL_ON/UI/MainPage.cs
@@ -25,7 +25,7 @@
        /// <summary>
        /// 版本号
        /// </summary>
        public static string VersionString = "1.2.0708";
        public static string VersionString = "1.2.0709";
        ///// <summary>
        ///// 客户端类型
        ///// </summary>
HDL_ON/UI/UI1-Login/LoginPage.cs
@@ -205,7 +205,7 @@
                {
                    //etAccount.Text = "tf@smarttech.com.ua";//国外账号,有住宅,登录无法显示
                    //etAccount.Text = "13375012446";//测试服务器
                    etAccount.Text = "13450425803";
                    //etAccount.Text = "13450425803";
                    //etAccount.Text = "1033326940@qq.com";
                    //etAccount.Text = "18022428438";//wjc
                    //etAccount.Text = "13602944661";//kx
@@ -223,15 +223,13 @@
                    //etAccount.Text = "15217626103";//
                    //etAccount.Text = "13682244600";//波哥
                    //etAccount.Text = "13168123446";//昆明金茂项目,新风问题
                    etAccount.Text = "551775569@qq.com";
                    etAccount.Text = "2949126848@qq.com";//陈琳cct测试
                    //etAccount.Text = "2949126848@qq.com";//陈琳
                    //etAccount.Text = "13168123446";
                    //etAccount.Text = "13676202754";//巴林服务器
                    //etAccount.Text = "13602944661";//kx
                    //etAccount.Text = "551775569@qq.com";//wcf
                    etAccount.Text = "551775569@qq.com";//wcf
                    //etAccount.Text = "18666455392";//13375012446//13602944661//tzy 18778381374
                    //etAccount.Text = "15971583093";// gs//tzy 274116637@qq.com//Sumant.Bhatia@havells.com 国外服务器测试
                    etAccount.Text = "15971583093";//高胜 调光0 100 反复横跳
                    //etAccount.Text = "15971583093";//高胜
                }
                b = !b;
                etPassword.Text = "123456";
@@ -671,12 +669,12 @@
                    sid = "light4",
                    deviceId = "light4",
                    name = Language.CurrentLanguage == "Chinese" ? "大灯" : "light 1",
                    spk = SPK.LightSwitch,
                    spk = SPK.LightDimming,
                    roomIds = new List<string>() { "1405771024583090178" },
                    attributes = new List<FunctionAttributes>()
                    {
                        new FunctionAttributes() { key = "on_off",value =new List<string>(){ "on","off" }, curValue="on",state = "on"   },
                        new FunctionAttributes() { key = "brightness",value =new List<string>(){ "0","100" }, curValue="0",state = "0"   },
                        new FunctionAttributes() { key = "brightness",value =new List<string>(){ "0","100" }, curValue="100",state = "100"   },
                        new FunctionAttributes() { key = "fade_time",value =new List<string>(){ "0","100" }, curValue="0",state = "0"   },
                    },
                };
@@ -691,7 +689,6 @@
                    attributes = new List<FunctionAttributes>()
                    {
                        new FunctionAttributes() { key = "on_off",value =new List<string>(){ "on","off" }, curValue="on",state = "on"   },
                        new FunctionAttributes() { key = "brightness",value =new List<string>(){ "0","100" }, curValue="0",state = "0"   },
                        new FunctionAttributes() { key = "fade_time",value =new List<string>(){ "0","100" }, curValue="0",state = "0"   },
                    },
                };
@@ -735,7 +732,7 @@
                    {
                        new FunctionAttributes() { key = "on_off",value =new List<string>(){ "on","off" }, curValue="on",state = "on"   },
                        new FunctionAttributes() { key = "mode",value =new List<string>(){ "day", "night", "away", "normal", "timer" }, curValue="day",state = "day"   },
                        new FunctionAttributes() { key = "set_temp",value =new List<string>(){ "" }, curValue="26",state = "26"   },
                        new FunctionAttributes() { key = "set_temp",value =new List<string>(){ "" }, curValue="26",state = "26" ,max = 35,min = 5  },
                        new FunctionAttributes() { key = "room_temp",value =new List<string>(){ "" }, curValue="26",state = "26"   },
                    },
                };
@@ -901,12 +898,12 @@
                    sid = "light6",
                    deviceId = "light6",
                    name = Language.CurrentLanguage == "Chinese" ? "餐厅灯1" : "Dining room light 1",
                    spk = SPK.LightSwitch,
                    spk = SPK.LightDimming,
                    roomIds = new List<string>() { room3.roomId },
                    attributes = new List<FunctionAttributes>()
                    {
                        new FunctionAttributes() { key = "on_off",value =new List<string>(){ "on","off" }, curValue="on",state = "on"   },
                        new FunctionAttributes() { key = "brightness",value =new List<string>(){ "0","100" }, curValue="0",state = "0"   },
                        new FunctionAttributes() { key = "brightness",value =new List<string>(){ "0","100" }, curValue="100",state = "100"   },
                        new FunctionAttributes() { key = "fade_time",value =new List<string>(){ "0","100" }, curValue="0",state = "0"   },
                    },
                };
@@ -921,7 +918,6 @@
                    attributes = new List<FunctionAttributes>()
                    {
                        new FunctionAttributes() { key = "on_off",value =new List<string>(){ "on","off" }, curValue="on",state = "on"   },
                        new FunctionAttributes() { key = "brightness",value =new List<string>(){ "0","100" }, curValue="0",state = "0"   },
                        new FunctionAttributes() { key = "fade_time",value =new List<string>(){ "0","100" }, curValue="0",state = "0"   },
                    },
                };
@@ -1053,7 +1049,6 @@
                    attributes = new List<FunctionAttributes>()
                    {
                        new FunctionAttributes() { key = "on_off",value =new List<string>(){ "on","off" }, curValue="on",state = "on"   },
                        new FunctionAttributes() { key = "brightness",value =new List<string>(){ "0","100" }, curValue="0",state = "0"   },
                        new FunctionAttributes() { key = "fade_time",value =new List<string>(){ "0","100" }, curValue="0",state = "0"   },
                    },
                };
@@ -1062,15 +1057,11 @@
                #endregion
                var fileList = Common.FileUtlis.Files.ReadFiles();
                foreach(var file in fileList)
                {
                    FunctionList.List.IniFunctionList(file,true);
                }
                Room.CurrentSpatial.InitRoomListFunctions();
HDL_ON/UI/UI2/2-Classification/ClassificationPage.cs
@@ -269,7 +269,7 @@
                                }
                            });
                            runCount++;
                            System.Threading.Thread.Sleep(8);
                            System.Threading.Thread.Sleep(12);
                        }
                        Application.RunOnMainThread(() =>
                        {
@@ -307,6 +307,7 @@
                            Height = Application.GetRealWidth(192 + 20),//2020-12-01 房间图片比例改回16:9
                            Radius = (uint)Application.GetRealWidth(12),
                            Tag = room.roomId,
                            BackgroundColor = CSS_Color.MainBackgroundColor,
                        };
                        roomListView.AddChidren(roomView);
@@ -323,7 +324,7 @@
                            Height = Application.GetRealWidth(70 + 20),
                            Radius = (uint)Application.GetRealWidth(12),
                            Tag = room.roomId,
                            BackgroundColor = CSS_Color.BackgroundColor,
                            BackgroundColor = CSS_Color.MainBackgroundColor,
                        };
                        roomListView.AddChidren(roomView);
                        LoadSmallPirtureRoomRow(roomView, room);
@@ -509,9 +510,10 @@
            roomView.RemoveAll();
            roomFloorChangeView.BackgroundColor = roomListView.BackgroundColor = CSS_Color.BackgroundColor;
            roomView.BackgroundColor = CSS_Color.BackgroundColor;
            //roomView.BackgroundColor = CSS_Color.MainBackgroundColor;
            var viewbg = new ImageView()
            var viewbg = new Button()
            {
                Width = Application.GetRealWidth(343),
                Height = Application.GetRealWidth(70),
@@ -556,10 +558,10 @@
            var btnAllClose = new Button()
            {
                X = Application.GetRealWidth(288),
                Y = Application.GetRealWidth(10),
                Width = Application.GetMinRealAverage(58),
                Height = Application.GetMinRealAverage(58),
                X = Application.GetRealWidth(278),
                Y = Application.GetRealWidth(15),
                Width = Application.GetMinRealAverage(50),
                Height = Application.GetMinRealAverage(50),
                UnSelectedImagePath = "Classification/Room/AllCloseIcon2.png",
                Tag = "AllClose",
                Visible = false
@@ -699,13 +701,7 @@
                        functionOnCount = FunctionList.List.GetAirFreshList().FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count;
                        break;
                    case ShowFunction.Music:
                        //functionCount = Music.A31MusicModel.A31MusicModelList.Count;
                        //functionOnCount = Music.A31MusicModel.A31MusicModelList.FindAll((obj) => obj.trait_on_off.curValue.ToString() == "on").Count;
                        //if(functionCount == 0)
                        //{
                        //    functionCount = FunctionList.List.GetMusicList().Count;
                        //}
                        functionCount = 1;
                        functionCount = FunctionList.List.GetMusicList().Count;
                        break;
                    case ShowFunction.Panel:
                        break;
HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs
@@ -410,9 +410,9 @@
                Button btnModeIcon = new Button()
                {
                    X = btnTitle.X,
                    Y = Application.GetRealHeight(41 * (modeList.IndexOf(m) + 1) + 10 + 8),
                    Width = Application.GetRealWidth(30),
                    Height = Application.GetRealWidth(30),
                    Y = Application.GetRealHeight(44 * (modeList.IndexOf(m) + 1) + 10 + 8),
                    Width = Application.GetRealWidth(24),
                    Height = Application.GetRealWidth(24),
                    IsSelected = device.GetAttrState(FunctionAttributeKey.Swing) == m,
                };
                modeChangeView.AddChidren(btnModeIcon);
@@ -431,10 +431,6 @@
                };
                modeChangeView.AddChidren(btnModeText);
                btnModeIcon.UnSelectedImagePath = acFunction.GetSwingIconPath(m, false);
                btnModeIcon.SelectedImagePath = acFunction.GetSwingIconPath(m);
                btnModeText.Text = acFunction.GetSwingAttrText(m);
                if (modeList.IndexOf(m) < modeList.Count - 1)
                {
                    modeChangeView.AddChidren(new Button()
@@ -446,6 +442,11 @@
                        BackgroundColor = CSS_Color.BackgroundColor,
                    });
                }
                btnModeIcon.UnSelectedImagePath = acFunction.GetSwingIconPath(m, false);
                btnModeIcon.SelectedImagePath = acFunction.GetSwingIconPath(m);
                btnModeText.Text = acFunction.GetSwingAttrText(m);
                EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
                {
                    dialog.Close();
HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage_AddIrButton.cs
@@ -133,6 +133,18 @@
                //添加数据对象
                AttributesStatus buttonObj = new AttributesStatus();
                //防止key不唯一
                var attrCount = control.attributes.Count;
                var keyString = "key" + attrCount;
                while (true)
                {
                    if (control.attributes.Find((obj) => obj.key == keyString) == null)
                    {
                        break;
                    }
                    keyString = "key" + (++attrCount);
                }
                buttonObj.key = "key" + control.attributes.Count.ToString();
                buttonObj.value = texts;
HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPageBLL.cs
@@ -107,7 +107,7 @@
                }
                var temp = Convert.ToInt32(function.GetAttrState(FunctionAttributeKey.SetTemp));
                if (temp < Convert.ToInt32(function.GetAttribute(FunctionAttributeKey.SetTemp).min))
                if (temp <= Convert.ToInt32(function.GetAttribute(FunctionAttributeKey.SetTemp).min))
                {
                    return;
                }
@@ -126,7 +126,7 @@
                    return;
                }
                var temp =(int) Convert.ToDouble(function.GetAttrState(FunctionAttributeKey.SetTemp));
                if (temp > Convert.ToDouble(function.GetAttribute(FunctionAttributeKey.SetTemp).max))
                if (temp >= Convert.ToDouble(function.GetAttribute(FunctionAttributeKey.SetTemp).max))
                {
                    return;
                }