From 9ef48d7b2da7c408b53f73be0f6eef3cbac1c84a Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期四, 19 十一月 2020 10:23:45 +0800
Subject: [PATCH] Evoyo.Home1.1.0120111601_Release
---
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlSceneLogic.cs | 74 +++++++++++++++++++++++++++++++-----
1 files changed, 63 insertions(+), 11 deletions(-)
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlSceneLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlSceneLogic.cs
index d087a84..88eae1f 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlSceneLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlSceneLogic.cs
@@ -82,6 +82,11 @@
/// <param name="useLocalConnect">鏄惁寮哄埗浣跨敤鏈湴杩炴帴鍙戦��</param>
public bool RefreshSceneUIList(bool useLocalConnect)
{
+ if (Config.Instance.Home.TemplateMode == 2 && Config.Instance.Home.SendTemplateSuccess == false)
+ {
+ //濡傛灉鏄湁妯℃澘鏈夎澶囨ā寮�,浣嗘槸杩樻病鏈夊鍏ユ垚鍔熺殑鎯呭喌涓�,涓嶅厑璁稿埛鏂板満鏅垪琛�
+ return true;
+ }
//鑾峰彇缃戝叧瀛樺湪鐨勫満鏅�
var sceneList = this.RefreshSceneListFromGateway(useLocalConnect);
if (sceneList == null)
@@ -178,7 +183,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;
@@ -243,9 +252,12 @@
//濡傛灉褰撳墠浣忓畢涓嶆槸铏氭嫙浣忓畢
if (Config.Instance.Home.IsVirtually == false)
{
+ var mainWay = ZbGateway.MainGateWay;
+ if (mainWay == null) { return null; }
+
//鑾峰彇鏂板缓涓�涓満鏅殑鍛戒护瀛楃
var strCommand = this.GetAddNewSceneCommand(sceneName);
- var result = HdlGatewayLogic.Current.SendJobjectDataToGateway(ZbGateway.MainGateWay, "Scene/GetNewId", strCommand, "Scene/GetNewId_Respon");
+ var result = HdlGatewayLogic.Current.SendJobjectDataToGateway(mainWay.GwId, "Scene/GetNewId", strCommand, "Scene/GetNewId_Respon");
if (result.ErrorMsg != null)
{
this.ShowTipMsg(result.ErrorMsg);
@@ -322,12 +334,14 @@
return listAdjustTarget;
}
var listSuccess = new List<Scene.DeviceListData>();
+ var mainWay = ZbGateway.MainGateWay;
+ if (mainWay == null) { return listSuccess; }
//鑾峰彇娣诲姞鎵ц鐩爣鍒板満鏅殑鍛戒护
var listCommand = this.GetAddTargetToSceneCommand(sceneId, listAdjustTarget);
for (int i = 0; i < listCommand.Count; i++)
{
- var result = HdlGatewayLogic.Current.SendJobjectDataToGateway(ZbGateway.MainGateWay, "Scene/AddMember", listCommand[i], "Scene/AddMember_Respon");
+ var result = HdlGatewayLogic.Current.SendJobjectDataToGateway(mainWay.GwId, "Scene/AddMember", listCommand[i], "Scene/AddMember_Respon");
if (result.ErrorMsg != null || result.ErrorMsgDiv == 0)
{
//鍑虹幇閿欒
@@ -359,12 +373,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 +389,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 +407,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,11 +967,22 @@
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 mainWay = ZbGateway.MainGateWay;
+ if (mainWay == null) { return null; }
+
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);
//鍙戦�佸懡浠�
- var result = HdlGatewayLogic.Current.SendJobjectDataToGateway(ZbGateway.MainGateWay, "Scene/GetDeviceList", jObject.ToString(), "Scene/GetDeviceList_Respon");
+ var result = HdlGatewayLogic.Current.SendJobjectDataToGateway(mainWay.GwId, "Scene/GetDeviceList", jObject.ToString(), "Scene/GetDeviceList_Respon");
if (result.ErrorMsg != null)
{
--
Gitblit v1.8.0