From c1de48884fa145a16a0f8bcee93274dcfaa0ff82 Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期四, 07 五月 2020 10:40:28 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev-tzy' into dev-2020xm

---
 ZigbeeApp/Shared/Common/Device.cs |  118 ++++++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 96 insertions(+), 22 deletions(-)

diff --git a/ZigbeeApp/Shared/Common/Device.cs b/ZigbeeApp/Shared/Common/Device.cs
old mode 100755
new mode 100644
index 0f8e7c2..30db26d
--- a/ZigbeeApp/Shared/Common/Device.cs
+++ b/ZigbeeApp/Shared/Common/Device.cs
@@ -115,7 +115,7 @@
             {
                 CommonDevice device = null;
                 //鍙嶅簭鍒楀寲涓烘寚瀹氱殑绫伙紝涓嶇劧鏁版嵁浼氫涪澶辫�屽鑷存棤娉曞己杞�
-                try 
+                try
                 {
                     device = CommonDevice.CommonDeviceByFilePath(file);
                 }
@@ -271,7 +271,7 @@
                 //娣诲姞缂撳瓨
                 this.AddDeviceToMemory(ref device);
 
-                //绉婚櫎瀛樺湪鐨勮澶囧唴瀛� 
+                //绉婚櫎瀛樺湪鐨勮澶囧唴瀛�
                 string maikey = this.GetDeviceMainKeys(device);
                 if (dicExist.ContainsKey(maikey) == true)
                 {
@@ -400,6 +400,27 @@
             }
         }
 
+        /// <summary>
+        /// 娣诲姞铏氭嫙璁惧鍒扮紦瀛�
+        /// </summary>
+        /// <param name="device">璁惧瀵硅薄</param>
+        public void AddVirtualDeviceToMemory(CommonDevice device)
+        {
+            string mainKeys = this.GetDeviceMainKeys(device);
+            this.dicAllDevice[mainKeys] = device;
+
+            //璁惧鍥炶矾鏀堕泦
+            if (this.dicDeviceEpoint.ContainsKey(device.DeviceAddr) == false)
+            {
+                this.dicDeviceEpoint[device.DeviceAddr] = new HashSet<int>();
+            }
+            if (this.dicDeviceEpoint[device.DeviceAddr].Contains(device.DeviceEpoint) == false)
+            {
+                this.dicDeviceEpoint[device.DeviceAddr].Add(device.DeviceEpoint);
+            }
+            device.ReSave();
+        }
+
         #endregion
 
         #region 鈻� 淇敼璁惧___________________________
@@ -416,6 +437,12 @@
             this.SetEpointName(device, newName);
 
             this.BackupDeviceAfterReName(device);
+
+            //濡傛灉浣忓畢涓鸿櫄鎷熶綇瀹�
+            if (Common.Config.Instance.Home.IsVirtually == true)
+            {
+                return true;
+            }
 
             //涓嶅啀妫�娴嬪悕瀛楁槸鍚︿竴鏍�
             //鎴愬憳鍙兘淇敼鑷繁鏈湴鐨勫悕瀛�
@@ -462,6 +489,11 @@
 
                 //鏇存敼鍚嶅瓧鍚庯紝鍒锋柊璁惧缂撳瓨
                 this.BackupDeviceAfterReName(device2);
+            }
+            //濡傛灉浣忓畢涓鸿櫄鎷熶綇瀹�
+            if (Common.Config.Instance.Home.IsVirtually == true)
+            {
+                return true;
             }
 
             CommonDevice device = listDevice[0];
@@ -679,7 +711,11 @@
         /// <param name="device"></param>
         public void SetFixedPositionCommand(CommonDevice device)
         {
-            device.IdentifyControl(device.DeviceAddr, device.DeviceEpoint, 5);
+            //濡傛灉褰撳墠浣忓畢涓嶆槸铏氭嫙浣忓畢
+            if (Common.Config.Instance.Home.IsVirtually == false)
+            {
+                device.IdentifyControl(device.DeviceAddr, device.DeviceEpoint, 5);
+            }
         }
 
         /// <summary>
@@ -1767,6 +1803,14 @@
                 }
                 info.ObjectTypeNameId = 60000;//浼犳劅鍣�
             }
+            //14鏂伴璁惧
+            else if (dicType.ContainsKey(DeviceType.FreshAir) == true)
+            {
+                info.ConcreteTextId = R.MyInternationalizationString.uDeviceModelId2310;
+                info.BeloneType = DeviceBeloneType.A鏂伴;
+                info.ConcreteType = DeviceConcreteType.Relay_FangyueFreshAirModul;
+                info.ObjectTypeNameId = 60011;//鏂伴
+            }
 
             int value = (int)info.BeloneType;
             if (dicDeviceAllNameID.ContainsKey("uDeviceBelongId" + value) == true)
@@ -1943,9 +1987,19 @@
         /// <param name="listMac">璁惧Mac鍦板潃</param>
         public void DeleteRealDeviceFromRoom(List<string> listMac)
         {
+            bool save = false;
             foreach (var deviceMacAddr in listMac)
             {
-                this.dicDeviceRoomId.Remove(deviceMacAddr);
+                if (this.dicDeviceRoomId.ContainsKey(deviceMacAddr) == true)
+                {
+                    this.dicDeviceRoomId.Remove(deviceMacAddr);
+                    save = true;
+                }
+            }
+            if (save == false)
+            {
+                //娌℃湁鏀瑰彉,涓嶉渶瑕佷繚瀛�
+                return;
             }
             //淇濆瓨璁板綍
             string fullName = UserCenterLogic.CombinePath(DirNameResourse.DeviceRoomIdFile);
@@ -2016,6 +2070,7 @@
             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骞叉帴鐐�);
@@ -2025,13 +2080,24 @@
 
             //鍏朵粬鐨勭湅鐫�鍔炲憲,閮芥槸鎺掑湪鍚庨潰鐨�,閮藉綊涓鸿繖涓睘鎬�
             list.Add(DeviceBeloneType.A鏈煡璁惧);
-            
+
             return list;
         }
 
         #endregion
 
         #region 鈻� 涓�鑸柟娉昣__________________________
+
+        /// <summary>
+        /// 浠庣紦瀛樺彉閲忔娴嬭澶囨槸鍚﹀湪绾�
+        /// </summary>
+        /// <param name="i_device"></param>
+        /// <returns></returns>
+        public bool CheckDeviceIsOnline(CommonDevice i_device)
+        {
+            //0:绂荤嚎 1:鍦ㄧ嚎 2:姝e湪鍒锋柊鐘舵��
+            return i_device.IsOnline == 1 || i_device.IsOnline == 2;
+        }
 
         /// <summary>
         /// 鍒ゆ柇璇ヨ澶囨槸鍚﹀彲浠ユ樉绀哄湪涓婚〉
@@ -2592,19 +2658,20 @@
 
             //=========鈽呪槄瀹夐槻绫讳紶鎰熷櫒绫�(1300-2299)鈽呪槄=========
             //杩欓噷鏄害涔愬厠鐨�
-            this.dicDeviceModelIdEnum["MULTI-GASE--EA07"] = "1300-1300-60000";//鐕冩皵浼犳劅鍣�
-            this.dicDeviceModelIdEnum["MULTI-MECI--EA01"] = "1301-1300-60000";//闂ㄧ獥纾佷紶鎰熷櫒
-            this.dicDeviceModelIdEnum["MULTI-FIRE--EA05"] = "1302-1300-60000";//鐑熼浘浼犳劅鍣�
-            this.dicDeviceModelIdEnum["MULTI-MOTI--EA04"] = "1303-1300-60000";//绾㈠浼犳劅鍣�
-            this.dicDeviceModelIdEnum["MULTI-WATE--EA02"] = "1304-1300-60000";//姘存蹈浼犳劅鍣�
-            this.dicDeviceModelIdEnum["MULTI-BURO--EA06"] = "1305-1300-60000";//绱ф�ユ寜閿�
+            this.dicDeviceModelIdEnum["MULTI-GASE--EA07"] = "1300-1200-60000";//鐕冩皵浼犳劅鍣�
+            this.dicDeviceModelIdEnum["MULTI-MECI--EA01"] = "1301-1200-60000";//闂ㄧ獥纾佷紶鎰熷櫒
+            this.dicDeviceModelIdEnum["MULTI-FIRE--EA05"] = "1302-1200-60000";//鐑熼浘浼犳劅鍣�
+            this.dicDeviceModelIdEnum["MULTI-MOTI--EA04"] = "1303-1200-60000";//绾㈠浼犳劅鍣�
+            this.dicDeviceModelIdEnum["MULTI-WATE--EA02"] = "1304-1200-60000";//姘存蹈浼犳劅鍣�
+            this.dicDeviceModelIdEnum["MULTI-BURO--EA06"] = "1305-1200-60000";//绱ф�ユ寜閿�
             //杩欓噷鏄渤涓滅殑
-            this.dicDeviceModelIdEnum["MSG01/M-ZB.10"] = "1300-1300-60000";//鐕冩皵浼犳劅鍣�
-            this.dicDeviceModelIdEnum["MSDC01/M-ZB.10"] = "1301-1300-60000";//闂ㄧ獥纾佷紶鎰熷櫒
-            this.dicDeviceModelIdEnum["MSS01/M-ZB.10"] = "1302-1300-60000";//鐑熼浘浼犳劅鍣�
-            this.dicDeviceModelIdEnum["MSPIR01/M-ZB.10"] = "1303-1300-60000";//绾㈠浼犳劅鍣�
-            this.dicDeviceModelIdEnum["MSW01/M-ZB.10"] = "1304-1300-60000";//姘存蹈浼犳劅鍣�
-            this.dicDeviceModelIdEnum["MBU01/M-ZB.10"] = "1305-1300-60000";//绱ф�ユ寜閿�
+            this.dicDeviceModelIdEnum["MSG01/M-ZB.10"] = "1300-1200-60000";//鐕冩皵浼犳劅鍣�
+            this.dicDeviceModelIdEnum["MSDC01/M-ZB.10"] = "1301-1200-60000";//闂ㄧ獥纾佷紶鎰熷櫒
+            this.dicDeviceModelIdEnum["MSS01/M-ZB.10"] = "1302-1200-60000";//鐑熼浘浼犳劅鍣�
+            this.dicDeviceModelIdEnum["MSPIR01/M-ZB.10"] = "1303-1200-60000";//绾㈠浼犳劅鍣�
+            this.dicDeviceModelIdEnum["MSW01/M-ZB.10"] = "1304-1200-60000";//姘存蹈浼犳劅鍣�
+            this.dicDeviceModelIdEnum["MBU01/M-ZB.10"] = "1305-1200-60000";//绱ф�ユ寜閿�
+            this.dicDeviceModelIdEnum["MGCD01/ZB.10"] = "1306-1200-60000";//鍚搁《鐕冩皵浼犳劅鍣�
 
             //=========鈽呪槄缁х數鍣ㄧ被(2300-2499)鈽呪槄=========
             this.dicDeviceModelIdEnum["MPR0310-ZB.10"] = "2300-2300-60001";//3璺户鐢靛櫒灏忔ā鍧�
@@ -2651,9 +2718,8 @@
             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鐨勫浘鏍�
-            this.dicPictrueShard["Relay_FangyueFreshAirModul"] = "Relay_ThreeLoad";//鏂规偊鏂伴灏忔ā鍧楀浘鐗囨部鐢�3璺户鐢靛櫒鐨勫浘鏍�
-
+            this.dicPictrueShard["IntelligentLocks_Sone"] = "IntelligentLocks_H06C";//S-one鐨勯棬閿佸浘鐗� 娌跨敤 H06C鐨勫浘鏍�
+            this.dicPictrueShard["Relay_FangyueFreshAirModul"] = "Relay_ThreeLoad";//鏂规偊鏂伴灏忔ā鍧楀浘鐗� 娌跨敤 3璺户鐢靛櫒鐨勫浘鏍�
         }
 
         #endregion
@@ -2794,6 +2860,10 @@
         /// </summary>
         Sensor_EmergencyButton = 1305,
         /// <summary>
+        /// 鍚搁《鐕冩皵浼犳劅鍣�
+        /// </summary>
+        Sensor_CeilingGas = 1306,
+        /// <summary>
         /// 杩愬姩浼犳劅鍣�
         /// </summary>
         Sensor_Motion = -1306,
@@ -2827,7 +2897,7 @@
         /// 鏂规偊鏂伴灏忔ā鍧� 闀滃儚id锛�2310
         /// </summary>
         Relay_FangyueFreshAirModul = 2310,
-		
+
         //=========鈽呪槄璋冨厜鍣ㄧ被(2500-2799)鈽呪槄=========
         /// <summary>
         /// 璋冨厜鍣�
@@ -2948,6 +3018,10 @@
         /// </summary>
         A缁х數鍣� = 2300,
         /// <summary>
+        /// 鏂伴
+        /// </summary>
+        A鏂伴 = 2310,
+        /// <summary>
         /// 璋冨厜鍣�(2500-2799)
         /// </summary>
         A璋冨厜鍣� = 2500,
@@ -3002,7 +3076,7 @@
         /// <summary>
         /// 骞叉帴鐐�
         /// </summary>
-        A骞叉帴鐐� = 16
+        A骞叉帴鐐� = 16,
     }
 
     #endregion

--
Gitblit v1.8.0