HDL Home App 第二版本 旧平台金堂用 正在使用
黄学彪
2020-03-06 a5b3c4bae726ef6770d4bfcbf2f4b50a37ed4a15
ZigbeeApp/Shared/Phone/Device/Category/Category.cs
@@ -107,7 +107,7 @@
        /// <summary>
        /// 相同类型的设备列表
        /// </summary>
        private Dictionary<int, List<DeviceUI>> typeDeviceDic;
        private Dictionary<int, List<CommonDevice>> typeDeviceDic;
        /// <summary>
        /// 设备类型的图id
        /// </summary>
@@ -115,7 +115,7 @@
        /// <summary>
        /// dList
        /// </summary>
        private List<DeviceUI> devList;
        private List<CommonDevice> devList;
        /// <summary>
        /// sceneList
        /// </summary>
@@ -173,33 +173,33 @@
                        for (int i = 0; deviceListScrolView != null && i < deviceListScrolView.ChildrenCount; i++)
                        {
                            var rowLayout = deviceListScrolView.GetChildren(i) as RowLayout;
                            var deviceUI = rowLayout.Tag as DeviceUI;
                            if (deviceUI == null || deviceUI.CommonDevice == null)
                            var deviceUI = LocalDevice.Current.GetDevice(rowLayout.Tag.ToString());
                            if (deviceUI == null)
                            {
                                continue;
                            }
                            if (deviceUI.CommonDevice.DeviceAddr != common.DeviceAddr || deviceUI.CommonDevice.DeviceEpoint != common.DeviceEpoint)
                            if (deviceUI.DeviceAddr != common.DeviceAddr || deviceUI.DeviceEpoint != common.DeviceEpoint)
                            {
                                continue;
                            }
                            switch (deviceUI.CommonDevice.Type)
                            switch (deviceUI.Type)
                            {
                                case DeviceType.OnOffOutput:
                                    //开关功能
                                    if (common.DeviceStatusReport.CluterID == 6)
                                    {
                                        var light = deviceUI.CommonDevice as ToggleLight;
                                        var light = deviceUI as ToggleLight;
                                        light.DeviceStatusReport = common.DeviceStatusReport;
                                        light.OnOffStatus = light.DeviceStatusReport.AttriBute[0].AttriButeData;
                                        var row = rowLayout.GetChildren(0) as CategoryFunctionRow;
                                        row.IsSelected = light.OnOffStatus == 1;
                                        row.SetStatuText(deviceUI.GetDeviceStatu());
                                        row.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI));
                                        light.LastDateTime = DateTime.Now;
                                    }
                                    if (common.DeviceStatusReport.CluterID == 3)
                                    {
                                        deviceUI.CommonDevice.IsOnline = 1;
                                        deviceUI.CommonDevice.LastDateTime = DateTime.Now;
                                        deviceUI.IsOnline = 1;
                                        deviceUI.LastDateTime = DateTime.Now;
                                    }
                                    break;
@@ -207,18 +207,18 @@
                                    //开关功能
                                    if (common.DeviceStatusReport.CluterID == 6)
                                    {
                                        var airSwitch = deviceUI.CommonDevice as ZigBee.Device.AirSwitch;
                                        var airSwitch = deviceUI as ZigBee.Device.AirSwitch;
                                        airSwitch.DeviceStatusReport = common.DeviceStatusReport;
                                        airSwitch.OnOffStatus = airSwitch.DeviceStatusReport.AttriBute[0].AttriButeData;
                                        var row = rowLayout.GetChildren(0) as CategoryFunctionRow;
                                        row.IsSelected = airSwitch.OnOffStatus == 1;
                                        row.SetStatuText(deviceUI.GetDeviceStatu());
                                        row.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI));
                                        airSwitch.LastDateTime = DateTime.Now;
                                    }
                                    if (common.DeviceStatusReport.CluterID == 3)
                                    {
                                        deviceUI.CommonDevice.IsOnline = 1;
                                        deviceUI.CommonDevice.LastDateTime = DateTime.Now;
                                        deviceUI.IsOnline = 1;
                                        deviceUI.LastDateTime = DateTime.Now;
                                    }
                                    break;
                                case DeviceType.WindowCoveringDevice:
@@ -228,7 +228,7 @@
                                        if (common.DeviceStatusReport.AttriBute[0].AttributeId == 0)
                                        {
                                            //窗帘类型
                                            var rollerShade = deviceUI.CommonDevice as Rollershade;
                                            var rollerShade = deviceUI as Rollershade;
                                            rollerShade.DeviceStatusReport = common.DeviceStatusReport;
                                            rollerShade.WcdType = common.DeviceStatusReport.AttriBute[0].AttriButeData;
                                            rollerShade.LastDateTime = DateTime.Now;
@@ -237,18 +237,18 @@
                                        {
                                            var row = rowLayout.GetChildren(0) as CategoryFunctionForWinRow;
                                            //窗帘百分比
                                            var rollerShade = deviceUI.CommonDevice as Rollershade;
                                            var rollerShade = deviceUI as Rollershade;
                                            rollerShade.DeviceStatusReport = common.DeviceStatusReport;
                                            rollerShade.WcdCurrentPositionLiftPercentage = common.DeviceStatusReport.AttriBute[0].AttriButeData;
                                            row.SetStatuText($"{Language.StringByID(R.MyInternationalizationString.Current)} { deviceUI.GetDeviceStatu()}");
                                            row.SetStatuText($"{Language.StringByID(R.MyInternationalizationString.Current)} { HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI)}");
                                            row.IsSelected = rollerShade.WcdCurrentPositionLiftPercentage != 0;
                                            rollerShade.LastDateTime = DateTime.Now;
                                        }
                                    }
                                    if (common.DeviceStatusReport.CluterID == 3)
                                    {
                                        deviceUI.CommonDevice.IsOnline = 1;
                                        deviceUI.CommonDevice.LastDateTime = DateTime.Now;
                                        deviceUI.IsOnline = 1;
                                        deviceUI.LastDateTime = DateTime.Now;
                                    }
                                    break;
@@ -257,7 +257,7 @@
                                    if (common.DeviceStatusReport.CluterID == 513)
                                    {
                                        var attriButeList = common.DeviceStatusReport.AttriBute;
                                        var ac = deviceUI.CommonDevice as ZigBee.Device.AC;
                                        var ac = deviceUI as ZigBee.Device.AC;
                                        ac.DeviceStatusReport = common.DeviceStatusReport;
                                        foreach (var attList in attriButeList)
                                        {
@@ -292,12 +292,12 @@
                                        }
                                        var row = rowLayout.GetChildren(0) as CategoryFunctionRow;
                                        row.IsSelected = ac.currentSystemMode != 0;
                                        row.SetStatuText(deviceUI.GetDeviceStatu());
                                        row.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI));
                                    }
                                    if (common.DeviceStatusReport.CluterID == 514)
                                    {
                                        var ac = deviceUI.CommonDevice as ZigBee.Device.AC;
                                        var ac = deviceUI as ZigBee.Device.AC;
                                        var attriButeList = common.DeviceStatusReport.AttriBute;
                                        ac.DeviceStatusReport = common.DeviceStatusReport;
                                        foreach (var attList in attriButeList)
@@ -316,12 +316,12 @@
                                        }
                                        var row = rowLayout.GetChildren(0) as CategoryFunctionRow;
                                        row.IsSelected = ac.currentSystemMode != 0;
                                        row.SetStatuText(deviceUI.GetDeviceStatu());
                                        row.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI));
                                    }
                                    if (common.DeviceStatusReport.CluterID == 3)
                                    {
                                        var ac = deviceUI.CommonDevice as ZigBee.Device.AC;
                                        var ac = deviceUI as ZigBee.Device.AC;
                                        ac.IsOnline = 1;
                                        ac.LastDateTime = DateTime.Now;
                                    }
@@ -330,28 +330,28 @@
                                    //调光灯功能
                                    if (common.DeviceStatusReport.CluterID == 6)
                                    {
                                        var dimmableLight = deviceUI.CommonDevice as DimmableLight;
                                        var dimmableLight = deviceUI as DimmableLight;
                                        dimmableLight.DeviceStatusReport = common.DeviceStatusReport;
                                        dimmableLight.OnOffStatus = dimmableLight.DeviceStatusReport.AttriBute[0].AttriButeData;
                                        var row = rowLayout.GetChildren(0) as CategoryFunctionRow;
                                        row.IsSelected = dimmableLight.OnOffStatus == 1;
                                        row.SetStatuText(deviceUI.GetDeviceStatu());
                                        row.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI));
                                        dimmableLight.LastDateTime = DateTime.Now;
                                    }
                                    if (common.DeviceStatusReport.CluterID == 8)
                                    {
                                        var dimmableLight = deviceUI.CommonDevice as DimmableLight;
                                        var dimmableLight = deviceUI as DimmableLight;
                                        dimmableLight.DeviceStatusReport = common.DeviceStatusReport;
                                        dimmableLight.Level = dimmableLight.DeviceStatusReport.AttriBute[0].AttriButeData;
                                        var row = rowLayout.GetChildren(0) as CategoryFunctionRow;
                                        row.IsSelected = dimmableLight.OnOffStatus == 1;
                                        row.SetStatuText(deviceUI.GetDeviceStatu());
                                        row.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI));
                                        dimmableLight.LastDateTime = DateTime.Now;
                                    }
                                    if (common.DeviceStatusReport.CluterID == 3)
                                    {
                                        deviceUI.CommonDevice.IsOnline = 1;
                                        deviceUI.CommonDevice.LastDateTime = DateTime.Now;
                                        deviceUI.IsOnline = 1;
                                        deviceUI.LastDateTime = DateTime.Now;
                                    }
                                    break;
@@ -359,7 +359,7 @@
                                    //温度
                                    if (common.DeviceStatusReport.CluterID == 1026)
                                    {
                                        var tempera = deviceUI.CommonDevice as TemperatureSensor;
                                        var tempera = deviceUI as TemperatureSensor;
                                        foreach (var data in common.DeviceStatusReport.AttriBute)
                                        {
                                            if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
@@ -384,14 +384,14 @@
                                                    tempera.Temperatrue = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
                                                }
                                                var row = rowLayout.GetChildren(0) as CategoryFunctionRow;
                                                row.SetStatuText(deviceUI.GetDeviceStatu());
                                                row.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI));
                                            }
                                        }
                                    }
                                    //湿度
                                    if (common.DeviceStatusReport.CluterID == 1029)
                                    {
                                        var tempera = deviceUI.CommonDevice as TemperatureSensor;
                                        var tempera = deviceUI as TemperatureSensor;
                                        foreach (var data in common.DeviceStatusReport.AttriBute)
                                        {
                                            if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
@@ -409,7 +409,7 @@
                                                    tempera.LastDateTime = DateTime.Now;
                                                }
                                                var row = rowLayout.GetChildren(0) as CategoryFunctionRow;
                                                row.SetStatuText(deviceUI.GetDeviceStatu());
                                                row.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI));
                                            }
                                        }
                                    }
@@ -432,40 +432,40 @@
                        for (int i = 0; deviceListScrolView != null && i < deviceListScrolView.ChildrenCount; i++)
                        {
                            var rowLayout = deviceListScrolView.GetChildren(i) as RowLayout;
                            var deviceUI = rowLayout.Tag as DeviceUI;
                            if (deviceUI == null || deviceUI.CommonDevice == null)
                            var deviceUI = LocalDevice.Current.GetDevice(rowLayout.Tag.ToString());
                            if (deviceUI == null)
                            {
                                continue;
                            }
                            if (deviceUI.CommonDevice.DeviceAddr != common.DeviceAddr || deviceUI.CommonDevice.DeviceEpoint != common.DeviceEpoint)
                            if (deviceUI.DeviceAddr != common.DeviceAddr || deviceUI.DeviceEpoint != common.DeviceEpoint)
                            {
                                continue;
                            }
                            switch (deviceUI.CommonDevice.Type)
                            switch (deviceUI.Type)
                            {
                                case DeviceType.OnOffOutput:
                                    deviceUI.CommonDevice.IsOnline = common.IsOnline;
                                    deviceUI.CommonDevice.LastDateTime = DateTime.Now;
                                    deviceUI.IsOnline = common.IsOnline;
                                    deviceUI.LastDateTime = DateTime.Now;
                                    break;
                                case DeviceType.AirSwitch:
                                    deviceUI.CommonDevice.IsOnline = common.IsOnline;
                                    deviceUI.CommonDevice.LastDateTime = DateTime.Now;
                                    deviceUI.IsOnline = common.IsOnline;
                                    deviceUI.LastDateTime = DateTime.Now;
                                    break;
                                case DeviceType.WindowCoveringDevice:
                                    deviceUI.CommonDevice.LastDateTime = DateTime.Now;
                                    deviceUI.CommonDevice.IsOnline = common.IsOnline;
                                    deviceUI.LastDateTime = DateTime.Now;
                                    deviceUI.IsOnline = common.IsOnline;
                                    break;
                                case DeviceType.DimmableLight:
                                    deviceUI.CommonDevice.LastDateTime = DateTime.Now;
                                    deviceUI.CommonDevice.IsOnline = common.IsOnline;
                                    deviceUI.LastDateTime = DateTime.Now;
                                    deviceUI.IsOnline = common.IsOnline;
                                    break;
                                case DeviceType.Thermostat:
                                    deviceUI.CommonDevice.LastDateTime = DateTime.Now;
                                    deviceUI.CommonDevice.IsOnline = common.IsOnline;
                                    deviceUI.LastDateTime = DateTime.Now;
                                    deviceUI.IsOnline = common.IsOnline;
                                    break;
                            }
                        }
@@ -485,25 +485,25 @@
                        for (int i = 0; deviceListScrolView != null && i < deviceListScrolView.ChildrenCount; i++)
                        {
                            var rowLayout = deviceListScrolView.GetChildren(i) as RowLayout;
                            var deviceUI = rowLayout.Tag as DeviceUI;
                            if (deviceUI == null || deviceUI.CommonDevice == null)
                            var deviceUI = LocalDevice.Current.GetDevice(rowLayout.Tag.ToString());
                            if (deviceUI == null)
                            {
                                continue;
                            }
                            if (deviceUI.CommonDevice.DeviceAddr != common.DeviceAddr || deviceUI.CommonDevice.DeviceEpoint != common.DeviceEpoint)
                            if (deviceUI.DeviceAddr != common.DeviceAddr || deviceUI.DeviceEpoint != common.DeviceEpoint)
                            {
                                continue;
                            }
                            switch (deviceUI.CommonDevice.Type)
                            switch (deviceUI.Type)
                            {
                                case DeviceType.IASZone:
                                    //开关功能
                                    var ias = common as IASZone;
                                    var iAS = deviceUI.CommonDevice as ZigBee.Device.IASZone;
                                    var iAS = deviceUI as ZigBee.Device.IASZone;
                                    iAS.iASInfo = ias.iASInfo;
                                    var row = rowLayout.GetChildren(0) as CategoryFunctionRow;
                                    row.IsSelected = iAS.iASInfo?.Alarm1 == 1;
                                    row.SetStatuText(deviceUI.GetDeviceStatu());
                                    row.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI));
                                    iAS.LastDateTime = DateTime.Now;
                                    break;
                            }
@@ -717,7 +717,7 @@
            floors.FloorAction += (floorId) =>
            {
                floorBtn.Text = Config.Instance.Home.GetFloorNameById(floorId);
                Common.Room.CurrentRoom = Common.Room.CurrentRoom.GetLoveRoom();
                HdlRoomLogic.Current.CurrentRoom = HdlRoomLogic.Current.GetLoveRoom();
                RefreshBodyView();
            };
        }
@@ -862,7 +862,7 @@
        /// </summary>
        private void InitData()
        {
            typeDeviceDic = new Dictionary<int, List<DeviceUI>> { };
            typeDeviceDic = new Dictionary<int, List<CommonDevice>> { };
            typeIdDic = new Dictionary<int, DeviceConcreteType> { };
        }
@@ -871,20 +871,20 @@
        /// </summary>
        private void RefreshData(Common.Room room)
        {
            devList = room.DeviceUIList;
            sceneList = room.SceneUIList;
            devList = HdlRoomLogic.Current.GetRoomListDevice(room);
            sceneList = HdlSceneLogic.Current.GetRoomSceneList(room);
            typeDeviceDic.Clear();
            typeIdDic.Clear();
            foreach (var device in devList)
            {
                var info = Common.LocalDevice.Current.GetDeviceBelongEnumInfo(device.CommonDevice);
                var info = Common.LocalDevice.Current.GetDeviceBelongEnumInfo(device);
                if (info.BeloneType == DeviceBeloneType.A干接点 || info.BeloneType == DeviceBeloneType.A中继器)
                {
                    continue;
                }
                if (typeDeviceDic.ContainsKey(info.BeloneTextId) == false)
                {
                    var sameDevList = new List<DeviceUI> { };
                    var sameDevList = new List<CommonDevice> { };
                    sameDevList.Add(device);
                    typeDeviceDic[info.BeloneTextId] = sameDevList;
                }
@@ -1038,7 +1038,7 @@
            deviceListScrolView.RemoveAll();
            var sameTypeList = new List<DeviceUI> { };
            var sameTypeList = new List<CommonDevice> { };
            sameTypeList = typeDeviceDic[int.Parse((typeSender as Button).Tag.ToString())];
            for (int i = 0; i < sameTypeList.Count; i++)
@@ -1054,15 +1054,15 @@
                            {
                                Height = Application.GetRealHeight(127 + 35),
                                LineColor = ZigbeeColor.Current.GXCClearColor,
                                Tag = deviceUI,
                                SubViewWidth=Application.GetRealWidth(184)
                                Tag = LocalDevice.Current.GetDeviceMainKeys(deviceUI),
                                SubViewWidth = Application.GetRealWidth(184)
                            };
                            deviceListScrolView.AddChidren(deviceTypeRowLayout);
                            if (deviceUI.CommonDevice.Type == DeviceType.OnOffOutput)
                            if (deviceUI.Type == DeviceType.OnOffOutput)
                            {
                                //灯
                                var light = deviceUI.CommonDevice as ToggleLight;
                                var light = deviceUI as ToggleLight;
                                if (light.Gateway != null)
                                {
                                    new System.Threading.Thread(() =>
@@ -1072,7 +1072,7 @@
                                        {
                                            UserHomeView.ReadStatus(light, () =>
                                            {
                                                ReadDeviceAttributeLogic.Instance.SendLightStatuComand(deviceUI.CommonDevice);
                                                ReadDeviceAttributeLogic.Instance.SendLightStatuComand(deviceUI);
                                            });
                                        }
                                        else
@@ -1080,7 +1080,7 @@
                                            //防止短时间内多次读取状态
                                            if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - light.LastDateTime).TotalSeconds)
                                            {
                                                ReadDeviceAttributeLogic.Instance.SendLightStatuComand(deviceUI.CommonDevice);
                                                ReadDeviceAttributeLogic.Instance.SendLightStatuComand(deviceUI);
                                            }
                                        }
                                    })
@@ -1088,17 +1088,17 @@
                                    var deviceRow = new CategoryFunctionRow(0, 35);
                                    deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                                    deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI.CommonDevice));
                                    deviceRow.SetStatuText(deviceUI.GetDeviceStatu());
                                    deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI));
                                    deviceRow.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI));
                                    deviceRow.IsSelected = light.OnOffStatus == 1;
                                    deviceTypeRowLayout.AddChidren(deviceRow);
                                    deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) =>
                                    {
                                        zbGateway = deviceUI.CommonDevice.Gateway;
                                        zbGateway = deviceUI.Gateway;
                                        sendedControlCommand = false;
                                        zbGateway.ReportAction += UpdateDeviceControllStatu;
                                        AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
                                        AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI);
                                        (send2 as Button).IsSelected = !(send2 as Button).IsSelected;
                                        deviceRow.IsSelected = (send2 as Button).IsSelected;
                                        if ((send2 as Button).IsSelected)
@@ -1109,9 +1109,9 @@
                                        {
                                            light.SwitchControl(0);
                                        }
                                        deviceRow.SetStatuText(deviceUI.GetDeviceStatu());
                                        deviceRow.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI));
                                        //控制延时回调
                                        DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () =>
                                        HdlDeviceOtherLogic.Current.SendCommandDelayAction(deviceUI, () =>
                                        {
                                            if (Parent == null)
                                            {
@@ -1120,7 +1120,7 @@
                                            RemoveUpdateControlDeviceStatuAction(zbGateway);
                                            if (sendedControlCommand == false)
                                            {
                                                DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                                HdlDeviceOtherLogic.Current.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                            }
                                        });
                                    };
@@ -1129,7 +1129,7 @@
                                        var lightControl = new Phone.Device.Light.OnOffControl();
                                        UserView.HomePage.Instance.AddChidren(lightControl);
                                        UserView.HomePage.Instance.PageIndex += 1;
                                        lightControl.Show(deviceUI, Common.Room.CurrentRoom);
                                        lightControl.Show(deviceUI, HdlRoomLogic.Current.CurrentRoom);
                                        lightControl.action += (curDev, curRoom) =>
                                        {
                                            ReFreshDeviceAction(deviceUI, curRoom, sameTypeList, deviceListScrolView, deviceRow);
@@ -1141,7 +1141,7 @@
                                        var detailInfo = new Device.CommonForm.DeviceDetailInfo { };
                                        UserView.HomePage.Instance.AddChidren(detailInfo);
                                        UserView.HomePage.Instance.PageIndex += 1;
                                        detailInfo.Show(deviceUI, Shared.Common.Room.CurrentRoom);
                                        detailInfo.Show(deviceUI, HdlRoomLogic.Current.CurrentRoom);
                                        detailInfo.EditAction += (curDevice, curRoom) =>
                                        {
                                            ReFreshDeviceAction(deviceUI, curRoom, sameTypeList, deviceListScrolView, deviceRow);
@@ -1149,19 +1149,19 @@
                                    };
                                    var editBtn = new CommonForm.RowLayoutEditButton()
                                    {
                                        Tag = deviceUI
                                        Tag = LocalDevice.Current.GetDeviceMainKeys(deviceUI)
                                    };
                                    if (Common.Room.CurrentRoom.IsSharedRoom == false)
                                    if (HdlRoomLogic.Current.CurrentRoom.IsSharedRoom == false)
                                    {
                                        deviceTypeRowLayout.AddRightView(editBtn);
                                        editBtn.MouseUpEventHandler += deviceDetailHandler;
                                    }
                                }
                            }
                            else if (deviceUI.CommonDevice.Type == DeviceType.AirSwitch)
                            else if (deviceUI.Type == DeviceType.AirSwitch)
                            {
                                //空气开关
                                var airSwitch = deviceUI.CommonDevice as AirSwitch;
                                var airSwitch = deviceUI as AirSwitch;
                                if (airSwitch.Gateway != null)
                                {
                                    new System.Threading.Thread(() =>
@@ -1171,14 +1171,14 @@
                                        {
                                            UserHomeView.ReadStatus(airSwitch, () =>
                                            {
                                                ReadDeviceAttributeLogic.Instance.SendLightStatuComand(deviceUI.CommonDevice);
                                                ReadDeviceAttributeLogic.Instance.SendLightStatuComand(deviceUI);
                                            });
                                        }
                                        else
                                        {
                                            if ((DateTime.Now - airSwitch.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                                            {
                                                ReadDeviceAttributeLogic.Instance.SendLightStatuComand(deviceUI.CommonDevice);
                                                ReadDeviceAttributeLogic.Instance.SendLightStatuComand(deviceUI);
                                            }
                                        }
                                    })
@@ -1186,16 +1186,16 @@
                                    var deviceRow = new CategoryFunctionRow(0, 35);
                                    deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                                    deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI.CommonDevice));
                                    deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI));
                                    deviceRow.IsSelected = airSwitch.OnOffStatus == 1;
                                    deviceRow.SetStatuText(deviceUI.GetDeviceStatu());
                                    deviceRow.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI));
                                    deviceTypeRowLayout.AddChidren(deviceRow);
                                    deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) =>
                                    {
                                        zbGateway = deviceUI.CommonDevice.Gateway;
                                        zbGateway = deviceUI.Gateway;
                                        sendedControlCommand = false;
                                        zbGateway.ReportAction += UpdateDeviceControllStatu;
                                        AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
                                        AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI);
                                        (send2 as Button).IsSelected = !(send2 as Button).IsSelected;
                                        deviceRow.IsSelected = (send2 as Button).IsSelected;
                                        if ((send2 as Button).IsSelected)
@@ -1206,9 +1206,9 @@
                                        {
                                            airSwitch.SwitchControl(0);
                                        }
                                        deviceRow.SetStatuText(deviceUI.GetDeviceStatu());
                                        deviceRow.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI));
                                        //控制延时回调
                                        DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () =>
                                        HdlDeviceOtherLogic.Current.SendCommandDelayAction(deviceUI, () =>
                                        {
                                            if (Parent == null)
                                            {
@@ -1217,7 +1217,7 @@
                                            RemoveUpdateControlDeviceStatuAction(zbGateway);
                                            if (sendedControlCommand == false)
                                            {
                                                DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                                HdlDeviceOtherLogic.Current.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                            }
                                        });
                                    };
@@ -1227,7 +1227,7 @@
                                        var lightControl = new Phone.Device.Light.AirSwitchControl();
                                        UserView.HomePage.Instance.AddChidren(lightControl);
                                        UserView.HomePage.Instance.PageIndex += 1;
                                        lightControl.Show(deviceUI, Common.Room.CurrentRoom);
                                        lightControl.Show(deviceUI, HdlRoomLogic.Current.CurrentRoom);
                                        lightControl.action += (curDev, curRoom) =>
                                        {
@@ -1241,7 +1241,7 @@
                                        var detailInfo = new Device.CommonForm.DeviceDetailInfo { };
                                        UserView.HomePage.Instance.AddChidren(detailInfo);
                                        UserView.HomePage.Instance.PageIndex += 1;
                                        detailInfo.Show(deviceUI, Shared.Common.Room.CurrentRoom);
                                        detailInfo.Show(deviceUI, HdlRoomLogic.Current.CurrentRoom);
                                        detailInfo.EditAction += (curDevice, curRoom) =>
                                        {
                                            ReFreshDeviceAction(deviceUI, curRoom, sameTypeList, deviceListScrolView, deviceRow);
@@ -1250,19 +1250,19 @@
                                    };
                                    var editBtn = new CommonForm.RowLayoutEditButton()
                                    {
                                        Tag = deviceUI
                                        Tag = LocalDevice.Current.GetDeviceMainKeys(deviceUI)
                                    };
                                    if (Common.Room.CurrentRoom.IsSharedRoom == false)
                                    if (HdlRoomLogic.Current.CurrentRoom.IsSharedRoom == false)
                                    {
                                        deviceTypeRowLayout.AddRightView(editBtn);
                                        editBtn.MouseUpEventHandler += deviceDetailHandler;
                                    }
                                }
                            }
                            else if (deviceUI.CommonDevice.Type == DeviceType.DimmableLight)
                            else if (deviceUI.Type == DeviceType.DimmableLight)
                            {
                                //调光灯
                                var dimmableLight = deviceUI.CommonDevice as ZigBee.Device.DimmableLight;
                                var dimmableLight = deviceUI as ZigBee.Device.DimmableLight;
                                if (dimmableLight.Gateway != null)
                                {
                                    new System.Threading.Thread(() =>
@@ -1272,14 +1272,14 @@
                                        {
                                            UserHomeView.ReadStatus(dimmableLight, () =>
                                            {
                                                ReadDeviceAttributeLogic.Instance.SendDimmableLightStatuComand(deviceUI.CommonDevice);
                                                ReadDeviceAttributeLogic.Instance.SendDimmableLightStatuComand(deviceUI);
                                            });
                                        }
                                        else
                                        {
                                            if ((DateTime.Now - dimmableLight.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                                            {
                                                ReadDeviceAttributeLogic.Instance.SendDimmableLightStatuComand(deviceUI.CommonDevice);
                                                ReadDeviceAttributeLogic.Instance.SendDimmableLightStatuComand(deviceUI);
                                            }
                                        }
                                    })
@@ -1287,17 +1287,17 @@
                                    var deviceRow = new CategoryFunctionRow(0, 35);
                                    deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                                    deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI.CommonDevice));
                                    deviceRow.SetStatuText(deviceUI.GetDeviceStatu());
                                    deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI));
                                    deviceRow.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI));
                                    deviceRow.IsSelected = dimmableLight.OnOffStatus == 1;
                                    deviceTypeRowLayout.AddChidren(deviceRow);
                                    deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) =>
                                    {
                                        zbGateway = deviceUI.CommonDevice.Gateway;
                                        zbGateway = deviceUI.Gateway;
                                        sendedControlCommand = false;
                                        zbGateway.ReportAction += UpdateDeviceControllStatu;
                                        AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
                                        AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI);
                                        (send2 as Button).IsSelected = !(send2 as Button).IsSelected;
                                        deviceRow.IsSelected = (send2 as Button).IsSelected;
                                        if ((send2 as Button).IsSelected)
@@ -1308,9 +1308,9 @@
                                        {
                                            dimmableLight.SwitchControl(0);
                                        }
                                        deviceRow.SetStatuText(deviceUI.GetDeviceStatu());
                                        deviceRow.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI));
                                        //控制延时回调
                                        DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () =>
                                        HdlDeviceOtherLogic.Current.SendCommandDelayAction(deviceUI, () =>
                                        {
                                            if (Parent == null)
                                            {
@@ -1319,7 +1319,7 @@
                                            RemoveUpdateControlDeviceStatuAction(zbGateway);
                                            if (sendedControlCommand == false)
                                            {
                                                DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                                HdlDeviceOtherLogic.Current.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                            }
                                        });
                                    };
@@ -1330,7 +1330,7 @@
                                        UserView.HomePage.Instance.AddChidren(dimmableLightControl);
                                        UserView.HomePage.Instance.PageIndex += 1;
                                        UserView.HomePage.Instance.ScrollEnabled = false;
                                        dimmableLightControl.Show(deviceUI, Common.Room.CurrentRoom);
                                        dimmableLightControl.Show(deviceUI, HdlRoomLogic.Current.CurrentRoom);
                                        dimmableLightControl.action += (curDev, curRoom) =>
                                        {
                                            ReFreshDeviceAction(deviceUI, curRoom, sameTypeList, deviceListScrolView, deviceRow);
@@ -1343,7 +1343,7 @@
                                        var detailInfo = new Device.CommonForm.DeviceDetailInfo { };
                                        UserView.HomePage.Instance.AddChidren(detailInfo);
                                        UserView.HomePage.Instance.PageIndex += 1;
                                        detailInfo.Show(deviceUI, Shared.Common.Room.CurrentRoom);
                                        detailInfo.Show(deviceUI, HdlRoomLogic.Current.CurrentRoom);
                                        detailInfo.EditAction += (curDevice, curRoom) =>
                                        {
                                            ReFreshDeviceAction(deviceUI, curRoom, sameTypeList, deviceListScrolView, deviceRow);
@@ -1351,19 +1351,19 @@
                                    };
                                    var editBtn = new CommonForm.RowLayoutEditButton()
                                    {
                                        Tag = deviceUI
                                        Tag = LocalDevice.Current.GetDeviceMainKeys(deviceUI)
                                    };
                                    if (Common.Room.CurrentRoom.IsSharedRoom == false)
                                    if (HdlRoomLogic.Current.CurrentRoom.IsSharedRoom == false)
                                    {
                                        deviceTypeRowLayout.AddRightView(editBtn);
                                        editBtn.MouseUpEventHandler += deviceDetailHandler;
                                    }
                                }
                            }
                            else if (deviceUI.CommonDevice.Type == DeviceType.Thermostat)
                            else if (deviceUI.Type == DeviceType.Thermostat)
                            {
                                //空调
                                var ac = deviceUI.CommonDevice as ZigBee.Device.AC;
                                var ac = deviceUI as ZigBee.Device.AC;
                                if (ac.Gateway != null)
                                {
                                    new System.Threading.Thread(() =>
@@ -1374,7 +1374,7 @@
                                            //发送读取状态命令
                                            UserView.UserHomeView.ReadStatus(ac, () =>
                                            {
                                                ReadDeviceAttributeLogic.Instance.SendACStatuComand(deviceUI.CommonDevice);
                                                ReadDeviceAttributeLogic.Instance.SendACStatuComand(deviceUI);
                                            });
                                        }
                                        else
@@ -1382,7 +1382,7 @@
                                            //防止短时间内多次读取设备状态
                                            if ((DateTime.Now - ac.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                                            {
                                                ReadDeviceAttributeLogic.Instance.SendACStatuComand(deviceUI.CommonDevice);
                                                ReadDeviceAttributeLogic.Instance.SendACStatuComand(deviceUI);
                                            }
                                        }
                                    })
@@ -1390,17 +1390,17 @@
                                    var deviceRow = new CategoryFunctionRow(0, 35);
                                    deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                                    deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI.CommonDevice));
                                    deviceRow.SetStatuText(deviceUI.GetDeviceStatu());
                                    deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI));
                                    deviceRow.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI));
                                    deviceRow.IsSelected = ac.currentSystemMode != 1;
                                    deviceTypeRowLayout.AddChidren(deviceRow);
                                    deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) =>
                                    {
                                        zbGateway = deviceUI.CommonDevice.Gateway;
                                        zbGateway = deviceUI.Gateway;
                                        sendedControlCommand = false;
                                        zbGateway.ReportAction += UpdateDeviceControllStatu;
                                        AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
                                        AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI);
                                        (send2 as Button).IsSelected = !(send2 as Button).IsSelected;
                                        deviceRow.IsSelected = (send2 as Button).IsSelected;
@@ -1412,9 +1412,9 @@
                                        {
                                            ac.Close();
                                        }
                                        deviceRow.SetStatuText(deviceUI.GetDeviceStatu());
                                        deviceRow.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI));
                                        //控制延时回调
                                        DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () =>
                                        HdlDeviceOtherLogic.Current.SendCommandDelayAction(deviceUI, () =>
                                        {
                                            if (Parent == null)
                                            {
@@ -1423,7 +1423,7 @@
                                            RemoveUpdateControlDeviceStatuAction(zbGateway);
                                            if (sendedControlCommand == false)
                                            {
                                                DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                                HdlDeviceOtherLogic.Current.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                            }
                                        });
                                    };
@@ -1433,7 +1433,7 @@
                                        UserView.HomePage.Instance.AddChidren(acControl);
                                        UserView.HomePage.Instance.PageIndex += 1;
                                        UserView.HomePage.Instance.ScrollEnabled = false;
                                        acControl.Show(deviceUI, Common.Room.CurrentRoom);
                                        acControl.Show(deviceUI, HdlRoomLogic.Current.CurrentRoom);
                                        acControl.action += (curDev, curRoom) =>
                                        {
                                            ReFreshDeviceAction(deviceUI, curRoom, sameTypeList, deviceListScrolView, deviceRow);
@@ -1446,7 +1446,7 @@
                                        var detailInfo = new Device.CommonForm.DeviceDetailInfo { };
                                        UserView.HomePage.Instance.AddChidren(detailInfo);
                                        UserView.HomePage.Instance.PageIndex += 1;
                                        detailInfo.Show(deviceUI, Shared.Common.Room.CurrentRoom);
                                        detailInfo.Show(deviceUI, HdlRoomLogic.Current.CurrentRoom);
                                        detailInfo.EditAction += (curDevice, curRoom) =>
                                        {
                                            ReFreshDeviceAction(deviceUI, curRoom, sameTypeList, deviceListScrolView, deviceRow);
@@ -1455,19 +1455,19 @@
                                    };
                                    var editBtn = new CommonForm.RowLayoutEditButton()
                                    {
                                        Tag = deviceUI
                                        Tag = LocalDevice.Current.GetDeviceMainKeys(deviceUI)
                                    };
                                    if (Common.Room.CurrentRoom.IsSharedRoom == false)
                                    if (HdlRoomLogic.Current.CurrentRoom.IsSharedRoom == false)
                                    {
                                        deviceTypeRowLayout.AddRightView(editBtn);
                                        editBtn.MouseUpEventHandler += deviceDetailHandler;
                                    }
                                }
                            }
                            else if (deviceUI.CommonDevice.Type == DeviceType.WindowCoveringDevice)
                            else if (deviceUI.Type == DeviceType.WindowCoveringDevice)
                            {
                                //卷帘
                                var rollerShade = deviceUI.CommonDevice as ZigBee.Device.Rollershade;
                                var rollerShade = deviceUI as ZigBee.Device.Rollershade;
                                if (rollerShade.Gateway != null)
                                {
                                    new System.Threading.Thread(() =>
@@ -1477,7 +1477,7 @@
                                        {
                                            UserHomeView.ReadStatus(rollerShade, () =>
                                            {
                                                ReadDeviceAttributeLogic.Instance.SendCurtainStatuComand(deviceUI.CommonDevice);
                                                ReadDeviceAttributeLogic.Instance.SendCurtainStatuComand(deviceUI);
                                            });
                                        }
                                        else
@@ -1485,7 +1485,7 @@
                                            //防止短时间内多次读取
                                            if ((DateTime.Now - rollerShade.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                                            {
                                                ReadDeviceAttributeLogic.Instance.SendCurtainStatuComand(deviceUI.CommonDevice);
                                                ReadDeviceAttributeLogic.Instance.SendCurtainStatuComand(deviceUI);
                                            }
                                        }
                                    })
@@ -1493,8 +1493,8 @@
                                    var deviceRow = new CategoryFunctionForWinRow(0, 35);
                                    deviceRow.Init(deviceUI);
                                    deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI.CommonDevice));
                                    deviceRow.SetStatuText(deviceUI.GetDeviceStatu());
                                    deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI));
                                    deviceRow.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI));
                                    deviceRow.IsSelected = rollerShade.WcdCurrentPositionLiftPercentage != 0;
                                    deviceRow.SetRollerShadeIcon(rollerShade.WcdType);
                                    deviceTypeRowLayout.AddChidren(deviceRow);
@@ -1522,7 +1522,7 @@
                                        UserView.HomePage.Instance.AddChidren(rollerShadeControl);
                                        UserView.HomePage.Instance.PageIndex += 1;
                                        UserView.HomePage.Instance.ScrollEnabled = false;
                                        rollerShadeControl.Show(deviceUI, Common.Room.CurrentRoom);
                                        rollerShadeControl.Show(deviceUI, HdlRoomLogic.Current.CurrentRoom);
                                        rollerShadeControl.action += (curDev, curRoom) =>
                                        {
                                            ReFreshDeviceActionForWin(deviceUI, curRoom, sameTypeList, deviceListScrolView, deviceRow);
@@ -1534,7 +1534,7 @@
                                        var detailInfo = new Device.CommonForm.DeviceDetailInfo { };
                                        UserView.HomePage.Instance.AddChidren(detailInfo);
                                        UserView.HomePage.Instance.PageIndex += 1;
                                        detailInfo.Show(deviceUI, Shared.Common.Room.CurrentRoom);
                                        detailInfo.Show(deviceUI, HdlRoomLogic.Current.CurrentRoom);
                                        detailInfo.EditAction += (curDevice, curRoom) =>
                                        {
                                            ReFreshDeviceActionForWin(deviceUI, curRoom, sameTypeList, deviceListScrolView, deviceRow);
@@ -1542,27 +1542,27 @@
                                    };
                                    var editBtn = new CommonForm.RowLayoutEditButton()
                                    {
                                        Tag = deviceUI
                                        Tag = LocalDevice.Current.GetDeviceMainKeys(deviceUI)
                                    };
                                    if (Common.Room.CurrentRoom.IsSharedRoom == false)
                                    if (HdlRoomLogic.Current.CurrentRoom.IsSharedRoom == false)
                                    {
                                        deviceTypeRowLayout.AddRightView(editBtn);
                                        editBtn.MouseUpEventHandler += deviceDetailHandler;
                                    }
                                }
                            }
                            else if (deviceUI.CommonDevice.Type == DeviceType.DoorLock)
                            else if (deviceUI.Type == DeviceType.DoorLock)
                            {
                                var deviceRow = new CategoryFunctionRow(0, 35);
                                deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                                deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI.CommonDevice));
                                deviceRow.SetStatuText(deviceUI.GetDeviceStatu());
                                deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI));
                                deviceRow.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI));
                                deviceRow.HideSwitchBtn(true);
                                deviceTypeRowLayout.AddChidren(deviceRow);
                                deviceRow.ClickBtn.MouseUpEventHandler += (send2, e2) =>
                                {
                                    var userDoorLockPage = new UserDoorLockPage(Common.Room.CurrentRoom, deviceUI);
                                    var userDoorLockPage = new UserDoorLockPage(HdlRoomLogic.Current.CurrentRoom, deviceUI);
                                    HomePage.Instance.AddChidren(userDoorLockPage);
                                    HomePage.Instance.PageIndex += 1;
                                    userDoorLockPage.Show();
@@ -1572,7 +1572,7 @@
                                    var detailInfo = new Device.CommonForm.DeviceDetailInfo { };
                                    UserView.HomePage.Instance.AddChidren(detailInfo);
                                    UserView.HomePage.Instance.PageIndex += 1;
                                    detailInfo.Show(deviceUI, Shared.Common.Room.CurrentRoom);
                                    detailInfo.Show(deviceUI, HdlRoomLogic.Current.CurrentRoom);
                                    detailInfo.EditAction += (curDevice, curRoom) =>
                                    {
                                        ReFreshDeviceAction(deviceUI, curRoom, sameTypeList, deviceListScrolView, deviceRow);
@@ -1580,21 +1580,21 @@
                                };
                                var editBtn = new CommonForm.RowLayoutEditButton()
                                {
                                    Tag = deviceUI
                                    Tag = LocalDevice.Current.GetDeviceMainKeys(deviceUI)
                                };
                                if (Common.Room.CurrentRoom.IsSharedRoom == false)
                                if (HdlRoomLogic.Current.CurrentRoom.IsSharedRoom == false)
                                {
                                    deviceTypeRowLayout.AddRightView(editBtn);
                                    editBtn.MouseUpEventHandler += deviceDetailHandler;
                                }
                            }
                            else if (deviceUI.CommonDevice.Type == DeviceType.IASZone)
                            else if (deviceUI.Type == DeviceType.IASZone)
                            {
                                var deviceRow = new CategoryFunctionRow(0, 35);
                                deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                                deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI.CommonDevice));
                                deviceRow.SetStatuText(deviceUI.GetDeviceStatu());
                                deviceRow.IsSelected = (deviceUI.CommonDevice as IASZone).iASInfo?.Alarm1 == 1;
                                deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI));
                                deviceRow.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI));
                                deviceRow.IsSelected = (deviceUI as IASZone).iASInfo?.Alarm1 == 1;
                                deviceRow.HideSwitchBtn(true);
                                deviceTypeRowLayout.AddChidren(deviceRow);
@@ -1603,7 +1603,7 @@
                                    var detailInfo = new Device.CommonForm.DeviceDetailInfo { };
                                    UserView.HomePage.Instance.AddChidren(detailInfo);
                                    UserView.HomePage.Instance.PageIndex += 1;
                                    detailInfo.Show(deviceUI, Shared.Common.Room.CurrentRoom);
                                    detailInfo.Show(deviceUI, HdlRoomLogic.Current.CurrentRoom);
                                    detailInfo.EditAction += (curDevice, curRoom) =>
                                    {
                                        ReFreshDeviceAction(deviceUI, curRoom, sameTypeList, deviceListScrolView, deviceRow);
@@ -1611,17 +1611,17 @@
                                };
                                var editBtn = new CommonForm.RowLayoutEditButton()
                                {
                                    Tag = deviceUI
                                    Tag = LocalDevice.Current.GetDeviceMainKeys(deviceUI)
                                };
                                if (Common.Room.CurrentRoom.IsSharedRoom == false)
                                if (HdlRoomLogic.Current.CurrentRoom.IsSharedRoom == false)
                                {
                                    deviceTypeRowLayout.AddRightView(editBtn);
                                    editBtn.MouseUpEventHandler += deviceDetailHandler;
                                }
                            }
                            else if (deviceUI.CommonDevice.Type == DeviceType.TemperatureSensor)
                            else if (deviceUI.Type == DeviceType.TemperatureSensor)
                            {
                                var tempera = deviceUI.CommonDevice as TemperatureSensor;
                                var tempera = deviceUI as TemperatureSensor;
                                if (tempera.Gateway != null)
                                {
                                    new System.Threading.Thread(() =>
@@ -1633,11 +1633,11 @@
                                            {
                                                if (tempera.SensorDiv == 1)
                                                {
                                                    ReadDeviceAttributeLogic.Instance.SendTemperatureStatuComand(deviceUI.CommonDevice);
                                                    ReadDeviceAttributeLogic.Instance.SendTemperatureStatuComand(deviceUI);
                                                }
                                                else if (tempera.SensorDiv == 2)
                                                {
                                                    ReadDeviceAttributeLogic.Instance.SendHumidityStatuComand(deviceUI.CommonDevice);
                                                    ReadDeviceAttributeLogic.Instance.SendHumidityStatuComand(deviceUI);
                                                }
                                            });
                                        }
@@ -1647,11 +1647,11 @@
                                            {
                                                if (tempera.SensorDiv == 1)
                                                {
                                                    ReadDeviceAttributeLogic.Instance.SendTemperatureStatuComand(deviceUI.CommonDevice);
                                                    ReadDeviceAttributeLogic.Instance.SendTemperatureStatuComand(deviceUI);
                                                }
                                                else if (tempera.SensorDiv == 2)
                                                {
                                                    ReadDeviceAttributeLogic.Instance.SendHumidityStatuComand(deviceUI.CommonDevice);
                                                    ReadDeviceAttributeLogic.Instance.SendHumidityStatuComand(deviceUI);
                                                }
                                            }
                                        }
@@ -1660,8 +1660,8 @@
                                    var deviceRow = new CategoryFunctionRow(0, 35);
                                    deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                                    deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI.CommonDevice));
                                    deviceRow.SetStatuText(deviceUI.GetDeviceStatu());
                                    deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI));
                                    deviceRow.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI));
                                    deviceRow.IsSelected = false;
                                    deviceRow.HideSwitchBtn(true);
                                    deviceTypeRowLayout.AddChidren(deviceRow);
@@ -1671,7 +1671,7 @@
                                        var detailInfo = new Device.CommonForm.DeviceDetailInfo { };
                                        UserView.HomePage.Instance.AddChidren(detailInfo);
                                        UserView.HomePage.Instance.PageIndex += 1;
                                        detailInfo.Show(deviceUI, Shared.Common.Room.CurrentRoom);
                                        detailInfo.Show(deviceUI, HdlRoomLogic.Current.CurrentRoom);
                                        detailInfo.EditAction += (curDevice, curRoom) =>
                                        {
                                            ReFreshDeviceAction(deviceUI, curRoom, sameTypeList, deviceListScrolView, deviceRow);
@@ -1679,9 +1679,9 @@
                                    };
                                    var editBtn = new CommonForm.RowLayoutEditButton()
                                    {
                                        Tag = deviceUI
                                        Tag = LocalDevice.Current.GetDeviceMainKeys(deviceUI)
                                    };
                                    if (Common.Room.CurrentRoom.IsSharedRoom == false)
                                    if (HdlRoomLogic.Current.CurrentRoom.IsSharedRoom == false)
                                    {
                                        deviceTypeRowLayout.AddRightView(editBtn);
                                        editBtn.MouseUpEventHandler += deviceDetailHandler;
@@ -1692,8 +1692,8 @@
                            {
                                var deviceRow = new CategoryFunctionRow(0, 35);
                                deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                                deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI.CommonDevice));
                                deviceRow.SetStatuText(deviceUI.GetDeviceStatu());
                                deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI));
                                deviceRow.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI));
                                deviceRow.HideSwitchBtn(true);
                                deviceTypeRowLayout.AddChidren(deviceRow);
@@ -1702,7 +1702,7 @@
                                    var detailInfo = new Device.CommonForm.DeviceDetailInfo { };
                                    UserView.HomePage.Instance.AddChidren(detailInfo);
                                    UserView.HomePage.Instance.PageIndex += 1;
                                    detailInfo.Show(deviceUI, Shared.Common.Room.CurrentRoom);
                                    detailInfo.Show(deviceUI, HdlRoomLogic.Current.CurrentRoom);
                                    detailInfo.EditAction += (curDevice, curRoom) =>
                                    {
                                        ReFreshDeviceAction(deviceUI, curRoom, sameTypeList, deviceListScrolView, deviceRow);
@@ -1710,9 +1710,9 @@
                                };
                                var editBtn = new CommonForm.RowLayoutEditButton()
                                {
                                    Tag = deviceUI
                                    Tag = LocalDevice.Current.GetDeviceMainKeys(deviceUI)
                                };
                                if (Common.Room.CurrentRoom.IsSharedRoom == false)
                                if (HdlRoomLogic.Current.CurrentRoom.IsSharedRoom == false)
                                {
                                    deviceTypeRowLayout.AddRightView(editBtn);
                                    editBtn.MouseUpEventHandler += deviceDetailHandler;
@@ -1726,21 +1726,19 @@
                                alert.Show();
                                alert.ConfirmClickEvent += () =>
                                {
                                    if (Common.Room.CurrentRoom.IsLove)
                                    if (HdlRoomLogic.Current.CurrentRoom.IsLove)
                                    {
                                        Shared.Common.Room.CurrentRoom.DeleteDevice(deviceUI.FileName);
                                        HdlRoomLogic.Current.DeleteLoveDevice(deviceUI);
                                        deviceListScrolView.RemoveViewByTag((delSender as Button).Tag);
                                        sameTypeList.Remove(deviceUI);
                                    }
                                    else
                                    {
                                        Shared.Common.Room.CurrentRoom.DeleteDevice(deviceUI.CommonDevice);
                                        HdlRoomLogic.Current.DeleteDevice(deviceUI);
                                        deviceListScrolView.RemoveViewByTag((delSender as Button).Tag);
                                        sameTypeList.Remove(deviceUI);
                                        if (Common.Room.CurrentRoom.GetLoveRoom().DeviceUIList.Find((obj) => obj.FileName == deviceUI.FileName) != null)
                                        {
                                            Common.Room.CurrentRoom.GetLoveRoom().DeleteDevice(deviceUI.FileName);
                                        }
                                        sameTypeList.Remove(deviceUI);
                                        HdlRoomLogic.Current.DeleteLoveDevice(deviceUI);
                                    }
                                    if (sameTypeList.Count == 0)
                                    {
@@ -1750,9 +1748,9 @@
                            };
                            var delBtn = new CommonForm.RowLayoutDeleteButton()
                            {
                                Tag = deviceUI
                                Tag = LocalDevice.Current.GetDeviceMainKeys(deviceUI)
                            };
                            if (Common.Room.CurrentRoom.IsSharedRoom == false)
                            if (HdlRoomLogic.Current.CurrentRoom.IsSharedRoom == false)
                            {
                                deviceTypeRowLayout.AddRightView(delBtn);
                                delBtn.MouseUpEventHandler += delEvent;
@@ -1772,38 +1770,38 @@
        /// <param name="sameTypeList"></param>
        /// <param name="devListScrolView"></param>
        /// <param name="deviceRow"></param>
        private void ReFreshDeviceAction(DeviceUI deviceUI, Common.Room curRoom, List<DeviceUI> sameTypeList, VerticalScrolViewLayout devListScrolView, CategoryFunctionRow deviceRow)
        private void ReFreshDeviceAction(CommonDevice deviceUI, Common.Room curRoom, List<CommonDevice> sameTypeList, VerticalScrolViewLayout devListScrolView, CategoryFunctionRow deviceRow)
        {
            if (Common.Room.CurrentRoom.IsLove)
            if (HdlRoomLogic.Current.CurrentRoom.IsLove)
            {
                deviceRow.SetDeviceIcon(deviceUI.IconPath, deviceUI.OnlineIconPath);
                deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI.CommonDevice));
                if (Common.Room.CurrentRoom.IsCollectInRoom(deviceUI.FileName) == false)
                deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI));
                if (HdlRoomLogic.Current.IsCollectInRoom(deviceUI) == false)
                {
                    devListScrolView.RemoveViewByTag(deviceUI);
                    sameTypeList.Remove(deviceUI);
                    if (sameTypeList.Count == 0)
                    {
                        RefreshFunction(Common.Room.CurrentRoom);
                        RefreshFunction(HdlRoomLogic.Current.CurrentRoom);
                    }
                }
            }
            else
            {
                if (curRoom.Id != Common.Room.CurrentRoom.Id)
                if (curRoom.Id != HdlRoomLogic.Current.CurrentRoom.Id)
                {
                    Shared.Common.Room.CurrentRoom.DeleteDevice(deviceUI.FileName);
                    HdlRoomLogic.Current.DeleteDevice(deviceUI);
                    devListScrolView.RemoveViewByTag(deviceUI);
                    sameTypeList.Remove(deviceUI);
                    if (sameTypeList.Count == 0)
                    {
                        RefreshFunction(Common.Room.CurrentRoom);
                        RefreshFunction(HdlRoomLogic.Current.CurrentRoom);
                    }
                }
                else
                {
                    deviceRow.SetDeviceIcon(deviceUI.IconPath, deviceUI.OnlineIconPath);
                    deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI.CommonDevice));
                    deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI));
                }
            }
        }
@@ -1815,38 +1813,38 @@
        /// <param name="sameTypeList"></param>
        /// <param name="devListScrolView"></param>
        /// <param name="deviceRow"></param>
        private void ReFreshDeviceActionForWin(DeviceUI deviceUI, Common.Room curRoom, List<DeviceUI> sameTypeList, VerticalScrolViewLayout devListScrolView, CategoryFunctionForWinRow deviceRow)
        private void ReFreshDeviceActionForWin(CommonDevice deviceUI, Common.Room curRoom, List<CommonDevice> sameTypeList, VerticalScrolViewLayout devListScrolView, CategoryFunctionForWinRow deviceRow)
        {
            if (Common.Room.CurrentRoom.IsLove)
            if (HdlRoomLogic.Current.CurrentRoom.IsLove)
            {
                deviceRow.SetDeviceIcon(deviceUI.IconPath, deviceUI.OnlineIconPath);
                deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI.CommonDevice));
                if (Common.Room.CurrentRoom.IsCollectInRoom(deviceUI.FileName) == false)
                deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI));
                if (HdlRoomLogic.Current.IsCollectInRoom(deviceUI) == false)
                {
                    devListScrolView.RemoveViewByTag(deviceUI);
                    sameTypeList.Remove(deviceUI);
                    if (sameTypeList.Count == 0)
                    {
                        RefreshFunction(Common.Room.CurrentRoom);
                        RefreshFunction(HdlRoomLogic.Current.CurrentRoom);
                    }
                }
            }
            else
            {
                if (curRoom.Id != Common.Room.CurrentRoom.Id)
                if (curRoom.Id != HdlRoomLogic.Current.CurrentRoom.Id)
                {
                    Shared.Common.Room.CurrentRoom.DeleteDevice(deviceUI.FileName);
                    HdlRoomLogic.Current.DeleteDevice(deviceUI);
                    devListScrolView.RemoveViewByTag(deviceUI);
                    sameTypeList.Remove(deviceUI);
                    if (sameTypeList.Count == 0)
                    {
                        RefreshFunction(Common.Room.CurrentRoom);
                        RefreshFunction(HdlRoomLogic.Current.CurrentRoom);
                    }
                }
                else
                {
                    deviceRow.SetDeviceIcon(deviceUI.IconPath, deviceUI.OnlineIconPath);
                    deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI.CommonDevice));
                    deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI));
                }
            }
        }
@@ -1876,7 +1874,8 @@
            functionSceneAutoBodyView.AddChidren(functionSceneBodyView);
            RoomButton curBtn = new RoomButton(0, 0);
            foreach (var room in Common.Room.CurrentRoom.GetRoomsByCurrentFloorIdAppendLoveRoom())
            var lisrRoom = HdlRoomLogic.Current.GetRoomsByCurrentFloorIdAppendLoveRoom();
            foreach (var room in lisrRoom)
            {
                var row = new FrameLayout()
                {
@@ -1891,7 +1890,7 @@
                roomBtn.SetTitle(room.Name);
                row.AddChidren(roomBtn);
                if (room.Id == Common.Room.CurrentRoom.Id)
                if (room.Id == HdlRoomLogic.Current.CurrentRoom.Id)
                {
                    roomBtn.IsSelected = true;
                    curBtn = roomBtn;
@@ -1914,7 +1913,7 @@
                    sender.IsSelected = true;
                    curBtn.IsSelected = false;
                    curBtn = sender;
                    Common.Room.CurrentRoom = room;
                    HdlRoomLogic.Current.CurrentRoom = room;
                    if (sceneBtn.IsSelected)
                    {
                        RefreshScene(room);