From 2450c12c825ad4d78d1572da2fa421706db2df2f Mon Sep 17 00:00:00 2001 From: 黄学彪 <hxb@hdlchina.com.cn> Date: 星期四, 18 六月 2020 16:01:14 +0800 Subject: [PATCH] 新代码 --- ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirTargetsForm.cs | 694 ++++++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 557 insertions(+), 137 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirTargetsForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirTargetsForm.cs index 427baf6..b996092 100755 --- a/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirTargetsForm.cs +++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirTargetsForm.cs @@ -16,27 +16,29 @@ /// 鏋勯�犲嚱鏁� /// </summary> /// <param name="device"></param> - /// <param name="deviceBindType">1:鏂伴;2:娓╁害浼犳劅鍣�;3:婀垮害浼犳劅鍣�</param> - public PanelFangyueFreshAirTargetsForm(CommonDevice device, int deviceBindType) + /// <param name="deviceBindType">1:鏂伴;2:娓╁害浼犳劅鍣�;3:婀垮害浼犳劅鍣�;4:PM2.5浼犳劅鍣�</param> + /// <param name="bindDev">缁戝畾鐩爣 </param> + public PanelFangyueFreshAirTargetsForm(CommonDevice device, CommonDevice bindDev, int deviceBindType) { this.curControlDev = device as FreshAir; + this.curBindDevice = bindDev; this.curDeviceBindType = deviceBindType; } #endregion - #region 鍙橀噺鐢虫槑 - /// <summary> - /// 褰撳墠鎺у埗璁惧 - /// </summary> - //CommonDevice currentControlDevice; + #region 鍙橀噺鐢虫槑 /// <summary> /// 褰撳墠鏂伴闈㈡澘銆愭帶鍒惰澶囥�� /// </summary> FreshAir curControlDev; /// <summary> + /// 褰撳墠琚粦璁惧 + /// </summary> + CommonDevice curBindDevice; + /// <summary> /// 鏄剧ず琚粦瀹氳澶囨垨鍦烘櫙鐨剉iew /// </summary> - VerticalFrameRefreshControl midVerticalScrolViewLayout; + VerticalRefreshLayout midVerticalScrolViewLayout; /// <summary> /// 鏄剧ず鎴块棿鐨剉iew /// </summary> @@ -101,6 +103,7 @@ /// PM缁戝畾鐩爣鍥炶皟 /// </summary> public Action<string> actionPMTarget = null; + #endregion #region UI璁捐 @@ -218,7 +221,7 @@ btnMidTopLayout.AddChidren(btnHorizontalScrolViewLayout); //璁惧鏍� - midVerticalScrolViewLayout = new VerticalFrameRefreshControl() + midVerticalScrolViewLayout = new VerticalRefreshLayout() { Y = btnMidTopLayout.Bottom, Height = Application.GetRealHeight(1145), @@ -318,6 +321,32 @@ curentOldRoom = btnRoom; curentOldRoomFrameLayout = btnRoomFrameLayout; } + + //琚粦瀹氱殑鐩爣杩樻湭鍒嗛厤鍖哄煙锛岄粯璁ゆ槸绗竴涓� + if (string.IsNullOrEmpty(curControlDev.currentSelectRoomId)) + { + if (index == 0) + { + btnRoomFrameLayout.BackgroundImagePath = "Item/RoomIconBackgroundSelected.png"; + btnRoom.TextColor = Shared.Common.ZigbeeColor.Current.XMWhite; + curentOldRoom = btnRoom; + curentOldRoomFrameLayout = btnRoomFrameLayout; + } + } + + if (index == roomTempList.Count - 1 && index > 3) + { + var btnRoomFrameLayoutEmpty = new FrameLayout + { + Height = Application.GetMinReal(159), + Width = Application.GetMinReal(50), + Y = Application.GetRealHeight(23), + X = Application.GetRealWidth(5), + BorderWidth = 1, + }; + btnHorizontalScrolViewLayout.AddChidren(btnRoomFrameLayoutEmpty); + } + EventHandler<MouseEventArgs> eHandlerRoom = (sender, e) => { if (!btnRoom.IsSelected) @@ -343,7 +372,6 @@ curentOldRoomFrameLayout.BackgroundImagePath = "Item/RoomIconBackgroundSelected.png"; } curRoom = room; - curControlDev.RoomId = room.Id; //鏂伴闈㈡澘淇濆瓨浣胯兘 btnFinifh.Enable = true; @@ -450,6 +478,29 @@ line2.Visible = false; } + switch (curDeviceBindType) + { + case 1: + devicePic.UnSelectedImagePath = "Device/FreshAirEpoint.png"; + break; + case 2: + devicePic.UnSelectedImagePath = "Device/SensorTemperature.png"; + if (device.Type == DeviceType.PMSensor) + { + btnBindName.Text = Common.LocalDevice.Current.GetDeviceEpointName(device) + "-" + Language.StringByID(R.MyInternationalizationString.TemperatureSensor); + } + break; + case 3: + devicePic.UnSelectedImagePath = "Device/SensorHumidity.png"; + if (device.Type == DeviceType.PMSensor) + { + btnBindName.Text = Common.LocalDevice.Current.GetDeviceEpointName(device) + "-" + Language.StringByID(R.MyInternationalizationString.HumiditySensor); + } + break; + case 4: + devicePic.UnSelectedImagePath = "Device/AirQualitySensorEpoint.png"; + break; + } #endregion string mianKey = device.DeviceAddr + device.DeviceEpoint; @@ -608,7 +659,7 @@ btnFloorText.Text = dicFloorList[floorId]; //鑾峰彇妤煎眰涓埧闂村垪琛� - supportRoomList = GetFloorRoomList(curFloorId); + supportRoomList = GetFloorRoomList(); if (!btnMethodText.IsSelected) { if (oldbutton != null) @@ -665,17 +716,19 @@ { CommonPage.Loading.Start(""); }); + //鑾峰彇琚粦鐩爣绛変俊鎭� + BindDevInfo(curBindDevice); //鑾峰彇妤煎眰 dicFloorList = HdlRoomLogic.Current.GetFloorSortList(); //鑾峰彇妤煎眰涓埧闂村垪琛� - supportRoomList = GetFloorRoomList(curControlDev.currentSelectFloorId); + supportRoomList = GetFloorRoomList(); //鑾峰彇鎵�鏈夋埧闂翠腑鍖归厤鐨勮兘缁戠殑鐩爣 currentPanelSupportBindDeviceList = GetAllRoomSupportDeviceList(); //鑾峰彇闈㈡澘涓瓨鍦ㄧ殑缁戝畾鐩爣 - var panelBindListRes = await this.curControlDev.GetDeviceBindAsync(); + var panelBindListRes = HdlDeviceBindLogic.Current.GetDeviceBindAsync(curControlDev); if (panelBindListRes != null && panelBindListRes.getAllBindResponseData != null) { curControlDev.bindList.Clear(); @@ -693,17 +746,18 @@ new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance); }); } + targetList.Clear(); //閫変腑鐩爣鍒楄〃 targetList if (currentPanelSupportBindDeviceList.Count != 0 && curControlDev.bindList.Count != 0) { - foreach (var bindDev in currentPanelSupportBindDeviceList) + foreach (var bindDev in curControlDev.bindList) { - var mainKey = bindDev.DeviceAddr + bindDev.DeviceEpoint; - var dev = curControlDev.bindList.Find(obj => (obj != null) && (obj.BindMacAddr + obj.BindEpoint == mainKey)); + var mainKey = bindDev.BindMacAddr + bindDev.BindEpoint; + var dev = currentPanelSupportBindDeviceList.Find(obj => (obj != null) && (obj.DeviceAddr + obj.DeviceEpoint == mainKey)); if (dev != null) { - var device = LocalDevice.Current.GetDevice(bindDev.DeviceAddr, bindDev.DeviceEpoint); + var device = LocalDevice.Current.GetDevice(dev.DeviceAddr, dev.DeviceEpoint); if (device != null) { switch (curDeviceBindType) @@ -725,19 +779,56 @@ case 2: if (device.Type == DeviceType.TemperatureSensor) { - targetList.Add(device); - oldTargetList.Add(device); + var bDev = device as TemperatureSensor; + if (bDev.SensorDiv == 1) + { + targetList.Add(device); + oldTargetList.Add(device); + } + } + if (device.Type == DeviceType.PMSensor) + { + if (bindDev.BindCluster == 1026) + { + targetList.Add(device); + oldTargetList.Add(device); + } } break; case 3: + if (device.Type == DeviceType.TemperatureSensor) + { + var bDev = device as TemperatureSensor; + if (bDev.SensorDiv == 2) + { + targetList.Add(device); + oldTargetList.Add(device); + } + } if (device.Type == DeviceType.FreshAirHumiditySensor) { targetList.Add(device); oldTargetList.Add(device); } + if (device.Type == DeviceType.PMSensor) + { + if (bindDev.BindCluster == 1029) + { + targetList.Add(device); + oldTargetList.Add(device); + } + } break; case 4: //PM2.5 + if (device.Type == DeviceType.PMSensor) + { + if (bindDev.BindCluster == 1066) + { + targetList.Add(device); + oldTargetList.Add(device); + } + } break; } @@ -759,6 +850,7 @@ if (targetList.Count == 0) { curControlDev.currentSelectFloorId = BindInfo.GetCurrentSelectFloorId(); + curControlDev.currentSelectRoomId = null; if (BindInfo.GetCurrentSelectFloorIdName() != null) { Application.RunOnMainThread(() => @@ -819,6 +911,7 @@ /// <param name="curControlDev"></param> void SaveTarget() { + btnFinifh.Enable = false; if (targetList.Count == 0) { //绌虹洰鏍� @@ -852,6 +945,7 @@ break; case 4: //PM2.5 + removeDevice.BindCluster = 1066; break; } removeDevice.BindMacAddr = bd.DeviceAddr; @@ -859,56 +953,128 @@ delDevice.RemoveBindList.Add(removeDevice); var delResult = new DelDeviceBindResponseAllData(); - delResult = await curControlDev.DelDeviceBindAsync(delDevice); - if (delResult != null && delResult.removeBindResultResponseData != null) + delResult = HdlDeviceBindLogic.Current.DelDeviceBindAsync(delDevice); + if (delResult == null) { - if (delResult.removeBindResultResponseData.Result == 0) + Application.RunOnMainThread(() => { - switch (curDeviceBindType) + new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.BindFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(CommonPage.Instance); + btnFinifh.Enable = true; + btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack; + CommonPage.Loading.Hide(); + }); + return; + } + else + { + if (delResult.removeBindResultResponseData == null) + { + if (delResult.delDeviceBindResponseData != null) { - case 1: - if (actionFreshAirTarget != null) + foreach (var d in delResult.delDeviceBindResponseData.RemoveBindList) + { + if (d.Result == 1) { - actionFreshAirTarget(""); + switch (curDeviceBindType) + { + case 1: + if (actionFreshAirTarget != null) + { + actionFreshAirTarget(""); + } + break; + case 2: + if (actionTemperatureTarget != null) + { + actionTemperatureTarget(""); + } + break; + case 3: + if (actionHumidityTarget != null) + { + actionHumidityTarget(""); + } + break; + case 4: + if (actionPMTarget != null) + { + actionPMTarget(""); + } + break; + } + Application.RunOnMainThread(() => + { + CommonPage.Loading.Hide(); + btnFinifh.Enable = true; + btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack; + this.RemoveFromParent(); + }); } - break; - case 2: - if (actionTemperatureTarget != null) + else { - actionTemperatureTarget(""); + Application.RunOnMainThread(() => + { + new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.BindFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(CommonPage.Instance); + btnFinifh.Enable = true; + btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack; + CommonPage.Loading.Hide(); + }); + return; } - break; - case 3: - if (actionHumidityTarget != null) - { - actionHumidityTarget(""); - } - break; - case 4: - if (actionPMTarget != null) - { - actionPMTarget(""); - } - break; + } } - Application.RunOnMainThread(() => - { - CommonPage.Loading.Hide(); - btnFinifh.Enable = true; - btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack; - this.RemoveFromParent(); - }); } else { - Application.RunOnMainThread(() => + if (delResult.removeBindResultResponseData.Result == 0) { - new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.BindFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(CommonPage.Instance); - btnFinifh.Enable = true; - btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack; - CommonPage.Loading.Hide(); - }); - return; + switch (curDeviceBindType) + { + case 1: + if (actionFreshAirTarget != null) + { + actionFreshAirTarget(""); + } + break; + case 2: + if (actionTemperatureTarget != null) + { + actionTemperatureTarget(""); + } + break; + case 3: + if (actionHumidityTarget != null) + { + actionHumidityTarget(""); + } + break; + case 4: + if (actionPMTarget != null) + { + actionPMTarget(""); + } + break; + } + Application.RunOnMainThread(() => + { + CommonPage.Loading.Hide(); + btnFinifh.Enable = true; + btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack; + this.RemoveFromParent(); + }); + + } + else + { + Application.RunOnMainThread(() => + { + new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.BindFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(CommonPage.Instance); + btnFinifh.Enable = true; + btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack; + CommonPage.Loading.Hide(); + }); + return; + } } } } @@ -933,6 +1099,11 @@ catch (Exception ex) { var mess = ex.Message; + Application.RunOnMainThread(() => + { + CommonPage.Loading.Hide(); + }); + btnFinifh.Enable = true; } }); } @@ -966,33 +1137,104 @@ { foreach (var bd in oldTargetList) { - var delDevice = new DelDeviceBindData(); - delDevice.DeviceAddr = curControlDev.DeviceAddr; - delDevice.Epoint = curControlDev.DeviceEpoint; - - var removeDevice = new RemoveBindListObj(); - removeDevice.BindType = 0; - switch (curDeviceBindType) - { - case 1: - removeDevice.BindCluster = 514; - break; - case 2: - removeDevice.BindCluster = 1026; - break; - case 3: - removeDevice.BindCluster = 1029; - break; - case 4: - //PM2.5 - break; - } - removeDevice.BindMacAddr = bd.DeviceAddr; - removeDevice.BindEpoint = bd.DeviceEpoint; - delDevice.RemoveBindList.Add(removeDevice); - + var delDevice = DelBindDevice(bd); var delResult = new DelDeviceBindResponseAllData(); - delResult = await curControlDev.DelDeviceBindAsync(delDevice); + delResult = HdlDeviceBindLogic.Current.DelDeviceBindAsync(delDevice); + + if (delResult == null) + { + Application.RunOnMainThread(() => + { + new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.BindFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(CommonPage.Instance); + btnFinifh.Enable = true; + btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack; + CommonPage.Loading.Hide(); + }); + return; + } + else + { + if (delResult.removeBindResultResponseData == null) + { + if (delResult.delDeviceBindResponseData != null) + { + foreach (var d in delResult.delDeviceBindResponseData.RemoveBindList) + { + if (d.Result != 1) + { + Application.RunOnMainThread(() => + { + new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.BindFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(CommonPage.Instance); + btnFinifh.Enable = true; + btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack; + CommonPage.Loading.Hide(); + }); + return; + } + } + } + } + } + if (delResult != null && delResult.removeBindResultResponseData != null) + { + if (delResult.removeBindResultResponseData.Result != 0) + { + Application.RunOnMainThread(() => + { + new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.BindFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(CommonPage.Instance); + btnFinifh.Enable = true; + btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack; + CommonPage.Loading.Hide(); + }); + return; + } + } + } + } + else + { + //妫�娴嬪凡缁忕粦瀹氱殑鐩爣鏄惁涓嶅湪鏈湴鎴栬�呮病鏈夊垎閰嶅埌浠讳綍鎴块棿涓� + //姝ゆ椂闇�瑕佸垹闄ゅ凡缁忚缁戝畾鍒扮洰鏍囷紝鎵嶈兘缁х画缁戝畾鏂扮洰鏍� + if (curBindDevice != null) + { + var delDevice = DelBindDevice(curBindDevice); + var delResult = new DelDeviceBindResponseAllData(); + delResult = HdlDeviceBindLogic.Current.DelDeviceBindAsync(delDevice); + + if (delResult == null) + { + Application.RunOnMainThread(() => + { + new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.BindFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(CommonPage.Instance); + btnFinifh.Enable = true; + btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack; + CommonPage.Loading.Hide(); + }); + return; + } + else + { + if (delResult.removeBindResultResponseData == null) + { + if (delResult.delDeviceBindResponseData != null) + { + foreach (var d in delResult.delDeviceBindResponseData.RemoveBindList) + { + if (d.Result != 1) + { + Application.RunOnMainThread(() => + { + new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.BindFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(CommonPage.Instance); + btnFinifh.Enable = true; + btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack; + CommonPage.Loading.Hide(); + }); + return; + } + } + } + } + } if (delResult != null && delResult.removeBindResultResponseData != null) { if (delResult.removeBindResultResponseData.Result != 0) @@ -1031,17 +1273,33 @@ break; case 4: //PM2.5 + addBindInfo.BindCluster = 1066; break; } addBindInfo.BindType = 0; addBindInfo.BindMacAddr = de.DeviceAddr; addBindInfo.BindEpoint = de.DeviceEpoint; + addBindeDev.BindName = Common.LocalDevice.Current.GetDeviceEpointName(de); + switch (curDeviceBindType) + { + case 2: + if (de.Type == DeviceType.PMSensor) + { + addBindeDev.BindName = Common.LocalDevice.Current.GetDeviceEpointName(de) + "-" + Language.StringByID(R.MyInternationalizationString.TemperatureSensor); + } + break; + case 3: + if (de.Type == DeviceType.PMSensor) + { + addBindeDev.BindName = Common.LocalDevice.Current.GetDeviceEpointName(de) + "-" + Language.StringByID(R.MyInternationalizationString.HumiditySensor); + } + break; + } addBindeDev.BindList.Add(addBindInfo); - bindName = de.DeviceEpointName; } var dev = new AddedDeviceBindResponseAllData(); - dev = await curControlDev.AddDeviceBindAsync(addBindeDev); + dev = HdlDeviceBindLogic.Current.AddDeviceBindAsync(addBindeDev); if (dev == null || dev.addedDeviceBindResponseData == null) { Application.RunOnMainThread(() => @@ -1057,33 +1315,31 @@ { if (dev.addedDeviceBindResponseData.Result == 0) { - curControlDev.bindList = dev.addedDeviceBindResponseData.BindList; targetList.Clear(); - switch (curDeviceBindType) { case 1: if (actionFreshAirTarget != null) { - actionFreshAirTarget(bindName); + actionFreshAirTarget(addBindeDev.BindName); } break; case 2: if (actionTemperatureTarget != null) { - actionTemperatureTarget(bindName); + actionTemperatureTarget(addBindeDev.BindName); } break; case 3: if (actionHumidityTarget != null) { - actionHumidityTarget(bindName); + actionHumidityTarget(addBindeDev.BindName); } break; case 4: if (actionPMTarget != null) { - actionPMTarget(bindName); + actionPMTarget(addBindeDev.BindName); } break; } @@ -1134,9 +1390,39 @@ } catch (Exception ex) { + Application.RunOnMainThread(() => + { + CommonPage.Loading.Hide(); + }); + btnFinifh.Enable = true; var mess = ex.Message; } }); + } + } + + /// <summary> + /// 褰撳墠琚粦瀹氳澶囨墍灞炴ゼ灞傚拰鎴块棿 + /// </summary> + /// <param name="bindDev"></param> + void BindDevInfo(CommonDevice bindDev) + { + if (bindDev == null) + { + return; + } + //鑾峰彇鏈湴璁惧鍒楄〃 + var localDeviceList = Shared.Common.LocalDevice.Current.listAllDevice; + var tempDev = localDeviceList.Find(obj => obj.DeviceAddr == bindDev.DeviceAddr && obj.DeviceEpoint == bindDev.DeviceEpoint); + if (tempDev != null) + { + //鑾峰彇璁惧鎵�灞炴埧闂� + var tempDevRoom = HdlRoomLogic.Current.GetRoomByDevice(tempDev); + if (tempDevRoom != null) + { + curControlDev.currentSelectRoomId = tempDevRoom.Id; + curControlDev.currentSelectFloorId = tempDevRoom.FloorId; + } } } @@ -1161,6 +1447,40 @@ } } return exist; + } + + /// <summary> + /// 妫�娴嬪凡缁忕粦瀹氱殑鐩爣鏄惁涓嶅湪鏈湴鎴栬�呮病鏈夊垎閰嶅埌浠讳綍鎴块棿涓� + /// </summary> + /// <returns></returns> + private DelDeviceBindData DelBindDevice(CommonDevice bd) + { + var delDevice = new DelDeviceBindData(); + delDevice.DeviceAddr = curControlDev.DeviceAddr; + delDevice.Epoint = curControlDev.DeviceEpoint; + + var removeDevice = new RemoveBindListObj(); + removeDevice.BindType = 0; + switch (curDeviceBindType) + { + case 1: + removeDevice.BindCluster = 514; + break; + case 2: + removeDevice.BindCluster = 1026; + break; + case 3: + removeDevice.BindCluster = 1029; + break; + case 4: + //PM2.5 + removeDevice.BindCluster = 1066; + break; + } + removeDevice.BindMacAddr = bd.DeviceAddr; + removeDevice.BindEpoint = bd.DeviceEpoint; + delDevice.RemoveBindList.Add(removeDevice); + return delDevice; } /// <summary> @@ -1194,6 +1514,7 @@ foreach (var de in room.ListDevice) { var device = LocalDevice.Current.GetDevice(de); + if (device != null) { //鑾峰彇璁惧绫诲瀷鐨� @@ -1211,19 +1532,10 @@ } break; case 2: - foreach (var de in room.ListDevice) - { - var device = LocalDevice.Current.GetDevice(de); - if (device != null) - { - if (device.Type == DeviceType.TemperatureSensor) - { - roomIncludeMatchDevice.Add(device); - } - } - } + roomIncludeMatchDevice = GetMatchTemperatureSensorDevice(room); break; case 3: + roomIncludeMatchDevice = GetMatchHumiditySensorDevice(room); foreach (var de in room.ListDevice) { var device = LocalDevice.Current.GetDevice(de); @@ -1237,6 +1549,17 @@ } break; case 4: + foreach (var de in room.ListDevice) + { + var device = LocalDevice.Current.GetDevice(de); + if (device != null) + { + if (device.Type == DeviceType.PMSensor) + { + roomIncludeMatchDevice.Add(device); + } + } + } break; } @@ -1244,30 +1567,112 @@ { continue; } - } - if (!string.IsNullOrEmpty(room.FloorId)) - { - //鏈夋ゼ灞� - if (room.FloorId == curControlDev.currentSelectFloorId) + if (!string.IsNullOrEmpty(room.FloorId)) { + //鏈夋ゼ灞� + if (room.FloorId == curControlDev.currentSelectFloorId) + { + roomTempList.Add(room); + } + } + else + { + //娌℃湁妤煎眰 roomTempList.Add(room); } - } - else - { - //娌℃湁妤煎眰 - roomTempList.Add(room); } } return roomTempList; } /// <summary> + /// 鍖归厤娓╁害浼犳劅鍣� + /// </summary> + /// <param name="room"></param> + List<CommonDevice> GetMatchTemperatureSensorDevice(Room room) + { + List<CommonDevice> roomIncludeMatchTempDevice = new List<CommonDevice>(); + foreach (var de in room.ListDevice) + { + var device = LocalDevice.Current.GetDevice(de); + if (device != null) + { + //鐢垫睜璁惧涓嶆敮鎸佺粦瀹� + if (device.ZigbeeType != 1) + { + continue; + } + if (device.Type == DeviceType.TemperatureSensor) + { + var dev = device as TemperatureSensor; + if (dev.SensorDiv == 1) + { + roomIncludeMatchTempDevice.Add(device); + } + } + else if (device.Type == DeviceType.PMSensor) + { + var dev = device as PMSensor; + foreach (var clu in dev.InClusterList) + { + if (clu.InCluster == 1026) + { + roomIncludeMatchTempDevice.Add(device); + } + } + } + } + } + return roomIncludeMatchTempDevice; + } + + /// <summary> + /// 鍖归厤婀垮害浼犳劅鍣� + /// </summary> + /// <param name="room"></param> + List<CommonDevice> GetMatchHumiditySensorDevice(Room room) + { + List<CommonDevice> roomIncludeMatchHumpDevice = new List<CommonDevice>(); + foreach (var de in room.ListDevice) + { + var device = LocalDevice.Current.GetDevice(de); + if (device != null) + { + //鐢垫睜璁惧涓嶆敮鎸佺粦瀹� + if (device.ZigbeeType != 1) + { + continue; + } + if (device.Type == DeviceType.TemperatureSensor) + { + var dev = device as TemperatureSensor; + if (dev.SensorDiv == 2) + { + roomIncludeMatchHumpDevice.Add(device); + } + } + else if (device.Type == DeviceType.PMSensor) + { + var dev = device as PMSensor; + foreach (var clu in dev.InClusterList) + { + if (clu.InCluster == 1029) + { + roomIncludeMatchHumpDevice.Add(device); + } + } + } + } + } + return roomIncludeMatchHumpDevice; + } + + /// <summary> /// 鑾峰彇妤煎眰瀵瑰簲鐨勬埧闂村垪琛� /// </summary> /// <returns></returns> - private List<Room> GetFloorRoomList(string floorId) + private List<Room> GetFloorRoomList() { supportRoomList.Clear(); var supportRoomListTemp = new List<Room>(); @@ -1279,10 +1684,6 @@ { if (string.IsNullOrEmpty(room.FloorId)) { - if (room.FloorId != floorId) - { - continue; - } if (room.IsLove) { continue; @@ -1350,16 +1751,10 @@ { continue; } - foreach (var deviceKeys in r.ListDevice) + var deviceListTemp = GetMatchTemperatureSensorDevice(r); + foreach (var dev in deviceListTemp) { - var device = LocalDevice.Current.GetDevice(deviceKeys); - if (device != null) - { - if (device.Type == DeviceType.TemperatureSensor) - { - currentPanelBindSupportDeviceListTemp.Add(device); - } - } + currentPanelBindSupportDeviceListTemp.Add(dev); } } break; @@ -1369,6 +1764,11 @@ if (r.ListDevice.Count == 0) { continue; + } + var deviceListTemp = GetMatchHumiditySensorDevice(r); + foreach (var dev in deviceListTemp) + { + currentPanelBindSupportDeviceListTemp.Add(dev); } foreach (var deviceKeys in r.ListDevice) { @@ -1384,6 +1784,24 @@ } break; case 4: + foreach (var r in supportRoomList) + { + if (r.ListDevice.Count == 0) + { + continue; + } + foreach (var deviceKeys in r.ListDevice) + { + var device = LocalDevice.Current.GetDevice(deviceKeys); + if (device != null) + { + if (device.Type == DeviceType.PMSensor) + { + currentPanelBindSupportDeviceListTemp.Add(device); + } + } + } + } break; } return currentPanelBindSupportDeviceListTemp; @@ -1420,19 +1838,10 @@ } break; case 2: - foreach (var deviceKeys in curRoom.ListDevice) - { - var device = LocalDevice.Current.GetDevice(deviceKeys); - if (device != null) - { - if (device.Type == DeviceType.TemperatureSensor) - { - curRoomDeviceListTemp.Add(device); - } - } - } + curRoomDeviceListTemp = GetMatchTemperatureSensorDevice(curRoom); break; case 3: + curRoomDeviceListTemp = GetMatchHumiditySensorDevice(curRoom); foreach (var deviceKeys in curRoom.ListDevice) { var device = LocalDevice.Current.GetDevice(deviceKeys); @@ -1446,6 +1855,17 @@ } break; case 4: + foreach (var deviceKeys in curRoom.ListDevice) + { + var device = LocalDevice.Current.GetDevice(deviceKeys); + if (device != null) + { + if (device.Type == DeviceType.PMSensor) + { + curRoomDeviceListTemp.Add(device); + } + } + } break; } return curRoomDeviceListTemp; -- Gitblit v1.8.0