From f71e74b5f0d2716fbf05da016cdaa18d64e09f80 Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期四, 31 十二月 2020 17:01:18 +0800
Subject: [PATCH] 又换完成最新门锁。空气质量传感器完成数据和基本配置功能。开发图表和自动化的同事可下载此代码

---
 ZigbeeApp/Shared/Common/Device.cs | 2250 +++++++++++++++++++++++++++-------------------------------
 1 files changed, 1,043 insertions(+), 1,207 deletions(-)

diff --git a/ZigbeeApp/Shared/Common/Device.cs b/ZigbeeApp/Shared/Common/Device.cs
index fe8462b..e7670ab 100644
--- a/ZigbeeApp/Shared/Common/Device.cs
+++ b/ZigbeeApp/Shared/Common/Device.cs
@@ -1,25 +1,25 @@
-锘縰sing Shared.Phone.UserCenter;
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Threading.Tasks;
-using ZigBee.Device;
-
-namespace Shared.Common
+锘縰sing Shared.Phone.UserCenter;
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Threading.Tasks;
+using ZigBee.Device;
+
+namespace Shared.Common
 {
-  /// <summary>
-  /// 鏈湴璁惧
-  /// </summary>
+  /// <summary>
+  /// 鏈湴璁惧
+  /// </summary>
   public class LocalDevice
   {
-    #region 鈻� 鍙橀噺澹版槑___________________________
+    #region 鈻� 鍙橀噺澹版槑___________________________
 
-    /// <summary>
-    /// 鏈湴璁惧
+    /// <summary>
+    /// 鏈湴璁惧
     /// </summary>
     private static LocalDevice m_Current = null;
-    /// <summary>
-    /// 鏈湴璁惧
+    /// <summary>
+    /// 鏈湴璁惧
     /// </summary>
     public static LocalDevice Current
     {
@@ -36,9 +36,9 @@
         m_Current = value;
       }
     }
-    /// <summary>
-    /// 鏈湴鎵�鏈夎澶囩殑缂撳瓨
-    /// </summary>
+    /// <summary>
+    /// 鏈湴鎵�鏈夎澶囩殑缂撳瓨
+    /// </summary>
     public List<CommonDevice> listAllDevice
     {
       get
@@ -57,38 +57,34 @@
       }
     }
 
-    /// <summary>
-    /// 璁惧鐨勬ā鍧桰D鐨勬灇涓� keys:妯″潡ID (Axxx浠h〃鏄涓夋柟璁惧) 
-    /// </summary>
+    /// <summary>
+    /// 璁惧鐨勬ā鍧桰D鐨勬灇涓� keys:妯″潡ID (Axxx浠h〃鏄涓夋柟璁惧) 
+    /// </summary>
     private Dictionary<string, DeviceNameContent> dicDeviceModelIdEnum = null;
-    /// <summary>
-    /// 闇�瑕佽浆鎹㈢殑璁惧鐨勬ā鍧桰D(keys:鏃фā鍧桰D,value:鏂版ā鍧桰D)
-    /// </summary>
+    /// <summary>
+    /// 闇�瑕佽浆鎹㈢殑璁惧鐨勬ā鍧桰D(keys:鏃фā鍧桰D,value:鏂版ā鍧桰D)
+    /// </summary>
     private Dictionary<string, string> dicDeviceModelIdChanged = null;
-    /// <summary>
-    /// 鍥剧墖鍏辨湁(keys:鎸囧畾璁惧鐨勫叿浣撶被鍨� value:鎸囧畾鍏辨湁瀵硅薄鐨勫叿浣撶被鍨�)
-    /// </summary>
+    /// <summary>
+    /// 鍥剧墖鍏辨湁(keys:鎸囧畾璁惧鐨勫叿浣撶被鍨� value:鎸囧畾鍏辨湁瀵硅薄鐨勫叿浣撶被鍨�)
+    /// </summary>
     private Dictionary<string, string> dicPictrueShard = null;
-    /// <summary>
-    /// 鏈湴鎵�鏈夎澶囩殑缂撳瓨(闈炲叕寮�)
-    /// </summary>
+    /// <summary>
+    /// 鏈湴鎵�鏈夎澶囩殑缂撳瓨(闈炲叕寮�)
+    /// </summary>
     private Dictionary<string, CommonDevice> dicAllDevice = new Dictionary<string, CommonDevice>();
-    /// <summary>
-    /// 鏈湴鎵�鏈夌殑椤剁偣鍗囩骇璁惧(闈炲叕寮�锛屼富閿槸MAC+200绔彛)
-    /// </summary>
+    /// <summary>
+    /// 鏈湴鎵�鏈夌殑椤剁偣鍗囩骇璁惧(闈炲叕寮�锛屼富閿槸MAC+200绔彛)
+    /// </summary>
     private Dictionary<string, OTADevice> dicOTADevice = new Dictionary<string, OTADevice>();
-    /// <summary>
-    /// 璁惧鐨勬�诲洖璺�(keys:Mac鍦板潃  value:鍏ㄩ儴绔彛鍙�)
-    /// </summary>
+    /// <summary>
+    /// 璁惧鐨勬�诲洖璺�(keys:Mac鍦板潃  value:鍏ㄩ儴绔彛鍙�)
+    /// </summary>
     private Dictionary<string, HashSet<int>> dicDeviceEpoint = new Dictionary<string, HashSet<int>>();
-    /// <summary>
-    /// 鐗╃悊璁惧灞炰簬鍝釜鎴块棿鐨勮褰�
-    /// </summary>
-    private Dictionary<string, string> dicDeviceRoomId = null;
 
-    #endregion
+    #endregion
 
-    #region 鈻� 鍒锋柊璁惧___________________________
+    #region 鈻� 鍒锋柊璁惧___________________________
 
     /// <summary>
     /// 鍒锋柊鏈湴璁惧淇℃伅
@@ -196,20 +192,20 @@
       //鎴愬憳韬唤鐨勬椂鍊�,鍒犻櫎鎺夐潪娉曠殑缃戝叧鏂囦欢
       this.DeleteGatewayFileByMemberModel();
       //鍒濆鍖栫墿鐞嗚澶囨墍灞炴埧闂寸殑璁板綍
-      this.InitRealDeviceRoomId();
+      HdlRoomLogic.Current.InitRealDeviceRoomId();
 
-#if DEBUG
+#if DEBUG
       if (UserCenterResourse.HideOption.CenterHideMenu == 1)
       {
         //妫�娴嬩竴浜涗唬鐮侀厤缃�(debug)
         this.CheckOhtherSettion();
       }
-#endif
+#endif
     }
 
-    /// <summary>
-    /// 鎴愬憳韬唤鐨勬椂鍊�,鍒犻櫎鎺夐潪娉曠殑缃戝叧鏂囦欢
-    /// </summary>
+    /// <summary>
+    /// 鎴愬憳韬唤鐨勬椂鍊�,鍒犻櫎鎺夐潪娉曠殑缃戝叧鏂囦欢
+    /// </summary>
     private void DeleteGatewayFileByMemberModel()
     {
       if (UserCenterResourse.UserInfo.AuthorityNo != 3)
@@ -240,9 +236,9 @@
       }
     }
 
-    /// <summary>
-    /// 妫�娴嬩竴浜涗唬鐮侀厤缃�(debug)
-    /// </summary>
+    /// <summary>
+    /// 妫�娴嬩竴浜涗唬鐮侀厤缃�(debug)
+    /// </summary>
     private void CheckOhtherSettion()
     {
       foreach (var item in Enum.GetValues(typeof(DeviceType)))
@@ -272,16 +268,16 @@
       }
     }
 
-    #endregion
+    #endregion
 
-    #region 鈻� 娣诲姞璁惧___________________________
+    #region 鈻� 娣诲姞璁惧___________________________
 
-    /// <summary>
-    /// <para>灏嗘寚瀹氱綉鍏崇殑璁惧瀛樺叆缂撳瓨涓�(浠庢柊鑾峰彇闀滃儚)</para>
-    /// <para>-1:寮傚父 1:姝e父 2:璁惧淇℃伅缂烘崯</para>
-    /// </summary>
-    /// <param name="gatewayId">缃戝叧Id</param>
-    /// <param name="useLocalConnect">鏄惁寮哄埗浣跨敤鏈湴杩炴帴鍙戦��</param>
+    /// <summary>
+    /// <para>灏嗘寚瀹氱綉鍏崇殑璁惧瀛樺叆缂撳瓨涓�(浠庢柊鑾峰彇闀滃儚)</para>
+    /// <para>-1:寮傚父 1:姝e父 2:璁惧淇℃伅缂烘崯</para>
+    /// </summary>
+    /// <param name="gatewayId">缃戝叧Id</param>
+    /// <param name="useLocalConnect">鏄惁寮哄埗浣跨敤鏈湴杩炴帴鍙戦��</param>
     public int SetDeviceToMemmoryByGateway(string gatewayId, bool useLocalConnect)
     {
       //浠庣綉鍏宠幏鍙栧叏閮ㄧ殑璁惧
@@ -371,16 +367,16 @@
       if (listDeleteMac.Count > 0)
       {
         //灏嗙湡瀹炵墿鐞嗚澶囦粠鎴块棿涓Щ闄�
-        this.DeleteRealDeviceFromRoom(listDeleteMac);
+        HdlRoomLogic.Current.DeleteRealDeviceFromRoom(listDeleteMac);
       }
 
       return statu;
     }
 
-    /// <summary>
-    /// 娣诲姞璁惧鍒扮紦瀛�,瀛樺湪鏃惰鐩�
-    /// </summary>
-    /// <param name="device">璁惧瀵硅薄(杩欎釜涓滆タ鏈夊彲鑳戒細琚洿鏀�)</param>
+    /// <summary>
+    /// 娣诲姞璁惧鍒扮紦瀛�,瀛樺湪鏃惰鐩�
+    /// </summary>
+    /// <param name="device">璁惧瀵硅薄(杩欎釜涓滆タ鏈夊彲鑳戒細琚洿鏀�)</param>
     public void AddDeviceToMemory(ref CommonDevice device)
     {
       string mainKeys = this.GetDeviceMainKeys(device);
@@ -458,10 +454,10 @@
       }
     }
 
-    /// <summary>
-    /// 娣诲姞铏氭嫙璁惧鍒扮紦瀛�
-    /// </summary>
-    /// <param name="device">璁惧瀵硅薄</param>
+    /// <summary>
+    /// 娣诲姞铏氭嫙璁惧鍒扮紦瀛�
+    /// </summary>
+    /// <param name="device">璁惧瀵硅薄</param>
     public void AddVirtualDeviceToMemory(CommonDevice device)
     {
       string mainKeys = this.GetDeviceMainKeys(device);
@@ -493,16 +489,16 @@
       device.ReSave();
     }
 
-    #endregion
+    #endregion
 
-    #region 鈻� 淇敼璁惧___________________________
+    #region 鈻� 淇敼璁惧___________________________
 
-    /// <summary>
-    /// 鏇存敼绔偣鍚嶅瓧骞朵笖鍒锋柊缂撳瓨(淇敼澶辫触鏃讹紝浼氭樉绀轰俊鎭�)
-    /// </summary>
-    /// <param name="device">璁惧瀵硅薄</param>
-    /// <param name="newName">鏂板悕瀛�</param>
-    /// <param name="mode">鏄惁鏄剧ず閿欒</param>
+    /// <summary>
+    /// 鏇存敼绔偣鍚嶅瓧骞朵笖鍒锋柊缂撳瓨(淇敼澶辫触鏃讹紝浼氭樉绀轰俊鎭�)
+    /// </summary>
+    /// <param name="device">璁惧瀵硅薄</param>
+    /// <param name="newName">鏂板悕瀛�</param>
+    /// <param name="mode">鏄惁鏄剧ず閿欒</param>
     public bool ReName(CommonDevice device, string newName, ShowErrorMode mode = ShowErrorMode.YES)
     {
       //鍏堝埆绠¢偅涔堝锛屾洿鏀瑰悕瀛楀悗锛屽埛鏂拌澶囩紦瀛�
@@ -542,12 +538,12 @@
       return true;
     }
 
-    /// <summary>
-    /// 鏇存敼Mac鍚嶅瓧骞朵笖鍒锋柊缂撳瓨(淇敼澶辫触鏃讹紝浼氭樉绀轰俊鎭�)
-    /// </summary>
-    /// <param name="listDevice">璁惧瀵硅薄</param>
-    /// <param name="newMacName">鏂板悕瀛�</param>
-    /// <param name="mode">鏄惁鏄剧ず閿欒</param>
+    /// <summary>
+    /// 鏇存敼Mac鍚嶅瓧骞朵笖鍒锋柊缂撳瓨(淇敼澶辫触鏃讹紝浼氭樉绀轰俊鎭�)
+    /// </summary>
+    /// <param name="listDevice">璁惧瀵硅薄</param>
+    /// <param name="newMacName">鏂板悕瀛�</param>
+    /// <param name="mode">鏄惁鏄剧ず閿欒</param>
     public bool ReMacName(List<CommonDevice> listDevice, string newMacName, ShowErrorMode mode = ShowErrorMode.YES)
     {
       if (listDevice.Count == 0)
@@ -617,10 +613,10 @@
       return true;
     }
 
-    /// <summary>
-    /// 璁剧疆铏氭嫙璁惧鐨勯粯璁ゅ悕瀛�
-    /// </summary>
-    /// <param name="listDriveDevice">铏氭嫙璁惧鍒楄〃</param>
+    /// <summary>
+    /// 璁剧疆铏氭嫙璁惧鐨勯粯璁ゅ悕瀛�
+    /// </summary>
+    /// <param name="listDriveDevice">铏氭嫙璁惧鍒楄〃</param>
     private void SetDriveDeviceDefultName(List<CommonDevice> listDriveDevice)
     {
       if (listDriveDevice.Count == 0)
@@ -653,10 +649,10 @@
       });
     }
 
-    ///<summary >
-    /// 淇敼璁惧mac鍚嶇О
-    /// <para>macName:璁惧鍚嶇О</para>
-    /// </summary>
+    ///<summary >
+    /// 淇敼璁惧mac鍚嶇О
+    /// <para>macName:璁惧鍚嶇О</para>
+    /// </summary>
     private CommonDevice.RenameDeviceMacNameAllData RenameDeviceMacNameAsync(CommonDevice device, string macName)
     {
       //濡傛灉褰撳墠鏄櫄鎷熶綇瀹�
@@ -679,12 +675,12 @@
       return new CommonDevice.RenameDeviceMacNameAllData { renameDeviceMacNameData = tempData };
     }
 
-    /// <summary>
-    /// 淇敼璁惧绔彛锛堟寜閿級鍚嶇О
-    /// </summary>
-    /// <param name="device">璁惧瀵硅薄</param>
-    /// <param name="deviceName">璁惧绔偣鍚嶅瓧</param>
-    /// <returns></returns>
+    /// <summary>
+    /// 淇敼璁惧绔彛锛堟寜閿級鍚嶇О
+    /// </summary>
+    /// <param name="device">璁惧瀵硅薄</param>
+    /// <param name="deviceName">璁惧绔偣鍚嶅瓧</param>
+    /// <returns></returns>
     private CommonDevice.DeviceRenameAllData RenameDeviceNameAsync(CommonDevice device, string deviceName)
     {
       //濡傛灉褰撳墠鏄櫄鎷熶綇瀹�
@@ -706,13 +702,13 @@
       return new CommonDevice.DeviceRenameAllData { deviceRenameData = tempData };
     }
 
-    /// <summary>
-    /// 鑾峰彇缂栬緫璁惧Mac鍚嶅瓧鐨勫懡浠ゅ瓧绗�
-    /// </summary>
-    /// <param name="deviceAddr"></param>
-    /// <param name="deviceEpoint"></param>
-    /// <param name="deviceName"></param>
-    /// <returns></returns>
+    /// <summary>
+    /// 鑾峰彇缂栬緫璁惧Mac鍚嶅瓧鐨勫懡浠ゅ瓧绗�
+    /// </summary>
+    /// <param name="deviceAddr"></param>
+    /// <param name="deviceEpoint"></param>
+    /// <param name="deviceName"></param>
+    /// <returns></returns>
     public string GetReDeviceMacNameCommandText(string deviceAddr, int deviceEpoint, string deviceName)
     {
       var bytes = new byte[64];
@@ -726,13 +722,13 @@
       return jObject.ToString();
     }
 
-    /// <summary>
-    /// 鑾峰彇缂栬緫璁惧绔偣鍚嶅瓧鐨勫懡浠ゅ瓧绗�
-    /// </summary>
-    /// <param name="deviceAddr"></param>
-    /// <param name="deviceEpoint"></param>
-    /// <param name="deviceName"></param>
-    /// <returns></returns>
+    /// <summary>
+    /// 鑾峰彇缂栬緫璁惧绔偣鍚嶅瓧鐨勫懡浠ゅ瓧绗�
+    /// </summary>
+    /// <param name="deviceAddr"></param>
+    /// <param name="deviceEpoint"></param>
+    /// <param name="deviceName"></param>
+    /// <returns></returns>
     public string GetReDeviceEpointNameCommandText(string deviceAddr, int deviceEpoint, string deviceName)
     {
       var bytes = new byte[64];
@@ -747,10 +743,10 @@
       return jObject.ToString();
     }
 
-    /// <summary>
-    /// 鏇存敼鍚嶅瓧鍚庯紝鍒锋柊璁惧缂撳瓨
-    /// </summary>
-    /// <param name="device"></param>
+    /// <summary>
+    /// 鏇存敼鍚嶅瓧鍚庯紝鍒锋柊璁惧缂撳瓨
+    /// </summary>
+    /// <param name="device"></param>
     private void BackupDeviceAfterReName(CommonDevice device)
     {
       lock (dicAllDevice)
@@ -778,14 +774,14 @@
       }
     }
 
-    #endregion
+    #endregion
 
-    #region 鈻� 鍒犻櫎璁惧___________________________
+    #region 鈻� 鍒犻櫎璁惧___________________________
 
-    /// <summary>
-    /// 鍒犻櫎璁惧骞朵笖鍒锋柊缂撳瓨(鍒犻櫎澶辫触鏃讹紝浼氭樉绀轰俊鎭�)
-    /// </summary>
-    /// <param name="listdevice">璁惧瀵硅薄(MAC鍦板潃蹇呴』瑕佺浉鍚�)</param>
+    /// <summary>
+    /// 鍒犻櫎璁惧骞朵笖鍒锋柊缂撳瓨(鍒犻櫎澶辫触鏃讹紝浼氭樉绀轰俊鎭�)
+    /// </summary>
+    /// <param name="listdevice">璁惧瀵硅薄(MAC鍦板潃蹇呴』瑕佺浉鍚�)</param>
     public async Task<bool> DeleteDevice(List<CommonDevice> listdevice)
     {
       //铏氭嫙浣忓畢鐨勮瘽,涓嶉渶瑕佸垹闄ょ綉鍏崇殑璁惧
@@ -817,21 +813,17 @@
       {
         this.DeleteMemmoryDevice(device);
       }
+      //绉婚櫎鐪熷疄璁惧鐨勬埧闂寸储寮�
+      HdlRoomLogic.Current.DeleteRealDeviceFromRoom(listdevice[0]);
 
-      if (this.dicDeviceRoomId.ContainsKey(listdevice[0].DeviceAddr) == true)
-      {
-        //绉婚櫎鐪熷疄璁惧鐨勬埧闂寸储寮�
-        this.dicDeviceRoomId.Remove(listdevice[0].DeviceAddr);
-        this.SaveRealDeviceRoomId(null, null);
-      }
       return true;
     }
 
-    /// <summary>
-    /// 鍒犻櫎缂撳瓨鐨勪竴鑸澶�
-    /// </summary>
-    /// <param name="device">璁惧瀵硅薄</param>
-    /// <param name="deleteRoom">鏄惁浠庢埧闂村垹闄�</param>
+    /// <summary>
+    /// 鍒犻櫎缂撳瓨鐨勪竴鑸澶�
+    /// </summary>
+    /// <param name="device">璁惧瀵硅薄</param>
+    /// <param name="deleteRoom">鏄惁浠庢埧闂村垹闄�</param>
     public void DeleteMemmoryDevice(CommonDevice device, bool deleteRoom = true)
     {
       //鍒犻櫎缂撳瓨璁惧鐨勮瘽,涓婚〉闇�瑕侀噸鏂板埛鏂�
@@ -881,11 +873,11 @@
       }
     }
 
-    /// <summary>
-    /// 鍒犻櫎缂撳瓨鐨凮ta璁惧
-    /// </summary>
-    /// <param name="macAdrr"></param>
-    /// <param name="ePoint"></param>
+    /// <summary>
+    /// 鍒犻櫎缂撳瓨鐨凮ta璁惧
+    /// </summary>
+    /// <param name="macAdrr"></param>
+    /// <param name="ePoint"></param>
     public void DeleteMemmoryOtaDevice(string macAdrr, int ePoint = 200)
     {
       //鍒犻櫎200绔彛鏂囦欢
@@ -912,13 +904,13 @@
       }
     }
 
-    #endregion
+    #endregion
 
-    #region 鈻� 鍚屾璁惧___________________________
-    /// <summary>
-    ///  鍚屾璁惧骞朵笖鍒锋柊缂撳瓨(鍚屾澶辫触鏃讹紝浼氭樉绀轰俊鎭�)
-    /// </summary>
-    /// <param name="litdevice">璁惧瀵硅薄(MAC鍦板潃蹇呴』瑕佺浉鍚�)</param>
+    #region 鈻� 鍚屾璁惧___________________________
+    /// <summary>
+    ///  鍚屾璁惧骞朵笖鍒锋柊缂撳瓨(鍚屾澶辫触鏃讹紝浼氭樉绀轰俊鎭�)
+    /// </summary>
+    /// <param name="litdevice">璁惧瀵硅薄(MAC鍦板潃蹇呴』瑕佺浉鍚�)</param>
     public async Task<bool> SynchronizationDevice(List<CommonDevice> listdevice)
     {
       //铏氭嫙浣忓畢鐨勮瘽,涓嶉渶瑕佸垹闄ょ綉鍏崇殑璁惧
@@ -939,15 +931,15 @@
       }
       return true;
     }
-    #endregion
+    #endregion
 
-    #region 鈻� 娴嬭瘯璁惧___________________________
+    #region 鈻� 娴嬭瘯璁惧___________________________
 
-    /// <summary>
-    /// 鍙戦�佸畾浣嶆寚浠ゅ埌璁惧
-    /// </summary>
-    /// <param name="device">璁惧鍥炶矾</param>
-    /// <param name="isRealDevice">鏄惁鏄畾浣嶇湡瀹炶澶�</param>
+    /// <summary>
+    /// 鍙戦�佸畾浣嶆寚浠ゅ埌璁惧
+    /// </summary>
+    /// <param name="device">璁惧鍥炶矾</param>
+    /// <param name="isRealDevice">鏄惁鏄畾浣嶇湡瀹炶澶�</param>
     public void SetFixedPositionCommand(CommonDevice device, bool isRealDevice = false)
     {
       //濡傛灉褰撳墠浣忓畢涓嶆槸铏氭嫙浣忓畢
@@ -968,16 +960,16 @@
       }
     }
 
-    /// <summary>
-    /// 妫�娴嬭澶囨槸鍚︽嫢鏈夊畾浣嶇殑鍔熻兘
-    /// </summary>
-    /// <param name="device"></param>
-    /// <returns></returns>
+    /// <summary>
+    /// 妫�娴嬭澶囨槸鍚︽嫢鏈夊畾浣嶇殑鍔熻兘
+    /// </summary>
+    /// <param name="device"></param>
+    /// <returns></returns>
     public bool DeviceIsCanFixedPosition(CommonDevice device)
     {
-      if (device.Type == DeviceType.DoorLock || device.Type == DeviceType.PMSensor)
+      if (device.Type == DeviceType.DoorLock || device.Type == DeviceType.Airer || device.Type == DeviceType.PMSensor)
       {
-        //闂ㄩ攣娌℃湁瀹氫綅鍔熻兘
+        //闂ㄩ攣鍜屾櫨琛f灦娌℃湁瀹氫綅鍔熻兘锛�
         return false;
       }
       var myTypeInfo = this.GetMyDeviceEnumInfo(new List<CommonDevice>() { device });
@@ -1012,11 +1004,11 @@
       return false;
     }
 
-    /// <summary>
-    /// 妫�娴嬭澶囨槸鍚︽嫢鏈変竴閿悓姝ュ姛鑳�
-    /// </summary>
-    /// <param name="device"></param>
-    /// <returns></returns>
+    /// <summary>
+    /// 妫�娴嬭澶囨槸鍚︽嫢鏈変竴閿悓姝ュ姛鑳�
+    /// </summary>
+    /// <param name="device"></param>
+    /// <returns></returns>
     public bool DeviceIsCanSynchronization(CommonDevice device)
     {
       //鑾峰彇璁惧绫诲瀷鐨�
@@ -1028,11 +1020,11 @@
       return false;
     }
 
-    /// <summary>
-    /// 妫�娴嬭澶囨槸鍚︽嫢鏈夊紑鍏崇殑鍔熻兘(杈撳嚭绨�)
-    /// </summary>
-    /// <param name="device"></param>
-    /// <returns></returns>
+    /// <summary>
+    /// 妫�娴嬭澶囨槸鍚︽嫢鏈夊紑鍏崇殑鍔熻兘(杈撳嚭绨�)
+    /// </summary>
+    /// <param name="device"></param>
+    /// <returns></returns>
     public bool OutDeviceIsCanOnOff(CommonDevice device)
     {
       foreach (var data in device.OutClusterList)
@@ -1046,11 +1038,11 @@
       return false;
     }
 
-    /// <summary>
-    /// 妫�娴嬭澶囨槸鍚︽嫢鏈夊紑鍏崇殑鍔熻兘(杈撳叆绨�)
-    /// </summary>
-    /// <param name="device"></param>
-    /// <returns></returns>
+    /// <summary>
+    /// 妫�娴嬭澶囨槸鍚︽嫢鏈夊紑鍏崇殑鍔熻兘(杈撳叆绨�)
+    /// </summary>
+    /// <param name="device"></param>
+    /// <returns></returns>
     public bool InDeviceIsCanOnOff(CommonDevice device)
     {
       foreach (var data in device.InClusterList)
@@ -1064,15 +1056,15 @@
       return false;
     }
 
-    #endregion
+    #endregion
 
-    #region 鈻� 鑾峰彇璁惧___________________________
+    #region 鈻� 鑾峰彇璁惧___________________________
 
-    /// <summary>
-    /// 鏍规嵁缃戝叧ID鑾峰彇鎵�鏈夌殑璁惧
-    /// </summary>
-    /// <param name="gwId">缃戝叧ID</param>>
-    /// <returns></returns>
+    /// <summary>
+    /// 鏍规嵁缃戝叧ID鑾峰彇鎵�鏈夌殑璁惧
+    /// </summary>
+    /// <param name="gwId">缃戝叧ID</param>>
+    /// <returns></returns>
     public List<CommonDevice> GetDeviceByGatewayID(string gwId)
     {
       lock (dicAllDevice)
@@ -1090,11 +1082,11 @@
       }
     }
 
-    /// <summary>
-    /// 鑾峰彇鎸囧畾璁惧(涓婚敭鏄細Mac鍦板潃+绔彛鍙�),涓嶅瓨鍦ㄦ椂锛岃繑鍥瀗ull
-    /// </summary>
-    /// <param name="mainKeys">Mac鍦板潃+绔彛鍙�</param>
-    /// <returns></returns>
+    /// <summary>
+    /// 鑾峰彇鎸囧畾璁惧(涓婚敭鏄細Mac鍦板潃+绔彛鍙�),涓嶅瓨鍦ㄦ椂锛岃繑鍥瀗ull
+    /// </summary>
+    /// <param name="mainKeys">Mac鍦板潃+绔彛鍙�</param>
+    /// <returns></returns>
     public CommonDevice GetDevice(string mainKeys)
     {
       lock (dicAllDevice)
@@ -1107,24 +1099,24 @@
       return null;
     }
 
-    /// <summary>
-    /// 鑾峰彇鎸囧畾璁惧,涓嶅瓨鍦ㄦ椂锛岃繑鍥瀗ull
-    /// </summary>
-    /// <param name="DeviceAddr">Mac鍦板潃</param>
-    /// <param name="DeviceEpoint">绔彛鍙�</param>
-    /// <returns></returns>
+    /// <summary>
+    /// 鑾峰彇鎸囧畾璁惧,涓嶅瓨鍦ㄦ椂锛岃繑鍥瀗ull
+    /// </summary>
+    /// <param name="DeviceAddr">Mac鍦板潃</param>
+    /// <param name="DeviceEpoint">绔彛鍙�</param>
+    /// <returns></returns>
     public CommonDevice GetDevice(string DeviceAddr, int DeviceEpoint)
     {
       string mainkeys = this.GetDeviceMainKeys(DeviceAddr, DeviceEpoint);
       return this.GetDevice(mainkeys);
     }
 
-    /// <summary>
-    /// 鏍规嵁MAC鍦板潃,鑾峰彇鍏ㄩ儴鍥炶矾鐨勮澶囧璞�
-    /// </summary>
-    /// <param name="DeviceAddr">Mac鍦板潃</param>
-    /// <param name="sort">鏄惁鎺掑簭</param>
-    /// <returns></returns>
+    /// <summary>
+    /// 鏍规嵁MAC鍦板潃,鑾峰彇鍏ㄩ儴鍥炶矾鐨勮澶囧璞�
+    /// </summary>
+    /// <param name="DeviceAddr">Mac鍦板潃</param>
+    /// <param name="sort">鏄惁鎺掑簭</param>
+    /// <returns></returns>
     public List<CommonDevice> GetDevicesByMac(string DeviceAddr, bool sort = true)
     {
       var list = new List<CommonDevice>();
@@ -1157,11 +1149,11 @@
       return list;
     }
 
-    /// <summary>
-    /// 鏍规嵁MAC鍦板潃,鑾峰彇绠�绾﹂潰鏉垮叏閮ㄥ洖璺殑璁惧瀵硅薄
-    /// </summary>
-    /// <param name="listDevice"></param>
-    /// <returns></returns>
+    /// <summary>
+    /// 鏍规嵁MAC鍦板潃,鑾峰彇绠�绾﹂潰鏉垮叏閮ㄥ洖璺殑璁惧瀵硅薄
+    /// </summary>
+    /// <param name="listDevice"></param>
+    /// <returns></returns>
     public List<CommonDevice> GetMutilfunctionPanelByMac(List<CommonDevice> listDevice, bool sort = true)
     {
       //鍜屽姜鍝ャ�佽澶囧拰浜у搧閮ㄥ悓浜嬬‘璁わ細
@@ -1205,11 +1197,11 @@
       return list;
     }
 
-    /// <summary>
-    /// 鏍规嵁MAC鍦板潃,鑾峰彇鏂伴銆佺畝绾︾幆澧冮潰鏉垮叏閮ㄥ洖璺殑璁惧瀵硅薄
-    /// </summary>
-    /// <param name="listDevice"></param>
-    /// <returns></returns>
+    /// <summary>
+    /// 鏍规嵁MAC鍦板潃,鑾峰彇鏂伴銆佺畝绾︾幆澧冮潰鏉垮叏閮ㄥ洖璺殑璁惧瀵硅薄
+    /// </summary>
+    /// <param name="listDevice"></param>
+    /// <returns></returns>
     public List<CommonDevice> GetPanelMatchEpointByMac(List<CommonDevice> listDevice, bool sort = true)
     {
       var list = new List<CommonDevice>();
@@ -1240,11 +1232,11 @@
       return list;
     }
 
-    /// <summary>
-    /// 鏍规嵁MAC鍦板潃,鑾峰彇鍏ㄩ儴鍥炶矾鐨勮澶囧璞�(寮哄埗鎺掑簭)
-    /// </summary>
-    /// <param name="DeviceAddr">Mac鍦板潃</param>
-    /// <returns></returns>
+    /// <summary>
+    /// 鏍规嵁MAC鍦板潃,鑾峰彇鍏ㄩ儴鍥炶矾鐨勮澶囧璞�(寮哄埗鎺掑簭)
+    /// </summary>
+    /// <param name="DeviceAddr">Mac鍦板潃</param>
+    /// <returns></returns>
     public List<CommonDevice> GetDevicesByMac(List<string> listMacAddr)
     {
       //鍏堟帓搴�
@@ -1273,11 +1265,11 @@
       return list;
     }
 
-    /// <summary>
-    /// 鏍规嵁MAC鍦板潃,鑾峰彇鍏ㄩ儴鍥炶矾鐨勬暟閲�
-    /// </summary>
-    /// <param name="DeviceAddr">Mac鍦板潃</param>
-    /// <returns></returns>
+    /// <summary>
+    /// 鏍规嵁MAC鍦板潃,鑾峰彇鍏ㄩ儴鍥炶矾鐨勬暟閲�
+    /// </summary>
+    /// <param name="DeviceAddr">Mac鍦板潃</param>
+    /// <returns></returns>
     public int GetDevicesCountByMac(string DeviceAddr)
     {
       if (dicDeviceEpoint.ContainsKey(DeviceAddr) == false)
@@ -1287,10 +1279,10 @@
       return dicDeviceEpoint[DeviceAddr].Count;
     }
 
-    /// <summary>
-    /// 鑾峰彇鏈湴鍏ㄩ儴鐨勮澶囨枃浠�
-    /// </summary>
-    /// <returns></returns>
+    /// <summary>
+    /// 鑾峰彇鏈湴鍏ㄩ儴鐨勮澶囨枃浠�
+    /// </summary>
+    /// <returns></returns>
     public List<string> GetAllDeviceFile()
     {
       List<string> listDeviceFile = new List<string>();
@@ -1308,12 +1300,12 @@
       return listDeviceFile;
     }
 
-    /// <summary>
-    /// 鑾峰彇OTA璁惧(200绔彛鐨�)
-    /// </summary>
-    /// <param name="macAdrr"></param>
-    /// <param name="ePoint"></param>
-    /// <returns></returns>
+    /// <summary>
+    /// 鑾峰彇OTA璁惧(200绔彛鐨�)
+    /// </summary>
+    /// <param name="macAdrr"></param>
+    /// <param name="ePoint"></param>
+    /// <returns></returns>
     public OTADevice GetOTADevice(string macAdrr, int ePoint = 200)
     {
       string mainkeys = this.GetDeviceMainKeys(macAdrr, ePoint);
@@ -1324,11 +1316,11 @@
       return this.dicOTADevice[mainkeys];
     }
 
-    /// <summary>
-    /// 鑾峰彇鐗规畩鐨�,娌℃湁鍏朵粬鍥炶矾,鍗曠函鍙湁200绔偣鐨凮TA璁惧
-    /// </summary>
-    /// <param name="gwId">缃戝叧ID</param>
-    /// <returns></returns>
+    /// <summary>
+    /// 鑾峰彇鐗规畩鐨�,娌℃湁鍏朵粬鍥炶矾,鍗曠函鍙湁200绔偣鐨凮TA璁惧
+    /// </summary>
+    /// <param name="gwId">缃戝叧ID</param>
+    /// <returns></returns>
     public List<OTADevice> GetSpecialOtaDevice(string gwId)
     {
       var list = new List<OTADevice>();
@@ -1353,15 +1345,15 @@
       return list;
     }
 
-    #endregion
+    #endregion
 
-    #region 鈻� 鑾峰彇璁惧淇℃伅_______________________
+    #region 鈻� 鑾峰彇璁惧淇℃伅_______________________
 
-    /// <summary>
-    /// 浠庣綉鍏宠鍙栧崟涓鐐瑰洖璺澶囦俊鎭�
-    /// </summary>
-    /// <param name="device">璁惧瀵硅薄</param>
-    /// <returns></returns>
+    /// <summary>
+    /// 浠庣綉鍏宠鍙栧崟涓鐐瑰洖璺澶囦俊鎭�
+    /// </summary>
+    /// <param name="device">璁惧瀵硅薄</param>
+    /// <returns></returns>
     public CommonDevice.DeviceInfoData ReadDeviceEpointDeviceInfo(CommonDevice device)
     {
       var jObject = new Newtonsoft.Json.Linq.JObject { { "DeviceAddr", device.DeviceAddr }, { "Epoint", device.DeviceEpoint }, { "Cluster_ID", 0 }, { "Command", 80 } };
@@ -1374,15 +1366,15 @@
       return info;
     }
 
-    /// <summary>
-    /// 浠庣綉鍏宠鍙栨寚瀹歁ac涓嬬殑璁惧鍒楄〃(杩斿洖鐨勬槸缃戝叧鍥炲鐨勮澶嘕son,璋冪敤ConvertJObjectToDevice鏂规硶杞负Device瀵硅薄)
-    /// </summary>
-    /// <param name="realGateway">鐪熷疄缃戝叧瀵硅薄</param>
-    /// <param name="i_deviceMac">璁惧Mac</param>
-    /// <param name="useLocalConnect">鏄惁浣跨敤鏈湴杩炴帴鍙戦��</param>
-    /// <param name="listFucDevice">闇�瑕佸彉鏇村姛鑳界被鍨嬬殑鍥炶矾</param>
-    /// <param name="statu">鐘舵��-> -1:寮傚父,浼氳繑鍥瀗ull, 1锛氭病鏈夊紓甯�, 2:鏁版嵁鎺ユ敹涓嶅叏</param>
-    /// <returns></returns>
+    /// <summary>
+    /// 浠庣綉鍏宠鍙栨寚瀹歁ac涓嬬殑璁惧鍒楄〃(杩斿洖鐨勬槸缃戝叧鍥炲鐨勮澶嘕son,璋冪敤ConvertJObjectToDevice鏂规硶杞负Device瀵硅薄)
+    /// </summary>
+    /// <param name="realGateway">鐪熷疄缃戝叧瀵硅薄</param>
+    /// <param name="i_deviceMac">璁惧Mac</param>
+    /// <param name="useLocalConnect">鏄惁浣跨敤鏈湴杩炴帴鍙戦��</param>
+    /// <param name="listFucDevice">闇�瑕佸彉鏇村姛鑳界被鍨嬬殑鍥炶矾</param>
+    /// <param name="statu">鐘舵��-> -1:寮傚父,浼氳繑鍥瀗ull, 1锛氭病鏈夊紓甯�, 2:鏁版嵁鎺ユ敹涓嶅叏</param>
+    /// <returns></returns>
     public List<Newtonsoft.Json.Linq.JObject> ReadDeviceListByMacFromGateway(string gatewayId, string i_deviceMac, bool useLocalConnect, ref int statu)
     {
       //鏄惁杈炬垚涓柇鐨勬椂鏈�
@@ -1451,13 +1443,13 @@
       return listDeviceJson;
     }
 
-    /// <summary>
-    /// 灏嗚澶囩殑Json杞崲涓鸿澶囧璞�
-    /// </summary>
-    /// <param name="listIObjects">璁惧Json</param>
-    /// <param name="gwId">缃戝叧id</param>
-    /// <param name="listFucDevice">闇�瑕佸彉鏇村姛鑳界被鍨嬬殑鍥炶矾</param>
-    /// <returns></returns>
+    /// <summary>
+    /// 灏嗚澶囩殑Json杞崲涓鸿澶囧璞�
+    /// </summary>
+    /// <param name="listIObjects">璁惧Json</param>
+    /// <param name="gwId">缃戝叧id</param>
+    /// <param name="listFucDevice">闇�瑕佸彉鏇村姛鑳界被鍨嬬殑鍥炶矾</param>
+    /// <returns></returns>
     public List<CommonDevice> ConvertJObjectToDevice(List<Newtonsoft.Json.Linq.JObject> listIObjects, string gwId, ref List<CommonDevice> listFucDevice)
     {
       //璁惧鍒楄〃
@@ -1513,16 +1505,16 @@
       return listDevice;
     }
 
-    #endregion
+    #endregion
 
-    #region 鈻� 璁剧疆璁惧鍔熻兘绫诲瀷___________________
+    #region 鈻� 璁剧疆璁惧鍔熻兘绫诲瀷___________________
 
-    /// <summary>
-    /// 璁剧疆璁惧鍔熻兘绫诲瀷鍒扮綉鍏�
-    /// </summary>
-    /// <param name="device">璁惧鍥炶矾</param>
-    /// <param name="functionType">鍔熻兘绫诲瀷</param>
-    /// <returns></returns>
+    /// <summary>
+    /// 璁剧疆璁惧鍔熻兘绫诲瀷鍒扮綉鍏�
+    /// </summary>
+    /// <param name="device">璁惧鍥炶矾</param>
+    /// <param name="functionType">鍔熻兘绫诲瀷</param>
+    /// <returns></returns>
     public bool SendDeviceFunctionTypeToGateway(CommonDevice device, DeviceFunctionType functionType)
     {
       //濡傛灉鏄櫄鎷熶綇瀹�
@@ -1547,12 +1539,12 @@
       return false;
     }
 
-    /// <summary>
-    /// 鑾峰彇鏇存敼璁惧鍔熻兘绫诲瀷鐨勫懡浠ゆ枃鏈�
-    /// </summary>
-    /// <param name="device"></param>
-    /// <param name="functionType"></param>
-    /// <returns></returns>
+    /// <summary>
+    /// 鑾峰彇鏇存敼璁惧鍔熻兘绫诲瀷鐨勫懡浠ゆ枃鏈�
+    /// </summary>
+    /// <param name="device"></param>
+    /// <param name="functionType"></param>
+    /// <returns></returns>
     public string GetDeviceFunctionTypeCommandText(CommonDevice device, DeviceFunctionType functionType)
     {
       var jObject = new Newtonsoft.Json.Linq.JObject { { "DeviceAddr", device.DeviceAddr }, { "Epoint", device.DeviceEpoint }, { "Cluster_ID", 0 }, { "Command", 110 } };
@@ -1561,15 +1553,15 @@
       return jObject.ToString();
     }
 
-    #endregion
+    #endregion
 
-    #region 鈻� 鑾峰彇璁惧鍚嶇О_______________________
+    #region 鈻� 鑾峰彇璁惧鍚嶇О_______________________
 
-    /// <summary>
-    /// 鑾峰彇璁惧绔偣鐨勫悕绉�(鏈夌壒鏁�)
-    /// </summary>
-    /// <param name="device">璁惧瀵硅薄</param>
-    /// <returns></returns>
+    /// <summary>
+    /// 鑾峰彇璁惧绔偣鐨勫悕绉�(鏈夌壒鏁�)
+    /// </summary>
+    /// <param name="device">璁惧瀵硅薄</param>
+    /// <returns></returns>
     public string GetDeviceEpointName(CommonDevice device)
     {
       string dName = this.GetSimpleEpointName(device);
@@ -1656,6 +1648,12 @@
           //闈㈡澘鐨勬俯搴︽帰澶村彨  闈㈡澘鍚嶅瓧+娓╁害
           return deviceInfoType.DeviceDefultName + Language.StringByID(R.MyInternationalizationString.uTemperature);
         }
+        else if (deviceInfoType.BeloneType == DeviceBeloneType.A绌烘皵璐ㄩ噺)
+        {
+
+          //绌烘皵璐ㄩ噺浼犳劅鍣ㄧ殑娓╁害鎺㈠ご鍙┖姘旇川閲忎紶鎰熷櫒+娓╁害
+          return deviceInfoType.DeviceDefultName + Language.StringByID(R.MyInternationalizationString.TemperatureSensor);
+        }
         else if (((TemperatureSensor)device).SensorDiv == 1)
         {
           //娓╁害浼犳劅鍣�
@@ -1671,11 +1669,11 @@
       return deviceInfoType.DeviceDefultName + epointNo;
     }
 
-    /// <summary>
-    /// 鑾峰彇璁惧MAC鍚嶇О
-    /// </summary>
-    /// <param name="device">璁惧瀵硅薄</param>
-    /// <returns></returns>
+    /// <summary>
+    /// 鑾峰彇璁惧MAC鍚嶇О
+    /// </summary>
+    /// <param name="device">璁惧瀵硅薄</param>
+    /// <returns></returns>
     public string GetDeviceMacName(CommonDevice device)
     {
       string dName = this.GetSimpleMacName(device);
@@ -1694,57 +1692,57 @@
       return deviceInfoType.DeviceDefultName;
     }
 
-    /// <summary>
-    /// 闈炲叕寮�,璁剧疆璁惧鐨凪ac鍚嶅瓧(姝ゆ柟娉曞彧鏄崟瀛樼殑鍙樻洿缂撳瓨)
-    /// </summary>
-    /// <param name="device">璁惧瀵硅薄</param>
-    /// <param name="macName">Mac鍚嶅瓧</param>
-    /// <returns></returns>
+    /// <summary>
+    /// 闈炲叕寮�,璁剧疆璁惧鐨凪ac鍚嶅瓧(姝ゆ柟娉曞彧鏄崟瀛樼殑鍙樻洿缂撳瓨)
+    /// </summary>
+    /// <param name="device">璁惧瀵硅薄</param>
+    /// <param name="macName">Mac鍚嶅瓧</param>
+    /// <returns></returns>
     public void SetMacName(CommonDevice device, string macName)
     {
       device.DeviceName = macName;
     }
 
-    /// <summary>
-    /// 闈炲叕寮�,璁剧疆璁惧鐨勭鐐瑰悕瀛�(姝ゆ柟娉曞彧鏄崟瀛樼殑鍙樻洿缂撳瓨)
-    /// </summary>
-    /// <param name="device">璁惧瀵硅薄</param>
-    /// <param name="epointName">绔偣鍚嶅瓧</param>
-    /// <returns></returns>
+    /// <summary>
+    /// 闈炲叕寮�,璁剧疆璁惧鐨勭鐐瑰悕瀛�(姝ゆ柟娉曞彧鏄崟瀛樼殑鍙樻洿缂撳瓨)
+    /// </summary>
+    /// <param name="device">璁惧瀵硅薄</param>
+    /// <param name="epointName">绔偣鍚嶅瓧</param>
+    /// <returns></returns>
     public void SetEpointName(CommonDevice device, string epointName)
     {
       device.DeviceEpointName = epointName;
     }
 
-    /// <summary>
-    /// 鍗曠函鑾峰彇璁惧鐨凪ac鍚嶅瓧
-    /// </summary>
-    /// <param name="device">璁惧瀵硅薄</param>
-    /// <returns></returns>
+    /// <summary>
+    /// 鍗曠函鑾峰彇璁惧鐨凪ac鍚嶅瓧
+    /// </summary>
+    /// <param name="device">璁惧瀵硅薄</param>
+    /// <returns></returns>
     public string GetSimpleMacName(CommonDevice device)
     {
       return device.DeviceName;
     }
 
-    /// <summary>
-    /// 鍗曠函鑾峰彇璁惧鐨勭鐐瑰悕瀛�
-    /// </summary>
-    /// <param name="device">璁惧瀵硅薄</param>
-    /// <returns></returns>
+    /// <summary>
+    /// 鍗曠函鑾峰彇璁惧鐨勭鐐瑰悕瀛�
+    /// </summary>
+    /// <param name="device">璁惧瀵硅薄</param>
+    /// <returns></returns>
     public string GetSimpleEpointName(CommonDevice device)
     {
       return device.DeviceEpointName;
     }
 
-    #endregion
+    #endregion
 
-    #region 鈻� 璁剧疆鍥炬爣___________________________
+    #region 鈻� 璁剧疆鍥炬爣___________________________
 
-    /// <summary>
-    /// 鍙樻洿璁惧鐨勫浘鏍�
-    /// </summary>
-    /// <param name="device">璁惧瀵硅薄</param>
-    /// <param name="unSelPath">鍥剧墖鍦板潃(闈為�夋嫨)</param>
+    /// <summary>
+    /// 鍙樻洿璁惧鐨勫浘鏍�
+    /// </summary>
+    /// <param name="device">璁惧瀵硅薄</param>
+    /// <param name="unSelPath">鍥剧墖鍦板潃(闈為�夋嫨)</param>
     public void ChangedDeviceIcon(CommonDevice device, string unSelPath)
     {
       if (unSelPath == string.Empty)
@@ -1758,12 +1756,12 @@
       HdlAutoBackupLogic.AddOrEditorFile(device.FilePath);
     }
 
-    /// <summary>
-    /// 璁剧疆璁惧銆愬浘鏍囥�戝埌鎸囧畾鐨勬帶浠�
-    /// </summary>
-    /// <param name="btnIcon">鎺т欢瀵硅薄</param>
-    /// <param name="device">璁惧瀵硅薄</param>
-    /// <returns></returns>
+    /// <summary>
+    /// 璁剧疆璁惧銆愬浘鏍囥�戝埌鎸囧畾鐨勬帶浠�
+    /// </summary>
+    /// <param name="btnIcon">鎺т欢瀵硅薄</param>
+    /// <param name="device">璁惧瀵硅薄</param>
+    /// <returns></returns>
     public void SetDeviceIconToControl(Button btnIcon, CommonDevice device)
     {
       if (device == null)
@@ -1786,12 +1784,12 @@
       }
     }
 
-    /// <summary>
-    /// 璁剧疆璁惧銆愬浘鏍囥�戝埌鎸囧畾鐨勬帶浠�(娉ㄦ剰,姝ゅ嚱鏁拌缃殑閫夋嫨鐘舵�佺殑鍥剧墖鏄櫧鑹茬殑)
-    /// </summary>
-    /// <param name="btnIcon">鎺т欢瀵硅薄</param>
-    /// <param name="device">璁惧瀵硅薄</param>
-    /// <returns></returns>
+    /// <summary>
+    /// 璁剧疆璁惧銆愬浘鏍囥�戝埌鎸囧畾鐨勬帶浠�(娉ㄦ剰,姝ゅ嚱鏁拌缃殑閫夋嫨鐘舵�佺殑鍥剧墖鏄櫧鑹茬殑)
+    /// </summary>
+    /// <param name="btnIcon">鎺т欢瀵硅薄</param>
+    /// <param name="device">璁惧瀵硅薄</param>
+    /// <returns></returns>
     public void SetDeviceIconToControl2(Button btnIcon, CommonDevice device)
     {
       if (device == null)
@@ -1813,13 +1811,13 @@
       }
     }
 
-    /// <summary>
-    /// 鑾峰彇璁惧銆愬浘鏍囥��
-    /// </summary>
-    /// <param name="listdevice">璁惧瀵硅薄</param>
-    /// <param name="unSelectPath">鍥剧墖鍦板潃</param>
-    /// <param name="selectPath">鍥剧墖鍦板潃</param>
-    /// <returns></returns>
+    /// <summary>
+    /// 鑾峰彇璁惧銆愬浘鏍囥��
+    /// </summary>
+    /// <param name="listdevice">璁惧瀵硅薄</param>
+    /// <param name="unSelectPath">鍥剧墖鍦板潃</param>
+    /// <param name="selectPath">鍥剧墖鍦板潃</param>
+    /// <returns></returns>
     public void GetDeviceIcon(CommonDevice device, ref string unSelectPath, ref string selectPath)
     {
       if (string.IsNullOrEmpty(device.IconPath) == true)
@@ -1835,11 +1833,11 @@
       }
     }
 
-    /// <summary>
-    /// 璁剧疆璁惧鐨勭湡瀹炲浘鐗囧埌鎸囧畾鐨勬帶浠�
-    /// </summary>
-    /// <param name="btnIcon">鎺т欢瀵硅薄</param>
-    /// <param name="listdevice">璁惧瀵硅薄</param>
+    /// <summary>
+    /// 璁剧疆璁惧鐨勭湡瀹炲浘鐗囧埌鎸囧畾鐨勬帶浠�
+    /// </summary>
+    /// <param name="btnIcon">鎺т欢瀵硅薄</param>
+    /// <param name="listdevice">璁惧瀵硅薄</param>
     public void SetRealDeviceIconToControl(Button btnIcon, List<CommonDevice> listdevice)
     {
       //鑾峰彇璁惧鐨勭湡瀹炲浘鐗�
@@ -1847,10 +1845,10 @@
       btnIcon.UnSelectedImagePath = imagePath;
     }
 
-    /// <summary>
-    /// 鑾峰彇璁惧鐨勭湡瀹炲浘鐗�
-    /// </summary>
-    /// <param name="listdevice">璁惧瀵硅薄</param>
+    /// <summary>
+    /// 鑾峰彇璁惧鐨勭湡瀹炲浘鐗�
+    /// </summary>
+    /// <param name="listdevice">璁惧瀵硅薄</param>
     public string GetRealDeviceIcon(List<CommonDevice> listdevice)
     {
       //鑾峰彇瀹冨睘浜庝粈涔堢被鍨嬬殑璁惧
@@ -1886,12 +1884,12 @@
       return imageFilePath;
     }
 
-    /// <summary>
-    /// 璁剧疆銆愯澶囩被鍨嬨�戠殑鍥炬爣鍒版寚瀹氱殑鎺т欢(姝ゆ柟娉曚笉鑳界敤鍦ㄨ澶囧姛鑳界被鍨嬭彍鍗曠殑鍥炬爣)
-    /// </summary>
-    /// <param name="btnIcon">鎺т欢瀵硅薄</param>
-    /// <param name="listdevice">璁惧瀵硅薄</param>
-    /// <returns></returns>
+    /// <summary>
+    /// 璁剧疆銆愯澶囩被鍨嬨�戠殑鍥炬爣鍒版寚瀹氱殑鎺т欢(姝ゆ柟娉曚笉鑳界敤鍦ㄨ澶囧姛鑳界被鍨嬭彍鍗曠殑鍥炬爣)
+    /// </summary>
+    /// <param name="btnIcon">鎺т欢瀵硅薄</param>
+    /// <param name="listdevice">璁惧瀵硅薄</param>
+    /// <returns></returns>
     public void SetDeviceObjectIconToControl(Button btnIcon, List<CommonDevice> listdevice)
     {
       //鑾峰彇鑷畾涔夎澶囩被鍨�
@@ -1908,13 +1906,13 @@
       btnIcon.SelectedImagePath = imageSelectFilePath;
     }
 
-    /// <summary>
-    /// 鑾峰彇銆愯澶囩被鍨嬨�戠殑鍥炬爣(姝ゆ柟娉曚笉鑳界敤鍦ㄨ澶囧姛鑳界被鍨嬭彍鍗曠殑鍥炬爣)
-    /// </summary>
-    /// <param name="listdevice">璁惧瀵硅薄</param>
-    /// <param name="unSelectPath">鍥剧墖鍦板潃</param>
-    /// <param name="selectPath">鍥剧墖鍦板潃</param>
-    /// <returns></returns>
+    /// <summary>
+    /// 鑾峰彇銆愯澶囩被鍨嬨�戠殑鍥炬爣(姝ゆ柟娉曚笉鑳界敤鍦ㄨ澶囧姛鑳界被鍨嬭彍鍗曠殑鍥炬爣)
+    /// </summary>
+    /// <param name="listdevice">璁惧瀵硅薄</param>
+    /// <param name="unSelectPath">鍥剧墖鍦板潃</param>
+    /// <param name="selectPath">鍥剧墖鍦板潃</param>
+    /// <returns></returns>
     public void GetDeviceObjectIcon(List<CommonDevice> listdevice, ref string unSelectPath, ref string selectPath)
     {
       //鑾峰彇鑷畾涔夎澶囩被鍨�
@@ -1924,13 +1922,13 @@
       this.GetDeviceObjectIcon(myDeviceType.ConcreteType, ref unSelectPath, ref selectPath);
     }
 
-    /// <summary>
-    /// 鑾峰彇銆愯澶囧姛鑳界被鍨嬨�戠殑鑿滃崟鍥炬爣
-    /// </summary>
-    /// <param name="deviceEnumInfo">鑷畾涔夎澶囩被鍨�</param>
-    /// <param name="unSelectPath">鍥剧墖鍦板潃</param>
-    /// <param name="selectPath">鍥剧墖鍦板潃</param>
-    /// <returns></returns>
+    /// <summary>
+    /// 鑾峰彇銆愯澶囧姛鑳界被鍨嬨�戠殑鑿滃崟鍥炬爣
+    /// </summary>
+    /// <param name="deviceEnumInfo">鑷畾涔夎澶囩被鍨�</param>
+    /// <param name="unSelectPath">鍥剧墖鍦板潃</param>
+    /// <param name="selectPath">鍥剧墖鍦板潃</param>
+    /// <returns></returns>
     public void GetDeviceFunctionTypeMenuIcon(DeviceEnumInfo deviceEnumInfo, ref string unSelectPath, ref string selectPath)
     {
       //鏂伴灏忔ā鍧�
@@ -1959,13 +1957,13 @@
       this.GetDeviceObjectIcon(deviceEnumInfo.ConcreteType, ref unSelectPath, ref selectPath);
     }
 
-    /// <summary>
-    /// 鑾峰彇銆愯澶囩被鍨嬨�戠殑鍥炬爣 2020.05.13:娆″嚱鏁颁笉鍐嶅叕寮�
-    /// </summary>
-    /// <param name="specificType">鑷畾涔夎澶囩被鍨�</param>
-    /// <param name="unSelectPath">鍥剧墖鍦板潃</param>
-    /// <param name="selectPath">鍥剧墖鍦板潃</param>
-    /// <returns></returns>
+    /// <summary>
+    /// 鑾峰彇銆愯澶囩被鍨嬨�戠殑鍥炬爣 2020.05.13:娆″嚱鏁颁笉鍐嶅叕寮�
+    /// </summary>
+    /// <param name="specificType">鑷畾涔夎澶囩被鍨�</param>
+    /// <param name="unSelectPath">鍥剧墖鍦板潃</param>
+    /// <param name="selectPath">鍥剧墖鍦板潃</param>
+    /// <returns></returns>
     private void GetDeviceObjectIcon(DeviceConcreteType specificType, ref string unSelectPath, ref string selectPath)
     {
       //灏嗗叿浣撶被鍨嬭浆瀛楃涓�
@@ -2004,15 +2002,15 @@
       selectPath = imageSelectFilePath;
     }
 
-    #endregion
+    #endregion
 
-    #region 鈻� 鑾峰彇鑷畾涔夌殑璁惧绫诲瀷_______________
+    #region 鈻� 鑾峰彇鑷畾涔夌殑璁惧绫诲瀷_______________
 
-    /// <summary>
-    /// 鑾峰彇銆愯嚜瀹氫箟鐨勮澶囩被鍨嬨��,涓ょ绫诲瀷閮借缃簡
-    /// </summary>
-    /// <param name="listdevice">璁惧瀵硅薄</param>
-    /// <returns></returns>
+    /// <summary>
+    /// 鑾峰彇銆愯嚜瀹氫箟鐨勮澶囩被鍨嬨��,涓ょ绫诲瀷閮借缃簡
+    /// </summary>
+    /// <param name="listdevice">璁惧瀵硅薄</param>
+    /// <returns></returns>
     public DeviceEnumInfo GetMyDeviceEnumInfo(List<CommonDevice> listdevice)
     {
       CommonDevice checkDevice = listdevice[0];
@@ -2039,12 +2037,12 @@
       return info;
     }
 
-    /// <summary>
-    /// 鑾峰彇璁惧鐨勩�愯澶囩被鍨嬨�戠殑缈昏瘧鏂囨湰(浼樺厛闀滃儚)
-    /// </summary>
-    /// <param name="listDevice"></param>
-    /// <param name="ApendFalge">绗笁鏂规垨鑰呰櫄鎷熻澶囩殑鏃跺�欙紝鏄惁娣诲姞鏍囪瘑</param>
-    /// <returns></returns>
+    /// <summary>
+    /// 鑾峰彇璁惧鐨勩�愯澶囩被鍨嬨�戠殑缈昏瘧鏂囨湰(浼樺厛闀滃儚)
+    /// </summary>
+    /// <param name="listDevice"></param>
+    /// <param name="ApendFalge">绗笁鏂规垨鑰呰櫄鎷熻澶囩殑鏃跺�欙紝鏄惁娣诲姞鏍囪瘑</param>
+    /// <returns></returns>
     public string GetDeviceObjectText(List<CommonDevice> listDevice, bool ApendFalge = true)
     {
       CommonDevice checkDevice = listDevice[0];
@@ -2093,15 +2091,15 @@
       return strName;
     }
 
-    #endregion
+    #endregion
 
-    #region 鈻� 鑾峰彇娌充笢璁惧鐨勮澶囩被鍨媉____________
+    #region 鈻� 鑾峰彇娌充笢璁惧鐨勮澶囩被鍨媉____________
 
-    /// <summary>
-    /// 鑾峰彇Hdl璁惧鐨勩�愯嚜瀹氫箟鐨勮澶囩被鍨嬨��
-    /// </summary>
-    /// <param name="device">闅忎究鏌愪竴鍥炶矾</param>
-    /// <returns></returns>
+    /// <summary>
+    /// 鑾峰彇Hdl璁惧鐨勩�愯嚜瀹氫箟鐨勮澶囩被鍨嬨��
+    /// </summary>
+    /// <param name="device">闅忎究鏌愪竴鍥炶矾</param>
+    /// <returns></returns>
     private DeviceEnumInfo GetHdlMyDeviceEnumInfo(CommonDevice device)
     {
       //璁惧鍏蜂綋绫诲瀷
@@ -2144,15 +2142,15 @@
       return info;
     }
 
-    #endregion
+    #endregion
 
-    #region 鈻� 鑾峰彇绗笁鏂硅澶囩殑璁惧绫诲瀷___________
+    #region 鈻� 鑾峰彇绗笁鏂硅澶囩殑璁惧绫诲瀷___________
 
-    /// <summary>
-    /// 鑾峰彇璁惧鐨勩�愭墍灞炵被鍨嬩俊鎭��,姝ゆ柟娉曚細鎶婃墍鏈夌殑浼犳劅鍣ㄩ兘褰掍负銆愪紶鎰熷櫒銆�(鍖呮嫭娓╂箍搴︿紶鎰熷櫒)
-    /// </summary>
-    /// <param name="device">璁惧鍥炶矾</param>
-    /// <returns></returns>
+    /// <summary>
+    /// 鑾峰彇璁惧鐨勩�愭墍灞炵被鍨嬩俊鎭��,姝ゆ柟娉曚細鎶婃墍鏈夌殑浼犳劅鍣ㄩ兘褰掍负銆愪紶鎰熷櫒銆�(鍖呮嫭娓╂箍搴︿紶鎰熷櫒)
+    /// </summary>
+    /// <param name="device">璁惧鍥炶矾</param>
+    /// <returns></returns>
     public DeviceEnumInfo GetDeviceBelongEnumInfo(CommonDevice device)
     {
       var info = this.GetNotHdlMyDeviceEnumInfo(new List<CommonDevice>() { device });
@@ -2181,11 +2179,11 @@
       return info;
     }
 
-    /// <summary>
-    /// 鑾峰彇绗笁鏂硅澶囩殑銆愯澶囩被鍨嬨��(涓嶅缓璁娇鐢�)
-    /// </summary>
-    /// <param name="listdevice">Mac閮戒竴鏍风殑璁惧鍒楄〃</param>
-    /// <returns></returns>
+    /// <summary>
+    /// 鑾峰彇绗笁鏂硅澶囩殑銆愯澶囩被鍨嬨��(涓嶅缓璁娇鐢�)
+    /// </summary>
+    /// <param name="listdevice">Mac閮戒竴鏍风殑璁惧鍒楄〃</param>
+    /// <returns></returns>
     public DeviceEnumInfo GetNotHdlMyDeviceEnumInfo(List<CommonDevice> listdevice)
     {
       var dicType = new Dictionary<DeviceType, CommonDevice>();
@@ -2342,12 +2340,18 @@
       {
         bool temperatrue = false;
         bool humidity = false;
+        bool airQualitySensor = false;
         //鑾峰彇鍏ㄩ儴鐨勫洖璺�
         var listTemp = this.GetDevicesByMac(listdevice[0].DeviceAddr, false);
         foreach (var device in listTemp)
         {
           if (device is TemperatureSensor)
           {
+            //绌烘皵璐ㄩ噺浼犳劅鍣�
+            if (device.isAirQualitySensor(device))
+            {
+              airQualitySensor = true;
+            }
             //娓╁害浼犳劅鍣�
             if (((TemperatureSensor)device).SensorDiv == 1)
             {
@@ -2382,6 +2386,15 @@
           info.ConcreteType = DeviceConcreteType.Sensor_Humidity;
         }
         info.ObjectTypeName = this.dicDeviceModelIdEnum["A411"].A绫诲瀷鍚嶅瓧;//浼犳劅鍣�
+
+        //绌烘皵璐ㄩ噺浼犳劅鍣�
+        if (airQualitySensor == true)
+        {
+          info.ConcreteText = this.dicDeviceModelIdEnum["A422"].A瀹樻柟鍚嶅瓧;
+          info.BeloneType = DeviceBeloneType.A绌烘皵璐ㄩ噺;
+          info.ConcreteType = DeviceConcreteType.AirQualitySensor;
+          info.ObjectTypeName = this.dicDeviceModelIdEnum["A422"].A绫诲瀷鍚嶅瓧;
+        }
       }
       //14鏂伴璁惧
       else if (dicType.ContainsKey(DeviceType.FreshAir) == true)
@@ -2415,14 +2428,6 @@
         info.ConcreteType = DeviceConcreteType.Airer;
         info.ObjectTypeName = this.dicDeviceModelIdEnum["A421"].A绫诲瀷鍚嶅瓧;
       }
-      //18绌烘皵璐ㄩ噺浼犳劅鍣�
-      else if (dicType.ContainsKey(DeviceType.AirQualitySensor) == true)
-      {
-        info.ConcreteText = this.dicDeviceModelIdEnum["A422"].A瀹樻柟鍚嶅瓧;
-        info.BeloneType = DeviceBeloneType.A绌烘皵璐ㄩ噺;
-        info.ConcreteType = DeviceConcreteType.AirQualitySensor;
-        info.ObjectTypeName = this.dicDeviceModelIdEnum["A422"].A绫诲瀷鍚嶅瓧;
-      }
 
       //璁惧鎵�灞炵被鍨嬬殑缈昏瘧鍚嶅瓧
       info.BeloneText = info.ConcreteText;
@@ -2431,15 +2436,15 @@
       return info;
     }
 
-    #endregion
+    #endregion
 
-    #region 鈻� 浼犳劅鍣ㄥ叿浣撶殑绫诲瀷___________________
+    #region 鈻� 浼犳劅鍣ㄥ叿浣撶殑绫诲瀷___________________
 
-    /// <summary>
-    /// 璁剧疆浼犳劅鍣ㄥ叿浣撶殑绫诲瀷
-    /// </summary>
-    /// <param name="info">鑷畾涔夎澶囨灇涓句俊鎭�</param>
-    /// <param name="listdevice">璁惧瀵硅薄</param>
+    /// <summary>
+    /// 璁剧疆浼犳劅鍣ㄥ叿浣撶殑绫诲瀷
+    /// </summary>
+    /// <param name="info">鑷畾涔夎澶囨灇涓句俊鎭�</param>
+    /// <param name="listdevice">璁惧瀵硅薄</param>
     private void SetSensorDeviceSpecificType(ref DeviceEnumInfo info, List<CommonDevice> listdevice)
     {
       //濡傛灉杩欎釜璁惧鎷ユ湁澶氫釜鍥炶矾鐨勮瘽,鎴戜篃涓嶇煡閬撴�庝箞鍛藉悕,鍙兘缁欎釜榛樿鍚嶅瓧
@@ -2492,185 +2497,15 @@
       }
     }
 
-    #endregion
+    #endregion
 
-    #region 鈻� 鐗╃悊璁惧鎵�灞炴埧闂確__________________
+    #region 鈻� 璁惧鎺掑簭___________________________
 
-    /// <summary>
-    /// 鍒濆鍖栫墿鐞嗚澶囨墍灞炴埧闂寸殑璁板綍
-    /// </summary>
-    private void InitRealDeviceRoomId()
-    {
-      this.dicDeviceRoomId = new Dictionary<string, string>();
-      string fullName = DirNameResourse.DeviceRoomIdFile;
-      var strData = HdlFileLogic.Current.ReadFileTextContent(fullName);
-      if (strData != null)
-      {
-        this.dicDeviceRoomId = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, string>>(strData);
-      }
-    }
-
-    /// <summary>
-    /// 鑾峰彇鍏ㄩ儴鐗╃悊璁惧鎵�灞炴埧闂寸殑璁板綍
-    /// </summary>
-    /// <returns></returns>
-    public Dictionary<string, string> GetAllRealDeviceRoomData()
-    {
-      return this.dicDeviceRoomId;
-    }
-
-    /// <summary>
-    /// 淇濆瓨鐗╃悊璁惧鎵�灞炴埧闂寸殑璁板綍
-    /// </summary>
-    /// <param name="listDevice">闇�瑕佷繚瀛樼殑璁惧瀵硅薄</param>
-    /// <param name="roomId">闇�瑕佷繚瀛樼殑鍝釜璁惧鐨勬埧闂碔D</param>
-    /// <param name="saveRoadDevice">濡傛灉鍙湁涓�涓洖璺�,鏄惁鎶婂洖璺殑鎴块棿涓�璧蜂慨鏀�</param>
-    public void SaveRealDeviceRoomId(List<CommonDevice> listDevice, string roomId, bool saveRoadDevice = true)
-    {
-      if (listDevice == null || listDevice.Count == 0)
-      {
-        return;
-      }
-      //濡傛灉璁惧鍙湁涓�涓洖璺紝濡傛灉鏀瑰彉浜嗙湡瀹炶澶囧尯鍩燂紝鍒欏畠鐨勫洖璺殑鍖哄煙涔熶竴璧锋敼浜�
-      if (saveRoadDevice == true && listDevice.Count == 1)
-      {
-        if ((listDevice[0] is OTADevice) == false)
-        {
-          //ota璁惧涓嶉渶瑕佸鐞�
-          HdlRoomLogic.Current.ChangedRoom(listDevice[0], roomId, false);
-        }
-      }
-      bool save = false;
-      if (roomId == string.Empty)
-      {
-        //閫夋嫨鐨勬槸鏈垎閰�
-        this.dicDeviceRoomId.Remove(listDevice[0].DeviceAddr);
-        save = true;
-      }
-      else
-      {
-        if (this.dicDeviceRoomId.ContainsKey(listDevice[0].DeviceAddr) == false)
-        {
-          this.dicDeviceRoomId[listDevice[0].DeviceAddr] = roomId;
-          save = true;
-        }
-        else
-        {
-          //2020.05.18杩藉姞:濡傛灉璁板綍鐨勬埧闂碔D鏄笉瀛樺湪鐨勮瘽,鍒欓噸鏂拌鐩�
-          var room = HdlRoomLogic.Current.GetRoomById(this.dicDeviceRoomId[listDevice[0].DeviceAddr]);
-          if (room == null || this.dicDeviceRoomId[listDevice[0].DeviceAddr] != roomId)
-          {
-            this.dicDeviceRoomId[listDevice[0].DeviceAddr] = roomId;
-            save = true;
-          }
-        }
-      }
-
-      if (save == true)
-      {
-        //淇濆瓨璁板綍
-        HdlFileLogic.Current.SaveFileContent(DirNameResourse.DeviceRoomIdFile, this.dicDeviceRoomId);
-
-        //娣诲姞鑷姩澶囦唤
-        HdlAutoBackupLogic.AddOrEditorFile(DirNameResourse.DeviceRoomIdFile);
-      }
-    }
-
-    /// <summary>
-    /// 鑾峰彇鐪熷疄鐗╃悊璁惧鐨勬埧闂村悕瀛�
-    /// </summary>
-    /// <param name="device">璁惧鐨勬煇涓�涓洖璺�</param>
-    /// <returns></returns>
-    public string GeteRealDeviceRoomName(CommonDevice device)
-    {
-      if (this.dicDeviceRoomId.ContainsKey(device.DeviceAddr) == false)
-      {
-        //鏈垎閰嶅尯鍩�
-        return Language.StringByID(R.MyInternationalizationString.uDeviceNotAssignedRoom);
-      }
-      var room = HdlRoomLogic.Current.GetRoomById(this.dicDeviceRoomId[device.DeviceAddr]);
-      return HdlRoomLogic.Current.GetRoomName(room);
-    }
-
-    /// <summary>
-    /// 鑾峰彇鐪熷疄鐗╃悊璁惧灞炰簬鍝釜鎴块棿
-    /// </summary>
-    /// <param name="device">璁惧鐨勬煇涓�涓洖璺�</param>
-    /// <returns></returns>
-    public Room GeteRealDeviceRoom(CommonDevice device)
-    {
-      if (this.dicDeviceRoomId.ContainsKey(device.DeviceAddr) == false)
-      {
-        return null;
-      }
-      return HdlRoomLogic.Current.GetRoomById(this.dicDeviceRoomId[device.DeviceAddr]);
-    }
-
-    /// <summary>
-    /// 灏嗙湡瀹炵墿鐞嗚澶囦粠鎴块棿涓Щ闄�
-    /// </summary>
-    /// <param name="device">闅忎究涓�涓洖璺�</param>
-    public void DeleteRealDeviceFromRoom(CommonDevice device)
-    {
-      //灏嗙湡瀹炵墿鐞嗚澶囦粠鎴块棿涓Щ闄�
-      this.DeleteRealDeviceFromRoom(new List<string>() { device.DeviceAddr });
-    }
-
-    /// <summary>
-    /// 灏嗙湡瀹炵墿鐞嗚澶囦粠鎴块棿涓Щ闄�
-    /// </summary>
-    /// <param name="listMac">璁惧Mac鍦板潃</param>
-    public void DeleteRealDeviceFromRoom(List<string> listMac)
-    {
-      bool save = false;
-      foreach (var deviceMacAddr in listMac)
-      {
-        if (this.dicDeviceRoomId.ContainsKey(deviceMacAddr) == true)
-        {
-          this.dicDeviceRoomId.Remove(deviceMacAddr);
-          save = true;
-        }
-      }
-      if (save == false)
-      {
-        //娌℃湁鏀瑰彉,涓嶉渶瑕佷繚瀛�
-        return;
-      }
-      //淇濆瓨璁板綍
-      HdlFileLogic.Current.SaveFileContent(DirNameResourse.DeviceRoomIdFile, this.dicDeviceRoomId);
-
-      //娣诲姞鑷姩澶囦唤
-      HdlAutoBackupLogic.AddOrEditorFile(DirNameResourse.DeviceRoomIdFile);
-    }
-
-    /// <summary>
-    /// 鏍规嵁鎴块棿ID,绉婚櫎鎸囧畾鐨勭湡瀹炵墿鐞嗚澶囩殑鎵�灞炴埧闂磋褰�
-    /// </summary>
-    /// <param name="i_RoomId"></param>
-    public void DeleteRealDeviceByRoomId(string i_RoomId)
-    {
-      var listDeleteKey = new List<string>();
-      foreach (var deviceAddr in this.dicDeviceRoomId.Keys)
-      {
-        if (this.dicDeviceRoomId[deviceAddr] == i_RoomId
-            && listDeleteKey.Contains(deviceAddr) == false)
-        {
-          listDeleteKey.Add(deviceAddr);
-        }
-      }
-      //灏嗙湡瀹炵墿鐞嗚澶囦粠鎴块棿涓Щ闄�
-      this.DeleteRealDeviceFromRoom(listDeleteKey);
-    }
-
-    #endregion
-
-    #region 鈻� 璁惧鎺掑簭___________________________
-
-    /// <summary>
-    /// 璁惧鎺掑簭
-    /// </summary>
-    /// <param name="i_listDevice">璇风‘淇濊繖涓笢瑗垮凡缁忔寜mac鍜岀鐐规帓搴忎簡</param>
-    /// <returns></returns>
+    /// <summary>
+    /// 璁惧鎺掑簭
+    /// </summary>
+    /// <param name="i_listDevice">璇风‘淇濊繖涓笢瑗垮凡缁忔寜mac鍜岀鐐规帓搴忎簡</param>
+    /// <returns></returns>
     public List<CommonDevice> SortDeviceByBelongType(List<CommonDevice> i_listDevice)
     {
       //鑾峰彇鎺掑簭瑙勫垯
@@ -2709,10 +2544,10 @@
       return listSort;
     }
 
-    /// <summary>
-    /// 鑾峰彇璁惧鎵�灞炵被鍨嬬殑鐨勬帓搴忚鍒�
-    /// </summary>
-    /// <returns></returns>
+    /// <summary>
+    /// 鑾峰彇璁惧鎵�灞炵被鍨嬬殑鐨勬帓搴忚鍒�
+    /// </summary>
+    /// <returns></returns>
     public HashSet<DeviceBeloneType> GetBelongTypeSortRule()
     {
       //璋佸湪鍓嶉潰,璋佸氨浼樺厛鏄剧ず
@@ -2737,222 +2572,14 @@
       return list;
     }
 
-    #endregion
+    #endregion
 
-    #region 鈻� 涓�鑸柟娉昣__________________________
-
-    /// <summary>
-    /// 浠庣紦瀛樺彉閲忔娴嬭澶囨槸鍚﹀湪绾�
-    /// </summary>
-    /// <param name="i_device"></param>
-    /// <param name="checkAll">鏄惁妫�娴嬪叏閮ㄥ洖璺�</param>
-    /// <returns></returns>
-    public bool CheckDeviceIsOnline(CommonDevice i_device, bool checkAll = true)
-    {
-      if (checkAll == false)
-      {
-        //涓嶆娴嬪叏閮ㄥ洖璺�
-        return i_device.IsOnline == 1 || i_device.IsOnline == 2;
-      }
-      var listDevice = this.GetDevicesByMac(i_device.DeviceAddr, false);
-      foreach (var device in listDevice)
-      {
-        //0:绂荤嚎 1:鍦ㄧ嚎 2:姝e湪鍒锋柊鐘舵�� 
-        bool statu = i_device.IsOnline == 1 || i_device.IsOnline == 2;
-        if (statu == true)
-        {
-          //鏈変竴涓洖璺湪绾�,鍗冲湪绾�
-          return true;
-        }
-      }
-      return false;
-    }
-
-    /// <summary>
-    /// 鍒ゆ柇璇ヨ澶囨槸鍚﹀彲浠ユ樉绀哄湪涓婚〉
-    /// </summary>
-    /// <param name="i_device"></param>
-    /// <returns></returns>
-    public bool CanShowInHomeHomeMainPage(CommonDevice i_device)
-    {
-      if (i_device == null || i_device.Type == DeviceType.OnOffSwitch)//骞叉帴鐐�
-      {
-        //杩欎釜璁惧涓嶈浜�
-        return false;
-      }
-      if (i_device.Type == DeviceType.OnOffOutput || i_device.Type == DeviceType.AirSwitch)
-      {
-        //2020.03.23杩藉姞寮忔牱:鏈寚瀹氱被鍨嬬殑缁х數鍣�,涓嶆樉绀�
-        if (i_device.DfunctionType == DeviceFunctionType.A鏈畾涔�
-            || i_device.DfunctionType == DeviceFunctionType.A涓嶆寚瀹�)
-        {
-          return false;
-        }
-      }
-      //2020.03.30杩藉姞寮忔牱:濡傛灉鏄潰鏉跨殑娓╁害鎺㈠ご,涓嶆樉绀�
-      else if (i_device.Type == DeviceType.TemperatureSensor && ((TemperatureSensor)i_device).SensorDiv == 1)
-      {
-        var myInfoType = LocalDevice.Current.GetMyDeviceEnumInfo(new List<CommonDevice>() { i_device });
-        if (myInfoType.BeloneType == DeviceBeloneType.A鎸夐敭闈㈡澘)
-        {
-          return false;
-        }
-      }
-      else if (i_device.Type == DeviceType.FreshAirHumiditySensor)
-      {
-        //鏂伴鐨勬箍搴︿紶鎰熷櫒涓嶆樉绀�
-        return false;
-      }
-      if (((int)i_device.Type).ToString() == i_device.Type.ToString())
-      {
-        //姝よ澶噄d鍦―eviceType閲岄潰杩樻病鏈夋敞鍐�,鍒欎笉鑳芥樉绀哄嚭鏉�
-        return false;
-      }
-
-      //濡傛灉鏄柊椋庨潰鏉挎垨鐜闈㈡澘,鍒欓兘涓嶆樉绀轰换浣曞洖璺�
-      var myInfoTypeTemp = LocalDevice.Current.GetMyDeviceEnumInfo(new List<CommonDevice>() { i_device });
-      if (myInfoTypeTemp.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueFreshAir || myInfoTypeTemp.ConcreteType == DeviceConcreteType.ButtonPanel_SimpleEnvironment)
-      {
-        return false;
-      }
-      else if (myInfoTypeTemp.ConcreteType == DeviceConcreteType.ButtonPanel_SimpleMultifunction)
-      {
-        if (i_device.Type != DeviceType.OnOffOutput)
-        {
-          return false;
-        }
-      }
-      return true;
-    }
-
-    /// <summary>
-    /// 鍒ゆ柇鏄笉鏄渤涓滅殑璁惧
-    /// </summary>
-    /// <param name="device"></param>
-    /// <returns></returns>
-    public bool IsHdlDevice(CommonDevice device)
-    {
-      return device.ManufacturerName == "HDL";
-    }
-
-    /// <summary>
-    /// 鏄惁鏄疢ini澶滅伅
-    /// </summary>
-    /// <param name="device"></param>
-    /// <returns></returns>
-    public bool IsMiniLight(CommonDevice device)
-    {
-      return device.DriveCode != 0 && device.Type == DeviceType.ColorTemperatureLight;
-    }
-
-    /// <summary>
-    /// 鑾峰彇璁惧鐨勫敮涓�涓婚敭
-    /// </summary>
-    /// <param name="device"></param>
-    /// <returns></returns>
-    public string GetDeviceMainKeys(CommonDevice device)
-    {
-      return this.GetDeviceMainKeys(device.DeviceAddr, device.DeviceEpoint);
-    }
-
-    /// <summary>
-    /// 鑾峰彇璁惧鐨勫敮涓�涓婚敭
-    /// </summary>
-    /// <param name="DeviceAddr">MAC鍦板潃</param>
-    /// <param name="DeviceEpoint">绔彛鍙�</param>
-    /// <returns></returns>
-    public string GetDeviceMainKeys(string DeviceAddr, int DeviceEpoint)
-    {
-      return DeviceAddr + "_" + DeviceEpoint;
-    }
-
-    /// <summary>
-    /// 浜ゆ崲璁惧鐨勬ā鍧桰D
-    /// </summary>
-    /// <param name="modeId">妯″潡ID</param>
-    /// <returns></returns>
-    public bool ChangedDeviceModeId(ref string modeId)
-    {
-      if (this.dicDeviceModelIdChanged.ContainsKey(modeId) == false)
-      {
-        return false;
-      }
-      modeId = this.dicDeviceModelIdChanged[modeId];
-
-      return true;
-    }
-
-    /// <summary>
-    /// 鑾峰彇妯″潡ID鎵�鎸囧悜鐨勫悇绉嶅悕瀛椾俊鎭�
-    /// </summary>
-    /// <param name="strKey"></param>
-    /// <returns></returns>
-    public DeviceNameContent GetDeviceModelIdNameInfo(string strKey)
-    {
-      if (this.dicDeviceModelIdEnum.ContainsKey(strKey) == false)
-      {
-        return new DeviceNameContent();
-      }
-      return this.dicDeviceModelIdEnum[strKey];
-    }
-
-    /// <summary>
-    /// 闄勫姞璁惧鐨勭増鏈唬鍙�(杩斿洖Ver.XXX)
-    /// </summary>
-    /// <param name="versionValue">鐗堟湰鍙�</param>
-    /// <returns></returns>
-    public string AppendVersion(int versionValue)
-    {
-      //10101 3涓猙yte  鏄剧ず涓猴細ver.1.01.01
-      //涓棿閭d釜byte涓哄鏁版椂锛屼唬琛ㄦ槸娴嬭瘯鐗堟湰,鍦ㄦ樉绀烘渶鏂扮増鏈椂,涓嶉渶瑕佹樉绀猴紝浣嗘槸鍦ㄥ巻鍙茬増鏈偅閲屽彲浠ユ樉绀�
-      //涓棿閭d釜byte涓哄伓鏁版椂, 浠h〃鏄寮忕増鏈�
-
-      //鐩存帴鏄�10杩涘埗
-      string txt10 = Convert.ToString(versionValue).PadLeft(6, '0');
-      //杩欎釜鏄涓�浣�
-      int value1 = Convert.ToInt32(txt10.Substring(0, 2));
-      //杩欎釜鏄浜屼綅
-      string value2 = txt10.Substring(2, 2);
-      //杩欎釜鏄涓変綅
-      string value3 = txt10.Substring(4, 2);
-
-      //Ver.
-      string ver = Language.StringByID(R.MyInternationalizationString.uVersionAbbreviation);
-      return ver + value1 + "." + value2 + "." + value3;
-    }
-
-    /// <summary>
-    /// 鏄剧ず閿欒淇℃伅绐楀彛
-    /// </summary>
-    /// <param name="msg"></param>
-    private void ShowErrorMsg(string msg)
-    {
-      HdlThreadLogic.Current.RunMain(() =>
-      {
-        var contr = new ShowMsgControl(Phone.ShowMsgType.Error, msg);
-        contr.Show();
-      });
-    }
-
-    /// <summary>
-    /// 鏄剧ずTip淇℃伅绐楀彛
-    /// </summary>
-    /// <param name="msg"></param>
-    private void ShowTipMsg(string msg)
-    {
-      HdlThreadLogic.Current.RunMain(() =>
-      {
-        var contr = new ShowMsgControl(Phone.ShowMsgType.Tip, msg);
-        contr.Show();
-      });
-    }
-
-    #region 鈻� 鏅捐。鏋惰澶囨椂闂撮厤缃甠__________________________
-    /// <summary>
-    ///  璁剧疆鏅捐。鏋堕骞诧紝鐑樺共鍜屾秷姣掓椂闂�(璁剧疆澶辫触鏃讹紝浼氭樉绀轰俊鎭�)
-    ///  time:璁剧疆鐨勫垎閽�
-    /// </summary>
-    /// <param name="litdevice">璁惧瀵硅薄(MAC鍦板潃蹇呴』瑕佺浉鍚�)</param>
+    #region 鈻� 鏅捐。鏋惰澶囨椂闂撮厤缃甠__________________________
+    /// <summary>
+    ///  璁剧疆鏅捐。鏋堕骞诧紝鐑樺共鍜屾秷姣掓椂闂�(璁剧疆澶辫触鏃讹紝浼氭樉绀轰俊鎭�)
+    ///  time:璁剧疆鐨勫垎閽�
+    /// </summary>
+    /// <param name="litdevice">璁惧瀵硅薄(MAC鍦板潃蹇呴』瑕佺浉鍚�)</param>
     public async Task<bool> SetAirerTimeDevice(List<CommonDevice> listdevice, Airer airer, int time, int controlEpoint)
     {
       //铏氭嫙浣忓畢鐨勮瘽,涓嶉渶瑕�
@@ -3015,21 +2642,230 @@
       }
       return true;
     }
-    #endregion
-    #endregion
+    #endregion
+
+    #region 鈻� 涓�鑸柟娉昣__________________________
+
+    /// <summary>
+    /// 浠庣紦瀛樺彉閲忔娴嬭澶囨槸鍚﹀湪绾�
+    /// </summary>
+    /// <param name="i_device"></param>
+    /// <param name="checkAll">鏄惁妫�娴嬪叏閮ㄥ洖璺�</param>
+    /// <returns></returns>
+    public bool CheckDeviceIsOnline(CommonDevice i_device, bool checkAll = true)
+    {
+      if (checkAll == false)
+      {
+        //涓嶆娴嬪叏閮ㄥ洖璺�
+        return i_device.IsOnline == 1 || i_device.IsOnline == 2;
+      }
+      var listDevice = this.GetDevicesByMac(i_device.DeviceAddr, false);
+      foreach (var device in listDevice)
+      {
+        //0:绂荤嚎 1:鍦ㄧ嚎 2:姝e湪鍒锋柊鐘舵�� 
+        bool statu = i_device.IsOnline == 1 || i_device.IsOnline == 2;
+        if (statu == true)
+        {
+          //鏈変竴涓洖璺湪绾�,鍗冲湪绾�
+          return true;
+        }
+      }
+      return false;
+    }
+
+    /// <summary>
+    /// 鍒ゆ柇璇ヨ澶囨槸鍚﹀彲浠ユ樉绀哄湪涓婚〉
+    /// </summary>
+    /// <param name="i_device"></param>
+    /// <returns></returns>
+    public bool CanShowInHomeHomeMainPage(CommonDevice i_device)
+    {
+      if (i_device == null || i_device.Type == DeviceType.OnOffSwitch)//骞叉帴鐐�
+      {
+        //杩欎釜璁惧涓嶈浜�
+        return false;
+      }
+      if (i_device.Type == DeviceType.OnOffOutput || i_device.Type == DeviceType.AirSwitch)
+      {
+        //2020.03.23杩藉姞寮忔牱:鏈寚瀹氱被鍨嬬殑缁х數鍣�,涓嶆樉绀�
+        if (i_device.DfunctionType == DeviceFunctionType.A鏈畾涔�
+            || i_device.DfunctionType == DeviceFunctionType.A涓嶆寚瀹�)
+        {
+          return false;
+        }
+      }
+      //2020.03.30杩藉姞寮忔牱:濡傛灉鏄潰鏉跨殑娓╁害鎺㈠ご,涓嶆樉绀�
+      else if (i_device.Type == DeviceType.TemperatureSensor && ((TemperatureSensor)i_device).SensorDiv == 1)
+      {
+        var myInfoType = LocalDevice.Current.GetMyDeviceEnumInfo(new List<CommonDevice>() { i_device });
+        if (myInfoType.BeloneType == DeviceBeloneType.A鎸夐敭闈㈡澘)
+        {
+          return false;
+        }
+      }
+      else if (i_device.Type == DeviceType.FreshAirHumiditySensor)
+      {
+        //鏂伴鐨勬箍搴︿紶鎰熷櫒涓嶆樉绀�
+        return false;
+      }
+      if (((int)i_device.Type).ToString() == i_device.Type.ToString())
+      {
+        //姝よ澶噄d鍦―eviceType閲岄潰杩樻病鏈夋敞鍐�,鍒欎笉鑳芥樉绀哄嚭鏉�
+        return false;
+      }
+
+      //濡傛灉鏄柊椋庨潰鏉挎垨鐜闈㈡澘,鍒欓兘涓嶆樉绀轰换浣曞洖璺�
+      var myInfoTypeTemp = LocalDevice.Current.GetMyDeviceEnumInfo(new List<CommonDevice>() { i_device });
+      if (myInfoTypeTemp.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueFreshAir || myInfoTypeTemp.ConcreteType == DeviceConcreteType.ButtonPanel_SimpleEnvironment)
+      {
+        return false;
+      }
+      else if (myInfoTypeTemp.ConcreteType == DeviceConcreteType.ButtonPanel_SimpleMultifunction)
+      {
+        if (i_device.Type != DeviceType.OnOffOutput)
+        {
+          return false;
+        }
+      }
+      return true;
+    }
+
+    /// <summary>
+    /// 鍒ゆ柇鏄笉鏄渤涓滅殑璁惧
+    /// </summary>
+    /// <param name="device"></param>
+    /// <returns></returns>
+    public bool IsHdlDevice(CommonDevice device)
+    {
+      return device.ManufacturerName == "HDL";
+    }
+
+    /// <summary>
+    /// 鏄惁鏄疢ini澶滅伅
+    /// </summary>
+    /// <param name="device"></param>
+    /// <returns></returns>
+    public bool IsMiniLight(CommonDevice device)
+    {
+      return device.DriveCode != 0 && device.Type == DeviceType.ColorTemperatureLight;
+    }
+
+    /// <summary>
+    /// 鑾峰彇璁惧鐨勫敮涓�涓婚敭
+    /// </summary>
+    /// <param name="device"></param>
+    /// <returns></returns>
+    public string GetDeviceMainKeys(CommonDevice device)
+    {
+      return this.GetDeviceMainKeys(device.DeviceAddr, device.DeviceEpoint);
+    }
+
+    /// <summary>
+    /// 鑾峰彇璁惧鐨勫敮涓�涓婚敭
+    /// </summary>
+    /// <param name="DeviceAddr">MAC鍦板潃</param>
+    /// <param name="DeviceEpoint">绔彛鍙�</param>
+    /// <returns></returns>
+    public string GetDeviceMainKeys(string DeviceAddr, int DeviceEpoint)
+    {
+      return DeviceAddr + "_" + DeviceEpoint;
+    }
+
+    /// <summary>
+    /// 浜ゆ崲璁惧鐨勬ā鍧桰D
+    /// </summary>
+    /// <param name="modeId">妯″潡ID</param>
+    /// <returns></returns>
+    public bool ChangedDeviceModeId(ref string modeId)
+    {
+      if (this.dicDeviceModelIdChanged.ContainsKey(modeId) == false)
+      {
+        return false;
+      }
+      modeId = this.dicDeviceModelIdChanged[modeId];
+
+      return true;
+    }
+
+    /// <summary>
+    /// 鑾峰彇妯″潡ID鎵�鎸囧悜鐨勫悇绉嶅悕瀛椾俊鎭�
+    /// </summary>
+    /// <param name="strKey"></param>
+    /// <returns></returns>
+    public DeviceNameContent GetDeviceModelIdNameInfo(string strKey)
+    {
+      if (this.dicDeviceModelIdEnum.ContainsKey(strKey) == false)
+      {
+        return new DeviceNameContent();
+      }
+      return this.dicDeviceModelIdEnum[strKey];
+    }
+
+    /// <summary>
+    /// 闄勫姞璁惧鐨勭増鏈唬鍙�(杩斿洖Ver.XXX)
+    /// </summary>
+    /// <param name="versionValue">鐗堟湰鍙�</param>
+    /// <returns></returns>
+    public string AppendVersion(int versionValue)
+    {
+      //10101 3涓猙yte  鏄剧ず涓猴細ver.1.01.01
+      //涓棿閭d釜byte涓哄鏁版椂锛屼唬琛ㄦ槸娴嬭瘯鐗堟湰,鍦ㄦ樉绀烘渶鏂扮増鏈椂,涓嶉渶瑕佹樉绀猴紝浣嗘槸鍦ㄥ巻鍙茬増鏈偅閲屽彲浠ユ樉绀�
+      //涓棿閭d釜byte涓哄伓鏁版椂, 浠h〃鏄寮忕増鏈�
+
+      //鐩存帴鏄�10杩涘埗
+      string txt10 = Convert.ToString(versionValue).PadLeft(6, '0');
+      //杩欎釜鏄涓�浣�
+      int value1 = Convert.ToInt32(txt10.Substring(0, 2));
+      //杩欎釜鏄浜屼綅
+      string value2 = txt10.Substring(2, 2);
+      //杩欎釜鏄涓変綅
+      string value3 = txt10.Substring(4, 2);
+
+      //Ver.
+      string ver = Language.StringByID(R.MyInternationalizationString.uVersionAbbreviation);
+      return ver + value1 + "." + value2 + "." + value3;
+    }
+
+    /// <summary>
+    /// 鏄剧ず閿欒淇℃伅绐楀彛
+    /// </summary>
+    /// <param name="msg"></param>
+    private void ShowErrorMsg(string msg)
+    {
+      HdlThreadLogic.Current.RunMain(() =>
+      {
+        var contr = new ShowMsgControl(Phone.ShowMsgType.Error, msg);
+        contr.Show();
+      });
+    }
+
+    /// <summary>
+    /// 鏄剧ずTip淇℃伅绐楀彛
+    /// </summary>
+    /// <param name="msg"></param>
+    private void ShowTipMsg(string msg)
+    {
+      HdlThreadLogic.Current.RunMain(() =>
+      {
+        var contr = new ShowMsgControl(Phone.ShowMsgType.Tip, msg);
+        contr.Show();
+      });
+    }
+
+    #endregion
 
     //----------------------------------鍒嗗壊绾�(鑷畾涔夋帴鍙�)---------------------------------------------
 
-    #region 鈻� 鑾峰彇璁惧鍒楄〃鐨勬帴鍙________________
+    #region 鈻� 鑾峰彇璁惧鍒楄〃鐨勬帴鍙________________
 
-    /// <summary>
-    /// <para>浠庣綉鍏抽噸鏂拌幏鍙栬澶囧垪琛�(杩斿洖鐨勮澶囦负铏氭嫙鍑烘潵鐨�),涓�娆℃�у叏閮ㄨ幏鍙�</para>
-    /// <para>statu鐘舵�� -1:寮傚父,浼氳繑鍥瀗ull, 1锛氭病鏈夊紓甯�, 2:鏁版嵁鎺ユ敹涓嶅叏</para>
-    /// </summary>
-    /// <param name="gatewayId">缃戝叧id</param>
-    /// <param name="statu">鐘舵��-> -1:寮傚父,浼氳繑鍥瀗ull, 1锛氭病鏈夊紓甯�, 2:鏁版嵁鎺ユ敹涓嶅叏</param>
-    /// <param name="useLocalConnect">鏄惁浣跨敤鏈湴杩炴帴鍙戦��</param>
-    /// <param name="mode">鏄惁鏄剧ず閿欒</param>
+    /// <summary>
+    /// <para>浠庣綉鍏抽噸鏂拌幏鍙栬澶囧垪琛�(杩斿洖鐨勮澶囦负铏氭嫙鍑烘潵鐨�),涓�娆℃�у叏閮ㄨ幏鍙�</para>
+    /// <para>statu鐘舵�� -1:寮傚父,浼氳繑鍥瀗ull, 1锛氭病鏈夊紓甯�, 2:鏁版嵁鎺ユ敹涓嶅叏</para>
+    /// </summary>
+    /// <param name="gatewayId">缃戝叧id</param>
+    /// <param name="statu">鐘舵��-> -1:寮傚父,浼氳繑鍥瀗ull, 1锛氭病鏈夊紓甯�, 2:鏁版嵁鎺ユ敹涓嶅叏</param>
+    /// <param name="useLocalConnect">鏄惁浣跨敤鏈湴杩炴帴鍙戦��</param>
+    /// <param name="mode">鏄惁鏄剧ず閿欒</param>
     /// <returns></returns>
     public List<CommonDevice> GetDeviceListFromGateway(string gatewayId, ref int statu, bool useLocalConnect, ShowErrorMode mode = ShowErrorMode.YES)
     {
@@ -3048,7 +2884,7 @@
       var listDevice = new List<CommonDevice>();
       //缃戝叧閲岄潰鏈夊彲鑳戒細鏈夐噸澶嶇殑鍥炶矾
       var listCheck = new HashSet<string>();
-      ///Mac鐨勭鐐规�绘暟
+      ///Mac鐨勭鐐规�绘暟
       var dicMacPointCount = new Dictionary<string, int>();
 
       HdlGatewayReceiveLogic.Current.AddGatewayReceiveEvent(gatewayId, (topic, message) =>
@@ -3196,15 +3032,15 @@
       return listDevice;
     }
 
-    /// <summary>
-    /// 鏍规嵁搴忓彿鑾峰彇璁惧鍒楄〃淇℃伅(鍙湁鍦ㄨ澶囩己鎹熺殑鏃跺�欐墠璋冪敤杩欎釜鍑芥暟) 1:姝e父 2:璁惧缂烘崯
-    /// </summary>
-    /// <param name="gatewayId">缃戝叧id</param>
-    /// <param name="listDevice">瀛樺偍鐨勮澶囧璞¢泦鍚�</param>
-    /// <param name="listFucDevice">闇�瑕佸彉鏇村姛鑳界被鍨嬬殑鍥炶矾</param>
-    /// <param name="dicNowPointCount">褰撳墠宸茬粡鑾峰彇鐨凪ac鐨勭鐐规�绘暟</param>
-    /// <param name="useLocalConnect">鏄惁浣跨敤鏈湴杩炴帴鍙戦��</param>
-    /// <returns></returns>
+    /// <summary>
+    /// 鏍规嵁搴忓彿鑾峰彇璁惧鍒楄〃淇℃伅(鍙湁鍦ㄨ澶囩己鎹熺殑鏃跺�欐墠璋冪敤杩欎釜鍑芥暟) 1:姝e父 2:璁惧缂烘崯
+    /// </summary>
+    /// <param name="gatewayId">缃戝叧id</param>
+    /// <param name="listDevice">瀛樺偍鐨勮澶囧璞¢泦鍚�</param>
+    /// <param name="listFucDevice">闇�瑕佸彉鏇村姛鑳界被鍨嬬殑鍥炶矾</param>
+    /// <param name="dicNowPointCount">褰撳墠宸茬粡鑾峰彇鐨凪ac鐨勭鐐规�绘暟</param>
+    /// <param name="useLocalConnect">鏄惁浣跨敤鏈湴杩炴帴鍙戦��</param>
+    /// <returns></returns>
     public int GetDeviceListFromGatewayByMac(string gatewayId, ref List<CommonDevice> listDevice, ref List<CommonDevice> listFucDevice, Dictionary<string, int> dicNowPointCount, bool useLocalConnect)
     {
       //棣栧厛鍏堣幏鍙栬澶囩殑mac鍒楄〃
@@ -3250,11 +3086,11 @@
       return statu == 1 ? 1 : 2;
     }
 
-    /// <summary>
-    /// 鍦ㄨ澶嘥ype鍙樻洿鏃�,閲嶆柊New杩欎釜璁惧瀵硅薄(浠呴檺鍦ㄥ埛鏂拌澶囧垪琛ㄤ娇鐢�,骞朵笖鏈湴闇�瑕佸瓨鍦�)
-    /// </summary>
-    /// <param name="oldLocalDevice">鍘熸潵鐨勬湰鍦板璞�</param>
-    /// <param name="newDeviceType">鏂扮殑璁惧Type</param>
+    /// <summary>
+    /// 鍦ㄨ澶嘥ype鍙樻洿鏃�,閲嶆柊New杩欎釜璁惧瀵硅薄(浠呴檺鍦ㄥ埛鏂拌澶囧垪琛ㄤ娇鐢�,骞朵笖鏈湴闇�瑕佸瓨鍦�)
+    /// </summary>
+    /// <param name="oldLocalDevice">鍘熸潵鐨勬湰鍦板璞�</param>
+    /// <param name="newDeviceType">鏂扮殑璁惧Type</param>
     private bool ReNewDeviceOnTypeIsChanged(CommonDevice oldLocalDevice, DeviceType newDeviceType)
     {
       //鍏堣幏鍙栨湰鍦拌繖涓棫璁惧瀵硅薄鐨刯son
@@ -3289,47 +3125,47 @@
       return true;
     }
 
-    /// <summary>
-    /// 鎺ユ敹璁惧Mac鍒楄〃鐨勭被
-    /// </summary>
+    /// <summary>
+    /// 鎺ユ敹璁惧Mac鍒楄〃鐨勭被
+    /// </summary>
     private class ReceiptMacResult
     {
-      /// <summary>
-      /// mac鎬绘暟
-      /// </summary>
+      /// <summary>
+      /// mac鎬绘暟
+      /// </summary>
       public int MACDeviceTotalNum = 0;
-      /// <summary>
-      /// 璁惧mac鍒楄〃
-      /// </summary>
+      /// <summary>
+      /// 璁惧mac鍒楄〃
+      /// </summary>
       public List<MacResult> MACDeviceList = new List<MacResult>();
     }
 
-    /// <summary>
-    /// 璁惧Mac鐨勫唴瀹�
-    /// </summary>
+    /// <summary>
+    /// 璁惧Mac鐨勫唴瀹�
+    /// </summary>
     private class MacResult
     {
-      /// <summary>
-      /// 璁惧Mac
-      /// </summary>
+      /// <summary>
+      /// 璁惧Mac
+      /// </summary>
       public string MacAddr = string.Empty;
-      /// <summary>
-      /// mac绔偣鐨勬�绘暟
-      /// </summary>
+      /// <summary>
+      /// mac绔偣鐨勬�绘暟
+      /// </summary>
       public int EPTotalNum = 0;
     }
 
-    #endregion
+    #endregion
 
-    #region 鈻� 鍒涘缓鏂拌澶囧璞$浉鍏砡________________
+    #region 鈻� 鍒涘缓鏂拌澶囧璞$浉鍏砡________________
 
-    /// <summary>
-    /// 鏍规嵁璁惧绫诲瀷鍒涘缓璁惧瀵硅薄鐨勫疄渚�(鏁版嵁鍦―eviceInfo涓�)
-    /// </summary>
-    /// <param name="deviceType">璁惧绫诲瀷</param>
-    /// <param name="jobject">涓婚Data</param>
-    /// <param name="gwid">缃戝叧id</param>
-    /// <returns></returns>
+    /// <summary>
+    /// 鏍规嵁璁惧绫诲瀷鍒涘缓璁惧瀵硅薄鐨勫疄渚�(鏁版嵁鍦―eviceInfo涓�)
+    /// </summary>
+    /// <param name="deviceType">璁惧绫诲瀷</param>
+    /// <param name="jobject">涓婚Data</param>
+    /// <param name="gwid">缃戝叧id</param>
+    /// <returns></returns>
     private CommonDevice NewDeviceObjectByDeviceId(DeviceType deviceType, Newtonsoft.Json.Linq.JObject jobject, string gwid)
     {
       //鏍规嵁璁惧绫诲瀷鍒涘缓璁惧瀵硅薄鐨勫疄渚�
@@ -3353,11 +3189,11 @@
       return device;
     }
 
-    /// <summary>
-    /// 灏咲eviceInfo鐨勫睘鎬ц缃埌涓诲睘鎬т腑
-    /// </summary>
-    /// <param name="mainDevice">涓昏澶囧璞�</param>
-    /// <param name="device">璁剧疆婧愯澶囧璞�</param>
+    /// <summary>
+    /// 灏咲eviceInfo鐨勫睘鎬ц缃埌涓诲睘鎬т腑
+    /// </summary>
+    /// <param name="mainDevice">涓昏澶囧璞�</param>
+    /// <param name="device">璁剧疆婧愯澶囧璞�</param>
     public void SetDeviceInfoToMain(CommonDevice mainDevice, CommonDevice device)
     {
       mainDevice.DeviceName = device.DeviceInfo.MacName;
@@ -3416,12 +3252,12 @@
       }
     }
 
-    /// <summary>
-    /// 鏍规嵁璁惧Type鍒涘缓瀵瑰簲鐨勮澶囧璞�
-    /// </summary>
-    /// <param name="deviceType">璁惧Type</param>
-    /// <param name="DeviceEpoint">璁惧绔偣(娌℃湁浠�涔堢壒娈婇渶姹傜殑璇�,濉�0鍗冲彲)</param>
-    /// <returns></returns>
+    /// <summary>
+    /// 鏍规嵁璁惧Type鍒涘缓瀵瑰簲鐨勮澶囧璞�
+    /// </summary>
+    /// <param name="deviceType">璁惧Type</param>
+    /// <param name="DeviceEpoint">璁惧绔偣(娌℃湁浠�涔堢壒娈婇渶姹傜殑璇�,濉�0鍗冲彲)</param>
+    /// <returns></returns>
     public CommonDevice NewDeviceObjectByDeviceId(DeviceType deviceType, int DeviceEpoint)
     {
       //鏍规嵁璁惧绫诲瀷鍒涘缓璁惧瀵硅薄鐨勫疄渚�
@@ -3437,11 +3273,11 @@
       return device;
     }
 
-    /// <summary>
-    /// 缁欐柊璁惧璁剧疆涓婚敭灞炴��
-    /// </summary>
-    /// <param name="device">璁惧瀵硅薄</param>
-    /// <param name="jobject">涓婚Data</param>
+    /// <summary>
+    /// 缁欐柊璁惧璁剧疆涓婚敭灞炴��
+    /// </summary>
+    /// <param name="device">璁惧瀵硅薄</param>
+    /// <param name="jobject">涓婚Data</param>
     public void SetNewDeviceMainKeys(CommonDevice device, Newtonsoft.Json.Linq.JObject jobject)
     {
       //璁剧疆璁惧涓婚敭绫�
@@ -3450,16 +3286,16 @@
       device.DeviceEpoint = jobject.Value<int>("Epoint");
     }
 
-    #endregion
+    #endregion
 
-    #region 鈻� 鍒锋柊璁惧鍔熻兘绫诲瀷___________________
+    #region 鈻� 鍒锋柊璁惧鍔熻兘绫诲瀷___________________
 
-    /// <summary>
-    /// 鍒锋柊璁惧鐨勫姛鑳界被鍨�,濡傛灉杩斿洖true,浠h〃闇�瑕佸彟澶栬皟鐢ㄣ�怱endDeviceFunctionTypeToGateway銆戝嚱鏁�,sendFucType涓簍rue鏃惰嚜鍔ㄨ皟鐢�
-    /// </summary>
-    /// <param name="mainDevice">涓昏澶囧璞�</param>
-    /// <param name="device">璁剧疆婧愯澶囧璞�</param>
-    /// <param name="sendFucType">褰撻渶瑕佸彉鏇存椂,鏄惁鍙戦�佸姛鑳界被鍨嬪埌缃戝叧(姝ゅ彉閲忕粰鑾峰彇璁惧鍒楄〃鏈夌壒娈婂惈涔�)</param>
+    /// <summary>
+    /// 鍒锋柊璁惧鐨勫姛鑳界被鍨�,濡傛灉杩斿洖true,浠h〃闇�瑕佸彟澶栬皟鐢ㄣ�怱endDeviceFunctionTypeToGateway銆戝嚱鏁�,sendFucType涓簍rue鏃惰嚜鍔ㄨ皟鐢�
+    /// </summary>
+    /// <param name="mainDevice">涓昏澶囧璞�</param>
+    /// <param name="device">璁剧疆婧愯澶囧璞�</param>
+    /// <param name="sendFucType">褰撻渶瑕佸彉鏇存椂,鏄惁鍙戦�佸姛鑳界被鍨嬪埌缃戝叧(姝ゅ彉閲忕粰鑾峰彇璁惧鍒楄〃鏈夌壒娈婂惈涔�)</param>
     public bool RefreshDeviceFunctionType(CommonDevice mainDevice, CommonDevice device, bool sendFucType)
     {
       //濡傛灉鏄皟鍏夊櫒
@@ -3559,10 +3395,10 @@
       return false;
     }
 
-    /// <summary>
-    /// 鏍规嵁鍔熻兘绫诲瀷,閲嶆柊璁剧疆璁惧鍥炶矾鍥炬爣
-    /// </summary>
-    /// <param name="device"></param>
+    /// <summary>
+    /// 鏍规嵁鍔熻兘绫诲瀷,閲嶆柊璁剧疆璁惧鍥炶矾鍥炬爣
+    /// </summary>
+    /// <param name="device"></param>
     private void ResetIconPathByDeviceFunctionType(CommonDevice device)
     {
       if (device.IsCustomizeImage == true)
@@ -3583,15 +3419,15 @@
       }
     }
 
-    #endregion
+    #endregion
 
     //----------------------------------鍒嗗壊绾�(璁惧妯″潡ID)---------------------------------------------
 
-    #region 鈻� 鑷畾涔夎澶囨ā鍧桰D___________________
+    #region 鈻� 鑷畾涔夎澶囨ā鍧桰D___________________
 
-    /// <summary>
-    /// 鍒濆鍖栬澶囩殑妯″潡ID鐨勬灇涓�
-    /// </summary>
+    /// <summary>
+    /// 鍒濆鍖栬澶囩殑妯″潡ID鐨勬灇涓�
+    /// </summary>
     private void InitDeviceModelIdEnum()
     {
       //*********************************************************************
@@ -3666,27 +3502,27 @@
       this.dicPictrueShard["ButtonPanel_FourButtonScene"] = "ButtonPanel_Four";//绠�绾�4鎸夐敭鍦烘櫙闈㈡澘 娌跨敤 4鎸夐敭闈㈡澘鐨勫浘鏍�
     }
 
-    /// <summary>
-    /// 鑾峰彇璁惧鍚嶅瓧鏂囦欢鐨勫唴瀹�
-    /// </summary>
-    /// <returns></returns>
+    /// <summary>
+    /// 鑾峰彇璁惧鍚嶅瓧鏂囦欢鐨勫唴瀹�
+    /// </summary>
+    /// <returns></returns>
     private List<string> GetDeviceNameFileContent()
     {
       System.IO.StreamReader streamReader = null;
       var listText = new List<string>();
       try
       {
-#if iOS
-                string textFile = Foundation.NSBundle.MainBundle.PathForResource("DeviceName.ini", null);
-                streamReader = new System.IO.StreamReader(textFile, Encoding.UTF8);
-                string text;
-                while ((text = streamReader.ReadLine()) != null)
-                {
-                    listText.Add(text.Trim());
-                }
-                return listText;
-#endif
-#if Android
+#if iOS
+                string textFile = Foundation.NSBundle.MainBundle.PathForResource("DeviceName.ini", null);
+                streamReader = new System.IO.StreamReader(textFile, Encoding.UTF8);
+                string text;
+                while ((text = streamReader.ReadLine()) != null)
+                {
+                    listText.Add(text.Trim());
+                }
+                return listText;
+#endif
+#if Android
         var stream = Application.Activity.Assets.Open("DeviceName.ini");
         streamReader = new System.IO.StreamReader(stream, Encoding.UTF8);
         string text;
@@ -3696,7 +3532,7 @@
         }
         stream.Close();
         return listText;
-#endif
+#endif
       }
       catch
       {
@@ -3714,439 +3550,439 @@
       }
     }
 
-    #endregion
+    #endregion
   }
 
-  #region 鈻� 鑷畾涔夎澶囩被鍨媉________________________
+  #region 鈻� 鑷畾涔夎澶囩被鍨媉________________________
 
-  /// <summary>
-  /// <para>璁惧鐨勫叿浣撱�愯澶囩被鍨嬨��,鍙橀噺鍚嶅彲浠ヤ綔涓恒�愯澶囩被鍨嬨�戝浘鐗�,杩欎釜鍊兼槸鐬庡啓鐨�,娌′粈涔堢壒娈婃剰涔�</para>
-  /// </summary>
+  /// <summary>
+  /// <para>璁惧鐨勫叿浣撱�愯澶囩被鍨嬨��,鍙橀噺鍚嶅彲浠ヤ綔涓恒�愯澶囩被鍨嬨�戝浘鐗�,杩欎釜鍊兼槸鐬庡啓鐨�,娌′粈涔堢壒娈婃剰涔�</para>
+  /// </summary>
   public enum DeviceConcreteType
   {
-    /// <summary>
-    /// 鏈煡璁惧
-    /// </summary>
+    /// <summary>
+    /// 鏈煡璁惧
+    /// </summary>
     UnKownDevice = -1,
 
     //=========鈽呪槄绐楀笜绫�(100-199)鈽呪槄=========
-    /// <summary>
-    /// 绐楀笜
-    /// </summary>
+    /// <summary>
+    /// 绐楀笜
+    /// </summary>
     Curtain = -100,
-    /// <summary>
-    /// 鏅鸿兘寮�鍚堝笜鐢垫満 闀滃儚id锛�100
-    /// </summary>
+    /// <summary>
+    /// 鏅鸿兘寮�鍚堝笜鐢垫満 闀滃儚id锛�100
+    /// </summary>
     Curtain_AutoOpen = 100,
-    /// <summary>
-    /// 鏅鸿兘绠$姸鐢垫満 闀滃儚id锛�101
-    /// </summary>
+    /// <summary>
+    /// 鏅鸿兘绠$姸鐢垫満 闀滃儚id锛�101
+    /// </summary>
     Curtain_Siphonate = 101,
 
     //=========鈽呪槄鎸夐敭闈㈡澘绫�(200-1199)鈽呪槄=========
-    /// <summary>
-    /// 鎸夐敭闈㈡澘
-    /// </summary>
+    /// <summary>
+    /// 鎸夐敭闈㈡澘
+    /// </summary>
     ButtonPanel = -200,
-    /// <summary>
-    /// 4鎸夐敭澶氬姛鑳借Е鎽搁潰鏉�(甯�4璺户鐢靛櫒搴曞骇) 闀滃儚id锛�200
-    /// </summary>
+    /// <summary>
+    /// 4鎸夐敭澶氬姛鑳借Е鎽搁潰鏉�(甯�4璺户鐢靛櫒搴曞骇) 闀滃儚id锛�200
+    /// </summary>
     ButtonPanel_Four = 200,
-    /// <summary>
-    /// 3鎸夐敭澶氬姛鑳借Е鎽搁潰鏉�(甯�3璺户鐢靛櫒搴曞骇) 闀滃儚id锛�201
-    /// </summary>
+    /// <summary>
+    /// 3鎸夐敭澶氬姛鑳借Е鎽搁潰鏉�(甯�3璺户鐢靛櫒搴曞骇) 闀滃儚id锛�201
+    /// </summary>
     ButtonPanel_Three = 201,
-    /// <summary>
-    /// 2鎸夐敭澶氬姛鑳借Е鎽搁潰鏉�(甯�2璺户鐢靛櫒搴曞骇) 闀滃儚id锛�202
-    /// </summary>
+    /// <summary>
+    /// 2鎸夐敭澶氬姛鑳借Е鎽搁潰鏉�(甯�2璺户鐢靛櫒搴曞骇) 闀滃儚id锛�202
+    /// </summary>
     ButtonPanel_Two = 202,
-    /// <summary>
-    /// 12鎸夐敭澶氬姛鑳借Е鎽搁潰鏉�(甯�1璺户鐢靛櫒搴曞骇) 闀滃儚id锛�203
-    /// </summary>
+    /// <summary>
+    /// 12鎸夐敭澶氬姛鑳借Е鎽搁潰鏉�(甯�1璺户鐢靛櫒搴曞骇) 闀滃儚id锛�203
+    /// </summary>
     ButtonPanel_Twelve = 203,
-    /// <summary>
-    /// 4鎸夐敭澶氬姛鑳借Е鎽搁潰鏉匡紙鍙甫鐢垫簮搴曞骇锛� 闀滃儚id锛�210
-    /// </summary>
+    /// <summary>
+    /// 4鎸夐敭澶氬姛鑳借Е鎽搁潰鏉匡紙鍙甫鐢垫簮搴曞骇锛� 闀滃儚id锛�210
+    /// </summary>
     ButtonPanel_FourNotPower = 210,
-    /// <summary>
-    /// 绠�绾�4鎸夐敭闈㈡澘 闀滃儚id锛�220
-    /// </summary>
+    /// <summary>
+    /// 绠�绾�4鎸夐敭闈㈡澘 闀滃儚id锛�220
+    /// </summary>
     ButtonPanel_SimpleFour = 220,
-    /// <summary>
-    /// 绠�绾�3鎸夐敭闈㈡澘 闀滃儚id锛�221
-    /// </summary>
+    /// <summary>
+    /// 绠�绾�3鎸夐敭闈㈡澘 闀滃儚id锛�221
+    /// </summary>
     ButtonPanel_SimpleThree = 221,
-    /// <summary>
-    /// 绠�绾�2鎸夐敭闈㈡澘 闀滃儚id锛�222
-    /// </summary>
+    /// <summary>
+    /// 绠�绾�2鎸夐敭闈㈡澘 闀滃儚id锛�222
+    /// </summary>
     ButtonPanel_SimpleTwo = 222,
-    /// <summary>
-    /// 绠�绾�4鎸夐敭鍦烘櫙闈㈡澘 闀滃儚id锛�224
-    /// </summary>
+    /// <summary>
+    /// 绠�绾�4鎸夐敭鍦烘櫙闈㈡澘 闀滃儚id锛�224
+    /// </summary>
     ButtonPanel_FourButtonScene = 224,
-    /// <summary>
-    /// 绠�绾�2璺獥甯橀潰鏉� 闀滃儚id锛�226
-    /// </summary>
+    /// <summary>
+    /// 绠�绾�2璺獥甯橀潰鏉� 闀滃儚id锛�226
+    /// </summary>
     ButtonPanel_TwoButtonCurtain = 226,
-    /// <summary>
-    /// 鏂规偊2鎸夐敭杞昏Е寮忛潰鏉� 闀滃儚id锛�240
-    /// </summary>
+    /// <summary>
+    /// 鏂规偊2鎸夐敭杞昏Е寮忛潰鏉� 闀滃儚id锛�240
+    /// </summary>
     ButtonPanel_FangyueTwo = 240,
-    /// <summary>
-    /// 鏂规偊4鎸夐敭杞昏Е寮忛潰鏉� 闀滃儚id锛�241
-    /// </summary>
+    /// <summary>
+    /// 鏂规偊4鎸夐敭杞昏Е寮忛潰鏉� 闀滃儚id锛�241
+    /// </summary>
     ButtonPanel_FangyueFour = 241,
-    /// <summary>
-    /// 鏂规偊8鎸夐敭杞昏Е寮忛潰鏉� 闀滃儚id锛�242
-    /// </summary>
+    /// <summary>
+    /// 鏂规偊8鎸夐敭杞昏Е寮忛潰鏉� 闀滃儚id锛�242
+    /// </summary>
     ButtonPanel_FangyueEight = 242,
-    /// <summary>
-    /// 鏂规偊鏂伴闈㈡澘 闀滃儚id锛�250
-    /// </summary>
+    /// <summary>
+    /// 鏂规偊鏂伴闈㈡澘 闀滃儚id锛�250
+    /// </summary>
     ButtonPanel_FangyueFreshAir = 250,
-    /// <summary>
-    /// 鏂规偊鐜闈㈡澘 闀滃儚id锛�253
-    /// </summary>
+    /// <summary>
+    /// 鏂规偊鐜闈㈡澘 闀滃儚id锛�253
+    /// </summary>
     ButtonPanel_FangyueEnvironment = 253,
-    /// <summary>
-    /// 绐楀笜闈㈡澘 闀滃儚id锛�256
-    /// </summary>
+    /// <summary>
+    /// 绐楀笜闈㈡澘 闀滃儚id锛�256
+    /// </summary>
     ButtonPanel_Curtain = 256,
-    /// <summary>
-    /// 绠�绾﹀鍔熻兘闈㈡澘 闀滃儚ID锛�212
-    /// </summary>
+    /// <summary>
+    /// 绠�绾﹀鍔熻兘闈㈡澘 闀滃儚ID锛�212
+    /// </summary>
     ButtonPanel_SimpleMultifunction = 212,
-    /// <summary>
-    /// 绠�绾︾幆澧冮潰鏉�
-    /// </summary>
+    /// <summary>
+    /// 绠�绾︾幆澧冮潰鏉�
+    /// </summary>
     ButtonPanel_SimpleEnvironment = 230,
 
     //=========鈽呪槄PIR浼犳劅鍣ㄧ被(1200-1299)鈽呪槄=========
-    /// <summary>
-    /// 浼犳劅鍣�
-    /// </summary>
+    /// <summary>
+    /// 浼犳劅鍣�
+    /// </summary>
     Sensor = -1200,
-    /// <summary>
-    /// pir浼犳劅鍣�220 闀滃儚id锛�1200
-    /// </summary>
+    /// <summary>
+    /// pir浼犳劅鍣�220 闀滃儚id锛�1200
+    /// </summary>
     Sensor_Pir = 1200,
-    /// <summary>
-    /// 鐞冨舰绉诲姩浼犳劅鍣� 闀滃儚id锛�1205
-    /// </summary>
+    /// <summary>
+    /// 鐞冨舰绉诲姩浼犳劅鍣� 闀滃儚id锛�1205
+    /// </summary>
     Sensor_SphericalMotion = 1205,
 
     //=========鈽呪槄瀹夐槻绫讳紶鎰熷櫒绫�(1300-2299)鈽呪槄=========
-    /// <summary>
-    /// 鐕冩皵浼犳劅鍣�
-    /// </summary>
+    /// <summary>
+    /// 鐕冩皵浼犳劅鍣�
+    /// </summary>
     Sensor_CarbonMonoxide = 1300,
-    /// <summary>
-    /// 闂ㄧ獥浼犳劅鍣�
-    /// </summary>
+    /// <summary>
+    /// 闂ㄧ獥浼犳劅鍣�
+    /// </summary>
     Sensor_DoorWindow = 1301,
-    /// <summary>
-    /// 鐑熼浘浼犳劅鍣�
-    /// </summary>
+    /// <summary>
+    /// 鐑熼浘浼犳劅鍣�
+    /// </summary>
     Sensor_Fire = 1302,
-    /// <summary>
-    /// 绾㈠浼犳劅鍣�
-    /// </summary>
+    /// <summary>
+    /// 绾㈠浼犳劅鍣�
+    /// </summary>
     Sensor_Infrared = 1303,
-    /// <summary>
-    /// 姘翠镜浼犳劅鍣�
-    /// </summary>
+    /// <summary>
+    /// 姘翠镜浼犳劅鍣�
+    /// </summary>
     Sensor_Water = 1304,
-    /// <summary>
-    /// 绱ф�ユ寜閽�
-    /// </summary>
+    /// <summary>
+    /// 绱ф�ユ寜閽�
+    /// </summary>
     Sensor_EmergencyButton = 1305,
-    /// <summary>
-    /// 鍚搁《鐕冩皵浼犳劅鍣�
-    /// </summary>
+    /// <summary>
+    /// 鍚搁《鐕冩皵浼犳劅鍣�
+    /// </summary>
     Sensor_CeilingGas = 1306,
-    /// <summary>
-    /// PM2.5绌烘皵璐ㄩ噺浼犳劅鍣�
-    /// </summary>
+    /// <summary>
+    /// PM2.5绌烘皵璐ㄩ噺浼犳劅鍣�
+    /// </summary>
     Sensor_PMTwoPointFive = 1307,
-    /// <summary>
-    /// 娓╂箍搴︿紶鎰熷櫒(杩欎釜鍗曡瘝鎷奸敊浜�,浣嗘槸閿欎簡灏遍敊浜嗗憲,灏辫繖鏍蜂簡)
-    /// </summary>
+    /// <summary>
+    /// 娓╂箍搴︿紶鎰熷櫒(杩欎釜鍗曡瘝鎷奸敊浜�,浣嗘槸閿欎簡灏遍敊浜嗗憲,灏辫繖鏍蜂簡)
+    /// </summary>
     Sensor_TemperatureHumidity = 1308,
 
-    /// <summary>
-    /// 杩愬姩浼犳劅鍣�
-    /// </summary>
+    /// <summary>
+    /// 杩愬姩浼犳劅鍣�
+    /// </summary>
     Sensor_Motion = -1306,
-    /// <summary>
-    /// 閽ュ寵鎵�
-    /// </summary>
+    /// <summary>
+    /// 閽ュ寵鎵�
+    /// </summary>
     Sensor_Keyfob = -1307,
-    /// <summary>
-    /// 娓╁害浼犳劅鍣�(杩欎釜鍗曡瘝鎷奸敊浜�,浣嗘槸閿欎簡灏遍敊浜嗗憲,灏辫繖鏍蜂簡)
-    /// </summary>
+    /// <summary>
+    /// 娓╁害浼犳劅鍣�(杩欎釜鍗曡瘝鎷奸敊浜�,浣嗘槸閿欎簡灏遍敊浜嗗憲,灏辫繖鏍蜂簡)
+    /// </summary>
     Sensor_Temperature = -1309,
-    /// <summary>
-    /// 婀垮害浼犳劅鍣�
-    /// </summary>
+    /// <summary>
+    /// 婀垮害浼犳劅鍣�
+    /// </summary>
     Sensor_Humidity = -1310,
 
     //=========鈽呪槄缁х數鍣ㄧ被(2300-2499)鈽呪槄=========
-    /// <summary>
-    /// 缁х數鍣�
-    /// </summary>
+    /// <summary>
+    /// 缁х數鍣�
+    /// </summary>
     Relay = -2300,
-    /// <summary>
-    /// 涓夎矾缁х數鍣� 闀滃儚id锛�2300
-    /// </summary>
+    /// <summary>
+    /// 涓夎矾缁х數鍣� 闀滃儚id锛�2300
+    /// </summary>
     Relay_ThreeLoad = 2300,
-    /// <summary>
-    /// 鏂规偊鏂伴灏忔ā鍧� 闀滃儚id锛�2310
-    /// </summary>
+    /// <summary>
+    /// 鏂规偊鏂伴灏忔ā鍧� 闀滃儚id锛�2310
+    /// </summary>
     Relay_FangyueFreshAirModul = 2310,
-    /// <summary>
-    /// 鍥芥爣3璺�10A缁х數鍣ㄥ皬妯″潡 闀滃儚id锛�2301
-    /// </summary>
+    /// <summary>
+    /// 鍥芥爣3璺�10A缁х數鍣ㄥ皬妯″潡 闀滃儚id锛�2301
+    /// </summary>
     Relay_NationalThreeLoadTenA = 2301,
-    /// <summary>
-    /// 娆ф爣2璺�5A缁х數鍣ㄥ皬妯″潡 闀滃儚id锛�2315
-    /// </summary>
+    /// <summary>
+    /// 娆ф爣2璺�5A缁х數鍣ㄥ皬妯″潡 闀滃儚id锛�2315
+    /// </summary>
     Relay_EuropeanTwoLoadFiveA = 2315,
-    /// <summary>
-    /// 7璺共鎺ョ偣杈撳叆杈撳嚭妯″潡 闀滃儚id锛�2320
-    /// </summary>
+    /// <summary>
+    /// 7璺共鎺ョ偣杈撳叆杈撳嚭妯″潡 闀滃儚id锛�2320
+    /// </summary>
     Relay_SevenLoadInOutPutDryContact = 2320,
 
     //=========鈽呪槄璋冨厜鍣ㄧ被(2500-2799)鈽呪槄=========
-    /// <summary>
-    /// 璋冨厜鍣�
-    /// </summary>
+    /// <summary>
+    /// 璋冨厜鍣�
+    /// </summary>
     DimmableLight = -2500,
-    /// <summary>
-    /// 1璺皟鍏夊櫒灏忔ā鍧�
-    /// </summary>
+    /// <summary>
+    /// 1璺皟鍏夊櫒灏忔ā鍧�
+    /// </summary>
     DimmableLight_OneLoad = 2500,
 
     //=========鈽呪槄鏅鸿兘闂ㄩ攣绫�(2800-????)鈽呪槄=========
-    /// <summary>
-    /// 鏅鸿兘闂ㄩ攣
-    /// </summary>
+    /// <summary>
+    /// 鏅鸿兘闂ㄩ攣
+    /// </summary>
     IntelligentLocks = -2800,
-    /// <summary>
-    /// H06C
-    /// </summary>
+    /// <summary>
+    /// H06C
+    /// </summary>
     IntelligentLocks_H06C = 2800,
-    /// <summary>
-    /// S-One Pro
-    /// </summary>
+    /// <summary>
+    /// S-One Pro
+    /// </summary>
     IntelligentLocks_Sone = 2802,
-    /// <summary>
-    /// AT-1TF
-    /// </summary>
+    /// <summary>
+    /// AT-1TF
+    /// </summary>
     IntelligentLocks_AT1TF = 2803,
-    /// <summary>
-    /// AT-1F
-    /// </summary>
+    /// <summary>
+    /// AT-1F
+    /// </summary>
     IntelligentLocks_AT1F = 2804,
-    /// <summary>
-    /// AT-1T
-    /// </summary>
+    /// <summary>
+    /// AT-1T
+    /// </summary>
     IntelligentLocks_AT1T = 2805,
-    /// <summary>
-    /// HAT-1B
-    /// </summary>
+    /// <summary>
+    /// HAT-1B
+    /// </summary>
     IntelligentLocks_HAT1B = 2806,
-    /// <summary>
-    /// HAT-1T
-    /// </summary>
+    /// <summary>
+    /// HAT-1T
+    /// </summary>
     IntelligentLocks_HAT1T = 2807,
-    /// <summary>
-    /// AT-FT
-    /// </summary>
+    /// <summary>
+    /// AT-FT
+    /// </summary>
     IntelligentLocks_ATFT = 2808,
 
     //=========鈽呪槄褰╃伅绫�(????-????)鈽呪槄=========
-    /// <summary>
-    /// 褰╃伅
-    /// </summary>
+    /// <summary>
+    /// 褰╃伅
+    /// </summary>
     ColorLight = -10,
-    /// <summary>
-    /// 鑹叉俯鐏�(瀹冪殑闀滃儚ID鏈畾,鏆傚畾20000)
-    /// </summary>
+    /// <summary>
+    /// 鑹叉俯鐏�(瀹冪殑闀滃儚ID鏈畾,鏆傚畾20000)
+    /// </summary>
     ColorLight_Temperature = 20000,
 
     //=========鈽呪槄绌鸿皟(3600-3899)鈽呪槄=========
-    /// <summary>
-    /// 绌鸿皟
-    /// </summary>
+    /// <summary>
+    /// 绌鸿皟
+    /// </summary>
     AirConditioner = -3600,
-    /// <summary>
-    /// zigbee绌鸿皟缃戝叧妯″潡
-    /// </summary>
+    /// <summary>
+    /// zigbee绌鸿皟缃戝叧妯″潡
+    /// </summary>
     AirConditioner_ZbGateway = 3600,
 
     //=========鈽呪槄涓户鍣�(3900-3999)鈽呪槄=========
-    /// <summary>
-    /// 涓户鍣�
-    /// </summary>
+    /// <summary>
+    /// 涓户鍣�
+    /// </summary>
     Repeater = -3900,
-    /// <summary>
-    /// zigbee涓户鍣� 闀滃儚id锛�3900
-    /// </summary>
+    /// <summary>
+    /// zigbee涓户鍣� 闀滃儚id锛�3900
+    /// </summary>
     Repeater_Zigbee = 3900,
 
     //=========鈽呪槄绌烘皵寮�鍏崇被(4100-????)鈽呪槄=========
-    /// <summary>
-    /// 鏅鸿兘绌哄紑
-    /// </summary>
+    /// <summary>
+    /// 鏅鸿兘绌哄紑
+    /// </summary>
     AirSwitch = -4100,
-    /// <summary>
-    /// 鏅鸿兘绌哄紑 闀滃儚id锛�4100
-    /// </summary>
+    /// <summary>
+    /// 鏅鸿兘绌哄紑 闀滃儚id锛�4100
+    /// </summary>
     AirSwitch_CloudContr = 4100,
 
     //=========鈽呪槄杞崲鍣ㄧ被(4200-4699)鈽呪槄=========
-    /// <summary>
-    /// 杞崲鍣�
-    /// </summary>
+    /// <summary>
+    /// 杞崲鍣�
+    /// </summary>
     Converter = -4200,
-    /// <summary>
-    /// zigbee杞�485鍗忚杞崲鍣�
-    /// </summary>
+    /// <summary>
+    /// zigbee杞�485鍗忚杞崲鍣�
+    /// </summary>
     Converter_Zb485 = 4200,
-    /// <summary>
-    /// zigbee杞琤uspro鍗忚杞崲鍣�
-    /// </summary>
+    /// <summary>
+    /// zigbee杞琤uspro鍗忚杞崲鍣�
+    /// </summary>
     Converter_ZbBuspro = 4201,
 
     //=========鈽呪槄鏅捐。鏋剁被(5000-5199)鈽呪槄=========
-    /// <summary>
-    /// 鏅捐。鏋�
-    /// </summary>
+    /// <summary>
+    /// 鏅捐。鏋�
+    /// </summary>
     Airer = 5000,
 
     //=========鈽呪槄绌烘皵璐ㄩ噺浼犳劅鍣ㄧ被(5200-5399)鈽呪槄=========
-    /// <summary>
-    /// 绌烘皵璐ㄩ噺浼犳劅鍣�
-    /// </summary>
+    /// <summary>
+    /// 绌烘皵璐ㄩ噺浼犳劅鍣�
+    /// </summary>
     AirQualitySensor = 5200,
 
     //=========鈽呪槄鍏朵粬绫�(????-????)鈽呪槄=========
-    /// <summary>
-    /// 骞叉帴鐐�(娉ㄦ剰,瀹冨睘浜庡叾浠栫被,涓嶆槸璁惧绫诲瀷)
-    /// </summary>
+    /// <summary>
+    /// 骞叉帴鐐�(娉ㄦ剰,瀹冨睘浜庡叾浠栫被,涓嶆槸璁惧绫诲瀷)
+    /// </summary>
     DryContact = -10000,
-    /// <summary>
-    /// 鐏厜(娉ㄦ剰,瀹冨睘浜庡叾浠栫被,涓嶆槸璁惧绫诲瀷)
-    /// </summary>
+    /// <summary>
+    /// 鐏厜(娉ㄦ剰,瀹冨睘浜庡叾浠栫被,涓嶆槸璁惧绫诲瀷)
+    /// </summary>
     Light = -10001,
-    /// <summary>
-    /// 鎻掑骇(娉ㄦ剰,瀹冨睘浜庡叾浠栫被,涓嶆槸璁惧绫诲瀷)
-    /// </summary>
+    /// <summary>
+    /// 鎻掑骇(娉ㄦ剰,瀹冨睘浜庡叾浠栫被,涓嶆槸璁惧绫诲瀷)
+    /// </summary>
     Socket1 = -10002,
-    /// <summary>
-    /// 寮�鍏�(娉ㄦ剰,瀹冨睘浜庡叾浠栫被,涓嶆槸璁惧绫诲瀷)
-    /// </summary>
+    /// <summary>
+    /// 寮�鍏�(娉ㄦ剰,瀹冨睘浜庡叾浠栫被,涓嶆槸璁惧绫诲瀷)
+    /// </summary>
     Switch = -10003,
   }
 
-  /// <summary>
-  /// <para>璁惧鎵�灞炴灇涓�,杩欎釜鍊兼槸鐬庡啓鐨�,娌′粈涔堢壒娈婃剰涔�</para>
-  /// </summary>
+  /// <summary>
+  /// <para>璁惧鎵�灞炴灇涓�,杩欎釜鍊兼槸鐬庡啓鐨�,娌′粈涔堢壒娈婃剰涔�</para>
+  /// </summary>
   public enum DeviceBeloneType
   {
-    /// <summary>
-    /// 鏈煡璁惧
-    /// </summary>
+    /// <summary>
+    /// 鏈煡璁惧
+    /// </summary>
     A鏈煡璁惧 = 0,
-    /// <summary>
-    /// 绐楀笜(100-199)
-    /// </summary>
+    /// <summary>
+    /// 绐楀笜(100-199)
+    /// </summary>
     A绐楀笜 = 100,
-    /// <summary>
-    /// 鎸夐敭闈㈡澘(200-1199)
-    /// </summary>
+    /// <summary>
+    /// 鎸夐敭闈㈡澘(200-1199)
+    /// </summary>
     A鎸夐敭闈㈡澘 = 200,
-    /// <summary>
-    /// 浼犳劅鍣�(1200-2299)
-    /// </summary>
+    /// <summary>
+    /// 浼犳劅鍣�(1200-2299)
+    /// </summary>
     A浼犳劅鍣� = 1200,
-    /// <summary>
-    /// PM2.5绌烘皵璐ㄩ噺浼犳劅鍣�
-    /// </summary>
+    /// <summary>
+    /// PM2.5绌烘皵璐ㄩ噺浼犳劅鍣�
+    /// </summary>
     APM2鐐�5绌烘皵璐ㄩ噺浼犳劅鍣� = 1307,
-    /// <summary>
-    /// 缁х數鍣�(2300-2499)
-    /// </summary>
+    /// <summary>
+    /// 缁х數鍣�(2300-2499)
+    /// </summary>
     A缁х數鍣� = 2300,
-    /// <summary>
-    /// 鏂伴
-    /// </summary>
+    /// <summary>
+    /// 鏂伴
+    /// </summary>
     A鏂伴 = 2310,
-    /// <summary>
-    /// 璋冨厜鍣�(2500-2799)
-    /// </summary>
+    /// <summary>
+    /// 璋冨厜鍣�(2500-2799)
+    /// </summary>
     A璋冨厜鍣� = 2500,
-    /// <summary>
-    /// 鏅鸿兘闂ㄩ攣(2800-????)
-    /// </summary>
+    /// <summary>
+    /// 鏅鸿兘闂ㄩ攣(2800-????)
+    /// </summary>
     A鏅鸿兘闂ㄩ攣 = 2800,
-    /// <summary>
-    /// 绌鸿皟(3600-3899)
-    /// </summary>
+    /// <summary>
+    /// 绌鸿皟(3600-3899)
+    /// </summary>
     A绌鸿皟 = 3600,
-    /// <summary>
-    /// 涓户鍣�(3900-3999)
-    /// </summary>
+    /// <summary>
+    /// 涓户鍣�(3900-3999)
+    /// </summary>
     A涓户鍣� = 3900,
-    /// <summary>
-    /// 鏅鸿兘绌哄紑(4100-4199)
-    /// </summary>
+    /// <summary>
+    /// 鏅鸿兘绌哄紑(4100-4199)
+    /// </summary>
     A鏅鸿兘绌哄紑 = 4100,
-    /// <summary>
-    /// 杞崲鍣�(4200-4699)
-    /// </summary>
+    /// <summary>
+    /// 杞崲鍣�(4200-4699)
+    /// </summary>
     A杞崲鍣� = 4200,
-    /// <summary>
-    /// 鏅捐。鏋�(4200-4699)
-    /// </summary>
+    /// <summary>
+    /// 鏅捐。鏋�(4200-4699)
+    /// </summary>
     A鏅捐。鏋� = 5000,
-    /// <summary>
-    /// 绌烘皵璐ㄩ噺浼犳劅鍣�(5200-5399)
-    /// </summary>
+    /// <summary>
+    /// 绌烘皵璐ㄩ噺浼犳劅鍣�(5200-5399)
+    /// </summary>
     A绌烘皵璐ㄩ噺 = 5200,
-    /// <summary>
-    /// 褰╃伅
-    /// </summary>
+    /// <summary>
+    /// 褰╃伅
+    /// </summary>
     A褰╃伅 = 9,
-    /// <summary>
-    /// 娓╂箍搴︿紶鎰熷櫒
-    /// </summary>
+    /// <summary>
+    /// 娓╂箍搴︿紶鎰熷櫒
+    /// </summary>
     A娓╂箍搴︿紶鎰熷櫒 = 10,
-    /// <summary>
-    /// 娓╁害浼犳劅鍣�
-    /// </summary>
+    /// <summary>
+    /// 娓╁害浼犳劅鍣�
+    /// </summary>
     A娓╁害浼犳劅鍣� = 11,
-    /// <summary>
-    /// 婀垮害浼犳劅鍣�
-    /// </summary>
+    /// <summary>
+    /// 婀垮害浼犳劅鍣�
+    /// </summary>
     A婀垮害浼犳劅鍣� = 12,
-    /// <summary>
-    /// 寮�鍏�
-    /// </summary>
+    /// <summary>
+    /// 寮�鍏�
+    /// </summary>
     A寮�鍏� = 13,
-    /// <summary>
-    /// 鎻掑骇
-    /// </summary>
+    /// <summary>
+    /// 鎻掑骇
+    /// </summary>
     A鎻掑骇 = 14,
-    /// <summary>
-    /// 鐏厜
-    /// </summary>
+    /// <summary>
+    /// 鐏厜
+    /// </summary>
     A鐏厜 = 15,
-    /// <summary>
-    /// 骞叉帴鐐�
-    /// </summary>
+    /// <summary>
+    /// 骞叉帴鐐�
+    /// </summary>
     A骞叉帴鐐� = 16,
   }
 
-  #endregion
-}
+  #endregion
+}

--
Gitblit v1.8.0