黄学彪
2020-07-01 304dca51c28183a9dfc192c6b93ea1c00bdd5d97
ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/PaneTargetsBaseForm.cs
File was renamed from ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelSimpleMutilfunctionBindSensorForm.cs
@@ -1,36 +1,38 @@
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using Shared.Common;
using Shared.Phone.UserCenter.Safety;
using Shared.Phone.UserCenter.DeviceBind;
using ZigBee.Device;
using static ZigBee.Device.BindObj;
using static ZigBee.Device.Panel;
namespace Shared.Phone.UserCenter.DeviceBind
namespace Shared.Phone.UserCenter.Device.Bind
{
    public class PanelSimpleMutilfunctionBindSensorForm : BindCommonLayout
    public class PaneTargetsBaseForm : BindCommonLayout
    {
        #region  构造函数
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="device"></param>
        /// <param name="deviceBindType">1:温度传感器;2:湿度传感器 </param>
        /// <param name="deviceBindType">1:新风;2:温度传感器;3:湿度传感器;4:PM2.5传感器;5:空调目标</param>
        /// <param name="bindDev">绑定目标 </param>
        public PanelSimpleMutilfunctionBindSensorForm(CommonDevice device, CommonDevice bindDev, int deviceBindType)
        public PaneTargetsBaseForm(CommonDevice device, CommonDevice bindDev, DeviceBind.BindInfo.BindType deviceBindType)
        {
            this.curControlDev = device as FreshAir;
            curControlDev = new Panel();
            curControlDev.DeviceAddr = device.DeviceAddr;
            curControlDev.DeviceEpoint = device.DeviceEpoint;
            curControlDev.CurrentGateWayId = device.CurrentGateWayId;
            curControlDev.Type = device.Type;
            this.curBindDevice = bindDev;
            this.curDeviceBindType = deviceBindType;
        }
        #endregion
        #region  变量申明
        #region  变量申明
        /// <summary>
        /// 当前新风面板【控制设备】
        /// 控制设备
        /// </summary>
        FreshAir curControlDev;
        Panel curControlDev;
        /// <summary>
        /// 当前被绑设备
        /// </summary>
@@ -38,7 +40,7 @@
        /// <summary>
        /// 显示被绑定设备或场景的view
        /// </summary>
        VerticalFrameRefreshControl midVerticalScrolViewLayout;
        VerticalRefreshLayout midVerticalScrolViewLayout;
        /// <summary>
        /// 显示房间的view
        /// </summary>
@@ -47,6 +49,14 @@
        /// 按键配置的目标列表
        /// </summary>
        List<CommonDevice> targetList = new List<CommonDevice>();
        /// <summary>
        /// 按键配置的目标临时列表
        /// </summary>
        List<CommonDevice> targetListTemp = new List<CommonDevice>();
        /// <summary>
        /// 临时房间
        /// </summary>
        Room tempRoom;
        /// <summary>
        /// 面板中已经存在的目标列表
        /// </summary>
@@ -57,8 +67,9 @@
        /// 2:温度传感器
        /// 3:湿度传感器
        /// 4:PM2.5传感器
        /// 5:空调目标
        /// </summary>
        int curDeviceBindType = 0;
        DeviceBind.BindInfo.BindType curDeviceBindType = 0;
        /// <summary>
        /// 本地房间列表
        /// </summary>
@@ -72,6 +83,14 @@
        /// </summary>
        Button btnFloorText;
        /// <summary>
        /// 空目标按钮
        /// </summary>
        Button btnTipPic;
        /// <summary>
        /// 空目标文本
        /// </summary>
        Button btnTipText;
        /// <summary>
        /// 楼层列表
        /// </summary>
        Dictionary<string, string> dicFloorList;
@@ -79,6 +98,10 @@
        /// 所有房间中支持被绑定的设备列表
        /// </summary>
        List<CommonDevice> currentPanelSupportBindDeviceList = new List<CommonDevice>();
        /// <summary>
        /// 未分配的设备列表
        /// </summary>
        List<CommonDevice> undistruibuteDevList = new List<CommonDevice>();
        /// <summary>
        /// 当前房间中支持被绑定的设备列表
        /// </summary>
@@ -103,30 +126,48 @@
        /// PM绑定目标回调
        /// </summary>
        public Action<string> actionPMTarget = null;
        /// <summary>
        /// Ac绑定目标回调
        /// </summary>
        public Action<string> actionAcTarget = null;
        #endregion
        #region UI设计
        #region UI设计
        /// <summary>
        /// 目标页显示
        /// </summary>
        public void Show()
        {
            #region 标题栏
            TitleUI();
            //标题栏下的UI
            MidFrameLayoutContent();
            //初始化设备数据
            InitData();
        }
        /// <summary>
        /// 标题栏
        /// </summary>
        void TitleUI()
        {
            string titleText = "";
            switch (curDeviceBindType)
            {
                case 1:
                    titleText = Language.StringByID(R.MyInternationalizationString.BindFreshAirTarget);
                case DeviceBind.BindInfo.BindType.FreshAir:
                    titleText = Language.StringByID(R.MyInternationalizationString.uNewWindTarget);
                    break;
                case 2:
                case DeviceBind.BindInfo.BindType.Temperature:
                    titleText = Language.StringByID(R.MyInternationalizationString.TemperatureSource);
                    break;
                case 3:
                case DeviceBind.BindInfo.BindType.Humidity:
                    titleText = Language.StringByID(R.MyInternationalizationString.HumiditySource);
                    break;
                case 4:
                case DeviceBind.BindInfo.BindType.PM:
                    titleText = Language.StringByID(R.MyInternationalizationString.PM25Source);
                    break;
                case DeviceBind.BindInfo.BindType.AC:
                    titleText = Language.StringByID(R.MyInternationalizationString.AcTargets);
                    break;
            }
            this.TopFrameLayout(this, titleText);
@@ -138,68 +179,6 @@
            this.btnBack.MouseUpEventHandler += eHandlerBack;
            this.btnBackFrameLayout.MouseUpEventHandler += eHandlerBack;
            this.MidFrameLayout(this);
            #endregion
            //添加楼层UI
            BindDownFrameLayout();
            //标题栏下的UI
            MidFrameLayoutContent();
            //初始化设备数据
            InitData();
        }
        /// <summary>
        /// 添加楼层UI
        /// </summary>
        void BindDownFrameLayout()
        {
            var btnAddFrameLayout = new FrameLayout
            {
                X = Application.GetRealWidth(619),
            };
            this.titleFrameLayout.AddChidren(btnAddFrameLayout);
            btnFloorText = new Button
            {
                Width = Application.GetRealWidth(300 - 69 - 58),
                Text = Language.StringByID(R.MyInternationalizationString.FirstFloor),
                TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
                TextSize = 14,
                IsBold = true,
                TextAlignment = TextAlignment.CenterRight,
            };
            btnAddFrameLayout.AddChidren(btnFloorText);
            var btnBindDownFrameLayout = new FrameLayout
            {
                Width = Application.GetMinReal(69 + 58),
                X = Application.GetRealWidth(300 - 69 - 58),
            };
            btnAddFrameLayout.AddChidren(btnBindDownFrameLayout);
            var btnBindDown = new Button
            {
                Height = Application.GetMinReal(69),
                Width = Application.GetMinReal(69),
                UnSelectedImagePath = "BindPic/BindDown.png",
                Gravity = Gravity.CenterVertical,
            };
            btnBindDownFrameLayout.AddChidren(btnBindDown);
            EventHandler<MouseEventArgs> eHandlerBindDown = (sender, e) =>
            {
                SideslipFramelayout();
            };
            btnBindDown.MouseDownEventHandler += eHandlerBindDown;
            btnBindDownFrameLayout.MouseDownEventHandler += eHandlerBindDown;
            if (Common.Config.Instance.Home.FloorDics.Count == 0)
            {
                btnAddFrameLayout.Width = 0;
            }
            else
            {
                btnAddFrameLayout.Width = Application.GetRealWidth(300);
            }
        }
        /// <summary>
@@ -221,7 +200,7 @@
            btnMidTopLayout.AddChidren(btnHorizontalScrolViewLayout);
            //设备栏
            midVerticalScrolViewLayout = new VerticalFrameRefreshControl()
            midVerticalScrolViewLayout = new VerticalRefreshLayout()
            {
                Y = btnMidTopLayout.Bottom,
                Height = Application.GetRealHeight(1145),
@@ -237,14 +216,73 @@
            var bottomFrameLayout = new FrameLayout()
            {
                Width = LayoutParams.MatchParent,
                Height = Application.GetRealHeight(127),
                Y = Application.GetRealHeight(1472),
                Height = Application.GetRealHeight(84 * 2 + 127),
                Y = Application.GetRealHeight(1388),
            };
            this.midFrameLayout.AddChidren(bottomFrameLayout);
            var btnTipPicFrameLayout = new FrameLayout()
            {
                Width = Application.GetMinReal(40 + 23 + 37),
                Height = Application.GetMinReal(40 + 44 - 10),
                X = Application.GetMinReal(383 - 37),
            };
            bottomFrameLayout.AddChidren(btnTipPicFrameLayout);
            btnTipPic = new Button()
            {
                Width = Application.GetMinReal(40),
                Height = Application.GetMinReal(40),
                X = Application.GetMinReal(40),
                Y = Application.GetRealHeight(22),
                UnSelectedImagePath = "BindPic/EmptyTargets.png",
                SelectedImagePath = "BindPic/EmptyTargetsSelected.png",
            };
            btnTipPicFrameLayout.AddChidren(btnTipPic);
            btnTipText = new Button()
            {
                Height = Application.GetRealHeight(84 - 10),
                X = Application.GetMinReal(444),
                Width = Application.GetMinReal(1080 - 446),
                TextID = R.MyInternationalizationString.BindEmptyTargets,
                TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,//XMTopTitleText
                TextSize = 12,
                TextAlignment = TextAlignment.CenterLeft,
            };
            bottomFrameLayout.AddChidren(btnTipText);
            EventHandler<MouseEventArgs> eHandlerEmptyTargets = (sender, e) =>
            {
                if (!btnFinifh.Enable)
                {
                    return;
                }
                if (btnTipPic.IsSelected)
                {
                    btnTipPic.IsSelected = false;
                    foreach (var d in targetListTemp)
                    {
                        targetList.Add(d);
                    }
                    btnTipText.TextColor = Shared.Common.ZigbeeColor.Current.XMGray3;
                }
                else
                {
                    btnTipPic.IsSelected = true;
                    targetList.Clear();
                    btnTipText.TextColor = Shared.Common.ZigbeeColor.Current.XMTopTitleText;
                }
                RefreshDeviceList(tempRoom);
            };
            btnTipPicFrameLayout.MouseDownEventHandler += eHandlerEmptyTargets;
            btnTipPic.MouseDownEventHandler += eHandlerEmptyTargets;
            btnFinifh = new Button()
            {
                Width = Application.GetRealWidth(907),
                Width = Application.GetRealWidth(907),
                Height = Application.GetRealHeight(127),
                Y = Application.GetRealHeight(49 + 35),
                Gravity = Gravity.CenterHorizontal,
                Radius = (uint)Application.GetRealHeight(127) / 2,
                TextID = R.MyInternationalizationString.Save,
@@ -254,7 +292,7 @@
                TextSize = 16,
            };
            bottomFrameLayout.AddChidren(btnFinifh);
            btnFinifh.MouseUpEventHandler += async (sender, e) =>
            btnFinifh.MouseUpEventHandler += (sender, e) =>
            {
                SaveTarget();
            };
@@ -276,9 +314,16 @@
            Button curentOldRoom = null;
            FrameLayout curentOldRoomFrameLayout = null;
            int index = 0;
            var roomTempList = GetSupportRoomList();
            var roomTempList = BindInfo.GetSupportRoomList(curControlDev, supportRoomList, curDeviceBindType);
            Room slectedRoom = null;
            var roomUn = new Room();
            roomUn.Name = Language.StringByID(R.MyInternationalizationString.Undistributed);
            roomUn.Id = "UndistributedId";
            if (undistruibuteDevList.Count != 0)
            {
                roomTempList.Add(roomUn);
            }
            for (int i = 0; i < roomTempList.Count; i++)
            {
                var room = roomTempList[i];
@@ -292,7 +337,7 @@
                var btnRoomFrameLayout = new FrameLayout
                {
                    Height = Application.GetMinReal(159),
                    Width = Application.GetMinReal(255),
                    Width = Application.GetMinReal(255 + 20),
                    Y = Application.GetRealHeight(23),
                    X = Application.GetRealWidth(5),
                    BackgroundImagePath = "Item/RoomIconBackground.png",
@@ -302,8 +347,8 @@
                var btnRoom = new Button
                {
                    Height = Application.GetRealHeight(58),
                    Width = Application.GetRealWidth(127),
                    Height = Application.GetRealHeight(66),
                    Width = Application.GetRealWidth(187),
                    Y = Application.GetRealHeight(58),
                    X = Application.GetRealWidth(14),
                    Text = room.Name,
@@ -322,10 +367,10 @@
                    curentOldRoomFrameLayout = btnRoomFrameLayout;
                }
                //被绑定的目标还未分配区域,默认是第一个
                //被绑定的目标还未分配区域,默认是最后一个,未分配房间
                if (string.IsNullOrEmpty(curControlDev.currentSelectRoomId))
                {
                    if (index == 0)
                    if (index == roomTempList.Count - 1)
                    {
                        btnRoomFrameLayout.BackgroundImagePath = "Item/RoomIconBackgroundSelected.png";
                        btnRoom.TextColor = Shared.Common.ZigbeeColor.Current.XMWhite;
@@ -376,7 +421,7 @@
                    //新风面板保存使能
                    btnFinifh.Enable = true;
                    btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack;
                    tempRoom = curRoom;
                    RefreshDeviceList(curRoom);
                };
                btnRoom.MouseUpEventHandler += eHandlerRoom;
@@ -393,14 +438,20 @@
            {
                if (slectedRoom == null)
                {
                    curRoom = roomTempList[0];
                    //未选中默认最后一个“未分配选中”
                    curRoom = roomTempList[index - 1];
                    var view = btnHorizontalScrolViewLayout.GetChildren(index - 1);
                    var frame = (FrameLayout)view;
                    var btn = (Button)frame.GetChildren(0);
                    frame.BackgroundImagePath = "Item/RoomIconBackgroundSelected.png";
                    btn.TextColor = Shared.Common.ZigbeeColor.Current.XMWhite;
                }
                else
                {
                    curRoom = slectedRoom;
                }
            }
            tempRoom = curRoom;
            RefreshDeviceList(curRoom);
        }
@@ -414,7 +465,14 @@
            Button oldDevice = null;
            int curIndex = 0;
            currentRoomSupportBindDeviceList = GetCurRoomSupportDeviceList(curRoom);
            if (curRoom.Id == "UndistributedId")
            {
                currentRoomSupportBindDeviceList = BindInfo.GetUndistributeDeviceList(undistruibuteDevList, curDeviceBindType);
            }
            else
            {
                currentRoomSupportBindDeviceList = BindInfo.GetCurRoomSupportDeviceList(currentRoomSupportBindDeviceList, curRoom, curDeviceBindType);
            }
            if (currentRoomSupportBindDeviceList.Count == 0)
            {
                btnFinifh.Enable = false;
@@ -445,7 +503,6 @@
                {
                    Width = Application.GetRealWidth(790),
                    X = devicePic.Right + Application.GetRealWidth(20),
                    TextColor = Shared.Common.ZigbeeColor.Current.TextBlack,
                    TextAlignment = TextAlignment.CenterLeft,
                    TextSize = 15,
                    Text = Common.LocalDevice.Current.GetDeviceEpointName(device),
@@ -477,28 +534,38 @@
                {
                    line2.Visible = false;
                }
                if (Common.LocalDevice.Current.CheckDeviceIsOnline(device) == true)
                {
                    btnBindName.TextColor = Shared.Common.ZigbeeColor.Current.TextBlack;
                }
                else
                {
                    btnBindName.TextColor = Shared.Common.ZigbeeColor.Current.XMGray3;
                }
                switch (curDeviceBindType)
                {
                    case 1:
                    case DeviceBind.BindInfo.BindType.FreshAir:
                        devicePic.UnSelectedImagePath = "Device/FreshAirEpoint.png";
                        break;
                    case 2:
                    case DeviceBind.BindInfo.BindType.Temperature:
                        devicePic.UnSelectedImagePath = "Device/SensorTemperature.png";
                        if (device.Type == DeviceType.PMSensor)
                        {
                            btnBindName.Text = Common.LocalDevice.Current.GetDeviceEpointName(device) + "-" + Language.StringByID(R.MyInternationalizationString.TemperatureSensor);
                        }
                        break;
                    case 3:
                    case DeviceBind.BindInfo.BindType.Humidity:
                        devicePic.UnSelectedImagePath = "Device/SensorHumidity.png";
                        if (device.Type == DeviceType.PMSensor)
                        {
                            btnBindName.Text = Common.LocalDevice.Current.GetDeviceEpointName(device) + "-" + Language.StringByID(R.MyInternationalizationString.HumiditySensor);
                        }
                        break;
                    case 4:
                    case DeviceBind.BindInfo.BindType.PM:
                        devicePic.UnSelectedImagePath = "Device/AirQualitySensorEpoint.png";
                        break;
                    case DeviceBind.BindInfo.BindType.AC:
                        devicePic.UnSelectedImagePath = "Device/AirConditionerEpoint.png";
                        break;
                }
                #endregion
@@ -519,7 +586,21 @@
                EventHandler<MouseEventArgs> hander = (sender, e) =>
                {
                    btnChoose.IsSelected = !btnChoose.IsSelected;
                    if (btnChoose.IsSelected)
                    {
                        return;
                    }
                    if (btnTipPic.IsSelected)
                    {
                        btnTipPic.IsSelected = false;
                        foreach (var d in targetListTemp)
                        {
                            targetList.Add(d);
                        }
                        btnTipText.TextColor = Shared.Common.ZigbeeColor.Current.XMGray3;
                    }
                    btnChoose.IsSelected = true;
                    if (!btnChoose.IsSelected)
                    {
                        if (oldDevice != null)
@@ -545,8 +626,11 @@
                        targetList.Clear();
                        targetList.Add(device);
                    }
                    //新风面板:由于目标没有提供删除接口,所以可以取消选中能保存
                    targetListTemp.Clear();
                    foreach (var d in targetList)
                    {
                        targetListTemp.Add(d);
                    }
                    btnFinifh.Enable = true;
                    btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack;
                };
@@ -558,148 +642,6 @@
            }
        }
        /// <summary>
        /// 楼层选择的侧边栏
        /// </summary>
        void SideslipFramelayout()
        {
            var dialog = new Dialog
            {
            };
            dialog.Show();
            var flMain = new FrameLayout { BackgroundColor = 0x00000000 };
            dialog.AddChidren(flMain);
            flMain.MouseUpEventHandler += (sender11, e11) =>
            {
                dialog.Close();
            };
            var sidelipFrameLayout = new FrameLayout()
            {
                Width = Application.GetMinReal(449),
                Y = Application.GetRealHeight(161),
                X = Application.GetRealWidth(596),
                BackgroundImagePath = "DoorLock/SideslipPic.png",
            };
            flMain.AddChidren(sidelipFrameLayout);
            var btnSelectFloor = new Button()
            {
                Width = Application.GetRealWidth(200),
                Height = Application.GetRealHeight(58),
                X = Application.GetRealWidth(81),
                Y = Application.GetRealHeight(81),
                TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
                TextSize = 14,
                IsBold = true,
                TextAlignment = TextAlignment.CenterLeft,
                TextID = R.MyInternationalizationString.SelectFloor,
            };
            sidelipFrameLayout.AddChidren(btnSelectFloor);
            var sidelipVerticalScrolViewLayout = new VerticalScrolViewLayout()
            {
                Y = btnSelectFloor.Bottom + Application.GetRealHeight(45),
                Height = Application.GetRealHeight(600),
            };
            sidelipFrameLayout.AddChidren(sidelipVerticalScrolViewLayout);
            Button oldbutton = null;
            Button oldbuttonText = null;
            int count = 0;
            foreach (var floorId in dicFloorList.Keys)
            {
                var rowFrameLayout = new RowLayout()
                {
                    Height = Application.GetRealHeight(152),
                    LineColor = Shared.Common.ZigbeeColor.Current.XMRowLine,
                    X = Application.GetRealWidth(81),
                };
                sidelipVerticalScrolViewLayout.AddChidren(rowFrameLayout);
                var btnAllMethod = new Button()
                {
                    Width = Application.GetMinReal(81),
                    Height = Application.GetMinReal(81),
                    UnSelectedImagePath = "Floor/Floor.png",
                    SelectedImagePath = "Floor/FloorSelected.png",
                    Gravity = Gravity.CenterVertical,
                };
                rowFrameLayout.AddChidren(btnAllMethod);
                var btnMethodText = new Button()
                {
                    Width = Application.GetRealWidth(311),
                    Height = Application.GetRealHeight(58),
                    X = Application.GetRealWidth(92),
                    Gravity = Gravity.CenterVertical,
                    TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
                    TextSize = 14,
                    TextAlignment = TextAlignment.CenterLeft,
                    Text = dicFloorList[floorId],
                };
                rowFrameLayout.AddChidren(btnMethodText);
                if (curControlDev.currentSelectFloorId == floorId)
                {
                    btnAllMethod.IsSelected = true;
                    btnAllMethod.IsBold = true;
                    btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
                }
                string curFloorId = floorId;
                EventHandler<MouseEventArgs> hander = (sender, e) =>
                {
                    if (curControlDev.currentSelectFloorId == curFloorId)
                    {
                        return;
                    }
                    curControlDev.currentSelectFloorId = curFloorId;
                    btnFloorText.Text = dicFloorList[floorId];
                    //获取楼层中房间列表
                    supportRoomList = GetFloorRoomList();
                    if (!btnMethodText.IsSelected)
                    {
                        if (oldbutton != null)
                        {
                            oldbutton.IsSelected = false;
                        }
                        if (oldbuttonText != null)
                        {
                            oldbuttonText.TextColor = Shared.Common.ZigbeeColor.Current.XMGray3;
                        }
                        oldbutton = btnMethodText;
                        oldbuttonText = btnMethodText;
                        btnMethodText.IsSelected = true;
                        oldbuttonText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
                        oldbuttonText.IsBold = true;
                    }
                    int index = 0;
                    RefreshRoomList();
                    dialog.Close();
                };
                btnAllMethod.MouseUpEventHandler += hander;
                rowFrameLayout.MouseUpEventHandler += hander;
                btnMethodText.MouseUpEventHandler += hander;
                count++;
            }
            if (count == 0)
            {
                sidelipFrameLayout.Height = 0;
            }
            else if (count <= 4 && count > 0)
            {
                sidelipFrameLayout.Height = Application.GetRealHeight(180) + count * Application.GetRealHeight(150);
            }
            else
            {
                sidelipFrameLayout.Height = Application.GetMinReal(780);
            }
        }
        #endregion
        #region 数据处理
@@ -722,10 +664,12 @@
                    //获取楼层
                    dicFloorList = HdlRoomLogic.Current.GetFloorSortList();
                    //获取楼层中房间列表
                    supportRoomList = GetFloorRoomList();
                    supportRoomList = BindInfo.GetFloorRoomList();
                    //获取所有房间中匹配的能绑的目标
                    currentPanelSupportBindDeviceList = GetAllRoomSupportDeviceList();
                    currentPanelSupportBindDeviceList = BindInfo.GetAllRoomSupportDeviceList(currentPanelSupportBindDeviceList, supportRoomList, curDeviceBindType);
                    //获取本地未分配的支持当前类型的绑定设备列表
                    undistruibuteDevList = BindInfo.GetUndistributeDeviceList(undistruibuteDevList, curDeviceBindType);
                    //获取面板中存在的绑定目标
                    var panelBindListRes = HdlDeviceBindLogic.Current.GetDeviceBindAsync(curControlDev);
@@ -749,87 +693,36 @@
                    targetList.Clear();
                    //选中目标列表 targetList
                    if (currentPanelSupportBindDeviceList.Count != 0 && curControlDev.bindList.Count != 0)
                    if (curControlDev.bindList.Count != 0)
                    {
                        foreach (var bindDev in curControlDev.bindList)
                        {
                            var mainKey = bindDev.BindMacAddr + bindDev.BindEpoint;
                            var dev = currentPanelSupportBindDeviceList.Find(obj => (obj != null) && (obj.DeviceAddr + obj.DeviceEpoint == mainKey));
                            if (dev != null)
                            //分配的目标列表
                            if (currentPanelSupportBindDeviceList.Count != 0)
                            {
                                var device = LocalDevice.Current.GetDevice(dev.DeviceAddr, dev.DeviceEpoint);
                                if (device != null)
                                var dev = currentPanelSupportBindDeviceList.Find(obj => (obj != null) && (obj.DeviceAddr + obj.DeviceEpoint == mainKey));
                                if (dev != null)
                                {
                                    switch (curDeviceBindType)
                                    var device = LocalDevice.Current.GetDevice(dev.DeviceAddr, dev.DeviceEpoint);
                                    if (device != null)
                                    {
                                        case 1:
                                            //获取设备类型的
                                            var deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(new List<CommonDevice>() { device });
                                            //新风面板的新风设备,则不显示
                                            if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.ButtonPanel_FangyueFreshAir)
                                            {
                                                continue;
                                            }
                                            if (device.Type == DeviceType.FreshAir)
                                            {
                                                targetList.Add(device);
                                                oldTargetList.Add(device);
                                            }
                                            break;
                                        case 2:
                                            if (device.Type == DeviceType.TemperatureSensor)
                                            {
                                                var bDev = device as TemperatureSensor;
                                                if (bDev.SensorDiv == 1)
                                                {
                                                    targetList.Add(device);
                                                    oldTargetList.Add(device);
                                                }
                                            }
                                            if (device.Type == DeviceType.PMSensor)
                                            {
                                                if (bindDev.BindCluster == 1026)
                                                {
                                                    targetList.Add(device);
                                                    oldTargetList.Add(device);
                                                }
                                            }
                                            break;
                                        case 3:
                                            if (device.Type == DeviceType.TemperatureSensor)
                                            {
                                                var bDev = device as TemperatureSensor;
                                                if (bDev.SensorDiv == 2)
                                                {
                                                    targetList.Add(device);
                                                    oldTargetList.Add(device);
                                                }
                                            }
                                            if (device.Type == DeviceType.FreshAirHumiditySensor)
                                            {
                                                targetList.Add(device);
                                                oldTargetList.Add(device);
                                            }
                                            if (device.Type == DeviceType.PMSensor)
                                            {
                                                if (bindDev.BindCluster == 1029)
                                                {
                                                    targetList.Add(device);
                                                    oldTargetList.Add(device);
                                                }
                                            }
                                            break;
                                        case 4:
                                            //PM2.5
                                            if (device.Type == DeviceType.PMSensor)
                                            {
                                                if (bindDev.BindCluster == 1066)
                                                {
                                                    targetList.Add(device);
                                                    oldTargetList.Add(device);
                                                }
                                            }
                                            break;
                                        BindTypeTargetsList(device, bindDev);
                                    }
                                }
                            }
                            //未分配的目标列表
                            if (undistruibuteDevList.Count != 0)
                            {
                                var dev = undistruibuteDevList.Find(obj => (obj != null) && (obj.DeviceAddr + obj.DeviceEpoint == mainKey));
                                if (dev != null)
                                {
                                    var device = LocalDevice.Current.GetDevice(dev.DeviceAddr, dev.DeviceEpoint);
                                    if (device != null)
                                    {
                                        BindTypeTargetsList(device, bindDev);
                                    }
                                }
@@ -845,6 +738,16 @@
                {
                    Application.RunOnMainThread(() =>
                    {
                        BindDownFrameLayout(this.midFrameLayout, curControlDev, dicFloorList, ref btnFloorText);
                        ChooseFloorAction += (floorId, btnMethodText) =>
                        {
                            btnFloorText.Text = dicFloorList[floorId];
                            //获取楼层中房间列表
                            supportRoomList = BindInfo.GetFloorRoomList();
                            //获取本地未分配的支持当前类型的绑定设备列表
                            undistruibuteDevList = BindInfo.GetUndistributeDeviceList(undistruibuteDevList, curDeviceBindType);
                            RefreshRoomList();
                        };
                        //首次是否能点击保存
                        if (targetList.Count == 0)
@@ -865,7 +768,7 @@
                        {
                            foreach (var dev in targetList)
                            {
                                //获取本地设备列表
                                //获取本地设备列表
                                var localDeviceList = Shared.Common.LocalDevice.Current.listAllDevice;
                                var tempDev = localDeviceList.Find(obj => obj.DeviceAddr == dev.DeviceAddr && obj.DeviceEpoint == dev.DeviceEpoint);
                                if (tempDev != null)
@@ -876,6 +779,10 @@
                                    {
                                        curControlDev.currentSelectRoomId = tempDevRoom.Id;
                                        curControlDev.currentSelectFloorId = tempDevRoom.FloorId;
                                    }
                                    else
                                    {
                                        curControlDev.currentSelectRoomId = "UndistributedId";
                                    }
                                }
                            }
@@ -934,23 +841,36 @@
                                removeDevice.BindType = 0;
                                switch (curDeviceBindType)
                                {
                                    case 1:
                                    case BindInfo.BindType.FreshAir:
                                        removeDevice.BindCluster = 514;
                                        break;
                                    case 2:
                                    case BindInfo.BindType.Temperature:
                                        removeDevice.BindCluster = 1026;
                                        break;
                                    case 3:
                                    case BindInfo.BindType.Humidity:
                                        removeDevice.BindCluster = 1029;
                                        break;
                                    case 4:
                                        //PM2.5
                                    case BindInfo.BindType.PM:
                                        removeDevice.BindCluster = 1066;
                                        break;
                                    case BindInfo.BindType.AC:
                                        removeDevice.BindCluster = 513;//Ac需要绑定2个簇513和514
                                        break;
                                }
                                removeDevice.BindMacAddr = bd.DeviceAddr;
                                removeDevice.BindEpoint = bd.DeviceEpoint;
                                delDevice.RemoveBindList.Add(removeDevice);
                                if (curDeviceBindType == BindInfo.BindType.AC)
                                {
                                    //要移除空调:需要移除513,514
                                    var removeDevice3 = new RemoveBindListObj();
                                    removeDevice3.BindCluster = 514;
                                    removeDevice3.BindType = 0;
                                    removeDevice3.BindMacAddr = bd.DeviceAddr;
                                    removeDevice3.BindEpoint = bd.DeviceEpoint;
                                    delDevice.RemoveBindList.Add(removeDevice3);
                                }
                                var delResult = new DelDeviceBindResponseAllData();
                                delResult = HdlDeviceBindLogic.Current.DelDeviceBindAsync(delDevice);
@@ -973,35 +893,9 @@
                                        {
                                            foreach (var d in delResult.delDeviceBindResponseData.RemoveBindList)
                                            {
                                                if (d.Result == 1)
                                                if (d.Result == 0 || d.Result == 1)
                                                {
                                                    switch (curDeviceBindType)
                                                    {
                                                        case 1:
                                                            if (actionFreshAirTarget != null)
                                                            {
                                                                actionFreshAirTarget("");
                                                            }
                                                            break;
                                                        case 2:
                                                            if (actionTemperatureTarget != null)
                                                            {
                                                                actionTemperatureTarget("");
                                                            }
                                                            break;
                                                        case 3:
                                                            if (actionHumidityTarget != null)
                                                            {
                                                                actionHumidityTarget("");
                                                            }
                                                            break;
                                                        case 4:
                                                            if (actionPMTarget != null)
                                                            {
                                                                actionPMTarget("");
                                                            }
                                                            break;
                                                    }
                                                    EmptyTargesMess();
                                                    Application.RunOnMainThread(() =>
                                                    {
                                                        CommonPage.Loading.Hide();
@@ -1028,33 +922,7 @@
                                    {
                                        if (delResult.removeBindResultResponseData.Result == 0)
                                        {
                                            switch (curDeviceBindType)
                                            {
                                                case 1:
                                                    if (actionFreshAirTarget != null)
                                                    {
                                                        actionFreshAirTarget("");
                                                    }
                                                    break;
                                                case 2:
                                                    if (actionTemperatureTarget != null)
                                                    {
                                                        actionTemperatureTarget("");
                                                    }
                                                    break;
                                                case 3:
                                                    if (actionHumidityTarget != null)
                                                    {
                                                        actionHumidityTarget("");
                                                    }
                                                    break;
                                                case 4:
                                                    if (actionPMTarget != null)
                                                    {
                                                        actionPMTarget("");
                                                    }
                                                    break;
                                            }
                                            EmptyTargesMess();
                                            Application.RunOnMainThread(() =>
                                            {
                                                CommonPage.Loading.Hide();
@@ -1081,19 +949,33 @@
                        }
                        else
                        {
                            //没有目标提示
                            Application.RunOnMainThread(() =>
                            if (btnTipPic.IsSelected)
                            {
                                var myTip = new Tip();
                                myTip.Direction = AMPopTipDirection.None;
                                myTip.CloseTime = 2;
                                myTip.Text = Language.StringByID(R.MyInternationalizationString.BindDeviceTargetIsEmpty);
                                myTip.Show(Common.CommonPage.Instance);
                                btnFinifh.Enable = true;
                                btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack;
                                CommonPage.Loading.Hide();
                            });
                            return;
                                EmptyTargesMess();
                                Application.RunOnMainThread(() =>
                                {
                                    CommonPage.Loading.Hide();
                                    btnFinifh.Enable = true;
                                    btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack;
                                    this.RemoveFromParent();
                                });
                            }
                            else
                            {
                                //没有目标提示
                                Application.RunOnMainThread(() =>
                                {
                                    var myTip = new Tip();
                                    myTip.Direction = AMPopTipDirection.None;
                                    myTip.CloseTime = 2;
                                    myTip.Text = Language.StringByID(R.MyInternationalizationString.BindDeviceTargetIsEmpty);
                                    myTip.Show(Common.CommonPage.Instance);
                                    btnFinifh.Enable = true;
                                    btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack;
                                    CommonPage.Loading.Hide();
                                });
                                return;
                            }
                        }
                    }
                    catch (Exception ex)
@@ -1111,7 +993,7 @@
            {
                //选中目标
                //1、已经绑定过的目标
                if (checkExistDevice())
                if (BindInfo.checkExistDevice(targetList, oldTargetList))
                {
                    Application.RunOnMainThread(() =>
                    {
@@ -1160,7 +1042,7 @@
                                        {
                                            foreach (var d in delResult.delDeviceBindResponseData.RemoveBindList)
                                            {
                                                if (d.Result != 1)
                                                if (d.Result != 0 && d.Result != 1)
                                                {
                                                    Application.RunOnMainThread(() =>
                                                    {
@@ -1220,7 +1102,7 @@
                                        {
                                            foreach (var d in delResult.delDeviceBindResponseData.RemoveBindList)
                                            {
                                                if (d.Result != 1)
                                                if (d.Result != 0 && d.Result != 1)
                                                {
                                                    Application.RunOnMainThread(() =>
                                                    {
@@ -1262,18 +1144,20 @@
                            var addBindInfo = new AddBindListObj();
                            switch (curDeviceBindType)
                            {
                                case 1:
                                case BindInfo.BindType.FreshAir:
                                    addBindInfo.BindCluster = 514;
                                    break;
                                case 2:
                                case BindInfo.BindType.Temperature:
                                    addBindInfo.BindCluster = 1026;
                                    break;
                                case 3:
                                case BindInfo.BindType.Humidity:
                                    addBindInfo.BindCluster = 1029;
                                    break;
                                case 4:
                                    //PM2.5
                                case BindInfo.BindType.PM:
                                    addBindInfo.BindCluster = 1066;
                                    break;
                                case BindInfo.BindType.AC:
                                    addBindInfo.BindCluster = 513;
                                    break;
                            }
                            addBindInfo.BindType = 0;
@@ -1282,17 +1166,31 @@
                            addBindeDev.BindName = Common.LocalDevice.Current.GetDeviceEpointName(de);
                            switch (curDeviceBindType)
                            {
                                case 2:
                                case BindInfo.BindType.Temperature:
                                    if (de.Type == DeviceType.PMSensor)
                                    {
                                        addBindeDev.BindName = Common.LocalDevice.Current.GetDeviceEpointName(de) + "-" + Language.StringByID(R.MyInternationalizationString.TemperatureSensor);
                                    }
                                    break;
                                case 3:
                                case BindInfo.BindType.Humidity:
                                    if (de.Type == DeviceType.PMSensor)
                                    {
                                        addBindeDev.BindName = Common.LocalDevice.Current.GetDeviceEpointName(de) + "-" + Language.StringByID(R.MyInternationalizationString.HumiditySensor);
                                    }
                                    break;
                            }
                            //部分目标需要二次绑定第二种功能
                            var addBindInfo2 = new AddBindListObj();
                            addBindInfo2.BindType = 0;
                            addBindInfo2.BindMacAddr = de.DeviceAddr;
                            addBindInfo2.BindEpoint = de.DeviceEpoint;
                            switch (curDeviceBindType)
                            {
                                case BindInfo.BindType.AC:
                                    //要绑定空调:需要绑定513,514
                                    addBindInfo2.BindCluster = 514;
                                    addBindeDev.BindList.Add(addBindInfo2);
                                    break;
                            }
                            addBindeDev.BindList.Add(addBindInfo);
@@ -1316,30 +1214,37 @@
                            if (dev.addedDeviceBindResponseData.Result == 0)
                            {
                                targetList.Clear();
                                targetListTemp.Clear();
                                switch (curDeviceBindType)
                                {
                                    case 1:
                                    case BindInfo.BindType.FreshAir:
                                        if (actionFreshAirTarget != null)
                                        {
                                            actionFreshAirTarget(addBindeDev.BindName);
                                        }
                                        break;
                                    case 2:
                                    case BindInfo.BindType.Temperature:
                                        if (actionTemperatureTarget != null)
                                        {
                                            actionTemperatureTarget(addBindeDev.BindName);
                                        }
                                        break;
                                    case 3:
                                    case BindInfo.BindType.Humidity:
                                        if (actionHumidityTarget != null)
                                        {
                                            actionHumidityTarget(addBindeDev.BindName);
                                        }
                                        break;
                                    case 4:
                                    case BindInfo.BindType.PM:
                                        if (actionPMTarget != null)
                                        {
                                            actionPMTarget(addBindeDev.BindName);
                                        }
                                        break;
                                    case BindInfo.BindType.AC:
                                        if (actionAcTarget != null)
                                        {
                                            actionAcTarget(addBindeDev.BindName);
                                        }
                                        break;
                                }
@@ -1356,6 +1261,8 @@
                            {
                                Application.RunOnMainThread(() =>
                                {
                                    btnFinifh.Enable = true;
                                    btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack;
                                    CommonPage.Loading.Hide();
                                    new Tip()
                                    {
@@ -1365,8 +1272,7 @@
                                        CloseTime = 1
                                    }.Show(CommonPage.Instance);
                                });
                                btnFinifh.Enable = true;
                                btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack;
                                return;
                            }
                            else
@@ -1402,6 +1308,139 @@
        }
        /// <summary>
        /// 目标为空时的文本显示
        /// </summary>
        void EmptyTargesMess()
        {
            switch (curDeviceBindType)
            {
                case BindInfo.BindType.FreshAir:
                    if (actionFreshAirTarget != null)
                    {
                        actionFreshAirTarget("");
                    }
                    break;
                case BindInfo.BindType.Temperature:
                    if (actionTemperatureTarget != null)
                    {
                        actionTemperatureTarget("");
                    }
                    break;
                case BindInfo.BindType.Humidity:
                    if (actionHumidityTarget != null)
                    {
                        actionHumidityTarget("");
                    }
                    break;
                case BindInfo.BindType.PM:
                    if (actionPMTarget != null)
                    {
                        actionPMTarget("");
                    }
                    break;
                case BindInfo.BindType.AC:
                    if (actionAcTarget != null)
                    {
                        actionAcTarget("");
                    }
                    break;
            }
        }
        /// <summary>
        /// 绑定目标列表
        /// </summary>
        /// <param name="device"></param>
        /// <param name="bindDev"></param>
        void BindTypeTargetsList(CommonDevice device, BindListResponseObj bindDev)
        {
            switch (curDeviceBindType)
            {
                case BindInfo.BindType.FreshAir:
                    //获取设备类型的
                    var deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(new List<CommonDevice>() { device });
                    //新风面板的新风设备,则不显示
                    if (deviceEnumInfo.ConcreteType != Common.DeviceConcreteType.ButtonPanel_FangyueFreshAir)
                    {
                        if (device.Type == DeviceType.FreshAir)
                        {
                            targetList.Add(device);
                            oldTargetList.Add(device);
                        }
                    }
                    break;
                case BindInfo.BindType.Temperature:
                    if (device.Type == DeviceType.TemperatureSensor)
                    {
                        var bDev = device as TemperatureSensor;
                        if (bDev.SensorDiv == 1)
                        {
                            targetList.Add(device);
                            oldTargetList.Add(device);
                        }
                    }
                    if (device.Type == DeviceType.PMSensor)
                    {
                        if (bindDev.BindCluster == 1026)
                        {
                            targetList.Add(device);
                            oldTargetList.Add(device);
                        }
                    }
                    break;
                case BindInfo.BindType.Humidity:
                    if (device.Type == DeviceType.TemperatureSensor)
                    {
                        var bDev = device as TemperatureSensor;
                        if (bDev.SensorDiv == 2)
                        {
                            targetList.Add(device);
                            oldTargetList.Add(device);
                        }
                    }
                    if (device.Type == DeviceType.FreshAirHumiditySensor)
                    {
                        targetList.Add(device);
                        oldTargetList.Add(device);
                    }
                    if (device.Type == DeviceType.PMSensor)
                    {
                        if (bindDev.BindCluster == 1029)
                        {
                            targetList.Add(device);
                            oldTargetList.Add(device);
                        }
                    }
                    break;
                case BindInfo.BindType.PM:
                    if (device.Type == DeviceType.PMSensor)
                    {
                        if (bindDev.BindCluster == 1066)
                        {
                            targetList.Add(device);
                            oldTargetList.Add(device);
                        }
                    }
                    break;
                case BindInfo.BindType.AC:
                    if (device.Type == DeviceType.Thermostat)
                    {
                        if (bindDev.BindCluster == 513)
                        {
                            targetList.Add(device);
                            oldTargetList.Add(device);
                        }
                    }
                    break;
            }
            targetListTemp.Clear();
            foreach (var d in targetList)
            {
                targetListTemp.Add(d);
            }
        }
        /// <summary>
        /// 当前被绑定设备所属楼层和房间
        /// </summary>
        /// <param name="bindDev"></param>
@@ -1411,7 +1450,7 @@
            {
                return;
            }
            //获取本地设备列表
            //获取本地设备列表
            var localDeviceList = Shared.Common.LocalDevice.Current.listAllDevice;
            var tempDev = localDeviceList.Find(obj => obj.DeviceAddr == bindDev.DeviceAddr && obj.DeviceEpoint == bindDev.DeviceEpoint);
            if (tempDev != null)
@@ -1424,29 +1463,6 @@
                    curControlDev.currentSelectFloorId = tempDevRoom.FloorId;
                }
            }
        }
        /// <summary>
        /// 检测目标是否被绑定过
        /// </summary>
        /// <returns></returns>
        private bool checkExistDevice()
        {
            bool exist = false;
            foreach (var oldDev in oldTargetList)
            {
                var key = oldDev.DeviceAddr + oldDev.DeviceEpoint;
                var result = targetList.Find(obj => (obj != null) && (obj.DeviceAddr + obj.DeviceEpoint == key));
                if (result != null)
                {
                    exist = true;
                }
                else
                {
                    exist = false;
                }
            }
            return exist;
        }
        /// <summary>
@@ -1463,412 +1479,26 @@
            removeDevice.BindType = 0;
            switch (curDeviceBindType)
            {
                case 1:
                case BindInfo.BindType.FreshAir:
                    removeDevice.BindCluster = 514;
                    break;
                case 2:
                case BindInfo.BindType.Temperature:
                    removeDevice.BindCluster = 1026;
                    break;
                case 3:
                case BindInfo.BindType.Humidity:
                    removeDevice.BindCluster = 1029;
                    break;
                case 4:
                    //PM2.5
                case BindInfo.BindType.PM:
                    removeDevice.BindCluster = 1066;
                    break;
                case BindInfo.BindType.AC:
                    removeDevice.BindCluster = 513;
                    break;
            }
            removeDevice.BindMacAddr = bd.DeviceAddr;
            removeDevice.BindEpoint = bd.DeviceEpoint;
            delDevice.RemoveBindList.Add(removeDevice);
            return delDevice;
        }
        /// <summary>
        /// 能显示的房间列表
        /// </summary>
        private List<Room> GetSupportRoomList()
        {
            var roomTempList = new List<Room>();
            for (int i = 0; i < supportRoomList.Count; i++)
            {
                var room = supportRoomList[i];
                //如果房间为喜爱[后来改名为常用房间],则不显示
                if (room.IsLove == true)
                {
                    continue;
                }
                //如果房间中没有设备,则不显示
                if (room.ListDevice.Count == 0)
                {
                    continue;
                }
                else
                {
                    List<CommonDevice> roomIncludeMatchDevice = new List<CommonDevice>();
                    //房间中没有对应的支持绑定的目标
                    switch (curDeviceBindType)
                    {
                        case 1:
                            foreach (var de in room.ListDevice)
                            {
                                var device = LocalDevice.Current.GetDevice(de);
                                if (device != null)
                                {
                                    //获取设备类型的
                                    var deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(new List<CommonDevice>() { device });
                                    //新风面板的新风设备,则不显示
                                    if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.ButtonPanel_FangyueFreshAir)
                                    {
                                        continue;
                                    }
                                    if (device.Type == DeviceType.FreshAir)
                                    {
                                        roomIncludeMatchDevice.Add(device);
                                    }
                                }
                            }
                            break;
                        case 2:
                            roomIncludeMatchDevice = GetMatchTemperatureSensorDevice(room);
                            break;
                        case 3:
                            roomIncludeMatchDevice = GetMatchHumiditySensorDevice(room);
                            foreach (var de in room.ListDevice)
                            {
                                var device = LocalDevice.Current.GetDevice(de);
                                if (device != null)
                                {
                                    if (device.Type == DeviceType.FreshAirHumiditySensor)
                                    {
                                        roomIncludeMatchDevice.Add(device);
                                    }
                                }
                            }
                            break;
                        case 4:
                            foreach (var de in room.ListDevice)
                            {
                                var device = LocalDevice.Current.GetDevice(de);
                                if (device != null)
                                {
                                    if (device.Type == DeviceType.PMSensor)
                                    {
                                        roomIncludeMatchDevice.Add(device);
                                    }
                                }
                            }
                            break;
                    }
                    if (roomIncludeMatchDevice.Count == 0)
                    {
                        continue;
                    }
                    if (!string.IsNullOrEmpty(room.FloorId))
                    {
                        //有楼层
                        if (room.FloorId == curControlDev.currentSelectFloorId)
                        {
                            roomTempList.Add(room);
                        }
                    }
                    else
                    {
                        //没有楼层
                        roomTempList.Add(room);
                    }
                }
            }
            return roomTempList;
        }
        /// <summary>
        /// 匹配温度传感器
        /// </summary>
        /// <param name="room"></param>
        List<CommonDevice> GetMatchTemperatureSensorDevice(Room room)
        {
            List<CommonDevice> roomIncludeMatchTempDevice = new List<CommonDevice>();
            foreach (var de in room.ListDevice)
            {
                var device = LocalDevice.Current.GetDevice(de);
                if (device != null)
                {
                    //电池设备不支持绑定
                    if (device.ZigbeeType != 1)
                    {
                        continue;
                    }
                    if (device.Type == DeviceType.TemperatureSensor)
                    {
                        var dev = device as TemperatureSensor;
                        if (dev.SensorDiv == 1)
                        {
                            roomIncludeMatchTempDevice.Add(device);
                        }
                    }
                    else if (device.Type == DeviceType.PMSensor)
                    {
                        var dev = device as PMSensor;
                        foreach (var clu in dev.InClusterList)
                        {
                            if (clu.InCluster == 1026)
                            {
                                roomIncludeMatchTempDevice.Add(device);
                            }
                        }
                    }
                }
            }
            return roomIncludeMatchTempDevice;
        }
        /// <summary>
        /// 匹配湿度传感器
        /// </summary>
        /// <param name="room"></param>
        List<CommonDevice> GetMatchHumiditySensorDevice(Room room)
        {
            List<CommonDevice> roomIncludeMatchHumpDevice = new List<CommonDevice>();
            foreach (var de in room.ListDevice)
            {
                var device = LocalDevice.Current.GetDevice(de);
                if (device != null)
                {
                    //电池设备不支持绑定
                    if (device.ZigbeeType != 1)
                    {
                        continue;
                    }
                    if (device.Type == DeviceType.TemperatureSensor)
                    {
                        var dev = device as TemperatureSensor;
                        if (dev.SensorDiv == 2)
                        {
                            roomIncludeMatchHumpDevice.Add(device);
                        }
                    }
                    else if (device.Type == DeviceType.PMSensor)
                    {
                        var dev = device as PMSensor;
                        foreach (var clu in dev.InClusterList)
                        {
                            if (clu.InCluster == 1029)
                            {
                                roomIncludeMatchHumpDevice.Add(device);
                            }
                        }
                    }
                }
            }
            return roomIncludeMatchHumpDevice;
        }
        /// <summary>
        /// 获取楼层对应的房间列表
        /// </summary>
        /// <returns></returns>
        private List<Room> GetFloorRoomList()
        {
            supportRoomList.Clear();
            var supportRoomListTemp = new List<Room>();
            var listAllRoom = HdlRoomLogic.Current.GetAllListRooms();
            if (Common.Config.Instance.Home.FloorDics.Count == 0)
            {
                // 获取没有楼层房间
                foreach (var room in listAllRoom)
                {
                    if (string.IsNullOrEmpty(room.FloorId))
                    {
                        if (room.IsLove)
                        {
                            continue;
                        }
                        supportRoomListTemp.Add(room);
                    }
                }
            }
            else
            {
                // 获取支持的房间
                foreach (var room in listAllRoom)
                {
                    if (room.IsLove)
                    {
                        continue;
                    }
                    supportRoomListTemp.Add(room);
                }
            }
            return supportRoomListTemp;
        }
        /// <summary>
        /// 所有房间中匹配的支持绑定的所有目标列表
        /// </summary>
        /// <returns></returns>
        List<CommonDevice> GetAllRoomSupportDeviceList()
        {
            currentPanelSupportBindDeviceList.Clear();
            List<CommonDevice> currentPanelBindSupportDeviceListTemp = new List<CommonDevice>();
            switch (curDeviceBindType)
            {
                case 1:
                    foreach (var r in supportRoomList)
                    {
                        if (r.ListDevice.Count == 0)
                        {
                            continue;
                        }
                        foreach (var deviceKeys in r.ListDevice)
                        {
                            var device = LocalDevice.Current.GetDevice(deviceKeys);
                            if (device != null)
                            {
                                //获取设备类型的
                                var deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(new List<CommonDevice>() { device });
                                //新风面板的新风设备,则不显示
                                if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.ButtonPanel_FangyueFreshAir)
                                {
                                    continue;
                                }
                                if (device.Type == DeviceType.FreshAir)
                                {
                                    currentPanelBindSupportDeviceListTemp.Add(device);
                                }
                            }
                        }
                    }
                    break;
                case 2:
                    foreach (var r in supportRoomList)
                    {
                        if (r.ListDevice.Count == 0)
                        {
                            continue;
                        }
                        var deviceListTemp = GetMatchTemperatureSensorDevice(r);
                        foreach (var dev in deviceListTemp)
                        {
                            currentPanelBindSupportDeviceListTemp.Add(dev);
                        }
                    }
                    break;
                case 3:
                    foreach (var r in supportRoomList)
                    {
                        if (r.ListDevice.Count == 0)
                        {
                            continue;
                        }
                        var deviceListTemp = GetMatchHumiditySensorDevice(r);
                        foreach (var dev in deviceListTemp)
                        {
                            currentPanelBindSupportDeviceListTemp.Add(dev);
                        }
                        foreach (var deviceKeys in r.ListDevice)
                        {
                            var device = LocalDevice.Current.GetDevice(deviceKeys);
                            if (device != null)
                            {
                                if (device.Type == DeviceType.FreshAirHumiditySensor)
                                {
                                    currentPanelBindSupportDeviceListTemp.Add(device);
                                }
                            }
                        }
                    }
                    break;
                case 4:
                    foreach (var r in supportRoomList)
                    {
                        if (r.ListDevice.Count == 0)
                        {
                            continue;
                        }
                        foreach (var deviceKeys in r.ListDevice)
                        {
                            var device = LocalDevice.Current.GetDevice(deviceKeys);
                            if (device != null)
                            {
                                if (device.Type == DeviceType.PMSensor)
                                {
                                    currentPanelBindSupportDeviceListTemp.Add(device);
                                }
                            }
                        }
                    }
                    break;
            }
            return currentPanelBindSupportDeviceListTemp;
        }
        /// <summary>
        /// 获取当前房间中匹配的支持绑定的设备列表
        /// </summary>
        /// <returns></returns>
        List<CommonDevice> GetCurRoomSupportDeviceList(Room curRoom)
        {
            currentRoomSupportBindDeviceList.Clear();
            List<CommonDevice> curRoomDeviceListTemp = new List<CommonDevice>();
            switch (curDeviceBindType)
            {
                case 1:
                    foreach (var deviceKeys in curRoom.ListDevice)
                    {
                        var device = LocalDevice.Current.GetDevice(deviceKeys);
                        if (device != null)
                        {
                            //获取设备类型的
                            var deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(new List<CommonDevice>() { device });
                            //新风面板的新风设备,则不显示
                            if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.ButtonPanel_FangyueFreshAir)
                            {
                                continue;
                            }
                            if (device.Type == DeviceType.FreshAir)
                            {
                                curRoomDeviceListTemp.Add(device);
                            }
                        }
                    }
                    break;
                case 2:
                    curRoomDeviceListTemp = GetMatchTemperatureSensorDevice(curRoom);
                    break;
                case 3:
                    curRoomDeviceListTemp = GetMatchHumiditySensorDevice(curRoom);
                    foreach (var deviceKeys in curRoom.ListDevice)
                    {
                        var device = LocalDevice.Current.GetDevice(deviceKeys);
                        if (device != null)
                        {
                            if (device.Type == DeviceType.FreshAirHumiditySensor)
                            {
                                curRoomDeviceListTemp.Add(device);
                            }
                        }
                    }
                    break;
                case 4:
                    foreach (var deviceKeys in curRoom.ListDevice)
                    {
                        var device = LocalDevice.Current.GetDevice(deviceKeys);
                        if (device != null)
                        {
                            if (device.Type == DeviceType.PMSensor)
                            {
                                curRoomDeviceListTemp.Add(device);
                            }
                        }
                    }
                    break;
            }
            return curRoomDeviceListTemp;
        }
        #endregion
@@ -1882,9 +1512,9 @@
            actionTemperatureTarget = null;
            actionHumidityTarget = null;
            actionPMTarget = null;
            FloorAction = null;
            base.RemoveFromParent();
        }
        #endregion
    }
}