From a5b3c4bae726ef6770d4bfcbf2f4b50a37ed4a15 Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期五, 06 三月 2020 15:31:36 +0800
Subject: [PATCH] 删除了郭雪城的 DeviceUi 这个类

---
 ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs | 2972 ++++++++++++++++++++++++++++------------------------------
 1 files changed, 1,425 insertions(+), 1,547 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs b/ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs
index 2440cd3..bf0c4c4 100755
--- a/ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs
+++ b/ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs
@@ -11,21 +11,13 @@
 
 namespace Shared.Phone.UserView
 {
-
     /// <summary>
     /// 涓婚〉
     /// </summary>
-    public class UserHomeView : FrameLayout, ZigBee.Common.IStatus
-    {
-        #region 鈼� 鍙橀噺____________________________
-        /// <summary>
-        /// 璁惧鏄惁鍦ㄧ嚎鏍囪瘑--Online
-        /// </summary>
-        private readonly string deviceStatus_Online = "Online";
-        /// <summary>
-        /// 璁惧鐘舵�佸紑鍏虫爣璇�--Switch
-        /// </summary>
-        private readonly string deviceStatus_OnOffStatus = "Switch";
+    public class UserHomeView : EditorCommonForm
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
         /// <summary>
         /// 鍔熻兘ScrolViewLayout
         /// </summary>
@@ -34,19 +26,10 @@
         /// 鍔熻兘鍜屽満鏅痓odyView
         /// </summary>
         private FrameLayout functionSceneBodyView;
-
-        /// <summary>
-        /// The height of the room page view. -- 550
-        /// </summary>
-        private static readonly int roomPageView_Height = 550;
-        /// <summary>
-        /// 鍔熻兘鍗$墖楂樺害 --250
-        /// </summary>
-        private static readonly int deviceFL_Height = 250;
         /// <summary>
         /// 鍔熻兘鎸夐敭
         /// </summary>
-        private Button functionBtn;
+        private NormalViewControl btnFunction;
 
         /// <summary>
         /// 璇诲彇璁惧鐘舵�佺殑绾跨▼鍒楄〃
@@ -70,517 +53,109 @@
         /// </summary>
         private bool sendedControlCommand = false;
 
-        /// <summary>
-        /// 寤舵椂 300姣
-        /// </summary>
-        private readonly int sleepSpan = 300;
-
-
         private FrameLayout itemView = new FrameLayout();
         /// <summary>
-        /// floorBtn
+        /// btnFloor
         /// </summary>
-        private Button floorBtn;
-        /// <summary>
-        /// timeDic
-        /// </summary>
-        private Dictionary<string, Timer> timerDic = new Dictionary<string, Timer> { };
+        private NormalViewControl btnFloor;
         /// <summary>
         /// sceneScrolView
         /// </summary>
-        private VerticalScrolViewLayout sceneScrolView ;
-
+        private VerticalScrolViewLayout sceneScrolView;
 
         #endregion
-
-        #region 鈼� 鎺ュ彛____________________________
-
-        /// <summary>
-        /// 璇ユ帴鍙e皢寮冪敤 !!!!!!
-        /// 鏀圭敤DeviceInfoChange()
-        /// </summary>
-        /// <returns>The changed.</returns>
-        /// <param name="common">Common.</param>
-        public void Changed(CommonDevice common)
-        {
-
-        }
-
-        /// <summary>
-        /// 璁惧鐘舵�佹洿鏂版帴鍙�
-        /// <para>type锛氬鏋滀负 DeviceInComingRespon:璁惧鏂颁笂鎶�</para>
-        /// <para>type锛氬鏋滀负 IASInfoReport:RemoveDeviceRespon</para>
-        /// <para>type锛氬鏋滀负 DeviceStatusReport:璁惧涓婃姤</para>
-        /// <para>type锛氬鏋滀负 IASInfoReport:IAS瀹夐槻淇℃伅涓婃姤</para>
-        /// <para>type锛氬鏋滀负 OnlineStatusChange: 璁惧鍦ㄧ嚎鐘舵�佹洿鏂�</para>
-        /// </summary>
-        /// <param name="common">Common.</param>
-        /// <param name="typeTag">Type tag.</param>
-        public void DeviceInfoChange(CommonDevice common, string typeTag)
-        {
-            //璁惧涓婃姤鐘舵�佷腑 褰揅luterID=3,灏辫瘉鏄庤璁惧鍦ㄧ嚎锛岀洿鎺ユ爣璁�
-            if (typeTag == "DeviceStatusReport")
-            {
-                Application.RunOnMainThread(() =>
-                {
-                    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;
-                            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;
-                                }
+        #region 鈻� 鍒濆鍖朹____________________________
 
-                                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)
-                                                {
-                                                    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;
-                                                }
-                                            }
-                                            (rowFL.GetChildren(j) as FunctionMainView).IsSelected = ac.currentSystemMode != 0;
-                                            (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
-                                        }
-                                        if (common.DeviceStatusReport.CluterID == 514)
-                                        {
-                                            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;
-                                        }
-
-                                        //浜害
-                                        if (common.DeviceStatusReport.CluterID == 8)
-                                        {
-                                            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;
-                                            }
-                                        }
-                                        break;
-                                    case DeviceType.TemperatureSensor:
-                                        //娓╁害
-                                        if (common.DeviceStatusReport.CluterID == 1026)
-                                        {
-                                            var tempera = deviceUI.CommonDevice as TemperatureSensor;
-                                            foreach (var data in common.DeviceStatusReport.AttriBute)
-                                            {
-                                                if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
-                                                {
-                                                    if (data.AttriButeData == 0)
-                                                    {
-                                                        tempera.Temperatrue = 0;
-                                                    }
-                                                    else if (data.AttriButeData > 32767)
-                                                    {
-                                                        //璐熸暟(鐗规畩澶勭悊)
-                                                        string strValue = (data.AttriButeData - 65536).ToString();
-                                                        //灏忔暟鐐归渶瑕佷竴浣�
-                                                        strValue = strValue.Substring(0, strValue.Length - 1);
-                                                        tempera.Temperatrue = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
-                                                    }
-                                                    else
-                                                    {
-                                                        //灏忔暟鐐归渶瑕佷竴浣�
-                                                        string strValue = data.AttriButeData.ToString();
-                                                        strValue = strValue.Substring(0, strValue.Length - 1);
-                                                        tempera.Temperatrue = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
-                                                    }
-
-                                                    tempera.LastDateTime = DateTime.Now;
-                                                    (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
-                                                }
-                                            }
-                                        }
-                                        //婀垮害
-                                        if (common.DeviceStatusReport.CluterID == 1029)
-                                        {
-                                            var tempera = deviceUI.CommonDevice as TemperatureSensor;
-                                            foreach (var data in common.DeviceStatusReport.AttriBute)
-                                            {
-                                                if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
-                                                {
-                                                    if (data.AttriButeData == 0)
-                                                    {
-                                                        tempera.Humidity = 0;
-                                                    }
-                                                    else
-                                                    {
-                                                        //灏忔暟鐐归渶瑕佷竴浣�(婀垮害娌℃湁璐熸暟)
-                                                        string strValue = data.AttriButeData.ToString();
-                                                        strValue = strValue.Substring(0, strValue.Length - 1);
-                                                        tempera.Humidity = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
-                                                    }
-                                                    tempera.LastDateTime = DateTime.Now;
-                                                    (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
-                                                }
-                                            }
-                                        }
-                                        break;
-                                }
-                            }
-                        }
-                    }
-                    catch (Exception ex)
-                    {
-                        System.Console.WriteLine($"Error:{ex.Message}");
-                    }
-                });
-            }
-            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.
+        /// 鐣岄潰鏄剧ず
         /// </summary>
-        /// <param name="logic">Logic.</param>
-        public void ChangedILogicStatus(ZigBee.Device.Logic logic)
+        public void ShowForm()
         {
-            //throw new NotImplementedException();
-        }
-        /// <summary>
-        /// Changeds the IS cene status.
-        /// </summary>
-        /// <param name="scene">Scene.</param>
-        public void ChangedISceneStatus(Scene scene)
-        {
-            //throw new NotImplementedException();
-        }
-        #endregion
-
-        #region 鈼� 鍒濆鍖朹_________________________
-
-        /// <summary>
-        /// Removes from parent.
-        /// </summary>
-        public override void RemoveFromParent()
-        {
-            RemoveStatuList();
-            base.RemoveFromParent();
-        }
-
-        private void RemoveStatuList()
-        {
-            ZbGateway.StatusList.Remove(this);
-            RemoveAllUpdateControlDeviceStatuAction();
-        }
-
-        /// <summary>
-        /// 涓婚〉 --鎴戠殑瀹�
-        /// </summary>
-        public UserHomeView()
-        {
-            ZbGateway.StatusList.Add(this);
-            BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor;
-        }
-
-        /// <summary>
-        /// 鏄剧ず鐣岄潰
-        /// </summary>
-        public void Show()
-        {
+            this.BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor;
+            //娓呴櫎鍏ㄩ儴
             this.RemoveAll();
+            //鍒濆鍖栧ご閮ㄦ帶浠�
+            this.InitTopFrameLayoutControl();
+            //鍒濆鍖栦腑闂存帶浠�
+            this.InitMidFrameLayoutControl();
+            //娣诲姞璁惧鐘舵�佷笂鎶ヤ簨浠�
+            this.AddDeviceReportEvent();
+        }
 
-            #region topview
-            var topFrameLayout = new FrameLayout()
-            {
-                Y = Application.GetRealHeight(60),
-                Height = Application.GetRealHeight(127),
-                BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor,
-            };
-            AddChidren(topFrameLayout);
-
-            var floor = new Button
-            {
-                X = Application.GetRealWidth(CommonFormResouce.X_Left),
-                Width = Application.GetMinRealAverage(69),
-                Height = Application.GetMinRealAverage(69),
-                Gravity = Gravity.CenterVertical,
-                UnSelectedImagePath = "Item/Floor.png"
-            };
+        /// <summary>
+        /// 鍒濆鍖栧ご閮ㄦ帶浠�
+        /// </summary>
+        private void InitTopFrameLayoutControl()
+        {
+            //澶撮儴瀹瑰櫒
+            base.topFrameLayout = new FrameLayout();
+            topFrameLayout.Y = Application.GetRealHeight(60);
+            topFrameLayout.Height = Application.GetRealHeight(127);
+            topFrameLayout.BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor;
+            this.AddChidren(topFrameLayout);
+
+            //鎷ユ湁妤煎眰
             if (Config.Instance.Home.FloorDics.Count > 0)
-            {
-                topFrameLayout.AddChidren(floor);
+            {
+                //妤煎眰鍥炬爣
+                var btnFloorIcon = new IconViewControl(69);
+                btnFloorIcon.X = ControlCommonResourse.XXLeft;
+                btnFloorIcon.Gravity = Gravity.CenterVertical;
+                btnFloorIcon.UnSelectedImagePath = "Item/Floor.png";
+                topFrameLayout.AddChidren(btnFloorIcon);
+                btnFloorIcon.ButtonClickEvent += (sender, e) =>
+                {
+                    //鏄剧ず閫夋嫨妤煎眰鐨勭晫闈�
+                    this.ShowSelectFloorForm();
+                };
+                //妤煎眰鍚�
+                this.btnFloor = new NormalViewControl(500, 100, true);
+                btnFloor.X = btnFloorIcon.Right;
+                btnFloor.Gravity = Gravity.CenterVertical;
+                btnFloor.TextColor = ZigbeeColor.Current.GXCTextColor;
+                btnFloor.Text = Config.Instance.Home.GetCurrentFloorName;
+                btnFloor.IsBold = true;
+                topFrameLayout.AddChidren(btnFloor);
+                btnFloor.ButtonClickEvent += (sender, e) =>
+                {
+                    //鏄剧ず閫夋嫨妤煎眰鐨勭晫闈�
+                    this.ShowSelectFloorForm();
+                };
             }
-
-            floorBtn = new Button
+            //瀹夐槻蹇嵎鏂瑰紡
+            if (UserCenterResourse.ResidenceOption.SafetyShortcut)
             {
-                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,
-                IsBold = true,
-                TextSize = 14
-            };
-            if (Config.Instance.Home.FloorDics.Count > 0)
-            {
-                topFrameLayout.AddChidren(floorBtn);
+                var btnSafety = new SafetyShortcutControl();
+                btnSafety.X = Application.GetRealWidth(860);
+                btnSafety.Gravity = Gravity.CenterVertical;
+                topFrameLayout.AddChidren(btnSafety);
             }
+            //娑堟伅鍥炬爣
+            var btnMessage = new MessageManagementControl();
+            btnMessage.X = Application.GetRealWidth(953);
+            btnMessage.Gravity = Gravity.CenterVertical;
+            btnMessage.UnSelectedImagePath = "Item/Message.png";
+            btnMessage.SelectedImagePath = "Item/MessageSelected.png";
+            topFrameLayout.AddChidren(btnMessage);
 
-            if(UserCenterResourse.Option.SafetyShortcut)
-            {
-                var safetyBtn = new SafetyShortcutControl();
-                safetyBtn.X = Application.GetRealWidth(860);
-                safetyBtn.Gravity = Gravity.CenterVertical;
-                topFrameLayout.AddChidren(safetyBtn);
-            }
+            //浣忓畢鍚嶅瓧
+            var btnHouseName = new NormalViewControl(700, 95, true);
+            btnHouseName.X = ControlCommonResourse.XXLeft;
+            btnHouseName.Y = Application.GetRealHeight(161);
+            btnHouseName.TextSize = 24;
+            btnHouseName.TextColor = ZigbeeColor.Current.GXCTextDeepBlackColor;
+            btnHouseName.IsBold = true;
+            btnHouseName.Text = Config.Instance.Home.Name;
+            this.AddChidren(btnHouseName);
 
-            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),
-                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.GXCTextDeepBlackColor,
-                IsBold=true
-            };
-            if (Config.Instance.Home.IsOthreShare)
-            {
-                residecneName.Text = $"{Config.Instance.Home.Name}";
-            }
-            AddChidren(residecneName);
-
-            floor.MouseUpEventHandler += SelectFloor;
-            floorBtn.MouseUpEventHandler += SelectFloor;
             //鍒囨崲浣忓畢
-            residecneName.MouseLongEventHandler += (send, e) =>
+            btnHouseName.MouseLongEventHandler += (sender, e) =>
             {
-                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.Confrim));
-                    alert.Show();
-                    alert.ResultEventHandler += (senderHouse, eHouse) =>
-                    {
-                        if (eHouse)
-                        {
-                            return;
-                        }
-                    };
+                    //褰撳墠浣忓畢涓虹┖锛岃鍏堝缓绔嬩綇瀹�
+                    this.ShowMassage(ShowMsgType.Remind, Language.StringByID(R.MyInternationalizationString.CurrentlyTheUserIshHouseIsEmptyPleaseBuildANewHouseFirst));
                 }
                 else
                 {
@@ -591,28 +166,34 @@
                         ChangeResidence(House.GetHouseByHouseId(houseId));
                     };
                 }
-            };
-
-            #endregion
-
-            if (CanBindGateway() == false)
+            };
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栦腑闂存帶浠�
+        /// </summary>
+        private void InitMidFrameLayoutControl()
+        {
+            //妫�娴嬫槸鍚︾粦瀹氭湁缃戝叧
+            if (this.CheckHadBindGateway() == false)
+            {
+                //鏄剧ず娌℃湁缁戝畾杩囩綉鍏崇殑鐣岄潰
+                this.ShowNoGatewayTip();
+            }
+            else
             {
-
-                var roomPageView = new HorizontalPages()
-                {
-                    Y = Application.GetRealHeight(302),
-                    Width = Application.GetRealWidth(CommonPage.AppRealWidth),
-                    Height = Application.GetRealHeight(478),
-                };
-                AddChidren(roomPageView);
+                var roomPageView = new HorizontalPages();
+                roomPageView.Y = Application.GetRealHeight(302);
+                roomPageView.Width = Application.GetRealWidth(CommonPage.AppRealWidth);
+                roomPageView.Height = Application.GetRealHeight(478);
+                this.AddChidren(roomPageView);
                 //绐佸嚭杈硅窛
                 roomPageView.TCBJ = Application.GetRealWidth(181);
                 //涓や釜page涔嬮棿鐨勯棿璺�
                 roomPageView.JMBJ = Application.GetRealWidth(0);
 
                 //褰撳墠鎴块棿
-                var rList = Room.CurrentRoom.GetRoomsByCurrentFloorIdAppendLoveRoom();
-                Room.CurrentRoom = Room.CurrentRoom ?? rList[0];
+                var rList = HdlRoomLogic.Current.GetRoomsByCurrentFloorIdAppendLoveRoom();
                 foreach (var room in rList)
                 {
                     var roomView = new Device.CommonForm.RoomView(0, 0);
@@ -621,96 +202,19 @@
                     roomView.HideName(true);
                     roomView.action += () =>
                     {
-                        Show();
+                        this.ShowForm();
                     };
                 }
-                var curIndex = rList.FindIndex((obj) => obj.Id == Room.CurrentRoom.Id);
+                //璁剧疆鎴块棿鐨勫垵濮嬮�夋嫨
+                var curIndex = rList.FindIndex((obj) => obj.Id == HdlRoomLogic.Current.CurrentRoom.Id);
                 roomPageView.PageIndex = curIndex;
                 if (roomPageView.GetChildren(roomPageView.PageIndex) != null)
                 {
                     (roomPageView.GetChildren(roomPageView.PageIndex) as RoomView).HideName(false);
-
-                }
-
-                var functionSceneView = new FrameLayout()
-                {
-                    Y = Application.GetRealHeight(861),
-                    Width = Application.GetRealWidth(832),
-                    Height = Application.GetRealHeight(167),
-                    Gravity = Gravity.CenterHorizontal,
-                    BackgroundImagePath = "Item/SceneFunctionBG.png"
-                };
-                AddChidren(functionSceneView);
-
-                //鍦烘櫙
-                var sceneBtn = new Button()
-                {
-                    X = Application.GetRealWidth(30),
-                    Y = Application.GetRealHeight(12),
-                    Width = Application.GetRealWidth(350),
-                    Height = Application.GetRealHeight(100),
-                    TextColor = ZigbeeColor.Current.GXCTextGrayColor3,
-                    SelectedTextColor = ZigbeeColor.Current.GXCTextWhiteColor,
-                    TextID = R.MyInternationalizationString.Scence,
-                    IsSelected = true,
-                    TextSize=16,
-                    IsBold=true
-                };
-                functionSceneView.AddChidren(sceneBtn);
-
-                //鍦烘櫙
-                functionBtn = new Button()
-                {
-                    X = Application.GetRealWidth(430),
-                    Y = Application.GetRealHeight(12),
-                    Width = Application.GetRealWidth(360),
-                    Height = Application.GetRealHeight(100),
-                    TextColor = ZigbeeColor.Current.GXCTextGrayColor3,
-                    SelectedTextColor = ZigbeeColor.Current.GXCTextWhiteColor,
-                    TextID = R.MyInternationalizationString.Function,
-                    IsSelected = false,
-                    TextSize=14
-                };
-                functionSceneView.AddChidren(functionBtn);
-
-                //鍔熻兘鍜屽満鏅痓odyView
-                functionSceneBodyView = new FrameLayout()
-                {
-                    Y = functionSceneView.Bottom,
-                    Height = Application.GetRealHeight(750),
-                    Gravity = Gravity.CenterHorizontal,
-                    BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor
-                };
-                AddChidren(functionSceneBodyView);
-
-                //閫夋嫨鍔熻兘鍒嗘爮
-                functionBtn.MouseUpEventHandler += (sender, e) =>
-                {
-                    sceneBtn.IsSelected = false;
-                    functionBtn.IsSelected = true;
-                    sceneBtn.TextSize = 14;
-                    sceneBtn.IsBold = false;
-                    functionBtn.TextSize = 16;
-                    functionBtn.IsBold = true;
-                    RefreshBodyView();
-                };
-                //閫夋嫨鍦烘櫙鍒嗘爮
-                sceneBtn.MouseUpEventHandler += (sender, e) =>
-                {
-                    functionBtn.IsSelected = false;
-                    sceneBtn.IsSelected = true;
-                    sceneBtn.TextSize = 16;
-                    sceneBtn.IsBold = true;
-                    functionBtn.TextSize = 14;
-                    functionBtn.IsBold = false;
-                    RefreshBodyView();
-                };
-
-                RefreshBodyView();
-
+                }
                 roomPageView.PageChange += (sender, e) =>
                 {
-                    if(roomPageView.GetChildren(roomPageView.PageIndex - 1) !=null)
+                    if (roomPageView.GetChildren(roomPageView.PageIndex - 1) != null)
                     {
                         (roomPageView.GetChildren(roomPageView.PageIndex - 1) as RoomView).HideName(true);
                     }
@@ -723,162 +227,137 @@
                         (roomPageView.GetChildren(roomPageView.PageIndex) as RoomView).HideName(false);
                     }
                     //鍒囨崲褰撳墠鎴块棿
-                    Room.CurrentRoom = rList[roomPageView.PageIndex];
-                    RefreshBodyView();
-
+                    HdlRoomLogic.Current.CurrentRoom = rList[roomPageView.PageIndex];
+                    //鍒锋柊璁惧妗屽竷鎺т欢
+                    this.RefreshBodyView();
                 };
-            }
-            else
-            {
-                ShowNoGatewayTip();
-            }
+
+                //鍔熻兘鍜屽満鏅殑鑳屾櫙鍥�
+                var functionSceneView = new FrameLayout();
+                functionSceneView.Y = Application.GetRealHeight(861);
+                functionSceneView.Width = Application.GetRealWidth(832);
+                functionSceneView.Height = Application.GetRealHeight(167);
+                functionSceneView.Gravity = Gravity.CenterHorizontal;
+                functionSceneView.BackgroundImagePath = "Item/SceneFunctionBG.png";
+                this.AddChidren(functionSceneView);
+
+                //鍦烘櫙
+                var btnScene = new NormalViewControl(350, 100, true);
+                btnScene.X = Application.GetRealWidth(30);
+                btnScene.Y = Application.GetRealHeight(12);
+                btnScene.TextColor = ZigbeeColor.Current.GXCTextGrayColor3;
+                btnScene.SelectedTextColor = ZigbeeColor.Current.GXCTextWhiteColor;
+                btnScene.TextID = R.MyInternationalizationString.Scence;
+                btnScene.IsSelected = true;
+                btnScene.TextSize = 16;
+                btnScene.IsBold = true;
+                btnScene.TextAlignment = TextAlignment.Center;
+                functionSceneView.AddChidren(btnScene);
 
-        }
+                //鍔熻兘
+                btnFunction = new NormalViewControl(360, 100, true);
+                btnFunction.X = Application.GetRealWidth(430);
+                btnFunction.Y = Application.GetRealHeight(12);
+                btnFunction.TextColor = ZigbeeColor.Current.GXCTextGrayColor3;
+                btnFunction.SelectedTextColor = ZigbeeColor.Current.GXCTextWhiteColor;
+                btnFunction.TextID = R.MyInternationalizationString.Function;
+                btnFunction.IsSelected = false;
+                btnFunction.TextAlignment = TextAlignment.Center;
+                functionSceneView.AddChidren(btnFunction);
 
-        #endregion
+                //鍔熻兘鍜屽満鏅痓odyView
+                functionSceneBodyView = new FrameLayout()
+                {
+                    Y = functionSceneView.Bottom,
+                    Height = Application.GetRealHeight(750),
+                    Gravity = Gravity.CenterHorizontal,
+                    BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor
+                };
+                this.AddChidren(functionSceneBodyView);
 
-        #region 鈼� 鍒锋柊____________________________
-        /// <summary>
-        /// RefreshBodyView
-        /// </summary>
-        public void RefreshBodyView()
-        {
-            functionSceneBodyView.RemoveAll();
-            if (functionBtn.IsSelected)
-            {
-                ShowFunction();
-            }
-            else
-            {
-                ShowScene();
-            }
-        }
-
-        /// <summary>
-        /// SelectFloor
-        /// </summary>
-        /// <param name="sender"></param>
-        /// <param name="mouseEventArgs"></param>
-        public void SelectFloor(object sender, MouseEventArgs mouseEventArgs)
-        {
-            var floorFL = new Phone.Device.Category.SelectFloor();
-            AddChidren(floorFL);
-            floorFL.Init(35, 153);
-            floorFL.changeFloor = true;
-            floorFL.FloorAction = (floorId) =>
-            {
-                floorBtn.Text = Config.Instance.Home.GetFloorNameById(floorId);
-                Common.Room.CurrentRoom = Common.Room.CurrentRoom?.GetLoveRoom();
-                Show();
-            };
-        }
-
-        #endregion
-
-        #region 鈼� 妫�娴嬫槸鍚︾粦瀹氫簡缃戝叧________________
-
-        /// <summary>
-        /// 褰撴病鏈夌粦瀹氱綉鍏虫椂锛屾槸鍚︽湁鏉冮檺娣诲姞缃戝叧
-        /// </summary>
-        /// <returns><c>true</c>, if bing gateway was caned, <c>false</c> otherwise.</returns>
-        private bool CanBindGateway()
-        {
-            if (HadBindGateway() == false && (UserCenter.UserCenterResourse.UserInfo.AuthorityNo == 1 || UserCenter.UserCenterResourse.UserInfo.AuthorityNo == 2))
-            {
-                return true;
-            }
-            return false;
-        }
-
-        /// <summary>
-        /// 鏄惁缁戝畾浜嗙綉鍏�
-        /// </summary>
-        /// <returns><c>true</c>, if bind gateway was haded, <c>false</c> otherwise.</returns>
-        private bool HadBindGateway()
-        {
-            var gatewayList = UserCenter.HdlGatewayLogic.Current.GetAllLocalGateway();
-            if (gatewayList.Count == 0)
-            {
-                return false;
-            }
-            return true;
-        }
-
+                //閫夋嫨鍔熻兘鍒嗘爮
+                btnFunction.ButtonClickEvent += (sender, e) =>
+                {
+                    btnScene.IsSelected = false;
+                    btnFunction.IsSelected = true;
+                    btnScene.TextSize = 14;
+                    btnScene.IsBold = false;
+                    btnFunction.TextSize = 16;
+                    btnFunction.IsBold = true;
+                    //鍒锋柊璁惧妗屽竷鎺т欢
+                    this.RefreshBodyView();
+                };
+                //閫夋嫨鍦烘櫙鍒嗘爮
+                btnScene.ButtonClickEvent += (sender, e) =>
+                {
+                    btnFunction.IsSelected = false;
+                    btnScene.IsSelected = true;
+                    btnScene.TextSize = 16;
+                    btnScene.IsBold = true;
+                    btnFunction.TextSize = 14;
+                    btnFunction.IsBold = false;
+                    this.RefreshBodyView();
+                };
+                //鍒锋柊璁惧妗屽竷鎺т欢
+                this.RefreshBodyView();
+            }
+        }
+
         /// <summary>
         /// 鎻愮ず鐢ㄦ埛娌℃湁缃戝叧锛屽苟蹇�熻烦杞埌娣诲姞缃戝叧鐣岄潰
         /// </summary>
         private void ShowNoGatewayTip()
         {
-            var bg = new Button
-            {
-                Y = Application.GetRealHeight(302),
-                Width = Application.GetMinRealAverage(717),
-                Height = Application.GetMinRealAverage(478),
-                Gravity = Gravity.CenterHorizontal,
-                UnSelectedImagePath = "Item/NoBindGW.png"
+            var bg = new PicViewControl(717, 478);
+            bg.Y = Application.GetRealHeight(302);
+            bg.Gravity = Gravity.CenterHorizontal;
+            bg.UnSelectedImagePath = "Item/NoBindGW.png";
+            this.AddChidren(bg);
+
+            var tip = new NormalViewControl(Application.GetMinRealAverage(717), Application.GetMinRealAverage(58), false);
+            tip.Y = Application.GetRealHeight(815);
+            tip.Gravity = Gravity.CenterHorizontal;
+            tip.TextID = R.MyInternationalizationString.NewAccountNeedBingGW;
+            tip.TextColor = ZigbeeColor.Current.GXCTextGrayColor;
+            tip.TextAlignment = TextAlignment.Center;
+            this.AddChidren(tip);
+
+            var addBG = new PicViewControl(971, 366);
+            addBG.Y = Application.GetRealHeight(1048);
+            addBG.UnSelectedImagePath = "Item/VirtualFrame.png";
+            addBG.Gravity = Gravity.CenterHorizontal;
+            this.AddChidren(addBG);
+
+            var addGatewayBtn = new IconViewControl(89);
+            addGatewayBtn.Y = Application.GetRealHeight(1143);
+            addGatewayBtn.UnSelectedImagePath = "Item/Add_GW.png";
+            addGatewayBtn.Gravity = Gravity.CenterHorizontal;
+            this.AddChidren(addGatewayBtn);
+            addGatewayBtn.ButtonClickEvent += (sender, e) =>
+            {
+                var form = new UserCenter.GatewayAdd.NewGateWayMenuSelectForm();
+                form.AddForm();
             };
-            AddChidren(bg);
 
-            var tip = new Button
-            {
-                Y = Application.GetRealHeight(815),
-                Width = Application.GetMinRealAverage(717),
-                Height = Application.GetMinRealAverage(58),
-                Gravity = Gravity.CenterHorizontal,
-                TextID = R.MyInternationalizationString.NewAccountNeedBingGW,
-                TextColor = ZigbeeColor.Current.GXCTextGrayColor
+            var addTip = new PicViewControl(717, 58);
+            addTip.Y = Application.GetRealHeight(1256);
+            addTip.Gravity = Gravity.CenterHorizontal;
+            addTip.TextID = R.MyInternationalizationString.AddSmartGW;
+            addTip.TextColor = ZigbeeColor.Current.GXCTextBlackColor;
+            addTip.TextAlignment = TextAlignment.Center;
+            AddChidren(addTip);
+
+            addTip.ButtonClickEvent += (sender, e) =>
+            {
+                var form = new UserCenter.GatewayAdd.NewGateWayMenuSelectForm();
+                form.AddForm();
             };
-            AddChidren(tip);
-
-            var addBG = new Button
-            {
-                Y = Application.GetRealHeight(1048),
-                Height = Application.GetMinRealAverage(366),
-                Width = Application.GetMinRealAverage(971),
-                UnSelectedImagePath = "Item/VirtualFrame.png",
-                Gravity = Gravity.CenterHorizontal
-            };
-            AddChidren(addBG);
-
-            var addGatewayBtn = new Button()
-            {
-                Y = Application.GetRealHeight(1143),
-                Height = Application.GetMinRealAverage(89),
-                Width = Application.GetMinRealAverage(89),
-                UnSelectedImagePath = "Item/Add_GW.png",
-                Gravity = Gravity.CenterHorizontal
-            };
-            AddChidren(addGatewayBtn);
-            addGatewayBtn.MouseUpEventHandler += GoToAddGateWay;
-
-            var addTip = new Button
-            {
-                Y = Application.GetRealHeight(1256),
-                Width = Application.GetMinRealAverage(717),
-                Height = Application.GetMinRealAverage(58),
-                Gravity = Gravity.CenterHorizontal,
-                TextID = R.MyInternationalizationString.AddSmartGW,
-                TextColor = ZigbeeColor.Current.GXCTextBlackColor
-            };
-            AddChidren(addTip);
-            addTip.MouseUpEventHandler += GoToAddGateWay;
-        }
-
-        /// <summary>
-        /// 鍓嶅線娣诲姞缃戝叧鐣岄潰
-        /// </summary>
-        /// <param name="sender">Sender.</param>
-        /// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param>
-        private void GoToAddGateWay(object sender, MouseEventArgs mouseEventArgs)
-        {
-            var selectNewGateWayForm = new UserCenter.GatewayAdd.NewGateWayMenuSelectForm { };
-            selectNewGateWayForm.AddForm();
-        }
-
+        }
+
         #endregion
-
-        #region 鈼� 鍔熻兘_____________________________
-
+
+        #region 鈻� 鍔熻兘鍒嗘敮___________________________
+
         /// <summary>
         /// 鏄剧ず娌℃湁鍔熻兘
         /// </summary>
@@ -900,7 +379,7 @@
                 Height = Application.GetRealHeight(200),
                 Text = Language.StringByID(R.MyInternationalizationString.NoFunction_Tip).Replace("{\\r\\n}", "\r\n"),
                 TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
-                TextAlignment=TextAlignment.Center,
+                TextAlignment = TextAlignment.Center,
                 IsMoreLines = true
             };
             functionSceneBodyView.AddChidren(noFunctionTip);
@@ -912,24 +391,20 @@
         private void ShowFunction()
         {
             functionSceneBodyView.RemoveAll();
-            //閫夋嫨鍔熻兘--鐩存帴浠庢埧闂寸殑devicelist涓幏鍙�
-            var deviceList = Room.CurrentRoom.DeviceUIList;
-            if (deviceList == null)
-            {
-                return;
-            }
-
-            if (deviceList.Count == 0)
+            //褰撳墠鎴块棿鐨勮澶囨暟
+            if (HdlRoomLogic.Current.CurrentRoom.ListDevice.Count == 0)
             {
                 ShowNoFunctionTip();
             }
             else
             {
-                var dList = new List<DeviceUI> { };
-                foreach(var device in deviceList)
+                var dList = new List<CommonDevice>();
+                foreach (var mainkeys in HdlRoomLogic.Current.CurrentRoom.ListDevice)
                 {
-                    var info = Common.LocalDevice.Current.GetDeviceBelongEnumInfo(device.CommonDevice);
-                    if (info.BeloneType == DeviceBeloneType.A骞叉帴鐐� || info.BeloneType == DeviceBeloneType.A涓户鍣�)
+                    var device = LocalDevice.Current.GetDevice(mainkeys);
+                    if (device == null
+                        || device.Type == DeviceType.OnOffSwitch//骞叉帴鐐�
+                        || device.Type == DeviceType.Repeater)//涓户鍣�
                     {
                         continue;
                     }
@@ -941,759 +416,764 @@
                 for (int i = 0; i < dList.Count; i++)
                 {
                     var device = dList[i];
-                    //new System.Threading.Thread(() =>
-                    //{
-                    Application.RunOnMainThread(() =>
-                        {
-                            try
-                            {
-                                int t = i % 2;
-                                int tt = i / 2;
-                                int xx = 43 + i % 2 * (20 + 487);
-                                int yy = 14;
-                                if (i % 2 == 0)
-                                {
-                                    itemView = new FrameLayout()
-                                    {
-                                        Height = Application.GetRealHeight(14 + 348),
-                                    };
-                                    deviceVerticalScrolViewLayout.AddChidren(itemView);
-                                }
-                                //鏀惰棌
-                                EventHandler<MouseEventArgs> collectionEvent = (sender, e) =>
-                                {
-                                    if ((sender as Button).IsSelected)
-                                    {
-                                        Common.Room.CurrentRoom.GetLoveRoom().DeleteDevice(device.FileName);
-                                        (sender as Button).IsSelected = false;
-                                    }
-                                    else
-                                    {
-                                        Common.Room.CurrentRoom.GetLoveRoom().AddDevice(device.FileName);
-                                        (sender as Button).IsSelected = true;
-                                    }
-                                    if (Room.CurrentRoom.IsLove)
-                                    {
-                                        RefreshBodyView();
-                                    }
-                                };
-
-                                if (device.CommonDevice.Type == DeviceType.WindowCoveringDevice)
-                                {
-                                    //绐楀笜 鍗峰笜
-                                    var rollerShade = (ZigBee.Device.Rollershade)device.CommonDevice;
-                                    if (rollerShade.Gateway != null)
-                                    {
-                                        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.Show(device, Room.CurrentRoom);
-                                            rollerShadeControl.action += (curDev, curRoom) =>
-                                            {
-                                                ReFreshEditDeviceAction(device, curRoom, functionView);
-                                            };
-                                        };
-
-                                        functionView.CollectButton.MouseUpEventHandler += collectionEvent;
-                                    }
-                                }
-                                else if (device.CommonDevice.Type == DeviceType.OnOffOutput)
-                                {
-                                    //寮�鍏崇伅
-                                    var light = device.CommonDevice as ToggleLight;
-                                    if (light.Gateway != null)
+                    Application.RunOnMainThread(() =>
+                    {
+                        try
+                        {
+                            int t = i % 2;
+                            int tt = i / 2;
+                            int xx = 43 + i % 2 * (20 + 487);
+                            int yy = 14;
+                            if (i % 2 == 0)
+                            {
+                                itemView = new FrameLayout()
+                                {
+                                    Height = Application.GetRealHeight(14 + 348),
+                                };
+                                deviceVerticalScrolViewLayout.AddChidren(itemView);
+                            }
+                            //鏀惰棌
+                            EventHandler<MouseEventArgs> collectionEvent = (sender, e) =>
+                            {
+                                if ((sender as Button).IsSelected)
+                                {
+                                    //鍒犻櫎鎴戠殑鍠滅埍
+                                    HdlRoomLogic.Current.DeleteLoveDevice(device);
+                                    (sender as Button).IsSelected = false;
+                                }
+                                else
+                                {
+                                    //娣诲姞鎴戠殑鍠滅埍
+                                    HdlRoomLogic.Current.AddLoveDevice(device);
+                                    (sender as Button).IsSelected = true;
+                                }
+                                if (HdlRoomLogic.Current.CurrentRoom.IsLove)
+                                {
+                                    //鍒锋柊璁惧妗屽竷鎺т欢
+                                    this.RefreshBodyView();
+                                }
+                            };
+
+                            if (device.Type == DeviceType.WindowCoveringDevice)
+                            {
+                                //绐楀笜 鍗峰笜
+                                var rollerShade = (ZigBee.Device.Rollershade)device;
+                                if (rollerShade.Gateway != null)
+                                {
+                                    new System.Threading.Thread(() =>
                                     {
-                                        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.Show(device, Room.CurrentRoom);
-                                            lightControl.action += (curDev, curRoom) =>
-                                            {
-                                                ReFreshEditDeviceAction(device, curRoom, functionView);
-                                            };
-                                        };
-
-                                        functionView.CollectButton.MouseUpEventHandler += collectionEvent;
-                                    }
-                                }
-                                else if (device.CommonDevice.Type == DeviceType.AirSwitch)
-                                {
-                                    //绌烘皵寮�鍏�
-                                    var airSwitch = device.CommonDevice as AirSwitch;
-                                    if (airSwitch.Gateway != null)
-                                    {
-                                        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.Show(device, Room.CurrentRoom);
-                                            lightControl.action += (curDev, curRoom) =>
-                                            {
-                                                ReFreshEditDeviceAction(device, curRoom, functionView);
-                                            };
-
-                                        };
-
-                                        functionView.CollectButton.MouseUpEventHandler += collectionEvent;
-                                    }
-                                }
-                                else if (device.CommonDevice.Type == DeviceType.Thermostat)
-                                {
-                                    //鎭掓俯鍣�-AC-绌鸿皟
-                                    var ac = device.CommonDevice as AC;
-                                    if (ac.Gateway != null)
-                                    {
-                                        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.Show(device, Room.CurrentRoom);
-                                            lightControl.action += (curDev, curRoom) =>
-                                            {
-                                                ReFreshEditDeviceAction(device, curRoom, functionView);
-                                            };
-                                        };
-
-                                        functionView.CollectButton.MouseUpEventHandler += collectionEvent;
-                                    }
-                                }
-                                else if (device.CommonDevice.Type == DeviceType.DimmableLight)
-                                {
-                                    //璋冨厜鐏�
-                                    var dimmableLight = device.CommonDevice as DimmableLight;
-                                    if (dimmableLight.Gateway != null)
-                                    {
-                                        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.Show(device, Room.CurrentRoom);
-                                            dimmableLightControl.action += (curDev, curRoom) =>
-                                            {
-                                                ReFreshEditDeviceAction(device, curRoom, functionView);
-                                            };
-                                        };
-                                        functionView.CollectButton.MouseUpEventHandler += collectionEvent;
-                                    }
-                                }
-                                else if (device.CommonDevice.Type == DeviceType.IASZone)
-                                {
-                                    //鍚勭被浼犳劅鍣�
-                                    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)
-                                    {
-                                        lightView.CollectButton.IsSelected = false;
-                                    }
-                                    else
-                                    {
-                                        lightView.CollectButton.IsSelected = true;
-                                    }
-                                    lightView.CollectButton.MouseUpEventHandler += collectionEvent;
-                                }
-                                else if (device.CommonDevice.Type == DeviceType.TemperatureSensor)
-                                {
-                                    var tempera = device.CommonDevice as TemperatureSensor;
-
-                                    if (tempera.Gateway != null)
-                                    {
-                                        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;
-                                    }
-                                }
-                                else if (device.CommonDevice.Type == DeviceType.DoorLock)
-                                {
-                                    //闂ㄩ攣
-                                    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)
-                                    {
-                                        lightView.CollectButton.IsSelected = false;
-                                    }
-                                    else
-                                    {
-                                        lightView.CollectButton.IsSelected = true;
-                                    }
-
-                                    lightView.CardBG.MouseUpEventHandler += (sender, e) =>
-                                    {
-                                        CommonPage.Instance.IsDrawerLockMode = true;
-                                        var userDoorLockPage = new UserDoorLockPage(Room.CurrentRoom, device);
-                                        HomePage.Instance.AddChidren(userDoorLockPage);
-                                        HomePage.Instance.PageIndex += 1;
-                                        userDoorLockPage.Show();
-                                    };
-                                    lightView.CollectButton.MouseUpEventHandler += collectionEvent;
-                                }
-                                else
-                                {
-                                    var lightView = new FunctionMainView(xx, yy);
-                                    itemView.AddChidren(lightView);
-                                    lightView.Init();
-                                    lightView.Tag = device;
-                                    lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
-                                    lightView.SetStatuText(device.GetDeviceStatu());
-                                    lightView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device.CommonDevice));
-                                    lightView.CanControl(false);
-                                    //lightView.IsSelected = device.CommonDevice.IsOnline == 1;
-                                    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)
-                            {
-
-                            }
-                        });
+                                        System.Threading.Thread.Sleep(100 * i);
+                                        if (rollerShade.Gateway.IsVirtual)
+                                        {
+                                            ReadStatus(rollerShade, () =>
+                                            {
+                                                ReadDeviceAttributeLogic.Instance.SendCurtainStatuComand(device);
+                                            });
+                                        }
+                                        else
+                                        {
+                                            if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - rollerShade.LastDateTime).TotalSeconds)
+                                            {
+                                                ReadDeviceAttributeLogic.Instance.SendCurtainStatuComand(device);
+                                            }
+                                        }
+                                    })
+                                    { IsBackground = true }.Start();
+
+                                    var functionView = new FunctionMainView(xx, yy);
+                                    functionView.Tag = LocalDevice.Current.GetDeviceMainKeys(device);
+                                    itemView.AddChidren(functionView);
+                                    functionView.Init();
+                                    functionView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
+                                    functionView.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(device));
+                                    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.Gateway;
+                                            sendedControlCommand = false;
+                                            zbGateway.ReportAction += UpdateDeviceControllStatu;
+                                            AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device);
+
+                                            (device as Rollershade).CurtainUpDownStopControl(0);
+
+                                            ((sender as Button).Parent as FunctionMainView).SetStatuText(Language.StringByID(R.MyInternationalizationString.Open));
+                                            ((sender as Button).Parent as FunctionMainView).IsSelected = true;
+
+                                            //鎺у埗寤舵椂鍥炶皟
+                                            HdlDeviceOtherLogic.Current.SendCommandDelayAction(device, () =>
+                                            {
+                                                if (Parent == null)
+                                                {
+                                                    return;
+                                                }
+                                                RemoveUpdateControlDeviceStatuAction(zbGateway);
+                                                if (sendedControlCommand == false)
+                                                {
+                                                    HdlDeviceOtherLogic.Current.ShowStatuTip(R.MyInternationalizationString.FAIL);
+                                                }
+                                            });
+                                        }
+                                        else
+                                        {
+                                            zbGateway = device.Gateway;
+                                            sendedControlCommand = false;
+                                            zbGateway.ReportAction += UpdateDeviceControllStatu;
+                                            AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device);
+
+                                            (device as Rollershade).CurtainUpDownStopControl(1);
+
+                                            ((sender as Button).Parent as FunctionMainView).SetStatuText(Language.StringByID(R.MyInternationalizationString.Close));
+                                            ((sender as Button).Parent as FunctionMainView).IsSelected = false;
+
+                                            //鎺у埗寤舵椂鍥炶皟
+                                            HdlDeviceOtherLogic.Current.SendCommandDelayAction(device, () =>
+                                            {
+                                                if (Parent == null)
+                                                {
+                                                    return;
+                                                }
+                                                RemoveUpdateControlDeviceStatuAction(zbGateway);
+                                                if (sendedControlCommand == false)
+                                                {
+                                                    HdlDeviceOtherLogic.Current.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, HdlRoomLogic.Current.CurrentRoom);
+                                        rollerShadeControl.action += (curDev, curRoom) =>
+                                        {
+                                            ReFreshEditDeviceAction(device, curRoom, functionView);
+                                        };
+                                    };
+
+                                    functionView.CollectButton.MouseUpEventHandler += collectionEvent;
+                                }
+                            }
+                            else if (device.Type == DeviceType.OnOffOutput)
+                            {
+                                //寮�鍏崇伅
+                                var light = device as ToggleLight;
+                                if (light.Gateway != null)
+                                {
+                                    new System.Threading.Thread(() =>
+                                    {
+                                        System.Threading.Thread.Sleep(100 * i);
+                                        if (light.Gateway.IsVirtual)
+                                        {
+                                            ReadStatus(light, () =>
+                                            {
+                                                ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device);
+                                            });
+                                        }
+                                        else
+                                        {
+                                            if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - light.LastDateTime).TotalSeconds)
+                                            {
+                                                ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device);
+                                            }
+                                        }
+                                    })
+                                    { IsBackground = true }.Start();
+
+                                    var functionView = new FunctionMainView(xx, yy);
+                                    itemView.AddChidren(functionView);
+                                    functionView.Init();
+                                    functionView.Tag = LocalDevice.Current.GetDeviceMainKeys(device);
+                                    functionView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
+                                    functionView.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(device));
+                                    functionView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device));
+                                    functionView.IsSelected = light.OnOffStatus == 1;
+                                    functionView.SetCollect(HdlRoomLogic.Current.IsCollectInRoom(device));
+
+                                    if (HdlRoomLogic.Current.IsCollectInRoom(device) == 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.Gateway;
+                                            sendedControlCommand = false;
+                                            zbGateway.ReportAction += UpdateDeviceControllStatu;
+                                            AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device);
+
+                                            light.SwitchControl(1);
+
+                                            ((sender as Button).Parent as FunctionMainView).SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(device));
+                                            ((sender as Button).Parent as FunctionMainView).IsSelected = true;
+
+                                            //鎺у埗寤舵椂鍥炶皟
+                                            HdlDeviceOtherLogic.Current.SendCommandDelayAction(device, () =>
+                                            {
+                                                if (Parent == null)
+                                                {
+                                                    return;
+                                                }
+                                                RemoveUpdateControlDeviceStatuAction(zbGateway);
+                                                if (sendedControlCommand == false)
+                                                {
+                                                    HdlDeviceOtherLogic.Current.ShowStatuTip(R.MyInternationalizationString.FAIL);
+                                                }
+                                            });
+                                        }
+                                        else
+                                        {
+                                            zbGateway = device.Gateway;
+                                            sendedControlCommand = false;
+                                            zbGateway.ReportAction += UpdateDeviceControllStatu;
+                                            AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device);
+
+                                            light.SwitchControl(0);
+
+                                            ((sender as Button).Parent as FunctionMainView).SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(device));
+                                            ((sender as Button).Parent as FunctionMainView).IsSelected = false;
+
+                                            //鎺у埗寤舵椂鍥炶皟
+                                            HdlDeviceOtherLogic.Current.SendCommandDelayAction(device, () =>
+                                            {
+                                                if (Parent == null)
+                                                {
+                                                    return;
+                                                }
+                                                RemoveUpdateControlDeviceStatuAction(zbGateway);
+                                                if (sendedControlCommand == false)
+                                                {
+                                                    HdlDeviceOtherLogic.Current.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, HdlRoomLogic.Current.CurrentRoom);
+                                        lightControl.action += (curDev, curRoom) =>
+                                        {
+                                            ReFreshEditDeviceAction(device, curRoom, functionView);
+                                        };
+                                    };
+
+                                    functionView.CollectButton.MouseUpEventHandler += collectionEvent;
+                                }
+                            }
+                            else if (device.Type == DeviceType.AirSwitch)
+                            {
+                                //绌烘皵寮�鍏�
+                                var airSwitch = device as AirSwitch;
+                                if (airSwitch.Gateway != null)
+                                {
+                                    new System.Threading.Thread(() =>
+                                    {
+                                        System.Threading.Thread.Sleep(100 * i);
+                                        if (airSwitch.Gateway.IsVirtual)
+                                        {
+                                            ReadStatus(airSwitch, () =>
+                                            {
+                                                ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device);
+                                            });
+                                        }
+                                        else
+                                        {
+                                            if ((DateTime.Now - airSwitch.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
+                                            {
+                                                ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device);
+                                            }
+                                        }
+                                    })
+                                    { IsBackground = true }.Start();
+
+                                    var functionView = new FunctionMainView(xx, yy);
+                                    itemView.AddChidren(functionView);
+                                    functionView.Init();
+                                    functionView.Tag = LocalDevice.Current.GetDeviceMainKeys(device);
+                                    functionView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
+                                    functionView.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(device));
+                                    functionView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(airSwitch));
+                                    functionView.IsSelected = airSwitch.OnOffStatus == 1;
+                                    functionView.SetCollect(HdlRoomLogic.Current.IsCollectInRoom(device));
+
+                                    functionView.SwitchButton.MouseUpEventHandler += (sender, e) =>
+                                    {
+                                        (sender as Button).IsSelected = !(sender as Button).IsSelected;
+                                        if ((sender as Button).IsSelected)
+                                        {
+                                            zbGateway = device.Gateway;
+                                            sendedControlCommand = false;
+                                            zbGateway.ReportAction += UpdateDeviceControllStatu;
+                                            AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device);
+
+                                            airSwitch.SwitchControl(1);
+
+                                            ((sender as Button).Parent as FunctionMainView).SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(device));
+                                            ((sender as Button).Parent as FunctionMainView).IsSelected = true;
+
+                                            //鎺у埗寤舵椂鍥炶皟
+                                            HdlDeviceOtherLogic.Current.SendCommandDelayAction(device, () =>
+                                            {
+                                                if (Parent == null)
+                                                {
+                                                    return;
+                                                }
+                                                RemoveUpdateControlDeviceStatuAction(zbGateway);
+                                                if (sendedControlCommand == false)
+                                                {
+                                                    HdlDeviceOtherLogic.Current.ShowStatuTip(R.MyInternationalizationString.FAIL);
+                                                }
+                                            });
+                                        }
+                                        else
+                                        {
+                                            zbGateway = device.Gateway;
+                                            sendedControlCommand = false;
+                                            zbGateway.ReportAction += UpdateDeviceControllStatu;
+                                            AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device);
+
+                                            airSwitch.SwitchControl(0);
+
+                                            ((sender as Button).Parent as FunctionMainView).SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(device));
+                                            ((sender as Button).Parent as FunctionMainView).IsSelected = false;
+
+                                            //鎺у埗寤舵椂鍥炶皟
+                                            HdlDeviceOtherLogic.Current.SendCommandDelayAction(device, () =>
+                                            {
+                                                if (Parent == null)
+                                                {
+                                                    return;
+                                                }
+                                                RemoveUpdateControlDeviceStatuAction(zbGateway);
+                                                if (sendedControlCommand == false)
+                                                {
+                                                    HdlDeviceOtherLogic.Current.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, HdlRoomLogic.Current.CurrentRoom);
+                                        lightControl.action += (curDev, curRoom) =>
+                                        {
+                                            ReFreshEditDeviceAction(device, curRoom, functionView);
+                                        };
+
+                                    };
+
+                                    functionView.CollectButton.MouseUpEventHandler += collectionEvent;
+                                }
+                            }
+                            else if (device.Type == DeviceType.Thermostat)
+                            {
+                                //鎭掓俯鍣�-AC-绌鸿皟
+                                var ac = device as AC;
+                                if (ac.Gateway != null)
+                                {
+                                    new System.Threading.Thread(() =>
+                                    {
+                                        System.Threading.Thread.Sleep(100 * i);
+                                        if (ac.Gateway.IsVirtual)
+                                        {
+                                            ReadStatus(ac, () =>
+                                            {
+                                                ReadDeviceAttributeLogic.Instance.SendACStatuComand(device);
+                                            });
+                                        }
+                                        else
+                                        {
+                                            if ((DateTime.Now - ac.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
+                                            {
+                                                ReadDeviceAttributeLogic.Instance.SendACStatuComand(device);
+                                            }
+                                        }
+                                    })
+                                    { IsBackground = true }.Start();
+
+                                    var functionView = new FunctionMainView(xx, yy);
+                                    itemView.AddChidren(functionView);
+                                    functionView.Init();
+                                    functionView.Tag = LocalDevice.Current.GetDeviceMainKeys(device);
+                                    functionView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
+                                    functionView.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(device));
+                                    functionView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device));
+                                    functionView.IsSelected = ac.currentSystemMode != 0;
+                                    functionView.SetCollect(HdlRoomLogic.Current.IsCollectInRoom(device));
+
+                                    functionView.SwitchButton.MouseUpEventHandler += (sender, e) =>
+                                    {
+                                        (sender as Button).IsSelected = !(sender as Button).IsSelected;
+                                        if ((sender as Button).IsSelected)
+                                        {
+                                            zbGateway = device.Gateway;
+                                            sendedControlCommand = false;
+                                            zbGateway.ReportAction += UpdateDeviceControllStatu;
+                                            AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device);
+
+                                            ac.Open();
+
+                                            ((sender as Button).Parent as FunctionMainView).SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(device));
+                                            ((sender as Button).Parent as FunctionMainView).IsSelected = true;
+
+                                            //鎺у埗寤舵椂鍥炶皟
+                                            HdlDeviceOtherLogic.Current.SendCommandDelayAction(device, () =>
+                                            {
+                                                if (Parent == null)
+                                                {
+                                                    return;
+                                                }
+                                                RemoveUpdateControlDeviceStatuAction(zbGateway);
+                                                if (sendedControlCommand == false)
+                                                {
+                                                    HdlDeviceOtherLogic.Current.ShowStatuTip(R.MyInternationalizationString.FAIL);
+                                                }
+                                            });
+                                        }
+                                        else
+                                        {
+                                            zbGateway = device.Gateway;
+                                            sendedControlCommand = false;
+                                            zbGateway.ReportAction += UpdateDeviceControllStatu;
+                                            AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device);
+
+                                            ac.Close();
+
+                                            ((sender as Button).Parent as FunctionMainView).SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(device));
+                                            ((sender as Button).Parent as FunctionMainView).IsSelected = false;
+
+                                            //鎺у埗寤舵椂鍥炶皟
+                                            HdlDeviceOtherLogic.Current.SendCommandDelayAction(device, () =>
+                                            {
+                                                if (Parent == null)
+                                                {
+                                                    return;
+                                                }
+                                                RemoveUpdateControlDeviceStatuAction(zbGateway);
+                                                if (sendedControlCommand == false)
+                                                {
+                                                    HdlDeviceOtherLogic.Current.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, HdlRoomLogic.Current.CurrentRoom);
+                                        lightControl.action += (curDev, curRoom) =>
+                                        {
+                                            ReFreshEditDeviceAction(device, curRoom, functionView);
+                                        };
+                                    };
+
+                                    functionView.CollectButton.MouseUpEventHandler += collectionEvent;
+                                }
+                            }
+                            else if (device.Type == DeviceType.DimmableLight)
+                            {
+                                //璋冨厜鐏�
+                                var dimmableLight = device as DimmableLight;
+                                if (dimmableLight.Gateway != null)
+                                {
+                                    new System.Threading.Thread(() =>
+                                    {
+                                        System.Threading.Thread.Sleep(100 * i);
+                                        if (dimmableLight.Gateway.IsVirtual)
+                                        {
+                                            //鍙戦�佽鍙栫姸鎬佸懡浠�
+                                            ReadStatus(dimmableLight, () =>
+                                            {
+                                                ReadDeviceAttributeLogic.Instance.SendDimmableLightStatuComand(device);
+                                            });
+                                        }
+                                        else
+                                        {
+                                            //闃叉鐭椂闂村唴澶氭璇诲彇璁惧鐘舵��
+                                            if ((DateTime.Now - dimmableLight.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
+                                            {
+                                                ReadDeviceAttributeLogic.Instance.SendDimmableLightStatuComand(device);
+                                            }
+                                        }
+                                    })
+                                    { IsBackground = true }.Start();
+
+                                    var functionView = new FunctionMainView(xx, yy);
+                                    itemView.AddChidren(functionView);
+                                    functionView.Init();
+                                    functionView.Tag = LocalDevice.Current.GetDeviceMainKeys(device);
+                                    functionView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
+                                    functionView.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(device));
+                                    functionView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device));
+                                    functionView.IsSelected = dimmableLight.OnOffStatus == 1;
+                                    functionView.SetCollect(HdlRoomLogic.Current.IsCollectInRoom(device));
+
+                                    if (HdlRoomLogic.Current.IsCollectInRoom(device) == 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.Gateway;
+                                            sendedControlCommand = false;
+                                            zbGateway.ReportAction += UpdateDeviceControllStatu;
+                                            AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device);
+
+                                            dimmableLight.SwitchControl(1);
+
+                                            ((sender as Button).Parent as FunctionMainView).SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(device));
+                                            ((sender as Button).Parent as FunctionMainView).IsSelected = true;
+
+                                            //鎺у埗寤舵椂鍥炶皟
+                                            HdlDeviceOtherLogic.Current.SendCommandDelayAction(device, () =>
+                                            {
+                                                if (Parent == null)
+                                                {
+                                                    return;
+                                                }
+                                                RemoveUpdateControlDeviceStatuAction(zbGateway);
+                                                if (sendedControlCommand == false)
+                                                {
+                                                    HdlDeviceOtherLogic.Current.ShowStatuTip(R.MyInternationalizationString.FAIL);
+                                                }
+                                            });
+                                        }
+                                        else
+                                        {
+                                            zbGateway = device.Gateway;
+                                            sendedControlCommand = false;
+                                            zbGateway.ReportAction += UpdateDeviceControllStatu;
+                                            AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device);
+
+                                            dimmableLight.SwitchControl(0);
+
+                                            ((sender as Button).Parent as FunctionMainView).SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(device));
+                                            ((sender as Button).Parent as FunctionMainView).IsSelected = false;
+
+                                            //鎺у埗寤舵椂鍥炶皟
+                                            HdlDeviceOtherLogic.Current.SendCommandDelayAction(device, () =>
+                                            {
+                                                if (Parent == null)
+                                                {
+                                                    return;
+                                                }
+                                                RemoveUpdateControlDeviceStatuAction(zbGateway);
+                                                if (sendedControlCommand == false)
+                                                {
+                                                    HdlDeviceOtherLogic.Current.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, HdlRoomLogic.Current.CurrentRoom);
+                                        dimmableLightControl.action += (curDev, curRoom) =>
+                                        {
+                                            ReFreshEditDeviceAction(device, curRoom, functionView);
+                                        };
+                                    };
+                                    functionView.CollectButton.MouseUpEventHandler += collectionEvent;
+                                }
+                            }
+                            else if (device.Type == DeviceType.IASZone)
+                            {
+                                //鍚勭被浼犳劅鍣�
+                                var ias = device as IASZone;
+
+                                var lightView = new FunctionMainView(xx, yy);
+                                itemView.AddChidren(lightView);
+                                lightView.Init();
+                                lightView.Tag = LocalDevice.Current.GetDeviceMainKeys(device);
+                                lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
+                                lightView.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(device));
+                                lightView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device));
+                                lightView.IsSelected = ias.iASInfo?.Alarm1 == 1;
+                                lightView.SetCollect(HdlRoomLogic.Current.IsCollectInRoom(device));
+                                lightView.CanControl(false);
+                                if (HdlRoomLogic.Current.IsCollectInRoom(device) == false)
+                                {
+                                    lightView.CollectButton.IsSelected = false;
+                                }
+                                else
+                                {
+                                    lightView.CollectButton.IsSelected = true;
+                                }
+                                lightView.CollectButton.MouseUpEventHandler += collectionEvent;
+                            }
+                            else if (device.Type == DeviceType.TemperatureSensor)
+                            {
+                                var tempera = device as TemperatureSensor;
+
+                                if (tempera.Gateway != null)
+                                {
+                                    new System.Threading.Thread(() =>
+                                    {
+                                        System.Threading.Thread.Sleep(100 * i);
+                                        if (tempera.Gateway.IsVirtual)
+                                        {
+                                            ReadStatus(tempera, () =>
+                                            {
+                                                if (tempera.SensorDiv == 1)
+                                                {
+                                                    ReadDeviceAttributeLogic.Instance.SendTemperatureStatuComand(device);
+                                                }
+                                                else if (tempera.SensorDiv == 2)
+                                                {
+                                                    ReadDeviceAttributeLogic.Instance.SendHumidityStatuComand(device);
+                                                }
+                                            });
+                                        }
+                                        else
+                                        {
+                                            if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - tempera.LastDateTime).TotalSeconds)
+                                            {
+                                                if (tempera.SensorDiv == 1)
+                                                {
+                                                    ReadDeviceAttributeLogic.Instance.SendTemperatureStatuComand(device);
+                                                }
+                                                else if (tempera.SensorDiv == 2)
+                                                {
+                                                    ReadDeviceAttributeLogic.Instance.SendHumidityStatuComand(device);
+                                                }
+                                            }
+                                        }
+                                    })
+                                    { IsBackground = true }.Start();
+
+                                    var lightView = new FunctionMainView(xx, yy);
+                                    itemView.AddChidren(lightView);
+                                    lightView.Init();
+                                    lightView.Tag = LocalDevice.Current.GetDeviceMainKeys(device);
+                                    lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
+                                    lightView.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(device));
+                                    lightView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device));
+                                    lightView.IsSelected = false;
+                                    lightView.SetCollect(HdlRoomLogic.Current.IsCollectInRoom(device));
+                                    lightView.CanControl(false);
+                                    if (HdlRoomLogic.Current.IsCollectInRoom(device) == false)
+                                    {
+                                        lightView.CollectButton.IsSelected = false;
+                                    }
+                                    else
+                                    {
+                                        lightView.CollectButton.IsSelected = true;
+                                    }
+                                    lightView.CollectButton.MouseUpEventHandler += collectionEvent;
+                                }
+                            }
+                            else if (device.Type == DeviceType.DoorLock)
+                            {
+                                //闂ㄩ攣
+                                var dimmableLight = device as DoorLock;
+
+                                var lightView = new FunctionMainView(xx, yy);
+                                itemView.AddChidren(lightView);
+                                lightView.Init();
+                                lightView.Tag = LocalDevice.Current.GetDeviceMainKeys(device);
+                                lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
+                                lightView.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(device));
+                                lightView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device));
+                                lightView.IsSelected = false;
+                                lightView.SetCollect(HdlRoomLogic.Current.IsCollectInRoom(device));
+                                lightView.CanControl(false);
+                                if (HdlRoomLogic.Current.IsCollectInRoom(device) == false)
+                                {
+                                    lightView.CollectButton.IsSelected = false;
+                                }
+                                else
+                                {
+                                    lightView.CollectButton.IsSelected = true;
+                                }
+
+                                lightView.CardBG.MouseUpEventHandler += (sender, e) =>
+                                {
+                                    CommonPage.Instance.IsDrawerLockMode = true;
+                                    var userDoorLockPage = new UserDoorLockPage(HdlRoomLogic.Current.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 = LocalDevice.Current.GetDeviceMainKeys(device);
+                                lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
+                                lightView.SetStatuText(HdlDeviceOtherLogic.Current.GetDeviceStatu(device));
+                                lightView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device));
+                                lightView.CanControl(false);
+                                lightView.SetCollect(HdlRoomLogic.Current.IsCollectInRoom(device));
+
+                                if (HdlRoomLogic.Current.IsCollectInRoom(device) == false)
+                                {
+                                    lightView.CollectButton.IsSelected = false;
+                                }
+                                else
+                                {
+                                    lightView.CollectButton.IsSelected = true;
+                                }
+                                lightView.CollectButton.MouseUpEventHandler += collectionEvent;
+                            }
+                        }
+                        catch (Exception ex)
+                        {
+
+                        }
+                    });
                     //})
                     //{ IsBackground = true }.Start();
                 }
@@ -1706,37 +1186,35 @@
         /// <param name="device"></param>
         /// <param name="curRoom"></param>
         /// <param name="functionView"></param>
-        private void ReFreshEditDeviceAction(DeviceUI device, Common.Room curRoom, FunctionMainView functionView)
+        private void ReFreshEditDeviceAction(CommonDevice device, Common.Room curRoom, FunctionMainView functionView)
         {
-            if (Common.Room.CurrentRoom.IsLove)
+            if (HdlRoomLogic.Current.CurrentRoom.IsLove)
             {
                 functionView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
-                functionView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device.CommonDevice));
-                if (Room.CurrentRoom.IsCollectInRoom(device.FileName) == false)
+                functionView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device));
+                if (HdlRoomLogic.Current.IsCollectInRoom(device) == false)
                 {
                     ShowFunction();
                 }
             }
             else
             {
-                if (curRoom.Id != Common.Room.CurrentRoom.Id)
+                if (curRoom.Id != HdlRoomLogic.Current.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));
+                    functionView.SetDeviceName(Common.LocalDevice.Current.GetDeviceEpointName(device));
+                    functionView.SetCollect(HdlRoomLogic.Current.IsCollectInRoom(device));
                 }
             }
         }
 
         #endregion
 
-        #region 鈼� 鍦烘櫙_____________________________
+        #region 鈻� 鍦烘櫙鍒嗘敮___________________________
 
         /// <summary>
         /// 鏄剧ず娌″満鏅�
@@ -1758,7 +1236,7 @@
                 Height = Application.GetRealHeight(200),
                 Text = Language.StringByID(R.MyInternationalizationString.NoScene_Tip).Replace("{\\r\\n}", "\r\n"),
                 TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
-                TextAlignment=TextAlignment.Center,
+                TextAlignment = TextAlignment.Center,
                 IsMoreLines = true
             };
             functionSceneBodyView.AddChidren(noScenceTip);
@@ -1771,7 +1249,7 @@
         {
             functionSceneBodyView.RemoveAll();
             //閫夋嫨鍦烘櫙
-            var sceneList = Room.CurrentRoom.SceneUIList;
+            var sceneList = HdlSceneLogic.Current.GetRoomSceneList(HdlRoomLogic.Current.CurrentRoom);
             if (sceneList == null)
             {
                 return;
@@ -1799,7 +1277,7 @@
                         itemView = new FrameLayout()
                         {
                             Height = Application.GetRealHeight(14 + 348),
-                            Tag = scene
+                            Tag = scene.Id
                         };
                         sceneScrolView.AddChidren(itemView);
                     }
@@ -1872,9 +1350,29 @@
             }
         }
 
-        #endregion
+        #endregion
+
+        #region 鈻� 鍒锋柊_______________________________
 
-        #region 鈼� 鍒囨崲浣忓畢_________________________
+        /// <summary>
+        /// 鍒锋柊璁惧妗屽竷鎺т欢
+        /// </summary>
+        public void RefreshBodyView()
+        {
+            functionSceneBodyView.RemoveAll();
+            if (btnFunction.IsSelected)
+            {
+                ShowFunction();
+            }
+            else
+            {
+                ShowScene();
+            }
+        }
+
+        #endregion
+
+        #region 鈻� 鍒囨崲浣忓畢___________________________
         /// <summary>
         /// 鍒囨崲浣忓畢
         /// </summary>
@@ -1885,22 +1383,22 @@
             {
                 CommonPage.Loading.Start();
                 new System.Threading.Thread(async () =>
-                 {
-                     Config.Instance.HomeId = home.Id;
-                     Config.Instance.Home = House.GetHouseByFilePath(home.FileName);
-                     Global.CreateHomeDirectory(home.Id);
-                     Config.Instance.Save();
-                     //鍒锋柊涓汉涓績鐨勫唴瀛樺強绾跨▼
-                     await UserCenter.UserCenterLogic.InitUserCenterMenmoryAndThread();
-
-                     Room.InitAllRoom();
-
-                     Application.RunOnMainThread(() =>
-                     {
-                         Show();
-                         CommonPage.Loading.Hide();
-                     });
-                 })
+                {
+                    Config.Instance.HomeId = home.Id;
+                    Config.Instance.Home = House.GetHouseByFilePath(home.FileName);
+                    Global.CreateHomeDirectory(home.Id);
+                    Config.Instance.Save();
+                    //鍒锋柊涓汉涓績鐨勫唴瀛樺強绾跨▼
+                    await UserCenter.UserCenterLogic.InitUserCenterMenmoryAndThread();
+                    //鍒濆鍖栧叏閮ㄦ埧闂�
+                    HdlRoomLogic.Current.InitAllRoom();
+
+                    Application.RunOnMainThread(() =>
+                    {
+                        ShowForm();
+                        CommonPage.Loading.Hide();
+                    });
+                })
                 { IsBackground = true }.Start();
             }
             catch (Exception ex)
@@ -1916,7 +1414,7 @@
 
         #endregion
 
-        #region 鈼� 杩涜璁惧鐘舵�佽鍙朹_________________
+        #region 鈻� 杩涜璁惧鐘舵�佽鍙朹__________________
 
         /// <summary>
         /// 鍒ゆ柇鏄惁鍙互杩涜璁惧鐘舵�佽鍙栥�傚湪鍥炶皟涓鍙�
@@ -1965,7 +1463,7 @@
 
         #endregion
 
-        #region 鈼� 鎺у埗鐘舵�乢________________________
+        #region 鈻� 鎺у埗鐘舵�乢__________________________
 
         /// <summary>
         /// 鏄剧ず璁惧鎺у埗鐘舵��
@@ -1985,7 +1483,7 @@
             }
             //鏍囪宸茬粡鍙戦�佹帶鍒跺懡浠ゅ埌缃戝叧
             sendedControlCommand = true;
-            //DeviceUI.ShowStatuTip(R.MyInternationalizationString.Success);
+            //HdlDeviceOtherLogic.Current.ShowStatuTip(R.MyInternationalizationString.Success);
         }
 
         /// <summary>
@@ -2033,6 +1531,386 @@
             {
                 commonDeviceList.Add(common);
             }
+        }
+
+        #endregion
+
+        #region 鈻� 璁惧鐘舵�佷笂鎶______________________
+
+        /// <summary>
+        /// 娣诲姞璁惧鐘舵�佷笂鎶ヤ簨浠�
+        /// </summary>
+        private void AddDeviceReportEvent()
+        {
+            //璁惧灞炴�т笂鎶�
+            HdlGatewayReceiveLogic.Current.AddAttributeEvent("UserHomeViewDeviceStatus", ReceiveComandDiv.A璁惧灞炴�т笂鎶�, (report) =>
+            {
+                HdlThreadLogic.Current.RunMain(() =>
+                {
+                    if (report.DeviceStatusReport.AttriBute == null || report.DeviceStatusReport.AttriBute.Count == 0)
+                    {
+                        return;
+                    }
+                    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 = LocalDevice.Current.GetDevice((rowFL.GetChildren(j) as FunctionMainView).Tag.ToString());
+                            if (deviceUI == null)
+                            {
+                                //璁惧涓虹┖鎴栬�呮帶浠朵负绌�
+                                continue;
+                            }
+                            if (report.DeviceAddr != deviceUI.DeviceAddr || report.DeviceEpoint != deviceUI.DeviceEpoint)
+                            {
+                                //鍒ゆ柇鏄惁涓哄綋鍓嶈澶�
+                                continue;
+                            }
+
+                            switch (deviceUI.Type)
+                            {
+                                case DeviceType.OnOffOutput:
+                                    //寮�鍏冲姛鑳�
+                                    if (report.DeviceStatusReport.CluterID == 6)
+                                    {
+                                        var onOffOutputLight = deviceUI as ZigBee.Device.ToggleLight;
+                                        onOffOutputLight.DeviceStatusReport = report.DeviceStatusReport;
+                                        onOffOutputLight.OnOffStatus = onOffOutputLight.DeviceStatusReport.AttriBute[0].AttriButeData;
+                                        (rowFL.GetChildren(j) as FunctionMainView).IsSelected = onOffOutputLight.OnOffStatus == 1;
+                                        (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI);
+                                        onOffOutputLight.LastDateTime = DateTime.Now;
+                                    }
+                                    break;
+
+                                case DeviceType.AirSwitch:
+                                    //寮�鍏冲姛鑳�
+                                    if (report.DeviceStatusReport.CluterID == 6)
+                                    {
+                                        var airSwitch = deviceUI as ZigBee.Device.AirSwitch;
+                                        airSwitch.DeviceStatusReport = report.DeviceStatusReport;
+                                        airSwitch.OnOffStatus = airSwitch.DeviceStatusReport.AttriBute[0].AttriButeData;
+                                        (rowFL.GetChildren(j) as FunctionMainView).IsSelected = airSwitch.OnOffStatus == 1;
+                                        (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI);
+                                        airSwitch.LastDateTime = DateTime.Now;
+                                    }
+                                    //褰揅luterID=3,灏辫瘉鏄庤璁惧鍦ㄧ嚎锛岀洿鎺ユ爣璁�
+                                    if (report.DeviceStatusReport.CluterID == 3)
+                                    {
+                                        deviceUI.IsOnline = 1;
+                                        deviceUI.LastDateTime = DateTime.Now;
+                                    }
+                                    break;
+
+                                case DeviceType.WindowCoveringDevice:
+                                    if (report.DeviceStatusReport.CluterID == 258)
+                                    {
+                                        if (report.DeviceStatusReport.AttriBute[0].AttributeId == 0)
+                                        {
+                                            //绐楀笜绫诲瀷
+                                            var rollerShade = deviceUI as Rollershade;
+                                            rollerShade.DeviceStatusReport = report.DeviceStatusReport;
+                                            rollerShade.WcdType = report.DeviceStatusReport.AttriBute[0].AttriButeData;
+                                            rollerShade.LastDateTime = DateTime.Now;
+                                            (rowFL.GetChildren(j) as FunctionMainView).IsSelected = rollerShade.WcdCurrentPositionLiftPercentage == 100;
+                                            (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI);
+                                        }
+                                        if (report.DeviceStatusReport.AttriBute[0].AttributeId == 8)
+                                        {
+                                            //绐楀笜鐧惧垎姣�
+                                            var rollerShade = deviceUI as Rollershade;
+                                            rollerShade.DeviceStatusReport = report.DeviceStatusReport;
+                                            rollerShade.WcdCurrentPositionLiftPercentage = report.DeviceStatusReport.AttriBute[0].AttriButeData;
+                                            rollerShade.LastDateTime = DateTime.Now;
+                                            (rowFL.GetChildren(j) as FunctionMainView).IsSelected = rollerShade.WcdCurrentPositionLiftPercentage == 100;
+                                            (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI);
+                                        }
+                                    }
+                                    if (report.DeviceStatusReport.CluterID == 3)
+                                    {
+                                        deviceUI.IsOnline = 1;
+                                        deviceUI.LastDateTime = DateTime.Now;
+                                    }
+                                    break;
+
+                                case DeviceType.Thermostat:
+                                    //AC鍔熻兘
+                                    if (report.DeviceStatusReport.CluterID == 513)
+                                    {
+                                        var ac = deviceUI as ZigBee.Device.AC;
+                                        ac.DeviceStatusReport = report.DeviceStatusReport;
+                                        var attriButeList = ac.DeviceStatusReport.AttriBute;
+                                        foreach (var attList in attriButeList)
+                                        {
+                                            var curTemp = attList.AttriButeData / 100;
+                                            switch (attList.AttributeId)
+                                            {
+                                                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;
+                                            }
+                                        }
+                                        (rowFL.GetChildren(j) as FunctionMainView).IsSelected = ac.currentSystemMode != 0;
+                                        (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI);
+                                    }
+                                    if (report.DeviceStatusReport.CluterID == 514)
+                                    {
+                                        var ac = deviceUI as ZigBee.Device.AC;
+                                        var attriButeList = report.DeviceStatusReport.AttriBute;
+                                        ac.DeviceStatusReport = report.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 = HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI);
+                                    }
+                                    //褰揅luterID=3,灏辫瘉鏄庤璁惧鍦ㄧ嚎锛岀洿鎺ユ爣璁�
+                                    if (report.DeviceStatusReport.CluterID == 3)
+                                    {
+                                        deviceUI.IsOnline = 1;
+                                        deviceUI.LastDateTime = DateTime.Now;
+                                    }
+                                    break;
+
+                                case DeviceType.DimmableLight:
+                                    //璋冨厜鐏姛鑳�
+                                    if (report.DeviceStatusReport.CluterID == 6)
+                                    {
+                                        var dimmableLight = deviceUI as DimmableLight;
+                                        dimmableLight.DeviceStatusReport = report.DeviceStatusReport;
+                                        dimmableLight.OnOffStatus = dimmableLight.DeviceStatusReport.AttriBute[0].AttriButeData;
+                                        (rowFL.GetChildren(j) as FunctionMainView).IsSelected = dimmableLight.OnOffStatus == 1;
+                                        (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI);
+                                        dimmableLight.LastDateTime = DateTime.Now;
+                                    }
+
+                                    //浜害
+                                    if (report.DeviceStatusReport.CluterID == 8)
+                                    {
+                                        var dimmableLight = deviceUI as DimmableLight;
+                                        dimmableLight.DeviceStatusReport = report.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 = HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI);
+                                                break;
+                                        }
+                                    }
+                                    break;
+                                case DeviceType.TemperatureSensor:
+                                    //娓╁害
+                                    if (report.DeviceStatusReport.CluterID == 1026)
+                                    {
+                                        var tempera = deviceUI as TemperatureSensor;
+                                        foreach (var data in report.DeviceStatusReport.AttriBute)
+                                        {
+                                            if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
+                                            {
+                                                if (data.AttriButeData == 0)
+                                                {
+                                                    tempera.Temperatrue = 0;
+                                                }
+                                                else if (data.AttriButeData > 32767)
+                                                {
+                                                    //璐熸暟(鐗规畩澶勭悊)
+                                                    string strValue = (data.AttriButeData - 65536).ToString();
+                                                    //灏忔暟鐐归渶瑕佷竴浣�
+                                                    strValue = strValue.Substring(0, strValue.Length - 1);
+                                                    tempera.Temperatrue = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
+                                                }
+                                                else
+                                                {
+                                                    //灏忔暟鐐归渶瑕佷竴浣�
+                                                    string strValue = data.AttriButeData.ToString();
+                                                    strValue = strValue.Substring(0, strValue.Length - 1);
+                                                    tempera.Temperatrue = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
+                                                }
+
+                                                tempera.LastDateTime = DateTime.Now;
+                                                (rowFL.GetChildren(j) as FunctionMainView).StatuButton.Text = HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI);
+                                            }
+                                        }
+                                    }
+                                    //婀垮害
+                                    if (report.DeviceStatusReport.CluterID == 1029)
+                                    {
+                                        var tempera = deviceUI as TemperatureSensor;
+                                        foreach (var data in report.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 = HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI);
+                                            }
+                                        }
+                                    }
+                                    break;
+                            }
+                        }
+                    }
+
+                }, ShowErrorMode.NO);
+            });
+
+            //浼犳劅鍣ㄤ笂鎶�
+            HdlGatewayReceiveLogic.Current.AddAttributeEvent("UserHomeViewSensor", ReceiveComandDiv.A浼犳劅鍣ㄤ笂鎶�, (report) =>
+            {
+                HdlThreadLogic.Current.RunMain(() =>
+                {
+                    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 = LocalDevice.Current.GetDevice((rowFL.GetChildren(j) as FunctionMainView).Tag.ToString());
+                            if (deviceUI == null)
+                            {
+                                //璁惧涓虹┖鎴栬�呮帶浠朵负绌�
+                                continue;
+                            }
+                            if (report.DeviceAddr != deviceUI.DeviceAddr || report.DeviceEpoint != deviceUI.DeviceEpoint)
+                            {
+                                //鍒ゆ柇鏄惁涓哄綋鍓嶈澶�
+                                continue;
+                            }
+
+                            switch (deviceUI.Type)
+                            {
+                                case DeviceType.IASZone:
+                                    //ias
+                                    var ias = report as IASZone;
+                                    var iAS = deviceUI 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 = HdlDeviceOtherLogic.Current.GetDeviceStatu(deviceUI);
+                                    iAS.LastDateTime = DateTime.Now;
+                                    break;
+                            }
+                        }
+                    }
+                }, ShowErrorMode.NO);
+            });
+        }
+
+        #endregion
+
+        #region 鈻� 鍒囨崲妤煎眰___________________________
+
+        /// <summary>
+        /// 鏄剧ず閫夋嫨妤煎眰鐨勭晫闈�
+        /// </summary>
+        private void ShowSelectFloorForm()
+        {
+            var floorFL = new Device.Category.SelectFloor();
+            this.AddChidren(floorFL);
+            floorFL.Init(35, 153);
+            floorFL.changeFloor = true;
+            floorFL.FloorAction = (floorId) =>
+            {
+                this.btnFloor.Text = Config.Instance.Home.GetFloorNameById(floorId);
+                HdlRoomLogic.Current.CurrentRoom = HdlRoomLogic.Current.GetLoveRoom();
+                this.ShowForm();
+            };
+        }
+
+        #endregion
+
+        #region 鈻� 鐣岄潰鍏抽棴___________________________
+
+        /// <summary>
+        /// 鐣岄潰鍏抽棴
+        /// </summary>
+        public override void CloseFormBefore()
+        {
+            HdlGatewayReceiveLogic.Current.RemoveEvent("UserHomeViewDeviceStatus");
+            HdlGatewayReceiveLogic.Current.RemoveEvent("UserHomeViewSensor");
+
+            base.CloseFormBefore();
+        }
+
+        #endregion
+
+        #region 鈻� 涓�鑸柟娉昣__________________________
+
+        /// <summary>
+        /// 妫�娴嬫槸鍚︾粦瀹氭湁缃戝叧
+        /// </summary>
+        private bool CheckHadBindGateway()
+        {
+            //鑾峰彇鏈湴宸茬粡缁戝畾鐨勭綉鍏�
+            var gatewayList = HdlGatewayLogic.Current.GetAllLocalGateway();
+            if (gatewayList.Count == 0)
+            {
+                return false;
+            }
+            //涓讳汉鎴栬�呯鐞嗗憳鎵嶈
+            if (UserCenterResourse.UserInfo.AuthorityNo == 1 || UserCenterResourse.UserInfo.AuthorityNo == 2)
+            {
+                return true;
+            }
+            return false;
         }
 
         #endregion

--
Gitblit v1.8.0