From 224ea4055d5359d0bae0e7087ccc11724a2e49e5 Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期二, 14 七月 2020 16:09:19 +0800
Subject: [PATCH] 备份新改的代码
---
ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/BindInfo.cs | 1053 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 1,053 insertions(+), 0 deletions(-)
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/BindInfo.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/BindInfo.cs
new file mode 100644
index 0000000..ee1cf2c
--- /dev/null
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/BindInfo.cs
@@ -0,0 +1,1053 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Shared.Common;
+using Shared.Phone.UserCenter.Device;
+using ZigBee.Device;
+using static ZigBee.Device.BindObj;
+using static ZigBee.Device.Panel;
+
+namespace Shared.Phone.UserCenter.DeviceBind
+{
+ public class BindInfo
+ {
+ #region 缁戝畾璁捐鐨勫彉閲忓畾涔�
+ /// <summary>
+ /// 褰撳墠璁惧缁戝畾绫诲瀷
+ /// </summary>
+ public enum BindType
+ {
+ /// <summary>
+ /// 鏂伴
+ /// </summary>
+ FreshAir = 1,
+ /// <summary>
+ /// 娓╁害浼犳劅鍣�
+ /// </summary>
+ Temperature = 2,
+ /// <summary>
+ /// 婀垮害浼犳劅鍣�
+ /// </summary>
+ Humidity = 3,
+ /// <summary>
+ /// PM2.5浼犳劅鍣�
+ /// </summary>
+ PM = 4,
+ /// <summary>
+ /// 绌鸿皟鐩爣
+ /// </summary>
+ AC = 5,
+ }
+
+ #endregion
+
+ #region 缁戝畾娑夊強鐨勬暟鎹鐞�
+ /// <summary>
+ /// 鑾峰彇褰撳墠妤煎眰鍚嶇О
+ /// </summary>
+ /// <returns></returns>
+ public static string GetCurrentKeyAllRoomList()
+ {
+ var dicFloor = HdlRoomLogic.Current.GetFloorSortList();
+ foreach (var floorId in dicFloor.Keys)
+ {
+ //绗竴涓ゼ灞�
+ return dicFloor[floorId];
+ break;
+ }
+ return null;
+ }
+
+ /// <summary>
+ /// 鑾峰彇褰撳墠妤煎眰
+ /// </summary>
+ /// <returns></returns>
+ public static string GetCurrentSelectFloorId()
+ {
+ var dicFloor = HdlRoomLogic.Current.GetFloorSortList();//
+ foreach (var floorId in dicFloor.Keys)
+ {
+ //绗竴涓ゼ灞�
+ return floorId;
+ break;
+ }
+ return null;
+ }
+
+ /// <summary>
+ /// 鑾峰彇褰撳墠妤煎眰鍚嶇О
+ /// </summary>
+ /// <returns></returns>
+ public static string GetCurrentSelectFloorIdName()
+ {
+ var dicFloor = HdlRoomLogic.Current.GetFloorSortList();
+ foreach (var floorId in dicFloor.Keys)
+ {
+ //绗竴涓ゼ灞�
+ return dicFloor[floorId];
+ break;
+ }
+ return null;
+ }
+
+ /// <summary>
+ /// 鑾峰彇褰撳墠妤煎眰鍚嶇О
+ /// fllodID:妤煎眰ID
+ /// </summary>
+ /// <returns></returns>
+ public static string GetBindTargetsFloorIdName(string curFllodID)
+ {
+ var dicFloor = HdlRoomLogic.Current.GetFloorSortList();
+ foreach (var floorId in dicFloor.Keys)
+ {
+ //褰撳墠妤煎眰
+ if (curFllodID == floorId)
+ {
+ return dicFloor[floorId];
+ break;
+ }
+ }
+ return null;
+ }
+
+ /// <summary>
+ /// 鑾峰彇褰撳墠鎴块棿涓尮閰嶇殑鏀寔缁戝畾鐨勮澶囧垪琛�
+ /// currentRoomSupportBindDeviceList 褰撳墠鎴块棿涓敮鎸佽缁戝畾鐨勮澶囧垪琛�
+ /// curRoom 褰撳墠鎴块棿
+ /// curDeviceBindType 褰撳墠璁惧缁戝畾绫诲瀷
+ /// </summary>
+ /// <returns></returns>
+ public static List<CommonDevice> GetCurRoomSupportDeviceList(List<CommonDevice> currentRoomSupportBindDeviceList, Room curRoom, BindInfo.BindType curDeviceBindType)
+ {
+ currentRoomSupportBindDeviceList.Clear();
+ List<CommonDevice> curRoomDeviceListTemp = new List<CommonDevice>();
+ switch (curDeviceBindType)
+ {
+ case BindType.FreshAir:
+ foreach (var deviceKeys in curRoom.ListDevice)
+ {
+ var device = LocalDevice.Current.GetDevice(deviceKeys);
+ if (device != null)
+ {
+ if (BindInfo.checkRealFreshAirDevice(device) == false)
+ {
+ continue;
+ }
+ if (device.Type == DeviceType.FreshAir)
+ {
+ curRoomDeviceListTemp.Add(device);
+ }
+ }
+ }
+ break;
+ case BindType.Temperature:
+ curRoomDeviceListTemp = GetMatchTemperatureSensorDevice(curRoom);
+ break;
+ case BindType.Humidity:
+ curRoomDeviceListTemp = GetMatchHumiditySensorDevice(curRoom);
+ foreach (var deviceKeys in curRoom.ListDevice)
+ {
+ var device = LocalDevice.Current.GetDevice(deviceKeys);
+ if (device != null)
+ {
+ if (device.Type == DeviceType.FreshAirHumiditySensor)
+ {
+ curRoomDeviceListTemp.Add(device);
+ }
+ }
+ }
+ break;
+ case BindType.PM:
+ foreach (var deviceKeys in curRoom.ListDevice)
+ {
+ var device = LocalDevice.Current.GetDevice(deviceKeys);
+ if (device != null)
+ {
+ if (device.Type == DeviceType.PMSensor)
+ {
+ curRoomDeviceListTemp.Add(device);
+ }
+ }
+ }
+ break;
+ case BindType.AC:
+ foreach (var deviceKeys in curRoom.ListDevice)
+ {
+ var device = LocalDevice.Current.GetDevice(deviceKeys);
+ if (device != null)
+ {
+ if (device.Type == DeviceType.Thermostat)
+ {
+ if (BindInfo.checkRealAcDevice(device) == false)
+ {
+ continue;
+ }
+ curRoomDeviceListTemp.Add(device);
+ }
+ }
+ }
+ break;
+ }
+ return curRoomDeviceListTemp;
+ }
+
+ /// <summary>
+ /// 鍖归厤娓╁害浼犳劅鍣�
+ /// </summary>
+ /// <param name="room"></param>
+ public static 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>
+ public static 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>
+ public static List<Room> GetSupportRoomList()
+ {
+ var supportRoomListTemp = new List<Room>();
+ var listAllRoom = HdlRoomLogic.Current.GetAllListRooms();
+ if (Common.Config.Instance.Home.FloorDics.Count == 0)
+ {
+ // 鑾峰彇娌℃湁妤煎眰鎴块棿
+ foreach (var room in listAllRoom)
+ {
+ if (string.IsNullOrEmpty(room.FloorId))
+ {
+ if (room.IsLove)
+ {
+ continue;
+ }
+ supportRoomListTemp.Add(room);
+ }
+ }
+ }
+ else
+ {
+ // 鑾峰彇鏀寔鐨勬埧闂�
+ foreach (var room in listAllRoom)
+ {
+ if (room.IsLove)
+ {
+ continue;
+ }
+ supportRoomListTemp.Add(room);
+ }
+ }
+ return supportRoomListTemp;
+ }
+
+ /// <summary>
+ /// 鑳芥樉绀虹殑鎴块棿鍒楄〃
+ /// curControlDev 鎺у埗璁惧
+ /// supportRoomList 鏈湴鎴块棿鍒楄〃
+ /// curDeviceBindType 褰撳墠璁惧缁戝畾绫诲瀷
+ /// </summary>
+ public static List<Room> GetSupportRoomList(Panel curControlDev, List<Room> supportRoomList, BindInfo.BindType curDeviceBindType)
+ {
+ var roomTempList = new List<Room>();
+ for (int i = 0; i < supportRoomList.Count; i++)
+ {
+ var room = supportRoomList[i];
+ //濡傛灉鎴块棿涓哄枩鐖盵鍚庢潵鏀瑰悕涓哄父鐢ㄦ埧闂碷锛屽垯涓嶆樉绀�
+ if (room.IsLove == true)
+ {
+ continue;
+ }
+
+ //濡傛灉鎴块棿涓病鏈夎澶囷紝鍒欎笉鏄剧ず
+ if (room.ListDevice.Count == 0)
+ {
+ continue;
+ }
+ else
+ {
+ List<CommonDevice> roomIncludeMatchDevice = new List<CommonDevice>();
+
+ //鎴块棿涓病鏈夊搴旂殑鏀寔缁戝畾鐨勭洰鏍�
+ switch (curDeviceBindType)
+ {
+ case BindInfo.BindType.FreshAir:
+ foreach (var de in room.ListDevice)
+ {
+ var device = LocalDevice.Current.GetDevice(de);
+ if (device != null)
+ {
+ if (BindInfo.checkRealFreshAirDevice(device) == false)
+ {
+ continue;
+ }
+ if (device.Type == DeviceType.FreshAir)
+ {
+ roomIncludeMatchDevice.Add(device);
+ }
+ }
+ }
+ break;
+ case BindInfo.BindType.Temperature:
+ roomIncludeMatchDevice = BindInfo.GetMatchTemperatureSensorDevice(room);
+ break;
+ case BindInfo.BindType.Humidity:
+ roomIncludeMatchDevice = GetMatchHumiditySensorDevice(room);
+ foreach (var de in room.ListDevice)
+ {
+ var device = LocalDevice.Current.GetDevice(de);
+ if (device != null)
+ {
+ if (device.Type == DeviceType.FreshAirHumiditySensor)
+ {
+ roomIncludeMatchDevice.Add(device);
+ }
+ }
+ }
+ break;
+ case BindInfo.BindType.PM:
+ foreach (var de in room.ListDevice)
+ {
+ var device = LocalDevice.Current.GetDevice(de);
+ if (device != null)
+ {
+ if (device.Type == DeviceType.PMSensor)
+ {
+ roomIncludeMatchDevice.Add(device);
+ }
+ }
+ }
+ break;
+ case BindInfo.BindType.AC:
+ foreach (var de in room.ListDevice)
+ {
+ var device = LocalDevice.Current.GetDevice(de);
+ if (device != null)
+ {
+ if (device.Type == DeviceType.Thermostat)
+ {
+ if (BindInfo.checkRealAcDevice(device) == false)
+ {
+ continue;
+ }
+ roomIncludeMatchDevice.Add(device);
+ }
+ }
+ }
+ break;
+ }
+
+ if (roomIncludeMatchDevice.Count == 0)
+ {
+ continue;
+ }
+
+ if (!string.IsNullOrEmpty(room.FloorId))
+ {
+ //鏈夋ゼ灞�
+ if (room.FloorId == curControlDev.currentSelectFloorId)
+ {
+ roomTempList.Add(room);
+ }
+ }
+ else
+ {
+ //娌℃湁妤煎眰
+ roomTempList.Add(room);
+ }
+ }
+ }
+ return roomTempList;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鏈湴鏈垎閰嶇殑鏀寔褰撳墠绫诲瀷鐨勭粦瀹氳澶囧垪琛�
+ /// </summary>
+ /// <returns></returns>
+ public static List<CommonDevice> GetUndistributeDeviceList(List<CommonDevice> undistruibuteDevList, DeviceBind.BindInfo.BindType curDeviceBindType)
+ {
+ undistruibuteDevList.Clear();
+ List<CommonDevice> UndistributeCommonDeviceListTemp = new List<CommonDevice>();
+
+ //鑾峰彇鏈湴璁惧鍒楄〃
+ foreach (var tempDev in Shared.Common.LocalDevice.Current.listAllDevice)
+ {
+ //鑾峰彇璁惧鎵�灞炴埧闂�
+ var tempDevRoom = HdlRoomLogic.Current.GetRoomByDevice(tempDev);
+ if (tempDevRoom == null)
+ {
+ UndistributeCommonDeviceListTemp.Add(tempDev);
+ }
+ }
+ switch (curDeviceBindType)
+ {
+ case BindType.FreshAir:
+ foreach (var device in UndistributeCommonDeviceListTemp)
+ {
+ if (BindInfo.checkRealFreshAirDevice(device) == false)
+ {
+ continue;
+ }
+ if (device.Type == DeviceType.FreshAir)
+ {
+ undistruibuteDevList.Add(device);
+ }
+ }
+ break;
+ case BindType.Temperature:
+ foreach (var device in UndistributeCommonDeviceListTemp)
+ {
+ //鐢垫睜璁惧涓嶆敮鎸佺粦瀹�
+ if (device.ZigbeeType != 1)
+ {
+ continue;
+ }
+ if (device.Type == DeviceType.TemperatureSensor)
+ {
+ var dev = device as TemperatureSensor;
+ if (dev.SensorDiv == 1)
+ {
+ undistruibuteDevList.Add(device);
+ }
+ }
+ else if (device.Type == DeviceType.PMSensor)
+ {
+ var dev = device as PMSensor;
+ foreach (var clu in dev.InClusterList)
+ {
+ if (clu.InCluster == 1026)
+ {
+ undistruibuteDevList.Add(device);
+ }
+ }
+ }
+ }
+ break;
+ case BindType.Humidity:
+ foreach (var device in UndistributeCommonDeviceListTemp)
+ {
+ //鐢垫睜璁惧涓嶆敮鎸佺粦瀹�
+ if (device.ZigbeeType != 1)
+ {
+ continue;
+ }
+ if (device.Type == DeviceType.TemperatureSensor)
+ {
+ var dev = device as TemperatureSensor;
+ if (dev.SensorDiv == 2)
+ {
+ undistruibuteDevList.Add(device);
+ }
+ }
+ else if (device.Type == DeviceType.PMSensor)
+ {
+ var dev = device as PMSensor;
+ foreach (var clu in dev.InClusterList)
+ {
+ if (clu.InCluster == 1029)
+ {
+ undistruibuteDevList.Add(device);
+ }
+ }
+ }
+ if (device.Type == DeviceType.FreshAirHumiditySensor)
+ {
+ undistruibuteDevList.Add(device);
+ }
+ }
+ break;
+ case BindType.PM:
+ foreach (var device in UndistributeCommonDeviceListTemp)
+ {
+ if (device.Type == DeviceType.PMSensor)
+ {
+ undistruibuteDevList.Add(device);
+ }
+ }
+ break;
+ case BindType.AC:
+ foreach (var device in UndistributeCommonDeviceListTemp)
+ {
+ if (device.Type == DeviceType.Thermostat)
+ {
+ if (BindInfo.checkRealAcDevice(device) == false)
+ {
+ continue;
+ }
+ undistruibuteDevList.Add(device);
+ }
+ }
+ break;
+ }
+
+ return undistruibuteDevList;
+ }
+
+ /// <summary>
+ /// 鎵�鏈夋埧闂翠腑鍖归厤鐨勬敮鎸佺粦瀹氱殑鎵�鏈夌洰鏍囧垪琛�
+ /// </summary>
+ /// <returns></returns>
+ public static List<CommonDevice> GetAllRoomSupportDeviceList(List<CommonDevice> currentPanelSupportBindDeviceList, List<Room> supportRoomList, DeviceBind.BindInfo.BindType curDeviceBindType)
+ {
+ currentPanelSupportBindDeviceList.Clear();
+ List<CommonDevice> currentPanelBindSupportDeviceListTemp = new List<CommonDevice>();
+ switch (curDeviceBindType)
+ {
+ case BindInfo.BindType.FreshAir:
+ 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 (BindInfo.checkRealFreshAirDevice(device) == false)
+ {
+ continue;
+ }
+ if (device.Type == DeviceType.FreshAir)
+ {
+ currentPanelBindSupportDeviceListTemp.Add(device);
+ }
+ }
+ }
+ }
+ break;
+ case BindInfo.BindType.Temperature:
+ foreach (var r in supportRoomList)
+ {
+ if (r.ListDevice.Count == 0)
+ {
+ continue;
+ }
+ var deviceListTemp = GetMatchTemperatureSensorDevice(r);
+ foreach (var dev in deviceListTemp)
+ {
+ currentPanelBindSupportDeviceListTemp.Add(dev);
+ }
+ }
+ break;
+ case BindInfo.BindType.Humidity:
+ foreach (var r in supportRoomList)
+ {
+ if (r.ListDevice.Count == 0)
+ {
+ continue;
+ }
+ var deviceListTemp = GetMatchHumiditySensorDevice(r);
+ foreach (var dev in deviceListTemp)
+ {
+ currentPanelBindSupportDeviceListTemp.Add(dev);
+ }
+ foreach (var deviceKeys in r.ListDevice)
+ {
+ var device = LocalDevice.Current.GetDevice(deviceKeys);
+ if (device != null)
+ {
+ if (device.Type == DeviceType.FreshAirHumiditySensor)
+ {
+ currentPanelBindSupportDeviceListTemp.Add(device);
+ }
+ }
+ }
+ }
+ break;
+ case BindInfo.BindType.PM:
+ 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;
+ case BindInfo.BindType.AC:
+ 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.Thermostat)
+ {
+ if (BindInfo.checkRealAcDevice(device) == false)
+ {
+ continue;
+ }
+ currentPanelBindSupportDeviceListTemp.Add(device);
+ }
+ }
+ }
+ }
+ break;
+ }
+ return currentPanelBindSupportDeviceListTemp;
+ }
+
+ /// <summary>
+ /// 妫�娴嬬洰鏍囨槸鍚﹁缁戝畾杩�
+ /// targetList 鎸夐敭閰嶇疆鐨勭洰鏍囧垪琛�
+ /// oldTargetList 闈㈡澘涓凡缁忓瓨鍦ㄧ殑鐩爣鍒楄〃
+ /// </summary>
+ /// <returns></returns>
+ public static bool checkExistDevice(List<CommonDevice> targetList, List<CommonDevice> oldTargetList)
+ {
+ bool exist = false;
+ foreach (var oldDev in oldTargetList)
+ {
+ var key = oldDev.DeviceAddr + oldDev.DeviceEpoint;
+ var result = targetList.Find(obj => (obj != null) && (obj.DeviceAddr + obj.DeviceEpoint == key));
+ if (result != null)
+ {
+ exist = true;
+ }
+ else
+ {
+ exist = false;
+ }
+ }
+ return exist;
+ }
+
+ /// <summary>
+ /// 鏄惁鏄湡瀹炵殑绌鸿皟璁惧 銆愰儴鍒嗘槸鑳界粦瀹氱┖璋冪殑璁惧銆�
+ /// </summary>
+ /// <param name="device"></param>
+ /// <returns></returns>
+ public static bool checkRealAcDevice(CommonDevice device)
+ {
+ bool result = true;
+ //鑾峰彇璁惧绫诲瀷鐨�
+ var clu = device.OutClusterList.Find((obj) => obj.OutCluster == 513 || obj.OutCluster == 514);
+ if (clu != null)
+ {
+ result = false;
+ }
+ return result;
+ }
+
+ /// <summary>
+ /// 鏄惁鏄湡瀹炵殑鏂伴璁惧 銆愰儴鍒嗘槸鑳界粦瀹氭柊椋庣殑璁惧銆�
+ /// </summary>
+ /// <param name="device"></param>
+ /// <returns></returns>
+ public static bool checkRealFreshAirDevice(CommonDevice device)
+ {
+ bool result = true;
+ //鑾峰彇璁惧绫诲瀷鐨�
+ var deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(new List<CommonDevice>() { device });
+ if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.ButtonPanel_FangyueFreshAir)
+ {
+ result = false;
+ }
+ if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.ButtonPanel_SimpleEnvironment)
+ {
+ result = false;
+ }
+ return result;
+ }
+
+ /// <summary>
+ /// 妫�娴嬭璁惧鑳藉惁鏄剧ず
+ /// </summary>
+ /// <param name="device"></param>
+ /// <returns></returns>
+ public static bool CheckCanShowDevice(ZigBee.Device.CommonDevice device, string curDeviceBindType = "AddSwitch")
+ {
+ if (device == null)
+ {
+ return false;
+ }
+ //濡傛灉鏄紶鎰熷櫒锛屾垨鑰呮槸娌℃湁寮�鍏崇皣鐨勮瘽(杩欓噷鍒ゆ柇鐨勬槸杈撳叆绨�)
+ if ((device.Type == ZigBee.Device.DeviceType.IASZone) || InMatchDevice(device, curDeviceBindType) == false)
+ {
+ return false;
+ }
+ return true;
+ }
+
+ /// <summary>
+ /// 妫�娴嬭鎴块棿鑳藉惁鏄剧ず
+ /// </summary>
+ /// <param name="room"></param>
+ /// <returns></returns>
+ public static bool CheckCanShowRoom(Common.Room room, string curDeviceBindType = "AddSwitch")
+ {
+ if (room.ListDevice.Count == 0)
+ {
+ return false;
+ }
+ if (room.IsLove == true)
+ {
+ return false;
+ }
+ foreach (var deviceKeys in room.ListDevice)
+ {
+ var device = Common.LocalDevice.Current.GetDevice(deviceKeys);
+ //妫�娴嬭璁惧鑳藉惁鏄剧ず
+ if (CheckCanShowDevice(device, curDeviceBindType) == false)
+ {
+ continue;
+ }
+
+ //瀛樺湪璁惧鐨勮瘽锛屾鎴块棿鍙互鏄剧ず
+ return true;
+ }
+ return false;
+ }
+
+ /// <summary>
+ /// 妫�娴嬭澶囨槸鍚︽嫢鏈夊紑鍏崇殑鍔熻兘(杈撳叆绨�)
+ /// </summary>
+ /// <param name="device"></param>
+ /// <returns></returns>
+ public static bool InMatchDevice(CommonDevice device, string curDeviceBindType = "AddSwitch")
+ {
+ foreach (var data in device.InClusterList)
+ {
+ switch (curDeviceBindType)
+ {
+ case "AddSwitch":
+ //鎷ユ湁on/off鍔熻兘鐨勶紝鎵嶆敮鎸佹祴璇�
+ if (data.InCluster == 6)
+ {
+ return true;
+ }
+ break;
+ case "AddDimmer":
+ if (data.InCluster == 8)
+ {
+ return true;
+ }
+ break;
+ case "AddCurtain":
+ if (data.InCluster == 258)
+ {
+ return true;
+ }
+ break;
+ }
+ }
+ return false;
+ }
+
+ /// <summary>
+ /// 妫�娴嬫帶鍒堕潰鏉�(鎸夐敭绫�)鎵�鎷ユ湁鐨勫姛鑳�,鐜版敮鎸佺殑鏈変互涓嬪嚑绉�(蹇呭畾瀛樺湪閿��,鍑洪敊浼氳繑鍥瀗ull)
+ /// </summary>
+ /// <returns>The panel key function level2.</returns>
+ /// <param name="key">Key.</param>
+ public static async System.Threading.Tasks.Task<Dictionary<string, bool>> CheckPanelKeyFunctionLevel3(Panel key)
+ {
+ Dictionary<string, bool> dicCheck = new Dictionary<string, bool>();
+ dicCheck["鍦烘櫙:瑙﹀彂"] = false;
+ dicCheck["寮�鍏�:寮�"] = false;
+ dicCheck["寮�鍏�:鍏�"] = false;
+ dicCheck["寮�鍏�:鍒囨崲"] = false;
+ dicCheck["浜害:鎸夌瓑绾ц皟澶�"] = false;
+ dicCheck["浜害:鎸夌瓑绾ц皟灏�"] = false;
+ dicCheck["浜害:鎸夌瓑绾у垏鎹�"] = false;
+ dicCheck["浜害:鎵撳紑"] = false;
+ dicCheck["浜害:鍏抽棴"] = false;
+ dicCheck["浜害:鍒囨崲"] = false;
+ dicCheck["绐楀笜:寮�"] = false;
+ dicCheck["绐楀笜:鍏�"] = false;
+ dicCheck["绐楀笜:鍋�"] = false;
+ dicCheck["绐楀笜:涓婂崌鍋�"] = false;
+ dicCheck["绐楀笜:涓嬮檷鍋�"] = false;
+
+
+ List<int> result = null;
+ //鑾峰彇绗竴绾у姛鑳�
+ if (key.privateFuncFirstLevelList.Count == 0 || key.privateFuncFirstLevelList.Contains(256) == false)
+ {
+ result = await key.GetPanelDeviceFunctionLevel1();
+ if (result == null)
+ {
+ return null;
+ }
+ key.privateFuncFirstLevelList = result;
+ //闈㈡澘娌℃湁鎸夐敭绫�
+ if (result.Contains(256) == false)
+ {
+ return dicCheck;
+ }
+ }
+ else
+ {
+ result = key.privateFuncFirstLevelList;
+ }
+
+ if (key.privateFuncSecondLevelList.Count == 0 || key.privateFuncSecondLevelList.Contains(1) == false || key.privateFuncSecondLevelList.Contains(100) == false || key.privateFuncSecondLevelList.Contains(200) == false || key.privateFuncSecondLevelList.Contains(300) == false)
+ {
+ //鑾峰彇绗簩绾у姛鑳�
+ result = await key.GetPanelDeviceFunctionLevel2(256);
+ if (result == null)
+ {
+ return null;
+ }
+ key.privateFuncSecondLevelList = result;
+ }
+ else
+ {
+ result = key.privateFuncSecondLevelList;
+ }
+
+ //鐗规畩鍔熻兘
+ if (result.Contains(1) == true)
+ {
+ List<int> result3 = null;
+ //鑾峰彇绗笁绾у姛鑳�
+ if (key.privateFuncThirdLevelList.Count == 0 || key.privateFuncThirdLevelList.Contains(1) == false)
+ {
+ result3 = await key.GetPanelDeviceFunctionLevel3(256, 1);
+ foreach (var l3 in result3)
+ {
+ key.privateFuncThirdLevelList.Add(l3);
+ }
+ }
+ else
+ {
+ result3 = key.privateFuncThirdLevelList;
+ }
+ if (result3 != null)
+ {
+ if (result3.Contains(1) == true)
+ {
+ dicCheck["鍦烘櫙:瑙﹀彂"] = true;
+ }
+ }
+ }
+ //鎸夐敭寮�鍏崇被
+ if (result.Contains(100) == true)
+ {
+
+ List<int> result3 = null;
+ //鑾峰彇绗笁绾у姛鑳�
+ if (key.privateFuncThirdLevelList.Count == 0 || key.privateFuncThirdLevelList.Contains(100) == false || key.privateFuncThirdLevelList.Contains(101) == false || key.privateFuncThirdLevelList.Contains(102) == false)
+ {
+ result3 = await key.GetPanelDeviceFunctionLevel3(256, 100);
+ foreach (var l3 in result3)
+ {
+ key.privateFuncThirdLevelList.Add(l3);
+ }
+ }
+ else
+ {
+ result3 = key.privateFuncThirdLevelList;
+ }
+ if (result3 != null)
+ {
+ if (result3.Contains(100) == true)
+ {
+ dicCheck["寮�鍏�:寮�"] = true;
+ }
+ if (result3.Contains(101) == true)
+ {
+ dicCheck["寮�鍏�:鍏�"] = true;
+ }
+ if (result3.Contains(102) == true)
+ {
+ dicCheck["寮�鍏�:鍒囨崲"] = true;
+ }
+ }
+ }
+ //鎸夐敭璋冨厜绫�
+ if (result.Contains(200) == true)
+ {
+ List<int> result3 = null;
+ //鑾峰彇绗笁绾у姛鑳�
+ if (key.privateFuncThirdLevelList.Count == 0 || key.privateFuncThirdLevelList.Contains(200) == false || key.privateFuncThirdLevelList.Contains(201) == false || key.privateFuncThirdLevelList.Contains(202) == false)
+ {
+ result3 = await key.GetPanelDeviceFunctionLevel3(256, 200);
+ foreach (var l3 in result3)
+ {
+ key.privateFuncThirdLevelList.Add(l3);
+ }
+ }
+ else
+ {
+ result3 = key.privateFuncThirdLevelList;
+ }
+ if (result3 != null)
+ {
+ if (result3.Contains(200) == true)
+ {
+ dicCheck["浜害:鎸夌瓑绾ц皟澶�"] = true;
+ }
+ if (result3.Contains(201) == true)
+ {
+ dicCheck["浜害:鎸夌瓑绾ц皟灏�"] = true;
+ }
+ if (result3.Contains(202) == true)
+ {
+ dicCheck["浜害:鎸夌瓑绾у垏鎹�"] = true;
+ }
+ if (result3.Contains(203) == true)
+ {
+ dicCheck["浜害:鎵撳紑"] = true;
+ }
+ if (result3.Contains(204) == true)
+ {
+ dicCheck["浜害:鍏抽棴"] = true;
+ }
+ if (result3.Contains(205) == true)
+ {
+ dicCheck["浜害:鍒囨崲"] = true;
+ }
+ }
+ }
+ //绐楀笜绫�
+ if (result.Contains(300) == true)
+ {
+ List<int> result3 = null;
+ //鑾峰彇绗笁绾у姛鑳�
+ if (key.privateFuncThirdLevelList.Count == 0 || (key.privateFuncThirdLevelList.Contains(300) == false && key.privateFuncThirdLevelList.Contains(301) == false && key.privateFuncThirdLevelList.Contains(302) == false && key.privateFuncThirdLevelList.Contains(303) == false && key.privateFuncThirdLevelList.Contains(304) == false))
+ {
+ result3 = await key.GetPanelDeviceFunctionLevel3(256, 300);
+ foreach (var l3 in result3)
+ {
+ key.privateFuncThirdLevelList.Add(l3);
+ }
+ }
+ else
+ {
+ result3 = key.privateFuncThirdLevelList;
+ }
+
+ if (result3 != null)
+ {
+ if (result3.Contains(300) == true)
+ {
+ dicCheck["绐楀笜:寮�"] = true;
+ }
+ if (result3.Contains(301) == true)
+ {
+ dicCheck["绐楀笜:鍏�"] = true;
+ }
+ if (result3.Contains(302) == true)
+ {
+ dicCheck["绐楀笜:鍋�"] = true;
+ }
+ if (result3.Contains(303) == true)
+ {
+ dicCheck["绐楀笜:涓婂崌鍋�"] = true;
+ }
+ if (result3.Contains(304) == true)
+ {
+ dicCheck["绐楀笜:涓嬮檷鍋�"] = true;
+ }
+ }
+ }
+ return dicCheck;
+ }
+
+ /// <summary>
+ /// 搴曢儴瀹屾垚鎸夐挳鏄剧ず
+ /// </summary>
+ /// <returns></returns>
+ public static void FinishDisplay(List<Room> roomTempList, Button btnFinish)
+ {
+ if (roomTempList.Count == 0)
+ {
+ btnFinish.Enable = false;
+ btnFinish.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMUnSelect;
+ }
+ else
+ {
+ btnFinish.Enable = true;
+ btnFinish.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+ }
+ }
+ #endregion
+ }
+}
--
Gitblit v1.8.0