黄学彪
2019-10-28 1f5636d69332170ea3a41c76c9519f6ff6f0a8d9
ZigbeeApp/Shared/Phone/Device/Category/Category.cs
@@ -36,9 +36,13 @@
        /// </summary>
        private ButtonLineForm automationBtn;
        /// <summary>
        /// 中部背景bodyView
        /// 场景功能中部背景bodyView
        /// </summary>
        public FrameLayout functionSceneBodyView;
        /// <summary>
        /// 中部背景bodyView
        /// </summary>
        public FrameLayout functionSceneAutoBodyView;
        /// <summary>
        /// 相同的设备列表
        /// </summary>
@@ -86,7 +90,7 @@
        /// <summary>
        /// 设备类型RowLayout
        /// </summary>
        private RowLayout typeRowLayout;
        private FrameLayout typeRowLayout;
        /// <summary>
        /// 楼层
        /// </summary>
@@ -158,10 +162,10 @@
                            {
                                case DeviceType.OnOffOutput:
                                    //开关功能
                                    if ((common as ToggleLight).DeviceStatusReport.CluterID == 6)
                                    if (common.DeviceStatusReport.CluterID == 6)
                                    {
                                        var light = deviceUI.CommonDevice as ToggleLight;
                                        light.DeviceStatusReport = (common as ToggleLight).DeviceStatusReport;
                                        light.DeviceStatusReport = common.DeviceStatusReport;
                                        for (int j = 0; j < rowLayout.ChildrenCount; j++)
                                        {
                                            var tempView = rowLayout.GetChildren(j);
@@ -183,7 +187,7 @@
                                            }
                                        }
                                    }
                                    if ((common as ToggleLight).DeviceStatusReport.CluterID == 3)
                                    if (common.DeviceStatusReport.CluterID == 3)
                                    {
                                        var light = deviceUI.CommonDevice as ToggleLight;
                                        light.IsOnline = 1;
@@ -206,10 +210,10 @@
                                case DeviceType.AirSwitch:
                                    //开关功能
                                    if ((common as ZigBee.Device.AirSwitch).DeviceStatusReport.CluterID == 6)
                                    if (common.DeviceStatusReport.CluterID == 6)
                                    {
                                        var airSwitch = deviceUI.CommonDevice as ZigBee.Device.AirSwitch;
                                        airSwitch.DeviceStatusReport = (common as ZigBee.Device.AirSwitch).DeviceStatusReport;
                                        airSwitch.DeviceStatusReport = common.DeviceStatusReport;
                                        for (int j = 0; j < rowLayout.ChildrenCount; j++)
                                        {
                                            var tempView = rowLayout.GetChildren(j);
@@ -231,7 +235,7 @@
                                            }
                                        }
                                    }
                                    if ((common as ZigBee.Device.AirSwitch).DeviceStatusReport.CluterID == 3)
                                    if (common.DeviceStatusReport.CluterID == 3)
                                    {
                                        var airSwitch = deviceUI.CommonDevice as ZigBee.Device.AirSwitch;
                                        airSwitch.IsOnline = 1;
@@ -252,7 +256,7 @@
                                    }
                                    break;
                                case DeviceType.WindowCoveringDevice:
                                    if ((common as Rollershade).DeviceStatusReport.CluterID == 3)
                                    if (common.DeviceStatusReport.CluterID == 3)
                                    {
                                        var rollerShape = deviceUI.CommonDevice as Rollershade;
                                        //记录回复时间
@@ -275,15 +279,15 @@
                                case DeviceType.Thermostat:
                                    //AC功能
                                    if ((common as ZigBee.Device.AC).DeviceStatusReport.CluterID == 513)
                                    if (common.DeviceStatusReport.CluterID == 513)
                                    {
                                        var attriButeList = (common as ZigBee.Device.AC).DeviceStatusReport.AttriBute;
                                        var attriButeList = common.DeviceStatusReport.AttriBute;
                                        if (attriButeList == null || attriButeList.Count == 0)
                                        {
                                            return;
                                        }
                                        var ac = deviceUI.CommonDevice as ZigBee.Device.AC;
                                        ac.DeviceStatusReport = (common as ZigBee.Device.AC).DeviceStatusReport;
                                        ac.DeviceStatusReport = common.DeviceStatusReport;
                                        switch (attriButeList[0].AttributeId)
                                        {
                                            case 0:
@@ -332,7 +336,7 @@
                                        }
                                    }
                                    if ((common as ZigBee.Device.AC).DeviceStatusReport.CluterID == 3)
                                    if (common.DeviceStatusReport.CluterID == 3)
                                    {
                                        var ac = deviceUI.CommonDevice as ZigBee.Device.AC;
                                        ac.IsOnline = 1;
@@ -354,10 +358,10 @@
                                    break;
                                case DeviceType.DimmableLight:
                                    //调光灯功能
                                    if ((common as ZigBee.Device.DimmableLight).DeviceStatusReport.CluterID == 6)
                                    if (common.DeviceStatusReport.CluterID == 6)
                                    {
                                        var dimmableLight = deviceUI.CommonDevice as ZigBee.Device.DimmableLight;
                                        dimmableLight.DeviceStatusReport = (common as ZigBee.Device.DimmableLight).DeviceStatusReport;
                                        dimmableLight.DeviceStatusReport = common.DeviceStatusReport;
                                        for (int j = 0; j < rowLayout.ChildrenCount; j++)
                                        {
                                            var tempView = rowLayout.GetChildren(j);
@@ -379,7 +383,7 @@
                                            }
                                        }
                                    }
                                    if ((common as ZigBee.Device.DimmableLight).DeviceStatusReport.CluterID == 3)
                                    if (common.DeviceStatusReport.CluterID == 3)
                                    {
                                        var dimmableLight = deviceUI.CommonDevice as ZigBee.Device.DimmableLight;
                                        dimmableLight.IsOnline = 1;
@@ -539,6 +543,7 @@
        /// <param name="selectedBtn">选中那个界面 0--功能 1--场景 2--自动化 </param>
        public void Show(int selectedBtn = 1)
        {
            ZbGateway.StatusList.Add(this);
            RemoveAll();
@@ -580,7 +585,7 @@
            var midFL = new FrameLayout
            {
                Y = topView.Bottom,
                Height = Application.GetRealHeight(CommonPage.AppRealHeight - CommonPage.TabbarHeight) - topView.Bottom,
                Height = Application.GetRealHeight(1549),
                BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor
            };
            AddChidren(midFL);
@@ -591,18 +596,17 @@
                BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor
            };
            midFL.AddChidren(functionSceneAutoBG);
            //功能
            functionBtn = new ButtonLineForm(CommonFormResouce.X_Left, 34, 150, 68);
            functionSceneAutoBG.AddChidren(functionBtn);
            functionBtn.Init();
            functionBtn.SetTitle(R.MyInternationalizationString.Function);
            //场景
            sceneBtn = new ButtonLineForm(CommonFormResouce.X_Left + 150 + 20, 34, 150, 68);
            sceneBtn = new ButtonLineForm(CommonFormResouce.X_Left, 34, 150, 68);
            functionSceneAutoBG.AddChidren(sceneBtn);
            sceneBtn.Init();
            sceneBtn.SetTitle(R.MyInternationalizationString.Scence);
            //功能
            functionBtn = new ButtonLineForm(CommonFormResouce.X_Left + 150 + 20, 34, 150, 68);
            functionSceneAutoBG.AddChidren(functionBtn);
            functionBtn.Init();
            functionBtn.SetTitle(R.MyInternationalizationString.Function);
            //自动化
            automationBtn = new ButtonLineForm(CommonFormResouce.X_Left + 150 * 2 + 20, 34, 150, 68);
            automationBtn.Init();
@@ -639,76 +643,13 @@
                functionSceneAutoBG.AddChidren(selectFloorBtn);
            }
            var roomFL = new HorizontalScrolViewLayout()
            functionSceneAutoBodyView = new FrameLayout
            {
                X= Application.GetRealWidth(CommonFormResouce.X_Left),
                Y = functionSceneAutoBG.Bottom,
                Height = Application.GetRealHeight(167),
                Width=Application.GetRealWidth(CommonPage.AppRealWidth-CommonFormResouce.X_Left),
                Height = Application.GetRealHeight(1423),
                BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor
            };
            midFL.AddChidren(roomFL);
            Button curBtn = new Button();
            for(int i=0;i<Config.Instance.Home.RoomFilePathList.Count;i++)
            {
                var roomFilePath = Config.Instance.Home.RoomFilePathList[i];
                var room = Shared.Common.Room.GetRoomByFilePath(roomFilePath);
                if (room == null)
                {
                    continue;
                }
                var row = new RowLayout()
                {
                    Width = Application.GetRealWidth(187+50),
                    Height = Application.GetRealHeight(167),
                    LineColor= ZigbeeColor.Current.GXCGrayBackgroundColor
                };
                roomFL.AddChidren(row);
                var roomBtn = new Button()
                {
                    Width = Application.GetRealWidth(187),
                    Height = Application.GetRealHeight(78),
                    Radius=(uint)Application.GetRealHeight(78/2),
                    Gravity = Gravity.Center,
                    Text=room.Name,
                    TextColor=ZigbeeColor.Current.GXCTextGrayColor,
                    SelectedTextColor=ZigbeeColor.Current.GXCTextWhiteColor,
                    BackgroundColor=ZigbeeColor.Current.GXCButtonUnSelectedColor3,
                    SelectedBackgroundColor=ZigbeeColor.Current.GXCButtonSelectedColor,
                    BorderColor=ZigbeeColor.Current.GXCBorderUnSelectedColor,
                    BorderWidth=1
                };
                row.AddChidren(roomBtn);
                if(Shared.Common.Room.CurrentRoom.FileName==roomFilePath)
                {
                    roomBtn.IsSelected = true;
                    curBtn = roomBtn;
                }
                roomBtn.MouseUpEventHandler += (sender, e) =>
                {
                    if ((sender as Button) == curBtn)
                    {
                        return;
                    }
                    (sender as Button).IsSelected = true;
                    curBtn.IsSelected = false;
                    curBtn = (sender as Button);
                    Shared.Common.Room.CurrentRoom = room;
                };
            }
            //功能和场景bodyView
            functionSceneBodyView = new FrameLayout()
            {
                Y = roomFL.Bottom,
                Height = Application.GetRealHeight(CommonPage.AppRealHeight - CommonPage.TabbarHeight) - functionBtn.Height - topView.Height - roomFL.Height - CommonPage.LineHeight,
                BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor
            };
            midFL.AddChidren(functionSceneBodyView);
            midFL.AddChidren(functionSceneAutoBodyView);
            if (selectedBtn == 0)
            {
@@ -763,10 +704,11 @@
        {
            var floors = new SelectFloor ();
            AddChidren(floors);
            floors.Init(599,357);
            floors.Init(580,330,Direction.Right);
            floors.FloorAction += (floorName) =>
            {
                floorBtn.Text = floorName;
                RefreshBodyView();
            };
        }
@@ -843,12 +785,6 @@
            var scene = new CategoryAddScene();
            UserView.HomePage.Instance.AddChidren(scene);
            UserView.HomePage.Instance.PageIndex += 1;
            CategoryAddScene.sceneTargetDevicesList?.Clear();
            CategoryAddScene.SceneText = "";
            CategoryAddScene.CurrentRoom = Shared.Common.Room.CurrentRoom;
            CategoryAddScene.ModifySceneUI = null;
            CategoryAddScene.Modify = false;
            CategoryAddScene.ImagePath = "Scene/Scene0.png";
            scene.Show();
        }
@@ -875,7 +811,7 @@
        /// </summary>
        public void RefreshBodyView()
        {
            functionSceneBodyView.RemoveAll();
            functionSceneAutoBodyView.RemoveAll();
            if (functionBtn.IsSelected)
            {
                ShowFunction();
@@ -898,590 +834,7 @@
        /// </summary>
        public void ShowFunction()
        {
            //移除监听
            RemoveAllUpdateControlDeviceStatuAction();
            //选择功能--直接从房间的devicelist中获取
            Shared.Common.Room.GetAllRoomDeviceUIList();
            Shared.Common.Room.GetAllRoomDeviceTypeList();
            if (Common.Room.AllRoomDeviceUIList == null)
            {
                return;
            }
            if (Common.Room.AllRoomDeviceUIList.Count == 0)
            {
                ShowNoFunctionTip();
            }
            else
            {
                functionTypeScrowView = new HorizontalScrolViewLayout
                {
                    X=Application.GetRealWidth(CommonFormResouce.X_Left),
                    Height = Application.GetRealHeight(279),
                    Width = Application.GetRealWidth(1028),
                    BackgroundColor=ZigbeeColor.Current.GXCBackgroundColor
                };
                functionSceneBodyView.AddChidren(functionTypeScrowView);
                deviceListScrolView = new VerticalScrolViewLayout
                {
                    X = Application.GetRealWidth(CommonFormResouce.X_Left),
                    Y = functionTypeScrowView.Bottom + Application.GetRealHeight(50),
                    Width = Application.GetRealWidth(1028),
                    Height = functionSceneBodyView.Height - Application.GetRealHeight(279+50) - 1,
                    BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
                };
                functionSceneBodyView.AddChidren(deviceListScrolView);
                tempFunctionTypeBtn = new FunctionButton();
                foreach (var deviceType in Common.Room.AllRoomDeviceTypeList)
                {
                    typeRowLayout = new RowLayout()
                    {
                        Width = Application.GetRealWidth(CommonPage.AppRealWidth / 5),
                        LineColor = ZigbeeColor.Current.GXCBackgroundColor,
                        Tag = deviceType
                    };
                    functionTypeScrowView.AddChidren(typeRowLayout);
                    functionTypeIMG = new FunctionButton()
                    {
                        Tag = deviceType
                    };
                    functionTypeIMG.Init(DeviceUI.GetDeviceTypeUnSelectedImagePath(deviceType), DeviceUI.GetDeviceTypeUnSelectedImagePath(deviceType));
                    functionTypeIMG.SetTitle(DeviceUI.GetDeviceTypeName(deviceType));
                    typeRowLayout.AddChidren(functionTypeIMG);
                    functionTypeIMG.ImageBtn.MouseUpEventHandler += ShowSameTypeFunction;
                    functionTypeIMG.NameBtn.MouseUpEventHandler += ShowSameTypeFunction;
                    functionTypeIMG.ImageBG.MouseUpEventHandler += ShowSameTypeFunction;
                    if (deviceType == Shared.Common.Room.AllRoomDeviceUIList[0].CommonDevice.Type)
                    {
                        ShowSameTypeFunction(functionTypeIMG.ImageBtn, null);
                    }
                }
            }
        }
        /// <summary>
        /// 显示相同类型的功能
        /// </summary>
        /// <param name="typeSender">typeSender.</param>
        /// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param>
        private void ShowSameTypeFunction(object typeSender, MouseEventArgs mouseEventArgs)
        {
            //选择功能--直接从房间的devicelist中获取
            Shared.Common.Room.GetAllRoomDeviceUIList();
            tempFunctionTypeBtn.IsSelected = false;
            tempFunctionTypeBtn = (typeSender as Button).Parent as FunctionButton;
            ((typeSender as Button).Parent as FunctionButton).IsSelected = true;
            deviceListScrolView.RemoveAll();
            var sameTypeList = new List<DeviceUI> { };
            foreach (var devieceUI in Common.Room.AllRoomDeviceUIList)
            {
                if (devieceUI == null || devieceUI.CommonDevice == null)
                {
                    continue;
                }
                if (devieceUI.CommonDevice.Type.ToString() == (typeSender as Button).Tag.ToString())
                {
                    if (!sameTypeList.Contains(devieceUI))
                    {
                        sameTypeList.Add(devieceUI);
                    }
                }
            }
            foreach (var deviceUI in sameTypeList)
            {
                //删除设备
                EventHandler<MouseEventArgs> delEvent = (delSender, delE) =>
                {
                    var alert = new CustomAlert();
                    AddChidren(alert);
                    alert.Show(Language.StringByID(R.MyInternationalizationString.ConfirmDelete));
                    alert.ResultEventHandler += (e2) =>
                    {
                        if (e2)
                        {
                            Shared.Common.Room.CurrentRoom.DeleteDevice(deviceUI.CommonDevice);
                            deviceListScrolView.RemoveViewByTag((delSender as Button).Tag);
                            sameTypeList.Remove(deviceUI);
                            if (sameTypeList.Count == 0)
                            {
                                RefreshBodyView();
                            }
                        }
                    };
                };
                EventHandler<MouseEventArgs> deviceDetailHandler = (send2, e2) =>
                {
                    var detailInfo = new Device.CommonForm.DeviceDetailInfo { };
                    UserView.HomePage.Instance.AddChidren(detailInfo);
                    UserView.HomePage.Instance.PageIndex += 1;
                    detailInfo.Show(deviceUI, Shared.Common.Room.CurrentRoom);
                    detailInfo.action = RefreshBodyView;
                };
                if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.OnOffOutput)
                {
                    //灯
                    var light = deviceUI.CommonDevice as ZigBee.Device.ToggleLight;
                    //补上非远程
                    if (light.Gateway == null)
                    {
                        continue;
                    }
                    if (light.Gateway.IsVirtual)
                    {
                        UserHomeView.ReadStatus(light, () =>
                        {
                            light.ReadOnOffStatus();
                            light.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                        });
                    }
                    else
                    {
                        //防止短时间内多次读取状态
                        if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - light.LastDateTime).TotalSeconds)
                        {
                            light.ReadOnOffStatus();
                            light.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                        }
                    }
                    var deviceTypeRowLayout = new RowLayout()
                    {
                        Height = Application.GetRealHeight(127+35),
                        LineColor = ZigbeeColor.Current.GXCBackgroundColor,
                        Tag = deviceUI
                    };
                    deviceListScrolView.AddChidren(deviceTypeRowLayout);
                    var deviceRow = new FunctionRow(0, 35);
                    deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                    deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName);
                    deviceRow.SetStatu(light.IsOnline == 1);
                    deviceTypeRowLayout.AddChidren(deviceRow);
                    deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) =>
                    {
                        zbGateway = deviceUI.CommonDevice.Gateway;
                        sendedControlCommand = false;
                        zbGateway.ReportAction += UpdateDeviceControllStatu;
                        AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
                        (send2 as CommonForm.SelectedStatuButton).IsSelected = !(send2 as CommonForm.SelectedStatuButton).IsSelected;
                        if ((send2 as CommonForm.SelectedStatuButton).IsSelected)
                        {
                            light.SwitchControl(1);
                        }
                        else
                        {
                            light.SwitchControl(0);
                        }
                        //控制延时回调
                        DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () =>
                        {
                            if (Parent == null)
                            {
                                return;
                            }
                            RemoveUpdateControlDeviceStatuAction(zbGateway);
                            if (sendedControlCommand == false)
                            {
                                DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                            }
                        });
                    };
                    var editBtn = new CommonForm.RowLayoutEditButton()
                    {
                        Tag = deviceUI,
                        Radius = 0
                    };
                    deviceTypeRowLayout.AddRightView(editBtn);
                    editBtn.MouseUpEventHandler += deviceDetailHandler;
                    var delBtn = new Device.CommonForm.RowLayoutDeleteButton()
                    {
                        Tag = deviceUI,
                        Radius = 0
                    };
                    deviceTypeRowLayout.AddRightView(delBtn);
                    delBtn.MouseUpEventHandler += delEvent;
                }
                else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.AirSwitch)
                {
                    //空气开关
                    var airSwitch = deviceUI.CommonDevice as ZigBee.Device.AirSwitch;
                    //补上非远程
                    if (airSwitch.Gateway == null)
                    {
                        continue;
                    }
                    if (airSwitch.Gateway.IsVirtual)
                    {
                        UserHomeView.ReadStatus(airSwitch, () =>
                        {
                            airSwitch.ReadOnOffStatus();
                            airSwitch.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                        });
                    }
                    else
                    {
                        if ((DateTime.Now - airSwitch.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                        {
                            airSwitch.ReadOnOffStatus();
                            airSwitch.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                        }
                    }
                    var deviceTypeRowLayout = new RowLayout()
                    {
                        Height = Application.GetRealHeight(127 + 35),
                        LineColor = ZigbeeColor.Current.GXCBackgroundColor,
                        Tag = deviceUI
                    };
                    deviceListScrolView.AddChidren(deviceTypeRowLayout);
                    var deviceRow = new FunctionRow(0, 35);
                    deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                    deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName);
                    deviceRow.SetStatu(airSwitch.IsOnline == 1);
                    deviceTypeRowLayout.AddChidren(deviceRow);
                    deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) =>
                    {
                        zbGateway = deviceUI.CommonDevice.Gateway;
                        sendedControlCommand = false;
                        zbGateway.ReportAction += UpdateDeviceControllStatu;
                        AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
                        (send2 as CommonForm.SelectedStatuButton).IsSelected = !(send2 as CommonForm.SelectedStatuButton).IsSelected;
                        if ((send2 as CommonForm.SelectedStatuButton).IsSelected)
                        {
                            airSwitch.SwitchControl(1);
                        }
                        else
                        {
                            airSwitch.SwitchControl(0);
                        }
                        //控制延时回调
                        DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () =>
                        {
                            if (Parent == null)
                            {
                                return;
                            }
                            RemoveUpdateControlDeviceStatuAction(zbGateway);
                            if (sendedControlCommand == false)
                            {
                                DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                            }
                        });
                    };
                    var editBtn = new CommonForm.RowLayoutEditButton()
                    {
                        Tag = deviceUI,
                        Radius = 0
                    };
                    deviceTypeRowLayout.AddRightView(editBtn);
                    editBtn.MouseUpEventHandler += deviceDetailHandler;
                    var delBtn = new Device.CommonForm.RowLayoutDeleteButton()
                    {
                        Tag = deviceUI,
                        Radius = 0
                    };
                    deviceTypeRowLayout.AddRightView(delBtn);
                    delBtn.MouseUpEventHandler += delEvent;
                }
                else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.DimmableLight)
                {
                    //调光灯
                    var dimmableLight = deviceUI.CommonDevice as ZigBee.Device.DimmableLight;
                    //补上非远程
                    if (dimmableLight.Gateway == null)
                    {
                        continue;
                    }
                    if (dimmableLight.Gateway.IsVirtual)
                    {
                        UserHomeView.ReadStatus(dimmableLight, () =>
                        {
                            dimmableLight.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                            dimmableLight.ReadOnOffStatus();
                            dimmableLight.ReadLevel();
                        });
                    }
                    else
                    {
                        if ((DateTime.Now - dimmableLight.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                        {
                            dimmableLight.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                            dimmableLight.ReadOnOffStatus();
                            dimmableLight.ReadLevel();
                        }
                    }
                    var deviceTypeRowLayout = new RowLayout()
                    {
                        Height = Application.GetRealHeight(127 + 35),
                        LineColor = ZigbeeColor.Current.GXCBackgroundColor,
                        Tag = deviceUI
                    };
                    deviceListScrolView.AddChidren(deviceTypeRowLayout);
                    var deviceRow = new FunctionRow(0, 35);
                    deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                    deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName);
                    deviceRow.SetStatu(dimmableLight.IsOnline == 1);
                    deviceTypeRowLayout.AddChidren(deviceRow);
                    deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) =>
                    {
                        zbGateway = deviceUI.CommonDevice.Gateway;
                        sendedControlCommand = false;
                        zbGateway.ReportAction += UpdateDeviceControllStatu;
                        AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
                        (send2 as CommonForm.SelectedStatuButton).IsSelected = !(send2 as CommonForm.SelectedStatuButton).IsSelected;
                        if ((send2 as CommonForm.SelectedStatuButton).IsSelected)
                        {
                            dimmableLight.SwitchControl(1);
                        }
                        else
                        {
                            dimmableLight.SwitchControl(0);
                        }
                        //控制延时回调
                        DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () =>
                        {
                            if (Parent == null)
                            {
                                return;
                            }
                            RemoveUpdateControlDeviceStatuAction(zbGateway);
                            if (sendedControlCommand == false)
                            {
                                DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                            }
                        });
                    };
                    var editBtn = new CommonForm.RowLayoutEditButton()
                    {
                        Tag = deviceUI,
                        Radius = 0
                    };
                    deviceTypeRowLayout.AddRightView(editBtn);
                    editBtn.MouseUpEventHandler += deviceDetailHandler;
                    var delBtn = new Device.CommonForm.RowLayoutDeleteButton()
                    {
                        Tag = deviceUI,
                        Radius = 0
                    };
                    deviceTypeRowLayout.AddRightView(delBtn);
                    delBtn.MouseUpEventHandler += delEvent;
                }
                else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.Thermostat)
                {
                    //空调
                    var ac = deviceUI.CommonDevice as ZigBee.Device.AC;
                    //补上非远程
                    if (ac.Gateway == null)
                    {
                        continue;
                    }
                    if (ac.Gateway.IsVirtual)
                    {
                        //发送读取状态命令
                        UserView.UserHomeView.ReadStatus(ac, () =>
                        {
                            ac.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                            ac.ReadFanMode();
                            ac.ReadSystemMode();
                            ac.ReadLocalTemperature();
                            ac.ReadCoolingSetpoint();
                            ac.ReadHeatingSetpoint();
                        });
                    }
                    else
                    {
                        //防止短时间内多次读取设备状态
                        if ((DateTime.Now - ac.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                        {
                            ac.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                            ac.ReadFanMode();
                            ac.ReadSystemMode();
                            ac.ReadLocalTemperature();
                            ac.ReadCoolingSetpoint();
                            ac.ReadHeatingSetpoint();
                        }
                    }
                    var deviceTypeRowLayout = new RowLayout()
                    {
                        Height = Application.GetRealHeight(127 + 35),
                        LineColor = ZigbeeColor.Current.GXCBackgroundColor,
                        Tag = deviceUI
                    };
                    deviceListScrolView.AddChidren(deviceTypeRowLayout);
                    var deviceRow = new FunctionRow(0, 35);
                    deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                    deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName);
                    deviceRow.SetStatu(ac.IsOnline == 1);
                    deviceTypeRowLayout.AddChidren(deviceRow);
                    deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) =>
                    {
                        zbGateway = deviceUI.CommonDevice.Gateway;
                        sendedControlCommand = false;
                        zbGateway.ReportAction += UpdateDeviceControllStatu;
                        AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
                        (send2 as CommonForm.SelectedStatuButton).IsSelected = !(send2 as CommonForm.SelectedStatuButton).IsSelected;
                        if ((send2 as CommonForm.SelectedStatuButton).IsSelected)
                        {
                            ac.Open();
                        }
                        else
                        {
                            ac.Close();
                        }
                        //控制延时回调
                        DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () =>
                        {
                            if (Parent == null)
                            {
                                return;
                            }
                            RemoveUpdateControlDeviceStatuAction(zbGateway);
                            if (sendedControlCommand == false)
                            {
                                DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                            }
                        });
                    };
                    var editBtn = new CommonForm.RowLayoutEditButton()
                    {
                        Tag = deviceUI,
                        Radius = 0
                    };
                    deviceTypeRowLayout.AddRightView(editBtn);
                    editBtn.MouseUpEventHandler += deviceDetailHandler;
                    var delBtn = new Device.CommonForm.RowLayoutDeleteButton()
                    {
                        Tag = deviceUI,
                        Radius = 0
                    };
                    deviceTypeRowLayout.AddRightView(delBtn);
                    delBtn.MouseUpEventHandler += delEvent;
                }
                else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.WindowCoveringDevice)
                {
                    //卷帘
                    var rollerShade = deviceUI.CommonDevice as ZigBee.Device.Rollershade;
                    //不上非远程
                    if (rollerShade.Gateway == null)
                    {
                        continue;
                    }
                    if (rollerShade.Gateway.IsVirtual)
                    {
                        UserHomeView.ReadStatus(rollerShade, () =>
                        {
                            rollerShade.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                        });
                    }
                    else
                    {
                        //防止短时间内多次读取
                        if ((DateTime.Now - rollerShade.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                        {
                            rollerShade.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                        }
                    }
                    var deviceTypeRowLayout = new RowLayout()
                    {
                        Height = Application.GetRealHeight(127 + 35),
                        LineColor = ZigbeeColor.Current.GXCLineColor,
                        Tag = deviceUI
                    };
                    deviceListScrolView.AddChidren(deviceTypeRowLayout);
                    var deviceRow = new FunctionRow(0, 35);
                    deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                    deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName);
                    deviceRow.SetStatu(rollerShade.IsOnline == 1);
                    deviceTypeRowLayout.AddChidren(deviceRow);
                    var editBtn = new CommonForm.RowLayoutEditButton()
                    {
                        Tag = deviceUI,
                        Radius = 0
                    };
                    deviceTypeRowLayout.AddRightView(editBtn);
                    editBtn.MouseUpEventHandler += deviceDetailHandler;
                    var delBtn = new Device.CommonForm.RowLayoutDeleteButton()
                    {
                        Tag = deviceUI,
                        Radius = 0
                    };
                    deviceTypeRowLayout.AddRightView(delBtn);
                    delBtn.MouseUpEventHandler += delEvent;
                    deviceRow.SwitchBtn.MouseUpEventHandler += (sender, e) =>
                    {
                        zbGateway = deviceUI.CommonDevice.Gateway;
                        sendedControlCommand = false;
                        zbGateway.ReportAction += UpdateDeviceControllStatu;
                        AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
                        (sender as CommonForm.SelectedStatuButton).IsSelected = !(sender as CommonForm.SelectedStatuButton).IsSelected;
                        if ((sender as CommonForm.SelectedStatuButton).IsSelected)
                        {
                            rollerShade.CurtainUpDownStopControl(0);
                        }
                        else
                        {
                            rollerShade.CurtainUpDownStopControl(1);
                        }
                        //控制延时回调
                        DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () =>
                        {
                            if (Parent == null)
                            {
                                return;
                            }
                            RemoveUpdateControlDeviceStatuAction(zbGateway);
                            if (sendedControlCommand == false)
                            {
                                DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                            }
                        });
                    };
                }
                else
                {
                }
            }
            AddRoomView();
        }
        /// <summary>
@@ -1505,13 +858,704 @@
                Height = Application.GetRealHeight(200),
                Width = Application.GetRealWidth(700),
                Gravity = Gravity.CenterHorizontal,
                TextID = R.MyInternationalizationString.NoFunction,
                //Text = "没有功能 \n 请在个人中心中--设备管理处添加",
                Text = Language.StringByID(R.MyInternationalizationString.NoFunction).Replace("{\\r\\n}","\r\n"),
                TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
                TextAlignment = TextAlignment.Center,
                IsMoreLines=true
            };
            functionSceneBodyView.AddChidren(noFunctionTip);
        }
        /// <summary>
        /// RefreshFunction
        /// </summary>
        /// <param name="room"></param>
        private void RefreshFunction(Common.Room room)
        {
            //移除监听
            RemoveAllUpdateControlDeviceStatuAction();
            functionSceneBodyView.RemoveAll();
            if (room.DeviceUIList.Count == 0)
            {
                ShowNoFunctionTip();
            }
            else
            {
                functionTypeScrowView = new HorizontalScrolViewLayout
                {
                    X = Application.GetRealWidth(CommonFormResouce.X_Left),
                    Height = Application.GetRealHeight(279),
                    Width = Application.GetRealWidth(1028),
                    BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
                };
                functionSceneBodyView.AddChidren(functionTypeScrowView);
                deviceListScrolView = new VerticalScrolViewLayout
                {
                    X = Application.GetRealWidth(CommonFormResouce.X_Left),
                    Y = Application.GetRealHeight(35+275),
                    Width = Application.GetRealWidth(1028),
                    Height = Application.GetRealHeight(938) - 1,
                    BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
                };
                functionSceneBodyView.AddChidren(deviceListScrolView);
                tempFunctionTypeBtn = new FunctionButton();
                EventHandler<MouseEventArgs> ShowSameTypeFunction = (object typeSender, MouseEventArgs mouseEventArgs) =>
                {
                    tempFunctionTypeBtn.IsSelected = false;
                    tempFunctionTypeBtn = (typeSender as Button).Parent as FunctionButton;
                    ((typeSender as Button).Parent as FunctionButton).IsSelected = true;
                    deviceListScrolView.RemoveAll();
                    var sameTypeList = new List<DeviceUI> { };
                    foreach (var devieceUI in room.DeviceUIList)
                    {
                        if (devieceUI == null || devieceUI.CommonDevice == null)
                        {
                            continue;
                        }
                        if (devieceUI.CommonDevice.Type.ToString() == (typeSender as Button).Tag.ToString())
                        {
                            if (!sameTypeList.Contains(devieceUI))
                            {
                                sameTypeList.Add(devieceUI);
                            }
                        }
                    }
                    foreach (var deviceUI in sameTypeList)
                    {
                        //删除设备
                        EventHandler<MouseEventArgs> delEvent = (delSender, delE) =>
                        {
                            var alert = new CustomAlert();
                            AddChidren(alert);
                            alert.Show(Language.StringByID(R.MyInternationalizationString.ConfirmDelete));
                            alert.ResultEventHandler += (e2) =>
                            {
                                if (e2)
                                {
                                    Shared.Common.Room.CurrentRoom.DeleteDevice(deviceUI.CommonDevice);
                                    deviceListScrolView.RemoveViewByTag((delSender as Button).Tag);
                                    sameTypeList.Remove(deviceUI);
                                    if (sameTypeList.Count == 0)
                                    {
                                        RefreshBodyView();
                                    }
                                }
                            };
                        };
                        EventHandler<MouseEventArgs> deviceDetailHandler = (send2, e2) =>
                        {
                            var detailInfo = new Device.CommonForm.DeviceDetailInfo { };
                            UserView.HomePage.Instance.AddChidren(detailInfo);
                            UserView.HomePage.Instance.PageIndex += 1;
                            detailInfo.Show(deviceUI, Shared.Common.Room.CurrentRoom);
                            detailInfo.action = RefreshBodyView;
                        };
                        if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.OnOffOutput)
                        {
                            //灯
                            var light = deviceUI.CommonDevice as ZigBee.Device.ToggleLight;
                            //补上非远程
                            if (light.Gateway == null)
                            {
                                continue;
                            }
                            if (light.Gateway.IsVirtual)
                            {
                                UserHomeView.ReadStatus(light, () =>
                                {
                                    light.ReadOnOffStatus();
                                    light.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                });
                            }
                            else
                            {
                                //防止短时间内多次读取状态
                                if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - light.LastDateTime).TotalSeconds)
                                {
                                    light.ReadOnOffStatus();
                                    light.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                }
                            }
                            var deviceTypeRowLayout = new RowLayout()
                            {
                                Height = Application.GetRealHeight(129 + 35),
                                LineColor = ZigbeeColor.Current.GXCBackgroundColor,
                                Tag = deviceUI
                            };
                            deviceListScrolView.AddChidren(deviceTypeRowLayout);
                            var deviceRow = new CategoryFunctionRow(0, 35);
                            deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                            deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName);
                            deviceRow.SetStatu(light.IsOnline == 1);
                            deviceRow.SetZoneText(deviceUI.GetZone());
                            deviceTypeRowLayout.AddChidren(deviceRow);
                            deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) =>
                            {
                                zbGateway = deviceUI.CommonDevice.Gateway;
                                sendedControlCommand = false;
                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
                                (send2 as Button).IsSelected = !(send2 as Button).IsSelected;
                                deviceRow.IsSelected = (send2 as Button).IsSelected;
                                if ((send2 as Button).IsSelected)
                                {
                                    light.SwitchControl(1);
                                }
                                else
                                {
                                    light.SwitchControl(0);
                                }
                                //控制延时回调
                                DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () =>
                                {
                                    if (Parent == null)
                                    {
                                        return;
                                    }
                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                    if (sendedControlCommand == false)
                                    {
                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                    }
                                });
                            };
                            deviceRow.ClickBtn.MouseUpEventHandler += (send2, e2) =>
                            {
                                var lightControl = new Phone.Device.Light.LightControl();
                                UserView.HomePage.Instance.AddChidren(lightControl);
                                UserView.HomePage.Instance.PageIndex += 1;
                                lightControl.action = RefreshBodyView;
                                lightControl.Show(deviceUI, room);
                            };
                            var editBtn = new CommonForm.RowLayoutEditButton()
                            {
                                Tag = deviceUI,
                                Radius = 0
                            };
                            deviceTypeRowLayout.AddRightView(editBtn);
                            editBtn.MouseUpEventHandler += deviceDetailHandler;
                            var delBtn = new Device.CommonForm.RowLayoutDeleteButton()
                            {
                                Tag = deviceUI,
                                Radius = 0
                            };
                            deviceTypeRowLayout.AddRightView(delBtn);
                            delBtn.MouseUpEventHandler += delEvent;
                        }
                        else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.AirSwitch)
                        {
                            //空气开关
                            var airSwitch = deviceUI.CommonDevice as ZigBee.Device.AirSwitch;
                            //补上非远程
                            if (airSwitch.Gateway == null)
                            {
                                continue;
                            }
                            if (airSwitch.Gateway.IsVirtual)
                            {
                                UserHomeView.ReadStatus(airSwitch, () =>
                                {
                                    airSwitch.ReadOnOffStatus();
                                    airSwitch.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                });
                            }
                            else
                            {
                                if ((DateTime.Now - airSwitch.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                                {
                                    airSwitch.ReadOnOffStatus();
                                    airSwitch.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                }
                            }
                            var deviceTypeRowLayout = new RowLayout()
                            {
                                Height = Application.GetRealHeight(127 + 35),
                                LineColor = ZigbeeColor.Current.GXCBackgroundColor,
                                Tag = deviceUI
                            };
                            deviceListScrolView.AddChidren(deviceTypeRowLayout);
                            var deviceRow = new CategoryFunctionRow(0, 35);
                            deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                            deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName);
                            deviceRow.SetStatu(airSwitch.IsOnline == 1);
                            deviceRow.SetZoneText(deviceUI.GetZone());
                            deviceTypeRowLayout.AddChidren(deviceRow);
                            deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) =>
                            {
                                zbGateway = deviceUI.CommonDevice.Gateway;
                                sendedControlCommand = false;
                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
                                (send2 as CommonForm.SelectedStatuButton).IsSelected = !(send2 as CommonForm.SelectedStatuButton).IsSelected;
                                if ((send2 as CommonForm.SelectedStatuButton).IsSelected)
                                {
                                    airSwitch.SwitchControl(1);
                                }
                                else
                                {
                                    airSwitch.SwitchControl(0);
                                }
                                //控制延时回调
                                DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () =>
                                {
                                    if (Parent == null)
                                    {
                                        return;
                                    }
                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                    if (sendedControlCommand == false)
                                    {
                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                    }
                                });
                            };
                            deviceRow.ClickBtn.MouseUpEventHandler += (send2, e2) =>
                            {
                                var lightControl = new Phone.Device.Light.LightControl();
                                UserView.HomePage.Instance.AddChidren(lightControl);
                                UserView.HomePage.Instance.PageIndex += 1;
                                lightControl.action = RefreshBodyView;
                                lightControl.Show(deviceUI, room);
                            };
                            var editBtn = new CommonForm.RowLayoutEditButton()
                            {
                                Tag = deviceUI,
                                Radius = 0
                            };
                            deviceTypeRowLayout.AddRightView(editBtn);
                            editBtn.MouseUpEventHandler += deviceDetailHandler;
                            var delBtn = new Device.CommonForm.RowLayoutDeleteButton()
                            {
                                Tag = deviceUI,
                                Radius = 0
                            };
                            deviceTypeRowLayout.AddRightView(delBtn);
                            delBtn.MouseUpEventHandler += delEvent;
                        }
                        else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.DimmableLight)
                        {
                            //调光灯
                            var dimmableLight = deviceUI.CommonDevice as ZigBee.Device.DimmableLight;
                            //补上非远程
                            if (dimmableLight.Gateway == null)
                            {
                                continue;
                            }
                            if (dimmableLight.Gateway.IsVirtual)
                            {
                                UserHomeView.ReadStatus(dimmableLight, () =>
                                {
                                    dimmableLight.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                    dimmableLight.ReadOnOffStatus();
                                    dimmableLight.ReadLevel();
                                });
                            }
                            else
                            {
                                if ((DateTime.Now - dimmableLight.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                                {
                                    dimmableLight.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                    dimmableLight.ReadOnOffStatus();
                                    dimmableLight.ReadLevel();
                                }
                            }
                            var deviceTypeRowLayout = new RowLayout()
                            {
                                Height = Application.GetRealHeight(129 + 35),
                                LineColor = ZigbeeColor.Current.GXCBackgroundColor,
                                Tag = deviceUI
                            };
                            deviceListScrolView.AddChidren(deviceTypeRowLayout);
                            var deviceRow = new CategoryFunctionRow(0, 35);
                            deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                            deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName);
                            deviceRow.SetStatu(dimmableLight.IsOnline == 1);
                            deviceRow.SetZoneText(deviceUI.GetZone());
                            deviceTypeRowLayout.AddChidren(deviceRow);
                            deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) =>
                            {
                                zbGateway = deviceUI.CommonDevice.Gateway;
                                sendedControlCommand = false;
                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
                                (send2 as CommonForm.SelectedStatuButton).IsSelected = !(send2 as CommonForm.SelectedStatuButton).IsSelected;
                                if ((send2 as CommonForm.SelectedStatuButton).IsSelected)
                                {
                                    dimmableLight.SwitchControl(1);
                                }
                                else
                                {
                                    dimmableLight.SwitchControl(0);
                                }
                                //控制延时回调
                                DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () =>
                                {
                                    if (Parent == null)
                                    {
                                        return;
                                    }
                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                    if (sendedControlCommand == false)
                                    {
                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                    }
                                });
                            };
                            deviceRow.ClickBtn.MouseUpEventHandler += (send2, e2) =>
                            {
                                var dimmableLightControl = new Phone.Device.Light.DimmableLightControl();
                                UserView.HomePage.Instance.AddChidren(dimmableLightControl);
                                UserView.HomePage.Instance.PageIndex += 1;
                                UserView.HomePage.Instance.ScrollEnabled = false;
                                dimmableLightControl.action = RefreshBodyView;
                                dimmableLightControl.Show(deviceUI, room);
                            };
                            var editBtn = new CommonForm.RowLayoutEditButton()
                            {
                                Tag = deviceUI,
                                Radius = 0
                            };
                            deviceTypeRowLayout.AddRightView(editBtn);
                            editBtn.MouseUpEventHandler += deviceDetailHandler;
                            var delBtn = new Device.CommonForm.RowLayoutDeleteButton()
                            {
                                Tag = deviceUI,
                                Radius = 0
                            };
                            deviceTypeRowLayout.AddRightView(delBtn);
                            delBtn.MouseUpEventHandler += delEvent;
                        }
                        else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.Thermostat)
                        {
                            //空调
                            var ac = deviceUI.CommonDevice as ZigBee.Device.AC;
                            //补上非远程
                            if (ac.Gateway == null)
                            {
                                continue;
                            }
                            if (ac.Gateway.IsVirtual)
                            {
                                //发送读取状态命令
                                UserView.UserHomeView.ReadStatus(ac, () =>
                                {
                                    ac.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                    ac.ReadFanMode();
                                    ac.ReadSystemMode();
                                    ac.ReadLocalTemperature();
                                    ac.ReadCoolingSetpoint();
                                    ac.ReadHeatingSetpoint();
                                });
                            }
                            else
                            {
                                //防止短时间内多次读取设备状态
                                if ((DateTime.Now - ac.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                                {
                                    ac.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                    ac.ReadFanMode();
                                    ac.ReadSystemMode();
                                    ac.ReadLocalTemperature();
                                    ac.ReadCoolingSetpoint();
                                    ac.ReadHeatingSetpoint();
                                }
                            }
                            var deviceTypeRowLayout = new RowLayout()
                            {
                                Height = Application.GetRealHeight(127 + 35),
                                LineColor = ZigbeeColor.Current.GXCBackgroundColor,
                                Tag = deviceUI
                            };
                            deviceListScrolView.AddChidren(deviceTypeRowLayout);
                            var deviceRow = new FunctionRow(0, 35);
                            deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                            deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName);
                            deviceRow.SetStatu(ac.IsOnline == 1);
                            deviceTypeRowLayout.AddChidren(deviceRow);
                            deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) =>
                            {
                                zbGateway = deviceUI.CommonDevice.Gateway;
                                sendedControlCommand = false;
                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
                                (send2 as CommonForm.SelectedStatuButton).IsSelected = !(send2 as CommonForm.SelectedStatuButton).IsSelected;
                                if ((send2 as CommonForm.SelectedStatuButton).IsSelected)
                                {
                                    ac.Open();
                                }
                                else
                                {
                                    ac.Close();
                                }
                                //控制延时回调
                                DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () =>
                                {
                                    if (Parent == null)
                                    {
                                        return;
                                    }
                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                    if (sendedControlCommand == false)
                                    {
                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                    }
                                });
                            };
                            var editBtn = new CommonForm.RowLayoutEditButton()
                            {
                                Tag = deviceUI,
                                Radius = 0
                            };
                            deviceTypeRowLayout.AddRightView(editBtn);
                            editBtn.MouseUpEventHandler += deviceDetailHandler;
                            var delBtn = new Device.CommonForm.RowLayoutDeleteButton()
                            {
                                Tag = deviceUI,
                                Radius = 0
                            };
                            deviceTypeRowLayout.AddRightView(delBtn);
                            delBtn.MouseUpEventHandler += delEvent;
                        }
                        else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.WindowCoveringDevice)
                        {
                            //卷帘
                            var rollerShade = deviceUI.CommonDevice as ZigBee.Device.Rollershade;
                            //不上非远程
                            if (rollerShade.Gateway == null)
                            {
                                continue;
                            }
                            if (rollerShade.Gateway.IsVirtual)
                            {
                                UserHomeView.ReadStatus(rollerShade, () =>
                                {
                                    rollerShade.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                });
                            }
                            else
                            {
                                //防止短时间内多次读取
                                if ((DateTime.Now - rollerShade.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                                {
                                    rollerShade.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                }
                            }
                            var deviceTypeRowLayout = new RowLayout()
                            {
                                Height = Application.GetRealHeight(127 + 35),
                                LineColor = ZigbeeColor.Current.GXCLineColor,
                                Tag = deviceUI
                            };
                            deviceListScrolView.AddChidren(deviceTypeRowLayout);
                            var deviceRow = new FunctionRow(0, 35);
                            deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                            deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName);
                            deviceRow.SetStatu(rollerShade.IsOnline == 1);
                            deviceTypeRowLayout.AddChidren(deviceRow);
                            var editBtn = new CommonForm.RowLayoutEditButton()
                            {
                                Tag = deviceUI,
                                Radius = 0
                            };
                            deviceTypeRowLayout.AddRightView(editBtn);
                            editBtn.MouseUpEventHandler += deviceDetailHandler;
                            var delBtn = new Device.CommonForm.RowLayoutDeleteButton()
                            {
                                Tag = deviceUI,
                                Radius = 0
                            };
                            deviceTypeRowLayout.AddRightView(delBtn);
                            delBtn.MouseUpEventHandler += delEvent;
                            deviceRow.SwitchBtn.MouseUpEventHandler += (sender, e) =>
                            {
                                zbGateway = deviceUI.CommonDevice.Gateway;
                                sendedControlCommand = false;
                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
                                (sender as CommonForm.SelectedStatuButton).IsSelected = !(sender as CommonForm.SelectedStatuButton).IsSelected;
                                if ((sender as CommonForm.SelectedStatuButton).IsSelected)
                                {
                                    rollerShade.CurtainUpDownStopControl(0);
                                }
                                else
                                {
                                    rollerShade.CurtainUpDownStopControl(1);
                                }
                                //控制延时回调
                                DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () =>
                                {
                                    if (Parent == null)
                                    {
                                        return;
                                    }
                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                    if (sendedControlCommand == false)
                                    {
                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                    }
                                });
                            };
                        }
                        else
                        {
                        }
                    }
                };
                foreach (var deviceType in Common.Room.GetdeviceTypes(room))
                {
                    typeRowLayout = new FrameLayout()
                    {
                        Width = Application.GetRealWidth(CommonPage.AppRealWidth / 5),
                        Tag = deviceType
                    };
                    functionTypeScrowView.AddChidren(typeRowLayout);
                    functionTypeIMG = new FunctionButton()
                    {
                        Tag = deviceType
                    };
                    functionTypeIMG.Init(DeviceUI.GetDeviceTypeUnSelectedImagePath(deviceType), DeviceUI.GetDeviceTypeUnSelectedImagePath(deviceType));
                    functionTypeIMG.SetTitle(DeviceUI.GetDeviceTypeName(deviceType));
                    typeRowLayout.AddChidren(functionTypeIMG);
                    functionTypeIMG.ClickBtn.MouseUpEventHandler += ShowSameTypeFunction;
                    if (deviceType == room.DeviceUIList[0].CommonDevice.Type)
                    {
                        ShowSameTypeFunction(functionTypeIMG.ImageBtn, null);
                    }
                }
            }
        }
        /// <summary>
        /// AddRoomView
        /// </summary>
        private void AddRoomView()
        {
            var roomFL = new HorizontalScrolViewLayout()
            {
                X = Application.GetRealWidth(CommonFormResouce.X_Left),
                Height = Application.GetRealHeight(170),
                Width = Application.GetRealWidth(CommonPage.AppRealWidth - CommonFormResouce.X_Left),
                BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor
            };
            functionSceneAutoBodyView.AddChidren(roomFL);
            //功能和场景bodyView
            functionSceneBodyView = new FrameLayout()
            {
                Y = roomFL.Bottom,
                Height = Application.GetRealHeight(973+279),
                BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor
            };
            functionSceneAutoBodyView.AddChidren(functionSceneBodyView);
            Button curBtn = new Button();
            foreach (var room in Common.Room.CurrentRoom.GetRoomsByCurrentFloorIdAppendLoveRoom())
            {
                var row = new FrameLayout()
                {
                    Width = Application.GetRealWidth(187 + 50),
                    Height = Application.GetRealHeight(167)
                };
                roomFL.AddChidren(row);
                var roomBtn = new Button()
                {
                    Width = Application.GetRealWidth(187),
                    Height = Application.GetRealHeight(78),
                    Radius = (uint)Application.GetRealHeight(78 / 2),
                    Gravity = Gravity.Center,
                    Text = room.Name,
                    TextColor = ZigbeeColor.Current.GXCTextGrayColor,
                    SelectedTextColor = ZigbeeColor.Current.GXCTextWhiteColor,
                    BackgroundColor = ZigbeeColor.Current.GXCButtonUnSelectedColor3,
                    SelectedBackgroundColor = ZigbeeColor.Current.GXCButtonSelectedColor,
                    BorderColor = ZigbeeColor.Current.GXCBorderUnSelectedColor,
                    BorderWidth = 1
                };
                row.AddChidren(roomBtn);
                if (room.IsLove)
                {
                    roomBtn.IsSelected = true;
                    curBtn = roomBtn;
                    if(sceneBtn.IsSelected)
                    {
                        RefreshScene(room);
                    }
                    else
                    {
                        RefreshFunction(room);
                    }
                }
                roomBtn.MouseUpEventHandler += (sender, e) =>
                {
                    if ((sender as Button) == curBtn)
                    {
                        return;
                    }
                    (sender as Button).IsSelected = true;
                    curBtn.IsSelected = false;
                    curBtn = sender as Button;
                    if (sceneBtn.IsSelected)
                    {
                        RefreshScene(room);
                    }
                    else
                    {
                        RefreshFunction(room);
                    }
                };
            }
        }
        #endregion
@@ -1522,15 +1566,17 @@
        /// </summary>
        public void ShowScene()
        {
            //刷新场景
            //var reFreshResult=await Shared.Common.Room.RefreshSceneUIList();
            Shared.Common.SceneRoomUI.GetAllSceneRoomUIList();
            if (SceneRoomUI.AllSceneRoomUIList == null)
            {
                return;
            }
            var sceneList = SceneRoomUI.AllSceneRoomUIList;
            Shared.Common.Room.GetAllRoomDeviceUIList();
            AddRoomView();
        }
        /// <summary>
        /// RefreshScene
        /// </summary>
        /// <param name="room"></param>
        public void RefreshScene(Common.Room room)
        {
            functionSceneBodyView.RemoveAll();
            var sceneList = room.SceneUIList;
            if (sceneList.Count == 0)
            {
                ShowNoSceneTip();
@@ -1539,24 +1585,22 @@
            {
                var sceneScrolView = new VerticalScrolViewLayout
                {
                    Y=Application.GetRealHeight(58)
                    //Y = Application.GetRealHeight(58)
                };
                functionSceneBodyView.AddChidren(sceneScrolView);
                foreach (var sceneRoomUI in sceneList)
                foreach (var scene in sceneList)
                {
                    var sceneFL = new FrameLayout()
                    {
                        Height = Application.GetRealHeight(446),
                        Gravity = Gravity.CenterHorizontal,
                        BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor,
                        Tag = sceneRoomUI
                        Tag = scene
                    };
                    sceneScrolView.AddChidren(sceneFL);
                    var sceneRowLayout = new RowLayout()
                    var sceneRowLayout = new RowLayout
                    {
                        Y = Application.GetRealHeight(46),
                        Height = Application.GetRealHeight(446 - 46),
                        Gravity = Gravity.CenterHorizontal,
                        LineColor = ZigbeeColor.Current.GXCGrayBackgroundColor,
                        Radius = CommonPage.BigFormRadius
                    };
@@ -1564,81 +1608,109 @@
                    var sceneImg = new Button()
                    {
                        X=Application.GetRealWidth(179),
                        Width=Application.GetMinReal(844),
                        Height=Application.GetMinReal(400),
                        Gravity = Gravity.CenterVertical,
                        UnSelectedImagePath = sceneRoomUI.sceneUI.IconPath,
                        Radius = (uint)Application.GetRealHeight(CommonFormResouce.BigFormRadius)
                        X = Application.GetRealWidth(179),
                        Width = Application.GetRealWidth(844),
                        Height = Application.GetRealHeight(400),
                        BackgroundColor = ZigbeeColor.Current.GXCRedColor,
                        UnSelectedImagePath = scene.IconPath,
                        Radius = (uint)Application.GetRealHeight(17)
                    };
                    sceneRowLayout.AddChidren(sceneImg);
                    var leftFL = new FrameLayout
                    {
                        X=Application.GetRealWidth(CommonFormResouce.X_Left),
                        X = Application.GetRealWidth(CommonFormResouce.X_Left),
                        Y = Application.GetRealHeight(58),
                        Width = Application.GetRealWidth(251),
                        Height = Application.GetRealHeight(282),
                        Gravity=Gravity.CenterVertical,
                        BackgroundColor = ZigbeeColor.Current.GXCBlackBackgroundColor2
                        BackgroundColor = ZigbeeColor.Current.GXCBlackBackgroundColor2,
                        Radius = (uint)Application.GetRealHeight(17)
                    };
                    sceneRowLayout.AddChidren(leftFL);
                    var collectionBtn = new Button
                    {
                        X=Application.GetRealWidth(23),
                        Y=Application.GetRealHeight(23),
                        Width=Application.GetMinRealAverage(65),
                        Height=Application.GetMinRealAverage(65),
                        UnSelectedImagePath="Item/Collection.png",
                        SelectedImagePath="Item/CollectionSelected.png"
                        X = Application.GetRealWidth(23),
                        Y = Application.GetRealHeight(23),
                        Width = Application.GetMinRealAverage(65),
                        Height = Application.GetMinRealAverage(65),
                        UnSelectedImagePath = "Item/Collection.png",
                        SelectedImagePath = "Item/CollectionSelected.png",
                        IsSelected = Common.Room.CurrentRoom.GetLoveRoom().SceneUIFilePathList.Contains(scene.FileName),
                        Tag = scene
                    };
                    leftFL.AddChidren(collectionBtn);
                    var sceneNameBtn = new Button()
                    {
                        Width = Application.GetRealWidth(176),
                        Height = Application.GetRealHeight(200),
                        Height = Application.GetRealHeight(150),
                        TextColor = ZigbeeColor.Current.GXCTextWhiteColor,
                        Text = sceneRoomUI.sceneUI.Name,
                        Text = scene.Name,
                        Gravity = Gravity.Center,
                        IsMoreLines=true
                        IsMoreLines = true
                    };
                    leftFL.AddChidren(sceneNameBtn);
                    var collection = new Button
                    {
                        Tag=scene
                    };
                    leftFL.AddChidren(collection);
                    collection.MouseUpEventHandler += (sender, e) =>
                    {
                        if (room.IsLove)
                        {
                            Common.Room.CurrentRoom.GetLoveRoom().DeleteScene(scene);
                            sceneScrolView.RemoveViewByTag(collectionBtn.Tag);
                        }
                        else
                        {
                            collectionBtn.IsSelected = !collectionBtn.IsSelected;
                            if (collectionBtn.IsSelected)
                            {
                                Common.Room.CurrentRoom.GetLoveRoom().AddScene(scene);
                            }
                            else
                            {
                                Common.Room.CurrentRoom.GetLoveRoom().DeleteScene(scene);
                            }
                        }
                    };
                    //定时
                    var delayBtn = new RowLayoutDeleteButton
                    {
                        TextID = R.MyInternationalizationString.Delay,
                        Tag = sceneRoomUI.sceneUI.SceneDelayTime
                        Tag = scene.SceneDelayTime
                    };
                    sceneRowLayout.AddLeftView(delayBtn);
                    //编辑
                    var settingBtn = new Device.CommonForm.RowLayoutEditButton()
                    {
                        TextID=R.MyInternationalizationString.Setting,
                        Tag = sceneRoomUI.sceneUI.SceneDelayTime
                        TextID = R.MyInternationalizationString.Editor,
                        Tag = scene.SceneDelayTime
                    };
                    //删除
                    var deleteBtn = new Device.CommonForm.RowLayoutDeleteButton
                    {
                        Tag = sceneRoomUI
                        Tag = scene
                    };
                    if (!sceneRoomUI.room.IsSharedRoom)
                    if (!room.IsSharedRoom)
                    {
                        sceneRowLayout.AddRightView(settingBtn);
                        sceneRowLayout.AddRightView(deleteBtn);
                    }
                    //调用场景
                    EventHandler<MouseEventArgs> sceneUpHandler = async (sender, e) =>
                    {
                        //1成功 0失败
                        //后面补上相关提示
                        //要先从网关读取延时是否正在执行,如果是进行倒计时,不允许在点击
                        var sceneOpenAllData = await ZigBee.Device.Scene.ControlSceneAsync(sceneRoomUI.sceneUI.Id, sceneRoomUI.sceneUI.SceneDelayTime);
                        var sceneOpenAllData = await ZigBee.Device.Scene.ControlSceneAsync(scene.Id, scene.SceneDelayTime);
                        //主网关不在线
                        if (sceneOpenAllData == null)
                        {
@@ -1667,83 +1739,75 @@
                    //删除场景
                    EventHandler<MouseEventArgs> delEvent = (sender, e) =>
                    {
                        var tip = new CustomAlert { };
                        AddChidren(tip);
                        tip.Show(Language.StringByID(R.MyInternationalizationString.ConfirmDelete));
                        //var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.ConfirmDelete), Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
                        //alert.Show();
                        tip.ResultEventHandler += async (e1) =>
                        if(room.IsLove)
                        {
                            if (e1)
                            Shared.Common.Room.CurrentRoom.GetLoveRoom().DeleteScene(scene);
                            sceneScrolView.RemoveViewByTag((sender as Button).Tag);
                        }
                        else
                        {
                            var tip = new CustomAlert { };
                            AddChidren(tip);
                            tip.Show(Language.StringByID(R.MyInternationalizationString.ConfirmDelete));
                            //var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.ConfirmDelete), Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
                            //alert.Show();
                            tip.ResultEventHandler += async (e1) =>
                            {
                                //0 移除失败 1 移除成功 2 没有该场景
                                var removeSceneAllData = await ZigBee.Device.Scene.DeleteSceneAsync(sceneRoomUI.sceneUI.Id);
                                if (removeSceneAllData == null || removeSceneAllData.removeSceneData == null)
                                if (e1)
                                {
                                    //CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheMainGatewayIsNotOnLine);
                                    CommonPage.Instance.FailureToServer();
                                    return;
                                    //0 移除失败 1 移除成功 2 没有该场景
                                    var removeSceneAllData = await ZigBee.Device.Scene.DeleteSceneAsync(scene.Id);
                                    if (removeSceneAllData == null || removeSceneAllData.removeSceneData == null)
                                    {
                                        //CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheMainGatewayIsNotOnLine);
                                        CommonPage.Instance.FailureToServer();
                                        return;
                                    }
                                    //1成功
                                    if (removeSceneAllData.removeSceneData.Result == 1)
                                    {
                                        room.RemoveScene(scene);
                                        //RefreshBodyView();
                                        sceneScrolView.RemoveViewByTag((sender as Button).Tag);
                                    }
                                    //0 移除失败
                                    else if (removeSceneAllData.removeSceneData.Result == 0)
                                    {
                                        CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.FailedPleaseTryAgain);
                                        return;
                                    }
                                    //2 没有该场景
                                    else if (removeSceneAllData.removeSceneData.Result == 2)
                                    {
                                        room.RemoveScene(scene);
                                        //RefreshBodyView();
                                        sceneScrolView.RemoveViewByTag((sender as Button).Tag);
                                        CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheSceneIsNull);
                                        return;
                                    }
                                }
                                //1成功
                                if (removeSceneAllData.removeSceneData.Result == 1)
                                {
                                    sceneRoomUI.room.RemoveScene(sceneRoomUI.sceneUI);
                                    //RefreshBodyView();
                                    sceneScrolView.RemoveViewByTag((sender as Button).Tag);
                                }
                                //0 移除失败
                                else if (removeSceneAllData.removeSceneData.Result == 0)
                                {
                                    CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.FailedPleaseTryAgain);
                                    return;
                                }
                                //2 没有该场景
                                else if (removeSceneAllData.removeSceneData.Result == 2)
                                {
                                    sceneRoomUI.room.RemoveScene(sceneRoomUI.sceneUI);
                                    //RefreshBodyView();
                                    sceneScrolView.RemoveViewByTag((sender as Button).Tag);
                                    CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheSceneIsNull);
                                    return;
                                }
                            }
                        };
                            };
                        }
                    };
                    deleteBtn.MouseUpEventHandler += delEvent;
                    //编辑场景
                    settingBtn.MouseUpEventHandler += (sender, e) =>
                    {
                        SceneRoomUI.EditScene(sceneRoomUI.sceneUI, sceneRoomUI.room);
                        SceneUI.EditScene(scene, room);
                    };
                    //编辑延时
                    delayBtn.MouseUpEventHandler += (sender, e) =>
                    {
                        var tList = new List<string>() { };
                        for (int i = 0; i < 60; i++)
                        var timeSelect = new SelectTime();
                        CommonPage.Instance.AddChidren(timeSelect);
                        timeSelect.TempTime = scene.SceneDelayTime;
                        timeSelect.Init();
                        timeSelect.TimeAction = (t) =>
                        {
                            tList.Add($"{i} {Language.StringByID(R.MyInternationalizationString.Second)}");
                        }
                        //int beforeIndex = (int)(sender as CommonForm.RowLayoutEditButton).Tag;
                        //PickerView.Show(tList, (obj) =>
                        //{
                        //    var tempRoom = Shared.Common.Room.GetRoomByFilePath(sceneRoomUI.room.FileName);
                        //    if (tempRoom == null)
                        //    {
                        //        return;
                        //    }
                        //    foreach (var ss in tempRoom.SceneUIList)
                        //    {
                        //        if (ss.Id == sceneRoomUI.sceneUI.Id)
                        //        {
                        //            ss.SceneDelayTime = int.Parse(obj.Split(' ')[0]);
                        //            sceneRoomUI.room.Save();
                        //            RefreshBodyView();
                        //            return;
                        //        }
                        //    }
                        //}, Language.StringByID(R.MyInternationalizationString.Confrim), tList[(int)(sender as CommonForm.RowLayoutEditButton).Tag]);
                            scene.SceneDelayTime = t;
                        };
                    };
                }
            }
@@ -1770,7 +1834,7 @@
                Height = Application.GetRealHeight(200),
                Width = Application.GetRealWidth(700),
                Gravity = Gravity.CenterHorizontal,
                TextID = R.MyInternationalizationString.NoScene,
                Text = Language.StringByID(R.MyInternationalizationString.NoScene).Replace("{\\r\\n}","\r\n"),
                TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
                TextAlignment = TextAlignment.Center,
                IsMoreLines = true
@@ -1786,10 +1850,11 @@
        /// <summary>
        /// 自动化
        /// </summary>
        public async void ShowAutotion()
        {
            functionSceneBodyView.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
        private async void ShowAutotion()
        {
            functionSceneAutoBodyView.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
            var bjFrameLayout = new FrameLayout
            {
                Width = Application.GetRealWidth(1080 - 58),
@@ -1799,7 +1864,7 @@
                Radius = (uint)Application.GetRealHeight(50),
                Y = Application.GetRealHeight(30),
            };
            functionSceneBodyView.AddChidren(bjFrameLayout);
            functionSceneAutoBodyView.AddChidren(bjFrameLayout);
            var sigBtn = new Button
            {
@@ -1843,17 +1908,17 @@
                Y = bjFrameLayout.Bottom + Application.GetRealHeight(30),
                Height = Application.GetRealHeight(0),
            };
            functionSceneBodyView.AddChidren(scenehorizontalScrol);
            functionSceneAutoBodyView.AddChidren(scenehorizontalScrol);
            var logicScrolView = new VerticalScrolViewLayout
            {
                Height = functionSceneBodyView.Height - bjFrameLayout.Height - bjFrameLayout.Y - scenehorizontalScrol.Height - Application.GetRealHeight(30),
                Height = functionSceneAutoBodyView.Height - bjFrameLayout.Height - bjFrameLayout.Y - scenehorizontalScrol.Height - Application.GetRealHeight(30),
                BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor,
                X = Application.GetRealWidth(58),
                Radius = (uint)Application.GetRealHeight(50),
                Y = scenehorizontalScrol.Bottom,
            };
            functionSceneBodyView.AddChidren(logicScrolView);
            functionSceneAutoBodyView.AddChidren(logicScrolView);
            recommendswitchBtn.MouseUpEventHandler += (sender, e) =>
@@ -1953,34 +2018,19 @@
            CommonPage.Loading.Start();
            if (Common.Logic.LogicList.Count == 0)
            {
                //var Idlist = await Logic.Send.GetLogicId();
                //if (Idlist.Count != 0)
                //{
                //    foreach (var LogicId in Idlist)
                //    {
                //        var logic = await Logic.Send.GetLogic(LogicId);
                //        if (logic != null)
                //        {
                //            Common.Logic.LogicList.Add(logic);
                //        }
                //    }
                //}
                var Idlist = await Logic.Send.GetLogicId();
                var Idlist = await Logic.Send.GetLogicId(0);
                if (Idlist.Count != 0)
                {
                    var listlogic = await Logic.Send.ReadList(Idlist.Count);
                    for (int i = 0; i < Idlist.Count; i++)
                    var listlogic = await Logic.Send.ReadList(Idlist.Count,0);
                    //foreach可能集合已被修改,枚举操作可能不会执行,可能出现崩溃(建议for)。
                    for (int j = 0; j < listlogic.Count; j++)
                    {
                        var LogicId = Idlist[i];
                        //foreach可能集合已被修改,枚举操作可能不会执行,可能出现崩溃(建议for)。
                        for (int j = 0; j < listlogic.Count; j++)
                        var logic = listlogic[j];
                        if (logic.LogicType != 0)
                        {
                            var logic = listlogic[j];
                            if (logic.LogicId == LogicId)
                            {
                                Common.Logic.LogicList.Add(logic);
                            }
                            continue;
                        }
                        Common.Logic.LogicList.Add(logic);
                    }
                }
            }
@@ -1993,7 +2043,7 @@
        /// 自动化列表界面
        /// </summary>
        /// <param name="refresview">Refresview.</param>
        public async void Automationview(VerticalScrolViewLayout refresview)
        private async void Automationview(VerticalScrolViewLayout refresview)
        {
            refresview.RemoveAll();
            foreach (var logic in Common.Logic.LogicList)
@@ -2078,7 +2128,7 @@
                    Text = Language.StringByID(MyInternationalizationString.edit),
                    TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor,
                };
                bjRow.AddRightView(edit);
                logicRowlayout.AddRightView(edit);
                edit.MouseUpEventHandler += (sender, e) =>
                {
                    Common.Logic.LogicDviceList.Clear();
@@ -2102,7 +2152,7 @@
                    Text = Language.StringByID(MyInternationalizationString.del),
                    TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor,
                };
                bjRow.AddRightView(del);
                logicRowlayout.AddRightView(del);
                del.MouseUpEventHandler += (sender, e) =>
                {
                    var alert = new Alert(Language.StringByID(MyInternationalizationString.tip), Language.StringByID(MyInternationalizationString.doyouwanttodelete),
@@ -2124,8 +2174,6 @@
        }
        #endregion
        #region ◆ 控制状态_________________________
@@ -2592,5 +2640,6 @@
                }
            }
        }
        #endregion
    }
}