From 94e4e5b9fd3da964c44b7b14227d6fe2bbb426d7 Mon Sep 17 00:00:00 2001
From: WJC <wjc@hdlchina.com.cn>
Date: 星期四, 02 四月 2020 13:56:39 +0800
Subject: [PATCH] 2020-04-02-2

---
 ZigbeeApp/Shared/Common/Device.cs |  345 ++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 264 insertions(+), 81 deletions(-)

diff --git a/ZigbeeApp/Shared/Common/Device.cs b/ZigbeeApp/Shared/Common/Device.cs
index 699f038..c59d1e3 100755
--- a/ZigbeeApp/Shared/Common/Device.cs
+++ b/ZigbeeApp/Shared/Common/Device.cs
@@ -45,12 +45,14 @@
             {
                 lock (dicAllDevice)
                 {
-                    var list = new List<CommonDevice>();
-                    foreach (var device in dicAllDevice.Values)
+                    //鍏堣幏鍙栧叏閮ㄧ殑Mac
+                    var listMac = new List<string>();
+                    foreach (var strMac in this.dicDeviceEpoint.Keys)
                     {
-                        list.Add(device);
+                        listMac.Add(strMac);
                     }
-                    return list;
+                    //鏍规嵁MAC鍦板潃,鑾峰彇鍏ㄩ儴鍥炶矾鐨勮澶囧璞�(寮哄埗鎺掑簭)
+                    return this.GetDevicesByMac(listMac);
                 }
             }
         }
@@ -241,7 +243,16 @@
 
             //鑾峰彇杩欎釜缃戝叧鐨勬湰鍦版墍鏈夎澶�
             string gwID = HdlGatewayLogic.Current.GetGatewayId(zbGateway);
-            List<CommonDevice> listLocalDevices = this.GetDeviceByGatewayID(gwID, true);
+            List<CommonDevice> listLocalDevices = this.GetDeviceByGatewayID(gwID);
+            //鑾峰彇ota璁惧
+            foreach (var ota in this.dicOTADevice.Values)
+            {
+                if (ota.CurrentGateWayId == gwID)
+                {
+                    listLocalDevices.Add(ota);
+                }
+            }
+
             Dictionary<string, CommonDevice> dicExist = new Dictionary<string, CommonDevice>();
             foreach (var device in listLocalDevices)
             {
@@ -464,9 +475,28 @@
                 //澶囦唤鏁版嵁
                 await HdlGatewayLogic.Current.UpLoadDeviceBackupDataToGateway(device, GatewayBackupEnum.AMac鍚嶇О, newMacName);
                 //濡傛灉瀹冨彧鏈変竴涓洖璺�,鍒欐洿鏀圭鐐瑰悕瀛�
-                if (this.dicDeviceEpoint.ContainsKey(device.DeviceAddr) == true && this.dicDeviceEpoint[device.DeviceAddr].Count == 1)
+                if (this.dicDeviceEpoint.ContainsKey(device.DeviceAddr) == true)
                 {
-                    return await this.ReName(device, newMacName);
+                    //鍙湁涓�涓鐐�
+                    if (this.dicDeviceEpoint[device.DeviceAddr].Count == 1)
+                    {
+                        return await this.ReName(device, newMacName);
+                    }
+                    //濡傛灉瀹冩湁涓や釜绔偣鏃�,pir浼犳劅鍣ㄧ壒娈婂鐞�
+                    else if (this.dicDeviceEpoint[device.DeviceAddr].Count == 2)
+                    {
+                        var myType = this.GetMyDeviceEnumInfo(listDevice);
+                        if (myType.ConcreteType == DeviceConcreteType.Sensor_Pir)
+                        {
+                            foreach (var myDevice in listDevice)
+                            {
+                                if (myDevice.Type == DeviceType.IASZone)
+                                {
+                                    return await this.ReName(myDevice, newMacName);
+                                }
+                            }
+                        }
+                    }
                 }
             }
             return true;
@@ -555,12 +585,12 @@
         /// <param name="deleteRoom">鏄惁浠庢埧闂村垹闄�</param>
         public void DeleteMemmoryDevice(CommonDevice device, bool deleteRoom = true)
         {
-            if (deleteRoom == true && Room.CurrentRoom != null)
+            if (deleteRoom == true && HdlRoomLogic.Current.CurrentRoom != null)
             {
                 //浠庢埧闂翠腑鍒犻櫎
-                Room.CurrentRoom.DeleteDevice(device);
+                HdlRoomLogic.Current.DeleteDevice(device);
                 //鍒犻櫎鎴戠殑鍠滅埍鐨勮澶�
-                Room.CurrentRoom.DeleteLoveDevice(device);
+                HdlRoomLogic.Current.DeleteLoveDevice(device);
             }
 
             //鍒犻櫎缂撳瓨
@@ -702,36 +732,23 @@
         /// <summary>
         /// 鏍规嵁缃戝叧ID鑾峰彇鎵�鏈夌殑璁惧
         /// </summary>
-        /// <param name="gwId">缃戝叧ID</param>
-        /// <param name="getOtaDevice">鏄惁鑾峰彇ota璁惧</param>
+        /// <param name="gwId">缃戝叧ID</param>>
         /// <returns></returns>
-        public List<CommonDevice> GetDeviceByGatewayID(string gwId, bool getOtaDevice = false)
+        public List<CommonDevice> GetDeviceByGatewayID(string gwId)
         {
-            List<CommonDevice> list = new List<CommonDevice>();
             lock (dicAllDevice)
             {
-                //鍚勭綉鍏崇殑鎵�鏈夎澶�
+                var listMac = new List<string>();
+                //鍚勭綉鍏崇殑鎵�鏈夎澶囩殑Mac
                 foreach (CommonDevice device in this.dicAllDevice.Values)
                 {
                     if (gwId == device.CurrentGateWayId)
                     {
-                        list.Add(device);
+                        listMac.Add(device.DeviceAddr);
                     }
                 }
-                if (getOtaDevice == true)
-                {
-                    //鑾峰彇ota璁惧
-                    foreach (var ota in this.dicOTADevice.Values)
-                    {
-                        if (ota.CurrentGateWayId == gwId)
-                        {
-                            list.Add(ota);
-                        }
-                    }
-                }
+                return this.GetDevicesByMac(listMac);
             }
-
-            return list;
         }
 
         /// <summary>
@@ -798,6 +815,39 @@
                 }
                 return -1;
             });
+            return list;
+        }
+
+        /// <summary>
+        /// 鏍规嵁MAC鍦板潃,鑾峰彇鍏ㄩ儴鍥炶矾鐨勮澶囧璞�(寮哄埗鎺掑簭)
+        /// </summary>
+        /// <param name="DeviceAddr">Mac鍦板潃</param>
+        /// <returns></returns>
+        public List<CommonDevice> GetDevicesByMac(List<string> listMacAddr)
+        {
+            //鍏堟帓搴�
+            listMacAddr.Sort();
+
+            var list = new List<CommonDevice>();
+            foreach (string strMac in listMacAddr)
+            {
+                var listEpoint = new List<int>();
+                //鑾峰彇鍏ㄩ儴鐨勭鐐�
+                foreach (int epoint in this.dicDeviceEpoint[strMac])
+                {
+                    listEpoint.Add(epoint);
+                }
+                //鐒跺悗鎺掑簭
+                listEpoint.Sort();
+                foreach (int epoint in listEpoint)
+                {
+                    var device = this.GetDevice(strMac, epoint);
+                    if (device != null)
+                    {
+                        list.Add(device);
+                    }
+                }
+            }
             return list;
         }
 
@@ -1103,9 +1153,41 @@
 
             //鑾峰彇璁惧銆愬浘鏍囥��
             this.GetDeviceIcon(device, ref unSelectFilePath, ref selectFilePath);
+            if (btnIcon.UnSelectedImagePath != unSelectFilePath)
+            {
+                btnIcon.UnSelectedImagePath = unSelectFilePath;
+            }
+            if (btnIcon.SelectedImagePath != selectFilePath)
+            {
+                btnIcon.SelectedImagePath = selectFilePath;
+            }
+        }
 
-            btnIcon.UnSelectedImagePath = unSelectFilePath;
-            btnIcon.SelectedImagePath = selectFilePath;
+        /// <summary>
+        /// 璁剧疆璁惧銆愬浘鏍囥�戝埌鎸囧畾鐨勬帶浠�(娉ㄦ剰,姝ゅ嚱鏁拌缃殑閫夋嫨鐘舵�佺殑鍥剧墖鏄櫧鑹茬殑)
+        /// </summary>
+        /// <param name="btnIcon">鎺т欢瀵硅薄</param>
+        /// <param name="device">璁惧瀵硅薄</param>
+        /// <returns></returns>
+        public void SetDeviceIconToControl2(Button btnIcon, CommonDevice device)
+        {
+            if (device == null)
+            {
+                btnIcon.UnSelectedImagePath = "Device/ThirdPartyDevice.png";
+                return;
+            }
+            string unSelectFilePath = device.IconPath;
+            string selectFilePath = unSelectFilePath.Replace(".png", "Selected2.png");
+
+            //鑾峰彇璁惧銆愬浘鏍囥��
+            if (btnIcon.UnSelectedImagePath != unSelectFilePath)
+            {
+                btnIcon.UnSelectedImagePath = unSelectFilePath;
+            }
+            if (btnIcon.SelectedImagePath != selectFilePath)
+            {
+                btnIcon.SelectedImagePath = selectFilePath;
+            }
         }
 
         /// <summary>
@@ -1266,43 +1348,6 @@
 
         #endregion
 
-        #region 鈻� 璁惧UI鐩稿叧_________________________
-
-        /// <summary>
-        /// 鑾峰彇璁惧鎵�鍖归厤鐨勮澶嘦I瀵硅薄
-        /// </summary>
-        /// <param name="device"></param>
-        /// <returns></returns>
-        public DeviceUI GetDeviceUI(CommonDevice device)
-        {
-            //鍒涘缓涓�涓柊鐨勪笢瑗跨粰杩囧幓
-            var deviceUi = new DeviceUI();
-            deviceUi.DeviceAddr = device.DeviceAddr;
-            deviceUi.DeviceEpoint = device.DeviceEpoint;
-            return deviceUi;
-        }
-
-        /// <summary>
-        /// 鑾峰彇璁惧鎵�鍖归厤鐨勮澶嘦I瀵硅薄
-        /// </summary>
-        /// <param name="filePath"></param>
-        /// <returns></returns>
-        public DeviceUI GetDeviceUI(string filePath)
-        {
-            string[] arry = filePath.Split(new string[] { "_" }, StringSplitOptions.RemoveEmptyEntries);
-            if (arry.Length != 4)
-            {
-                return null;
-            }
-            //鍒涘缓涓�涓柊鐨勪笢瑗跨粰杩囧幓
-            var deviceUi = new DeviceUI();
-            deviceUi.DeviceAddr = arry[2];
-            deviceUi.DeviceEpoint = Convert.ToInt32(arry[3]);
-            return deviceUi;
-        }
-
-        #endregion
-
         #region 鈻� 鑾峰彇鑷畾涔夌殑璁惧绫诲瀷_______________
 
         /// <summary>
@@ -1329,7 +1374,11 @@
                 return info;
             }
             //鑾峰彇绗笁鏂硅澶囩殑銆愯澶囩被鍨嬨��
-            return this.GetNotHdlMyDeviceEnumInfo(listdevice);
+            info = this.GetNotHdlMyDeviceEnumInfo(listdevice);
+            //杩欓噷鍐嶆鍒ゆ柇鏄惁鏄渤涓滆澶�,鏈夊彲鑳藉畠鐨勬ā鍧桰D鍐欓敊浜�
+            info.IsHdlDevice = this.IsHdlDevice(checkDevice);
+
+            return info;
         }
 
         /// <summary>
@@ -1394,6 +1443,9 @@
                 return null;
             }
             string modelKeys = device.ModelIdentifier;
+            //浜ゆ崲涓�涓嬫ā鍧桰D(楹︿箰鍏嬮偅杈圭殑浼犳劅鍣�)
+            this.ChangedDeviceModeId(ref modelKeys);
+
             if (this.dicDeviceModelIdEnum.ContainsKey(modelKeys) == false)
             {
                 //娌℃湁鍖归厤鍒版ā鍧桰D锛屽垯鐩存帴璧扮涓夋柟璁惧鐨勫垽鏂�
@@ -1774,7 +1826,7 @@
                     //鍗曠函鍙槸Ota璁惧鍒欎笉澶勭悊
                     return;
                 }
-                Common.Room.CurrentRoom.ChangedRoom(listDevice[0], roomId, false);
+                HdlRoomLogic.Current.ChangedRoom(listDevice[0], roomId, false);
             }
         }
 
@@ -1790,7 +1842,7 @@
                 //鏈垎閰嶅尯鍩�
                 return Language.StringByID(R.MyInternationalizationString.uDeviceNotAssignedRoom);
             }
-            var room = Room.CurrentRoom.GetRoomById(this.dicDeviceRoomId[device.DeviceAddr]);
+            var room = HdlRoomLogic.Current.GetRoomById(this.dicDeviceRoomId[device.DeviceAddr]);
             if (room != null)
             {
                 return room.Name;
@@ -1810,7 +1862,81 @@
             {
                 return null;
             }
-            return Room.CurrentRoom.GetRoomById(this.dicDeviceRoomId[device.DeviceAddr]);
+            return HdlRoomLogic.Current.GetRoomById(this.dicDeviceRoomId[device.DeviceAddr]);
+        }
+
+        #endregion
+
+        #region 鈻� 璁惧鎺掑簭___________________________
+
+        /// <summary>
+        /// 璁惧鎺掑簭
+        /// </summary>
+        /// <param name="i_listDevice">璇风‘淇濊繖涓笢瑗垮凡缁忔寜mac鍜岀鐐规帓搴忎簡</param>
+        /// <returns></returns>
+        public List<CommonDevice> SortDeviceByBelongType(List<CommonDevice> i_listDevice)
+        {
+            //鑾峰彇鎺掑簭瑙勫垯
+            var listRule = this.GetBelongTypeSortRule();
+            var dicDevice = new Dictionary<DeviceBeloneType, List<CommonDevice>>();
+            dicDevice[DeviceBeloneType.A鏈煡璁惧] = new List<CommonDevice>();
+
+            foreach (var device in i_listDevice)
+            {
+                //鑾峰彇鎵�灞炵被鍨�
+                var typeInfo = this.GetDeviceBelongEnumInfo(device);
+                if (listRule.Contains(typeInfo.BeloneType) == false)
+                {
+                    //涓嶅湪鎺掑簭鑼冨洿鍐�,閮戒涪鍦ㄦ渶鍚庨潰
+                    dicDevice[DeviceBeloneType.A鏈煡璁惧].Add(device);
+                    continue;
+                }
+                if (dicDevice.ContainsKey(typeInfo.BeloneType) == false)
+                {
+                    dicDevice[typeInfo.BeloneType] = new List<CommonDevice>();
+                }
+                dicDevice[typeInfo.BeloneType].Add(device);
+            }
+
+            var listSort = new List<CommonDevice>();
+            foreach (var myType in listRule)
+            {
+                //鏍规嵁瑙勫垯椤哄簭,娣诲姞璁惧
+                if (dicDevice.ContainsKey(myType) == false || dicDevice[myType].Count == 0)
+                {
+                    continue;
+                }
+                listSort.AddRange(dicDevice[myType]);
+            }
+
+            return listSort;
+        }
+
+        /// <summary>
+        /// 鑾峰彇璁惧鎵�灞炵被鍨嬬殑鐨勬帓搴忚鍒�
+        /// </summary>
+        /// <returns></returns>
+        public HashSet<DeviceBeloneType> GetBelongTypeSortRule()
+        {
+            //璋佸湪鍓嶉潰,璋佸氨浼樺厛鏄剧ず
+            var list = new HashSet<DeviceBeloneType>();
+            list.Add(DeviceBeloneType.A鐏厜);
+            list.Add(DeviceBeloneType.A褰╃伅);
+            list.Add(DeviceBeloneType.A寮�鍏�);
+            list.Add(DeviceBeloneType.A鎻掑骇);
+            list.Add(DeviceBeloneType.A璋冨厜鍣�);
+            list.Add(DeviceBeloneType.A绐楀笜);
+            list.Add(DeviceBeloneType.A绌鸿皟);
+            list.Add(DeviceBeloneType.A缁х數鍣�);
+            list.Add(DeviceBeloneType.A骞叉帴鐐�);
+            list.Add(DeviceBeloneType.A鏅鸿兘闂ㄩ攣);
+            list.Add(DeviceBeloneType.A鏅鸿兘绌哄紑);
+            list.Add(DeviceBeloneType.A浼犳劅鍣�);
+
+            //鍏朵粬鐨勭湅鐫�鍔炲憲,閮芥槸鎺掑湪鍚庨潰鐨�,閮藉綊涓鸿繖涓睘鎬�
+            list.Add(DeviceBeloneType.A鏈煡璁惧);
+            
+            return list;
         }
 
         #endregion
@@ -1834,7 +1960,7 @@
         /// <returns></returns>
         public string GetDeviceMainKeys(CommonDevice device)
         {
-            return device.DeviceAddr + device.DeviceEpoint;
+            return this.GetDeviceMainKeys(device.DeviceAddr, device.DeviceEpoint);
         }
 
         /// <summary>
@@ -1845,7 +1971,7 @@
         /// <returns></returns>
         public string GetDeviceMainKeys(string DeviceAddr, int DeviceEpoint)
         {
-            return DeviceAddr + DeviceEpoint;
+            return DeviceAddr + "_" + DeviceEpoint;
         }
 
         /// <summary>
@@ -2064,6 +2190,8 @@
                     statu = 2;
                 }
             }
+
+            statu = 1;
             return listDevice;
         }
 
@@ -2254,9 +2382,10 @@
             //*********************************************************************
             //鏂拌澶囨坊鍔犳柟娉曪細
             //1銆佸湪杩欓噷濉啓涓婃ā鍧桰D锛岀劧鍚庢槸 DeviceConcreteType 锛岀劧鍚庢槸 DeviceBeloneType
-            //2銆佺劧鍚庡湪鏈�涓嬮潰娣诲姞銆愯澶囩殑鍏蜂綋绫诲瀷銆戯紝銆愯澶囩殑鎵�灞炵被鍨嬨��
-            //3銆佸凡璁惧鐨勫叿浣撶被鍨嬩负鍚嶅瓧(鍘绘帀銆�-銆�)娣诲姞璁惧鐨勩�愭墍灞炲浘鐗囥�戯紝銆愮湡瀹炵墿鐞嗗浘鐗囥�戙�傚洖璺浘鐗囬渶瑕佺壒娈婂鐞�
-            //4銆佹坊鍔燫鏂囦欢,娣诲姞Language鏂囦欢
+            //2銆佺劧鍚庡湪鏈�涓嬮潰鐨勩�愯嚜瀹氫箟璁惧绫诲瀷銆戞姌鍙犳爮閲屾坊鍔犮�愯澶囩殑鍏蜂綋绫诲瀷銆戯紝銆愯澶囩殑鎵�灞炵被鍨嬨��
+            //3銆佷互璁惧鐨勫叿浣撶被鍨嬩负鍚嶅瓧(鍘绘帀銆�-銆�)娣诲姞璁惧鐨勩�愭墍灞炲浘鐗囥�戯紝銆愮湡瀹炵墿鐞嗗浘鐗囥�戙�傚洖璺浘鐗囬渶瑕佺壒娈婂鐞�
+            //4銆佹坊鍔燫鏂囦欢(uDeviceModelId),娣诲姞Language鏂囦欢
+            //5銆佸鏋滈渶瑕佸叡鏈夊浘鐗�,鍒欏湪杩欎釜鍑芥暟鐨勬渶搴曚笅娣诲姞
             //*********************************************************************
 
             //=========鈽呪槄寮�鍚堝笜绫�(100-199)鈽呪槄=========
@@ -2272,6 +2401,14 @@
             this.dicDeviceModelIdEnum["MPT4R4L/S-ZB.18"] = "220-200";//绠�绾�4鎸夐敭闈㈡澘
             this.dicDeviceModelIdEnum["MPT3R3L/S-ZB.18"] = "221-200";//绠�绾�3鎸夐敭闈㈡澘
             this.dicDeviceModelIdEnum["MPT2R2L/S-ZB.18"] = "222-200";//绠�绾�2鎸夐敭闈㈡澘
+            this.dicDeviceModelIdEnum["MPT4SC/S-ZB.18"] = "224-200";//绠�绾�4鎸夐敭鍦烘櫙闈㈡澘
+            this.dicDeviceModelIdEnum["MPT2W/S-ZB.18"] = "226-200";//绠�绾�2璺獥甯橀潰鏉�
+            this.dicDeviceModelIdEnum["MP2B/TILE-ZB.18"] = "240-200";//鏂规偊鍗曞紑鍙屾帶闈㈡澘
+            this.dicDeviceModelIdEnum["MP4B/TILE-ZB.18"] = "241-200";//鏂规偊鍙屽紑鍥涙帶闈㈡澘
+            this.dicDeviceModelIdEnum["MP8B/TILE-ZB.18"] = "242-200";//鏂规偊鍥涘紑鍏帶闈㈡澘
+            this.dicDeviceModelIdEnum["MPFA/TILE-ZB.18"] = "250-200";//鏂规偊鏂伴闈㈡澘
+            this.dicDeviceModelIdEnum["MPTE3/TILE-ZB.18"] = "253-200";//鏂规偊鐜闈㈡澘
+            this.dicDeviceModelIdEnum["MP2W/TILE-ZB.18"] = "256-200";//绐楀笜闈㈡澘
 
             //=========鈽呪槄PIR浼犳劅鍣ㄧ被(1200-1299)鈽呪槄=========
             this.dicDeviceModelIdEnum["MSPIR01-ZB.10"] = "1200-1200";//pir浼犳劅鍣�220
@@ -2286,12 +2423,14 @@
 
             //=========鈽呪槄缁х數鍣ㄧ被(2300-2499)鈽呪槄=========
             this.dicDeviceModelIdEnum["MPR0310-ZB.10"] = "2300-2300";//3璺户鐢靛櫒灏忔ā鍧�
+            this.dicDeviceModelIdEnum["MFA01-ZB1.0"] = "2310-2300";//鏂规偊鏂伴灏忔ā鍧�
 
             //=========鈽呪槄璋冨厜鍣ㄧ被(2500-2799)鈽呪槄=========
             this.dicDeviceModelIdEnum["MPD0101-ZB.10"] = "2500-2500";//1璺皟鍏夊櫒灏忔ā鍧�
 
             //=========鈽呪槄鏅鸿兘闂ㄩ攣绫�(2800-????)鈽呪槄=========
             this.dicDeviceModelIdEnum["H06C"] = "2800-2800";//鏅鸿兘闂ㄩ攣(H06C)
+            this.dicDeviceModelIdEnum["S-one"] = "2802-2800";//鏅鸿兘闂ㄩ攣(S-one)
 
             //=========鈽呪槄绌鸿皟绫�(3600-3899)鈽呪槄=========
             this.dicDeviceModelIdEnum["MAC/GW-ZB.10"] = "3600-3600";//zigbee绌鸿皟缃戝叧妯″潡
@@ -2321,10 +2460,14 @@
 
 
             //鉁┾湬鉁┾湬鉁╅渶瑕佸叡鏈夌殑鍥剧墖瀵硅薄鉁┾湬鉁┾湬鉁�
+            //涓よ�呴兘鏄疍eviceConcreteType
+            //Keys:鎸囧畾鐨勮澶�    value:娌跨敤鐨勫浘鐗囨槸鍝璁惧鐨�
             this.dicPictrueShard = new Dictionary<string, string>();
             this.dicPictrueShard["ButtonPanel_SimpleFour"] = "ButtonPanel_Four";//绠�绾�4鎸夐敭闈㈡澘 娌跨敤 4鎸夐敭鐨勫浘鏍�
             this.dicPictrueShard["ButtonPanel_SimpleThree"] = "ButtonPanel_Three";//绠�绾�3鎸夐敭闈㈡澘 娌跨敤 3鎸夐敭鐨勫浘鏍�
             this.dicPictrueShard["ButtonPanel_SimpleTwo"] = "ButtonPanel_Two";//绠�绾�2鎸夐敭闈㈡澘 娌跨敤 2鎸夐敭鐨勫浘鏍�
+            this.dicPictrueShard["IntelligentLocks_Sone"] = "IntelligentLocks_H06C";//S-one鐨勯棬閿佸浘鐗囨部鐢℉06C鐨勫浘鏍�
+
         }
 
         #endregion
@@ -2333,12 +2476,12 @@
     #region 鈻� 鑷畾涔夎澶囩被鍨媉________________________
 
     /// <summary>
-    /// <para>浠呴檺搴曞眰浣跨敤锛氳澶囩殑鍏蜂綋銆愯澶囩被鍨嬨��,鑷畾涔変笌妯″潡id鍏宠仈鐨勬灇涓�(鍊间负LocalDevice閲岄潰dicDeviceModelIdEnum鎵�鎸囧畾鐨勫��)</para>
+    /// <para>浠呴檺搴曞眰浣跨敤锛氳澶囩殑鍏蜂綋銆愯澶囩被鍨嬨��,鑷畾涔変笌妯″潡id鍏宠仈鐨勬灇涓�(鍊间负LocalDevice閲岄潰dicDeviceModelIdEnum鎵�鎸囧畾鐨凞eviceConcreteType鍊�)</para>
     /// <para>鍙橀噺鍚嶅彲浠ヤ綔涓恒�愯澶囩被鍨嬨�戝浘鐗�,杩欎釜鍊兼槸鐬庡啓鐨�,娌′粈涔堢壒娈婃剰涔�</para>
     /// </summary>
     public enum DeviceConcreteType
     {
-        //瀹氫箟瑙勫垯锛氥�愯澶囩被鍨嬨�戝浘鐗囧悕瀛�=LocalDevice閲岄潰dicDeviceModelIdEnum鎵�鎸囧畾鐨勫��
+        //瀹氫箟瑙勫垯锛氥�愯澶囩被鍨嬨�戝浘鐗囧悕瀛�=LocalDevice閲岄潰dicDeviceModelIdEnum鎵�鎸囧畾鐨凞eviceConcreteType鍊�
 
         /// <summary>
         /// 鏈煡璁惧
@@ -2396,6 +2539,38 @@
         /// 绠�绾�2鎸夐敭闈㈡澘 闀滃儚id锛�222
         /// </summary>
         ButtonPanel_SimpleTwo = 222,
+        /// <summary>
+        /// 绠�绾�4鎸夐敭鍦烘櫙闈㈡澘 闀滃儚id锛�224
+        /// </summary>
+        ButtonPanel_FourButtonScene = 224,
+        /// <summary>
+        /// 绠�绾�2璺獥甯橀潰鏉� 闀滃儚id锛�226
+        /// </summary>
+        ButtonPanel_TwoButtonCurtain = 226,
+        /// <summary>
+        /// 鏂规偊2鎸夐敭杞昏Е寮忛潰鏉� 闀滃儚id锛�240
+        /// </summary>
+        ButtonPanel_FangyueTwo = 240,
+        /// <summary>
+        /// 鏂规偊4鎸夐敭杞昏Е寮忛潰鏉� 闀滃儚id锛�241
+        /// </summary>
+        ButtonPanel_FangyueFour = 241,
+        /// <summary>
+        /// 鏂规偊8鎸夐敭杞昏Е寮忛潰鏉� 闀滃儚id锛�242
+        /// </summary>
+        ButtonPanel_FangyueEight = 242,
+        /// <summary>
+        /// 鏂规偊鏂伴闈㈡澘 闀滃儚id锛�250
+        /// </summary>
+        ButtonPanel_FangyueFreshAir = 250,
+        /// <summary>
+        /// 鏂规偊鐜闈㈡澘 闀滃儚id锛�253
+        /// </summary>
+        ButtonPanel_FangyueEnvironment = 253,
+        /// <summary>
+        /// 绐楀笜闈㈡澘 闀滃儚id锛�256
+        /// </summary>
+        ButtonPanel_Curtain = 256,
 
         //=========鈽呪槄PIR浼犳劅鍣ㄧ被(1200-1299)鈽呪槄=========
         /// <summary>
@@ -2462,7 +2637,11 @@
         /// 涓夎矾缁х數鍣� 闀滃儚id锛�2300
         /// </summary>
         Relay_ThreeLoad = 2300,
-
+        /// <summary>
+        /// 鏂规偊鏂伴灏忔ā鍧� 闀滃儚id锛�2310
+        /// </summary>
+        Relay_FangyueFreshAirModul = 2310,
+		
         //=========鈽呪槄璋冨厜鍣ㄧ被(2500-2799)鈽呪槄=========
         /// <summary>
         /// 璋冨厜鍣�
@@ -2482,6 +2661,10 @@
         /// H06C
         /// </summary>
         IntelligentLocks_H06C = 2800,
+        /// <summary>
+        /// S-one
+        /// </summary>
+        IntelligentLocks_Sone = 2802,
 
         //=========鈽呪槄褰╃伅绫�(????-????)鈽呪槄=========
         /// <summary>
@@ -2553,7 +2736,7 @@
     }
 
     /// <summary>
-    /// <para>浠呴檺搴曞眰浣跨敤锛氳澶囨墍灞炵殑銆愯澶囩绫汇��,鑷畾涔変笌妯″潡id鍏宠仈鐨勬灇涓�(鍊间负LocalDevice閲岄潰dicDeviceModelIdEnum鎵�鎸囧畾鐨勫��)</para>
+    /// <para>浠呴檺搴曞眰浣跨敤锛氳澶囨墍灞炵殑銆愯澶囩绫汇��,鑷畾涔変笌妯″潡id鍏宠仈鐨勬灇涓�(鍊间负LocalDevice閲岄潰dicDeviceModelIdEnum鎵�鎸囧畾鐨凞eviceBeloneType鍊�)</para>
     /// <para>杩欎釜鍊兼槸鐬庡啓鐨�,娌′粈涔堢壒娈婃剰涔�</para>
     /// </summary>
     public enum DeviceBeloneType

--
Gitblit v1.8.0