| | |
| | | |
| | | /// <summary> |
| | | /// 所有房间的所有设备类型 |
| | | /// 先调用 GetAllRoomDeviceTypeList() |
| | | /// </summary> |
| | | /// <value>All room device type list.</value> |
| | | [Newtonsoft.Json.JsonIgnore] |
| | | public static List<DeviceType> AllRoomDeviceTypeList = new List<DeviceType> { }; |
| | | public static List<DeviceType> AllRoomDeviceTypeList |
| | | { |
| | | get |
| | | { |
| | | var typeList = new List<DeviceType> { }; |
| | | foreach (var deviceUI in AllRoomDeviceUIList) |
| | | { |
| | | if (deviceUI == null || deviceUI.CommonDevice == null) |
| | | { |
| | | continue; |
| | | } |
| | | if (!typeList.Contains(deviceUI.CommonDevice.Type)) |
| | | { |
| | | typeList.Add(deviceUI.CommonDevice.Type); |
| | | } |
| | | } |
| | | return typeList; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取所有房间的所有场景 |
| | |
| | | |
| | | /// <summary> |
| | | /// 获取所有房间的所有设备 |
| | | /// 请先调用 GetAllRoomDeviceUIList()方法 |
| | | /// </summary> |
| | | /// <value>All room device UIL ist.</value> |
| | | [Newtonsoft.Json.JsonIgnore] |
| | | public static List<DeviceUI> AllRoomDeviceUIList = new List<DeviceUI> { }; |
| | | public static List<DeviceUI> AllRoomDeviceUIList |
| | | { |
| | | get |
| | | { |
| | | List<DeviceUI> deviceList = new List<DeviceUI>(); |
| | | foreach (var room in Lists) |
| | | { |
| | | if (room.IsSharedRoom) |
| | | { |
| | | continue; |
| | | } |
| | | if (room.DeviceUIList.Count == 0) |
| | | { |
| | | continue; |
| | | } |
| | | foreach (var device in room.DeviceUIList) |
| | | { |
| | | if (device == null || device.CommonDevice == null) |
| | | { |
| | | continue; |
| | | } |
| | | if (deviceList.Find((obj) => obj.FileName == device.FileName) == null) |
| | | { |
| | | deviceList.Add(device); |
| | | } |
| | | } |
| | | } |
| | | return deviceList; |
| | | } |
| | | } |
| | | |
| | | #endregion |
| | | |
| | |
| | | deviceUI.DeviceAddr = device.DeviceAddr;
|
| | | deviceUI.DeviceEpoint = device.DeviceEpoint; |
| | | |
| | | return Lists.Find((obj) => obj.DeviceUIFilePathList.Contains(deviceUI.FileName)); |
| | | return Lists.Find((obj) => obj.IsLove == false && obj.DeviceUIFilePathList.Contains(deviceUI.FileName)); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | #region ◆ 获取设备_________________________ |
| | | |
| | | /// <summary> |
| | | /// 获取所有房间的所有设备 |
| | | /// </summary> |
| | | public static void GetAllRoomDeviceUIList() |
| | | { |
| | | List<string> devicePathList = new List<string>(); |
| | | //所有房间的所有设备 |
| | | AllRoomDeviceUIList.Clear(); |
| | | foreach (var room in Shared.Common.Room.Lists) |
| | | { |
| | | if(room.IsSharedRoom) |
| | | { |
| | | continue; |
| | | } |
| | | if (room.DeviceUIList.Count == 0) |
| | | { |
| | | continue; |
| | | } |
| | | foreach (var device in room.DeviceUIList) |
| | | { |
| | | if (device == null || device.CommonDevice == null) |
| | | { |
| | | continue; |
| | | } |
| | | if (!devicePathList.Contains(device.FileName)) |
| | | { |
| | | AllRoomDeviceUIList.Add(device); |
| | | devicePathList.Add(device.FileName); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 根据设备获取它的UI对象,如果不存在则新建 |
| | | /// </summary> |
| | | /// <returns>The device user interface.</returns> |
| | |
| | | public DeviceUI GetDeviceUI(CommonDevice device) |
| | | { |
| | | return Common.LocalDevice.Current.GetDeviceUI(device); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 重新获取-所有房间的所有设备类型 |
| | | /// </summary> |
| | | public static void GetAllRoomDeviceTypeList() |
| | | { |
| | | AllRoomDeviceTypeList.Clear(); |
| | | foreach (var deviceUI in AllRoomDeviceUIList) |
| | | { |
| | | if (deviceUI == null || deviceUI.CommonDevice == null) |
| | | { |
| | | continue; |
| | | } |
| | | if (!AllRoomDeviceTypeList.Contains(deviceUI.CommonDevice.Type)) |
| | | { |
| | | AllRoomDeviceTypeList.Add(deviceUI.CommonDevice.Type); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /// <summary>
|
| | |
| | | return typeList; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取该楼层的场景 |
| | | /// </summary> |
| | | /// <param name="floorId"></param> |
| | | /// <returns></returns> |
| | | public List<SceneUI> GetSceneUIsByFloorId(string floorId) |
| | | { |
| | | var rooms = GetRoomsByFloorId(floorId); |
| | | if (rooms == null) |
| | | { |
| | | return null; |
| | | } |
| | | var sceneList = new List<SceneUI> { }; |
| | | foreach (var r in rooms) |
| | | { |
| | | if (r.SceneUIList.Count == 0) |
| | | { |
| | | continue; |
| | | } |
| | | foreach (var sceneUI in r.SceneUIList) |
| | | { |
| | | if (sceneUI == null) |
| | | { |
| | | continue; |
| | | } |
| | | sceneList.Add(sceneUI); |
| | | } |
| | | } |
| | | return sceneList; |
| | | } |
| | | |
| | | #endregion |
| | | |
| | |
| | | /// <param name="iconPathType">I场景背景图片来源类型 图片来源 0--本地图库 1--拍照 2--系统图库 默认0</param> |
| | | public async System.Threading.Tasks.Task<int> AddScene(string sceneName, string sceneIconPath, List<ZigBee.Device.Scene.AddSceneMemberData> commons, int iconPathType = 0) |
| | | { |
| | | if (AllRoomSceneUIList.Find(s => s.Name == sceneName) != null) |
| | | var scenes = GetSceneUIsByFloorId(FloorId); |
| | | if(scenes!=null && scenes.Count>0) |
| | | { |
| | | return -1; |
| | | if (scenes.Find(s => s.Name == sceneName) != null) |
| | | { |
| | | return -1; |
| | | } |
| | | } |
| | | |
| | | var getSceneIdAllData = await ZigBee.Device.Scene.GetSceneNewIdAsync(sceneName); |
| | | if (getSceneIdAllData == null || getSceneIdAllData.getSceneIdData == null) |
| | | { |
| | | return 0; |
| | | } |
| | | var getSceneIdData = getSceneIdAllData.getSceneIdData; |
| | | //循环相同报错 |
| | | foreach (var tempSceneUI in AllRoomSceneUIList) |
| | | { |
| | | if (tempSceneUI.Id == getSceneIdAllData.getSceneIdData.NewScenesId) |
| | | { |
| | | //场景已存在 |
| | | return -1; |
| | | } |
| | | } |
| | | |
| | | bool result = true; |
| | | foreach (var common in commons) |
| | |
| | | //添加新成员 |
| | | var addSceneMemberData = new ZigBee.Device.Scene.AddSceneMemberData |
| | | { |
| | | DeviceAddr = common.DeviceAddr, |
| | | Type = common.Type, |
| | | DeviceAddr = common.DeviceAddr, |
| | | Epoint = common.Epoint, |
| | | ScenesId = getSceneIdData.NewScenesId, |
| | | TaskList = common.TaskList, |
| | | DelayTime = common.DelayTime, |
| | | MemberNumber=common.MemberNumber, |
| | | ElseScenesId = common.ElseScenesId |
| | | }; |
| | | //common.ScenesId = getSceneIdData.NewScenesId; |
| | |
| | | /// <param name="scene">Scene.</param> |
| | | public void AddScene(SceneUI scene) |
| | | { |
| | | var sceneUI = new SceneUI |
| | | { |
| | | Name = scene.Name, |
| | | Id = scene.Id, |
| | | IconPath = scene.IconPath, |
| | | IconPathType = scene.IconPathType, |
| | | AddSceneMemberDataList = scene.AddSceneMemberDataList |
| | | }; |
| | | SceneUIList.Add(sceneUI); |
| | | SceneUIFilePathList.Add(sceneUI.FileName); |
| | | sceneUI.Save(); |
| | | //var sceneUI = new SceneUI |
| | | //{ |
| | | // Name = scene.Name, |
| | | // Id = scene.Id, |
| | | // IconPath = scene.IconPath, |
| | | // IconPathType = scene.IconPathType, |
| | | // AddSceneMemberDataList = scene.AddSceneMemberDataList |
| | | //}; |
| | | SceneUIList.Add(scene); |
| | | SceneUIFilePathList.Add(scene.FileName); |
| | | scene.Save(); |
| | | Save(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 删除场景 |
| | | /// </summary> |
| | | /// <param name="scene"></param> |
| | | public void DeleteScene(SceneUI scene) |
| | | { |
| | | //scene.IsCollected = false; |
| | | scene.Save(); |
| | | SceneUIList.Remove(scene); |
| | | SceneUIFilePathList.Remove(scene.FileName); |
| | | Save(); |
| | | } |
| | | |
| | |
| | | ScenesId = sceneUI.Id, |
| | | TaskList = addCommon.TaskList, |
| | | DelayTime = addCommon.DelayTime, |
| | | ElseScenesId = addCommon.ElseScenesId |
| | | ElseScenesId = addCommon.ElseScenesId, |
| | | MemberNumber=addCommon.MemberNumber |
| | | }; |
| | | //添加新成员 返回结果 |
| | | var addSceneMemberResponseAllData = await ZigBee.Device.Scene.AddSceneMemberAsync(addSceneMemberData); |
| | |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取该楼层所有场景 |
| | | /// </summary> |
| | | /// <param name="floorId"></param> |
| | | /// <returns></returns> |
| | | public List<SceneUI> GetSameFloorScenes(string floorId) |
| | | { |
| | | List<SceneUI> sceneUIs = new List<SceneUI> { }; |
| | | var rooms= CurrentRoom.GetRoomsByFloorId(floorId); |
| | | foreach(var r in rooms) |
| | | { |
| | | sceneUIs.AddRange(r.SceneUIList); |
| | | } |
| | | return sceneUIs; |
| | | } |
| | | #endregion |
| | | |
| | | #region ◆ 刷新场景_________________________ |