| | |
| | | /// 当前按键配置的功能 |
| | | /// </summary> |
| | | public static int clusterID = 0; |
| | | /// <summary> |
| | | /// 记录旧的目标列表 |
| | | /// </summary> |
| | | public static List<CommonDevice> oldTargetList = new List<CommonDevice>(); |
| | | |
| | | public static async System.Threading.Tasks.Task<int> RemoveTargets(BindObj.BindListResponseObj bindDevice, Panel currentKey) |
| | | { |
| | | var delDevice = new BindObj.DelDeviceBindData(); |
| | | delDevice.DeviceAddr = currentKey.DeviceAddr; |
| | | delDevice.Epoint = currentKey.DeviceEpoint; |
| | | |
| | | if (bindDevice.BindType == 0 || bindDevice.BindType == 1) |
| | | { |
| | | var removeDevice = new BindObj.RemoveBindListObj(); |
| | | removeDevice.BindCluster = bindDevice.BindCluster; |
| | | removeDevice.BindType = 0; |
| | | removeDevice.BindMacAddr = bindDevice.BindMacAddr; |
| | | removeDevice.BindEpoint = bindDevice.BindEpoint; |
| | | delDevice.RemoveBindList.Add(removeDevice); |
| | | } |
| | | else if (bindDevice.BindType == 2) |
| | | { |
| | | var removeDevice = new BindObj.RemoveBindListObj(); |
| | | removeDevice.BindCluster = bindDevice.BindCluster; |
| | | removeDevice.BindType = 1; |
| | | removeDevice.BindScenesId = bindDevice.BindScenesId; |
| | | delDevice.RemoveBindList.Add(removeDevice); |
| | | } |
| | | var delResult = await currentKey.DelDeviceBindAsync(delDevice); |
| | | foreach (var re in delResult.delDeviceBindResponseData.RemoveBindList) |
| | | { |
| | | switch (re.Result) |
| | | { |
| | | case 0: |
| | | return 0; |
| | | break; |
| | | case 4: |
| | | |
| | | if (delResult.removeBindResultResponseData != null) |
| | | { |
| | | if (delResult.removeBindResultResponseData.Result == 0) |
| | | { |
| | | return 0; |
| | | } |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | return -1; |
| | | } |
| | | |
| | | /// <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.DeviceUIList.Count == 0) |
| | | { |
| | | return false; |
| | | } |
| | | if (room.IsLove == true) |
| | | { |
| | | return false; |
| | | } |
| | | foreach (var deviceUi in room.DeviceUIList) |
| | | { |
| | | //检测该设备能否显示 |
| | | if (CheckCanShowDevice(deviceUi.CommonDevice, 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> |
| | | /// 底部完成按钮显示 |
| | | /// </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; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取当前楼层名称 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public static string GetCurrentKeyAllRoomList() |
| | | { |
| | | var dicFloor = Common.Room.CurrentRoom.GetFloorSortList(); |
| | | foreach (var floorId in dicFloor.Keys) |
| | | { |
| | | //第一个楼层 |
| | | return dicFloor[floorId]; |
| | | break; |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取当前楼层 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public static string GetCurrentSelectFloorId() |
| | | { |
| | | var dicFloor = Common.Room.CurrentRoom.GetFloorSortList(); |
| | | foreach (var floorId in dicFloor.Keys) |
| | | { |
| | | //第一个楼层 |
| | | return floorId; |
| | | break; |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取当前楼层名称 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public static string GetCurrentSelectFloorIdName() |
| | | { |
| | | var dicFloor = Common.Room.CurrentRoom.GetFloorSortList(); |
| | | foreach (var floorId in dicFloor.Keys) |
| | | { |
| | | //第一个楼层 |
| | | return dicFloor[floorId]; |
| | | break; |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 检测控制面板(按键类)所拥有的功能,现支持的有以下几种(必定存在键值,出错会返回null) |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | } |