From 2ed75b8b337048e5d75e6d9ec8307633134f02fd Mon Sep 17 00:00:00 2001 From: 黄学彪 <hxb@hdlchina.com.cn> Date: 星期四, 10 十月 2019 11:33:04 +0800 Subject: [PATCH] 个人中心添加楼层和创建房间,实装二级验证 --- ZigbeeApp/Shared/Phone/Device/Logic/Send.cs | 274 +++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 215 insertions(+), 59 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/Device/Logic/Send.cs b/ZigbeeApp/Shared/Phone/Device/Logic/Send.cs index d0a1967..3cb527e 100755 --- a/ZigbeeApp/Shared/Phone/Device/Logic/Send.cs +++ b/ZigbeeApp/Shared/Phone/Device/Logic/Send.cs @@ -30,7 +30,8 @@ { var list = jObjectdata["Data"]["LogicList"]; - if(list==null){ + if (list == null) + { return; } foreach (var listIfon in list) @@ -50,7 +51,7 @@ mainGateWay.GwResDataAction += action; var jObject = new JObject { { "Cluster_ID", 0 }, { "Command", 2004 } }; - mainGateWay?.Send("Logic/GetLogicList",jObject.ToString()); + mainGateWay?.Send("Logic/GetLogicList", jObject.ToString()); //await System.Threading.Tasks.Task.Run(async () => //{ var dateTime = DateTime.Now; @@ -78,7 +79,7 @@ Common.Logic logic = null; Action<string, string> action = (topic, data) => { - + var gatewayID = topic.Split('/')[0]; var jObjectdata = JObject.Parse(data); if (jObjectdata == null) @@ -88,50 +89,50 @@ if (topic == $"{gatewayID}/Logic/GetLogicInfo_Respon") { - - logic = new Common.Logic(); - var Logicifon = jObjectdata["Data"]; - logic.LogicId = int.Parse(Logicifon["LogicId"]?.ToString()); - logic.IsEnable = int.Parse(Logicifon["IsEnable"]?.ToString()); - logic.LogicName = Logicifon["LogicName"]?.ToString(); - logic.Relationship = int.Parse(Logicifon["Relationship"]?.ToString()); - logic.TimeAttribute = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.TimeAttributeObj>(Logicifon["TimeAttribute"].ToString()); - logic.Conditions = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Dictionary<string, string>>>(Logicifon["Conditions"].ToString()); - var listactions = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Dictionary<string, object>>>(Logicifon["Actions"].ToString()); - if (listactions != null) + logic = new Common.Logic(); + var Logicifon = jObjectdata["Data"]; + logic.LogicId = int.Parse(Logicifon["LogicId"]?.ToString()); + logic.IsEnable = int.Parse(Logicifon["IsEnable"]?.ToString()); + logic.LogicName = Logicifon["LogicName"]?.ToString(); + + logic.Relationship = int.Parse(Logicifon["Relationship"]?.ToString()); + logic.TimeAttribute = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.TimeAttributeObj>(Logicifon["TimeAttribute"].ToString()); + logic.Conditions = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Dictionary<string, string>>>(Logicifon["Conditions"].ToString()); + var listactions = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Dictionary<string, object>>>(Logicifon["Actions"].ToString()); + if (listactions != null) + { + foreach (var actions in listactions) { - foreach (var actions in listactions) + Dictionary<string, object> actionsdictionary = new Dictionary<string, object>(); + List<Dictionary<string, string>> tasklist = new List<Dictionary<string, string>>(); + if (actions["LinkType"].ToString() == "0") { - Dictionary<string, object> actionsdictionary = new Dictionary<string, object>(); - List<Dictionary<string, string>> tasklist = new List<Dictionary<string, string>>(); - if (actions["LinkType"].ToString() == "0") + actionsdictionary.Add("LinkType", actions["LinkType"]); + actionsdictionary.Add("DeviceAddr", actions["DeviceAddr"]); + actionsdictionary.Add("Epoint", actions["Epoint"]); + actionsdictionary.Add("Time", actions["Time"]); + var list = JArray.Parse(actions["TaskList"].ToString()); + foreach (var taskIfon in list) { - actionsdictionary.Add("LinkType", actions["LinkType"]); - actionsdictionary.Add("DeviceAddr", actions["DeviceAddr"]); - actionsdictionary.Add("Epoint", actions["Epoint"]); - actionsdictionary.Add("Time", actions["Time"]); - var list = JArray.Parse(actions["TaskList"].ToString()); - foreach (var taskIfon in list) - { - Dictionary<string, string> dictionary = new Dictionary<string, string>(); - dictionary.Add("TaskType", taskIfon["TaskType"].ToString()); - dictionary.Add("Data1", taskIfon["Data1"].ToString()); - dictionary.Add("Data2", taskIfon["Data2"].ToString()); - tasklist.Add(dictionary); - } - actionsdictionary.Add("TaskList", tasklist); + Dictionary<string, string> dictionary = new Dictionary<string, string>(); + dictionary.Add("TaskType", taskIfon["TaskType"].ToString()); + dictionary.Add("Data1", taskIfon["Data1"].ToString()); + dictionary.Add("Data2", taskIfon["Data2"].ToString()); + tasklist.Add(dictionary); } - else - { - actionsdictionary = actions; - } - - logic.Actions.Add(actionsdictionary); + actionsdictionary.Add("TaskList", tasklist); + } + else + { + actionsdictionary = actions; } + logic.Actions.Add(actionsdictionary); } - + + } + }; }; var mainGateWay = ZbGateway.MainGateWay; @@ -219,7 +220,7 @@ Common.Logic Logicifon = null; Action<string, string> action = (topic, datastring) => { - + var gatewayID = topic.Split('/')[0]; var jObjectdata = JObject.Parse(datastring); if (jObjectdata == null) @@ -230,8 +231,8 @@ if (topic == gatewayID + "/Logic/AddLogic_Respon") { try - { - Logicifon=new Common.Logic(); + { + Logicifon = new Common.Logic(); Logicifon = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.Logic>(jObjectdata["Data"].ToString()); } catch (Exception ex) @@ -281,7 +282,7 @@ var tInfo = new JObject { ["Type"] = int.Parse(dictionary["Type"]), - ["IsValid"] =int.Parse(dictionary["IsValid"]), + ["IsValid"] = int.Parse(dictionary["IsValid"]), ["DateType"] = int.Parse(dictionary["DateType"]), ["RemindTime"] = int.Parse(dictionary["RemindTime"]), ["EnDelay"] = int.Parse(dictionary["EnDelay"]), @@ -397,7 +398,7 @@ ["LinkType"] = int.Parse(dictionary["LinkType"].ToString()), ["DeviceAddr"] = dictionary["DeviceAddr"].ToString(), ["Epoint"] = int.Parse(dictionary["Epoint"].ToString()), - ["Time"] =int.Parse(dictionary["Time"].ToString()), + ["Time"] = int.Parse(dictionary["Time"].ToString()), ["taskList"] = taskList, }; @@ -454,7 +455,7 @@ var dateTime = DateTime.Now; - while ((DateTime.Now - dateTime).TotalMilliseconds < 3*1000) + while ((DateTime.Now - dateTime).TotalMilliseconds < 3 * 1000) { await System.Threading.Tasks.Task.Delay(100); if (Logicifon != null) @@ -467,26 +468,181 @@ }); } /// <summary> + /// 鍗曠嫭鎺у埗鑷姩鍖栧紑鍏冲睘鎬� + /// </summary> + /// <returns></returns> + public static async System.Threading.Tasks.Task<int> LogicControlSwitch(Common.Logic logic) + { + return await System.Threading.Tasks.Task.Run(async () => + { + int intvalue = 3; + Action<string, string> action = (topic, data) => + { + var gatewayID = topic.Split('/')[0]; + var jObjectdata = JObject.Parse(data); + if (jObjectdata == null) + { + return; + } + + if (topic == $"{gatewayID}/Logic/ReviseAttribute_Respon") + { + intvalue = int.Parse(jObjectdata["Data"]["Result"].ToString()); + } + }; + var mainGateWay = ZbGateway.MainGateWay; + if (mainGateWay == null) + { + Console.WriteLine("娌℃湁涓荤綉鍏�"); + return intvalue; + } + mainGateWay.GwResDataAction += action; + + var jObject = new JObject { { "Cluster_ID", 0 }, { "Command", 2001 } }; + var date = new JObject(); + jObject.Add("Data", date); + date.Add("LogicId", logic.LogicId); + date.Add("IsEnable", logic.IsEnable); + //date.Add("LogicName", logic.LogicName); + //date.Add("Relationship", logic.Relationship); + mainGateWay?.Send("Logic/ReviseAttribute", jObject.ToString()); + //await System.Threading.Tasks.Task.Run(async () => + //{ + var dateTime = DateTime.Now; + while ((DateTime.Now - dateTime).TotalMilliseconds < 3 * 1000) + { + await System.Threading.Tasks.Task.Delay(100); + if (intvalue != 3) + { + break; + } + } + ZbGateway.MainGateWay.GwResDataAction -= action; + //}); + return intvalue; + }); + } + /// <summary> + /// 鑾峰彇Logic鍒楄〃鐨勬柟娉� + /// </summary> + /// <returns>The logic identifier.</returns> + public static async System.Threading.Tasks.Task<List<Common.Logic>> ReadList(int sum) + { + return await System.Threading.Tasks.Task.Run(async () => + { + + var listLogic = new List<Common.Logic>(); + bool @bool = false; + Action<string, string> action = (topic, data) => + { + var gatewayID = topic.Split('/')[0]; + var jObjectdata = JObject.Parse(data); + if (jObjectdata == null) + { + return; + } + + if (topic == $"{gatewayID}/Logic/GetAllLogicListInfo_Respon") + { + + var logic = new Common.Logic(); + var Logicifon = jObjectdata["Data"]; + logic.LogicId = int.Parse(Logicifon["LogicId"].ToString()); + logic.IsEnable = int.Parse(Logicifon["IsEnable"].ToString()); + logic.LogicName = Logicifon["LogicName"].ToString(); + logic.Relationship = int.Parse(Logicifon["Relationship"].ToString()); + logic.TimeAttribute = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.TimeAttributeObj>(Logicifon["TimeAttribute"].ToString()); + logic.Conditions = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Dictionary<string, string>>>(Logicifon["Conditions"].ToString()); + List<Dictionary<string, object>> listactions = new List<Dictionary<string, object>>(); + listactions = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Dictionary<string, object>>>(Logicifon["Actions"].ToString()); + + if (listactions != null) + { + foreach (var actions in listactions) + { + Dictionary<string, object> actionsdictionary = new Dictionary<string, object>(); + List<Dictionary<string, string>> tasklist = new List<Dictionary<string, string>>(); + if (actions["LinkType"].ToString() == "0") + { + actionsdictionary.Add("LinkType", actions["LinkType"]); + actionsdictionary.Add("DeviceAddr", actions["DeviceAddr"]); + actionsdictionary.Add("Epoint", actions["Epoint"]); + actionsdictionary.Add("Time", actions["Time"]); + var list = JArray.Parse(actions["TaskList"].ToString()); + foreach (var taskIfon in list) + { + Dictionary<string, string> dictionary = new Dictionary<string, string>(); + dictionary.Add("TaskType", taskIfon["TaskType"].ToString()); + dictionary.Add("Data1", taskIfon["Data1"].ToString()); + dictionary.Add("Data2", taskIfon["Data2"].ToString()); + tasklist.Add(dictionary); + } + actionsdictionary.Add("TaskList", tasklist); + } + else + { + actionsdictionary = actions; + } + + logic.Actions.Add(actionsdictionary); + } + + } + + lock (listLogic) + { + var @null = listLogic.Find((o) => { return o.LogicId == logic.LogicId; }); + if (@null == null) + { + listLogic.Add(logic); + } + } + + } + if (topic == $"{gatewayID}/Logic/AllLogicNum_Respon") + { + @bool = true; + } + }; + var mainGateWay = ZbGateway.MainGateWay; + if (mainGateWay == null) + { + Console.WriteLine("娌℃湁涓荤綉鍏�"); + return listLogic; + } + mainGateWay.GwResDataAction += action; + try + { + var jObject = new JObject { { "Cluster_ID", 0 }, { "Command", 2015 } }; + ZbGateway.MainGateWay?.Send("Logic/GetAllLogicListInfo", jObject.ToString()); + } + catch { } + var dateTime = DateTime.Now; + while ((DateTime.Now - dateTime).TotalMilliseconds < 8 * 1000) + { + await System.Threading.Tasks.Task.Delay(100); + //if (sum == listLogic.Count) + //{ + // break; + //} + if (@bool) + { + break; + } + } + ZbGateway.MainGateWay.GwResDataAction -= action; + return listLogic; + }); + } + // <summary> /// 閫氳繃璁惧鎵惧埌鍖哄煙(鎴块棿)鍚嶇О /// </summary> /// <param name="btnregionname">Btnregionname.</param> /// <param name="device">Device.</param> public static void RoomNmae(Button btnregionname, CommonDevice device) { - var room = new Common.Room(); - var roomlistname = room.GetRoomListNameByDevice(device); - if (roomlistname.Count == 0) - { - btnregionname.Text = Language.StringByID(R.MyInternationalizationString.customroom); - } - else - { - foreach (var roomname in roomlistname) - { - btnregionname.Text += roomname + ","; - } - btnregionname.Text = btnregionname.Text.TrimEnd(','); - } + var room = new Common.Room(); + btnregionname.Text = room.GetRoomNameByDevice(device); } } } -- Gitblit v1.8.0