From 48ba446936b51fffafa7c3600c0dadc6ac0e8c20 Mon Sep 17 00:00:00 2001 From: 陈嘉乐 <cjl@hdlchina.com.cn> Date: 星期五, 10 七月 2020 10:52:13 +0800 Subject: [PATCH] 2020-07-10-01 --- ZigbeeApp/Shared/Common/Device.cs | 1360 ++++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 1,071 insertions(+), 289 deletions(-) diff --git a/ZigbeeApp/Shared/Common/Device.cs b/ZigbeeApp/Shared/Common/Device.cs index 9ca9408..bada159 100755 --- a/ZigbeeApp/Shared/Common/Device.cs +++ b/ZigbeeApp/Shared/Common/Device.cs @@ -45,12 +45,14 @@ { lock (dicAllDevice) { - var list = new List<CommonDevice>(); - foreach (var device in dicAllDevice.Values) + //鍏堣幏鍙栧叏閮ㄧ殑Mac + var listMac = new List<string>(); + foreach (var strMac in this.dicDeviceEpoint.Keys) { - list.Add(device); + listMac.Add(strMac); } - return list; + //鏍规嵁MAC鍦板潃,鑾峰彇鍏ㄩ儴鍥炶矾鐨勮澶囧璞�(寮哄埗鎺掑簭) + return this.GetDevicesByMac(listMac); } } } @@ -60,9 +62,9 @@ /// </summary> public const string deviceModelIdName = "uDeviceModelId"; /// <summary> - /// R鏂囦欢閲岄潰璁惧榛樿鍚嶅瓧鐨処D + /// R鏂囦欢閲岄潰鎵�鏈夎澶囧悕瀛楃殑ID /// </summary> - public Dictionary<string, int> dicDeviceDefultNameID = null; + public Dictionary<string, int> dicDeviceAllNameID = null; /// <summary> /// 璁惧鐨勬ā鍧桰D鐨勬灇涓�(keys:妯″潡ID value:璁惧鍏蜂綋绫诲瀷鍊�-璁惧鎵�灞炵被鍨嬪��(鑷畾涔夌殑鍊�,鍢�,鍙涓嶉噸澶嶅氨鍙互) /// </summary> @@ -121,12 +123,6 @@ if (device == null || device.CurrentGateWayId == null) { -#if DEBUG - //璋冩煡,涓轰粈涔堝畠浼氭妸鍏ㄩ儴璁惧鍒犳帀锛� - string file1 = UserCenterLogic.CombinePath(file); - string file2 = UserCenterLogic.CombinePath("Back_" + file); - System.IO.File.Copy(file1, file2, true); -#endif //澶辨晥鐨勬枃浠讹紝娌℃湁缃戝叧id鐨勯兘鍒犻櫎鎺� Global.DeleteFilebyHomeId(file); continue; @@ -141,12 +137,6 @@ } else { -#if DEBUG - //璋冩煡,涓轰粈涔堝畠浼氭妸鍏ㄩ儴璁惧鍒犳帀锛� - string file1 = UserCenterLogic.CombinePath(file); - string file2 = UserCenterLogic.CombinePath("Back_" + file); - System.IO.File.Copy(file1, file2, true); -#endif //濡傛灉鏄富浜�,鎴栬�呯鐞嗗憳,閭d箞杩欎釜鏂囦欢鏄潪娉曠殑,鐩存帴鍒犻櫎 Global.DeleteFilebyHomeId(file); continue; @@ -209,7 +199,7 @@ var listGateway = HdlGatewayLogic.Current.GetAllLocalGateway(); foreach (var gateway in listGateway) { - string gwId = HdlGatewayLogic.Current.GetGatewayId(gateway); + string gwId = gateway.GwId; if (listId.Contains(gwId) == false) { //杩欎釜缃戝叧瀵逛簬褰撳墠杩欎釜鎴愬憳鏉ヨ鏄潪娉曠殑 @@ -240,8 +230,17 @@ listDevice.AddRange(list); //鑾峰彇杩欎釜缃戝叧鐨勬湰鍦版墍鏈夎澶� - string gwID = HdlGatewayLogic.Current.GetGatewayId(zbGateway); - List<CommonDevice> listLocalDevices = this.GetDeviceByGatewayID(gwID, true); + string gwID = zbGateway.GwId; + List<CommonDevice> listLocalDevices = this.GetDeviceByGatewayID(gwID); + //鑾峰彇ota璁惧 + foreach (var ota in this.dicOTADevice.Values) + { + if (ota.CurrentGateWayId == gwID) + { + listLocalDevices.Add(ota); + } + } + Dictionary<string, CommonDevice> dicExist = new Dictionary<string, CommonDevice>(); foreach (var device in listLocalDevices) { @@ -281,9 +280,9 @@ //鍦ㄧ鐐瑰悕瀛楃殑鍚庨潰闄勫姞銆愬洖璺�戝瓧鏍� dName += "(" + device.DeviceEpoint + Language.StringByID(R.MyInternationalizationString.uDeviceCircuit) + ")"; - HdlThreadLogic.Current.RunThread(async () => + HdlThreadLogic.Current.RunThread(() => { - await this.ReName(device, dName, ShowErrorMode.NO); + this.ReName(device, dName, ShowErrorMode.NO); }); } } @@ -295,6 +294,7 @@ } //濡傛灉鏈湴鍜岀綉鍏崇殑璁惧涓嶄竴鑷寸殑鏃跺�欙紝鍒犻櫎鏈湴鐨勮澶� + var listDeleteMac = new List<string>(); foreach (var device in dicExist.Values) { if (device is OTADevice) @@ -305,6 +305,16 @@ { this.DeleteMemmoryDevice(device, true); } + if (listDeleteMac.Contains(device.DeviceAddr) == false) + { + //鏀堕泦琚垹闄ょ殑Mac + listDeleteMac.Add(device.DeviceAddr); + } + } + if (listDeleteMac.Count > 0) + { + //灏嗙湡瀹炵墿鐞嗚澶囦粠鎴块棿涓Щ闄� + this.DeleteRealDeviceFromRoom(listDeleteMac); } return statu; @@ -378,28 +388,57 @@ } } + /// <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 鈻� 淇敼璁惧___________________________ /// <summary> - /// 鏇存敼鍚嶅瓧骞朵笖鍒锋柊缂撳瓨(淇敼澶辫触鏃讹紝浼氭樉绀轰俊鎭�) + /// 鏇存敼绔偣鍚嶅瓧骞朵笖鍒锋柊缂撳瓨(淇敼澶辫触鏃讹紝浼氭樉绀轰俊鎭�) /// </summary> /// <param name="device">璁惧瀵硅薄</param> /// <param name="newName">鏂板悕瀛�</param> /// <param name="mode">鏄惁鏄剧ず閿欒</param> - public async Task<bool> ReName(CommonDevice device, string newName, ShowErrorMode mode = ShowErrorMode.YES) + public bool ReName(CommonDevice device, string newName, ShowErrorMode mode = ShowErrorMode.YES) { //鍏堝埆绠¢偅涔堝锛屾洿鏀瑰悕瀛楀悗锛屽埛鏂拌澶囩紦瀛� this.SetEpointName(device, newName); this.BackupDeviceAfterReName(device); + //濡傛灉浣忓畢涓鸿櫄鎷熶綇瀹� + if (Common.Config.Instance.Home.IsVirtually == true) + { + //淇敼璁惧鍚嶅瓧鐨勮瘽,涓婚〉闇�瑕侀噸鏂板埛鏂� + Phone.UserView.UserPage.Instance.RefreshForm = true; + return true; + } + //涓嶅啀妫�娴嬪悕瀛楁槸鍚︿竴鏍� //鎴愬憳鍙兘淇敼鑷繁鏈湴鐨勫悕瀛� if (UserCenterResourse.UserInfo.AuthorityNo != 3) { - var result = await device.RenameDeviceNameAsync(device.DeviceAddr, device.DeviceEpoint, newName); + var result = this.RenameDeviceNameAsync(device, newName); if (result == null || result.deviceRenameData == null || result.deviceRenameData.Result == 1) { //璁惧鍚嶇О淇敼澶辫触 @@ -413,9 +452,9 @@ } return false; } - //澶囦唤鏁版嵁 - await HdlGatewayLogic.Current.UpLoadDeviceBackupDataToGateway(device, GatewayBackupEnum.A绔偣鍚嶇О, newName); } + //淇敼璁惧鍚嶅瓧鐨勮瘽,涓婚〉闇�瑕侀噸鏂板埛鏂� + Phone.UserView.UserPage.Instance.RefreshForm = true; return true; } @@ -425,7 +464,7 @@ /// <param name="listDevice">璁惧瀵硅薄</param> /// <param name="newMacName">鏂板悕瀛�</param> /// <param name="mode">鏄惁鏄剧ず閿欒</param> - public async Task<bool> ReMacName(List<CommonDevice> listDevice, string newMacName, ShowErrorMode mode = ShowErrorMode.YES) + public bool ReMacName(List<CommonDevice> listDevice, string newMacName, ShowErrorMode mode = ShowErrorMode.YES) { if (listDevice.Count == 0) { @@ -441,6 +480,11 @@ //鏇存敼鍚嶅瓧鍚庯紝鍒锋柊璁惧缂撳瓨 this.BackupDeviceAfterReName(device2); } + //濡傛灉浣忓畢涓鸿櫄鎷熶綇瀹� + if (Common.Config.Instance.Home.IsVirtually == true) + { + return true; + } CommonDevice device = listDevice[0]; //涓嶅啀妫�娴嬪悕瀛楁槸鍚︿竴鏍� @@ -448,7 +492,7 @@ if (UserCenterResourse.UserInfo.AuthorityNo != 3) { //淇敼鐗╃悊鍚嶅瓧 - var result = await device.RenameDeviceMacNameAsync(device.DeviceAddr, device.DeviceEpoint, newMacName); + var result = this.RenameDeviceMacNameAsync(device, newMacName); if (result == null || result.renameDeviceMacNameData == null || result.renameDeviceMacNameData.Result != 0) { //璁惧鍚嶇О淇敼澶辫触 @@ -461,15 +505,126 @@ } return false; } - //澶囦唤鏁版嵁 - await HdlGatewayLogic.Current.UpLoadDeviceBackupDataToGateway(device, GatewayBackupEnum.AMac鍚嶇О, newMacName); //濡傛灉瀹冨彧鏈変竴涓洖璺�,鍒欐洿鏀圭鐐瑰悕瀛� - if (this.dicDeviceEpoint.ContainsKey(device.DeviceAddr) == true && this.dicDeviceEpoint[device.DeviceAddr].Count == 1) + if (this.dicDeviceEpoint.ContainsKey(device.DeviceAddr) == true) { - return await this.ReName(device, newMacName); + //鍙湁涓�涓鐐� + if (this.dicDeviceEpoint[device.DeviceAddr].Count == 1) + { + return this.ReName(device, newMacName); + } + //濡傛灉瀹冩湁涓や釜绔偣鏃�,pir浼犳劅鍣ㄧ壒娈婂鐞� + else if (this.dicDeviceEpoint[device.DeviceAddr].Count == 2) + { + var myType = this.GetMyDeviceEnumInfo(listDevice); + if (myType.ConcreteType == DeviceConcreteType.Sensor_Pir) + { + foreach (var myDevice in listDevice) + { + if (myDevice.Type == DeviceType.IASZone) + { + return this.ReName(myDevice, newMacName); + } + } + } + } } } return true; + } + + ///<summary > + /// 淇敼璁惧mac鍚嶇О + /// <para>macName:璁惧鍚嶇О</para> + /// </summary> + private CommonDevice.RenameDeviceMacNameAllData RenameDeviceMacNameAsync(CommonDevice device, string macName) + { + //濡傛灉褰撳墠鏄櫄鎷熶綇瀹� + if (Common.Config.Instance.Home.IsVirtually == true) + { + return Phone.ModelData.DeviceModelDataLogic.Current.ReDeviceMacName(device, macName, "MacRename"); + } + + //鑾峰彇缂栬緫璁惧Mac鍚嶅瓧鐨勫懡浠ゅ瓧绗� + var sendData = this.GetReDeviceMacNameCommandText(device.DeviceAddr, device.DeviceEpoint, macName); + var result = HdlDeviceCommonLogic.Current.SendJobjectDataToGateway(device, "MacRename", sendData, "MacRename_Respon"); + if (result.ErrorMsg != null || result.ErrorMsgDiv == 0) + { + return null; + } + //鍔犵紦瀛� + Phone.ModelData.DeviceModelDataLogic.Current.ReDeviceMacName(device, macName, "MacRename"); + + var tempData = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.RenameDeviceMacNameData>(result.ReceiptData); + return new CommonDevice.RenameDeviceMacNameAllData { renameDeviceMacNameData = tempData }; + } + + /// <summary> + /// 淇敼璁惧绔彛锛堟寜閿級鍚嶇О + /// </summary> + /// <param name="device">璁惧瀵硅薄</param> + /// <param name="deviceName">璁惧绔偣鍚嶅瓧</param> + /// <returns></returns> + private CommonDevice.DeviceRenameAllData RenameDeviceNameAsync(CommonDevice device, string deviceName) + { + //濡傛灉褰撳墠鏄櫄鎷熶綇瀹� + if (Common.Config.Instance.Home.IsVirtually == true) + { + return Phone.ModelData.DeviceModelDataLogic.Current.ReDeviceEpointName(device, deviceName, "DeviceRename"); + } + //鑾峰彇缂栬緫璁惧绔偣鍚嶅瓧鐨勫懡浠ゅ瓧绗� + var sendData = this.GetReDeviceEpointNameCommandText(device.DeviceAddr, device.DeviceEpoint, deviceName); + var result = HdlDeviceCommonLogic.Current.SendJobjectDataToGateway(device, "DeviceRename", sendData, "DeviceRenameRespon"); + if (result.ErrorMsg != null || result.ErrorMsgDiv == 0) + { + return null; + } + //鍔犵紦瀛� + Phone.ModelData.DeviceModelDataLogic.Current.ReDeviceEpointName(device, deviceName, "DeviceRename"); + + var tempData = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.DeviceRenameResponseData>(result.ReceiptData); + return new CommonDevice.DeviceRenameAllData { deviceRenameData = tempData }; + } + + /// <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]; + var reamarkGwBytes = Encoding.UTF8.GetBytes(deviceName); + System.Array.Copy(reamarkGwBytes, 0, bytes, 0, 64 < reamarkGwBytes.Length ? 64 : reamarkGwBytes.Length); + deviceName = Encoding.UTF8.GetString(bytes); + + var jObject = new Newtonsoft.Json.Linq.JObject { { "DeviceAddr", deviceAddr }, { "Epoint", deviceEpoint }, { "Cluster_ID", 0 }, { "Command", 100 } }; + var data = new Newtonsoft.Json.Linq.JObject { { "MacName", deviceName } }; + jObject.Add("Data", data); + return jObject.ToString(); + } + + /// <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]; + var reamarkGwBytes = Encoding.UTF8.GetBytes(deviceName); + System.Array.Copy(reamarkGwBytes, 0, bytes, 0, 64 < reamarkGwBytes.Length ? 64 : reamarkGwBytes.Length); + deviceName = Encoding.UTF8.GetString(bytes); + + var jObject = new Newtonsoft.Json.Linq.JObject { { "DeviceAddr", deviceAddr }, { "Epoint", deviceEpoint }, { "Cluster_ID", 0 }, { "Command", 96 } }; + var data = new Newtonsoft.Json.Linq.JObject { { "DeviceName", deviceName } }; + jObject.Add("Data", data); + + return jObject.ToString(); } /// <summary> @@ -513,22 +668,26 @@ /// <param name="listdevice">璁惧瀵硅薄(MAC鍦板潃蹇呴』瑕佺浉鍚�)</param> public async Task<bool> DeleteDevice(List<CommonDevice> listdevice) { - var data = new CommonDevice.RemoveDeviceData(); - var info = new CommonDevice.RemoveDeviceListInfo(); - info.DeviceAddr = listdevice[0].DeviceAddr; - data.DeviceAddrList.Add(info); - - //鍒犱竴娆$殑鏃跺�欙紝瀹冧細鎶奙AC鍦板潃涓嬮潰鍏ㄩ儴鐨勮澶囬兘鍒犻櫎 - var result = await listdevice[0].DeleteDeviceAsync(data); - if (result == null || result.removeDeviceResponseData == null || result.removeDeviceResponseData.Result != 0) + //铏氭嫙浣忓畢鐨勮瘽,涓嶉渶瑕佸垹闄ょ綉鍏崇殑璁惧 + if (Config.Instance.Home.IsVirtually == false) { - //璁惧鍒犻櫎澶辫触 - string msg = Language.StringByID(R.MyInternationalizationString.uDeviceDeleteFail); - //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg - msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result); + var data = new CommonDevice.RemoveDeviceData(); + var info = new CommonDevice.RemoveDeviceListInfo(); + info.DeviceAddr = listdevice[0].DeviceAddr; + data.DeviceAddrList.Add(info); - this.ShowErrorMsg(msg); - return false; + //鍒犱竴娆$殑鏃跺�欙紝瀹冧細鎶奙AC鍦板潃涓嬮潰鍏ㄩ儴鐨勮澶囬兘鍒犻櫎 + var result = await listdevice[0].DeleteDeviceAsync(data); + if (result == null || result.removeDeviceResponseData == null || result.removeDeviceResponseData.Result != 0) + { + //璁惧鍒犻櫎澶辫触 + string msg = Language.StringByID(R.MyInternationalizationString.uDeviceDeleteFail); + //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg + msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result); + + this.ShowErrorMsg(msg); + return false; + } } //鍒犻櫎缂撳瓨鐨凮ta璁惧 @@ -555,12 +714,15 @@ /// <param name="deleteRoom">鏄惁浠庢埧闂村垹闄�</param> public void DeleteMemmoryDevice(CommonDevice device, bool deleteRoom = true) { - if (deleteRoom == true && Room.CurrentRoom != null) + //鍒犻櫎缂撳瓨璁惧鐨勮瘽,涓婚〉闇�瑕侀噸鏂板埛鏂� + Phone.UserView.UserPage.Instance.RefreshForm = true; + + if (deleteRoom == true) { //浠庢埧闂翠腑鍒犻櫎 - Room.CurrentRoom.DeleteDevice(device); + HdlRoomLogic.Current.DeleteDevice(device); //鍒犻櫎鎴戠殑鍠滅埍鐨勮澶� - Room.CurrentRoom.DeleteLoveDevice(device); + HdlRoomLogic.Current.DeleteLoveDevice(device); } //鍒犻櫎缂撳瓨 @@ -638,7 +800,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> @@ -648,6 +814,22 @@ /// <returns></returns> public bool DeviceIsCanFixedPosition(CommonDevice device) { + if (device.Type == DeviceType.DoorLock || device.Type == DeviceType.PMSensor) + { + //闂ㄩ攣娌℃湁瀹氫綅鍔熻兘 + return false; + } + if (device.Type == DeviceType.IASZone) + { + var myTypeInfo = this.GetMyDeviceEnumInfo(new List<CommonDevice>() { device }); + if (myTypeInfo.ConcreteType == DeviceConcreteType.Sensor_Pir) + { + //浼犳劅鍣ㄩ櫎浜哖ir閮芥病鏈夊畾浣嶅姛鑳� + return true; + } + return false; + } + foreach (var data in device.InClusterList) { //鎷ユ湁on/off鍔熻兘鐨勶紝鎵嶆敮鎸佹祴璇� @@ -702,36 +884,23 @@ /// <summary> /// 鏍规嵁缃戝叧ID鑾峰彇鎵�鏈夌殑璁惧 /// </summary> - /// <param name="gwId">缃戝叧ID</param> - /// <param name="getOtaDevice">鏄惁鑾峰彇ota璁惧</param> + /// <param name="gwId">缃戝叧ID</param>> /// <returns></returns> - public List<CommonDevice> GetDeviceByGatewayID(string gwId, bool getOtaDevice = false) + public List<CommonDevice> GetDeviceByGatewayID(string gwId) { - List<CommonDevice> list = new List<CommonDevice>(); lock (dicAllDevice) { - //鍚勭綉鍏崇殑鎵�鏈夎澶� + var listMac = new List<string>(); + //鍚勭綉鍏崇殑鎵�鏈夎澶囩殑Mac foreach (CommonDevice device in this.dicAllDevice.Values) { if (gwId == device.CurrentGateWayId) { - list.Add(device); + listMac.Add(device.DeviceAddr); } } - if (getOtaDevice == true) - { - //鑾峰彇ota璁惧 - foreach (var ota in this.dicOTADevice.Values) - { - if (ota.CurrentGateWayId == gwId) - { - list.Add(ota); - } - } - } + return this.GetDevicesByMac(listMac); } - - return list; } /// <summary> @@ -802,6 +971,80 @@ } /// <summary> + /// 鏍规嵁MAC鍦板潃,鑾峰彇绠�绾﹂潰鏉垮叏閮ㄥ洖璺殑璁惧瀵硅薄 + /// </summary> + /// <param name="listDevice"></param> + /// <returns></returns> + public List<CommonDevice> GetMutilfunctionPanelByMac(List<CommonDevice> listDevice, bool sort = true) + { + //鍜屽姜鍝ャ�佽澶囧拰浜у搧閮ㄥ悓浜嬬‘璁わ細 + //绠�绾﹀鍔熻兘闈㈡澘[涓嶆樉绀哄浣欑殑鍥炶矾锛屽彧鏄剧ず鎼哄甫鐨�2涓户鐢靛櫒鍜�1涓俯婀垮害浼犳劅鍣� + var list = new List<CommonDevice>(); + foreach (var dev in listDevice) + { + if (dev.Type == DeviceType.TemperatureSensor) + { + if (dev.DeviceEpoint == 64) + { + list.Add(dev); + } + } + else if (dev.Type == DeviceType.OnOffOutput) + { + list.Add(dev); + } + } + + if (sort == false) + { + return list; + } + list.Sort((obj1, obj2) => + { + if (obj1.DeviceEpoint > obj2.DeviceEpoint) + { + return 1; + } + return -1; + }); + + return list; + } + + /// <summary> + /// 鏍规嵁MAC鍦板潃,鑾峰彇鍏ㄩ儴鍥炶矾鐨勮澶囧璞�(寮哄埗鎺掑簭) + /// </summary> + /// <param name="DeviceAddr">Mac鍦板潃</param> + /// <returns></returns> + public List<CommonDevice> GetDevicesByMac(List<string> listMacAddr) + { + //鍏堟帓搴� + listMacAddr.Sort(); + + var list = new List<CommonDevice>(); + foreach (string strMac in listMacAddr) + { + var listEpoint = new List<int>(); + //鑾峰彇鍏ㄩ儴鐨勭鐐� + foreach (int epoint in this.dicDeviceEpoint[strMac]) + { + listEpoint.Add(epoint); + } + //鐒跺悗鎺掑簭 + listEpoint.Sort(); + foreach (int epoint in listEpoint) + { + var device = this.GetDevice(strMac, epoint); + if (device != null) + { + list.Add(device); + } + } + } + return list; + } + + /// <summary> /// 鏍规嵁MAC鍦板潃,鑾峰彇鍏ㄩ儴鍥炶矾鐨勬暟閲� /// </summary> /// <param name="DeviceAddr">Mac鍦板潃</param> @@ -867,10 +1110,15 @@ //涓嶆槸鍚屼竴涓綉鍏� continue; } + //娌℃湁鍏朵粬鍥炶矾 if (dicDeviceEpoint.ContainsKey(ota.DeviceAddr) == false || dicDeviceEpoint[ota.DeviceAddr].Count == 0) { - list.Add(ota); + //鐩墠鍙拡瀵逛腑澶┖璋� + if (ota.ModelIdentifier == "MAC/GW-ZB.10") + { + list.Add(ota); + } } } return list; @@ -892,41 +1140,89 @@ { return dName; } - //鏍规嵁璁惧绫诲瀷鑾峰彇鍚嶇О - var tempValue = this.GetDeviceObjectText(new List<CommonDevice>() { device }, false); - var arry = tempValue.Split(new string[] { "(" }, StringSplitOptions.RemoveEmptyEntries); - dName = arry[0].Trim(); - - //濡傛灉鏄櫄鎷熻澶� - if (device.DriveCode > 0) + if (this.IsMiniLight(device) == true) { - //鍦ㄧ鐐瑰悕瀛楃殑鍚庨潰闄勫姞銆愬洖璺�戝瓧鏍� - dName += "(" + device.DeviceEpoint + Language.StringByID(R.MyInternationalizationString.uDeviceCircuit) + ")"; - return dName; + //Mini澶滅伅 + return Language.StringByID(R.MyInternationalizationString.uMiniNightLight); + } + + //濡傛灉杩欎釜璁惧鍙湁涓�涓洖璺殑璇�,杩斿洖Mac鍚嶅瓧缁欏畠 + if (this.GetDevicesCountByMac(device.DeviceAddr) <= 1) + { + return this.GetDeviceMacName(device); + } + + //鍚屼竴璁惧閲岄潰,涓嶅悓绫诲瀷鐨勫洖璺�,瀹冪殑鍛藉悕閮戒粠1寮�濮� + int epointNo = 0; + var listSort = this.GetDevicesByMac(device.DeviceAddr); + foreach (var myDevice in listSort) + { + if (myDevice.Type == device.Type) + { + //鍚屼竴绫诲瀷缂栧彿+1 + epointNo++; + if (myDevice.DeviceEpoint == device.DeviceEpoint) + { + //宸茬粡鍒拌揪瀹冭嚜宸� + break; + } + } + } + + if (device.Type == DeviceType.OnOffOutput + || device.Type == DeviceType.DimmableLight + || device.Type == DeviceType.ColorDimmableLight + || device.Type == DeviceType.ColorTemperatureLight) + { + //缁х數鍣�,鎺夊厜鍣ㄩ兘鍙洖璺� + return Language.StringByID(R.MyInternationalizationString.uDeviceCircuit) + epointNo; + } + if (device.Type == DeviceType.Thermostat) + { + //绌鸿皟閮藉彨瀹ゅ唴鏈� + return Language.StringByID(R.MyInternationalizationString.uIndoorUnit) + epointNo; + } + else if (device.Type == DeviceType.FreshAir) + { + //鏂伴闈㈡澘涓殑鎸夐敭鍙柊椋� + return Language.StringByID(R.MyInternationalizationString.FreshAir); + } + else if (device.Type == DeviceType.FreshAirHumiditySensor) + { + //鏂伴闈㈡澘婀垮害浼犳劅鍣� + return Language.StringByID(R.MyInternationalizationString.HumiditySensor); } //鑾峰彇璁惧绫诲瀷 var deviceInfoType = this.GetMyDeviceEnumInfo(new List<CommonDevice>() { device }); - if (deviceInfoType.BeloneType == Common.DeviceBeloneType.A鎸夐敭闈㈡澘 && device.Type == DeviceType.TemperatureSensor) + if (device.Type == DeviceType.OnOffSwitch) { - //闈㈡澘鐨勬渶鍚庝竴涓洖璺槸娓╁害浼犳劅鍣� - dName += Language.StringByID(R.MyInternationalizationString.uDeviceBelongId11); - } - else if (deviceInfoType.ConcreteType == Common.DeviceConcreteType.Sensor_Pir) - { - //pir浼犳劅鍣�,瀹冨張鎼炵壒娈婁笢瑗�,浼犳劅鍣ㄨ嚜韬敤鑷繁鐨勫悕瀛�,缁х數鍣ㄥ洖璺殑璇濃�︹�� - if (device.Type == DeviceType.OnOffOutput) + //闈㈡澘鐨勫共鎺ョ偣鍙寜閿� + if (deviceInfoType.BeloneType == DeviceBeloneType.A鎸夐敭闈㈡澘) { - dName += Language.StringByID(R.MyInternationalizationString.uDeviceBelongId2300); + return Language.StringByID(R.MyInternationalizationString.uPanelButton) + epointNo; + } + //鍏朵粬鐨勫共鎺ョ偣鍙共鎺ョ偣 + else + { + return Language.StringByID(R.MyInternationalizationString.uDeviceBelongId16) + epointNo; } } - else if (this.dicDeviceEpoint.ContainsKey(device.DeviceAddr) == true && this.dicDeviceEpoint[device.DeviceAddr].Count > 1) + else if (device.Type == DeviceType.TemperatureSensor) { - //XXXXX(N鍥炶矾) - dName += "(" + device.DeviceEpoint + Language.StringByID(R.MyInternationalizationString.uDeviceCircuit) + ")"; + if (deviceInfoType.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueFreshAir) + { + //鏂伴闈㈡澘涓殑Thermostat涓烘俯搴︿紶鎰熷櫒 + return Language.StringByID(R.MyInternationalizationString.TemperatureSensor); + } + else if (deviceInfoType.BeloneType == DeviceBeloneType.A鎸夐敭闈㈡澘) + { + //闈㈡澘鐨勬俯搴︽帰澶村彨 闈㈡澘鍚嶅瓧+娓╁害 + return Language.StringByID(deviceInfoType.DefultNameId) + Language.StringByID(R.MyInternationalizationString.uTemperature); + } } - - return dName; + //鍏朵粬鎯呭喌,浣跨敤瀹冪殑榛樿鍚嶇О + return Language.StringByID(deviceInfoType.DefultNameId) + epointNo; } /// <summary> @@ -941,53 +1237,15 @@ { return dName; } - - //鏄惁鎷ユ湁閰嶇疆鐨勬ā鍧桰D - if (this.dicDeviceModelIdEnum.ContainsKey(device.ModelIdentifier) == true) + if (this.IsMiniLight(device) == true) { - //鑾峰彇妯″潡ID鍚嶅瓧 - return this.GetNameByModelId(device); - } - else - { - //鑾峰彇绗笁鏂硅澶囩殑缈昏瘧鍚嶅瓧 - var myDeviceType = this.GetMyDeviceEnumInfo(new List<CommonDevice>() { device }); - return Language.StringByID(myDeviceType.ConcreteTextId); - } - } - - /// <summary> - /// 鏍规嵁妯″潡ID锛岃幏鍙栫炕璇戝悕瀛� - /// </summary> - /// <param name="device"></param> - /// <returns></returns> - private string GetNameByModelId(CommonDevice device) - { - if (device.ModelIdentifier == string.Empty) - { - //鏈煡璁惧 - return Language.StringByID(R.MyInternationalizationString.UnknowDevice); + //Mini澶滅伅 + return Language.StringByID(R.MyInternationalizationString.uMiniNightLight); } - string modelKeys = device.ModelIdentifier; - if (this.dicDeviceModelIdEnum.ContainsKey(modelKeys) == false) - { - //鏈煡璁惧 - return Language.StringByID(R.MyInternationalizationString.UnknowDevice); - } - - string[] strValue = this.dicDeviceModelIdEnum[modelKeys].Split(new string[] { "-" }, StringSplitOptions.RemoveEmptyEntries); - int ConcreteValue = Convert.ToInt32(strValue[0]); - - string keyName = deviceModelIdName + ConcreteValue; - if (this.dicDeviceDefultNameID.ContainsKey(keyName) == true) - { - //R鏂囦欢閲岄潰璁剧疆鐨勫悕瀛� - return Language.StringByID(this.dicDeviceDefultNameID[keyName]); - } - - //鏈煡璁惧 - return Language.StringByID(R.MyInternationalizationString.UnknowDevice); + //鑾峰彇璁惧绫诲瀷 + var deviceInfoType = this.GetMyDeviceEnumInfo(new List<CommonDevice>() { device }); + return Language.StringByID(deviceInfoType.DefultNameId); } /// <summary> @@ -1037,11 +1295,11 @@ /// </summary> private void InitDeviceDefultNameIDList() { - if (this.dicDeviceDefultNameID != null) + if (this.dicDeviceAllNameID != null) { return; } - this.dicDeviceDefultNameID = new Dictionary<string, int>(); + this.dicDeviceAllNameID = new Dictionary<string, int>(); Type type = typeof(R.MyInternationalizationString); var PropertyList = type.GetFields(); @@ -1050,7 +1308,7 @@ if (item.Name.StartsWith(deviceModelIdName) == true || item.Name.StartsWith("uDeviceBelongId") == true) { - this.dicDeviceDefultNameID[item.Name] = Convert.ToInt32(item.GetValue(null)); + this.dicDeviceAllNameID[item.Name] = Convert.ToInt32(item.GetValue(null)); } } @@ -1098,9 +1356,41 @@ //鑾峰彇璁惧銆愬浘鏍囥�� this.GetDeviceIcon(device, ref unSelectFilePath, ref selectFilePath); + if (btnIcon.UnSelectedImagePath != unSelectFilePath) + { + btnIcon.UnSelectedImagePath = unSelectFilePath; + } + if (btnIcon.SelectedImagePath != selectFilePath) + { + btnIcon.SelectedImagePath = selectFilePath; + } + } - btnIcon.UnSelectedImagePath = unSelectFilePath; - btnIcon.SelectedImagePath = selectFilePath; + /// <summary> + /// 璁剧疆璁惧銆愬浘鏍囥�戝埌鎸囧畾鐨勬帶浠�(娉ㄦ剰,姝ゅ嚱鏁拌缃殑閫夋嫨鐘舵�佺殑鍥剧墖鏄櫧鑹茬殑) + /// </summary> + /// <param name="btnIcon">鎺т欢瀵硅薄</param> + /// <param name="device">璁惧瀵硅薄</param> + /// <returns></returns> + public void SetDeviceIconToControl2(Button btnIcon, CommonDevice device) + { + if (device == null) + { + btnIcon.UnSelectedImagePath = "Device/ThirdPartyDevice.png"; + return; + } + string unSelectFilePath = device.IconPath; + string selectFilePath = unSelectFilePath.Replace(".png", "Selected2.png"); + + //鑾峰彇璁惧銆愬浘鏍囥�� + if (btnIcon.UnSelectedImagePath != unSelectFilePath) + { + btnIcon.UnSelectedImagePath = unSelectFilePath; + } + if (btnIcon.SelectedImagePath != selectFilePath) + { + btnIcon.SelectedImagePath = selectFilePath; + } } /// <summary> @@ -1177,7 +1467,7 @@ } /// <summary> - /// 璁剧疆銆愯澶囩被鍨嬨�戠殑鍥炬爣鍒版寚瀹氱殑鎺т欢 + /// 璁剧疆銆愯澶囩被鍨嬨�戠殑鍥炬爣鍒版寚瀹氱殑鎺т欢(姝ゆ柟娉曚笉鑳界敤鍦ㄨ澶囧姛鑳界被鍨嬭彍鍗曠殑鍥炬爣) /// </summary> /// <param name="btnIcon">鎺т欢瀵硅薄</param> /// <param name="listdevice">璁惧瀵硅薄</param> @@ -1199,7 +1489,7 @@ } /// <summary> - /// 鑾峰彇銆愯澶囩被鍨嬨�戠殑鍥炬爣 + /// 鑾峰彇銆愯澶囩被鍨嬨�戠殑鍥炬爣(姝ゆ柟娉曚笉鑳界敤鍦ㄨ澶囧姛鑳界被鍨嬭彍鍗曠殑鍥炬爣) /// </summary> /// <param name="listdevice">璁惧瀵硅薄</param> /// <param name="unSelectPath">鍥剧墖鍦板潃</param> @@ -1215,13 +1505,42 @@ } /// <summary> - /// 鑾峰彇銆愯澶囩被鍨嬨�戠殑鍥炬爣 + /// 鑾峰彇銆愯澶囧姛鑳界被鍨嬨�戠殑鑿滃崟鍥炬爣 /// </summary> /// <param name="specificType">鑷畾涔夎澶囩被鍨�</param> /// <param name="unSelectPath">鍥剧墖鍦板潃</param> /// <param name="selectPath">鍥剧墖鍦板潃</param> /// <returns></returns> - public void GetDeviceObjectIcon(DeviceConcreteType specificType, ref string unSelectPath, ref string selectPath) + public void GetDeviceFunctionTypeMenuIcon(DeviceConcreteType specificType, ref string unSelectPath, ref string selectPath) + { + //鏂伴灏忔ā鍧� + if (specificType == DeviceConcreteType.Relay_FangyueFreshAirModul) + { + unSelectPath = "Device/FreshAirEpoint.png"; + selectPath = "Device/FreshAirEpointSelected.png"; + return; + } + //PM2.5绌烘皵璐ㄩ噺浼犳劅鍣� + else if (specificType == DeviceConcreteType.Sensor_PMTwoPointFive) + { + unSelectPath = "Device/AirQualitySensorEpoint.png"; + selectPath = "Device/AirQualitySensorEpointSelected.png"; + return; + } + //涓婇潰闇�瑕佺壒娈婂鐞� + + //鑾峰彇銆愯澶囩被鍨嬨�戠殑鍥炬爣 + this.GetDeviceObjectIcon(specificType, ref unSelectPath, ref selectPath); + } + + /// <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) { //灏嗗叿浣撶被鍨嬭浆瀛楃涓� string strSpecific = Enum.GetName(typeof(DeviceConcreteType), specificType); @@ -1261,43 +1580,6 @@ #endregion - #region 鈻� 璁惧UI鐩稿叧_________________________ - - /// <summary> - /// 鑾峰彇璁惧鎵�鍖归厤鐨勮澶嘦I瀵硅薄 - /// </summary> - /// <param name="device"></param> - /// <returns></returns> - public DeviceUI GetDeviceUI(CommonDevice device) - { - //鍒涘缓涓�涓柊鐨勪笢瑗跨粰杩囧幓 - var deviceUi = new DeviceUI(); - deviceUi.DeviceAddr = device.DeviceAddr; - deviceUi.DeviceEpoint = device.DeviceEpoint; - return deviceUi; - } - - /// <summary> - /// 鑾峰彇璁惧鎵�鍖归厤鐨勮澶嘦I瀵硅薄 - /// </summary> - /// <param name="filePath"></param> - /// <returns></returns> - public DeviceUI GetDeviceUI(string filePath) - { - string[] arry = filePath.Split(new string[] { "_" }, StringSplitOptions.RemoveEmptyEntries); - if (arry.Length != 4) - { - return null; - } - //鍒涘缓涓�涓柊鐨勪笢瑗跨粰杩囧幓 - var deviceUi = new DeviceUI(); - deviceUi.DeviceAddr = arry[2]; - deviceUi.DeviceEpoint = Convert.ToInt32(arry[3]); - return deviceUi; - } - - #endregion - #region 鈻� 鑾峰彇鑷畾涔夌殑璁惧绫诲瀷_______________ /// <summary> @@ -1324,7 +1606,11 @@ return info; } //鑾峰彇绗笁鏂硅澶囩殑銆愯澶囩被鍨嬨�� - return this.GetNotHdlMyDeviceEnumInfo(listdevice); + info = this.GetNotHdlMyDeviceEnumInfo(listdevice); + //杩欓噷鍐嶆鍒ゆ柇鏄惁鏄渤涓滆澶�,鏈夊彲鑳藉畠鐨勬ā鍧桰D鍐欓敊浜� + info.IsHdlDevice = this.IsHdlDevice(checkDevice); + + return info; } /// <summary> @@ -1344,28 +1630,39 @@ checkDevice = temp; } } + //鑾峰彇鑷畾涔夎澶囩被鍨� + var myInfoType = this.GetMyDeviceEnumInfo(listDevice); + //鑾峰彇璁惧绫诲瀷鐨勭炕璇戝悕瀛� + string strName = Language.StringByID(myInfoType.ObjectTypeNameId); + if (strName == string.Empty) + { + //鍔犱竴灞備繚闄�,鏈煡璁惧 + strName = Language.StringByID(R.MyInternationalizationString.UnknowDevice); + } - string strName = string.Empty; - if (this.dicDeviceModelIdEnum.ContainsKey(checkDevice.ModelIdentifier) == true) + if (ApendFalge == true) { - //鏍规嵁妯″潡ID锛岃幏鍙栬澶囧悕瀛� - strName = this.GetNameByModelId(checkDevice); - } - else - { - //鑾峰彇绗笁鏂硅澶囩殑銆愯澶囩被鍨嬨�� - var myDeviceType = this.GetNotHdlMyDeviceEnumInfo(listDevice); - strName = Language.StringByID(myDeviceType.ConcreteTextId); - } - if (ApendFalge == true && listDevice[0].DriveCode > 0) - { - //铏氭嫙璁惧鍔犱釜鏍囪瘑 - strName += "鉁�"; - } - else if (ApendFalge == true && this.IsHdlDevice(checkDevice) == false) - { - //绗笁鏂硅澶囧姞涓爣璇� - strName += "鈽�"; + if (listDevice[0].DriveCode > 0) + { + //铏氭嫙璁惧鍔犱釜鏍囪瘑 + strName += "鉁�"; + } + else + { + foreach (var temp in listDevice) + { + //鎷挎嫢鏈夋ā鍧桰D鐨勯偅涓洖璺潵鍒ゆ柇 + if (temp.ModelIdentifier != string.Empty) + { + if (this.IsHdlDevice(checkDevice) == false) + { + //绗笁鏂硅澶囧姞涓爣璇� + strName += "鈽�"; + break; + } + } + } + } } return strName; } @@ -1389,6 +1686,9 @@ return null; } string modelKeys = device.ModelIdentifier; + //浜ゆ崲涓�涓嬫ā鍧桰D(楹︿箰鍏嬮偅杈圭殑浼犳劅鍣�) + this.ChangedDeviceModeId(ref modelKeys); + if (this.dicDeviceModelIdEnum.ContainsKey(modelKeys) == false) { //娌℃湁鍖归厤鍒版ā鍧桰D锛屽垯鐩存帴璧扮涓夋柟璁惧鐨勫垽鏂� @@ -1400,10 +1700,10 @@ int BeloneValue = Convert.ToInt32(strValue[1]); //璁剧疆璁惧鐨勩�愯澶囨墍灞炵被鍨嬨�� info.BeloneType = (DeviceBeloneType)BeloneValue; - if (dicDeviceDefultNameID.ContainsKey("uDeviceBelongId" + BeloneValue) == true) + if (dicDeviceAllNameID.ContainsKey("uDeviceBelongId" + BeloneValue) == true) { //璁惧鎵�灞炵被鍨嬬殑缈昏瘧鍚嶅瓧 - info.BeloneTextId = dicDeviceDefultNameID["uDeviceBelongId" + BeloneValue]; + info.BeloneTextId = dicDeviceAllNameID["uDeviceBelongId" + BeloneValue]; } //璁惧鍏蜂綋绫诲瀷 @@ -1412,6 +1712,16 @@ { info.ConcreteType = DeviceConcreteType.UnKownDevice; } + string keyName = deviceModelIdName + ConcreteValue; + if (this.dicDeviceAllNameID.ContainsKey(keyName) == true) + { + //璁惧鐨勫畼鏂瑰悕绉� + info.ConcreteTextId = this.dicDeviceAllNameID[keyName]; + } + + //璁惧鐨勭被鍨嬬炕璇戝悕绉� + info.ObjectTypeNameId = Convert.ToInt32(strValue[2]); + return info; } @@ -1434,12 +1744,13 @@ info.ConcreteTextId = R.MyInternationalizationString.uDeviceBelongId15; info.BeloneType = DeviceBeloneType.A鐏厜; info.ConcreteType = DeviceConcreteType.Light; + info.ObjectTypeNameId = 60007;//璋冨厜妯″潡 int value = (int)info.BeloneType; - if (dicDeviceDefultNameID.ContainsKey("uDeviceBelongId" + value) == true) + if (dicDeviceAllNameID.ContainsKey("uDeviceBelongId" + value) == true) { //璁惧鎵�灞炵被鍨嬬殑缈昏瘧鍚嶅瓧 - info.BeloneTextId = dicDeviceDefultNameID["uDeviceBelongId" + value]; + info.BeloneTextId = dicDeviceAllNameID["uDeviceBelongId" + value]; } } else if (info.BeloneType == DeviceBeloneType.A浼犳劅鍣� @@ -1449,12 +1760,13 @@ info.BeloneType = DeviceBeloneType.A浼犳劅鍣�; info.ConcreteType = DeviceConcreteType.Sensor; info.ConcreteTextId = R.MyInternationalizationString.uDeviceBelongId1200; + info.ObjectTypeNameId = 60000;//浼犳劅鍣� int value = (int)info.BeloneType; - if (dicDeviceDefultNameID.ContainsKey("uDeviceBelongId" + value) == true) + if (dicDeviceAllNameID.ContainsKey("uDeviceBelongId" + value) == true) { //璁惧鎵�灞炵被鍨嬬殑缈昏瘧鍚嶅瓧 - info.BeloneTextId = dicDeviceDefultNameID["uDeviceBelongId" + value]; + info.BeloneTextId = dicDeviceAllNameID["uDeviceBelongId" + value]; } } @@ -1493,6 +1805,7 @@ info.BeloneType = DeviceBeloneType.A骞叉帴鐐�; info.ConcreteType = DeviceConcreteType.DryContact; } + info.ObjectTypeNameId = 60003;//鏅鸿兘闈㈡澘 } //3鍖呭惈绐楀笜鐨勮瘽,褰撶獥甯樺鐞� else if (dicType.ContainsKey(DeviceType.WindowCoveringDevice) == true) @@ -1500,14 +1813,16 @@ info.ConcreteTextId = R.MyInternationalizationString.uDeviceBelongId100; info.BeloneType = DeviceBeloneType.A绐楀笜; info.ConcreteType = DeviceConcreteType.Curtain; + info.ObjectTypeNameId = 60002;//閬槼妯″潡 } //4绌烘皵寮�鍏� else if (dicType.ContainsKey(DeviceType.AirSwitch) == true) { //榛樿鍊� info.ConcreteTextId = R.MyInternationalizationString.uDeviceBelongId4100; - info.BeloneType = DeviceBeloneType.A鏅鸿兘绌哄紑; + info.BeloneType = DeviceBeloneType.A寮�鍏�; info.ConcreteType = DeviceConcreteType.AirSwitch; + info.ObjectTypeNameId = 60001;//寮�鍏虫ā鍧� if (dicType[DeviceType.AirSwitch].DfunctionType == DeviceFunctionType.A寮�鍏�) { @@ -1535,6 +1850,7 @@ info.ConcreteTextId = R.MyInternationalizationString.uDeviceBelongId2300; info.BeloneType = DeviceBeloneType.A缁х數鍣�; info.ConcreteType = DeviceConcreteType.Relay; + info.ObjectTypeNameId = 60001;//寮�鍏虫ā鍧� if (dicType[DeviceType.OnOffOutput].DfunctionType == DeviceFunctionType.A寮�鍏�) { @@ -1561,6 +1877,7 @@ info.ConcreteTextId = R.MyInternationalizationString.uDeviceBelongId2500; info.BeloneType = DeviceBeloneType.A璋冨厜鍣�; info.ConcreteType = DeviceConcreteType.DimmableLight; + info.ObjectTypeNameId = 60007;//璋冨厜妯″潡 } //7褰╃伅 else if (dicType.ContainsKey(DeviceType.ColorDimmableLight) == true) @@ -1568,6 +1885,7 @@ info.ConcreteTextId = R.MyInternationalizationString.uDeviceBelongId9; info.BeloneType = DeviceBeloneType.A褰╃伅; info.ConcreteType = DeviceConcreteType.ColorLight; + info.ObjectTypeNameId = 60007;//璋冨厜妯″潡 } //8绌鸿皟 else if (dicType.ContainsKey(DeviceType.Thermostat) == true) @@ -1575,6 +1893,7 @@ info.ConcreteTextId = R.MyInternationalizationString.uDeviceBelongId3600; info.BeloneType = DeviceBeloneType.A绌鸿皟; info.ConcreteType = DeviceConcreteType.AirConditioner; + info.ObjectTypeNameId = 60009;//绌鸿皟妯″潡 } //9涓户鍣� else if (dicType.ContainsKey(DeviceType.Repeater) == true) @@ -1582,6 +1901,7 @@ info.ConcreteTextId = R.MyInternationalizationString.uDeviceBelongId3900; info.BeloneType = DeviceBeloneType.A涓户鍣�; info.ConcreteType = DeviceConcreteType.Repeater; + info.ObjectTypeNameId = 60006;//绯荤粺璁惧 } //10杞崲鍣� else if (dicType.ContainsKey(DeviceType.Transverter) == true) @@ -1589,6 +1909,7 @@ info.ConcreteTextId = R.MyInternationalizationString.uDeviceBelongId4200; info.BeloneType = DeviceBeloneType.A杞崲鍣�; info.ConcreteType = DeviceConcreteType.Converter; + info.ObjectTypeNameId = 60008;//杞崲鍣� } //11鏅鸿兘闂ㄩ攣 else if (dicType.ContainsKey(DeviceType.DoorLock) == true) @@ -1596,6 +1917,7 @@ info.ConcreteTextId = R.MyInternationalizationString.uDeviceBelongId2800; info.BeloneType = DeviceBeloneType.A鏅鸿兘闂ㄩ攣; info.ConcreteType = DeviceConcreteType.IntelligentLocks; + info.ObjectTypeNameId = 60010;//鏅鸿兘闂ㄩ攣 } //12鍖呭惈浼犳劅鍣ㄧ殑璇�,褰撲紶鎰熷櫒澶勭悊 else if (dicType.ContainsKey(DeviceType.IASZone) == true) @@ -1603,6 +1925,7 @@ info.BeloneType = DeviceBeloneType.A浼犳劅鍣�; info.ConcreteType = DeviceConcreteType.Sensor; info.ConcreteTextId = R.MyInternationalizationString.uDeviceBelongId1200; + info.ObjectTypeNameId = 60000;//浼犳劅鍣� //璁剧疆浼犳劅鍣ㄥ叿浣撶殑绫诲瀷 this.SetSensorDeviceSpecificType(ref info, listdevice); } @@ -1650,13 +1973,38 @@ info.ConcreteTextId = R.MyInternationalizationString.uDeviceBelongId12; info.ConcreteType = DeviceConcreteType.Sensor_Humidity; } + 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;//鏂伴 + } + //15 PM2.5浼犳劅鍣ㄨ澶� + else if (dicType.ContainsKey(DeviceType.PMSensor) == true) + { + info.ConcreteTextId = R.MyInternationalizationString.uDeviceModelId1307; + info.BeloneType = DeviceBeloneType.APM2鐐�5绌烘皵璐ㄩ噺浼犳劅鍣�; + info.ConcreteType = DeviceConcreteType.Sensor_PMTwoPointFive; + info.ObjectTypeNameId = 60000;//浼犳劅鍣� + } + //16鑹叉俯鐏� + else if (dicType.ContainsKey(DeviceType.ColorTemperatureLight) == true) + { + info.ConcreteTextId = R.MyInternationalizationString.uDeviceModelId20000; + info.BeloneType = DeviceBeloneType.A褰╃伅; + info.ConcreteType = DeviceConcreteType.ColorLight_Temperature; + info.ObjectTypeNameId = 60007;//璋冨厜妯″潡 } int value = (int)info.BeloneType; - if (dicDeviceDefultNameID.ContainsKey("uDeviceBelongId" + value) == true) + if (dicDeviceAllNameID.ContainsKey("uDeviceBelongId" + value) == true) { //璁惧鎵�灞炵被鍨嬬殑缈昏瘧鍚嶅瓧 - info.BeloneTextId = dicDeviceDefultNameID["uDeviceBelongId" + value]; + info.BeloneTextId = dicDeviceAllNameID["uDeviceBelongId" + value]; } return info; @@ -1749,18 +2097,10 @@ /// <param name="saveRoadDevice">濡傛灉鍙湁涓�涓洖璺�,鏄惁鎶婂洖璺殑鎴块棿涓�璧蜂慨鏀�</param> public void SaveRealDeviceRoomId(List<CommonDevice> listDevice, string roomId, bool saveRoadDevice = true) { - if (listDevice != null) + if (listDevice == null) { - this.dicDeviceRoomId[listDevice[0].DeviceAddr] = roomId; + return; } - - //淇濆瓨璁板綍 - string fullName = UserCenterLogic.CombinePath(DirNameResourse.DeviceRoomIdFile); - UserCenterLogic.SaveFileContent(fullName, this.dicDeviceRoomId); - - //娣诲姞鑷姩澶囦唤 - HdlAutoBackupLogic.AddOrEditorFile(DirNameResourse.DeviceRoomIdFile); - //濡傛灉璁惧鍙湁涓�涓洖璺紝濡傛灉鏀瑰彉浜嗙湡瀹炶澶囧尯鍩燂紝鍒欏畠鐨勫洖璺殑鍖哄煙涔熶竴璧锋敼浜� if (saveRoadDevice == true && listDevice != null && listDevice.Count == 1) { @@ -1769,7 +2109,42 @@ //鍗曠函鍙槸Ota璁惧鍒欎笉澶勭悊 return; } - Common.Room.CurrentRoom.ChangedRoom(listDevice[0], roomId, false); + 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) + { + //淇濆瓨璁板綍 + string fullName = UserCenterLogic.CombinePath(DirNameResourse.DeviceRoomIdFile); + UserCenterLogic.SaveFileContent(fullName, this.dicDeviceRoomId); + + //娣诲姞鑷姩澶囦唤 + HdlAutoBackupLogic.AddOrEditorFile(DirNameResourse.DeviceRoomIdFile); } } @@ -1785,13 +2160,8 @@ //鏈垎閰嶅尯鍩� return Language.StringByID(R.MyInternationalizationString.uDeviceNotAssignedRoom); } - var room = Room.CurrentRoom.GetRoomById(this.dicDeviceRoomId[device.DeviceAddr]); - if (room != null) - { - return room.Name; - } - //鏈垎閰嶅尯鍩� - return Language.StringByID(R.MyInternationalizationString.uDeviceNotAssignedRoom); + var room = HdlRoomLogic.Current.GetRoomById(this.dicDeviceRoomId[device.DeviceAddr]); + return HdlRoomLogic.Current.GetFloorRoomName(room); } /// <summary> @@ -1805,12 +2175,245 @@ { return null; } - return Room.CurrentRoom.GetRoomById(this.dicDeviceRoomId[device.DeviceAddr]); + 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; + } + //淇濆瓨璁板綍 + string fullName = UserCenterLogic.CombinePath(DirNameResourse.DeviceRoomIdFile); + UserCenterLogic.SaveFileContent(fullName, 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> + public List<CommonDevice> SortDeviceByBelongType(List<CommonDevice> i_listDevice) + { + //鑾峰彇鎺掑簭瑙勫垯 + var listRule = this.GetBelongTypeSortRule(); + var dicDevice = new Dictionary<DeviceBeloneType, List<CommonDevice>>(); + dicDevice[DeviceBeloneType.A鏈煡璁惧] = new List<CommonDevice>(); + + foreach (var device in i_listDevice) + { + //鑾峰彇鎵�灞炵被鍨� + var typeInfo = this.GetDeviceBelongEnumInfo(device); + if (listRule.Contains(typeInfo.BeloneType) == false) + { + //涓嶅湪鎺掑簭鑼冨洿鍐�,閮戒涪鍦ㄦ渶鍚庨潰 + dicDevice[DeviceBeloneType.A鏈煡璁惧].Add(device); + continue; + } + if (dicDevice.ContainsKey(typeInfo.BeloneType) == false) + { + dicDevice[typeInfo.BeloneType] = new List<CommonDevice>(); + } + dicDevice[typeInfo.BeloneType].Add(device); + } + + var listSort = new List<CommonDevice>(); + foreach (var myType in listRule) + { + //鏍规嵁瑙勫垯椤哄簭,娣诲姞璁惧 + if (dicDevice.ContainsKey(myType) == false || dicDevice[myType].Count == 0) + { + continue; + } + listSort.AddRange(dicDevice[myType]); + } + + return listSort; + } + + /// <summary> + /// 鑾峰彇璁惧鎵�灞炵被鍨嬬殑鐨勬帓搴忚鍒� + /// </summary> + /// <returns></returns> + public HashSet<DeviceBeloneType> GetBelongTypeSortRule() + { + //璋佸湪鍓嶉潰,璋佸氨浼樺厛鏄剧ず + var list = new HashSet<DeviceBeloneType>(); + list.Add(DeviceBeloneType.A鐏厜); + list.Add(DeviceBeloneType.A褰╃伅); + list.Add(DeviceBeloneType.A寮�鍏�); + list.Add(DeviceBeloneType.A鎻掑骇); + list.Add(DeviceBeloneType.A璋冨厜鍣�); + list.Add(DeviceBeloneType.A绐楀笜); + list.Add(DeviceBeloneType.A鏂伴); + list.Add(DeviceBeloneType.A绌鸿皟); + list.Add(DeviceBeloneType.A缁х數鍣�); + list.Add(DeviceBeloneType.A骞叉帴鐐�); + list.Add(DeviceBeloneType.A鏅鸿兘闂ㄩ攣); + list.Add(DeviceBeloneType.A鏅鸿兘绌哄紑); + list.Add(DeviceBeloneType.A浼犳劅鍣�); + + //鍏朵粬鐨勭湅鐫�鍔炲憲,閮芥槸鎺掑湪鍚庨潰鐨�,閮藉綊涓鸿繖涓睘鎬� + list.Add(DeviceBeloneType.A鏈煡璁惧); + + return list; + } + + #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 listCheck = new HashSet<string>(); + var listReturn = new List<CommonDevice>(); + foreach (var device in listDevice) + { + if (listCheck.Contains(device.DeviceAddr) == false) + { + listCheck.Add(device.DeviceAddr); + listReturn.Add(device); + } + } + return listReturn; } #endregion #region 鈻� 涓�鑸柟娉昣__________________________ + + /// <summary> + /// 浠庣紦瀛樺彉閲忔娴嬭澶囨槸鍚﹀湪绾� + /// </summary> + /// <param name="i_device"></param> + /// <returns></returns> + public bool CheckDeviceIsOnline(CommonDevice i_device) + { + 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; + } + } + //濡傛灉鏄柊椋庨潰鏉跨殑鏂伴璁惧,鍒欎笉鏄剧ず + else if (i_device.Type == DeviceType.FreshAir) + { + var myInfoType = LocalDevice.Current.GetMyDeviceEnumInfo(new List<CommonDevice>() { i_device }); + if (myInfoType.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueFreshAir) + { + 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; + } + return true; + } /// <summary> /// 鍒ゆ柇鏄笉鏄渤涓滅殑璁惧 @@ -1823,13 +2426,23 @@ } /// <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 device.DeviceAddr + device.DeviceEpoint; + return this.GetDeviceMainKeys(device.DeviceAddr, device.DeviceEpoint); } /// <summary> @@ -1840,7 +2453,7 @@ /// <returns></returns> public string GetDeviceMainKeys(string DeviceAddr, int DeviceEpoint) { - return DeviceAddr + DeviceEpoint; + return DeviceAddr + "_" + DeviceEpoint; } /// <summary> @@ -1866,16 +2479,22 @@ /// <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(4, '0'); - //杩欎釜鏄皬鏁扮偣鍓嶉潰鐨勫�� - int value1 = Convert.ToInt32(txt10.Substring(0, txt10.Length - 2)); - //杩欎釜鏄皬鏁扮偣鍚庨潰鐨勫�� - int value2 = Convert.ToInt32(txt10.Substring(txt10.Length - 2, 2)); + 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.ToString().PadLeft(2, '0'); + return ver + value1 + "." + value2 + "." + value3; } /// <summary> @@ -1927,7 +2546,7 @@ { //涓嶆棤瑙嗘椂闂�,杩斿洖鏈湴璁惧鍒楄〃 statu = 1; - return this.GetDeviceByGatewayID(HdlGatewayLogic.Current.GetGatewayId(zbGateway)); + return this.GetDeviceByGatewayID(zbGateway.GwId); } } zbGateway.LastDateTime = DateTime.Now; @@ -1951,7 +2570,7 @@ //鏄惁杈炬垚涓柇鐨勬椂鏈� bool canBreak = false; //缃戝叧ID - string gatewayID = HdlGatewayLogic.Current.GetGatewayId(zbGateway); + string gatewayID = zbGateway.GwId; //瓒呮椂鏃堕棿 int TimeOut = 0; //璁惧鎬绘暟 @@ -1964,7 +2583,7 @@ var listCheck = new HashSet<string>(); Action<string, string> getDeviceAction = (topic, message) => { - if (topic == gatewayID + "/" + "DeviceInfoRespon") + if (topic == gatewayID + "/DeviceInfoRespon") { try { @@ -1998,8 +2617,14 @@ if (listCheck.Contains(mainkeys) == false) { listDevice.Add(device); - listCheck.Add(mainkeys); + //鍒锋柊涓�涓嬫湰鍦扮紦瀛� + var localDevice = this.GetDevice(mainkeys); + if (localDevice != null) + { + //鍒锋柊灞炴�� + this.SetDeviceInfoToMain(localDevice, device); + } } } } @@ -2012,6 +2637,9 @@ //璁惧鍏ㄩ儴鎺ユ敹瀹屾垚 canBreak = true; } + } + else if (topic == gatewayID + "/DeviceInfoResponEnd") + { } }; @@ -2059,6 +2687,10 @@ statu = 2; } } + else + { + statu = 1; + } return listDevice; } @@ -2075,7 +2707,7 @@ /// <returns></returns> private CommonDevice NewDeviceObjectByDeviceId(DeviceType deviceType, Newtonsoft.Json.Linq.JObject jobject, ZbGateway zbGateway) { - string gwId = HdlGatewayLogic.Current.GetGatewayId(zbGateway); + string gwId = zbGateway.GwId; //鏍规嵁璁惧绫诲瀷鍒涘缓璁惧瀵硅薄鐨勫疄渚� CommonDevice device = this.NewDeviceObjectByDeviceId(deviceType); @@ -2119,6 +2751,7 @@ mainDevice.DeviceEpointName = device.DeviceInfo.DeviceName; } mainDevice.CurrentGateWayId = device.CurrentGateWayId; + mainDevice.ZigbeeType = device.DeviceInfo.ZigbeeType; mainDevice.IsOnline = device.DeviceInfo.IsOnline; mainDevice.DriveCode = device.DeviceInfo.DriveCode; mainDevice.IasDeviceType = device.DeviceInfo.DeviceType; @@ -2142,8 +2775,6 @@ mainDevice.InClusterList.AddRange(device.DeviceInfo.InClusterList); mainDevice.OutClusterList.Clear(); mainDevice.OutClusterList.AddRange(device.DeviceInfo.OutClusterList); - mainDevice.AttributeStatus.Clear(); - mainDevice.AttributeStatus.AddRange(device.DeviceInfo.AttributeStatus); //濡傛灉鏄俯搴︿紶鎰熷櫒 if (mainDevice.Type == DeviceType.TemperatureSensor) @@ -2168,6 +2799,45 @@ if (mainDevice.IsCustomizeImage == false) { mainDevice.IconPath = "Device/Light.png"; + } + } + //濡傛灉鏄壊娓╃伅 + else if (mainDevice.Type == DeviceType.ColorTemperatureLight) + { + mainDevice.DfunctionType = DeviceFunctionType.A鐏厜; + if (mainDevice.IsCustomizeImage == false) + { + mainDevice.IconPath = "Device/ColorLightTemperature.png"; + } + } + //濡傛灉鏄笁璺户鐢靛櫒鐨勫洖璺殑璇�,榛樿涓虹伅鍏� + else if (mainDevice.Type == DeviceType.OnOffOutput) + { + //2020.05.13鍙樻洿:缁х數鍣ㄩ兘榛樿涓虹伅鍏� + //var myType = this.GetHdlMyDeviceEnumInfo(mainDevice); + //if (myType != null && myType.ConcreteType == DeviceConcreteType.Relay_ThreeLoad) + { + if (mainDevice.DfunctionType == DeviceFunctionType.A鏈畾涔�) + { + mainDevice.DfunctionType = DeviceFunctionType.A鐏厜; + } + if (mainDevice.IsCustomizeImage == false) + { + mainDevice.IconPath = "Device/Light.png"; + } + } + } + //濡傛灉鏄┖姘斿紑鍏崇殑璇� + else if (mainDevice.Type == DeviceType.AirSwitch) + { + //绌烘皵寮�鍏抽粯璁や负寮�鍏� + if (mainDevice.DfunctionType == DeviceFunctionType.A鏈畾涔�) + { + mainDevice.DfunctionType = DeviceFunctionType.A寮�鍏�; + } + if (mainDevice.IsCustomizeImage == false) + { + mainDevice.IconPath = "Device/Switch.png"; } } //濡傛灉鏄僵鐏殑璇� @@ -2200,8 +2870,13 @@ else if (deviceType == DeviceType.IASZone) { device = new IASZone(); } else if (deviceType == DeviceType.Repeater) { device = new Repeater(); } else if (deviceType == DeviceType.Thermostat) { device = new AC(); } + else if (deviceType == DeviceType.FreshAir) { device = new FreshAir(); } else if (deviceType == DeviceType.DoorLock) { device = new DoorLock(); } else if (deviceType == DeviceType.TemperatureSensor) { device = new TemperatureSensor(); } + else if (deviceType == DeviceType.PMSensor) { device = new PMSensor(); } + else if (deviceType == DeviceType.FreshAirHumiditySensor) { device = new HumiditySensor(); } + else if (deviceType == DeviceType.ColorTemperatureLight) { device = new ColorTemperatureLight(); } + else if (deviceType == DeviceType.Buzzer) { device = new Buzzer(); } else if (deviceType == DeviceType.OtaDevice || deviceType == DeviceType.OtaPanelDevice) { device = new OTADevice(); } else { return null; } @@ -2219,11 +2894,9 @@ public void SetNewDeviceMainKeys(CommonDevice device, Newtonsoft.Json.Linq.JObject jobject) { //璁剧疆璁惧涓婚敭绫� - device.Time = jobject.Value<int>("Time"); device.DeviceID = jobject.Value<int>("Device_ID"); device.DeviceAddr = jobject.Value<string>("DeviceAddr"); device.DeviceEpoint = jobject.Value<int>("Epoint"); - device.DataID = jobject.Value<int>("Data_ID"); } #endregion @@ -2243,63 +2916,99 @@ } this.dicDeviceModelIdEnum = new Dictionary<string, string>(); - //瀹氫箟瑙勫垯锛氭ā鍧桰D(宸茬炕璇�)=璁惧鍏蜂綋绫诲瀷鍊�-璁惧鎵�灞炵被鍨嬪��(鑷畾涔夌殑鍊�,鍢�,鍙涓嶉噸澶嶅氨鍙互) - //绗竴涓�兼槸:DeviceConcreteType 绗簩涓�兼槸:DeviceBeloneType - //********************************************************************* //鏂拌澶囨坊鍔犳柟娉曪細 - //1銆佸湪杩欓噷濉啓涓婃ā鍧桰D锛岀劧鍚庢槸 DeviceConcreteType 锛岀劧鍚庢槸 DeviceBeloneType - //2銆佺劧鍚庡湪鏈�涓嬮潰娣诲姞銆愯澶囩殑鍏蜂綋绫诲瀷銆戯紝銆愯澶囩殑鎵�灞炵被鍨嬨�� - //3銆佸凡璁惧鐨勫叿浣撶被鍨嬩负鍚嶅瓧(鍘绘帀銆�-銆�)娣诲姞璁惧鐨勩�愭墍灞炲浘鐗囥�戯紝銆愮湡瀹炵墿鐞嗗浘鐗囥�戙�傚洖璺浘鐗囬渶瑕佺壒娈婂鐞� - //4銆佹坊鍔燫鏂囦欢,娣诲姞Language鏂囦欢 + //1銆佸湪杩欓噷濉啓涓婃ā鍧桰D锛岀劧鍚庢槸 DeviceConcreteType 锛岀劧鍚庢槸 DeviceBeloneType , 鐒跺悗鏄� 璁惧绫诲瀷鐨勭炕璇慖D + //2銆佺劧鍚庡湪鏈�涓嬮潰鐨勩�愯嚜瀹氫箟璁惧绫诲瀷銆戞姌鍙犳爮閲屾坊鍔犮�愯澶囩殑鍏蜂綋绫诲瀷銆戯紝銆愯澶囩殑鎵�灞炵被鍨嬨�� + //3銆佷互璁惧鐨勫叿浣撶被鍨嬩负鍚嶅瓧(鍘绘帀銆�-銆�)娣诲姞璁惧鐨勩�愭墍灞炲浘鐗囥�戯紝銆愮湡瀹炵墿鐞嗗浘鐗囥�戙�傚洖璺浘鐗囬渶瑕佺壒娈婂鐞� + //4銆佹坊鍔燫鏂囦欢(uDeviceModelId),娣诲姞Language鏂囦欢 + //5銆佸鏋滈渶瑕佸叡鏈夊浘鐗�,鍒欏湪杩欎釜鍑芥暟鐨勬渶搴曚笅娣诲姞 //********************************************************************* + //鍓嶈█锛氬洜涓簔igbeehome鐨勮澶囨嫢鏈夊洓绉嶅悕瀛楋細 + //1銆佽澶囧畼鏂瑰悕绉� ----瀹冪敱DeviceConcreteType鐨勬暟鍊兼墍鍐冲畾(涓汉涓績涓撶敤) + //2銆佽澶囧叆缃戝悗鐨勯粯璁ゅ悕绉� ----瀹冧笉闇�瑕佸湪浠g爜閲岄潰瀹氫箟,瀹冪洿鎺ュ湪Language鏂囦欢閲岄潰瀹氫箟 + // 鑼冨洿锛�50000寮�濮�,瀹冪殑瑙勫垯鏄疍eviceConcreteType瀵瑰簲鐨凴鏂囦欢閲岄潰鐨処D鐨勬暟鍊�+20000, + //3銆佽澶囨墍灞炲悕绉� ----瀹冩湁DeviceBeloneType鐨勬暟鍊兼墍鍐冲畾 + //4銆佽澶囩被鍨嬪悕绉� ----瀹冪敱銆愯澶囩被鍨嬬殑缈昏瘧ID銆戞墍鍐冲畾,杩欎釜鍊兼槸涓汉涓績涓撶敤, + // 瀹冩槸Language鏂囦欢閲岄潰鐨� 60000涔嬪悗鐨勯偅浜涘�� + + //瀹氫箟瑙勫垯锛氭ā鍧桰D(宸茬炕璇�) = 璁惧鍏蜂綋绫诲瀷鍊� - 璁惧鎵�灞炵被鍨嬪�� - 璁惧绫诲瀷鐨勭炕璇慖D + //璁惧鍏蜂綋绫诲瀷鍊硷細DeviceConcreteType(鍦ㄨ繖涓枃浠舵渶涓嬮潰杩涜瀹氫箟) + //璁惧鎵�灞炵被鍨嬪��: DeviceBeloneType(鑷畾涔夌殑鍊�,鍢�,鍙涓嶉噸澶嶅氨鍙互,鍦ㄨ繖涓枃浠舵渶涓嬮潰杩涜瀹氫箟) + //璁惧绫诲瀷鐨勭炕璇慖D:杩欎釜鍊兼槸涓汉涓績涓撶敤,瀹冩槸Language鏂囦欢閲岄潰鐨� 60000涔嬪悗鐨勯偅浜涘�� + //=========鈽呪槄寮�鍚堝笜绫�(100-199)鈽呪槄========= - this.dicDeviceModelIdEnum["MWM65B-ZB.20"] = "100-100";//鏅鸿兘寮�鍚堝笜鐢垫満 - this.dicDeviceModelIdEnum["MVSM35B-ZB.20"] = "101-100";//鏅鸿兘绠$姸鐢垫満 + this.dicDeviceModelIdEnum["MWM65B-ZB.20"] = "100-100-60002";//鏅鸿兘寮�鍚堝笜鐢垫満 + this.dicDeviceModelIdEnum["MVSM35B-ZB.20"] = "101-100-60002";//鏅鸿兘绠$姸鐢垫満 //=========鈽呪槄鎸夐敭闈㈡澘绫�(200-1199)鈽呪槄========= - this.dicDeviceModelIdEnum["MPT4/R4-ZB.18"] = "200-200";//4鎸夐敭瑙︽懜闈㈡澘(甯�4璺户鐢靛櫒搴曞骇) - this.dicDeviceModelIdEnum["MPT3/R3-ZB.18"] = "201-200";//3鎸夐敭瑙︽懜闈㈡澘 - this.dicDeviceModelIdEnum["MPT2/R2-ZB.18"] = "202-200";//2鎸夐敭瑙︽懜闈㈡澘 - this.dicDeviceModelIdEnum["MPT1/R1-ZB.18"] = "203-200";//12鎸夐敭瑙︽懜闈㈡澘 - this.dicDeviceModelIdEnum["MPT4-ZB.18"] = "210-200";//4鎸夐敭瑙︽懜闈㈡澘(鍙甫鐢垫簮搴曞骇) - this.dicDeviceModelIdEnum["MPT4R4L/S-ZB.18"] = "220-200";//绠�绾�4鎸夐敭闈㈡澘 - this.dicDeviceModelIdEnum["MPT3R3L/S-ZB.18"] = "221-200";//绠�绾�3鎸夐敭闈㈡澘 - this.dicDeviceModelIdEnum["MPT2R2L/S-ZB.18"] = "222-200";//绠�绾�2鎸夐敭闈㈡澘 + this.dicDeviceModelIdEnum["MPT4/R4-ZB.18"] = "200-200-60003";//4鎸夐敭瑙︽懜闈㈡澘(甯�4璺户鐢靛櫒搴曞骇) + this.dicDeviceModelIdEnum["MPT3/R3-ZB.18"] = "201-200-60003";//3鎸夐敭瑙︽懜闈㈡澘 + this.dicDeviceModelIdEnum["MPT2/R2-ZB.18"] = "202-200-60003";//2鎸夐敭瑙︽懜闈㈡澘 + this.dicDeviceModelIdEnum["MPT1/R1-ZB.18"] = "203-200-60003";//12鎸夐敭瑙︽懜闈㈡澘 + this.dicDeviceModelIdEnum["MPT4-ZB.18"] = "210-200-60003";//4鎸夐敭瑙︽懜闈㈡澘(鍙甫鐢垫簮搴曞骇) + this.dicDeviceModelIdEnum["MPT4R4L/S-ZB.18"] = "220-200-60003";//绠�绾�4鎸夐敭闈㈡澘 + this.dicDeviceModelIdEnum["MPT3R3L/S-ZB.18"] = "221-200-60003";//绠�绾�3鎸夐敭闈㈡澘 + this.dicDeviceModelIdEnum["MPT2R2L/S-ZB.18"] = "222-200-60003";//绠�绾�2鎸夐敭闈㈡澘 + this.dicDeviceModelIdEnum["MPT4SC/S-ZB.18"] = "224-200-60003";//绠�绾�4鎸夐敭鍦烘櫙闈㈡澘 + this.dicDeviceModelIdEnum["MPT2W/S-ZB.18"] = "226-200-60003";//绠�绾�2璺獥甯橀潰鏉� + this.dicDeviceModelIdEnum["MP2B/TILE-ZB.18"] = "240-200-60003";//鏂规偊鍗曞紑鍙屾帶闈㈡澘 + this.dicDeviceModelIdEnum["MP4B/TILE-ZB.18"] = "241-200-60003";//鏂规偊鍙屽紑鍥涙帶闈㈡澘 + this.dicDeviceModelIdEnum["MP8B/TILE-ZB.18"] = "242-200-60003";//鏂规偊鍥涘紑鍏帶闈㈡澘 + this.dicDeviceModelIdEnum["MPFA/TILE-ZB.18"] = "250-200-60003";//鏂规偊鏂伴闈㈡澘 + this.dicDeviceModelIdEnum["MPTE3/TILE-ZB.18"] = "253-200-60003";//鏂规偊鐜闈㈡澘 + this.dicDeviceModelIdEnum["MP2W/TILE-ZB.18"] = "256-200-60003";//绐楀笜闈㈡澘 + this.dicDeviceModelIdEnum["MPTL4C/S-ZB.18"] = "212-200-60003";//绠�绾﹀鍔熻兘闈㈡澘 + this.dicDeviceModelIdEnum["MPTE3/S-ZB.18"] = "230-200-60003";//绠�绾︾幆澧冮潰鏉� + //=========鈽呪槄PIR浼犳劅鍣ㄧ被(1200-1299)鈽呪槄========= - this.dicDeviceModelIdEnum["MSPIR01-ZB.10"] = "1200-1200";//pir浼犳劅鍣�220 + this.dicDeviceModelIdEnum["MSPIR01-ZB.10"] = "1200-1200-60000";//pir浼犳劅鍣�220 //=========鈽呪槄瀹夐槻绫讳紶鎰熷櫒绫�(1300-2299)鈽呪槄========= - this.dicDeviceModelIdEnum["MULTI-GASE--EA07"] = "1300-1300";//鐕冩皵浼犳劅鍣� - this.dicDeviceModelIdEnum["MULTI-MECI--EA01"] = "1301-1300";//闂ㄧ獥纾佷紶鎰熷櫒 - this.dicDeviceModelIdEnum["MULTI-FIRE--EA05"] = "1302-1300";//鐑熼浘浼犳劅鍣� - this.dicDeviceModelIdEnum["MULTI-MOTI--EA04"] = "1303-1300";//绾㈠浼犳劅鍣� - this.dicDeviceModelIdEnum["MULTI-WATE--EA02"] = "1304-1300";//姘存蹈浼犳劅鍣� - this.dicDeviceModelIdEnum["MULTI-BURO--EA06"] = "1305-1300";//绱ф�ユ寜閿� + //杩欓噷鏄害涔愬厠鐨� + 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-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/M-ZB.10"] = "1306-1200-60000";//鍚搁《鐕冩皵浼犳劅鍣� + + //PM2.5绌烘皵璐ㄩ噺浼犳劅鍣� 銆愯璁惧灞炰簬绗笁鏂硅澶囷紝娌℃湁闀滃儚ID銆� + this.dicDeviceModelIdEnum["MSPM25/M-ZB.10"] = "1307-1200-60000";//PM2.5绌烘皵璐ㄩ噺浼犳劅鍣� //=========鈽呪槄缁х數鍣ㄧ被(2300-2499)鈽呪槄========= - this.dicDeviceModelIdEnum["MPR0310-ZB.10"] = "2300-2300";//3璺户鐢靛櫒灏忔ā鍧� + this.dicDeviceModelIdEnum["MPR0310-ZB.10"] = "2300-2300-60001";//3璺户鐢靛櫒灏忔ā鍧� + this.dicDeviceModelIdEnum["MFA01-ZB.10"] = "2310-2300-60011";//鏂规偊鏂伴灏忔ā鍧� //=========鈽呪槄璋冨厜鍣ㄧ被(2500-2799)鈽呪槄========= - this.dicDeviceModelIdEnum["MPD0101-ZB.10"] = "2500-2500";//1璺皟鍏夊櫒灏忔ā鍧� + this.dicDeviceModelIdEnum["MPD0101-ZB.10"] = "2500-2500-60007";//1璺皟鍏夊櫒灏忔ā鍧� //=========鈽呪槄鏅鸿兘闂ㄩ攣绫�(2800-????)鈽呪槄========= - this.dicDeviceModelIdEnum["H06C"] = "2800-2800";//鏅鸿兘闂ㄩ攣(H06C) + this.dicDeviceModelIdEnum["H06C"] = "2800-2800-60010";//鏅鸿兘闂ㄩ攣(H06C) + this.dicDeviceModelIdEnum["S-one"] = "2802-2800-60010";//鏅鸿兘闂ㄩ攣(S-one) //=========鈽呪槄绌鸿皟绫�(3600-3899)鈽呪槄========= - this.dicDeviceModelIdEnum["MAC/GW-ZB.10"] = "3600-3600";//zigbee绌鸿皟缃戝叧妯″潡 + this.dicDeviceModelIdEnum["MAC/GW-ZB.10"] = "3600-3600-60009";//zigbee绌鸿皟缃戝叧妯″潡 //=========鈽呪槄涓户鍣ㄧ被(3900-3999)鈽呪槄========= - this.dicDeviceModelIdEnum["MSR-ZB.10"] = "3900-3900"; //zigbee涓户鍣� + this.dicDeviceModelIdEnum["MSR-ZB.10"] = "3900-3900-60006"; //zigbee涓户鍣� //=========鈽呪槄绌烘皵寮�鍏崇被(4100-4199)鈽呪槄========= - this.dicDeviceModelIdEnum["MBCI01-ZB.10"] = "4100-4100";//zigbee寰柇浜戞帶鍒跺櫒 + this.dicDeviceModelIdEnum["MBCI01-ZB.10"] = "4100-4100-60001";//zigbee寰柇浜戞帶鍒跺櫒 //=========鈽呪槄杞崲鍣ㄧ被(4200-4699)鈽呪槄========= - this.dicDeviceModelIdEnum["MBUS/GW-ZB.10"] = "4200-4200";//zigbee杞琤uspro鍗忚杞崲鍣� - this.dicDeviceModelIdEnum["M485/GW-ZB.10"] = "4201-4200";//zigbee杞�485鍗忚杞崲鍣� + this.dicDeviceModelIdEnum["MBUS/GW-ZB.10"] = "4200-4200-60008";//zigbee杞琤uspro鍗忚杞崲鍣� + this.dicDeviceModelIdEnum["M485/GW-ZB.10"] = "4201-4200-60008";//zigbee杞�485鍗忚杞崲鍣� @@ -2316,10 +3025,14 @@ //鉁┾湬鉁┾湬鉁╅渶瑕佸叡鏈夌殑鍥剧墖瀵硅薄鉁┾湬鉁┾湬鉁� + //涓よ�呴兘鏄疍eviceConcreteType + //Keys:鎸囧畾鐨勮澶� value:娌跨敤鐨勫浘鐗囨槸鍝璁惧鐨� this.dicPictrueShard = new Dictionary<string, string>(); this.dicPictrueShard["ButtonPanel_SimpleFour"] = "ButtonPanel_Four";//绠�绾�4鎸夐敭闈㈡澘 娌跨敤 4鎸夐敭鐨勫浘鏍� this.dicPictrueShard["ButtonPanel_SimpleThree"] = "ButtonPanel_Three";//绠�绾�3鎸夐敭闈㈡澘 娌跨敤 3鎸夐敭鐨勫浘鏍� this.dicPictrueShard["ButtonPanel_SimpleTwo"] = "ButtonPanel_Two";//绠�绾�2鎸夐敭闈㈡澘 娌跨敤 2鎸夐敭鐨勫浘鏍� + this.dicPictrueShard["IntelligentLocks_Sone"] = "IntelligentLocks_H06C";//S-one鐨勯棬閿佸浘鐗� 娌跨敤 H06C鐨勫浘鏍� + this.dicPictrueShard["Relay_FangyueFreshAirModul"] = "Relay_ThreeLoad";//鏂规偊鏂伴灏忔ā鍧楀浘鐗� 娌跨敤 3璺户鐢靛櫒鐨勫浘鏍� } #endregion @@ -2328,12 +3041,12 @@ #region 鈻� 鑷畾涔夎澶囩被鍨媉________________________ /// <summary> - /// <para>浠呴檺搴曞眰浣跨敤锛氳澶囩殑鍏蜂綋銆愯澶囩被鍨嬨��,鑷畾涔変笌妯″潡id鍏宠仈鐨勬灇涓�(鍊间负LocalDevice閲岄潰dicDeviceModelIdEnum鎵�鎸囧畾鐨勫��)</para> + /// <para>浠呴檺搴曞眰浣跨敤锛氳澶囩殑鍏蜂綋銆愯澶囩被鍨嬨��,鑷畾涔変笌妯″潡id鍏宠仈鐨勬灇涓�(鍊间负LocalDevice閲岄潰dicDeviceModelIdEnum鎵�鎸囧畾鐨凞eviceConcreteType鍊�)</para> /// <para>鍙橀噺鍚嶅彲浠ヤ綔涓恒�愯澶囩被鍨嬨�戝浘鐗�,杩欎釜鍊兼槸鐬庡啓鐨�,娌′粈涔堢壒娈婃剰涔�</para> /// </summary> public enum DeviceConcreteType { - //瀹氫箟瑙勫垯锛氥�愯澶囩被鍨嬨�戝浘鐗囧悕瀛�=LocalDevice閲岄潰dicDeviceModelIdEnum鎵�鎸囧畾鐨勫�� + //瀹氫箟瑙勫垯锛氥�愯澶囩被鍨嬨�戝浘鐗囧悕瀛�=LocalDevice閲岄潰dicDeviceModelIdEnum鎵�鎸囧畾鐨凞eviceConcreteType鍊� /// <summary> /// 鏈煡璁惧 @@ -2391,6 +3104,46 @@ /// 绠�绾�2鎸夐敭闈㈡澘 闀滃儚id锛�222 /// </summary> ButtonPanel_SimpleTwo = 222, + /// <summary> + /// 绠�绾�4鎸夐敭鍦烘櫙闈㈡澘 闀滃儚id锛�224 + /// </summary> + ButtonPanel_FourButtonScene = 224, + /// <summary> + /// 绠�绾�2璺獥甯橀潰鏉� 闀滃儚id锛�226 + /// </summary> + ButtonPanel_TwoButtonCurtain = 226, + /// <summary> + /// 鏂规偊2鎸夐敭杞昏Е寮忛潰鏉� 闀滃儚id锛�240 + /// </summary> + ButtonPanel_FangyueTwo = 240, + /// <summary> + /// 鏂规偊4鎸夐敭杞昏Е寮忛潰鏉� 闀滃儚id锛�241 + /// </summary> + ButtonPanel_FangyueFour = 241, + /// <summary> + /// 鏂规偊8鎸夐敭杞昏Е寮忛潰鏉� 闀滃儚id锛�242 + /// </summary> + ButtonPanel_FangyueEight = 242, + /// <summary> + /// 鏂规偊鏂伴闈㈡澘 闀滃儚id锛�250 + /// </summary> + ButtonPanel_FangyueFreshAir = 250, + /// <summary> + /// 鏂规偊鐜闈㈡澘 闀滃儚id锛�253 + /// </summary> + ButtonPanel_FangyueEnvironment = 253, + /// <summary> + /// 绐楀笜闈㈡澘 闀滃儚id锛�256 + /// </summary> + ButtonPanel_Curtain = 256, + /// <summary> + /// 绠�绾﹀鍔熻兘闈㈡澘 闀滃儚ID锛�212 + /// </summary> + ButtonPanel_SimpleMultifunction = 212, + /// <summary> + /// 绠�绾︾幆澧冮潰鏉� + /// </summary> + ButtonPanel_SimpleEnvironment = 230, //=========鈽呪槄PIR浼犳劅鍣ㄧ被(1200-1299)鈽呪槄========= /// <summary> @@ -2428,6 +3181,15 @@ /// </summary> Sensor_EmergencyButton = 1305, /// <summary> + /// 鍚搁《鐕冩皵浼犳劅鍣� + /// </summary> + Sensor_CeilingGas = 1306, + /// <summary> + /// PM2.5绌烘皵璐ㄩ噺浼犳劅鍣� + /// </summary> + Sensor_PMTwoPointFive = 1307, + + /// <summary> /// 杩愬姩浼犳劅鍣� /// </summary> Sensor_Motion = -1306, @@ -2457,7 +3219,11 @@ /// 涓夎矾缁х數鍣� 闀滃儚id锛�2300 /// </summary> Relay_ThreeLoad = 2300, - + /// <summary> + /// 鏂规偊鏂伴灏忔ā鍧� 闀滃儚id锛�2310 + /// </summary> + Relay_FangyueFreshAirModul = 2310, + //=========鈽呪槄璋冨厜鍣ㄧ被(2500-2799)鈽呪槄========= /// <summary> /// 璋冨厜鍣� @@ -2477,12 +3243,20 @@ /// H06C /// </summary> IntelligentLocks_H06C = 2800, + /// <summary> + /// S-one + /// </summary> + IntelligentLocks_Sone = 2802, //=========鈽呪槄褰╃伅绫�(????-????)鈽呪槄========= /// <summary> /// 褰╃伅 /// </summary> ColorLight = -10, + /// <summary> + /// 鑹叉俯鐏�(瀹冪殑闀滃儚ID鏈畾,鏆傚畾20000) + /// </summary> + ColorLight_Temperature = 20000, //=========鈽呪槄绌鸿皟(3600-3899)鈽呪槄========= /// <summary> @@ -2548,7 +3322,7 @@ } /// <summary> - /// <para>浠呴檺搴曞眰浣跨敤锛氳澶囨墍灞炵殑銆愯澶囩绫汇��,鑷畾涔変笌妯″潡id鍏宠仈鐨勬灇涓�(鍊间负LocalDevice閲岄潰dicDeviceModelIdEnum鎵�鎸囧畾鐨勫��)</para> + /// <para>浠呴檺搴曞眰浣跨敤锛氳澶囨墍灞炵殑銆愯澶囩绫汇��,鑷畾涔変笌妯″潡id鍏宠仈鐨勬灇涓�(鍊间负LocalDevice閲岄潰dicDeviceModelIdEnum鎵�鎸囧畾鐨凞eviceBeloneType鍊�)</para> /// <para>杩欎釜鍊兼槸鐬庡啓鐨�,娌′粈涔堢壒娈婃剰涔�</para> /// </summary> public enum DeviceBeloneType @@ -2570,9 +3344,17 @@ /// </summary> A浼犳劅鍣� = 1200, /// <summary> + /// PM2.5绌烘皵璐ㄩ噺浼犳劅鍣� + /// </summary> + APM2鐐�5绌烘皵璐ㄩ噺浼犳劅鍣� = 1307, + /// <summary> /// 缁х數鍣�(2300-2499) /// </summary> A缁х數鍣� = 2300, + /// <summary> + /// 鏂伴 + /// </summary> + A鏂伴 = 2310, /// <summary> /// 璋冨厜鍣�(2500-2799) /// </summary> @@ -2628,7 +3410,7 @@ /// <summary> /// 骞叉帴鐐� /// </summary> - A骞叉帴鐐� = 16 + A骞叉帴鐐� = 16, } #endregion -- Gitblit v1.8.0