| | |
| | | /// <summary>
|
| | | /// 刷新本地的全部场景
|
| | | /// </summary>
|
| | | public async Task<bool> RefreshSceneUIList()
|
| | | public bool RefreshSceneUIList()
|
| | | {
|
| | | //获取网关存在的场景
|
| | | var sceneList = await ZigBee.Device.Scene.GetSceneListAsync();
|
| | | var sceneList = this.RefreshSceneListFromGateway();
|
| | | if (sceneList == null)
|
| | | {
|
| | | return false;
|
| | |
| | | continue;
|
| | | }
|
| | | listEsxit.Add(scene.ScenesId);
|
| | | //刷新scene的信息
|
| | | this.RefreshScene(scene);
|
| | | }
|
| | |
|
| | | var listDelete = new List<SceneUI>();
|
| | |
| | | foreach (var sceneui in listDelete)
|
| | | {
|
| | | //执行删除
|
| | | this.RemoveScene(sceneui);
|
| | | this.DeleteLocalScene(sceneui);
|
| | | }
|
| | |
|
| | | return true;
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// 刷新scene的信息
|
| | | /// </summary>
|
| | | /// <param name="sceneInfo"></param>
|
| | | private void RefreshScene(Scene.GetSceneAllInfo sceneInfo)
|
| | | {
|
| | | if (this.dicScenes.ContainsKey(sceneInfo.ScenesId) == true)
|
| | | {
|
| | | var localScene = this.dicScenes[sceneInfo.ScenesId];
|
| | | //只刷新名字和绑定表
|
| | | localScene.Name = sceneInfo.ScenesName;
|
| | | localScene.AdjustTargetList.Clear();
|
| | | localScene.AdjustTargetList.AddRange(sceneInfo.DeviceList);
|
| | | localScene.Save();
|
| | | }
|
| | | else
|
| | | {
|
| | | var newScene = new SceneUI();
|
| | | newScene.Name = sceneInfo.ScenesName;
|
| | | newScene.IconPath = "SceneIcon/0.png";
|
| | | newScene.Id = sceneInfo.ScenesId;
|
| | | newScene.AdjustTargetList.AddRange(sceneInfo.DeviceList);
|
| | | //添加缓存
|
| | | newScene.Save();
|
| | | //加入缓存
|
| | | this.dicScenes[newScene.Id] = newScene;
|
| | | //备份
|
| | | HdlAutoBackupLogic.AddOrEditorFile(newScene.FileName);
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// 从网关重新刷新场景列表
|
| | | /// </summary>
|
| | | /// <returns></returns>
|
| | | private List<Scene.GetSceneAllInfo> RefreshSceneListFromGateway()
|
| | | {
|
| | | var mainGateway = ZbGateway.MainGateWay;
|
| | | if (mainGateway == null)
|
| | | {
|
| | | //获取网关对象失败
|
| | | this.ShowTipMsg(Language.StringByID(R.MyInternationalizationString.uGetGatewayTagartFail));
|
| | | return null;
|
| | | }
|
| | |
|
| | | //超时时间
|
| | | int TimeOut = 0;
|
| | | bool receiptAll = false;
|
| | |
|
| | | var listScene = new List<Scene.GetSceneAllInfo>();
|
| | | Action<string, string> action = (topic, message) =>
|
| | | {
|
| | | var gatewayID = topic.Split('/')[0];
|
| | | var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
|
| | |
|
| | | if (topic == gatewayID + "/" + "Scene/GetAllInfo_Respon")
|
| | | {
|
| | | var sceneGetAllInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<Scene.GetSceneAllInfo>(jobject["Data"].ToString());
|
| | | listScene.Add(sceneGetAllInfo);
|
| | |
|
| | | if (sceneGetAllInfo.ScenesNum == sceneGetAllInfo.ScenesSum)
|
| | | {
|
| | | //接收完成
|
| | | receiptAll = true;
|
| | | TimeOut = 0;
|
| | | }
|
| | | }
|
| | | };
|
| | | mainGateway.Actions += action;
|
| | |
|
| | | var jObject = new Newtonsoft.Json.Linq.JObject { { "Cluster_ID", 0 }, { "Command", 807 } };
|
| | | mainGateway.Send(("Scene/GetAllInfo"), System.Text.Encoding.UTF8.GetBytes(jObject.ToString()));
|
| | |
|
| | | int waitTime = 20 * 6;
|
| | | while (receiptAll == false && TimeOut < waitTime)
|
| | | {
|
| | | //全部接收才退出
|
| | | System.Threading.Thread.Sleep(50);
|
| | | TimeOut++;
|
| | | }
|
| | | mainGateway.Actions -= action;
|
| | | action = null;
|
| | | if (receiptAll == false)
|
| | | {
|
| | | //网络不稳定,场景列表信息缺损
|
| | | this.ShowTipMsg(Language.StringByID(R.MyInternationalizationString.uNetworkUnStableAndSceneInfoIsNotFull));
|
| | | return null;
|
| | | }
|
| | |
|
| | | return listScene;
|
| | | }
|
| | |
|
| | | #endregion
|
| | |
| | | return null;
|
| | | }
|
| | | NewScenesId = result1.getSceneIdData.NewScenesId;
|
| | | }
|
| | | else
|
| | | {
|
| | | //虚拟场景ID
|
| | | NewScenesId = Convert.ToInt32(DateTime.Now.ToString("HHmmss"));
|
| | | }
|
| | | //添加执行目标
|
| | | var listSuccess = await this.AddTargetToScene(NewScenesId, listAdjustTarget);
|
| | |
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// 删除场景(这个只移除内存)
|
| | | /// 添加虚拟场景
|
| | | /// </summary>
|
| | | /// <param name="scene"></param>
|
| | | public void DeleteSceneFromRoom(Room i_room, SceneUI scene)
|
| | | /// <param name="sceneId">指定场景id,如果为-1,则会内部自动编号(可能会重复)</param>
|
| | | /// <param name="sceneName">场景名字</param>
|
| | | /// <param name="listAdjustTarget">绑定目标</param>
|
| | | /// <returns></returns>
|
| | | public SceneUI AddVirtualScene(int sceneId, string sceneName, List<Scene.DeviceListData> listAdjustTarget)
|
| | | {
|
| | | //移除缓存
|
| | | if (i_room.ListSceneId.Contains(scene.Id) == true)
|
| | | if (sceneId == -1)
|
| | | {
|
| | | i_room.ListSceneId.Remove(scene.Id);
|
| | | i_room.Save();
|
| | | sceneId = Convert.ToInt32(DateTime.Now.ToString("HHmmss"));
|
| | | }
|
| | | }
|
| | | //创建场景对象
|
| | | var newScene = new SceneUI();
|
| | | newScene.Name = sceneName;
|
| | | newScene.IconPath = "SceneIcon/0.png";
|
| | | //虚拟场景ID
|
| | | newScene.Id = sceneId;
|
| | | if (listAdjustTarget != null)
|
| | | {
|
| | | newScene.AdjustTargetList.AddRange(listAdjustTarget);
|
| | | }
|
| | | //添加缓存
|
| | | newScene.Save();
|
| | | //加入缓存
|
| | | this.dicScenes[newScene.Id] = newScene;
|
| | |
|
| | | /// <summary>
|
| | | /// 删除搜藏场景
|
| | | /// </summary>
|
| | | /// <param name="scene"></param>
|
| | | public void DeleteLoveScene(SceneUI scene)
|
| | | {
|
| | | var nowRoom = HdlRoomLogic.Current.GetLoveRoom();
|
| | | //移除缓存
|
| | | if (nowRoom.ListSceneId.Contains(scene.Id) == true)
|
| | | {
|
| | | nowRoom.ListSceneId.Remove(scene.Id);
|
| | | nowRoom.Save();
|
| | | }
|
| | | return newScene;
|
| | | }
|
| | |
|
| | | #endregion
|
| | |
| | | #region ■ 删除场景___________________________
|
| | |
|
| | | /// <summary>
|
| | | /// 移除场景--该仅进行了对本地场景数据的删除
|
| | | /// 删除本地场景数据
|
| | | /// </summary>
|
| | | /// <param name="sceneUI">Scene user interface.</param>
|
| | | public void RemoveScene(SceneUI sceneUI)
|
| | | public void DeleteLocalScene(SceneUI sceneUI)
|
| | | {
|
| | | //移除缓存
|
| | | this.dicScenes.Remove(sceneUI.Id);
|
| | |
| | | Global.DeleteFilebyHomeId(sceneUI.IconPath);
|
| | | HdlAutoBackupLogic.DeleteFile(sceneUI.IconPath);
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// 删除场景(这个只移除内存)
|
| | | /// </summary>
|
| | | /// <param name="scene"></param>
|
| | | public void DeleteSceneFromRoom(Room i_room, SceneUI scene)
|
| | | {
|
| | | //移除缓存
|
| | | if (i_room.ListSceneId.Contains(scene.Id) == true)
|
| | | {
|
| | | i_room.ListSceneId.Remove(scene.Id);
|
| | | i_room.Save();
|
| | | }
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// 删除搜藏场景
|
| | | /// </summary>
|
| | | /// <param name="scene"></param>
|
| | | public void DeleteLoveScene(SceneUI scene)
|
| | | {
|
| | | var nowRoom = HdlRoomLogic.Current.GetLoveRoom();
|
| | | //移除缓存
|
| | | if (nowRoom.ListSceneId.Contains(scene.Id) == true)
|
| | | {
|
| | | nowRoom.ListSceneId.Remove(scene.Id);
|
| | | nowRoom.Save();
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | /// <returns></returns>
|
| | | public string GetZoneById(int sceneId)
|
| | | {
|
| | | var room =HdlRoomLogic.Current.GetRoomBySceneId(sceneId);
|
| | | var room = HdlRoomLogic.Current.GetRoomBySceneId(sceneId);
|
| | | if (room == null)
|
| | | {
|
| | | return null;
|
| | | }
|
| | | var floorName = Shared.Common.Config.Instance.Home.GetFloorNameById(room.FloorId);
|
| | | if (floorName == null)
|
| | | var floorName = HdlResidenceLogic.Current.GetFloorNameById(room.FloorId);
|
| | | //更改代码:如果floorName=“”也要判断,否则有“,”
|
| | | if (string.IsNullOrEmpty(floorName))
|
| | | {
|
| | | return room.Name;
|
| | | }
|
| | |
| | | sceneUIs.Add(myScene);
|
| | | }
|
| | | }
|
| | |
|
| | | if (sceneUIs.Count == 0)
|
| | | {
|
| | | return null;
|
| | | }
|
| | | return sceneUIs;
|
| | | }
|
| | |
|
| | |
| | | var listAllRoom = HdlRoomLogic.Current.GetAllListRooms();
|
| | | foreach (var room in listAllRoom)
|
| | | {
|
| | | if (room.IsLove == true)
|
| | | {
|
| | | //不包含收藏房间
|
| | | continue;
|
| | | }
|
| | | foreach (int sceneId in room.ListSceneId)
|
| | | {
|
| | | if (this.dicScenes.ContainsKey(sceneId) == true)
|