From c7df85937f73fb347ee0b19e9c052d2d00a6df6c Mon Sep 17 00:00:00 2001 From: 黄学彪 <hxb@hdlchina.com.cn> Date: 星期五, 18 九月 2020 13:58:19 +0800 Subject: [PATCH] 新版本 --- ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlSceneLogic.cs | 56 ++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 48 insertions(+), 8 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlSceneLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlSceneLogic.cs index d087a84..c9d80ec 100755 --- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlSceneLogic.cs +++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlSceneLogic.cs @@ -178,7 +178,11 @@ if (topic == gatewayID + "/" + "Scene/GetAllInfo_Respon") { var sceneGetAllInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<Scene.GetSceneAllInfo>(jobject["Data"].ToString()); - listScene.Add(sceneGetAllInfo); + if (sceneGetAllInfo.ScenesSum != 0) + { + //濡傛灉缃戝叧閲岄潰娌℃湁鍦烘櫙鐨勮瘽,瀹冧篃浼氭帹杩欎釜涓滆タ杩囨潵 + listScene.Add(sceneGetAllInfo); + } //鏇村鎺ユ敹寰楀埌鍦烘櫙 canReceve = true; @@ -359,12 +363,15 @@ /// <summary> /// 鑾峰彇娣诲姞鎵ц鐩爣鍒板満鏅殑鍛戒护 /// </summary> - /// <param name="sceneId"></param> - /// <param name="listAdjustTarget"></param> + /// <param name="sceneId">鍦烘櫙id</param> + /// <param name="listAdjustTarget">鎵ц鐩爣</param> + /// <param name="dicChangedMac">浜ゆ崲mac key:listAdjustTarget褰撳墠鐨凪ac value:杞崲鐨刴ac</param> + /// <param name="sceneName">鍦烘櫙鍚嶇О(鐗规畩鐢ㄩ��,璇峰嬁璁剧疆)</param> /// <returns></returns> - public List<string> GetAddTargetToSceneCommand(int sceneId, List<Scene.DeviceListData> listAdjustTarget) + public List<string> GetAddTargetToSceneCommand(int sceneId, List<Scene.DeviceListData> listAdjustTarget, Dictionary<string, string> dicChangedMac = null, string sceneName = null) { var listCommand = new List<string>(); + int index = 1; for (int i = 0; i < listAdjustTarget.Count; i++) { var jObject = new Newtonsoft.Json.Linq.JObject { { "Cluster_ID", 0 }, { "Command", 820 } }; @@ -372,6 +379,17 @@ //璁惧 if (data.Type == 0) { + string deviceAddr = data.DeviceAddr; + if (dicChangedMac != null) + { + //濡傛灉涓嶅寘鍚�,鍒欎笉浣滀负澶勭悊瀵硅薄 + if (dicChangedMac.ContainsKey(deviceAddr) == false) + { + continue; + } + deviceAddr = dicChangedMac[deviceAddr]; + } + var taskList = new Newtonsoft.Json.Linq.JArray { }; foreach (var taskInfo in data.TaskList) { @@ -379,25 +397,38 @@ { "Data1", taskInfo.Data1},{ "Data2",taskInfo.Data2}}; taskList.Add(tInfo); } - var data2 = new Newtonsoft.Json.Linq.JObject {{ "ScenesId",sceneId},{ "Type", 0} ,{ "DeviceAddr",data.DeviceAddr} , - { "Epoint", data.Epoint} ,{ "TaskList", taskList },{ "DelayTime", 0} ,{ "MemberNumber",i + 1}}; + var data2 = new Newtonsoft.Json.Linq.JObject {{ "ScenesId",sceneId},{ "Type", 0} ,{ "DeviceAddr",deviceAddr} , + { "Epoint", data.Epoint} ,{ "TaskList", taskList },{ "DelayTime", 0} ,{ "MemberNumber",index}}; + if (sceneName != null) + { + data2.Add(new Newtonsoft.Json.Linq.JProperty("ScenesName", sceneName)); + } jObject.Add("Data", data2); } //鍦烘櫙 else if (data.Type == 1) { var data2 = new Newtonsoft.Json.Linq.JObject {{ "ScenesId",sceneId},{ "Type", 1} , - { "ElseScenesId", data.ElseScenesId },{ "DelayTime", 0} ,{ "MemberNumber",i + 1} }; + { "ElseScenesId", data.ElseScenesId },{ "DelayTime", 0} ,{ "MemberNumber",index} }; + if (sceneName != null) + { + data2.Add(new Newtonsoft.Json.Linq.JProperty("ScenesName", sceneName)); + } jObject.Add("Data", data2); } //寤舵椂 else { var data2 = new Newtonsoft.Json.Linq.JObject {{ "Type", 2} ,{ "ScenesId",sceneId}, - { "DelayTime", data.DelayTime} ,{ "MemberNumber",i + 1}}; + { "DelayTime", data.DelayTime} ,{ "MemberNumber",index}}; + if (sceneName != null) + { + data2.Add(new Newtonsoft.Json.Linq.JProperty("ScenesName", sceneName)); + } jObject.Add("Data", data2); } listCommand.Add(jObject.ToString()); + index++; } return listCommand; } @@ -926,6 +957,15 @@ listAdjustTarget.AddRange(i_scene.AdjustTargetList); return listAdjustTarget; } + //濡傛灉鏄湁妯℃澘,鏈夎澶囩殑鏃跺��,鍦ㄦ病鏈夊彂閫佹垚鍔熶箣鍓�,涓嶅厑璁稿埛鏂版墽琛岀洰鏍囧璞� + if (Common.Config.Instance.Home.TemplateMode == 2 + && Common.Config.Instance.Home.SendTemplateSuccess == false) + { + var listAdjustTarget = new List<Scene.DeviceListData>(); + listAdjustTarget.AddRange(i_scene.AdjustTargetList); + return listAdjustTarget; + } + var jObject = new Newtonsoft.Json.Linq.JObject { { "Cluster_ID", 0 }, { "Command", 806 } }; var data = new Newtonsoft.Json.Linq.JObject { { "ScenesId", i_scene.Id } }; jObject.Add("Data", data); -- Gitblit v1.8.0