黄学彪
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)
                                        {
@@ -284,14 +284,6 @@
                                                    ac.currentSystemMode = attList.AttriButeData;
                                                    ac.LastDateTime = DateTime.Now;
                                                    break;
                                                case 4099:
                                                    var value = Convert.ToString(attList.AttriButeData, 2).PadLeft(16, '0');
                                                    var modeStr = value.Substring(value.Length - 5, 5);
                                                    for (int j = 0; j < modeStr.Length; j++)
                                                    {
                                                        ac.listSupportMode[j] = Convert.ToInt32(modeStr[j]) == 49 ? 1 : 0;
                                                    }
                                                    break;
                                                case 4097:
                                                    //过虑网清洗标志:42
                                                    ac.CleanStatu = attList.AttriButeData == 42;
@@ -300,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)
@@ -324,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;
                                    }
@@ -338,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;
@@ -367,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)
@@ -392,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)
@@ -417,7 +409,7 @@
                                                    tempera.LastDateTime = DateTime.Now;
                                                }
                                                var row = rowLayout.GetChildren(0) as CategoryFunctionRow;
                                                row.SetStatuText(deviceUI.GetDeviceStatu());
                                                row.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI));
                                            }
                                        }
                                    }
@@ -440,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;
                            }
                        }
@@ -493,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;
                            }
@@ -725,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();
            };
        }
@@ -870,7 +862,7 @@
        /// </summary>
        private void InitData()
        {
            typeDeviceDic = new Dictionary<int, List<DeviceUI>> { };
            typeDeviceDic = new Dictionary<int, List<CommonDevice>> { };
            typeIdDic = new Dictionary<int, DeviceConcreteType> { };
        }
@@ -879,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;
                }
@@ -1046,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++)
@@ -1062,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(() =>
@@ -1080,7 +1072,7 @@
                                        {
                                            UserHomeView.ReadStatus(light, () =>
                                            {
                                                ReadDeviceAttributeLogic.Instance.SendLightStatuComand(deviceUI.CommonDevice);
                                                ReadDeviceAttributeLogic.Instance.SendLightStatuComand(deviceUI);
                                            });
                                        }
                                        else
@@ -1088,25 +1080,25 @@
                                            //防止短时间内多次读取状态
                                            if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - light.LastDateTime).TotalSeconds)
                                            {
                                                ReadDeviceAttributeLogic.Instance.SendLightStatuComand(deviceUI.CommonDevice);
                                                ReadDeviceAttributeLogic.Instance.SendLightStatuComand(deviceUI);
                                            }
                                        }
                                    })
                                    { IsBackground = true }.Start();
                                    var deviceRow = new CategoryFunctionRow(0, 35);
                                    deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                                    deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName);
                                    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)
@@ -1117,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)
                                            {
@@ -1128,7 +1120,7 @@
                                            RemoveUpdateControlDeviceStatuAction(zbGateway);
                                            if (sendedControlCommand == false)
                                            {
                                                DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                                HdlDeviceOtherLogic.Current.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                            }
                                        });
                                    };
@@ -1137,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);
@@ -1149,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);
@@ -1157,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(() =>
@@ -1179,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);
                                            }
                                        }
                                    })
@@ -1194,16 +1186,16 @@
                                    var deviceRow = new CategoryFunctionRow(0, 35);
                                    deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                                    deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName);
                                    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)
@@ -1214,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)
                                            {
@@ -1225,7 +1217,7 @@
                                            RemoveUpdateControlDeviceStatuAction(zbGateway);
                                            if (sendedControlCommand == false)
                                            {
                                                DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                                HdlDeviceOtherLogic.Current.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                            }
                                        });
                                    };
@@ -1235,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) =>
                                        {
@@ -1249,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);
@@ -1258,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(() =>
@@ -1280,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);
                                            }
                                        }
                                    })
@@ -1295,17 +1287,17 @@
                                    var deviceRow = new CategoryFunctionRow(0, 35);
                                    deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                                    deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName);
                                    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)
@@ -1316,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)
                                            {
@@ -1327,7 +1319,7 @@
                                            RemoveUpdateControlDeviceStatuAction(zbGateway);
                                            if (sendedControlCommand == false)
                                            {
                                                DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                                HdlDeviceOtherLogic.Current.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                            }
                                        });
                                    };
@@ -1338,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);
@@ -1351,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);
@@ -1359,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(() =>
@@ -1382,7 +1374,7 @@
                                            //发送读取状态命令
                                            UserView.UserHomeView.ReadStatus(ac, () =>
                                            {
                                                ReadDeviceAttributeLogic.Instance.SendACStatuComand(deviceUI.CommonDevice);
                                                ReadDeviceAttributeLogic.Instance.SendACStatuComand(deviceUI);
                                            });
                                        }
                                        else
@@ -1390,7 +1382,7 @@
                                            //防止短时间内多次读取设备状态
                                            if ((DateTime.Now - ac.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                                            {
                                                ReadDeviceAttributeLogic.Instance.SendACStatuComand(deviceUI.CommonDevice);
                                                ReadDeviceAttributeLogic.Instance.SendACStatuComand(deviceUI);
                                            }
                                        }
                                    })
@@ -1398,17 +1390,17 @@
                                    var deviceRow = new CategoryFunctionRow(0, 35);
                                    deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                                    deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName);
                                    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;
@@ -1420,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)
                                            {
@@ -1431,7 +1423,7 @@
                                            RemoveUpdateControlDeviceStatuAction(zbGateway);
                                            if (sendedControlCommand == false)
                                            {
                                                DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                                HdlDeviceOtherLogic.Current.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                            }
                                        });
                                    };
@@ -1441,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);
@@ -1454,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);
@@ -1463,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(() =>
@@ -1485,7 +1477,7 @@
                                        {
                                            UserHomeView.ReadStatus(rollerShade, () =>
                                            {
                                                ReadDeviceAttributeLogic.Instance.SendCurtainStatuComand(deviceUI.CommonDevice);
                                                ReadDeviceAttributeLogic.Instance.SendCurtainStatuComand(deviceUI);
                                            });
                                        }
                                        else
@@ -1493,7 +1485,7 @@
                                            //防止短时间内多次读取
                                            if ((DateTime.Now - rollerShade.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                                            {
                                                ReadDeviceAttributeLogic.Instance.SendCurtainStatuComand(deviceUI.CommonDevice);
                                                ReadDeviceAttributeLogic.Instance.SendCurtainStatuComand(deviceUI);
                                            }
                                        }
                                    })
@@ -1501,8 +1493,8 @@
                                    var deviceRow = new CategoryFunctionForWinRow(0, 35);
                                    deviceRow.Init(deviceUI);
                                    deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName);
                                    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);
@@ -1530,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);
@@ -1542,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);
@@ -1550,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(deviceUI.CommonDevice.DeviceEpointName);
                                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();
@@ -1580,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);
@@ -1588,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(deviceUI.CommonDevice.DeviceEpointName);
                                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);
@@ -1611,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);
@@ -1619,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(() =>
@@ -1641,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);
                                                }
                                            });
                                        }
@@ -1655,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);
                                                }
                                            }
                                        }
@@ -1668,8 +1660,8 @@
                                    var deviceRow = new CategoryFunctionRow(0, 35);
                                    deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                                    deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName);
                                    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);
@@ -1679,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);
@@ -1687,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;
@@ -1700,8 +1692,8 @@
                            {
                                var deviceRow = new CategoryFunctionRow(0, 35);
                                deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                                deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName);
                                deviceRow.SetStatuText(deviceUI.GetDeviceStatu());
                                deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI));
                                deviceRow.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI));
                                deviceRow.HideSwitchBtn(true);
                                deviceTypeRowLayout.AddChidren(deviceRow);
@@ -1710,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);
@@ -1718,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;
@@ -1734,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)
                                    {
@@ -1758,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;
@@ -1780,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(deviceUI.CommonDevice.DeviceEpointName);
                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(deviceUI.CommonDevice.DeviceEpointName);
                    deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI));
                }
            }
        }
@@ -1823,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(deviceUI.CommonDevice.DeviceEpointName);
                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(deviceUI.CommonDevice.DeviceEpointName);
                    deviceRow.SetTitle(Common.LocalDevice.Current.GetDeviceEpointName(deviceUI));
                }
            }
        }
@@ -1884,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()
                {
@@ -1899,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;
@@ -1922,7 +1913,7 @@
                    sender.IsSelected = true;
                    curBtn.IsSelected = false;
                    curBtn = sender;
                    Common.Room.CurrentRoom = room;
                    HdlRoomLogic.Current.CurrentRoom = room;
                    if (sceneBtn.IsSelected)
                    {
                        RefreshScene(room);
@@ -2205,7 +2196,7 @@
                            if (logiciocnBtn.Tag.ToString() == "3")
                            {
                                Common.Logic.CurrentLogic.LogicName = logicnameBtn.Text;
                                Common.Logic.CurrentLogic.LogicCustomPushText = Common.Logic.CurrentLogic.LogicName + Language.StringByID(MyInternationalizationString.defaulttext);
                                //Common.Logic.CurrentLogic.LogicCustomPushText = Common.Logic.CurrentLogic.LogicName + Language.StringByID(MyInternationalizationString.defaulttext);
                                var addLogicPage = new Logic.AddLogicPage();
                                HomePage.Instance.AddChidren(addLogicPage);
                                HomePage.Instance.PageIndex += 1;
@@ -2215,7 +2206,7 @@
                            {
                                Common.Logic.CurrentLogic.LogicName = logicnameBtn.Text;
                                Common.Logic.CurrentLogic.LogicCustomPushText = Common.Logic.CurrentLogic.LogicName + Language.StringByID(MyInternationalizationString.defaulttext);
                                //Common.Logic.CurrentLogic.LogicCustomPushText = Common.Logic.CurrentLogic.LogicName + Language.StringByID(MyInternationalizationString.defaulttext);
                                Logic.TemplatePage templatePage = new Logic.TemplatePage();
                                Logic.TemplatePage.s = logiciocnBtn.Tag.ToString();
                                HomePage.Instance.AddChidren(templatePage);
@@ -2420,7 +2411,10 @@
                    var logicCommunalPage = new Logic.LogicCommunalPage();
                    HomePage.Instance.AddChidren(logicCommunalPage);
                    HomePage.Instance.PageIndex += 1;
                    logicCommunalPage.Show(() => { logicnameBtn.Text = logic.LogicName; Automationview(refresview,no); });
                    logicCommunalPage.Show(() => {
                        logicnameBtn.Text = logic.LogicName;
                        Automationview(refresview,no);
                    });
                };
@@ -2435,18 +2429,16 @@
                logicRowlayout.AddRightView(del);
                del.MouseUpEventHandler += (sender, e) =>
                {
                    var alert = new Alert(Language.StringByID(MyInternationalizationString.tip), Language.StringByID(MyInternationalizationString.doyouwanttodelete),
                                             Language.StringByID(MyInternationalizationString.cancel), Language.StringByID(MyInternationalizationString.confrim));
                    alert.ResultEventHandler += (sender1, e1) =>
                    {
                        if (e1)
                        {
                            Common.Logic.LogicList.Remove(logic);
                            Automationview(refresview,no);
                            Logic.Send.DelLogic(logic.LogicId);
                        }
                    var alert = new UserCenter.ShowMsgControl(UserCenter.ShowMsgType.Confirm,
                      Language.StringByID(MyInternationalizationString.doyouwanttodelete),
                      Language.StringByID(MyInternationalizationString.confrim));
                    alert.Show();
                    alert.ConfirmClickEvent += () =>
                    {
                        Common.Logic.LogicList.Remove(logic);
                        Automationview(refresview, no);
                        Logic.Send.DelLogic(logic.LogicId);
                    };
                    alert.Show();
                };
                var line = new Button