From 21736b2944d5e88cd705a39ff87fd73d5a16e609 Mon Sep 17 00:00:00 2001 From: 黄学彪 <hxb@hdlchina.com.cn> Date: 星期六, 09 五月 2020 11:06:35 +0800 Subject: [PATCH] 安川 --- ZigbeeApp/Shared/Common/Device.cs | 165 +++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 147 insertions(+), 18 deletions(-) diff --git a/ZigbeeApp/Shared/Common/Device.cs b/ZigbeeApp/Shared/Common/Device.cs index 0f8e7c2..97dbff4 100755 --- a/ZigbeeApp/Shared/Common/Device.cs +++ b/ZigbeeApp/Shared/Common/Device.cs @@ -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]; @@ -596,6 +628,9 @@ /// <param name="deleteRoom">鏄惁浠庢埧闂村垹闄�</param> public void DeleteMemmoryDevice(CommonDevice device, bool deleteRoom = true) { + //鍒犻櫎缂撳瓨璁惧鐨勮瘽,涓婚〉闇�瑕侀噸鏂板埛鏂� + Phone.UserView.UserPage.Instance.RefreshForm = true; + if (deleteRoom == true) { //浠庢埧闂翠腑鍒犻櫎 @@ -679,7 +714,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 +1806,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 +1990,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 +2073,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骞叉帴鐐�); @@ -2031,7 +2089,62 @@ #endregion + #region 鈻� 鑾峰彇璁惧鍦ㄧ嚎鐘舵�佸垪琛╛______________ + + /// <summary> + /// 鑾峰彇璁惧鍦ㄧ嚎鐘舵�佸垪琛�(娉ㄦ剰,涓�涓澶囧彧杩斿洖涓�涓洖璺�) + /// </summary> + /// <param name="gwId">缃戝叧id</param> + /// <returns></returns> + public List<CommonDevice> GetDeviceOnlineList(string gwId) + { + var zbway = HdlGatewayLogic.Current.GetLocalGateway(gwId); + int statu = 0; + var listDevice = this.GetDeviceListFromGateway(zbway, ref statu, false, ShowErrorMode.NO); + if (statu == -1) + { + //褰撳嚭鐜板紓甯告椂,浣跨敤鍚庡鎿嶄綔,鐩存帴鑾峰彇鏈湴鐨勮澶囧垪琛� + listDevice = this.GetDeviceByGatewayID(gwId); + } + + var dicDevice = new Dictionary<string, CommonDevice>(); + foreach (var device in listDevice) + { + if (dicDevice.ContainsKey(device.DeviceAddr) == false) + { + dicDevice[device.DeviceAddr] = device; + continue; + } + //璁惧鏄惁澶勪簬鍦ㄧ嚎鐘舵�� + bool online = this.CheckDeviceIsOnline(device); + if (online == true) + { + //濡傛灉璁惧鍥炶矾鍦ㄧ嚎,鍒欎紭鍏堜娇鐢ㄥ湪绾跨殑鍥炶矾,鍚庢潵鐨勭洿鎺ヨ鐩� + dicDevice[device.DeviceAddr] = device; + } + } + var listReturn = new List<CommonDevice>(); + foreach (var device in dicDevice.Values) + { + listReturn.Add(device); + } + return listReturn; + } + + #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 +2705,23 @@ //=========鈽呪槄瀹夐槻绫讳紶鎰熷櫒绫�(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";//鍚搁《鐕冩皵浼犳劅鍣� + + //PM2.5绌烘皵璐ㄩ噺浼犳劅鍣� 銆愯璁惧灞炰簬绗笁鏂硅澶囷紝娌℃湁闀滃儚ID銆� + this.dicDeviceModelIdEnum["SZ_PM100"] = "1307-1200-60000";//PM2.5绌烘皵璐ㄩ噺浼犳劅鍣� //=========鈽呪槄缁х數鍣ㄧ被(2300-2499)鈽呪槄========= this.dicDeviceModelIdEnum["MPR0310-ZB.10"] = "2300-2300-60001";//3璺户鐢靛櫒灏忔ā鍧� @@ -2651,9 +2768,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 @@ -2793,6 +2909,15 @@ /// 绱ф�ユ寜閽� /// </summary> Sensor_EmergencyButton = 1305, + /// <summary> + /// 鍚搁《鐕冩皵浼犳劅鍣� + /// </summary> + Sensor_CeilingGas = 1306, + /// <summary> + /// PM2.5绌烘皵璐ㄩ噺浼犳劅鍣� + /// </summary> + Sensor_PMTwoPointFive = 1307, + /// <summary> /// 杩愬姩浼犳劅鍣� /// </summary> @@ -2948,6 +3073,10 @@ /// </summary> A缁х數鍣� = 2300, /// <summary> + /// 鏂伴 + /// </summary> + A鏂伴 = 2310, + /// <summary> /// 璋冨厜鍣�(2500-2799) /// </summary> A璋冨厜鍣� = 2500, @@ -3002,7 +3131,7 @@ /// <summary> /// 骞叉帴鐐� /// </summary> - A骞叉帴鐐� = 16 + A骞叉帴鐐� = 16, } #endregion -- Gitblit v1.8.0