From c7df85937f73fb347ee0b19e9c052d2d00a6df6c Mon Sep 17 00:00:00 2001 From: 黄学彪 <hxb@hdlchina.com.cn> Date: 星期五, 18 九月 2020 13:58:19 +0800 Subject: [PATCH] 新版本 --- ZigbeeApp/Shared/Common/Device.cs | 111 ++++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 89 insertions(+), 22 deletions(-) diff --git a/ZigbeeApp/Shared/Common/Device.cs b/ZigbeeApp/Shared/Common/Device.cs index 8031876..ec7fb84 100755 --- a/ZigbeeApp/Shared/Common/Device.cs +++ b/ZigbeeApp/Shared/Common/Device.cs @@ -165,6 +165,14 @@ this.DeleteGatewayFileByMemberModel(); //鍒濆鍖栫墿鐞嗚澶囨墍灞炴埧闂寸殑璁板綍 this.InitRealDeviceRoomId(); + +#if DEBUG + if (UserCenterResourse.HideOption.CenterHideMenu == 1) + { + //妫�娴嬩竴浜涗唬鐮侀厤缃�(debug) + this.CheckOhtherSettion(); + } +#endif } /// <summary> @@ -196,6 +204,38 @@ { //杩欎釜缃戝叧瀵逛簬褰撳墠杩欎釜鎴愬憳鏉ヨ鏄潪娉曠殑 HdlGatewayLogic.Current.DeleteGatewayFile(gwId); + } + } + } + + /// <summary> + /// 妫�娴嬩竴浜涗唬鐮侀厤缃�(debug) + /// </summary> + private void CheckOhtherSettion() + { + foreach (var item in Enum.GetValues(typeof(DeviceType))) + { + string itemName = item.ToString(); + int itemValue = (int)item; + if (itemName == "UnKown" || itemName == "ZbGateway") + { + continue; + } + var device = this.NewDeviceObjectByDeviceId((DeviceType)itemValue); + string strMsg = string.Empty; + if (device == null) + { + strMsg = itemName + "娌℃湁瀹炶(1)"; + } + device = CommonDevice.CommonDeviceByByteString(itemName, "{}"); + if (device == null) + { + strMsg += "\r\n" + itemName + "娌℃湁瀹炶(2)"; + } + if (strMsg != string.Empty) + { + this.ShowErrorMsg(strMsg); + return; } } } @@ -385,6 +425,12 @@ public void AddVirtualDeviceToMemory(CommonDevice device) { string mainKeys = this.GetDeviceMainKeys(device); + if (device is OTADevice) + { + this.dicOTADevice[mainKeys] = (OTADevice)device; + device.ReSave(); + return; + } this.dicAllDevice[mainKeys] = device; //璁惧鍥炶矾鏀堕泦 @@ -765,6 +811,8 @@ this.dicDeviceEpoint[device.DeviceAddr].Remove(device.DeviceEpoint); } } + //鍒犻櫎妯℃澘鏁版嵁 + Phone.TemplateData.TemplateCommonLogic.Current.DeleteDevice(device); //鍒犻櫎璁惧鏂囦欢 string filePath = device.FilePath; @@ -850,13 +898,25 @@ /// <summary> /// 鍙戦�佸畾浣嶆寚浠ゅ埌璁惧 /// </summary> - /// <param name="device"></param> - public void SetFixedPositionCommand(CommonDevice device) + /// <param name="device">璁惧鍥炶矾</param> + /// <param name="isRealDevice">鏄惁鏄畾浣嶇湡瀹炶澶�</param> + public void SetFixedPositionCommand(CommonDevice device, bool isRealDevice = false) { //濡傛灉褰撳墠浣忓畢涓嶆槸铏氭嫙浣忓畢 if (Common.Config.Instance.Home.IsVirtually == false) { - device.IdentifyControl(device.DeviceAddr, device.DeviceEpoint, 5); + int epoint = device.DeviceEpoint; + //濡傛灉鏄畾浣嶇湡瀹炶澶囩殑璇� + if (isRealDevice == true) + { + var myType = this.GetMyDeviceEnumInfo(new List<CommonDevice> { device }); + if (myType.ConcreteType == DeviceConcreteType.DimmableLight_OneLoad) + { + //涓�璺皟鍏夊櫒闇�瑕佸彂8鍥炶矾 + epoint = 8; + } + } + device.IdentifyControl(device.DeviceAddr, epoint, 5); } } @@ -1386,7 +1446,7 @@ else { var infoContent = this.GetDeviceModelIdNameInfo("A419"); - return infoContent != null ? infoContent.A瀹樻柟鍚嶅瓧 : string.Empty; + return infoContent != null ? infoContent.A瀹樻柟鍚嶅瓧 + epointNo : string.Empty; } } else if (device.Type == DeviceType.FreshAirHumiditySensor) @@ -1680,30 +1740,36 @@ /// <summary> /// 鑾峰彇銆愯澶囧姛鑳界被鍨嬨�戠殑鑿滃崟鍥炬爣 /// </summary> - /// <param name="specificType">鑷畾涔夎澶囩被鍨�</param> + /// <param name="deviceEnumInfo">鑷畾涔夎澶囩被鍨�</param> /// <param name="unSelectPath">鍥剧墖鍦板潃</param> /// <param name="selectPath">鍥剧墖鍦板潃</param> /// <returns></returns> - public void GetDeviceFunctionTypeMenuIcon(DeviceConcreteType specificType, ref string unSelectPath, ref string selectPath) + public void GetDeviceFunctionTypeMenuIcon(DeviceEnumInfo deviceEnumInfo, ref string unSelectPath, ref string selectPath) { //鏂伴灏忔ā鍧� - if (specificType == DeviceConcreteType.Relay_FangyueFreshAirModul) + if (deviceEnumInfo.ConcreteType == DeviceConcreteType.Relay_FangyueFreshAirModul) { unSelectPath = "Device/FreshAirEpoint.png"; selectPath = "Device/FreshAirEpointSelected.png"; return; } //PM2.5绌烘皵璐ㄩ噺浼犳劅鍣� - else if (specificType == DeviceConcreteType.Sensor_PMTwoPointFive) + else if (deviceEnumInfo.ConcreteType == DeviceConcreteType.Sensor_PMTwoPointFive) { unSelectPath = "Device/AirQualitySensorEpoint.png"; selectPath = "Device/AirQualitySensorEpointSelected.png"; return; } + else if (deviceEnumInfo.BeloneType == DeviceBeloneType.A绐楀笜) + { + unSelectPath = "ZigeeLogic/curtain.png"; + selectPath = "ZigeeLogic/selectedcurtain.png"; + return; + } //涓婇潰闇�瑕佺壒娈婂鐞� //鑾峰彇銆愯澶囩被鍨嬨�戠殑鍥炬爣 - this.GetDeviceObjectIcon(specificType, ref unSelectPath, ref selectPath); + this.GetDeviceObjectIcon(deviceEnumInfo.ConcreteType, ref unSelectPath, ref selectPath); } /// <summary> @@ -2258,19 +2324,18 @@ /// <param name="saveRoadDevice">濡傛灉鍙湁涓�涓洖璺�,鏄惁鎶婂洖璺殑鎴块棿涓�璧蜂慨鏀�</param> public void SaveRealDeviceRoomId(List<CommonDevice> listDevice, string roomId, bool saveRoadDevice = true) { - if (listDevice == null) + if (listDevice == null || listDevice.Count == 0) { return; } //濡傛灉璁惧鍙湁涓�涓洖璺紝濡傛灉鏀瑰彉浜嗙湡瀹炶澶囧尯鍩燂紝鍒欏畠鐨勫洖璺殑鍖哄煙涔熶竴璧锋敼浜� - if (saveRoadDevice == true && listDevice != null && listDevice.Count == 1) + if (saveRoadDevice == true && listDevice.Count == 1) { - if (listDevice[0] is OTADevice) + if ((listDevice[0] is OTADevice) == false) { - //鍗曠函鍙槸Ota璁惧鍒欎笉澶勭悊 - return; + //ota璁惧涓嶉渶瑕佸鐞� + HdlRoomLogic.Current.ChangedRoom(listDevice[0], roomId, false); } - HdlRoomLogic.Current.ChangedRoom(listDevice[0], roomId, false); } bool save = false; if (roomId == string.Empty) @@ -2656,7 +2721,7 @@ { HdlThreadLogic.Current.RunMain(() => { - var contr = new ShowMsgControl(ShowMsgType.Error, msg); + var contr = new ShowMsgControl(Phone.ShowMsgType.Error, msg); contr.Show(); }); } @@ -2669,7 +2734,7 @@ { HdlThreadLogic.Current.RunMain(() => { - var contr = new ShowMsgControl(ShowMsgType.Tip, msg); + var contr = new ShowMsgControl(Phone.ShowMsgType.Tip, msg); contr.Show(); }); } @@ -3046,6 +3111,8 @@ 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.Transverter) { device = new Transverter(); } + else if (deviceType == DeviceType.DimmerSwitch) { device = new DimmerSwitch(); } else if (deviceType == DeviceType.OtaDevice || deviceType == DeviceType.OtaPanelDevice) { device = new OTADevice(); } else { return null; } @@ -3088,7 +3155,7 @@ mainDevice.IconPath = "Device/Light.png"; } mainDevice.DfunctionType = DeviceFunctionType.A鐏厜; - if (device.DeviceInfo.FunctionType != (int)DeviceFunctionType.A鐏厜) + if (device.DeviceInfo != null && device.DeviceInfo.FunctionType != (int)DeviceFunctionType.A鐏厜) { //璋冨厜鍣ㄥ浐瀹氱伅鍏� if (sendFucType == true) @@ -3106,7 +3173,7 @@ mainDevice.IconPath = "Device/ColorLightTemperature.png"; } mainDevice.DfunctionType = DeviceFunctionType.A鐏厜; - if (device.DeviceInfo.FunctionType != (int)DeviceFunctionType.A鐏厜) + if (device.DeviceInfo != null && device.DeviceInfo.FunctionType != (int)DeviceFunctionType.A鐏厜) { //鑹叉俯鐏浐瀹氱伅鍏� if (sendFucType == true) @@ -3125,7 +3192,7 @@ if (mainDevice.DfunctionType == DeviceFunctionType.A鏈畾涔�) { mainDevice.DfunctionType = DeviceFunctionType.A鐏厜; - if (device.DeviceInfo.FunctionType != (int)DeviceFunctionType.A鐏厜) + if (device.DeviceInfo != null && device.DeviceInfo.FunctionType != (int)DeviceFunctionType.A鐏厜) { //缁х數鍣ㄩ粯璁や负鐏厜 if (sendFucType == true) @@ -3145,7 +3212,7 @@ if (mainDevice.DfunctionType == DeviceFunctionType.A鏈畾涔�) { mainDevice.DfunctionType = DeviceFunctionType.A寮�鍏�; - if (device.DeviceInfo.FunctionType != (int)DeviceFunctionType.A寮�鍏�) + if (device.DeviceInfo != null && device.DeviceInfo.FunctionType != (int)DeviceFunctionType.A寮�鍏�) { //绌烘皵寮�鍏抽粯璁や负寮�鍏� if (sendFucType == true) @@ -3164,7 +3231,7 @@ mainDevice.IconPath = "Device/ColorLight.png"; } mainDevice.DfunctionType = DeviceFunctionType.A鐏厜; - if (device.DeviceInfo.FunctionType != (int)DeviceFunctionType.A鐏厜) + if (device.DeviceInfo != null && device.DeviceInfo.FunctionType != (int)DeviceFunctionType.A鐏厜) { //褰╃伅榛樿涓哄紑鍏� if (sendFucType == true) -- Gitblit v1.8.0