gxc
2020-02-28 66a9965c44ecc32a6696abca876ab9d1cd091584
ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs
@@ -1,12 +1,13 @@
using System;
using System.Collections.Generic;
using System.Timers;
using Shared.Common;
using Shared.Phone.Device.AC;
using ZigBee.Device;
using Shared.Phone.Device.CommonForm;
using Shared.Phone.UserCenter.DoorLock;
using System.Timers;
using Shared.Phone.Device.DeviceLogic;
using Shared.Phone.UserCenter;
using Shared.Phone.UserCenter.DoorLock;
using ZigBee.Device;
namespace Shared.Phone.UserView
{
@@ -88,6 +89,8 @@
        /// sceneScrolView
        /// </summary>
        private VerticalScrolViewLayout sceneScrolView ;
        #endregion
        #region ◆ 接口____________________________
@@ -122,231 +125,262 @@
                {
                    try
                    {
                        if (common.DeviceStatusReport.AttriBute == null || common.DeviceStatusReport.AttriBute.Count == 0)
                        {
                            return;
                        }
                        for (int i = 0; deviceVerticalScrolViewLayout != null && i < deviceVerticalScrolViewLayout.ChildrenCount; i++)
                        {
                            var rowFL = deviceVerticalScrolViewLayout.GetChildren(i) as FrameLayout;
                            var deviceUI = rowFL.Tag as DeviceUI;
                            if (deviceUI.CommonDevice == null || rowFL.ChildrenCount == 0)
                            if (rowFL.ChildrenCount == 0)
                            {
                                //设备为空或者控件为空
                                continue;
                            }
                            if (common.DeviceAddr != deviceUI.CommonDevice.DeviceAddr || common.DeviceEpoint != deviceUI.CommonDevice.DeviceEpoint)
                            {
                                //判断是否为当前设备
                                continue;
                            }
                            var frameLayout = rowFL.GetChildren(0) as FrameLayout;
                            switch (deviceUI.CommonDevice.Type)
                            {
                                case DeviceType.OnOffOutput:
                                    //开关功能
                                    if (common.DeviceStatusReport.CluterID == 6)
                                    {
                                        var onOffOutputLight = deviceUI.CommonDevice as ZigBee.Device.ToggleLight;
                                        onOffOutputLight.DeviceStatusReport = common.DeviceStatusReport;
                                        //记录、更新状态
                                        if (onOffOutputLight.DeviceStatusReport.AttriBute == null || onOffOutputLight.DeviceStatusReport.AttriBute.Count == 0)
                                        {
                                            continue;
                                        }
                                        onOffOutputLight.OnOffStatus = onOffOutputLight.DeviceStatusReport.AttriBute[0].AttriButeData;
                                        (rowFL.GetChildren(0) as FunctionMainView).IsSelected = onOffOutputLight.OnOffStatus == 1;
                                        (rowFL.GetChildren(0) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
                                        //记录回复时间
                                        onOffOutputLight.LastDateTime = DateTime.Now;
                                    }
                                    break;
                            for (int j = 0; j < rowFL.ChildrenCount; j++)
                            {
                                var deviceUI = (rowFL.GetChildren(j) as FunctionMainView).Tag as DeviceUI;
                                if (deviceUI == null || deviceUI.CommonDevice == null)
                                {
                                    //设备为空或者控件为空
                                    continue;
                                }
                                if (common.DeviceAddr != deviceUI.CommonDevice.DeviceAddr || common.DeviceEpoint != deviceUI.CommonDevice.DeviceEpoint)
                                {
                                    //判断是否为当前设备
                                    continue;
                                }
                                case DeviceType.AirSwitch:
                                    //开关功能
                                    if (common.DeviceStatusReport.CluterID == 6)
                                    {
                                        var airSwitch = deviceUI.CommonDevice as ZigBee.Device.AirSwitch;
                                        airSwitch.DeviceStatusReport = common.DeviceStatusReport;
                                        for (int j = 0; j < frameLayout.ChildrenCount; j++)
                                        {
                                            var tempView = frameLayout.GetChildren(j);
                                            if (tempView.Tag == null)
                                            {
                                                continue;
                                            }
                                            if (tempView.Tag.ToString() == deviceStatus_OnOffStatus)
                                            {
                                                //记录、更新状态
                                                if (airSwitch.DeviceStatusReport.AttriBute == null || airSwitch.DeviceStatusReport.AttriBute.Count == 0)
                                switch (deviceUI.CommonDevice.Type)
                                {
                                    case DeviceType.OnOffOutput:
                                        //开关功能
                                        if (common.DeviceStatusReport.CluterID == 6)
                                        {
                                            var onOffOutputLight = deviceUI.CommonDevice as ZigBee.Device.ToggleLight;
                                            onOffOutputLight.DeviceStatusReport = common.DeviceStatusReport;
                                            onOffOutputLight.OnOffStatus = onOffOutputLight.DeviceStatusReport.AttriBute[0].AttriButeData;
                                            (rowFL.GetChildren(j) as FunctionMainView).IsSelected = onOffOutputLight.OnOffStatus == 1;
                                            (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
                                            onOffOutputLight.LastDateTime = DateTime.Now;
                                        }
                                        break;
                                    case DeviceType.AirSwitch:
                                        //开关功能
                                        if (common.DeviceStatusReport.CluterID == 6)
                                        {
                                            var airSwitch = deviceUI.CommonDevice as ZigBee.Device.AirSwitch;
                                            airSwitch.DeviceStatusReport = common.DeviceStatusReport;
                                            airSwitch.OnOffStatus = airSwitch.DeviceStatusReport.AttriBute[0].AttriButeData;
                                            (rowFL.GetChildren(j) as FunctionMainView).IsSelected = airSwitch.OnOffStatus == 1;
                                            (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
                                            airSwitch.LastDateTime = DateTime.Now;
                                        }
                                        //当CluterID=3,就证明该设备在线,直接标记
                                        if (common.DeviceStatusReport.CluterID == 3)
                                        {
                                            deviceUI.CommonDevice.IsOnline = 1;
                                            deviceUI.CommonDevice.LastDateTime = DateTime.Now;
                                        }
                                        break;
                                    case DeviceType.WindowCoveringDevice:
                                        if (common.DeviceStatusReport.CluterID == 258)
                                        {
                                            if (common.DeviceStatusReport.AttriBute[0].AttributeId == 0)
                                            {
                                                //窗帘类型
                                                var rollerShade = deviceUI.CommonDevice as Rollershade;
                                                rollerShade.DeviceStatusReport = common.DeviceStatusReport;
                                                rollerShade.WcdType = common.DeviceStatusReport.AttriBute[0].AttriButeData;
                                                rollerShade.LastDateTime = DateTime.Now;
                                                (rowFL.GetChildren(j) as FunctionMainView).IsSelected = rollerShade.WcdCurrentPositionLiftPercentage == 100;
                                                (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
                                            }
                                            if (common.DeviceStatusReport.AttriBute[0].AttributeId == 8)
                                            {
                                                //窗帘百分比
                                                var rollerShade = deviceUI.CommonDevice as Rollershade;
                                                rollerShade.DeviceStatusReport = common.DeviceStatusReport;
                                                rollerShade.WcdCurrentPositionLiftPercentage = common.DeviceStatusReport.AttriBute[0].AttriButeData;
                                                rollerShade.LastDateTime = DateTime.Now;
                                                (rowFL.GetChildren(j) as FunctionMainView).IsSelected = rollerShade.WcdCurrentPositionLiftPercentage == 100;
                                                (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
                                            }
                                        }
                                        if (common.DeviceStatusReport.CluterID == 3)
                                        {
                                            deviceUI.CommonDevice.IsOnline = 1;
                                            deviceUI.CommonDevice.LastDateTime = DateTime.Now;
                                        }
                                        break;
                                    case DeviceType.Thermostat:
                                        //AC功能
                                        if (common.DeviceStatusReport.CluterID == 513)
                                        {
                                            var ac = deviceUI.CommonDevice as ZigBee.Device.AC;
                                            ac.DeviceStatusReport = common.DeviceStatusReport;
                                            var attriButeList = ac.DeviceStatusReport.AttriBute;
                                            foreach (var attList in attriButeList)
                                            {
                                                var curTemp = (attList.AttriButeData / 100 < ACControlBase.Temperature_High && attList.AttriButeData / 100 > ACControlBase.Temperature_Low) ? attList.AttriButeData / 100 : ACControlBase.Temperature_Default;
                                                switch (attList.AttributeId)
                                                {
                                                    return;
                                                    case 0:
                                                        //此属性表明室内当前的温度 * 100,实际温度为“LocalTemperature / 100”,单位:℃
                                                        ac.currentLocalTemperature = curTemp;
                                                        ac.LastDateTime = DateTime.Now;
                                                        break;
                                                    case 17:
                                                        //此属性表明此设备当前的制冷温度,实际温度为“CoolingSetpoint / 100”,单位:℃。
                                                        ac.currentCoolingSetpoint = curTemp;
                                                        ac.LastDateTime = DateTime.Now;
                                                        break;
                                                    case 18:
                                                        //此属性表明此设备当前的制热温度,实际温度为“HeatingSetpoint / 100”,单位:℃。
                                                        ac.currentHeatingSetpoint = curTemp;
                                                        ac.LastDateTime = DateTime.Now;
                                                        break;
                                                    case 4096:
                                                        //此属性表明此设备当前的自动温度,实际温度为“AutoSetpoint / 100”,单位:℃。
                                                        ac.currentAutoSetpoint = curTemp;
                                                        ac.LastDateTime = DateTime.Now;
                                                        break;
                                                    case 28:
                                                        //此属性描述恒温设备正处于哪种模式
                                                        ac.currentSystemMode = attList.AttriButeData;
                                                        ac.LastDateTime = DateTime.Now;
                                                        break;
                                                }
                                                airSwitch.OnOffStatus = airSwitch.DeviceStatusReport.AttriBute[0].AttriButeData;
                                                (rowFL.GetChildren(0) as FunctionMainView).IsSelected = airSwitch.OnOffStatus == 1;
                                                (rowFL.GetChildren(0) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
                                                //记录回复时间
                                                airSwitch.LastDateTime = DateTime.Now;
                                            }
                                        }
                                    }
                                    //当CluterID=3,就证明该设备在线,直接标记
                                    if (common.DeviceStatusReport.CluterID == 3)
                                    {
                                        deviceUI.CommonDevice.IsOnline = 1;
                                        deviceUI.CommonDevice.LastDateTime = DateTime.Now;
                                    }
                                    break;
                                case DeviceType.WindowCoveringDevice:
                                    if (common.DeviceStatusReport.CluterID == 258)
                                    {
                                        if (common.DeviceStatusReport.AttriBute[0].AttributeId == 0)
                                        {
                                            //窗帘类型
                                            var rollerShade = deviceUI.CommonDevice as Rollershade;
                                            rollerShade.DeviceStatusReport = common.DeviceStatusReport;
                                            rollerShade.WcdType = common.DeviceStatusReport.AttriBute[0].AttriButeData;
                                            rollerShade.LastDateTime = DateTime.Now;
                                            (rowFL.GetChildren(0) as FunctionMainView).IsSelected = rollerShade.WcdCurrentPositionLiftPercentage == 100;
                                            (rowFL.GetChildren(0) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
                                            }
                                            (rowFL.GetChildren(j) as FunctionMainView).IsSelected = ac.currentSystemMode != 0;
                                            (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
                                        }
                                    }
                                    if (common.DeviceStatusReport.CluterID == 3)
                                    {
                                        deviceUI.CommonDevice.IsOnline = 1;
                                        deviceUI.CommonDevice.LastDateTime = DateTime.Now;
                                    }
                                    break;
                                case DeviceType.Thermostat:
                                    //AC功能
                                    if (common.DeviceStatusReport.CluterID == 513)
                                    {
                                        var ac = deviceUI.CommonDevice as ZigBee.Device.AC;
                                        ac.DeviceStatusReport = common.DeviceStatusReport;
                                        var attriButeList = ac.DeviceStatusReport.AttriBute;
                                        if (attriButeList == null || attriButeList.Count == 0)
                                        if (common.DeviceStatusReport.CluterID == 514)
                                        {
                                            continue;
                                        }
                                        var curTemp = (attriButeList[0].AttriButeData / 100 < ACControlBase.Temperature_High || attriButeList[0].AttriButeData / 100 > ACControlBase.Temperature_Low) ? attriButeList[0].AttriButeData / 100 : ACControlBase.Temperature_Default;
                                        switch (attriButeList[0].AttributeId)
                                        {
                                            case 0:
                                                //此属性表明室内当前的温度 * 100,实际温度为“LocalTemperature / 100”,单位:℃
                                                ac.currentLocalTemperature = curTemp;
                                                ac.LastDateTime = DateTime.Now;
                                                break;
                                            case 17:
                                                //此属性表明此设备当前的制冷温度,实际温度为“CoolingSetpoint / 100”,单位:℃。
                                                ac.currentCoolingSetpoint = curTemp;
                                                ac.LastDateTime = DateTime.Now;
                                                break;
                                            case 18:
                                                //此属性表明此设备当前的制热温度,实际温度为“HeatingSetpoint / 100”,单位:℃。
                                                ac.currentHeatingSetpoint = curTemp;
                                                ac.LastDateTime = DateTime.Now;
                                                break;
                                            case 4096:
                                                //此属性表明此设备当前的自动温度,实际温度为“AutoSetpoint / 100”,单位:℃。
                                                ac.currentAutoSetpoint = curTemp;
                                                ac.LastDateTime = DateTime.Now;
                                                break;
                                            case 28:
                                                //此属性描述恒温设备正处于哪种模式
                                                ac.currentSystemMode = attriButeList[0].AttriButeData;
                                                ac.LastDateTime = DateTime.Now;
                                                break;
                                            case 4099:
                                                var value = Convert.ToString(attriButeList[0].AttriButeData, 2).PadLeft(16, '0');
                                                var modeStr = value.Substring(value.Length - 5, 5);
                                                for (int j = 0; j < modeStr.Length; j++)
                                            var ac = deviceUI.CommonDevice as ZigBee.Device.AC;
                                            var attriButeList = common.DeviceStatusReport.AttriBute;
                                            ac.DeviceStatusReport = common.DeviceStatusReport;
                                            foreach (var attList in attriButeList)
                                            {
                                                switch (attList.AttributeId)
                                                {
                                                    ac.listSupportMode[j] = Convert.ToInt32(modeStr[j]) == 49 ? 1 : 0;
                                                    case 0:
                                                        ac.currentFanMode = attList.AttriButeData;
                                                        ac.LastDateTime = DateTime.Now;
                                                        break;
                                                    case 4096:
                                                        ac.currentFanSwingMode = attList.AttriButeData;
                                                        ac.LastDateTime = DateTime.Now;
                                                        break;
                                                }
                                                break;
                                            }
                                            (rowFL.GetChildren(j) as FunctionMainView).IsSelected = ac.currentSystemMode != 0;
                                            (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
                                        }
                                        (rowFL.GetChildren(0) as FunctionMainView).IsSelected = ac.currentSystemMode != 0;
                                        (rowFL.GetChildren(0) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
                                    }
                                    if (common.DeviceStatusReport.CluterID == 514)
                                    {
                                        var ac = deviceUI.CommonDevice as ZigBee.Device.AC;
                                        var attriButeList = common.DeviceStatusReport.AttriBute;
                                        if (attriButeList == null || attriButeList.Count == 0)
                                        //当CluterID=3,就证明该设备在线,直接标记
                                        if (common.DeviceStatusReport.CluterID == 3)
                                        {
                                            return;
                                            var ac = deviceUI.CommonDevice as AC;
                                            ac.IsOnline = 1;
                                            ac.LastDateTime = DateTime.Now;
                                        }
                                        ac.DeviceStatusReport = common.DeviceStatusReport;
                                        switch (attriButeList[0].AttributeId)
                                        {
                                            case 0:
                                                ac.currentFanMode = attriButeList[0].AttriButeData;
                                                ac.LastDateTime = DateTime.Now;
                                                break;
                                            case 4096:
                                                ac.currentFanSwingMode = attriButeList[0].AttriButeData;
                                                ac.LastDateTime = DateTime.Now;
                                                break;
                                        }
                                        (rowFL.GetChildren(0) as FunctionMainView).IsSelected = ac.currentSystemMode != 0;
                                        (rowFL.GetChildren(0) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
                                    }
                                    //当CluterID=3,就证明该设备在线,直接标记
                                    if (common.DeviceStatusReport.CluterID == 3)
                                    {
                                        var ac = deviceUI.CommonDevice as AC;
                                        ac.IsOnline = 1;
                                        ac.LastDateTime = DateTime.Now;
                                    }
                                    break;
                                        break;
                                case DeviceType.DimmableLight:
                                    //调光灯功能
                                    //开关功能
                                    if (common.DeviceStatusReport.CluterID == 6)
                                    {
                                        var dimmableLight = deviceUI.CommonDevice as DimmableLight;
                                        dimmableLight.DeviceStatusReport = common.DeviceStatusReport;
                                        //记录、更新状态
                                        if (dimmableLight.DeviceStatusReport.AttriBute == null || dimmableLight.DeviceStatusReport.AttriBute.Count == 0)
                                    case DeviceType.DimmableLight:
                                        //调光灯功能
                                        if (common.DeviceStatusReport.CluterID == 6)
                                        {
                                            return;
                                            var dimmableLight = deviceUI.CommonDevice as DimmableLight;
                                            dimmableLight.DeviceStatusReport = common.DeviceStatusReport;
                                            dimmableLight.OnOffStatus = dimmableLight.DeviceStatusReport.AttriBute[0].AttriButeData;
                                            (rowFL.GetChildren(j) as FunctionMainView).IsSelected = dimmableLight.OnOffStatus == 1;
                                            (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
                                            dimmableLight.LastDateTime = DateTime.Now;
                                        }
                                        dimmableLight.OnOffStatus = dimmableLight.DeviceStatusReport.AttriBute[0].AttriButeData;
                                        (rowFL.GetChildren(0) as FunctionMainView).IsSelected = dimmableLight.OnOffStatus == 1;
                                        (rowFL.GetChildren(0) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
                                        //记录回复时间
                                        dimmableLight.LastDateTime = DateTime.Now;
                                    }
                                    //亮度
                                    if (common.DeviceStatusReport.CluterID == 8)
                                    {
                                        var dimmableLight = deviceUI.CommonDevice as DimmableLight;
                                        dimmableLight.DeviceStatusReport = common.DeviceStatusReport;
                                        var attriButeList = dimmableLight.DeviceStatusReport.AttriBute;
                                        if (attriButeList == null || attriButeList.Count == 0)
                                        //亮度
                                        if (common.DeviceStatusReport.CluterID == 8)
                                        {
                                            continue;
                                            var dimmableLight = deviceUI.CommonDevice as DimmableLight;
                                            dimmableLight.DeviceStatusReport = common.DeviceStatusReport;
                                            var attriButeList = dimmableLight.DeviceStatusReport.AttriBute;
                                            switch (attriButeList[0].AttributeId)
                                            {
                                                case 0:
                                                    //此属性表明当前亮度程度
                                                    dimmableLight.Level = attriButeList[0].AttriButeData;
                                                    dimmableLight.LastDateTime = DateTime.Now;
                                                    //(rowFL.GetChildren(j) as FunctionMainView).IsSelected = true;
                                                    (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
                                                    break;
                                            }
                                        }
                                        switch (attriButeList[0].AttributeId)
                                        break;
                                    case DeviceType.TemperatureSensor:
                                        //温度
                                        if (common.DeviceStatusReport.CluterID == 1026)
                                        {
                                            case 0:
                                                //此属性表明当前亮度程度
                                                dimmableLight.Level = attriButeList[0].AttriButeData;
                                                dimmableLight.LastDateTime = DateTime.Now;
                                                (rowFL.GetChildren(0) as FunctionMainView).IsSelected = true;
                                                (rowFL.GetChildren(0) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
                                                break;
                                            var tempera = deviceUI.CommonDevice as TemperatureSensor;
                                            foreach (var data in common.DeviceStatusReport.AttriBute)
                                            {
                                                if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
                                                {
                                                    if (data.AttriButeData == 0)
                                                    {
                                                        tempera.Temperatrue = 0;
                                                    }
                                                    else if (data.AttriButeData > 32767)
                                                    {
                                                        //负数(特殊处理)
                                                        string strValue = (data.AttriButeData - 65536).ToString();
                                                        //小数点需要一位
                                                        strValue = strValue.Substring(0, strValue.Length - 1);
                                                        tempera.Temperatrue = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
                                                    }
                                                    else
                                                    {
                                                        //小数点需要一位
                                                        string strValue = data.AttriButeData.ToString();
                                                        strValue = strValue.Substring(0, strValue.Length - 1);
                                                        tempera.Temperatrue = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
                                                    }
                                                    tempera.LastDateTime = DateTime.Now;
                                                    (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
                                                }
                                            }
                                        }
                                    }
                                    break;
                                        //湿度
                                        if (common.DeviceStatusReport.CluterID == 1029)
                                        {
                                            var tempera = deviceUI.CommonDevice as TemperatureSensor;
                                            foreach (var data in common.DeviceStatusReport.AttriBute)
                                            {
                                                if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
                                                {
                                                    if (data.AttriButeData == 0)
                                                    {
                                                        tempera.Humidity = 0;
                                                    }
                                                    else
                                                    {
                                                        //小数点需要一位(湿度没有负数)
                                                        string strValue = data.AttriButeData.ToString();
                                                        strValue = strValue.Substring(0, strValue.Length - 1);
                                                        tempera.Humidity = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
                                                    }
                                                    tempera.LastDateTime = DateTime.Now;
                                                    (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
                                                }
                                            }
                                        }
                                        break;
                                }
                            }
                        }
                    }
@@ -356,7 +390,56 @@
                    }
                });
            }
            else if (typeTag == "IASInfoReport")
            {
                Application.RunOnMainThread(() =>
                {
                    try
                    {
                        for (int i = 0; deviceVerticalScrolViewLayout != null && i < deviceVerticalScrolViewLayout.ChildrenCount; i++)
                        {
                            var rowFL = deviceVerticalScrolViewLayout.GetChildren(i) as FrameLayout;
                            if (rowFL.ChildrenCount == 0)
                            {
                                //设备为空或者控件为空
                                continue;
                            }
                            for (int j = 0; j < rowFL.ChildrenCount; j++)
                            {
                                var deviceUI = (rowFL.GetChildren(j) as FunctionMainView).Tag as DeviceUI;
                                if (deviceUI == null || deviceUI.CommonDevice == null)
                                {
                                    //设备为空或者控件为空
                                    continue;
                                }
                                if (common.DeviceAddr != deviceUI.CommonDevice.DeviceAddr || common.DeviceEpoint != deviceUI.CommonDevice.DeviceEpoint)
                                {
                                    //判断是否为当前设备
                                    continue;
                                }
                                switch (deviceUI.CommonDevice.Type)
                                {
                                    case DeviceType.IASZone:
                                        //ias
                                        var ias = common as IASZone;
                                        var iAS = deviceUI.CommonDevice as ZigBee.Device.IASZone;
                                        iAS.iASInfo = ias.iASInfo;
                                        (rowFL.GetChildren(j) as FunctionMainView).IsSelected = iAS.iASInfo?.Alarm1 == 1;
                                        (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
                                        iAS.LastDateTime = DateTime.Now;
                                        break;
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        System.Console.WriteLine($"Error:{ex.Message}");
                    }
                });
            }
        }
        /// <summary>
        /// Changeds the IL ogic status.
@@ -439,22 +522,28 @@
                Gravity = Gravity.CenterVertical,
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = ZigbeeColor.Current.GXCTextColor,
                Text = Config.Instance.Home.GetCurrentFloorName
                Text = Config.Instance.Home.GetCurrentFloorName,
                IsBold = true,
                TextSize = 14
            };
            if (Config.Instance.Home.FloorDics.Count > 0)
            {
                topFrameLayout.AddChidren(floorBtn);
            }
            var messageBtn = new Button()
            if(UserCenterResourse.Option.SafetyShortcut)
            {
                X = Application.GetRealWidth(953),
                Width = Application.GetMinRealAverage(69),
                Height = Application.GetMinRealAverage(69),
                Gravity = Gravity.CenterVertical,
                UnSelectedImagePath = "Item/Message.png",
                SelectedImagePath = "Item/MessageSelected.png"
            };
                var safetyBtn = new SafetyShortcutControl();
                safetyBtn.X = Application.GetRealWidth(860);
                safetyBtn.Gravity = Gravity.CenterVertical;
                topFrameLayout.AddChidren(safetyBtn);
            }
            var messageBtn = new MessageManagementControl();
            messageBtn.X = Application.GetRealWidth(953);
            messageBtn.Gravity = Gravity.CenterVertical;
            messageBtn.UnSelectedImagePath = "Item/Message.png";
            messageBtn.SelectedImagePath = "Item/MessageSelected.png";
            topFrameLayout.AddChidren(messageBtn);
            var residecneName = new Button()
@@ -466,7 +555,8 @@
                TextAlignment = TextAlignment.CenterLeft,
                Text = Config.Instance.Home.Name ?? Language.StringByID(R.MyInternationalizationString.TheResidenceNameNull),
                TextSize = 24,
                TextColor = ZigbeeColor.Current.GXCTextBlackColor
                TextColor = ZigbeeColor.Current.GXCTextDeepBlackColor,
                IsBold=true
            };
            if (Config.Instance.Home.IsOthreShare)
            {
@@ -494,143 +584,13 @@
                }
                else
                {
                    var residenceListView = new Dialog();
                    residenceListView.Show();
                    var closeBGview = new FrameLayout();
                    residenceListView.AddChidren(closeBGview);
                    closeBGview.MouseUpEventHandler += (send1, e1) =>
                    var selectHouse = new Device.Category.SelectHouse();
                    selectHouse.Init();
                    selectHouse.HouseAction = (houseId) =>
                    {
                        residenceListView.Close();
                    };
                    var bg = new Button
                    {
                        X = Application.GetRealWidth(35),
                        Y = Application.GetRealHeight(248),
                        Width = Application.GetMinRealAverage(449),
                        Height = Application.GetMinRealAverage(478),
                        UnSelectedImagePath = "Item/SelectHouse.png"
                    };
                    closeBGview.AddChidren(bg);
                    var changeHomeFL = new FrameLayout()
                    {
                        X = Application.GetRealWidth(35),
                        Y = Application.GetRealHeight(271),
                        Height = Application.GetMinRealAverage(449),
                        Width = Application.GetMinRealAverage(440),
                        Radius = CommonPage.BigFormRadius,
                        BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
                    };
                    closeBGview.AddChidren(changeHomeFL);
                    var changeHomeBtn = new Button()
                    {
                        X = Application.GetRealWidth(80),
                        Width = Application.GetRealWidth(350),
                        Height = Application.GetRealHeight(150),
                        TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                        TextID = R.MyInternationalizationString.ChangeHome,
                        TextAlignment = TextAlignment.CenterLeft
                    };
                    changeHomeFL.AddChidren(changeHomeBtn);
                    var scrolView = new VerticalScrolViewLayout()
                    {
                        Y = changeHomeBtn.Bottom,
                        Height = Application.GetMinRealAverage(305 - 10)
                    };
                    changeHomeFL.AddChidren(scrolView);
                    var clickCheckBtn = new Device.CommonForm.SelectedStatuButton();
                    var clickNameBtn = new Device.CommonForm.SelectedStatuButton();
                    foreach (var homeFilePath in Config.Instance.HomeFilePathList)
                    {
                        var home = House.GetHouseByFilePath(homeFilePath);
                        if (home == null)
                        {
                            continue;
                        }
                        var rowView = new RowLayout()
                        {
                            Height = Application.GetRealHeight(150)
                        };
                        scrolView.AddChidren(rowView);
                        var pointBtn = new Device.CommonForm.SelectedStatuButton()
                        {
                            X = Application.GetRealWidth(80),
                            Width = Application.GetMinRealAverage(80),
                            Height = Application.GetMinRealAverage(80),
                            Gravity = Gravity.CenterVertical,
                            UnSelectedImagePath = "Item/House.png",
                            SelectedImagePath = "Item/HouseSelected.png",
                            IsSelected = home.Id == Config.Instance.Home.Id
                        };
                        rowView.AddChidren(pointBtn);
                        var nameBtn = new Device.CommonForm.SelectedStatuButton()
                        {
                            X = Application.GetRealWidth(173),
                            Width = Application.GetRealWidth(280),
                            TextAlignment = TextAlignment.CenterLeft,
                            Text = home.Name,
                            TextColor = ZigbeeColor.Current.GXCTextGrayColor,
                            SelectedTextColor = ZigbeeColor.Current.GXCTextBlackColor,
                            IsSelected = home.Id == Config.Instance.Home.Id
                        };
                        if (home.IsOthreShare)
                        {
                            nameBtn.Text = $"{home.Name}";
                        }
                        rowView.AddChidren(nameBtn);
                        EventHandler<MouseEventArgs> selectedResidenceHandler = (send1, e1) =>
                        {
                            if (Config.Instance.Home.FileName == homeFilePath)
                            {
                                return;
                            }
                            clickCheckBtn.IsSelected = false;
                            clickNameBtn.IsSelected = false;
                            pointBtn.IsSelected = true;
                            nameBtn.IsSelected = true;
                            residecneName.Text = home.Name;
                            if (home.IsOthreShare)
                            {
                                nameBtn.Text = $"{home.Name}";
                            }
                            clickCheckBtn = pointBtn;
                            clickNameBtn = nameBtn;
                            residenceListView.Close();
                            ChangeResidence(home);
                        };
                        nameBtn.MouseUpEventHandler += selectedResidenceHandler;
                        pointBtn.MouseUpEventHandler += selectedResidenceHandler;
                        rowView.MouseUpEventHandler += selectedResidenceHandler;
                        if (home.Id == Config.Instance.Home.Id)
                        {
                            pointBtn.IsSelected = true;
                            nameBtn.IsSelected = true;
                            clickCheckBtn = pointBtn;
                            clickNameBtn = nameBtn;
                            residecneName.Text = home.Name;
                            if (home.IsOthreShare)
                            {
                                residecneName.Text = nameBtn.Text = $"{home.Name}";
                            }
                        }
                        else
                        {
                            pointBtn.IsSelected = false;
                            nameBtn.IsSelected = false;
                        }
                        ChangeResidence(House.GetHouseByHouseId(houseId));
                    };
                }
            };
            //消息
            messageBtn.MouseUpEventHandler += (send, e) =>
            {
            };
            #endregion
@@ -646,23 +606,30 @@
                };
                AddChidren(roomPageView);
                //突出边距
                roomPageView.TCBJ = Application.GetRealWidth(127);
                roomPageView.TCBJ = Application.GetRealWidth(181);
                //两个page之间的间距
                roomPageView.JMBJ = Application.GetRealWidth(69);
                roomPageView.JMBJ = Application.GetRealWidth(0);
                //当前房间
                //Room.CurrentRoom = Room.CurrentRoom == null ? Room.Lists[0] : Room.CurrentRoom;
                var rList = Room.CurrentRoom.GetRoomsByCurrentFloorIdAppendLoveRoom();
                Room.CurrentRoom = rList[0];
                Room.CurrentRoom = Room.CurrentRoom ?? rList[0];
                foreach (var room in rList)
                {
                    var roomView = new Device.CommonForm.RoomView(0, 0);
                    roomPageView.AddChidren(roomView);
                    roomView.Init(room);
                    roomView.HideName(true);
                    roomView.action += () =>
                    {
                        Show();
                    };
                }
                var curIndex = rList.FindIndex((obj) => obj.Id == Room.CurrentRoom.Id);
                roomPageView.PageIndex = curIndex;
                if (roomPageView.GetChildren(roomPageView.PageIndex) != null)
                {
                    (roomPageView.GetChildren(roomPageView.PageIndex) as RoomView).HideName(false);
                }
                var functionSceneView = new FrameLayout()
@@ -686,7 +653,8 @@
                    SelectedTextColor = ZigbeeColor.Current.GXCTextWhiteColor,
                    TextID = R.MyInternationalizationString.Scence,
                    IsSelected = true,
                    TextSize=16
                    TextSize=16,
                    IsBold=true
                };
                functionSceneView.AddChidren(sceneBtn);
@@ -721,7 +689,9 @@
                    sceneBtn.IsSelected = false;
                    functionBtn.IsSelected = true;
                    sceneBtn.TextSize = 14;
                    sceneBtn.IsBold = false;
                    functionBtn.TextSize = 16;
                    functionBtn.IsBold = true;
                    RefreshBodyView();
                };
                //选择场景分栏
@@ -730,7 +700,9 @@
                    functionBtn.IsSelected = false;
                    sceneBtn.IsSelected = true;
                    sceneBtn.TextSize = 16;
                    sceneBtn.IsBold = true;
                    functionBtn.TextSize = 14;
                    functionBtn.IsBold = false;
                    RefreshBodyView();
                };
@@ -738,9 +710,22 @@
                roomPageView.PageChange += (sender, e) =>
                {
                    if(roomPageView.GetChildren(roomPageView.PageIndex - 1) !=null)
                    {
                        (roomPageView.GetChildren(roomPageView.PageIndex - 1) as RoomView).HideName(true);
                    }
                    if (roomPageView.GetChildren(roomPageView.PageIndex + 1) != null)
                    {
                        (roomPageView.GetChildren(roomPageView.PageIndex + 1) as RoomView).HideName(true);
                    }
                    if (roomPageView.GetChildren(roomPageView.PageIndex) != null)
                    {
                        (roomPageView.GetChildren(roomPageView.PageIndex) as RoomView).HideName(false);
                    }
                    //切换当前房间
                    Room.CurrentRoom = rList[roomPageView.PageIndex];
                    RefreshBodyView();
                };
            }
            else
@@ -783,6 +768,7 @@
            floorFL.FloorAction = (floorId) =>
            {
                floorBtn.Text = Config.Instance.Home.GetFloorNameById(floorId);
                Common.Room.CurrentRoom = Common.Room.CurrentRoom?.GetLoveRoom();
                Show();
            };
        }
@@ -914,6 +900,7 @@
                Height = Application.GetRealHeight(200),
                Text = Language.StringByID(R.MyInternationalizationString.NoFunction_Tip).Replace("{\\r\\n}", "\r\n"),
                TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
                TextAlignment=TextAlignment.Center,
                IsMoreLines = true
            };
            functionSceneBodyView.AddChidren(noFunctionTip);
@@ -924,6 +911,7 @@
        /// </summary>
        private void ShowFunction()
        {
            functionSceneBodyView.RemoveAll();
            //选择功能--直接从房间的devicelist中获取
            var deviceList = Room.CurrentRoom.DeviceUIList;
            if (deviceList == null)
@@ -937,677 +925,817 @@
            }
            else
            {
                deviceVerticalScrolViewLayout = new VerticalScrolViewLayout { };
                functionSceneBodyView.AddChidren(deviceVerticalScrolViewLayout);
                for (int i = 0; i < deviceList.Count; i++)
                var dList = new List<DeviceUI> { };
                foreach(var device in deviceList)
                {
                    int t = i % 2;
                    int tt = i / 2;
                    int xx = 43 + i % 2 * (20 + 487);
                    int yy = 14;
                    var device = deviceList[i];
                    if (device == null || device.CommonDevice == null)
                    var info = Common.LocalDevice.Current.GetDeviceBelongEnumInfo(device.CommonDevice);
                    if (info.BeloneType == DeviceBeloneType.A干接点 || info.BeloneType == DeviceBeloneType.A中继器)
                    {
                        continue;
                    }
                    dList.Add(device);
                }
                    if (i % 2 == 0)
                    {
                        itemView = new FrameLayout()
                deviceVerticalScrolViewLayout = new VerticalScrolViewLayout { };
                functionSceneBodyView.AddChidren(deviceVerticalScrolViewLayout);
                for (int i = 0; i < dList.Count; i++)
                {
                    var device = dList[i];
                    //new System.Threading.Thread(() =>
                    //{
                    Application.RunOnMainThread(() =>
                        {
                            Height = Application.GetRealHeight(14 + 348),
                            Tag = device
                        };
                        deviceVerticalScrolViewLayout.AddChidren(itemView);
                    }
                    //收藏
                    EventHandler<MouseEventArgs> collectionEvent = (sender, e) =>
                    {
                        if ((sender as Button).IsSelected)
                        {
                            Shared.Common.Room.CurrentRoom.GetLoveRoom().DeleteDevice(device.FileName);
                            (sender as Button).IsSelected = false;
                        }
                        else
                        {
                            Shared.Common.Room.CurrentRoom.GetLoveRoom().AddDevice(device.FileName);
                            (sender as Button).IsSelected = true;
                        }
                        if (Room.CurrentRoom.IsLove)
                        {
                            RefreshBodyView();
                        }
                    };
                    //////判断设备是否支持的属性 如开关等控制
                    if (device.CommonDevice.Type == ZigBee.Device.DeviceType.WindowCoveringDevice)
                    {
                        //窗帘 卷帘
                        var rollerShade = (ZigBee.Device.Rollershade)device.CommonDevice;
                        //不上非远程
                        if (rollerShade.Gateway == null)
                        {
                            continue;
                        }
                        if (rollerShade.Gateway.IsVirtual)
                        {
                            //发送读取状态命令
                            ReadStatus(rollerShade, () =>
                            try
                            {
                                ReadDeviceAttributeLogic.Instance.SendCurtainStatuComand(device.CommonDevice);
                            });
                        }
                        else
                        {
                            if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - rollerShade.LastDateTime).TotalSeconds)
                            {
                                ReadDeviceAttributeLogic.Instance.SendCurtainStatuComand(device.CommonDevice);
                            }
                        }
                        var lightView = new FunctionMainView(xx, yy);
                        itemView.AddChidren(lightView);
                        lightView.Init();
                        lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
                        lightView.SetStatuText(device.GetDeviceStatu());
                        lightView.SetDeviceName(rollerShade.DeviceEpointName);
                        //lightView.SetStatu(true);
                        lightView.IsSelected = rollerShade.WcdCurrentPositionLiftPercentage == 100;
                        lightView.SetCollect(true);
                        lightView.SwitchButton.MouseUpEventHandler += (sender, e) =>
                        {
                            (sender as Button).IsSelected = !(sender as Button).IsSelected;
                            if ((sender as Button).IsSelected)
                            {
                                zbGateway = device.CommonDevice.Gateway;
                                sendedControlCommand = false;
                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                (device.CommonDevice as Rollershade).CurtainUpDownStopControl(0);
                                ((sender as Button).Parent as FunctionMainView).SetStatuText(CommonFormResouce.GetSwitchStatu(true));
                                ((sender as Button).Parent as FunctionMainView).IsSelected = true;
                                //控制延时回调
                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
                                int t = i % 2;
                                int tt = i / 2;
                                int xx = 43 + i % 2 * (20 + 487);
                                int yy = 14;
                                if (i % 2 == 0)
                                {
                                    if (Parent == null)
                                    itemView = new FrameLayout()
                                    {
                                        return;
                                    }
                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                    if (sendedControlCommand == false)
                                    {
                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                    }
                                });
                            }
                            else
                            {
                                zbGateway = device.CommonDevice.Gateway;
                                sendedControlCommand = false;
                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                (device.CommonDevice as Rollershade).CurtainUpDownStopControl(1);
                                ((sender as Button).Parent as FunctionMainView).SetStatuText(CommonFormResouce.GetSwitchStatu(false));
                                ((sender as Button).Parent as FunctionMainView).IsSelected = false;
                                //控制延时回调
                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
                                        Height = Application.GetRealHeight(14 + 348),
                                    };
                                    deviceVerticalScrolViewLayout.AddChidren(itemView);
                                }
                                //收藏
                                EventHandler<MouseEventArgs> collectionEvent = (sender, e) =>
                                {
                                    if (Parent == null)
                                    if ((sender as Button).IsSelected)
                                    {
                                        return;
                                        Common.Room.CurrentRoom.GetLoveRoom().DeleteDevice(device.FileName);
                                        (sender as Button).IsSelected = false;
                                    }
                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                    if (sendedControlCommand == false)
                                    else
                                    {
                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                        Common.Room.CurrentRoom.GetLoveRoom().AddDevice(device.FileName);
                                        (sender as Button).IsSelected = true;
                                    }
                                });
                            }
                        };
                                    if (Room.CurrentRoom.IsLove)
                                    {
                                        RefreshBodyView();
                                    }
                                };
                        lightView.CardBG.MouseUpEventHandler += (sender, e) =>
                        {
                            CommonPage.Instance.IsDrawerLockMode = true;
                            var rollerShadeControl = new Phone.Device.Curtain.RollerShadeControl();
                            UserView.HomePage.Instance.AddChidren(rollerShadeControl);
                            UserView.HomePage.Instance.PageIndex += 1;
                            UserView.HomePage.Instance.ScrollEnabled = false;
                            //rollerShadeControl.action = RefreshBodyView;
                            rollerShadeControl.Show(device, Room.CurrentRoom);
                        };
                        lightView.CollectButton.MouseUpEventHandler += collectionEvent;
                    }
                    else if (device.CommonDevice.Type == ZigBee.Device.DeviceType.OnOffOutput)
                    {
                        //开关灯
                        var light = device.CommonDevice as ToggleLight;
                        //补上非远程
                        if (light.Gateway == null)
                        {
                            continue;
                        }
                        if (light.Gateway.IsVirtual)
                        {
                            //发送读取状态命令
                            ReadStatus(light, () =>
                            {
                                ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice);
                            });
                        }
                        else
                        {
                            if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - light.LastDateTime).TotalSeconds)
                            {
                                ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice);
                            }
                        }
                        var lightView = new FunctionMainView(xx, yy);
                        itemView.AddChidren(lightView);
                        lightView.Init();
                        lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
                        lightView.SetStatuText(device.GetDeviceStatu());
                        lightView.SetDeviceName(device.CommonDevice.DeviceEpointName);
                        lightView.IsSelected = light.OnOffStatus == 1;
                        lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(Room.CurrentRoom, device.FileName));
                        var dev = Room.LoveRoomDeviceUIFilePathList.Find((obj) => obj == device.FileName);
                        if (dev == null)
                        {
                            lightView.CollectButton.IsSelected = false;
                        }
                        else
                        {
                            lightView.CollectButton.IsSelected = true;
                        }
                        lightView.SwitchButton.MouseUpEventHandler += (sender, e) =>
                        {
                            (sender as Button).IsSelected = !(sender as Button).IsSelected;
                            if ((sender as Button).IsSelected)
                            {
                                zbGateway = device.CommonDevice.Gateway;
                                sendedControlCommand = false;
                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                light.SwitchControl(1);
                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
                                ((sender as Button).Parent as FunctionMainView).IsSelected = true;
                                //控制延时回调
                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
                                if (device.CommonDevice.Type == DeviceType.WindowCoveringDevice)
                                {
                                    if (Parent == null)
                                    //窗帘 卷帘
                                    var rollerShade = (ZigBee.Device.Rollershade)device.CommonDevice;
                                    if (rollerShade.Gateway != null)
                                    {
                                        return;
                                        new System.Threading.Thread(() =>
                                        {
                                            System.Threading.Thread.Sleep(100 * i);
                                            if (rollerShade.Gateway.IsVirtual)
                                            {
                                                ReadStatus(rollerShade, () =>
                                                {
                                                    ReadDeviceAttributeLogic.Instance.SendCurtainStatuComand(device.CommonDevice);
                                                });
                                            }
                                            else
                                            {
                                                if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - rollerShade.LastDateTime).TotalSeconds)
                                                {
                                                    ReadDeviceAttributeLogic.Instance.SendCurtainStatuComand(device.CommonDevice);
                                                }
                                            }
                                        })
                                        { IsBackground = true }.Start();
                                        var functionView = new FunctionMainView(xx, yy);
                                        functionView.Tag = device;
                                        itemView.AddChidren(functionView);
                                        functionView.Init();
                                        functionView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
                                        functionView.SetStatuText(device.GetDeviceStatu());
                                        functionView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(rollerShade));
                                        functionView.IsSelected = rollerShade.WcdCurrentPositionLiftPercentage == 100;
                                        functionView.SetCollect(true);
                                        functionView.SwitchButton.MouseUpEventHandler += (sender, e) =>
                                        {
                                            (sender as Button).IsSelected = !(sender as Button).IsSelected;
                                            if ((sender as Button).IsSelected)
                                            {
                                                zbGateway = device.CommonDevice.Gateway;
                                                sendedControlCommand = false;
                                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                                (device.CommonDevice as Rollershade).CurtainUpDownStopControl(0);
                                                ((sender as Button).Parent as FunctionMainView).SetStatuText(Language.StringByID(R.MyInternationalizationString.Open));
                                                ((sender as Button).Parent as FunctionMainView).IsSelected = true;
                                                //控制延时回调
                                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
                                                {
                                                    if (Parent == null)
                                                    {
                                                        return;
                                                    }
                                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                                    if (sendedControlCommand == false)
                                                    {
                                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                                    }
                                                });
                                            }
                                            else
                                            {
                                                zbGateway = device.CommonDevice.Gateway;
                                                sendedControlCommand = false;
                                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                                (device.CommonDevice as Rollershade).CurtainUpDownStopControl(1);
                                                ((sender as Button).Parent as FunctionMainView).SetStatuText(Language.StringByID(R.MyInternationalizationString.Close));
                                                ((sender as Button).Parent as FunctionMainView).IsSelected = false;
                                                //控制延时回调
                                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
                                                {
                                                    if (Parent == null)
                                                    {
                                                        return;
                                                    }
                                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                                    if (sendedControlCommand == false)
                                                    {
                                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                                    }
                                                });
                                            }
                                        };
                                        functionView.CardBG.MouseUpEventHandler += (sender, e) =>
                                        {
                                            CommonPage.Instance.IsDrawerLockMode = true;
                                            var rollerShadeControl = new Phone.Device.Curtain.RollerShadeControl();
                                            UserView.HomePage.Instance.AddChidren(rollerShadeControl);
                                            UserView.HomePage.Instance.PageIndex += 1;
                                            UserView.HomePage.Instance.ScrollEnabled = false;
                                            rollerShadeControl.IsDrawerLockMode = true;
                                            rollerShadeControl.Show(device, Room.CurrentRoom);
                                            rollerShadeControl.action += (curDev, curRoom) =>
                                            {
                                                ReFreshEditDeviceAction(device, curRoom, functionView);
                                            };
                                        };
                                        functionView.CollectButton.MouseUpEventHandler += collectionEvent;
                                    }
                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                    if (sendedControlCommand == false)
                                    {
                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                    }
                                });
                            }
                            else
                            {
                                zbGateway = device.CommonDevice.Gateway;
                                sendedControlCommand = false;
                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                light.SwitchControl(0);
                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
                                ((sender as Button).Parent as FunctionMainView).IsSelected = false;
                                //控制延时回调
                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
                                }
                                else if (device.CommonDevice.Type == DeviceType.OnOffOutput)
                                {
                                    if (Parent == null)
                                    //开关灯
                                    var light = device.CommonDevice as ToggleLight;
                                    if (light.Gateway != null)
                                    {
                                        return;
                                        new System.Threading.Thread(() =>
                                        {
                                            System.Threading.Thread.Sleep(100 * i);
                                            if (light.Gateway.IsVirtual)
                                            {
                                                ReadStatus(light, () =>
                                                {
                                                    ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice);
                                                });
                                            }
                                            else
                                            {
                                                if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - light.LastDateTime).TotalSeconds)
                                                {
                                                    ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice);
                                                }
                                            }
                                        })
                                        { IsBackground = true }.Start();
                                        var functionView = new FunctionMainView(xx, yy);
                                        itemView.AddChidren(functionView);
                                        functionView.Init();
                                        functionView.Tag = device;
                                        functionView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
                                        functionView.SetStatuText(device.GetDeviceStatu());
                                        functionView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device.CommonDevice));
                                        functionView.IsSelected = light.OnOffStatus == 1;
                                        functionView.SetCollect(Room.CurrentRoom.IsCollectInRoom(device.FileName));
                                        if (Common.Room.CurrentRoom.IsCollectInRoom(device.FileName) == false)
                                        {
                                            functionView.CollectButton.IsSelected = false;
                                        }
                                        else
                                        {
                                            functionView.CollectButton.IsSelected = true;
                                        }
                                        functionView.SwitchButton.MouseUpEventHandler += (sender, e) =>
                                        {
                                            (sender as Button).IsSelected = !(sender as Button).IsSelected;
                                            if ((sender as Button).IsSelected)
                                            {
                                                zbGateway = device.CommonDevice.Gateway;
                                                sendedControlCommand = false;
                                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                                light.SwitchControl(1);
                                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
                                                ((sender as Button).Parent as FunctionMainView).IsSelected = true;
                                                //控制延时回调
                                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
                                                {
                                                    if (Parent == null)
                                                    {
                                                        return;
                                                    }
                                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                                    if (sendedControlCommand == false)
                                                    {
                                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                                    }
                                                });
                                            }
                                            else
                                            {
                                                zbGateway = device.CommonDevice.Gateway;
                                                sendedControlCommand = false;
                                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                                light.SwitchControl(0);
                                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
                                                ((sender as Button).Parent as FunctionMainView).IsSelected = false;
                                                //控制延时回调
                                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
                                                {
                                                    if (Parent == null)
                                                    {
                                                        return;
                                                    }
                                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                                    if (sendedControlCommand == false)
                                                    {
                                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                                    }
                                                });
                                            }
                                        };
                                        functionView.CardBG.MouseUpEventHandler += (sender, e) =>
                                        {
                                            CommonPage.Instance.IsDrawerLockMode = true;
                                            var lightControl = new Phone.Device.Light.OnOffControl();
                                            UserView.HomePage.Instance.AddChidren(lightControl);
                                            UserView.HomePage.Instance.PageIndex += 1;
                                            lightControl.IsDrawerLockMode = true;
                                            lightControl.Show(device, Room.CurrentRoom);
                                            lightControl.action += (curDev, curRoom) =>
                                            {
                                                ReFreshEditDeviceAction(device, curRoom, functionView);
                                            };
                                        };
                                        functionView.CollectButton.MouseUpEventHandler += collectionEvent;
                                    }
                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                    if (sendedControlCommand == false)
                                    {
                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                    }
                                });
                            }
                        };
                        lightView.CardBG.MouseUpEventHandler += (sender, e) =>
                        {
                            CommonPage.Instance.IsDrawerLockMode = true;
                            if (device.CommonDevice.DfunctionType == DeviceFunctionType.A开关)
                            {
                                var lightControl = new Phone.Device.Light.OnOffControl();
                                UserView.HomePage.Instance.AddChidren(lightControl);
                                UserView.HomePage.Instance.PageIndex += 1;
                                //lightControl.action = RefreshBodyView;
                                lightControl.Show(device, Room.CurrentRoom);
                            }
                            else if (device.CommonDevice.DfunctionType == DeviceFunctionType.A插座)
                            {
                                var lightControl = new Phone.Device.Light.PlugControl();
                                UserView.HomePage.Instance.AddChidren(lightControl);
                                UserView.HomePage.Instance.PageIndex += 1;
                                //lightControl.action = RefreshBodyView;
                                lightControl.Show(device, Room.CurrentRoom);
                            }
                            else
                            {
                                var lightControl = new Phone.Device.Light.LightControl();
                                UserView.HomePage.Instance.AddChidren(lightControl);
                                UserView.HomePage.Instance.PageIndex += 1;
                                //lightControl.action = RefreshBodyView;
                                lightControl.Show(device, Room.CurrentRoom);
                            }
                        };
                        lightView.CollectButton.MouseUpEventHandler += collectionEvent;
                    }
                    else if (device.CommonDevice.Type == ZigBee.Device.DeviceType.AirSwitch)
                    {
                        //空气开关
                        var airSwitch = device.CommonDevice as AirSwitch;
                        //补上非远程
                        if (airSwitch.Gateway == null)
                        {
                            continue;
                        }
                        if (airSwitch.Gateway.IsVirtual)
                        {
                            //发送读取状态命令
                            ReadStatus(airSwitch, () =>
                            {
                                ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice);
                            });
                        }
                        else
                        {
                            //防止短时间内多次读取设备状态
                            if ((DateTime.Now - airSwitch.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                            {
                                ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice);
                            }
                        }
                        var lightView = new FunctionMainView(xx, yy);
                        itemView.AddChidren(lightView);
                        lightView.Init();
                        lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
                        lightView.SetStatuText(device.GetDeviceStatu());
                        lightView.SetDeviceName(airSwitch.DeviceEpointName);
                        //lightView.SetStatu(true);
                        lightView.IsSelected = airSwitch.OnOffStatus == 1;
                        lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(Room.CurrentRoom, device.FileName));
                        lightView.SwitchButton.MouseUpEventHandler += (sender, e) =>
                        {
                            (sender as Button).IsSelected = !(sender as Button).IsSelected;
                            if ((sender as Button).IsSelected)
                            {
                                zbGateway = device.CommonDevice.Gateway;
                                sendedControlCommand = false;
                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                airSwitch.SwitchControl(1);
                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
                                ((sender as Button).Parent as FunctionMainView).IsSelected = true;
                                //控制延时回调
                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
                                }
                                else if (device.CommonDevice.Type == DeviceType.AirSwitch)
                                {
                                    if (Parent == null)
                                    //空气开关
                                    var airSwitch = device.CommonDevice as AirSwitch;
                                    if (airSwitch.Gateway != null)
                                    {
                                        return;
                                        new System.Threading.Thread(() =>
                                        {
                                            System.Threading.Thread.Sleep(100 * i);
                                            if (airSwitch.Gateway.IsVirtual)
                                            {
                                                ReadStatus(airSwitch, () =>
                                                {
                                                    ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice);
                                                });
                                            }
                                            else
                                            {
                                                if ((DateTime.Now - airSwitch.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                                                {
                                                    ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice);
                                                }
                                            }
                                        })
                                        { IsBackground = true }.Start();
                                        var functionView = new FunctionMainView(xx, yy);
                                        itemView.AddChidren(functionView);
                                        functionView.Init();
                                        functionView.Tag = device;
                                        functionView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
                                        functionView.SetStatuText(device.GetDeviceStatu());
                                        functionView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(airSwitch));
                                        functionView.IsSelected = airSwitch.OnOffStatus == 1;
                                        functionView.SetCollect(Room.CurrentRoom.IsCollectInRoom( device.FileName));
                                        functionView.SwitchButton.MouseUpEventHandler += (sender, e) =>
                                        {
                                            (sender as Button).IsSelected = !(sender as Button).IsSelected;
                                            if ((sender as Button).IsSelected)
                                            {
                                                zbGateway = device.CommonDevice.Gateway;
                                                sendedControlCommand = false;
                                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                                airSwitch.SwitchControl(1);
                                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
                                                ((sender as Button).Parent as FunctionMainView).IsSelected = true;
                                                //控制延时回调
                                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
                                                {
                                                    if (Parent == null)
                                                    {
                                                        return;
                                                    }
                                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                                    if (sendedControlCommand == false)
                                                    {
                                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                                    }
                                                });
                                            }
                                            else
                                            {
                                                zbGateway = device.CommonDevice.Gateway;
                                                sendedControlCommand = false;
                                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                                airSwitch.SwitchControl(0);
                                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
                                                ((sender as Button).Parent as FunctionMainView).IsSelected = false;
                                                //控制延时回调
                                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
                                                {
                                                    if (Parent == null)
                                                    {
                                                        return;
                                                    }
                                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                                    if (sendedControlCommand == false)
                                                    {
                                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                                    }
                                                });
                                            }
                                        };
                                        functionView.CardBG.MouseUpEventHandler += (sender, e) =>
                                        {
                                            CommonPage.Instance.IsDrawerLockMode = true;
                                            var lightControl = new Phone.Device.Light.AirSwitchControl();
                                            UserView.HomePage.Instance.AddChidren(lightControl);
                                            UserView.HomePage.Instance.PageIndex += 1;
                                            lightControl.IsDrawerLockMode = true;
                                            lightControl.Show(device, Room.CurrentRoom);
                                            lightControl.action += (curDev, curRoom) =>
                                            {
                                                ReFreshEditDeviceAction(device, curRoom, functionView);
                                            };
                                        };
                                        functionView.CollectButton.MouseUpEventHandler += collectionEvent;
                                    }
                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                    if (sendedControlCommand == false)
                                    {
                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                    }
                                });
                            }
                            else
                            {
                                zbGateway = device.CommonDevice.Gateway;
                                sendedControlCommand = false;
                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                airSwitch.SwitchControl(0);
                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
                                ((sender as Button).Parent as FunctionMainView).IsSelected = false;
                                //控制延时回调
                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
                                }
                                else if (device.CommonDevice.Type == DeviceType.Thermostat)
                                {
                                    if (Parent == null)
                                    //恒温器-AC-空调
                                    var ac = device.CommonDevice as AC;
                                    if (ac.Gateway != null)
                                    {
                                        return;
                                        new System.Threading.Thread(() =>
                                        {
                                            System.Threading.Thread.Sleep(100 * i);
                                            if (ac.Gateway.IsVirtual)
                                            {
                                                ReadStatus(ac, () =>
                                                {
                                                    ReadDeviceAttributeLogic.Instance.SendACStatuComand(device.CommonDevice);
                                                });
                                            }
                                            else
                                            {
                                                if ((DateTime.Now - ac.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                                                {
                                                    ReadDeviceAttributeLogic.Instance.SendACStatuComand(device.CommonDevice);
                                                }
                                            }
                                        })
                                        { IsBackground = true }.Start();
                                        var functionView = new FunctionMainView(xx, yy);
                                        itemView.AddChidren(functionView);
                                        functionView.Init();
                                        functionView.Tag = device;
                                        functionView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
                                        functionView.SetStatuText(device.GetDeviceStatu());
                                        functionView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device.CommonDevice));
                                        functionView.IsSelected = ac.currentSystemMode != 0;
                                        functionView.SetCollect(Room.CurrentRoom.IsCollectInRoom(device.FileName));
                                        functionView.SwitchButton.MouseUpEventHandler += (sender, e) =>
                                        {
                                            (sender as Button).IsSelected = !(sender as Button).IsSelected;
                                            if ((sender as Button).IsSelected)
                                            {
                                                zbGateway = device.CommonDevice.Gateway;
                                                sendedControlCommand = false;
                                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                                ac.Open();
                                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
                                                ((sender as Button).Parent as FunctionMainView).IsSelected = true;
                                                //控制延时回调
                                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
                                                {
                                                    if (Parent == null)
                                                    {
                                                        return;
                                                    }
                                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                                    if (sendedControlCommand == false)
                                                    {
                                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                                    }
                                                });
                                            }
                                            else
                                            {
                                                zbGateway = device.CommonDevice.Gateway;
                                                sendedControlCommand = false;
                                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                                ac.Close();
                                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
                                                ((sender as Button).Parent as FunctionMainView).IsSelected = false;
                                                //控制延时回调
                                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
                                                {
                                                    if (Parent == null)
                                                    {
                                                        return;
                                                    }
                                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                                    if (sendedControlCommand == false)
                                                    {
                                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                                    }
                                                });
                                            }
                                        };
                                        functionView.CardBG.MouseUpEventHandler += (sender, e) =>
                                        {
                                            CommonPage.Instance.IsDrawerLockMode = true;
                                            var lightControl = new Phone.Device.AC.ACControl();
                                            UserView.HomePage.Instance.AddChidren(lightControl);
                                            UserView.HomePage.Instance.PageIndex += 1;
                                            lightControl.IsDrawerLockMode = true;
                                            lightControl.Show(device, Room.CurrentRoom);
                                            lightControl.action += (curDev, curRoom) =>
                                            {
                                                ReFreshEditDeviceAction(device, curRoom, functionView);
                                            };
                                        };
                                        functionView.CollectButton.MouseUpEventHandler += collectionEvent;
                                    }
                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                    if (sendedControlCommand == false)
                                    {
                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                    }
                                });
                            }
                        };
                        lightView.CardBG.MouseUpEventHandler += (sender, e) =>
                        {
                            CommonPage.Instance.IsDrawerLockMode = true;
                            var lightControl = new Phone.Device.Light.AirSwitchControl();
                            UserView.HomePage.Instance.AddChidren(lightControl);
                            UserView.HomePage.Instance.PageIndex += 1;
                            //lightControl.action = RefreshBodyView;
                            lightControl.Show(device, Room.CurrentRoom);
                        };
                        lightView.CollectButton.MouseUpEventHandler += collectionEvent;
                    }
                    else if (device.CommonDevice.Type == ZigBee.Device.DeviceType.Thermostat)
                    {
                        //恒温器-AC-空调
                        var ac = device.CommonDevice as AC;
                        //补上非远程
                        if (ac.Gateway == null)
                        {
                            continue;
                        }
                        if (ac.Gateway.IsVirtual)
                        {
                            //发送读取状态命令
                            ReadStatus(ac, () =>
                            {
                                ReadDeviceAttributeLogic.Instance.SendACStatuComand(device.CommonDevice);
                            });
                        }
                        else
                        {
                            //防止短时间内多次读取设备状态
                            if ((DateTime.Now - ac.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                            {
                                ReadDeviceAttributeLogic.Instance.SendACStatuComand(device.CommonDevice);
                            }
                        }
                        var lightView = new FunctionMainView(xx, yy);
                        itemView.AddChidren(lightView);
                        lightView.Init();
                        lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
                        lightView.SetStatuText(device.GetDeviceStatu());
                        lightView.SetDeviceName(device.CommonDevice.DeviceEpointName);
                        lightView.IsSelected = ac.currentSystemMode != 0;
                        lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(Room.CurrentRoom, device.FileName));
                        lightView.SwitchButton.MouseUpEventHandler += (sender, e) =>
                        {
                            (sender as Button).IsSelected = !(sender as Button).IsSelected;
                            if ((sender as Button).IsSelected)
                            {
                                zbGateway = device.CommonDevice.Gateway;
                                sendedControlCommand = false;
                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                ac.Open();
                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
                                ((sender as Button).Parent as FunctionMainView).IsSelected = true;
                                //控制延时回调
                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
                                }
                                else if (device.CommonDevice.Type == DeviceType.DimmableLight)
                                {
                                    if (Parent == null)
                                    //调光灯
                                    var dimmableLight = device.CommonDevice as DimmableLight;
                                    if (dimmableLight.Gateway != null)
                                    {
                                        return;
                                        new System.Threading.Thread(() =>
                                        {
                                            System.Threading.Thread.Sleep(100 * i);
                                            if (dimmableLight.Gateway.IsVirtual)
                                            {
                                                //发送读取状态命令
                                                ReadStatus(dimmableLight, () =>
                                                {
                                                    ReadDeviceAttributeLogic.Instance.SendDimmableLightStatuComand(device.CommonDevice);
                                                });
                                            }
                                            else
                                            {
                                                //防止短时间内多次读取设备状态
                                                if ((DateTime.Now - dimmableLight.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                                                {
                                                    ReadDeviceAttributeLogic.Instance.SendDimmableLightStatuComand(device.CommonDevice);
                                                }
                                            }
                                        })
                                        { IsBackground = true }.Start();
                                        var functionView = new FunctionMainView(xx, yy);
                                        itemView.AddChidren(functionView);
                                        functionView.Init();
                                        functionView.Tag = device;
                                        functionView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
                                        functionView.SetStatuText(device.GetDeviceStatu());
                                        functionView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device.CommonDevice));
                                        functionView.IsSelected = dimmableLight.OnOffStatus == 1;
                                        functionView.SetCollect(Room.CurrentRoom.IsCollectInRoom(device.FileName));
                                        if (Common.Room.CurrentRoom.IsCollectInRoom(device.FileName) == false)
                                        {
                                            functionView.CollectButton.IsSelected = false;
                                        }
                                        else
                                        {
                                            functionView.CollectButton.IsSelected = true;
                                        }
                                        functionView.SwitchButton.MouseUpEventHandler += (sender, e) =>
                                        {
                                            (sender as Button).IsSelected = !(sender as Button).IsSelected;
                                            if ((sender as Button).IsSelected)
                                            {
                                                zbGateway = device.CommonDevice.Gateway;
                                                sendedControlCommand = false;
                                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                                dimmableLight.SwitchControl(1);
                                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
                                                ((sender as Button).Parent as FunctionMainView).IsSelected = true;
                                                //控制延时回调
                                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
                                                {
                                                    if (Parent == null)
                                                    {
                                                        return;
                                                    }
                                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                                    if (sendedControlCommand == false)
                                                    {
                                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                                    }
                                                });
                                            }
                                            else
                                            {
                                                zbGateway = device.CommonDevice.Gateway;
                                                sendedControlCommand = false;
                                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                                dimmableLight.SwitchControl(0);
                                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
                                                ((sender as Button).Parent as FunctionMainView).IsSelected = false;
                                                //控制延时回调
                                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
                                                {
                                                    if (Parent == null)
                                                    {
                                                        return;
                                                    }
                                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                                    if (sendedControlCommand == false)
                                                    {
                                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                                    }
                                                });
                                            }
                                        };
                                        functionView.CardBG.MouseUpEventHandler += (sender, e) =>
                                        {
                                            CommonPage.Instance.IsDrawerLockMode = true;
                                            var dimmableLightControl = new Phone.Device.Light.DimmableLightControl();
                                            UserView.HomePage.Instance.AddChidren(dimmableLightControl);
                                            UserView.HomePage.Instance.PageIndex += 1;
                                            dimmableLightControl.IsDrawerLockMode = true;
                                            dimmableLightControl.Show(device, Room.CurrentRoom);
                                            dimmableLightControl.action += (curDev, curRoom) =>
                                            {
                                                ReFreshEditDeviceAction(device, curRoom, functionView);
                                            };
                                        };
                                        functionView.CollectButton.MouseUpEventHandler += collectionEvent;
                                    }
                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                    if (sendedControlCommand == false)
                                    {
                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                    }
                                });
                            }
                            else
                            {
                                zbGateway = device.CommonDevice.Gateway;
                                sendedControlCommand = false;
                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                ac.Close();
                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
                                ((sender as Button).Parent as FunctionMainView).IsSelected = false;
                                //控制延时回调
                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
                                }
                                else if (device.CommonDevice.Type == DeviceType.IASZone)
                                {
                                    if (Parent == null)
                                    //各类传感器
                                    var ias = device.CommonDevice as IASZone;
                                    var lightView = new FunctionMainView(xx, yy);
                                    itemView.AddChidren(lightView);
                                    lightView.Init();
                                    lightView.Tag = device;
                                    lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
                                    lightView.SetStatuText(device.GetDeviceStatu());
                                    lightView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device.CommonDevice));
                                    lightView.IsSelected = ias.iASInfo?.Alarm1 == 1;
                                    lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(device.FileName));
                                    lightView.CanControl(false);
                                    if (Common.Room.CurrentRoom.IsCollectInRoom(device.FileName) == false)
                                    {
                                        return;
                                        lightView.CollectButton.IsSelected = false;
                                    }
                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                    if (sendedControlCommand == false)
                                    else
                                    {
                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                        lightView.CollectButton.IsSelected = true;
                                    }
                                });
                            }
                        };
                        lightView.CardBG.MouseUpEventHandler += (sender, e) =>
                        {
                            CommonPage.Instance.IsDrawerLockMode = true;
                            var lightControl = new Phone.Device.AC.ACControl();
                            UserView.HomePage.Instance.AddChidren(lightControl);
                            UserView.HomePage.Instance.PageIndex += 1;
                            //lightControl.action = RefreshBodyView;
                            lightControl.Show(device, Room.CurrentRoom);
                        };
                        lightView.CollectButton.MouseUpEventHandler += collectionEvent;
                    }
                    else if (device.CommonDevice.Type == ZigBee.Device.DeviceType.DimmableLight)
                    {
                        //调光灯
                        var dimmableLight = device.CommonDevice as DimmableLight;
                        //补上非远程
                        if (dimmableLight.Gateway == null)
                        {
                            continue;
                        }
                        if (dimmableLight.Gateway.IsVirtual)
                        {
                            //发送读取状态命令
                            ReadStatus(dimmableLight, () =>
                            {
                                ReadDeviceAttributeLogic.Instance.SendDimmableLightStatuComand(device.CommonDevice);
                            });
                        }
                        else
                        {
                            //防止短时间内多次读取设备状态
                            if ((DateTime.Now - dimmableLight.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                            {
                                ReadDeviceAttributeLogic.Instance.SendDimmableLightStatuComand(device.CommonDevice);
                            }
                        }
                        var lightView = new FunctionMainView(xx, yy);
                        itemView.AddChidren(lightView);
                        lightView.Init();
                        lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
                        lightView.SetStatuText(device.GetDeviceStatu());
                        lightView.SetDeviceName(device.CommonDevice.DeviceEpointName);
                        lightView.IsSelected = dimmableLight.OnOffStatus == 1;
                        lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(Room.CurrentRoom, device.FileName));
                        var dev = Room.LoveRoomDeviceUIFilePathList.Find((obj) => obj == device.FileName);
                        if (dev == null)
                        {
                            lightView.CollectButton.IsSelected = false;
                        }
                        else
                        {
                            lightView.CollectButton.IsSelected = true;
                        }
                        lightView.SwitchButton.MouseUpEventHandler += (sender, e) =>
                        {
                            (sender as Button).IsSelected = !(sender as Button).IsSelected;
                            if ((sender as Button).IsSelected)
                            {
                                zbGateway = device.CommonDevice.Gateway;
                                sendedControlCommand = false;
                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                dimmableLight.SwitchControl(1);
                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
                                ((sender as Button).Parent as FunctionMainView).IsSelected = true;
                                //控制延时回调
                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
                                    lightView.CollectButton.MouseUpEventHandler += collectionEvent;
                                }
                                else if (device.CommonDevice.Type == DeviceType.TemperatureSensor)
                                {
                                    if (Parent == null)
                                    var tempera = device.CommonDevice as TemperatureSensor;
                                    if (tempera.Gateway != null)
                                    {
                                        return;
                                        new System.Threading.Thread(() =>
                                        {
                                            System.Threading.Thread.Sleep(100 * i);
                                            if (tempera.Gateway.IsVirtual)
                                            {
                                                ReadStatus(tempera, () =>
                                                {
                                                    if (tempera.SensorDiv == 1)
                                                    {
                                                        ReadDeviceAttributeLogic.Instance.SendTemperatureStatuComand(device.CommonDevice);
                                                    }
                                                    else if (tempera.SensorDiv == 2)
                                                    {
                                                        ReadDeviceAttributeLogic.Instance.SendHumidityStatuComand(device.CommonDevice);
                                                    }
                                                });
                                            }
                                            else
                                            {
                                                if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - tempera.LastDateTime).TotalSeconds)
                                                {
                                                    if (tempera.SensorDiv == 1)
                                                    {
                                                        ReadDeviceAttributeLogic.Instance.SendTemperatureStatuComand(device.CommonDevice);
                                                    }
                                                    else if (tempera.SensorDiv == 2)
                                                    {
                                                        ReadDeviceAttributeLogic.Instance.SendHumidityStatuComand(device.CommonDevice);
                                                    }
                                                }
                                            }
                                        })
                                        { IsBackground = true }.Start();
                                        var lightView = new FunctionMainView(xx, yy);
                                        itemView.AddChidren(lightView);
                                        lightView.Init();
                                        lightView.Tag = device;
                                        lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
                                        lightView.SetStatuText(device.GetDeviceStatu());
                                        lightView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device.CommonDevice));
                                        lightView.IsSelected = false;
                                        lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(device.FileName));
                                        lightView.CanControl(false);
                                        if (Common.Room.CurrentRoom.IsCollectInRoom(device.FileName) == false)
                                        {
                                            lightView.CollectButton.IsSelected = false;
                                        }
                                        else
                                        {
                                            lightView.CollectButton.IsSelected = true;
                                        }
                                        lightView.CollectButton.MouseUpEventHandler += collectionEvent;
                                    }
                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                    if (sendedControlCommand == false)
                                    {
                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                    }
                                });
                            }
                            else
                            {
                                zbGateway = device.CommonDevice.Gateway;
                                sendedControlCommand = false;
                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                dimmableLight.SwitchControl(0);
                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
                                ((sender as Button).Parent as FunctionMainView).IsSelected = false;
                                //控制延时回调
                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
                                }
                                else if (device.CommonDevice.Type == DeviceType.DoorLock)
                                {
                                    if (Parent == null)
                                    //门锁
                                    var dimmableLight = device.CommonDevice as DoorLock;
                                    var lightView = new FunctionMainView(xx, yy);
                                    itemView.AddChidren(lightView);
                                    lightView.Init();
                                    lightView.Tag = device;
                                    lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
                                    lightView.SetStatuText(device.GetDeviceStatu());
                                    lightView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device.CommonDevice));
                                    lightView.IsSelected = false;
                                    lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(device.FileName));
                                    lightView.CanControl(false);
                                    if (Common.Room.CurrentRoom.IsCollectInRoom(device.FileName) == false)
                                    {
                                        return;
                                        lightView.CollectButton.IsSelected = false;
                                    }
                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                    if (sendedControlCommand == false)
                                    else
                                    {
                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                        lightView.CollectButton.IsSelected = true;
                                    }
                                });
                                    lightView.CardBG.MouseUpEventHandler += (sender, e) =>
                                    {
                                        CommonPage.Instance.IsDrawerLockMode = true;
                                        var userDoorLockPage = new UserDoorLockPage(Room.CurrentRoom, device);
                                        HomePage.Instance.AddChidren(userDoorLockPage);
                                        HomePage.Instance.PageIndex += 1;
                                        userDoorLockPage.Show();
                                    };
                                    lightView.CollectButton.MouseUpEventHandler += collectionEvent;
                                }
                                else
                                {
                                    var lightView = new FunctionMainView(xx, yy);
                                    itemView.AddChidren(lightView);
                                    lightView.Init();
                                    lightView.Tag = device;
                                    lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
                                    lightView.SetStatuText(device.GetDeviceStatu());
                                    lightView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device.CommonDevice));
                                    lightView.CanControl(false);
                                    lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(device.FileName));
                                    if (Common.Room.CurrentRoom.IsCollectInRoom(device.FileName) == false)
                                    {
                                        lightView.CollectButton.IsSelected = false;
                                    }
                                    else
                                    {
                                        lightView.CollectButton.IsSelected = true;
                                    }
                                    lightView.CollectButton.MouseUpEventHandler += collectionEvent;
                                }
                            }
                        };
                            catch(Exception ex)
                            {
                        lightView.CardBG.MouseUpEventHandler += (sender, e) =>
                        {
                            CommonPage.Instance.IsDrawerLockMode = true;
                            var dimmableLightControl = new Phone.Device.Light.DimmableLightControl();
                            UserView.HomePage.Instance.AddChidren(dimmableLightControl);
                            UserView.HomePage.Instance.PageIndex += 1;
                            //dimmableLightControl.action = RefreshBodyView;
                            dimmableLightControl.Show(device, Room.CurrentRoom);
                        };
                        lightView.CollectButton.MouseUpEventHandler += collectionEvent;
                    }
                    else if (device.CommonDevice.Type == ZigBee.Device.DeviceType.DoorLock)
                    {
                        //门锁
                        var dimmableLight = device.CommonDevice as DoorLock;
                        //补上非远程
                        if (dimmableLight.Gateway == null)
                        {
                            continue;
                        }
                        var lightView = new FunctionMainView(xx, yy);
                        itemView.AddChidren(lightView);
                        lightView.Init();
                        lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
                        lightView.SetStatuText(device.GetDeviceStatu());
                        lightView.SetDeviceName(device.CommonDevice.DeviceEpointName);
                        lightView.IsSelected = dimmableLight.IsOnline == 1;
                        lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(Room.CurrentRoom, device.FileName));
                        lightView.CanControl(false);
                        var dev = Room.LoveRoomDeviceUIFilePathList.Find((obj) => obj == device.FileName);
                        if (dev == null)
                        {
                            lightView.CollectButton.IsSelected = false;
                        }
                        else
                        {
                            lightView.CollectButton.IsSelected = true;
                        }
                        lightView.CardBG.MouseUpEventHandler += (sender, e) =>
                        {
                            CommonPage.Instance.IsDrawerLockMode = true;
                            var userDoorLockPage = new UserDoorLockPage(Room.CurrentRoom, device);
                            HomePage.Instance.AddChidren(userDoorLockPage);
                            HomePage.Instance.PageIndex += 1;
                            userDoorLockPage.Show();
                        };
                        lightView.CollectButton.MouseUpEventHandler += collectionEvent;
                    }
                    else
                    {
                        var lightView = new FunctionMainView(xx, yy);
                        itemView.AddChidren(lightView);
                        lightView.Init();
                        lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
                        lightView.SetStatuText(device.GetDeviceStatu());
                        lightView.SetDeviceName(device.CommonDevice.DeviceEpointName);
                        lightView.CanControl(false);
                        lightView.IsSelected = device.CommonDevice.IsOnline == 1;
                        lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(Room.CurrentRoom, device.FileName));
                        var dev = Room.LoveRoomDeviceUIFilePathList.Find((obj) => obj == device.FileName);
                        if (dev == null)
                        {
                            lightView.CollectButton.IsSelected = false;
                        }
                        else
                        {
                            lightView.CollectButton.IsSelected = true;
                        }
                        lightView.CollectButton.MouseUpEventHandler += collectionEvent;
                    }
                            }
                        });
                    //})
                    //{ IsBackground = true }.Start();
                }
            }
        }
        /// <summary>
        /// ReFreshEditDeviceAction
        /// </summary>
        /// <param name="device"></param>
        /// <param name="curRoom"></param>
        /// <param name="functionView"></param>
        private void ReFreshEditDeviceAction(DeviceUI device, Common.Room curRoom, FunctionMainView functionView)
        {
            if (Common.Room.CurrentRoom.IsLove)
            {
                functionView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
                functionView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device.CommonDevice));
                if (Room.CurrentRoom.IsCollectInRoom(device.FileName) == false)
                {
                    ShowFunction();
                }
            }
            else
            {
                if (curRoom.Id != Common.Room.CurrentRoom.Id)
                {
                    Common.Room.CurrentRoom.DeleteDevice(device.FileName);
                    ShowFunction();
                }
                else
                {
                    functionView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
                    functionView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device.CommonDevice));
                    functionView.SetCollect(Room.CurrentRoom.IsCollectInRoom(device.FileName));
                }
            }
        }
        #endregion
@@ -1634,6 +1762,7 @@
                Height = Application.GetRealHeight(200),
                Text = Language.StringByID(R.MyInternationalizationString.NoScene_Tip).Replace("{\\r\\n}", "\r\n"),
                TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
                TextAlignment=TextAlignment.Center,
                IsMoreLines = true
            };
            functionSceneBodyView.AddChidren(noScenceTip);
@@ -1644,6 +1773,7 @@
        /// </summary>
        private void ShowScene()
        {
            functionSceneBodyView.RemoveAll();
            //选择场景
            var sceneList = Room.CurrentRoom.SceneUIList;
            if (sceneList == null)
@@ -1679,8 +1809,9 @@
                    }
                    var sceneView = new SceneMainView(xx, yy);
                    itemView.AddChidren(sceneView);
                    sceneView.Init(scene);
                    itemView.AddChidren(sceneView);
                    sceneView.CollectionAction += ShowScene;
                }
                GetDelayScene(sceneScrolView);
            }
@@ -1690,63 +1821,59 @@
        /// GetDelayScene
        /// </summary>
        /// <param name="scrolViewLayout"></param>
        private void GetDelayScene(VerticalScrolViewLayout scrolViewLayout)
        private async void GetDelayScene(VerticalScrolViewLayout scrolViewLayout)
        {
            new System.Threading.Thread(async () =>
            {
                var catDelaySceneResponseAllData = await Scene.CatDelaySceneAsync();
                if (catDelaySceneResponseAllData == null)
                {
                    return;
                }
                var catDelaySceneResponseData = catDelaySceneResponseAllData.catDelaySceneResponseData;
                if (catDelaySceneResponseData == null || catDelaySceneResponseData.DelayScenesList.Count == 0)
                {
                    return;
                }
                var delayList = catDelaySceneResponseData.DelayScenesList;
                Application.RunOnMainThread(() =>
            var catDelaySceneResponseAllData = await Scene.CatDelaySceneAsync();
            if (catDelaySceneResponseAllData == null)
            {
                return;
            }
            var catDelaySceneResponseData = catDelaySceneResponseAllData.catDelaySceneResponseData;
            if (catDelaySceneResponseData == null || catDelaySceneResponseData.DelayScenesList.Count == 0)
            {
                return;
            }
            var delayList = catDelaySceneResponseData.DelayScenesList;
            for (int i = 0; scrolViewLayout != null && i < scrolViewLayout.ChildrenCount; i++)
            {
                var iView = scrolViewLayout.GetChildren(i) as FrameLayout;
                for (int j = 0; iView != null && j < iView.ChildrenCount; j++)
                {
                    for (int i = 0; scrolViewLayout != null && i < scrolViewLayout.ChildrenCount; i++)
                    var sceneView = iView.GetChildren(j) as SceneMainView;
                    foreach (var delayScenesListResponseInfo in delayList)
                    {
                        var iView = scrolViewLayout.GetChildren(i) as FrameLayout;
                        for (int j = 0; iView != null && j < iView.ChildrenCount; j++)
                        if (delayScenesListResponseInfo.ScenesId == sceneView.scene.Id)
                        {
                            var sceneView = iView.GetChildren(j) as SceneMainView;
                            foreach (var delayScenesListResponseInfo in delayList)
                            var remainTime = delayScenesListResponseInfo.RemainTime;
                            sceneView.scene.RemainTime = remainTime;
                            if (remainTime > 0)
                            {
                                if (delayScenesListResponseInfo.ScenesId == sceneView.scene.Id)
                                new System.Threading.Thread(() =>
                                {
                                    var times = delayScenesListResponseInfo.RemainTime;
                                    sceneView.scene.RemainTime = times;
                                    new System.Threading.Thread(() =>
                                    while (remainTime-- > 0)
                                    {
                                        while (times > 0)
                                        {
                                            System.Threading.Thread.Sleep(1000);
                                            Application.RunOnMainThread(() =>
                                            {
                                                sceneView.SetTimeText(CommonFormResouce.GetTimeString(times));
                                            });
                                            times -= 1;
                                        }
                                        System.Threading.Thread.Sleep(1000);
                                        Application.RunOnMainThread(() =>
                                        {
                                            sceneView.SetTimeImage();
                                            sceneView.SetTimeText(CommonFormResouce.GetTimeString(remainTime));
                                        });
                                    })
                                    { IsBackground = true }.Start();
                                    break;
                                }
                                    }
                                    Application.RunOnMainThread(() =>
                                    {
                                        sceneView.scene.RemainTime = 0;
                                        sceneView.SetTimeImage();
                                    });
                                })
                                { IsBackground = true }.Start();
                            }
                            break;
                        }
                    }
                });
            })
            { IsBackground = true }.Start();
                }
            }
        }
        #endregion