From dc0309e64f02227d8e1468b7326c07955f804612 Mon Sep 17 00:00:00 2001
From: chenqiyang <1406175257@qq.com>
Date: 星期三, 22 六月 2022 11:22:18 +0800
Subject: [PATCH] 修改引用路径

---
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceBindLogic.cs | 1578 +++++++++++++++++++++++++++++-----------------------------
 1 files changed, 789 insertions(+), 789 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceBindLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceBindLogic.cs
old mode 100755
new mode 100644
index e255b33..30cbe5b
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceBindLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceBindLogic.cs
@@ -1,803 +1,803 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Text;
-using ZigBee.Device;
-using System.Threading.Tasks;
-using Newtonsoft.Json.Linq;
-
-namespace Shared.Phone.UserCenter
-{
-    /// <summary>
-    /// 璁惧缁戝畾鐨勯�昏緫
-    /// </summary>
-    public class HdlDeviceBindLogic
-    {
-        #region 鈻� 鍙橀噺澹版槑___________________________
-
-        /// <summary>
-        /// 璁惧缁戝畾鐨勯�昏緫
+锘縰sing System;
+using System.Collections.Generic;
+using System.Text;
+using ZigBee.Device;
+using System.Threading.Tasks;
+using Newtonsoft.Json.Linq;
+
+namespace Shared.Phone.UserCenter
+{
+    /// <summary>
+    /// 璁惧缁戝畾鐨勯�昏緫
+    /// </summary>
+    public class HdlDeviceBindLogic
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 璁惧缁戝畾鐨勯�昏緫
         /// </summary>
         private static HdlDeviceBindLogic m_Current = null;
-        /// <summary>
-        /// 璁惧缁戝畾鐨勯�昏緫
+        /// <summary>
+        /// 璁惧缁戝畾鐨勯�昏緫
         /// </summary>
-        public static HdlDeviceBindLogic Current
-        {
-            get
-            {
-                if (m_Current == null)
-                {
-                    m_Current = new HdlDeviceBindLogic();
-                }
-                return m_Current;
-            }
-        }
-
-        #endregion
-
-        #region 鈻� 鑾峰彇璁惧涓嬮潰缁戝畾鐨勮澶嘷____________
-
-        /// <summary>
-        /// 鑾峰彇璁惧涓嬮潰缁戝畾鐨勮澶�(閿欒鏃惰繑鍥瀗ull),杩欎釜鏄粰pir浼犳劅鍣ㄧ敤鐨�
-        /// </summary>
-        /// <param name="mainDevice">璁惧瀵硅薄</param>
-        /// <returns></returns>
-        public List<CommonDevice> GetBindTargetDevice(CommonDevice mainDevice)
-        {
-            var result = this.GetDeviceBindAsync(mainDevice);
-            if (result == null || result.getAllBindResponseData == null)
-            {
-                //鑾峰彇璁惧鐨勭粦瀹氱洰鏍囧け璐�
-                string msg = Language.StringByID(R.MyInternationalizationString.uGetDeviceBindTargetFail);
-                //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
-                msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
-
-                this.ShowErrorMsg(msg);
-                return null;
-            }
-            var listDevice = new List<CommonDevice>();
-            foreach (var data in result.getAllBindResponseData.BindList)
-            {
-                CommonDevice deviceTemp = Common.LocalDevice.Current.GetDevice(data.BindMacAddr, data.BindEpoint);
-                if (deviceTemp == null)
-                {
-                    continue;
-                }
-                listDevice.Add(deviceTemp);
-            }
-            return listDevice;
-        }
-
-        /// <summary>
-        ///鑾峰彇鎵�鏈夌粦瀹�
-        /// </summary>
-        public BindObj.GetDeviceBindResponseAllData GetDeviceBindAsync(CommonDevice device)
-        {
-            //濡傛灉褰撳墠浣忓畢鏄櫄鎷熶綇瀹�
-            if (Common.Config.Instance.Home.IsVirtually == true)
-            {
-                var listBind = TemplateData.TemplateDeviceDataLogic.Current.GetDeviceBindList(device);
-                return new BindObj.GetDeviceBindResponseAllData()
-                {
-                    getAllBindResponseData = new BindObj.GetDeviceBindResponseData
-                    {
-                        Result = 0,
-                        BindList = listBind
-                    }
-                };
-            }
-
-            var jObject = new JObject { { "DeviceAddr", device.DeviceAddr }, { "Epoint", device.DeviceEpoint }, { "Cluster_ID", 0 }, { "Command", 5007 } };
-            string sendData = jObject.ToString();
-            //鍙戦��
-            var result = HdlDeviceCommonLogic.Current.SendJobjectDataToGateway(device, "Bind/GetDeviceBind", sendData, "Bind/GetDeviceBind_Respon", 6);
-            if (result.ErrorMsg != null || result.ErrorMsgDiv == 0)
-            {
-                return null;
-            }
-            var tempData = Newtonsoft.Json.JsonConvert.DeserializeObject<BindObj.GetDeviceBindResponseData>(result.ReceiptData);
-            return new BindObj.GetDeviceBindResponseAllData() { getAllBindResponseData = tempData };
-        }
-
-        #endregion
-
-        #region 鈻� 鎵ц缁戝畾璁惧鐩爣___________________
-
-        /// <summary>
-        /// 缁戝畾璁惧鐨勭洰鏍�(杩斿洖鎴愬姛璁剧疆鐨勮澶�,閿欒鏃讹紝杩斿洖null)
-        /// </summary>
-        /// <param name="mainDevice">璁惧瀵硅薄</param>
-        /// <param name="listDevice">瑕佺粦瀹氱殑鐩爣璁惧</param>
-        /// <param name="BindCluster">BindCluster</param>
-        /// <returns></returns>
-        public List<CommonDevice> BindDeviceTarget(CommonDevice mainDevice, List<CommonDevice> listDevice, int BindCluster = 6)
-        {
-            if (listDevice.Count == 0)
-            {
-                return new List<CommonDevice>();
-            }
-
-            var dicDevice = new Dictionary<string, CommonDevice>();
-
-            //缁勮鏁版嵁
-            var addData = new IASZone.AddBindData();
-            addData.DeviceAddr = mainDevice.DeviceAddr;
-            addData.Epoint = mainDevice.DeviceEpoint;
-            foreach (var device in listDevice)
-            {
-                var info = new IASZone.AddBindListObj();
-                info.BindCluster = BindCluster;
-                info.BindMacAddr = device.DeviceAddr;
-                info.BindEpoint = device.DeviceEpoint;
-                info.BindType = 0;
-
-                addData.BindList.Add(info);
-
-                //杩斿洖鎴愬姛璁惧鐨勬椂鍊欎娇鐢�
-                string mainkeys = Common.LocalDevice.Current.GetDeviceMainKeys(device);
-                dicDevice[mainkeys] = device;
-            }
-            //鎵ц缁戝畾
-            var result = this.AddDeviceBindAsync(addData);
-            if (result == null || result.addedDeviceBindResponseData == null)
-            {
-                //缁戝畾鐩爣璁剧疆澶辫触
-                string msg = Language.StringByID(R.MyInternationalizationString.uSetBindTargetsFail);
-                //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
-                msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
-
-                this.ShowErrorMsg(msg);
-                return null;
-            }
-
-            var listSuccess = new List<CommonDevice>();
-            foreach (var data in result.addedDeviceBindResponseData.BindList)
-            {
-                string mainkeys = Common.LocalDevice.Current.GetDeviceMainKeys(data.BindMacAddr, data.BindEpoint);
-                if (dicDevice.ContainsKey(mainkeys) == true)
-                {
-                    listSuccess.Add(dicDevice[mainkeys]);
-                }
-            }
-
-            if (listSuccess.Count == 0)
-            {
-                //缁戝畾鐩爣璁剧疆澶辫触
-                string msg = Language.StringByID(R.MyInternationalizationString.uSetBindTargetsFail);
-                this.ShowTipMsg(msg);
-            }
-            return listSuccess;
-        }
-
-        /// <summary>
-        ///璁惧缁戝畾
-        /// </summary>
-        public BindObj.AddedDeviceBindResponseAllData AddDeviceBindAsync(BindObj.AddBindData addBindData)
-        {
-            //濡傛灉褰撳墠浣忓畢鏄櫄鎷熶綇瀹�
-            if (Common.Config.Instance.Home.IsVirtually == true)
-            {
-                return TemplateData.TemplateDeviceDataLogic.Current.AddDeviceBindList(addBindData, null);
-            }
-
-            var device = Common.LocalDevice.Current.GetDevice(addBindData.DeviceAddr, addBindData.Epoint);
-            //鑾峰彇鍙戦�佺殑鍛戒护瀛楃
-            var sendData = this.GetAddDeviceListBindCommandText(addBindData);
-            //鍙戦��
-            var result = HdlDeviceCommonLogic.Current.SendJobjectDataToGateway(device, "Bind/SetBind", sendData, "Bind/SetBind_Respon", 20);
-            if (result.ErrorMsg != null || result.ErrorMsgDiv == 0)
-            {
-                return null;
-            }
-
-            //淇敼缂撳瓨
-            TemplateData.TemplateDeviceDataLogic.Current.AddDeviceBindList(addBindData, result.JsonData[0]);
-            var tempData = Newtonsoft.Json.JsonConvert.DeserializeObject<BindObj.AddedDeviceBindResponseData>(result.ReceiptData);
-            return new BindObj.AddedDeviceBindResponseAllData() { addedDeviceBindResponseData = tempData };
-        }
-
-        /// <summary>
-        /// 鑾峰彇娣诲姞璁惧缁戝畾鐨勫懡浠ゅ瓧绗�
-        /// </summary>
-        /// <param name="addBindData"></param>
-        /// <returns></returns>
-        public string GetAddDeviceListBindCommandText(BindObj.AddBindData addBindData)
-        {
-            var jObject = new JObject { { "DeviceAddr", addBindData.DeviceAddr }, { "Epoint", addBindData.Epoint }, { "Cluster_ID", 0 }, { "Command", 5001 } };
-            var bindList = new JArray { };
-            foreach (var bindInfo in addBindData.BindList)
-            {
-                if (bindInfo.BindType == 0)
-                {
-                    var dInfo = new JObject{{ "BindMacAddr",bindInfo.BindMacAddr},{ "BindEpoint", bindInfo.BindEpoint} ,
-                            { "BindCluster", bindInfo.BindCluster} ,{ "BindType",bindInfo.BindType}};
-                    bindList.Add(dInfo);
-                }
-                else if (bindInfo.BindType == 1)
-                {
-                    var dInfo = new JObject{{ "BindCluster", bindInfo.BindCluster} ,{ "BindType",bindInfo.BindType},
-                            { "BindScenesId", bindInfo.BindScenesId}};
-                    bindList.Add(dInfo);
-                }
-            }
-            var data = new JObject { { "BindName", addBindData.BindName }, { "BindList", bindList } };
-            jObject.Add("Data", data);
-            return jObject.ToString();
-        }
-
-        /// <summary>
-        ///璁惧缁戝畾銆愪竴瀵逛竴 缁戝畾锛屼竴涓寜閿洖璺彧鑳界粦瀹氫竴涓澶囥��
-        /// </summary>
-        public BindObj.AddedDeviceSingleBindResponseAllData AddDeviceSingleBindAsync(BindObj.AddSingleBindData addSingleBindData)
-        {
-            var device = Common.LocalDevice.Current.GetDevice(addSingleBindData.DeviceAddr, addSingleBindData.Epoint);
-            //鑾峰彇鍙戦�佺殑鍛戒护瀛楃
-            var sendData = this.GetAddDeviceListSingleBindCommandText(addSingleBindData);
-            //鍙戦�� 
-            var result = HdlDeviceCommonLogic.Current.SendJobjectDataToGateway(device, "Bind/SetSingleBind", sendData, "Bind/SetSingleBind_Respon", 20);
-            if (result.ErrorMsg != null || result.ErrorMsgDiv == 0)
-            {
-                return null;
-            }
-
-            var tempData = Newtonsoft.Json.JsonConvert.DeserializeObject<BindObj.AddedDeviceSingleBindResponseData>(result.ReceiptData);
-            return new BindObj.AddedDeviceSingleBindResponseAllData() { addedDeviceSingleBindResponseData = tempData };
-        }
-
-        /// <summary>
-        /// 鑾峰彇娣诲姞璁惧缁戝畾鐨勫懡浠ゅ瓧绗�
-        /// </summary>
-        /// <param name="addBindData"></param>
-        /// <returns></returns>
-        public string GetAddDeviceListSingleBindCommandText(BindObj.AddSingleBindData addSingleBindData)
-        {
-            var jObject = new JObject { { "DeviceAddr", addSingleBindData.DeviceAddr }, { "Epoint", addSingleBindData.Epoint }, { "Cluster_ID", 0 }, { "Command", 5020 } };
-            var data = new JObject { };
-            var bindClusterList = new JArray { };
-            foreach (var cluster in addSingleBindData.BindClusterList)
-            {
-                bindClusterList.Add(cluster);
-            }
-            if (addSingleBindData.BindType == 0)
-            {
-                data = new JObject { { "BindName", addSingleBindData.BindName }, { "BindType", addSingleBindData.BindType }, { "BindClusterList", bindClusterList }, { "BindMacAddr", addSingleBindData.BindMacAddr }, { "BindEpoint", addSingleBindData.BindEpoint } };
-            }
-            else if (addSingleBindData.BindType == 1)
-            {
-                data = new JObject { { "BindName", addSingleBindData.BindName }, { "BindType", addSingleBindData.BindType }, { "BindClusterList", bindClusterList }, { "BindScenesId", addSingleBindData.BindScenesId } };
-
-            }
-            jObject.Add("Data", data);
-            return jObject.ToString();
-        }
-
-
-        #endregion
-
-        #region 鈻� 鍒犻櫎璁惧缁戝畾鐨勭洰鏍嘷________________
-
-        /// <summary>
-        /// 鍒犻櫎璁惧缁戝畾鐨勭洰鏍�
-        /// </summary>
-        /// <param name="mainDevice">璁惧瀵硅薄</param>
-        /// <param name="deleteDevice">瑕佸垹闄ょ殑缁戝畾鐩爣璁惧</param>
-        /// <param name="BindCluster">BindCluster</param>
-        /// <returns></returns>
-        public bool DeleteDeviceTarget(CommonDevice mainDevice, CommonDevice deleteDevice, int BindCluster = 6)
-        {
-            //缁勮鏁版嵁
-            var deleteData = new IASZone.DelDeviceBindData();
-            deleteData.DeviceAddr = mainDevice.DeviceAddr;
-            deleteData.Epoint = mainDevice.DeviceEpoint;
-
-            var info = new IASZone.RemoveBindListObj();
-            info.BindCluster = BindCluster;
-            info.BindMacAddr = deleteDevice.DeviceAddr;
-            info.BindEpoint = deleteDevice.DeviceEpoint;
-            info.BindType = 0;
-
-            deleteData.RemoveBindList.Add(info);
-
-            //鎵ц鍒犻櫎
-            var result = this.DelDeviceBindAsync(deleteData);
-            if (result == null || result.delDeviceBindResponseData == null)
-            {
-                //鍒犻櫎缁戝畾鐩爣澶辫触
-                string msg = Language.StringByID(R.MyInternationalizationString.uDeleteBindTargetsFail);
-                //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
-                msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
-
-                this.ShowErrorMsg(msg);
-                return false;
-            }
-
-            foreach (var data in result.delDeviceBindResponseData.RemoveBindList)
-            {
-                //0:鎴愬姛  1:璁惧涓嶅湪缁戝畾鍒楄〃涓� 锛屼篃鍙互浠h〃鎴愬姛
-                if (data.Result == 0 || data.Result == 1 || data.Result == 5)
-                {
-                    return true;
-                }
-                //3:澶辫触锛屽湪绛夊緟鑺傜偣璁惧纭鏄惁瑙i櫎缁戝畾鎴愬姛
-                else if (data.Result == 3)
-                {
-                    //鍏朵粬缁戝畾鐩爣姝e湪鍒犻櫎涓紝璇风◢鍚庡啀璇�
-                    string msg = Language.StringByID(R.MyInternationalizationString.uOtherBindTargetsIsDelettingPleaseWait);
-                    this.ShowErrorMsg(msg);
-                    return false;
-                }
-                //2锛氭湭鐭ワ紝鐢辫妭鐐硅澶囧弽棣堝彂閫佲�淏ind/BindResult鈥濅富棰樻秷鎭‘瀹氭槸鍚︽垚鍔�
-                else if (data.Result == 2)
-                {
-                    if (result.removeBindResultResponseData == null)
-                    {
-                        //鍒犻櫎缁戝畾鐩爣澶辫触
-                        string msg = Language.StringByID(R.MyInternationalizationString.uDeleteBindTargetsFail);
-                        this.ShowErrorMsg(msg);
-                        return false;
-                    }
-                    else
-                    {
-                        //鎴愬姛
-                        if (result.removeBindResultResponseData.Result == 0)
-                        {
-                            return true;
-                        }
-                        //136锛氭帶鍒惰澶囨湰鍦扮粦瀹氬垪琛ㄤ腑鏃犳缁戝畾
-                        else if (result.removeBindResultResponseData.Result == 136)
-                        {
-                            //杩欎釜鍙互褰撳仛鎴愬姛
-                            return true;
-                        }
-                        else
-                        {
-                            //鍒犻櫎缁戝畾鐩爣澶辫触
-                            string msg = Language.StringByID(R.MyInternationalizationString.uDeleteBindTargetsFail);
-                            this.ShowErrorMsg(msg);
-                            return false;
-                        }
-                    }
-                }
-            }
-            return false;
-        }
-
-        /// <summary>
-        /// 鍒犻櫎璁惧缁戝畾鐨勭洰鏍�
-        /// </summary>
-        /// <param name="mainDevice">璁惧瀵硅薄</param>
-        /// <param name="listDeleteDevice">瑕佸垹闄ょ殑缁戝畾鐩爣璁惧</param>
-        /// <param name="BindCluster">BindCluster</param>
-        /// <returns>杩斿洖鐨勬槸鎴愬姛鍒犻櫎鐨勮澶�</returns>
-        public List<CommonDevice> DeleteDeviceTarget(CommonDevice mainDevice, List<CommonDevice> listDeleteDevice, int BindCluster = 6)
-        {
-            //缁勮鏁版嵁
-            var deleteData = new IASZone.DelDeviceBindData();
-            deleteData.DeviceAddr = mainDevice.DeviceAddr;
-            deleteData.Epoint = mainDevice.DeviceEpoint;
-
-            var dicDevice = new Dictionary<string, CommonDevice>();
-            foreach (var device in listDeleteDevice)
-            {
-                var info = new IASZone.RemoveBindListObj();
-                info.BindCluster = BindCluster;
-                info.BindMacAddr = device.DeviceAddr;
-                info.BindEpoint = device.DeviceEpoint;
-                info.BindType = 0;
-
-                deleteData.RemoveBindList.Add(info);
-                //杩斿洖鎴愬姛璁惧鐨勬椂鍊欎娇鐢�
-                string mainkeys = Common.LocalDevice.Current.GetDeviceMainKeys(device);
-                dicDevice[mainkeys] = device;
-            }
-            var listSuccess = new List<CommonDevice>();
-
-            var result = this.DelDeviceBindAsync(deleteData);
-            if (result == null || result.delDeviceBindResponseData == null)
-            {
-                //鍒犻櫎缁戝畾鐩爣澶辫触
-                string msg = Language.StringByID(R.MyInternationalizationString.uDeleteBindTargetsFail);
-                //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
-                msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
-
-                this.ShowErrorMsg(msg);
-                return listSuccess;
-            }
-
-            foreach (var data in result.delDeviceBindResponseData.RemoveBindList)
-            {
-                string mainkeys = Common.LocalDevice.Current.GetDeviceMainKeys(data.BindMacAddr, data.BindEpoint);
-                //0:鎴愬姛  1:璁惧涓嶅湪缁戝畾鍒楄〃涓� 锛屼篃鍙互浠h〃鎴愬姛
-                if (data.Result == 0 || data.Result == 1)
-                {
-                    listSuccess.Add(dicDevice[mainkeys]);
-                }
-                //3:澶辫触锛屽湪绛夊緟鑺傜偣璁惧纭鏄惁瑙i櫎缁戝畾鎴愬姛
-                else if (data.Result == 3)
-                {
-                    //璁惧鍚嶇О 鍏朵粬缁戝畾鐩爣姝e湪鍒犻櫎涓紝璇风◢鍚庡啀璇�
-                    string msg = Common.LocalDevice.Current.GetDeviceEpointName(dicDevice[mainkeys]) + "\r\n";
-                    msg += Language.StringByID(R.MyInternationalizationString.uOtherBindTargetsIsDelettingPleaseWait);
-                    this.ShowErrorMsg(msg);
-                }
-                //2锛氭湭鐭ワ紝鐢辫妭鐐硅澶囧弽棣堝彂閫佲�淏ind/BindResult鈥濅富棰樻秷鎭‘瀹氭槸鍚︽垚鍔�
-                else if (data.Result == 2)
-                {
-                    if (result.removeBindResultResponseData == null)
-                    {
-                        //璁惧鍚嶇О 鍒犻櫎缁戝畾鐩爣澶辫触
-                        string msg = Common.LocalDevice.Current.GetDeviceEpointName(dicDevice[mainkeys]) + "\r\n";
-                        msg += Language.StringByID(R.MyInternationalizationString.uDeleteBindTargetsFail);
-                        this.ShowErrorMsg(msg);
-                    }
-                    else
-                    {
-                        //鎴愬姛
-                        if (result.removeBindResultResponseData.Result == 0)
-                        {
-                            listSuccess.Add(dicDevice[mainkeys]);
-                        }
-                        //136锛氭帶鍒惰澶囨湰鍦扮粦瀹氬垪琛ㄤ腑鏃犳缁戝畾
-                        else if (result.removeBindResultResponseData.Result == 136)
-                        {
-                            //杩欎釜鍙互褰撳仛鎴愬姛
-                            listSuccess.Add(dicDevice[mainkeys]);
-                        }
-                        else
-                        {
-                            //璁惧鍚嶇О 鍒犻櫎缁戝畾鐩爣澶辫触
-                            string msg = Common.LocalDevice.Current.GetDeviceEpointName(dicDevice[mainkeys]) + "\r\n";
-                            msg += Language.StringByID(R.MyInternationalizationString.uDeleteBindTargetsFail);
-                            this.ShowErrorMsg(msg);
-                        }
-                    }
-                }
-            }
-            return listSuccess;
-        }
-
-        /// <summary>
-        /// 鍒犻櫎璁惧鐨勭粦瀹氱洰鏍�
-        /// </summary>
-        /// <param name="delDeviceBindData"></param>
-        /// <returns></returns>
-        public BindObj.DelDeviceBindResponseAllData DelDeviceBindAsync(BindObj.DelDeviceBindData delDeviceBindData)
-        {
-            //濡傛灉褰撳墠浣忓畢鏄櫄鎷熶綇瀹�
-            if (Common.Config.Instance.Home.IsVirtually == true)
-            {
-                return TemplateData.TemplateDeviceDataLogic.Current.DeleteDeviceBindList(delDeviceBindData);
-            }
-            var device = Common.LocalDevice.Current.GetDevice(delDeviceBindData.DeviceAddr, delDeviceBindData.Epoint);
-            //鑾峰彇闇�瑕佸彂閫佺殑鏁版嵁
-            var sendData = this.GetDeleteDeviceBindCommandText(delDeviceBindData);
-            //鍙戦�佸懡浠�
-            var result = this.SendDeleteBindJobjectDataToGateway(device, "Bind/RemoveBind",
-                sendData, new List<string>() { "Bind/RemoveBind_Respon", "Bind/RemoveBindResult" }, 6);
-
-            if (result.ErrorMsg != null || result.ErrorMsgDiv == 0)
-            {
-                return null;
-            }
-            var responseData = new BindObj.DelDeviceBindResponseAllData();
-            if (result.listReceiptData[0] != null)
-            {
-                var tempData1 = Newtonsoft.Json.JsonConvert.DeserializeObject<BindObj.DelDeviceBindResponseData>(result.listReceiptData[0]);
-                responseData.delDeviceBindResponseData = tempData1;
-            }
-
-            if (result.listReceiptData[1] != null)
-            {
-                var tempData2 = Newtonsoft.Json.JsonConvert.DeserializeObject<BindObj.RemoveBindResultResponseData>(result.listReceiptData[1]);
-                responseData.removeBindResultResponseData = tempData2;
-            }
-
-            //淇敼缂撳瓨
-            TemplateData.TemplateDeviceDataLogic.Current.DeleteDeviceBindList(delDeviceBindData);
-
-            return responseData;
-        }
-
-        /// <summary>
-        ///鍒犻櫎涓�涓帶鍒惰澶囨墍鏈夌粦瀹氫俊鎭�
-        /// </summary>
-        public BindObj.ClearBindInfoResponseAllData ClearBindInfoAsync(CommonDevice device)
-        {
-            //濡傛灉褰撳墠浣忓畢鏄櫄鎷熶綇瀹�
-            if (Common.Config.Instance.Home.IsVirtually == true)
-            {
-                return TemplateData.TemplateDeviceDataLogic.Current.ClearDeviceAllBind(device);
-            }
-
-            var jObject = new JObject { { "DeviceAddr", device.DeviceAddr }, { "Epoint", device.DeviceEpoint }, { "Cluster_ID", 0 }, { "Command", 5006 } };
-            var sendData = jObject.ToString();
-            var result = HdlDeviceCommonLogic.Current.SendJobjectDataToGateway(device, "Bind/ClearBindInfo", sendData, "Bind/ClearBindInfo_Respon", 25);
-            if (result.ErrorMsg != null || result.ErrorMsgDiv == 0)
-            {
-                return null;
-            }
-
-            //淇敼缂撳瓨
-            TemplateData.TemplateDeviceDataLogic.Current.ClearDeviceAllBind(device);
-
-            var tempData = Newtonsoft.Json.JsonConvert.DeserializeObject<BindObj.ClearBindInfoResponseData>(result.ReceiptData);
-            return new BindObj.ClearBindInfoResponseAllData { clearBindInfoResponseData = tempData };
-        }
-
-
-        /// <summary>
-        /// 鑾峰彇鍒犻櫎璁惧缁戝畾鍒楄〃鐨勫懡浠ゅ瓧绗�
-        /// </summary>
-        /// <param name="delDeviceBindData"></param>
-        /// <returns></returns>
-        public string GetDeleteDeviceBindCommandText(BindObj.DelDeviceBindData delDeviceBindData)
-        {
-            var jObject = new JObject { { "DeviceAddr", delDeviceBindData.DeviceAddr }, { "Epoint", delDeviceBindData.Epoint }, { "Cluster_ID", 0 }, { "Command", 5003 } };
-            var removeBindList = new JArray { };
-            foreach (var removeBindInfo in delDeviceBindData.RemoveBindList)
-            {
-                //鍒犻櫎璁惧
-                if (removeBindInfo.BindType == 0)
-                {
-                    var dInfo = new JObject{{ "BindMacAddr",removeBindInfo.BindMacAddr},{ "BindEpoint", removeBindInfo.BindEpoint} ,
-                         { "BindCluster", removeBindInfo.BindCluster} ,{ "BindType",removeBindInfo.BindType}};
-                    removeBindList.Add(dInfo);
-                }
-                //鍒犻櫎鍦烘櫙
-                else if (removeBindInfo.BindType == 1)
-                {
-                    var dInfo = new JObject{{ "BindCluster", removeBindInfo.BindCluster} ,{ "BindType",removeBindInfo.BindType},
-                         { "BindScenesId", removeBindInfo.BindScenesId}};
-                    removeBindList.Add(dInfo);
-                }
-            }
-            var data = new JObject { { "RemoveBindList", removeBindList } };
-            jObject.Add("Data", data);
-
-            return jObject.ToString();
-        }
-
-        /// <summary>
-        /// 鍙戦�佸垹闄ょ粦瀹氱殑鏁版嵁鍒扮綉鍏筹紝骞舵帴鍙楃綉鍏宠繑鍥炵殑鏁版嵁,listReceiptData涓鸿繑鍥炲��(鍒犻櫎缁戝畾鐨勬帴鍙e緢鐗规畩,闇�瑕佺嫭绔嬪嚭鏉�)
-        /// </summary>
-        /// <param name="device">璁惧瀵硅薄</param>
-        /// <param name="sendTopic">鍙戦�佺殑涓婚</param>
-        /// <param name="sendData">闇�瑕佸彂閫佺殑鏁版嵁  JObject.ToString()鐨勪笢瑗�</param>
-        /// <param name="listReceiptTopic">鎸囧畾鎺ユ敹鍝簺涓婚</param>
-        /// <param name="waitTime">瓒呮椂鏃堕棿(绉�)</param>
-        /// <returns>缃戝叧杩斿洖鐨勬暟鎹�</returns>
-        private ReceiptGatewayResult SendDeleteBindJobjectDataToGateway(CommonDevice device, string sendTopic, string sendData, List<string> listReceiptTopic, int waitTime = 3)
-        {
-            var reResult = new ReceiptGatewayResult();
-            reResult.listReceiptData = new string[listReceiptTopic.Count];
-            var myGateway = device.Gateway;
-            if (myGateway == null)
-            {
-                //鑾峰彇缃戝叧瀵硅薄澶辫触
-                reResult.ErrorMsg = Language.StringByID(R.MyInternationalizationString.uGetGatewayTagartFail);
-                reResult.ErrorMsgDiv = -1;
-                return reResult;
-            }
-            //缃戝叧ID
-            string gatewayID = device.Gateway.GwId;
-            //閿欒涓婚
-            string errorTopic = gatewayID + "/" + "Error_Respon";
-            //妫�娴嬪璞$殑涓婚
-            for (int i = 0; i < listReceiptTopic.Count; i++)
-            {
-                listReceiptTopic[i] = gatewayID + "/" + listReceiptTopic[i];
-            }
-
-            bool canbreak = false;
-            BindObj.DelDeviceBindResponseData delDeviceBindData = null;
-            BindObj.RemoveBindResultResponseData removeBindResult = null;
-
-            Action<string, string> receiptAction = (topic, message) =>
-            {
-                var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
-
-                //缃戝叧鍥炲閿欒
-                if (topic == errorTopic)
-                {
-                    var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString());
-                    reResult.ErrorMsg = HdlCheckLogic.Current.CheckCommonErrorCode(temp.Error);
-                }
-                //濡傛灉鏄寚瀹氱殑涓婚
-                for (int i = 0; i < listReceiptTopic.Count; i++)
-                {
-                    if (topic == listReceiptTopic[i])
-                    {
-                        string deviceMac = jobject["DeviceAddr"].ToString();
-                        int deviceEpoint = Convert.ToInt32(jobject["Epoint"].ToString());
-                        if (device.DeviceAddr != deviceMac)
-                        {
-                            //涓嶆槸鍚屼竴涓笢瑗縈ac
-                            return;
-                        }
-                        if (device.DeviceEpoint != deviceEpoint && deviceEpoint != 200)
-                        {
-                            //涓嶆槸鍚屼竴涓笢瑗�,杩欓噷搴旇闇�瑕佺壒娈婂鐞�200绔偣
-                            return;
-                        }
-                        reResult.listReceiptData[i] = jobject["Data"].ToString();
-
-                        if (i == 0)
-                        {
-                            //"Bind/RemoveBind_Respon"涓婚
-                            delDeviceBindData = Newtonsoft.Json.JsonConvert.DeserializeObject<BindObj.DelDeviceBindResponseData>(reResult.listReceiptData[i]);
-                        }
-                        else if (i == 1)
-                        {
-                            //"Bind/RemoveBindResult"涓婚
-                            removeBindResult = Newtonsoft.Json.JsonConvert.DeserializeObject<BindObj.RemoveBindResultResponseData>(reResult.listReceiptData[i]);
-                        }
-
-                        if (0 < delDeviceBindData.RemoveBindList.FindAll((obj) => obj.BindType == 0 && obj.Result == 1).Count)
-                        {
-                            canbreak = true;
-                        }
-                        else if (0 < delDeviceBindData.RemoveBindList.FindAll((obj) => obj.BindType == 0 && obj.Result == 3).Count)
-                        {
-                            if (removeBindResult != null)
-                            {
-                                canbreak = true;
-                            }
-                        }
-                        else if (0 < delDeviceBindData.RemoveBindList.FindAll((obj) => obj.BindType == 0 && obj.Result == 2).Count)
-                        {
-                            if (removeBindResult != null)
-                            {
-                                canbreak = true;
-                            }
-                        }
-                        else
-                        {
-                            canbreak = true;
-                        }
-                    }
-                }
-
-            };
-            myGateway.Actions += receiptAction;
-            //鍙戦�佹暟鎹�
-            myGateway.Send(sendTopic, sendData);
-
-            //瓒呮椂鏃堕棿
-            int TimeOut = 0;
-            waitTime = 20 * waitTime;
-            while (canbreak == false && TimeOut < waitTime)
-            {
-                //鍏ㄩ儴鎺ユ敹鎵嶉��鍑�
-                System.Threading.Thread.Sleep(50);
-                TimeOut++;
-            }
-            myGateway.Actions -= receiptAction;
-            receiptAction = null;
-            if (canbreak == false)
-            {
-                //瓒呮椂
-                reResult.ErrorMsgDiv = 0;
-            }
-            else
-            {
-                //姝e父鎺ユ敹鍒扮綉鍏宠繑鍥炵殑鏁版嵁
-                if (reResult.listReceiptData.Length == 1)
-                {
-                    //濡傛灉鍙湁涓�涓富棰�,鍒欐浛鎹㈠彉閲�
-                    reResult.ReceiptData = reResult.listReceiptData[0];
-                    reResult.listReceiptData = null;
-                }
-            }
-
-            return reResult;
-        }
-
-
-        #endregion
-
-        #region 鈻� 閰嶇疆闈㈡澘鍔熻兘_______________________
-
-        ///<summary >
-        ///閰嶇疆闈㈡澘鍔熻兘
-        ///<para>value:缁欓潰鏉块厤缃殑妯″紡</para>
-        /// </summary>
-        public CommonDevice.SetWritableValueResponAllData ConfigureHdlKeyValueAsync(CommonDevice device, Panel.KeyMode value, int clusterID = 6)
-        {
-            //濡傛灉褰撳墠浣忓畢鏄櫄鎷熶綇瀹�
-            if (Common.Config.Instance.Home.IsVirtually == true)
-            {
-                return TemplateData.TemplateDeviceDataLogic.Current.ConfigurePanelKeyModel(device, value, clusterID, null);
-            }
-            //鑾峰彇鍙戦�佹暟鎹�
-            var sendData = this.GetConfigureHdlKeyCommandText(device.DeviceAddr, device.DeviceEpoint, value, clusterID);
-            var result = HdlDeviceCommonLogic.Current.SendJobjectDataToGateway(device, "SetWritableValue", sendData, "SetWritableValue_Respon");
-            if (result.ErrorMsg != null || result.ErrorMsgDiv == 0)
-            {
-                return null;
-            }
-
-            //淇敼缂撳瓨
-            TemplateData.TemplateDeviceDataLogic.Current.ConfigurePanelKeyModel(device, value, clusterID, result.JsonData[0]);
-
-            var tempData = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.SetWritableValueResponData>(result.ReceiptData);
-            return new CommonDevice.SetWritableValueResponAllData { setWritableValueResponData = tempData };
-        }
-
+        public static HdlDeviceBindLogic Current
+        {
+            get
+            {
+                if (m_Current == null)
+                {
+                    m_Current = new HdlDeviceBindLogic();
+                }
+                return m_Current;
+            }
+        }
+
+        #endregion
+
+        #region 鈻� 鑾峰彇璁惧涓嬮潰缁戝畾鐨勮澶嘷____________
+
+        /// <summary>
+        /// 鑾峰彇璁惧涓嬮潰缁戝畾鐨勮澶�(閿欒鏃惰繑鍥瀗ull),杩欎釜鏄粰pir浼犳劅鍣ㄧ敤鐨�
+        /// </summary>
+        /// <param name="mainDevice">璁惧瀵硅薄</param>
+        /// <returns></returns>
+        public List<CommonDevice> GetBindTargetDevice(CommonDevice mainDevice)
+        {
+            var result = this.GetDeviceBindAsync(mainDevice);
+            if (result == null || result.getAllBindResponseData == null)
+            {
+                //鑾峰彇璁惧鐨勭粦瀹氱洰鏍囧け璐�
+                string msg = Language.StringByID(R.MyInternationalizationString.uGetDeviceBindTargetFail);
+                //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
+                msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
+
+                this.ShowErrorMsg(msg);
+                return null;
+            }
+            var listDevice = new List<CommonDevice>();
+            foreach (var data in result.getAllBindResponseData.BindList)
+            {
+                CommonDevice deviceTemp = Common.LocalDevice.Current.GetDevice(data.BindMacAddr, data.BindEpoint);
+                if (deviceTemp == null)
+                {
+                    continue;
+                }
+                listDevice.Add(deviceTemp);
+            }
+            return listDevice;
+        }
+
+        /// <summary>
+        ///鑾峰彇鎵�鏈夌粦瀹�
+        /// </summary>
+        public BindObj.GetDeviceBindResponseAllData GetDeviceBindAsync(CommonDevice device)
+        {
+            //濡傛灉褰撳墠浣忓畢鏄櫄鎷熶綇瀹�
+            if (Common.Config.Instance.Home.IsVirtually == true)
+            {
+                var listBind = TemplateData.TemplateDeviceDataLogic.Current.GetDeviceBindList(device);
+                return new BindObj.GetDeviceBindResponseAllData()
+                {
+                    getAllBindResponseData = new BindObj.GetDeviceBindResponseData
+                    {
+                        Result = 0,
+                        BindList = listBind
+                    }
+                };
+            }
+
+            var jObject = new JObject { { "DeviceAddr", device.DeviceAddr }, { "Epoint", device.DeviceEpoint }, { "Cluster_ID", 0 }, { "Command", 5007 } };
+            string sendData = jObject.ToString();
+            //鍙戦��
+            var result = HdlDeviceCommonLogic.Current.SendJobjectDataToGateway(device, "Bind/GetDeviceBind", sendData, "Bind/GetDeviceBind_Respon", 6);
+            if (result.ErrorMsg != null || result.ErrorMsgDiv == 0)
+            {
+                return null;
+            }
+            var tempData = Newtonsoft.Json.JsonConvert.DeserializeObject<BindObj.GetDeviceBindResponseData>(result.ReceiptData);
+            return new BindObj.GetDeviceBindResponseAllData() { getAllBindResponseData = tempData };
+        }
+
+        #endregion
+
+        #region 鈻� 鎵ц缁戝畾璁惧鐩爣___________________
+
+        /// <summary>
+        /// 缁戝畾璁惧鐨勭洰鏍�(杩斿洖鎴愬姛璁剧疆鐨勮澶�,閿欒鏃讹紝杩斿洖null)
+        /// </summary>
+        /// <param name="mainDevice">璁惧瀵硅薄</param>
+        /// <param name="listDevice">瑕佺粦瀹氱殑鐩爣璁惧</param>
+        /// <param name="BindCluster">BindCluster</param>
+        /// <returns></returns>
+        public List<CommonDevice> BindDeviceTarget(CommonDevice mainDevice, List<CommonDevice> listDevice, int BindCluster = 6)
+        {
+            if (listDevice.Count == 0)
+            {
+                return new List<CommonDevice>();
+            }
+
+            var dicDevice = new Dictionary<string, CommonDevice>();
+
+            //缁勮鏁版嵁
+            var addData = new IASZone.AddBindData();
+            addData.DeviceAddr = mainDevice.DeviceAddr;
+            addData.Epoint = mainDevice.DeviceEpoint;
+            foreach (var device in listDevice)
+            {
+                var info = new IASZone.AddBindListObj();
+                info.BindCluster = BindCluster;
+                info.BindMacAddr = device.DeviceAddr;
+                info.BindEpoint = device.DeviceEpoint;
+                info.BindType = 0;
+
+                addData.BindList.Add(info);
+
+                //杩斿洖鎴愬姛璁惧鐨勬椂鍊欎娇鐢�
+                string mainkeys = Common.LocalDevice.Current.GetDeviceMainKeys(device);
+                dicDevice[mainkeys] = device;
+            }
+            //鎵ц缁戝畾
+            var result = this.AddDeviceBindAsync(addData);
+            if (result == null || result.addedDeviceBindResponseData == null)
+            {
+                //缁戝畾鐩爣璁剧疆澶辫触
+                string msg = Language.StringByID(R.MyInternationalizationString.uSetBindTargetsFail);
+                //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
+                msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
+
+                this.ShowErrorMsg(msg);
+                return null;
+            }
+
+            var listSuccess = new List<CommonDevice>();
+            foreach (var data in result.addedDeviceBindResponseData.BindList)
+            {
+                string mainkeys = Common.LocalDevice.Current.GetDeviceMainKeys(data.BindMacAddr, data.BindEpoint);
+                if (dicDevice.ContainsKey(mainkeys) == true)
+                {
+                    listSuccess.Add(dicDevice[mainkeys]);
+                }
+            }
+
+            if (listSuccess.Count == 0)
+            {
+                //缁戝畾鐩爣璁剧疆澶辫触
+                string msg = Language.StringByID(R.MyInternationalizationString.uSetBindTargetsFail);
+                this.ShowTipMsg(msg);
+            }
+            return listSuccess;
+        }
+
+        /// <summary>
+        ///璁惧缁戝畾
+        /// </summary>
+        public BindObj.AddedDeviceBindResponseAllData AddDeviceBindAsync(BindObj.AddBindData addBindData)
+        {
+            //濡傛灉褰撳墠浣忓畢鏄櫄鎷熶綇瀹�
+            if (Common.Config.Instance.Home.IsVirtually == true)
+            {
+                return TemplateData.TemplateDeviceDataLogic.Current.AddDeviceBindList(addBindData, null);
+            }
+
+            var device = Common.LocalDevice.Current.GetDevice(addBindData.DeviceAddr, addBindData.Epoint);
+            //鑾峰彇鍙戦�佺殑鍛戒护瀛楃
+            var sendData = this.GetAddDeviceListBindCommandText(addBindData);
+            //鍙戦��
+            var result = HdlDeviceCommonLogic.Current.SendJobjectDataToGateway(device, "Bind/SetBind", sendData, "Bind/SetBind_Respon", 20);
+            if (result.ErrorMsg != null || result.ErrorMsgDiv == 0)
+            {
+                return null;
+            }
+
+            //淇敼缂撳瓨
+            TemplateData.TemplateDeviceDataLogic.Current.AddDeviceBindList(addBindData, result.JsonData[0]);
+            var tempData = Newtonsoft.Json.JsonConvert.DeserializeObject<BindObj.AddedDeviceBindResponseData>(result.ReceiptData);
+            return new BindObj.AddedDeviceBindResponseAllData() { addedDeviceBindResponseData = tempData };
+        }
+
+        /// <summary>
+        /// 鑾峰彇娣诲姞璁惧缁戝畾鐨勫懡浠ゅ瓧绗�
+        /// </summary>
+        /// <param name="addBindData"></param>
+        /// <returns></returns>
+        public string GetAddDeviceListBindCommandText(BindObj.AddBindData addBindData)
+        {
+            var jObject = new JObject { { "DeviceAddr", addBindData.DeviceAddr }, { "Epoint", addBindData.Epoint }, { "Cluster_ID", 0 }, { "Command", 5001 } };
+            var bindList = new JArray { };
+            foreach (var bindInfo in addBindData.BindList)
+            {
+                if (bindInfo.BindType == 0)
+                {
+                    var dInfo = new JObject{{ "BindMacAddr",bindInfo.BindMacAddr},{ "BindEpoint", bindInfo.BindEpoint} ,
+                            { "BindCluster", bindInfo.BindCluster} ,{ "BindType",bindInfo.BindType}};
+                    bindList.Add(dInfo);
+                }
+                else if (bindInfo.BindType == 1)
+                {
+                    var dInfo = new JObject{{ "BindCluster", bindInfo.BindCluster} ,{ "BindType",bindInfo.BindType},
+                            { "BindScenesId", bindInfo.BindScenesId}};
+                    bindList.Add(dInfo);
+                }
+            }
+            var data = new JObject { { "BindName", addBindData.BindName }, { "BindList", bindList } };
+            jObject.Add("Data", data);
+            return jObject.ToString();
+        }
+
+        /// <summary>
+        ///璁惧缁戝畾銆愪竴瀵逛竴 缁戝畾锛屼竴涓寜閿洖璺彧鑳界粦瀹氫竴涓澶囥��
+        /// </summary>
+        public BindObj.AddedDeviceSingleBindResponseAllData AddDeviceSingleBindAsync(BindObj.AddSingleBindData addSingleBindData)
+        {
+            var device = Common.LocalDevice.Current.GetDevice(addSingleBindData.DeviceAddr, addSingleBindData.Epoint);
+            //鑾峰彇鍙戦�佺殑鍛戒护瀛楃
+            var sendData = this.GetAddDeviceListSingleBindCommandText(addSingleBindData);
+            //鍙戦�� 
+            var result = HdlDeviceCommonLogic.Current.SendJobjectDataToGateway(device, "Bind/SetSingleBind", sendData, "Bind/SetSingleBind_Respon", 20);
+            if (result.ErrorMsg != null || result.ErrorMsgDiv == 0)
+            {
+                return null;
+            }
+
+            var tempData = Newtonsoft.Json.JsonConvert.DeserializeObject<BindObj.AddedDeviceSingleBindResponseData>(result.ReceiptData);
+            return new BindObj.AddedDeviceSingleBindResponseAllData() { addedDeviceSingleBindResponseData = tempData };
+        }
+
+        /// <summary>
+        /// 鑾峰彇娣诲姞璁惧缁戝畾鐨勫懡浠ゅ瓧绗�
+        /// </summary>
+        /// <param name="addBindData"></param>
+        /// <returns></returns>
+        public string GetAddDeviceListSingleBindCommandText(BindObj.AddSingleBindData addSingleBindData)
+        {
+            var jObject = new JObject { { "DeviceAddr", addSingleBindData.DeviceAddr }, { "Epoint", addSingleBindData.Epoint }, { "Cluster_ID", 0 }, { "Command", 5020 } };
+            var data = new JObject { };
+            var bindClusterList = new JArray { };
+            foreach (var cluster in addSingleBindData.BindClusterList)
+            {
+                bindClusterList.Add(cluster);
+            }
+            if (addSingleBindData.BindType == 0)
+            {
+                data = new JObject { { "BindName", addSingleBindData.BindName }, { "BindType", addSingleBindData.BindType }, { "BindClusterList", bindClusterList }, { "BindMacAddr", addSingleBindData.BindMacAddr }, { "BindEpoint", addSingleBindData.BindEpoint } };
+            }
+            else if (addSingleBindData.BindType == 1)
+            {
+                data = new JObject { { "BindName", addSingleBindData.BindName }, { "BindType", addSingleBindData.BindType }, { "BindClusterList", bindClusterList }, { "BindScenesId", addSingleBindData.BindScenesId } };
+
+            }
+            jObject.Add("Data", data);
+            return jObject.ToString();
+        }
+
+
+        #endregion
+
+        #region 鈻� 鍒犻櫎璁惧缁戝畾鐨勭洰鏍嘷________________
+
+        /// <summary>
+        /// 鍒犻櫎璁惧缁戝畾鐨勭洰鏍�
+        /// </summary>
+        /// <param name="mainDevice">璁惧瀵硅薄</param>
+        /// <param name="deleteDevice">瑕佸垹闄ょ殑缁戝畾鐩爣璁惧</param>
+        /// <param name="BindCluster">BindCluster</param>
+        /// <returns></returns>
+        public bool DeleteDeviceTarget(CommonDevice mainDevice, CommonDevice deleteDevice, int BindCluster = 6)
+        {
+            //缁勮鏁版嵁
+            var deleteData = new IASZone.DelDeviceBindData();
+            deleteData.DeviceAddr = mainDevice.DeviceAddr;
+            deleteData.Epoint = mainDevice.DeviceEpoint;
+
+            var info = new IASZone.RemoveBindListObj();
+            info.BindCluster = BindCluster;
+            info.BindMacAddr = deleteDevice.DeviceAddr;
+            info.BindEpoint = deleteDevice.DeviceEpoint;
+            info.BindType = 0;
+
+            deleteData.RemoveBindList.Add(info);
+
+            //鎵ц鍒犻櫎
+            var result = this.DelDeviceBindAsync(deleteData);
+            if (result == null || result.delDeviceBindResponseData == null)
+            {
+                //鍒犻櫎缁戝畾鐩爣澶辫触
+                string msg = Language.StringByID(R.MyInternationalizationString.uDeleteBindTargetsFail);
+                //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
+                msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
+
+                this.ShowErrorMsg(msg);
+                return false;
+            }
+
+            foreach (var data in result.delDeviceBindResponseData.RemoveBindList)
+            {
+                //0:鎴愬姛  1:璁惧涓嶅湪缁戝畾鍒楄〃涓� 锛屼篃鍙互浠h〃鎴愬姛
+                if (data.Result == 0 || data.Result == 1 || data.Result == 5)
+                {
+                    return true;
+                }
+                //3:澶辫触锛屽湪绛夊緟鑺傜偣璁惧纭鏄惁瑙i櫎缁戝畾鎴愬姛
+                else if (data.Result == 3)
+                {
+                    //鍏朵粬缁戝畾鐩爣姝e湪鍒犻櫎涓紝璇风◢鍚庡啀璇�
+                    string msg = Language.StringByID(R.MyInternationalizationString.uOtherBindTargetsIsDelettingPleaseWait);
+                    this.ShowErrorMsg(msg);
+                    return false;
+                }
+                //2锛氭湭鐭ワ紝鐢辫妭鐐硅澶囧弽棣堝彂閫佲�淏ind/BindResult鈥濅富棰樻秷鎭‘瀹氭槸鍚︽垚鍔�
+                else if (data.Result == 2)
+                {
+                    if (result.removeBindResultResponseData == null)
+                    {
+                        //鍒犻櫎缁戝畾鐩爣澶辫触
+                        string msg = Language.StringByID(R.MyInternationalizationString.uDeleteBindTargetsFail);
+                        this.ShowErrorMsg(msg);
+                        return false;
+                    }
+                    else
+                    {
+                        //鎴愬姛
+                        if (result.removeBindResultResponseData.Result == 0)
+                        {
+                            return true;
+                        }
+                        //136锛氭帶鍒惰澶囨湰鍦扮粦瀹氬垪琛ㄤ腑鏃犳缁戝畾
+                        else if (result.removeBindResultResponseData.Result == 136)
+                        {
+                            //杩欎釜鍙互褰撳仛鎴愬姛
+                            return true;
+                        }
+                        else
+                        {
+                            //鍒犻櫎缁戝畾鐩爣澶辫触
+                            string msg = Language.StringByID(R.MyInternationalizationString.uDeleteBindTargetsFail);
+                            this.ShowErrorMsg(msg);
+                            return false;
+                        }
+                    }
+                }
+            }
+            return false;
+        }
+
+        /// <summary>
+        /// 鍒犻櫎璁惧缁戝畾鐨勭洰鏍�
+        /// </summary>
+        /// <param name="mainDevice">璁惧瀵硅薄</param>
+        /// <param name="listDeleteDevice">瑕佸垹闄ょ殑缁戝畾鐩爣璁惧</param>
+        /// <param name="BindCluster">BindCluster</param>
+        /// <returns>杩斿洖鐨勬槸鎴愬姛鍒犻櫎鐨勮澶�</returns>
+        public List<CommonDevice> DeleteDeviceTarget(CommonDevice mainDevice, List<CommonDevice> listDeleteDevice, int BindCluster = 6)
+        {
+            //缁勮鏁版嵁
+            var deleteData = new IASZone.DelDeviceBindData();
+            deleteData.DeviceAddr = mainDevice.DeviceAddr;
+            deleteData.Epoint = mainDevice.DeviceEpoint;
+
+            var dicDevice = new Dictionary<string, CommonDevice>();
+            foreach (var device in listDeleteDevice)
+            {
+                var info = new IASZone.RemoveBindListObj();
+                info.BindCluster = BindCluster;
+                info.BindMacAddr = device.DeviceAddr;
+                info.BindEpoint = device.DeviceEpoint;
+                info.BindType = 0;
+
+                deleteData.RemoveBindList.Add(info);
+                //杩斿洖鎴愬姛璁惧鐨勬椂鍊欎娇鐢�
+                string mainkeys = Common.LocalDevice.Current.GetDeviceMainKeys(device);
+                dicDevice[mainkeys] = device;
+            }
+            var listSuccess = new List<CommonDevice>();
+
+            var result = this.DelDeviceBindAsync(deleteData);
+            if (result == null || result.delDeviceBindResponseData == null)
+            {
+                //鍒犻櫎缁戝畾鐩爣澶辫触
+                string msg = Language.StringByID(R.MyInternationalizationString.uDeleteBindTargetsFail);
+                //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
+                msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
+
+                this.ShowErrorMsg(msg);
+                return listSuccess;
+            }
+
+            foreach (var data in result.delDeviceBindResponseData.RemoveBindList)
+            {
+                string mainkeys = Common.LocalDevice.Current.GetDeviceMainKeys(data.BindMacAddr, data.BindEpoint);
+                //0:鎴愬姛  1:璁惧涓嶅湪缁戝畾鍒楄〃涓� 锛屼篃鍙互浠h〃鎴愬姛
+                if (data.Result == 0 || data.Result == 1)
+                {
+                    listSuccess.Add(dicDevice[mainkeys]);
+                }
+                //3:澶辫触锛屽湪绛夊緟鑺傜偣璁惧纭鏄惁瑙i櫎缁戝畾鎴愬姛
+                else if (data.Result == 3)
+                {
+                    //璁惧鍚嶇О 鍏朵粬缁戝畾鐩爣姝e湪鍒犻櫎涓紝璇风◢鍚庡啀璇�
+                    string msg = Common.LocalDevice.Current.GetDeviceEpointName(dicDevice[mainkeys]) + "\r\n";
+                    msg += Language.StringByID(R.MyInternationalizationString.uOtherBindTargetsIsDelettingPleaseWait);
+                    this.ShowErrorMsg(msg);
+                }
+                //2锛氭湭鐭ワ紝鐢辫妭鐐硅澶囧弽棣堝彂閫佲�淏ind/BindResult鈥濅富棰樻秷鎭‘瀹氭槸鍚︽垚鍔�
+                else if (data.Result == 2)
+                {
+                    if (result.removeBindResultResponseData == null)
+                    {
+                        //璁惧鍚嶇О 鍒犻櫎缁戝畾鐩爣澶辫触
+                        string msg = Common.LocalDevice.Current.GetDeviceEpointName(dicDevice[mainkeys]) + "\r\n";
+                        msg += Language.StringByID(R.MyInternationalizationString.uDeleteBindTargetsFail);
+                        this.ShowErrorMsg(msg);
+                    }
+                    else
+                    {
+                        //鎴愬姛
+                        if (result.removeBindResultResponseData.Result == 0)
+                        {
+                            listSuccess.Add(dicDevice[mainkeys]);
+                        }
+                        //136锛氭帶鍒惰澶囨湰鍦扮粦瀹氬垪琛ㄤ腑鏃犳缁戝畾
+                        else if (result.removeBindResultResponseData.Result == 136)
+                        {
+                            //杩欎釜鍙互褰撳仛鎴愬姛
+                            listSuccess.Add(dicDevice[mainkeys]);
+                        }
+                        else
+                        {
+                            //璁惧鍚嶇О 鍒犻櫎缁戝畾鐩爣澶辫触
+                            string msg = Common.LocalDevice.Current.GetDeviceEpointName(dicDevice[mainkeys]) + "\r\n";
+                            msg += Language.StringByID(R.MyInternationalizationString.uDeleteBindTargetsFail);
+                            this.ShowErrorMsg(msg);
+                        }
+                    }
+                }
+            }
+            return listSuccess;
+        }
+
+        /// <summary>
+        /// 鍒犻櫎璁惧鐨勭粦瀹氱洰鏍�
+        /// </summary>
+        /// <param name="delDeviceBindData"></param>
+        /// <returns></returns>
+        public BindObj.DelDeviceBindResponseAllData DelDeviceBindAsync(BindObj.DelDeviceBindData delDeviceBindData)
+        {
+            //濡傛灉褰撳墠浣忓畢鏄櫄鎷熶綇瀹�
+            if (Common.Config.Instance.Home.IsVirtually == true)
+            {
+                return TemplateData.TemplateDeviceDataLogic.Current.DeleteDeviceBindList(delDeviceBindData);
+            }
+            var device = Common.LocalDevice.Current.GetDevice(delDeviceBindData.DeviceAddr, delDeviceBindData.Epoint);
+            //鑾峰彇闇�瑕佸彂閫佺殑鏁版嵁
+            var sendData = this.GetDeleteDeviceBindCommandText(delDeviceBindData);
+            //鍙戦�佸懡浠�
+            var result = this.SendDeleteBindJobjectDataToGateway(device, "Bind/RemoveBind",
+                sendData, new List<string>() { "Bind/RemoveBind_Respon", "Bind/RemoveBindResult" }, 6);
+
+            if (result.ErrorMsg != null || result.ErrorMsgDiv == 0)
+            {
+                return null;
+            }
+            var responseData = new BindObj.DelDeviceBindResponseAllData();
+            if (result.listReceiptData[0] != null)
+            {
+                var tempData1 = Newtonsoft.Json.JsonConvert.DeserializeObject<BindObj.DelDeviceBindResponseData>(result.listReceiptData[0]);
+                responseData.delDeviceBindResponseData = tempData1;
+            }
+
+            if (result.listReceiptData[1] != null)
+            {
+                var tempData2 = Newtonsoft.Json.JsonConvert.DeserializeObject<BindObj.RemoveBindResultResponseData>(result.listReceiptData[1]);
+                responseData.removeBindResultResponseData = tempData2;
+            }
+
+            //淇敼缂撳瓨
+            TemplateData.TemplateDeviceDataLogic.Current.DeleteDeviceBindList(delDeviceBindData);
+
+            return responseData;
+        }
+
+        /// <summary>
+        ///鍒犻櫎涓�涓帶鍒惰澶囨墍鏈夌粦瀹氫俊鎭�
+        /// </summary>
+        public BindObj.ClearBindInfoResponseAllData ClearBindInfoAsync(CommonDevice device)
+        {
+            //濡傛灉褰撳墠浣忓畢鏄櫄鎷熶綇瀹�
+            if (Common.Config.Instance.Home.IsVirtually == true)
+            {
+                return TemplateData.TemplateDeviceDataLogic.Current.ClearDeviceAllBind(device);
+            }
+
+            var jObject = new JObject { { "DeviceAddr", device.DeviceAddr }, { "Epoint", device.DeviceEpoint }, { "Cluster_ID", 0 }, { "Command", 5006 } };
+            var sendData = jObject.ToString();
+            var result = HdlDeviceCommonLogic.Current.SendJobjectDataToGateway(device, "Bind/ClearBindInfo", sendData, "Bind/ClearBindInfo_Respon", 25);
+            if (result.ErrorMsg != null || result.ErrorMsgDiv == 0)
+            {
+                return null;
+            }
+
+            //淇敼缂撳瓨
+            TemplateData.TemplateDeviceDataLogic.Current.ClearDeviceAllBind(device);
+
+            var tempData = Newtonsoft.Json.JsonConvert.DeserializeObject<BindObj.ClearBindInfoResponseData>(result.ReceiptData);
+            return new BindObj.ClearBindInfoResponseAllData { clearBindInfoResponseData = tempData };
+        }
+
+
+        /// <summary>
+        /// 鑾峰彇鍒犻櫎璁惧缁戝畾鍒楄〃鐨勫懡浠ゅ瓧绗�
+        /// </summary>
+        /// <param name="delDeviceBindData"></param>
+        /// <returns></returns>
+        public string GetDeleteDeviceBindCommandText(BindObj.DelDeviceBindData delDeviceBindData)
+        {
+            var jObject = new JObject { { "DeviceAddr", delDeviceBindData.DeviceAddr }, { "Epoint", delDeviceBindData.Epoint }, { "Cluster_ID", 0 }, { "Command", 5003 } };
+            var removeBindList = new JArray { };
+            foreach (var removeBindInfo in delDeviceBindData.RemoveBindList)
+            {
+                //鍒犻櫎璁惧
+                if (removeBindInfo.BindType == 0)
+                {
+                    var dInfo = new JObject{{ "BindMacAddr",removeBindInfo.BindMacAddr},{ "BindEpoint", removeBindInfo.BindEpoint} ,
+                         { "BindCluster", removeBindInfo.BindCluster} ,{ "BindType",removeBindInfo.BindType}};
+                    removeBindList.Add(dInfo);
+                }
+                //鍒犻櫎鍦烘櫙
+                else if (removeBindInfo.BindType == 1)
+                {
+                    var dInfo = new JObject{{ "BindCluster", removeBindInfo.BindCluster} ,{ "BindType",removeBindInfo.BindType},
+                         { "BindScenesId", removeBindInfo.BindScenesId}};
+                    removeBindList.Add(dInfo);
+                }
+            }
+            var data = new JObject { { "RemoveBindList", removeBindList } };
+            jObject.Add("Data", data);
+
+            return jObject.ToString();
+        }
+
+        /// <summary>
+        /// 鍙戦�佸垹闄ょ粦瀹氱殑鏁版嵁鍒扮綉鍏筹紝骞舵帴鍙楃綉鍏宠繑鍥炵殑鏁版嵁,listReceiptData涓鸿繑鍥炲��(鍒犻櫎缁戝畾鐨勬帴鍙e緢鐗规畩,闇�瑕佺嫭绔嬪嚭鏉�)
+        /// </summary>
+        /// <param name="device">璁惧瀵硅薄</param>
+        /// <param name="sendTopic">鍙戦�佺殑涓婚</param>
+        /// <param name="sendData">闇�瑕佸彂閫佺殑鏁版嵁  JObject.ToString()鐨勪笢瑗�</param>
+        /// <param name="listReceiptTopic">鎸囧畾鎺ユ敹鍝簺涓婚</param>
+        /// <param name="waitTime">瓒呮椂鏃堕棿(绉�)</param>
+        /// <returns>缃戝叧杩斿洖鐨勬暟鎹�</returns>
+        private ReceiptGatewayResult SendDeleteBindJobjectDataToGateway(CommonDevice device, string sendTopic, string sendData, List<string> listReceiptTopic, int waitTime = 3)
+        {
+            var reResult = new ReceiptGatewayResult();
+            reResult.listReceiptData = new string[listReceiptTopic.Count];
+            var myGateway = device.Gateway;
+            if (myGateway == null)
+            {
+                //鑾峰彇缃戝叧瀵硅薄澶辫触
+                reResult.ErrorMsg = Language.StringByID(R.MyInternationalizationString.uGetGatewayTagartFail);
+                reResult.ErrorMsgDiv = -1;
+                return reResult;
+            }
+            //缃戝叧ID
+            string gatewayID = device.Gateway.GwId;
+            //閿欒涓婚
+            string errorTopic = gatewayID + "/" + "Error_Respon";
+            //妫�娴嬪璞$殑涓婚
+            for (int i = 0; i < listReceiptTopic.Count; i++)
+            {
+                listReceiptTopic[i] = gatewayID + "/" + listReceiptTopic[i];
+            }
+
+            bool canbreak = false;
+            BindObj.DelDeviceBindResponseData delDeviceBindData = null;
+            BindObj.RemoveBindResultResponseData removeBindResult = null;
+
+            Action<string, string> receiptAction = (topic, message) =>
+            {
+                var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
+
+                //缃戝叧鍥炲閿欒
+                if (topic == errorTopic)
+                {
+                    var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString());
+                    reResult.ErrorMsg = HdlCheckLogic.Current.CheckCommonErrorCode(temp.Error);
+                }
+                //濡傛灉鏄寚瀹氱殑涓婚
+                for (int i = 0; i < listReceiptTopic.Count; i++)
+                {
+                    if (topic == listReceiptTopic[i])
+                    {
+                        string deviceMac = jobject["DeviceAddr"].ToString();
+                        int deviceEpoint = Convert.ToInt32(jobject["Epoint"].ToString());
+                        if (device.DeviceAddr != deviceMac)
+                        {
+                            //涓嶆槸鍚屼竴涓笢瑗縈ac
+                            return;
+                        }
+                        if (device.DeviceEpoint != deviceEpoint && deviceEpoint != 200)
+                        {
+                            //涓嶆槸鍚屼竴涓笢瑗�,杩欓噷搴旇闇�瑕佺壒娈婂鐞�200绔偣
+                            return;
+                        }
+                        reResult.listReceiptData[i] = jobject["Data"].ToString();
+
+                        if (i == 0)
+                        {
+                            //"Bind/RemoveBind_Respon"涓婚
+                            delDeviceBindData = Newtonsoft.Json.JsonConvert.DeserializeObject<BindObj.DelDeviceBindResponseData>(reResult.listReceiptData[i]);
+                        }
+                        else if (i == 1)
+                        {
+                            //"Bind/RemoveBindResult"涓婚
+                            removeBindResult = Newtonsoft.Json.JsonConvert.DeserializeObject<BindObj.RemoveBindResultResponseData>(reResult.listReceiptData[i]);
+                        }
+
+                        if (0 < delDeviceBindData.RemoveBindList.FindAll((obj) => obj.BindType == 0 && obj.Result == 1).Count)
+                        {
+                            canbreak = true;
+                        }
+                        else if (0 < delDeviceBindData.RemoveBindList.FindAll((obj) => obj.BindType == 0 && obj.Result == 3).Count)
+                        {
+                            if (removeBindResult != null)
+                            {
+                                canbreak = true;
+                            }
+                        }
+                        else if (0 < delDeviceBindData.RemoveBindList.FindAll((obj) => obj.BindType == 0 && obj.Result == 2).Count)
+                        {
+                            if (removeBindResult != null)
+                            {
+                                canbreak = true;
+                            }
+                        }
+                        else
+                        {
+                            canbreak = true;
+                        }
+                    }
+                }
+
+            };
+            myGateway.Actions += receiptAction;
+            //鍙戦�佹暟鎹�
+            myGateway.Send(sendTopic, sendData);
+
+            //瓒呮椂鏃堕棿
+            int TimeOut = 0;
+            waitTime = 20 * waitTime;
+            while (canbreak == false && TimeOut < waitTime)
+            {
+                //鍏ㄩ儴鎺ユ敹鎵嶉��鍑�
+                System.Threading.Thread.Sleep(50);
+                TimeOut++;
+            }
+            myGateway.Actions -= receiptAction;
+            receiptAction = null;
+            if (canbreak == false)
+            {
+                //瓒呮椂
+                reResult.ErrorMsgDiv = 0;
+            }
+            else
+            {
+                //姝e父鎺ユ敹鍒扮綉鍏宠繑鍥炵殑鏁版嵁
+                if (reResult.listReceiptData.Length == 1)
+                {
+                    //濡傛灉鍙湁涓�涓富棰�,鍒欐浛鎹㈠彉閲�
+                    reResult.ReceiptData = reResult.listReceiptData[0];
+                    reResult.listReceiptData = null;
+                }
+            }
+
+            return reResult;
+        }
+
+
+        #endregion
+
+        #region 鈻� 閰嶇疆闈㈡澘鍔熻兘_______________________
+
+        ///<summary >
+        ///閰嶇疆闈㈡澘鍔熻兘
+        ///<para>value:缁欓潰鏉块厤缃殑妯″紡</para>
+        /// </summary>
+        public CommonDevice.SetWritableValueResponAllData ConfigureHdlKeyValueAsync(CommonDevice device, Panel.KeyMode value, int clusterID = 6)
+        {
+            //濡傛灉褰撳墠浣忓畢鏄櫄鎷熶綇瀹�
+            if (Common.Config.Instance.Home.IsVirtually == true)
+            {
+                return TemplateData.TemplateDeviceDataLogic.Current.ConfigurePanelKeyModel(device, value, clusterID, null);
+            }
+            //鑾峰彇鍙戦�佹暟鎹�
+            var sendData = this.GetConfigureHdlKeyCommandText(device.DeviceAddr, device.DeviceEpoint, value, clusterID);
+            var result = HdlDeviceCommonLogic.Current.SendJobjectDataToGateway(device, "SetWritableValue", sendData, "SetWritableValue_Respon");
+            if (result.ErrorMsg != null || result.ErrorMsgDiv == 0)
+            {
+                return null;
+            }
+
+            //淇敼缂撳瓨
+            TemplateData.TemplateDeviceDataLogic.Current.ConfigurePanelKeyModel(device, value, clusterID, result.JsonData[0]);
+
+            var tempData = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.SetWritableValueResponData>(result.ReceiptData);
+            return new CommonDevice.SetWritableValueResponAllData { setWritableValueResponData = tempData };
+        }
+
         /// <summary>
         /// 璇诲彇闈㈡澘鐨勯厤缃俊鎭�
         /// </summary>
-        public Panel.PanelConfigureInfoResponAllData ReadPanelConfigureInfoAsync(CommonDevice device)
-        {
-            //濡傛灉褰撳墠浣忓畢鏄櫄鎷熶綇瀹�
-            if (Common.Config.Instance.Home.IsVirtually == true || Common.Config.Instance.Home.IsShowTemplate == true)
-            {
-                return TemplateData.TemplateDeviceDataLogic.Current.ReadPanelConfigureKeyModel(device);
-            }
-
-            var JObject = new JObject {{ "DeviceAddr",device.DeviceAddr },{ "Epoint", device.DeviceEpoint },
-                { "Cluster_ID", (int)Cluster_ID.HdlKey },{ "Command", 108 }};
-            var attriBute = new JArray { new JObject { { "AttriButeId", (int)AttriButeId.HdlKey } } };
-            var data = new JObject { { "AttriBute", attriBute } };
-            JObject.Add("Data", data);
-
-            //鍙戦�佹暟鎹�
-            var sendData = JObject.ToString();
-            string receiptTopic = "DeviceStatusReport/" + device.DeviceAddr + "/" + device.DeviceEpoint + "/" + (int)Cluster_ID.HdlKey + "/" + (int)AttriButeId.HdlKey;
-            var result = HdlDeviceCommonLogic.Current.SendJobjectDataToGateway(device, "GetDeviceStatus", sendData, receiptTopic);
-            if (result.ErrorMsg != null || result.ErrorMsgDiv == 0)
-            {
-                return null;
-            }
-
-            var tempData = Newtonsoft.Json.JsonConvert.DeserializeObject<Panel.DeviceStatusReportData>(result.ReceiptData);
-            return new Panel.PanelConfigureInfoResponAllData { deviceStatusReportData = tempData };
-        }
-
-        /// <summary>
-        /// 鑾峰彇閰嶇疆闈㈡澘鍔熻兘鐨勫懡浠ゅ瓧绗�
-        /// </summary>
+        public Panel.PanelConfigureInfoResponAllData ReadPanelConfigureInfoAsync(CommonDevice device)
+        {
+            //濡傛灉褰撳墠浣忓畢鏄櫄鎷熶綇瀹�
+            if (Common.Config.Instance.Home.IsVirtually == true || Common.Config.Instance.Home.IsShowTemplate == true)
+            {
+                return TemplateData.TemplateDeviceDataLogic.Current.ReadPanelConfigureKeyModel(device);
+            }
+
+            var JObject = new JObject {{ "DeviceAddr",device.DeviceAddr },{ "Epoint", device.DeviceEpoint },
+                { "Cluster_ID", (int)Cluster_ID.HdlKey },{ "Command", 108 }};
+            var attriBute = new JArray { new JObject { { "AttriButeId", (int)AttriButeId.HdlKey } } };
+            var data = new JObject { { "AttriBute", attriBute } };
+            JObject.Add("Data", data);
+
+            //鍙戦�佹暟鎹�
+            var sendData = JObject.ToString();
+            string receiptTopic = "DeviceStatusReport/" + device.DeviceAddr + "/" + device.DeviceEpoint + "/" + (int)Cluster_ID.HdlKey + "/" + (int)AttriButeId.HdlKey;
+            var result = HdlDeviceCommonLogic.Current.SendJobjectDataToGateway(device, "GetDeviceStatus", sendData, receiptTopic);
+            if (result.ErrorMsg != null || result.ErrorMsgDiv == 0)
+            {
+                return null;
+            }
+
+            var tempData = Newtonsoft.Json.JsonConvert.DeserializeObject<Panel.DeviceStatusReportData>(result.ReceiptData);
+            return new Panel.PanelConfigureInfoResponAllData { deviceStatusReportData = tempData };
+        }
+
+        /// <summary>
+        /// 鑾峰彇閰嶇疆闈㈡澘鍔熻兘鐨勫懡浠ゅ瓧绗�
+        /// </summary>
         /// <param name="device">璁惧瀵硅薄</param>
         /// <param name="value">閿��</param>
         /// <param name="clusterID">闀濱D</param>
-        /// <returns></returns>
+        /// <returns></returns>
         public string GetConfigureHdlKeyCommandText(string DeviceAddr, int DeviceEpoint, Panel.KeyMode value, int clusterID = 6)
-        {
+        {
             var jObject = new JObject { { "DeviceAddr", DeviceAddr }, { "Epoint", DeviceEpoint }, { "Cluster_ID", clusterID }, { "Command", 120 } };
             var data = new JObject { { "Undivided", 0 }, { "AttributeId", 6533 }, { "AttributeDataType", 33 }, { "AttributeData", (int)value } };
             jObject.Add("Data", data);
             return jObject.ToString();
-        }
-
-        #endregion
-
-        #region 鈻� 涓�鑸柟娉昣__________________________
-
-        /// <summary>
-        /// 鏄剧ず閿欒淇℃伅绐楀彛
-        /// </summary>
-        /// <param name="msg"></param>
-        private void ShowErrorMsg(string msg)
-        {
-            Application.RunOnMainThread(() =>
-            {
-                var contr = new ShowMsgControl(ShowMsgType.Error, msg);
-                contr.Show();
-            });
-        }
-
-        /// <summary>
-        /// 鏄剧ずTip淇℃伅绐楀彛
-        /// </summary>
-        /// <param name="msg"></param>
-        private void ShowTipMsg(string msg)
-        {
-            Application.RunOnMainThread(() =>
-            {
-                var contr = new UserCenter.ShowMsgControl(ShowMsgType.Tip, msg);
-                contr.Show();
-            });
-        }
-
-        #endregion
-    }
-}
+        }
+
+        #endregion
+
+        #region 鈻� 涓�鑸柟娉昣__________________________
+
+        /// <summary>
+        /// 鏄剧ず閿欒淇℃伅绐楀彛
+        /// </summary>
+        /// <param name="msg"></param>
+        private void ShowErrorMsg(string msg)
+        {
+            Application.RunOnMainThread(() =>
+            {
+                var contr = new ShowMsgControl(ShowMsgType.Error, msg);
+                contr.Show();
+            });
+        }
+
+        /// <summary>
+        /// 鏄剧ずTip淇℃伅绐楀彛
+        /// </summary>
+        /// <param name="msg"></param>
+        private void ShowTipMsg(string msg)
+        {
+            Application.RunOnMainThread(() =>
+            {
+                var contr = new UserCenter.ShowMsgControl(ShowMsgType.Tip, msg);
+                contr.Show();
+            });
+        }
+
+        #endregion
+    }
+}

--
Gitblit v1.8.0