From 66a9965c44ecc32a6696abca876ab9d1cd091584 Mon Sep 17 00:00:00 2001
From: gxc <guoxuecheng@guoxuechengdeMacBook-Pro.local>
Date: 星期五, 28 二月 2020 15:25:13 +0800
Subject: [PATCH] 2020.2.28

---
 ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs | 2417 ++++++++++++++++++++++++++++++----------------------------
 1 files changed, 1,234 insertions(+), 1,183 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs b/ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs
index 099699a..44eaab9 100644
--- a/ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs
+++ b/ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs
@@ -1,9 +1,13 @@
 锘縰sing 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.Device.DeviceLogic;
+using Shared.Phone.UserCenter;
+using Shared.Phone.UserCenter.DoorLock;
+using ZigBee.Device;
 
 namespace Shared.Phone.UserView
 {
@@ -72,11 +76,21 @@
         private readonly int sleepSpan = 300;
 
 
-        private FrameLayout itemView=new FrameLayout();
+        private FrameLayout itemView = new FrameLayout();
         /// <summary>
         /// floorBtn
         /// </summary>
         private Button floorBtn;
+        /// <summary>
+        /// timeDic
+        /// </summary>
+        private Dictionary<string, Timer> timerDic = new Dictionary<string, Timer> { };
+        /// <summary>
+        /// sceneScrolView
+        /// </summary>
+        private VerticalScrolViewLayout sceneScrolView ;
+
+
         #endregion
 
         #region 鈼� 鎺ュ彛____________________________
@@ -111,222 +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;
+                                        }
+                                        //褰揅luterID=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锛屽疄闄呮俯搴︿负鈥淟ocalTemperature / 100鈥濓紝鍗曚綅锛氣剝
+                                                        ac.currentLocalTemperature = curTemp;
+                                                        ac.LastDateTime = DateTime.Now;
+                                                        break;
+                                                    case 17:
+                                                        //姝ゅ睘鎬ц〃鏄庢璁惧褰撳墠鐨勫埗鍐锋俯搴︼紝瀹為檯娓╁害涓衡�淐oolingSetpoint / 100鈥濓紝鍗曚綅锛氣剝銆�
+                                                        ac.currentCoolingSetpoint = curTemp;
+                                                        ac.LastDateTime = DateTime.Now;
+                                                        break;
+                                                    case 18:
+                                                        //姝ゅ睘鎬ц〃鏄庢璁惧褰撳墠鐨勫埗鐑俯搴︼紝瀹為檯娓╁害涓衡�淗eatingSetpoint / 100鈥濓紝鍗曚綅锛氣剝銆�
+                                                        ac.currentHeatingSetpoint = curTemp;
+                                                        ac.LastDateTime = DateTime.Now;
+                                                        break;
+                                                    case 4096:
+                                                        //姝ゅ睘鎬ц〃鏄庢璁惧褰撳墠鐨勮嚜鍔ㄦ俯搴︼紝瀹為檯娓╁害涓衡�淎utoSetpoint / 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;
-                                            }
-                                        }
-                                    }
-                                    //褰揅luterID=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 ac = deviceUI.CommonDevice as ZigBee.Device.AC;
+                                            var attriButeList = common.DeviceStatusReport.AttriBute;
+                                            ac.DeviceStatusReport = common.DeviceStatusReport;
+                                            foreach (var attList in attriButeList)
+                                            {
+                                                switch (attList.AttributeId)
+                                                {
+                                                    case 0:
+                                                        ac.currentFanMode = attList.AttriButeData;
+                                                        ac.LastDateTime = DateTime.Now;
+                                                        break;
+                                                    case 4096:
+                                                        ac.currentFanSwingMode = attList.AttriButeData;
+                                                        ac.LastDateTime = DateTime.Now;
+                                                        break;
+                                                }
+                                            }
+                                            (rowFL.GetChildren(j) as FunctionMainView).IsSelected = ac.currentSystemMode != 0;
+                                            (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
+                                        }
+                                        //褰揅luterID=3,灏辫瘉鏄庤璁惧鍦ㄧ嚎锛岀洿鎺ユ爣璁�
+                                        if (common.DeviceStatusReport.CluterID == 3)
+                                        {
+                                            var ac = deviceUI.CommonDevice as AC;
+                                            ac.IsOnline = 1;
+                                            ac.LastDateTime = DateTime.Now;
+                                        }
+                                        break;
+
+                                    case DeviceType.DimmableLight:
+                                        //璋冨厜鐏姛鑳�
+                                        if (common.DeviceStatusReport.CluterID == 6)
+                                        {
+                                            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;
                                         }
 
-                                        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)
+                                        //浜害
+                                        if (common.DeviceStatusReport.CluterID == 8)
                                         {
-                                            case 0:
-                                                //姝ゅ睘鎬ц〃鏄庡鍐呭綋鍓嶇殑娓╁害 * 100锛屽疄闄呮俯搴︿负鈥淟ocalTemperature / 100鈥濓紝鍗曚綅锛氣剝
-                                                ac.currentLocalTemperature = curTemp;
-                                                ac.LastDateTime = DateTime.Now;
-                                                break;
-
-                                            case 17:
-                                                //姝ゅ睘鎬ц〃鏄庢璁惧褰撳墠鐨勫埗鍐锋俯搴︼紝瀹為檯娓╁害涓衡�淐oolingSetpoint / 100鈥濓紝鍗曚綅锛氣剝銆�
-                                                ac.currentCoolingSetpoint = curTemp;
-                                                ac.LastDateTime = DateTime.Now;
-                                                break;
-
-                                            case 18:
-                                                //姝ゅ睘鎬ц〃鏄庢璁惧褰撳墠鐨勫埗鐑俯搴︼紝瀹為檯娓╁害涓衡�淗eatingSetpoint / 100鈥濓紝鍗曚綅锛氣剝銆�
-                                                ac.currentHeatingSetpoint = curTemp;
-                                                ac.LastDateTime = DateTime.Now;
-                                                break;
-
-                                            case 4096:
-                                                //姝ゅ睘鎬ц〃鏄庢璁惧褰撳墠鐨勮嚜鍔ㄦ俯搴︼紝瀹為檯娓╁害涓衡�淎utoSetpoint / 100鈥濓紝鍗曚綅锛氣剝銆�
-                                                ac.currentAutoSetpoint = curTemp;
-                                                ac.LastDateTime = DateTime.Now;
-                                                break;
-
-                                            case 28:
-                                                //姝ゅ睘鎬ф弿杩版亽娓╄澶囨澶勪簬鍝妯″紡
-                                                ac.currentSystemMode = attriButeList[0].AttriButeData;
-                                                ac.LastDateTime = DateTime.Now;
-                                                break;
+                                            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;
+                                            }
                                         }
-                                        (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)
+                                        break;
+                                    case DeviceType.TemperatureSensor:
+                                        //娓╁害
+                                        if (common.DeviceStatusReport.CluterID == 1026)
                                         {
-                                            return;
-                                        }
-                                        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();
-                                    }
-                                    //褰揅luterID=3,灏辫瘉鏄庤璁惧鍦ㄧ嚎锛岀洿鎺ユ爣璁�
-                                    if (common.DeviceStatusReport.CluterID == 3)
-                                    {
-                                        var ac = deviceUI.CommonDevice as AC;
-                                        ac.IsOnline = 1;
-                                        ac.LastDateTime = DateTime.Now;
-                                    }
-                                    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, "."));
+                                                    }
 
-                                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)
-                                        {
-                                            return;
+                                                    tempera.LastDateTime = DateTime.Now;
+                                                    (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
+                                                }
+                                            }
                                         }
-                                        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 == 1029)
                                         {
-                                            continue;
+                                            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();
+                                                }
+                                            }
                                         }
-                                        switch (attriButeList[0].AttributeId)
-                                        {
-                                            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;
-                                        }
-                                    }
-                                    break;
+                                        break;
+                                }
                             }
                         }
                     }
@@ -336,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.
@@ -392,7 +495,7 @@
             #region topview
             var topFrameLayout = new FrameLayout()
             {
-                Y=Application.GetRealHeight(60),
+                Y = Application.GetRealHeight(60),
                 Height = Application.GetRealHeight(127),
                 BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor,
             };
@@ -406,45 +509,58 @@
                 Gravity = Gravity.CenterVertical,
                 UnSelectedImagePath = "Item/Floor.png"
             };
-            topFrameLayout.AddChidren(floor);
+            if (Config.Instance.Home.FloorDics.Count > 0)
+            {
+                topFrameLayout.AddChidren(floor);
+            }
 
             floorBtn = new Button
             {
-                X=floor.Right,
-                Width=Application.GetRealWidth(500),
-                Height=Application.GetRealHeight(100),
+                X = floor.Right,
+                Width = Application.GetRealWidth(500),
+                Height = Application.GetRealHeight(100),
                 Gravity = Gravity.CenterVertical,
-                TextAlignment =TextAlignment.CenterLeft,
-                TextColor=ZigbeeColor.Current.GXCTextColor,
-                Text=Config.Instance.Home.GetCurrentFloorName
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = ZigbeeColor.Current.GXCTextColor,
+                Text = Config.Instance.Home.GetCurrentFloorName,
+                IsBold = true,
+                TextSize = 14
             };
-            topFrameLayout.AddChidren(floorBtn);
-
-            var messageBtn = new Button()
+            if (Config.Instance.Home.FloorDics.Count > 0)
             {
-                X = Application.GetRealWidth(953),
-                Width = Application.GetMinRealAverage(69),
-                Height = Application.GetMinRealAverage(69),
-                Gravity = Gravity.CenterVertical,
-                UnSelectedImagePath = "Item/Message.png",
-                SelectedImagePath="Item/MessageSelected.png"
-            };
+                topFrameLayout.AddChidren(floorBtn);
+            }
+
+            if(UserCenterResourse.Option.SafetyShortcut)
+            {
+                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()
             {
-                X=Application.GetRealWidth(CommonFormResouce.X_Left),
+                X = Application.GetRealWidth(CommonFormResouce.X_Left),
                 Y = Application.GetRealHeight(161),
                 Width = Application.GetRealWidth(700),
                 Height = Application.GetRealHeight(95),
                 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)
+            if (Config.Instance.Home.IsOthreShare)
             {
-                residecneName.Text = $"({Language.StringByID(R.MyInternationalizationString.Shared)}){Config.Instance.Home.Name}";
+                residecneName.Text = $"{Config.Instance.Home.Name}";
             }
             AddChidren(residecneName);
 
@@ -456,7 +572,7 @@
                 var tempHomeBtn = send as Button;
                 if (Config.Instance.HomeFilePathList.Count == 0)
                 {
-                    var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.CurrentlyTheUserIshHouseIsEmptyPleaseBuildANewHouseFirst), Language.StringByID(R.MyInternationalizationString.Close), Language.StringByID(R.MyInternationalizationString.OK));
+                    var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.CurrentlyTheUserIshHouseIsEmptyPleaseBuildANewHouseFirst), Language.StringByID(R.MyInternationalizationString.Close), Language.StringByID(R.MyInternationalizationString.Confrim));
                     alert.Show();
                     alert.ResultEventHandler += (senderHouse, eHouse) =>
                     {
@@ -468,272 +584,61 @@
                 }
                 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"
-                    };
-                    closeBGview.AddChidren(bg);
-
-                    var changeHomeFL = new FrameLayout()
-                    {
-                        X = Application.GetRealWidth(35),
-                        Y = Application.GetRealHeight(271),
-                        Height = Application.GetRealHeight(449),
-                        Width = Application.GetRealWidth(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 = $"({Language.StringByID(R.MyInternationalizationString.Shared)}){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 = $"({Language.StringByID(R.MyInternationalizationString.Shared)}){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 = $"({Language.StringByID(R.MyInternationalizationString.Shared)}){home.Name}";
-                            }
-                        }
-                        else
-                        {
-                            pointBtn.IsSelected = false;
-                            nameBtn.IsSelected = false;
-                        }
+                        ChangeResidence(House.GetHouseByHouseId(houseId));
                     };
                 }
-            };
-            //娑堟伅
-            messageBtn.MouseUpEventHandler += (send, e) =>
-            {
-                var roomList = new Shared.Phone.Device.Room.RoomManagement();
-                HomePage.Instance.AddChidren(roomList);
-                HomePage.Instance.PageIndex += 1;
-                roomList.Show();
             };
 
             #endregion
 
-            if(CanBindGateway()==false)
+            if (CanBindGateway() == false)
             {
-                var roomPageView = new PageLayout()
+
+                var roomPageView = new HorizontalPages()
                 {
                     Y = Application.GetRealHeight(302),
-                    Width = Application.GetRealWidth(CommonPage.AppRealWidth - CommonPage.XLeft * 2),
-                    Height = Application.GetMinRealAverage(roomPageView_Height),
-                    Radius = CommonPage.BigFormRadius,
-                    Gravity = Gravity.CenterHorizontal,
-                    IsShowPoint = false
+                    Width = Application.GetRealWidth(CommonPage.AppRealWidth),
+                    Height = Application.GetRealHeight(478),
                 };
                 AddChidren(roomPageView);
+                //绐佸嚭杈硅窛
+                roomPageView.TCBJ = Application.GetRealWidth(181);
+                //涓や釜page涔嬮棿鐨勯棿璺�
+                roomPageView.JMBJ = Application.GetRealWidth(0);
 
                 //褰撳墠鎴块棿
-                if (Shared.Common.Room.CanInitAllRoom == true)
+                var rList = Room.CurrentRoom.GetRoomsByCurrentFloorIdAppendLoveRoom();
+                Room.CurrentRoom = Room.CurrentRoom ?? rList[0];
+                foreach (var room in rList)
                 {
-                    //Room.CurrentRoom = Room.CurrentRoom == null ? Room.Lists[0] : Room.CurrentRoom;
-                    Room.CurrentRoom = Room.Lists[0];
-                    foreach (var room in Room.CurrentRoom.GetRoomsByCurrentFloorIdAppendLoveRoom())
+                    var roomView = new Device.CommonForm.RoomView(0, 0);
+                    roomPageView.AddChidren(roomView);
+                    roomView.Init(room);
+                    roomView.HideName(true);
+                    roomView.action += () =>
                     {
-                        var roomBackView = new FrameLayout()
-                        {
-                            BackgroundImagePath = room.BackgroundImage
-                        };
-                        roomPageView.AddChidren(roomBackView);
-                        var roomBG = new Button()
-                        {
-                            UnSelectedImagePath = "Room/HomeBG.png",
-                        };
-                        roomBackView.AddChidren(roomBG);
-                        var roomName = new Button()
-                        {
-                            X = Application.GetRealWidth(20),
-                            Y = Application.GetRealHeight(20),
-                            Width = Application.GetRealWidth(500),
-                            Height = Application.GetRealHeight(80),
-                            Text = room.Name,
-                            TextAlignment = TextAlignment.CenterLeft,
-                            TextColor = ZigbeeColor.Current.GXCTextWhiteColor,
-                            TextSize = 18,
-                        };
-                        roomBackView.AddChidren(roomName);
-                        var roomListBtn = new Device.CommonForm.SelectedStatuButton()
-                        {
-                            X = roomPageView.Width - Application.GetRealWidth(100 + 20),
-                            Y = Application.GetRealHeight(20),
-                            Width = Application.GetMinRealAverage(100),
-                            Height = Application.GetMinRealAverage(100),
-                            UnSelectedImagePath = "Item/List.png",
-                            SelectedImagePath = "Item/ListSelected.png"
-                        };
-                        roomBackView.AddChidren(roomListBtn);
-
-                        roomListBtn.MouseUpEventHandler += (send, e) =>
-                        {
-                            //var roomList = new Device.Room.RoomManagement();
-                            //HomePage.Instance.AddChidren(roomList);
-                            //HomePage.Instance.PageIndex += 1;
-                            //roomList.Show();
-                            //roomList.action += () =>
-                            //{
-                            //    Show();
-                            //};
-                            if(room.IsLove)
-                            {
-                                return;
-                            }
-                            var editRoom = new Device.Room.EditRoom();
-                            HomePage.Instance.AddChidren(editRoom);
-                            HomePage.Instance.PageIndex += 1;
-                            editRoom.Show(room);
-                            editRoom.action += () =>
-                            {
-                                Show();
-                            };
-
-                        };
-                    }
+                        Show();
+                    };
                 }
-                else
+                var curIndex = rList.FindIndex((obj) => obj.Id == Room.CurrentRoom.Id);
+                roomPageView.PageIndex = curIndex;
+                if (roomPageView.GetChildren(roomPageView.PageIndex) != null)
                 {
-                    Room.CurrentRoom = Room.Lists[0];
-                    var roomBackView = new FrameLayout()
-                    {
-                        BackgroundImagePath = "Room/r0.png"
-                    };
-                    roomPageView.AddChidren(roomBackView);
-                    var roomBG = new Button()
-                    {
-                        UnSelectedImagePath = "Room/HomeBG.png",
-                    };
-                    roomBackView.AddChidren(roomBG);
-                    var roomName = new Button()
-                    {
-                        X = Application.GetRealWidth(20),
-                        Y = Application.GetRealHeight(20),
-                        Width = Application.GetRealWidth(500),
-                        Height = Application.GetRealHeight(80),
-                        Text = Language.StringByID(R.MyInternationalizationString.Favorite),
-                        TextAlignment = TextAlignment.CenterLeft,
-                        TextColor = ZigbeeColor.Current.GXCTextWhiteColor,
-                        TextSize = 18,
-                    };
-                    roomBackView.AddChidren(roomName);
-                    var roomListBtn = new Button()
-                    {
-                        X = roomPageView.Width - Application.GetRealWidth(100 + 20),
-                        Y = Application.GetRealHeight(20),
-                        Width = Application.GetMinRealAverage(100),
-                        Height = Application.GetMinRealAverage(100),
-                        UnSelectedImagePath = "Item/List.png"
-                    };
-                    roomBackView.AddChidren(roomListBtn);
+                    (roomPageView.GetChildren(roomPageView.PageIndex) as RoomView).HideName(false);
+
                 }
 
                 var functionSceneView = new FrameLayout()
                 {
                     Y = Application.GetRealHeight(861),
-                    Width=Application.GetRealWidth(832),
+                    Width = Application.GetRealWidth(832),
                     Height = Application.GetRealHeight(167),
-                    Gravity=Gravity.CenterHorizontal,
-                    BackgroundImagePath="Item/SceneFunctionBG.png"
+                    Gravity = Gravity.CenterHorizontal,
+                    BackgroundImagePath = "Item/SceneFunctionBG.png"
                 };
                 AddChidren(functionSceneView);
 
@@ -747,7 +652,9 @@
                     TextColor = ZigbeeColor.Current.GXCTextGrayColor3,
                     SelectedTextColor = ZigbeeColor.Current.GXCTextWhiteColor,
                     TextID = R.MyInternationalizationString.Scence,
-                    IsSelected = false
+                    IsSelected = true,
+                    TextSize=16,
+                    IsBold=true
                 };
                 functionSceneView.AddChidren(sceneBtn);
 
@@ -761,7 +668,8 @@
                     TextColor = ZigbeeColor.Current.GXCTextGrayColor3,
                     SelectedTextColor = ZigbeeColor.Current.GXCTextWhiteColor,
                     TextID = R.MyInternationalizationString.Function,
-                    IsSelected = false
+                    IsSelected = false,
+                    TextSize=14
                 };
                 functionSceneView.AddChidren(functionBtn);
 
@@ -771,7 +679,7 @@
                     Y = functionSceneView.Bottom,
                     Height = Application.GetRealHeight(750),
                     Gravity = Gravity.CenterHorizontal,
-                    BackgroundColor=ZigbeeColor.Current.GXCGrayBackgroundColor
+                    BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor
                 };
                 AddChidren(functionSceneBodyView);
 
@@ -780,6 +688,10 @@
                 {
                     sceneBtn.IsSelected = false;
                     functionBtn.IsSelected = true;
+                    sceneBtn.TextSize = 14;
+                    sceneBtn.IsBold = false;
+                    functionBtn.TextSize = 16;
+                    functionBtn.IsBold = true;
                     RefreshBodyView();
                 };
                 //閫夋嫨鍦烘櫙鍒嗘爮
@@ -787,6 +699,10 @@
                 {
                     functionBtn.IsSelected = false;
                     sceneBtn.IsSelected = true;
+                    sceneBtn.TextSize = 16;
+                    sceneBtn.IsBold = true;
+                    functionBtn.TextSize = 14;
+                    functionBtn.IsBold = false;
                     RefreshBodyView();
                 };
 
@@ -794,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 = Room.CurrentRoom == null ? Room.Lists[0] : Room.Lists[roomPageView.PageIndex];
+                    Room.CurrentRoom = rList[roomPageView.PageIndex];
                     RefreshBodyView();
+
                 };
             }
             else
@@ -814,10 +743,6 @@
         /// </summary>
         public void RefreshBodyView()
         {
-            if (Room.CanInitAllRoom == false)
-            {
-                return;
-            }
             functionSceneBodyView.RemoveAll();
             if (functionBtn.IsSelected)
             {
@@ -834,14 +759,16 @@
         /// </summary>
         /// <param name="sender"></param>
         /// <param name="mouseEventArgs"></param>
-        public void SelectFloor(object sender,MouseEventArgs mouseEventArgs)
+        public void SelectFloor(object sender, MouseEventArgs mouseEventArgs)
         {
             var floorFL = new Phone.Device.Category.SelectFloor();
             AddChidren(floorFL);
             floorFL.Init(35, 153);
-            floorFL.FloorAction = (floorName) =>
+            floorFL.changeFloor = true;
+            floorFL.FloorAction = (floorId) =>
             {
-                floorBtn.Text = floorName;
+                floorBtn.Text = Config.Instance.Home.GetFloorNameById(floorId);
+                Common.Room.CurrentRoom = Common.Room.CurrentRoom?.GetLoveRoom();
                 Show();
             };
         }
@@ -969,11 +896,12 @@
 
             var noFunctionTip = new Button()
             {
-                Y=noFunction.Bottom,
+                Y = noFunction.Bottom,
                 Height = Application.GetRealHeight(200),
-                Text = Language.StringByID(R.MyInternationalizationString.NoFunction).Replace("{\\r\\n}","\r\n"),
+                Text = Language.StringByID(R.MyInternationalizationString.NoFunction_Tip).Replace("{\\r\\n}", "\r\n"),
                 TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
-                IsMoreLines=true
+                TextAlignment=TextAlignment.Center,
+                IsMoreLines = true
             };
             functionSceneBodyView.AddChidren(noFunctionTip);
         }
@@ -983,6 +911,7 @@
         /// </summary>
         private void ShowFunction()
         {
+            functionSceneBodyView.RemoveAll();
             //閫夋嫨鍔熻兘--鐩存帴浠庢埧闂寸殑devicelist涓幏鍙�
             var deviceList = Room.CurrentRoom.DeviceUIList;
             if (deviceList == null)
@@ -996,659 +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> delEvent = (sender, e) =>
-                    {
-                        var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.ConfirmDelete), Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
-                        alert.Show();
-                        alert.ResultEventHandler += (send1, e1) =>
-                        {
-                            if (e1)
+                            try
                             {
-                                Room.CurrentRoom.DeleteDevice(device.FileName);
-                                    //RefreshBodyView();
-                                    deviceVerticalScrolViewLayout.RemoveViewByTag((sender as Button).Tag);
-                            }
-                        };
-                    };
-                    //鏀惰棌
-                    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, () =>
-                            {
-                                rollerShade.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
-                            });
-                        }
-                        else
-                        {
-                            if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - rollerShade.LastDateTime).TotalSeconds)
-                            {
-                                rollerShade.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
-                            }
-                        }
-                        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(1);
-
-                                ((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(0);
-
-                                ((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) =>
-                        {
-                            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, () =>
-                            {
-                                light.ReadOnOffStatus();
-                                light.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
-                            });
-                        }
-                        else
-                        {
-                            if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - light.LastDateTime).TotalSeconds)
-                            {
-                                light.ReadOnOffStatus();
-                                light.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
-                            }
-                        }
-
-                        var 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) =>
-                        {
-                            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, () =>
-                            {
-                                airSwitch.ReadOnOffStatus();
-                                airSwitch.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
-                            });
-                        }
-                        else
-                        {
-                            //闃叉鐭椂闂村唴澶氭璇诲彇璁惧鐘舵��
-                            if ((DateTime.Now - airSwitch.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
-                            {
-                                airSwitch.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
-                                airSwitch.ReadOnOffStatus();
-                            }
-                        }
-
-                        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) =>
-                        {
-                            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, () =>
-                            {
-                                ac.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
-                                ac.ReadLocalTemperature();
-                                ac.ReadCoolingSetpoint();
-                                ac.ReadHeatingSetpoint();
-                                ac.ReadAutoSetpoint();
-                                ac.ReadFanMode();
-                                ac.ReadSystemMode();
-                                ac.ReadSystemFansSwingMode();
-                            });
-                        }
-                        else
-                        {
-                            //闃叉鐭椂闂村唴澶氭璇诲彇璁惧鐘舵��
-                            if ((DateTime.Now - ac.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
-                            {
-                                ac.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
-                                ac.ReadLocalTemperature();
-                                ac.ReadCoolingSetpoint();
-                                ac.ReadHeatingSetpoint();
-                                ac.ReadAutoSetpoint();
-                                ac.ReadFanMode();
-                                ac.ReadSystemMode();
-                                ac.ReadSystemFansSwingMode();
-                            }
-                        }
-                        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) =>
-                        {
-                            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, () =>
-                            {
-                                dimmableLight.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
-                                dimmableLight.ReadOnOffStatus();
-                            });
-                        }
-                        else
-                        {
-                            //闃叉鐭椂闂村唴澶氭璇诲彇璁惧鐘舵��
-                            if ((DateTime.Now - dimmableLight.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
-                            {
-                                dimmableLight.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
-                                dimmableLight.ReadOnOffStatus();
-                            }
-                        }
-
-                        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) =>
-                        {
-                            var dimmableLightControl = new Phone.Device.Light.DimmableLightControl();
-                            UserView.HomePage.Instance.AddChidren(dimmableLightControl);
-                            UserView.HomePage.Instance.PageIndex += 1;
-                            UserView.HomePage.Instance.ScrollEnabled = false;
-                            //dimmableLightControl.action = RefreshBodyView;
-                            dimmableLightControl.Show(device, Room.CurrentRoom);
-                        };
-
-                        lightView.CollectButton.MouseUpEventHandler += collectionEvent;
-                    }
-                    else if (device.CommonDevice.Type == DeviceType.OnOffSwitch)
-                    {
-                        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.SetStatu(true);
-                        lightView.IsSelected = true;
-                        lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(Room.CurrentRoom, device.FileName));
-                    }
+                            }
+                        });
+                    //})
+                    //{ 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
@@ -1671,11 +1758,12 @@
             functionSceneBodyView.AddChidren(noScene);
             var noScenceTip = new Button()
             {
-                Y=noScene.Bottom,
+                Y = noScene.Bottom,
                 Height = Application.GetRealHeight(200),
-                Text =Language.StringByID(R.MyInternationalizationString.NoScene).Replace("{\\r\\n}","\r\n"),
+                Text = Language.StringByID(R.MyInternationalizationString.NoScene_Tip).Replace("{\\r\\n}", "\r\n"),
                 TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
-                IsMoreLines=true
+                TextAlignment=TextAlignment.Center,
+                IsMoreLines = true
             };
             functionSceneBodyView.AddChidren(noScenceTip);
         }
@@ -1685,6 +1773,7 @@
         /// </summary>
         private void ShowScene()
         {
+            functionSceneBodyView.RemoveAll();
             //閫夋嫨鍦烘櫙
             var sceneList = Room.CurrentRoom.SceneUIList;
             if (sceneList == null)
@@ -1697,12 +1786,12 @@
             }
             else
             {
-                var sceneScrolView = new VerticalScrolViewLayout { };
+                sceneScrolView = new VerticalScrolViewLayout { };
                 functionSceneBodyView.AddChidren(sceneScrolView);
-                for(int i=0;i<sceneList.Count;i++)
+                for (int i = 0; i < sceneList.Count; i++)
                 {
                     var scene = sceneList[i];
-                    int xx = 43 + i % 2 * (20 + 487);
+                    int xx = 33 + i % 2 * (40 + 487);
                     int yy = 14;
                     if (scene == null)
                     {
@@ -1720,109 +1809,71 @@
                     }
 
                     var sceneView = new SceneMainView(xx, yy);
+                    sceneView.Init(scene);
                     itemView.AddChidren(sceneView);
-                    sceneView.Init();
-                    sceneView.SetSceneNameText(scene.Name);
-                    sceneView.SetIcon($"SceneIcon/{i}.png");
-                    sceneView.SetCollect(Common.Room.CurrentRoom.GetLoveRoom().SceneUIFilePathList.Contains(scene.FileName));
+                    sceneView.CollectionAction += ShowScene;
+                }
+                GetDelayScene(sceneScrolView);
+            }
+        }
 
-                    if (scene.SceneDelayTime == 0)
+        /// <summary>
+        /// GetDelayScene
+        /// </summary>
+        /// <param name="scrolViewLayout"></param>
+        private async void GetDelayScene(VerticalScrolViewLayout scrolViewLayout)
+        {
+
+            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++)
+                {
+                    var sceneView = iView.GetChildren(j) as SceneMainView;
+                    foreach (var delayScenesListResponseInfo in delayList)
                     {
-                        sceneView.SetTimeImage();
+                        if (delayScenesListResponseInfo.ScenesId == sceneView.scene.Id)
+                        {
+                            var remainTime = delayScenesListResponseInfo.RemainTime;
+                            sceneView.scene.RemainTime = remainTime;
+
+                            if (remainTime > 0)
+                            {
+                                new System.Threading.Thread(() =>
+                                {
+                                    while (remainTime-- > 0)
+                                    {
+                                        System.Threading.Thread.Sleep(1000);
+                                        Application.RunOnMainThread(() =>
+                                        {
+                                            sceneView.SetTimeText(CommonFormResouce.GetTimeString(remainTime));
+                                        });
+                                    }
+                                    Application.RunOnMainThread(() =>
+                                    {
+                                        sceneView.scene.RemainTime = 0;
+                                        sceneView.SetTimeImage();
+                                    });
+                                })
+                                { IsBackground = true }.Start();
+                            }
+                            break;
+                        }
                     }
-                    else
-                    {
-                        sceneView.SetTimeText(scene.SceneDelayTime.ToString());
-                    }
-
-                    sceneView.TimeButton.MouseUpEventHandler += (sender, e) =>
-                    {
-                        var timeSelect = new SelectTime();
-                        CommonPage.Instance.AddChidren(timeSelect);
-                        timeSelect.TempTime = scene.DelayTime;
-                        timeSelect.Init();
-                        timeSelect.TimeAction = (t) =>
-                        {
-                            scene.SceneDelayTime = t;
-                            if(t>0)
-                            {
-                                sceneView.SetTimeText(CommonFormResouce.GetTimeString(scene.SceneDelayTime));
-                            }
-                            else
-                            {
-                                sceneView.SetTimeImage();
-                            }
-                        };
-
-                    };
-
-                    //璋冪敤鍦烘櫙
-                    EventHandler<MouseEventArgs> sceneUpHandler = async (sender, e) =>
-                    {
-                            //1鎴愬姛 0澶辫触
-                            //鍚庨潰琛ヤ笂鐩稿叧鎻愮ず
-                            // Error鍙傛暟鍚箟
-                            //<para>1锛氱綉鍏虫棤娉曡В鏋愬懡浠ゆ暟鎹��</para>
-                            //<para>2锛氬崗璋冨櫒姝e湪鍗囩骇鎴栧浠�/鎭㈠鏁版嵁
-                            //<para>3锛氭搷浣滆澶�/缁�/鍦烘櫙涓嶅瓨鍦�</para>
-                            //<para>4锛氬叾浠栭敊璇�</para>
-                            //<para>5锛氭暟鎹紶杈撻敊璇紙鍦ㄦ煇娆″鎴风鍚戠綉鍏冲彂閫佹暟鎹殑杩囩▼涓紝缃戝叧鍦ㄥ悎鐞嗘椂闂磋寖鍥村唴鎺ユ敹瀹㈡埛绔暟鎹笉瀹屾暣瀵艰嚧璇ラ敊璇彂鐢熴�傚瀹㈡埛绔悜缃戝叧涓�娆″彂閫�100涓瓧鑺傜殑鏁版嵁锛屼絾缃戝叧绛夊緟鎺ユ敹浜嗕竴绉掑彧鎺ユ敹浜�80涓瓧鑺傘�傚彂鐢熻閿欒锛岀綉鍏冲皢涓诲姩鍏抽棴瀹㈡埛绔繛鎺ワ級</para>
-                            var sceneOpenAllData = await ZigBee.Device.Scene.ControlSceneAsync(scene.Id, scene.SceneDelayTime);
-                        if (sceneOpenAllData == null || sceneOpenAllData.sceneOpenData == null)
-                        {
-                            return;
-                        }
-                        if (sceneOpenAllData.sceneOpenData.Result == 0)
-                        {
-                            if (sceneOpenAllData.errorResponData == null)
-                            {
-                                return;
-                            }
-                            CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.ControlSceneFail);
-                        }
-                    };
-                    //鏀惰棌
-                    EventHandler<MouseEventArgs> collectionEvent = (sender, e) =>
-                    {
-                        (sender as Button).IsSelected = !(sender as Button).IsSelected;
-                        if ((sender as Button).IsSelected)
-                        {
-                            //scene.IsCollected = true;
-                            Room.CurrentRoom.GetLoveRoom().AddScene(scene);
-                        }
-                        else
-                        {
-                            //scene.IsCollected = false;
-                            Room.CurrentRoom.GetLoveRoom().RemoveScene(scene);
-                        }
-                        scene.Save();
-
-                        //if ((sender as Button).IsSelected)
-                        //{
-                        //    scene.Collect(false);
-                        //    (sender as Button).IsSelected = false;
-                        //}
-                        //else
-                        //{
-                        //    scene.Collect(true);
-                        //    (sender as Button).IsSelected = true;
-                        //}
-                        //scene.Save();
-                        //if (Room.CurrentRoom.IsLove)
-                        //{
-                        //    RefreshBodyView();
-                        //}
-
-                    };
-
-                    sceneView.CollectButton.MouseUpEventHandler += collectionEvent;
-                    sceneView.MouseUpEventHandler += sceneUpHandler;
-                    sceneView.SceneIcon.MouseUpEventHandler+= sceneUpHandler;
-                    sceneView.SceneNameButton.MouseUpEventHandler += sceneUpHandler;
-
                 }
             }
-
         }
 
         #endregion

--
Gitblit v1.8.0