From 48ba446936b51fffafa7c3600c0dadc6ac0e8c20 Mon Sep 17 00:00:00 2001 From: 陈嘉乐 <cjl@hdlchina.com.cn> Date: 星期五, 10 七月 2020 10:52:13 +0800 Subject: [PATCH] 2020-07-10-01 --- ZigbeeApp/Shared/Phone/ZigBee/Device/IASZone.cs | 474 +--------------------------------------------------------- 1 files changed, 13 insertions(+), 461 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/ZigBee/Device/IASZone.cs b/ZigbeeApp/Shared/Phone/ZigBee/Device/IASZone.cs index a299727..38aaeca 100755 --- a/ZigbeeApp/Shared/Phone/ZigBee/Device/IASZone.cs +++ b/ZigbeeApp/Shared/Phone/ZigBee/Device/IASZone.cs @@ -11,22 +11,13 @@ { this.Type = DeviceType.IASZone; } - /// <summary> - /// 鍏夋劅绛夌骇涓暟锛圠ux鑳藉姏锛� - /// <para>鏈夊嚑涓瓑绾у氨鏄剧ず鍑犱釜鍒诲害</para> - /// </summary> - public int LightLevelCount = -1; - - /// <summary> - /// 褰撳墠Lux鍊� - /// </summary> - public int PirLux = -1; #region IAS瀹夐槻淇℃伅涓婃姤. /// <summary> /// IAS瀹夐槻淇℃伅涓婃姤 /// <para>褰撳畨闃茶澶囧睘鎬х姸鎬佹敼鍙樻椂鍊欙紙渚嬪涓�姘у寲纰充紶鎰熷櫒妫�娴嬪埌涓�姘у寲纰虫皵浣擄級锛岃澶囧皢涓婃姤灞炴�х姸鎬佸彉鍖栨暟鎹��</para> /// </summary> + [Newtonsoft.Json.JsonIgnore] public IASInfoData iASInfo; /// <summary> /// IAS瀹夐槻淇℃伅涓婃姤 @@ -129,8 +120,7 @@ if (topic == gatewayID + "/" + "Error_Respon") { - var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = Gateway.getGatewayBaseInfo.gwID }; - var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.ErrorResponData>(jobject["Data"].ToString()); + var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString()); if (temp == null) { @@ -145,18 +135,17 @@ if (topic == gatewayID + "/" + "ZbDataPassthrough") { - var gatewayTemp = new ZbGateway() { DataID = jobject.Value<int>("Data_ID") }; - gatewayTemp.clientDataPassthroughResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<ClientDataPassthroughResponseData>(jobject["Data"].ToString()); + var clientDataPassthroughResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<ClientDataPassthroughResponseData>(jobject["Data"].ToString()); - if (gatewayTemp.clientDataPassthroughResponseData == null) + if (clientDataPassthroughResponseData == null) { result = new PirLightAbilitySizeInfo { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" }; } else { - if (gatewayTemp.clientDataPassthroughResponseData?.PassData != null) + if (clientDataPassthroughResponseData?.PassData != null) { - var data = gatewayTemp.clientDataPassthroughResponseData.PassData; + var data = clientDataPassthroughResponseData.PassData; if (data.Length == 12) { var command = data[4].ToString() + data[5].ToString() + data[2].ToString() + data[3].ToString(); @@ -164,7 +153,6 @@ { var cou = data[10].ToString() + data[11].ToString(); int countTemp = Convert.ToInt32(cou, 16); - LightLevelCount = countTemp; result = new PirLightAbilitySizeInfo { LightLevelCount = countTemp }; System.Console.WriteLine($"UI鏀跺埌閫氱煡鍚庣殑涓婚_command:0303_{ topic}"); } @@ -234,19 +222,9 @@ /// <summary> /// PIR閰嶇疆鍙傛暟鍥炲 /// </summary> - public PirLightAbilitySizeInfo lightLevelSizeInfo; [System.Serializable] - public class PirLightAbilitySizeInfo + public class PirLightAbilitySizeInfo : ErrorResponCommon { - /// <summary> - /// 閿欒淇℃伅 - /// </summary> - public string errorMessageBase; - /// <summary> - /// 缃戝叧淇℃伅閿欒鍙嶉 - /// <para>褰撶綉鍏虫帴鏀跺埌瀹㈡埛绔俊鎭悗锛屽嚭鐜颁互涓嬪紓甯告儏鍐靛皢鍙嶉閿欒銆�</para> - /// </summary> - public ErrorResponData errorResponData; /// <summary> /// 鍏夋劅绛夌骇涓暟锛圠ux鑳藉姏锛� /// <para>鏈夊嚑涓瓑绾у氨鏄剧ず鍑犱釜鍒诲害</para> @@ -257,130 +235,19 @@ #endregion #region PIR浼犳劅鍣ㄥ弬鏁伴厤缃� - ///<summary > - ///PIR浼犳劅鍣ㄥ弬鏁伴厤缃� - /// </summary> - public async System.Threading.Tasks.Task<ResponseAllData> SetPIRSensorParamateAsync(ConfigureParamates configureParamates) - { - ResponseAllData result = null; - if (Gateway == null) - { - result = new ResponseAllData { errorMessageBase = "褰撳墠娌℃湁缃戝叧" }; - return result; - } - return await System.Threading.Tasks.Task.Run(async () => - { - Action<string, string> action = (topic, message) => - { - var gatewayID = topic.Split('/')[0]; - var jobject = Newtonsoft.Json.Linq.JObject.Parse(message); - - if (topic == gatewayID + "/" + "Error_Respon") - { - var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = Gateway.getGatewayBaseInfo.gwID }; - var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.ErrorResponData>(jobject["Data"].ToString()); - - if (temp == null) - { - result = new ResponseAllData { errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖" }; - } - - else - { - result = new ResponseAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) }; - } - } - - if (topic == gatewayID + "/" + "ZbDataPassthrough") - { - var gatewayTemp = new ZbGateway() { DataID = jobject.Value<int>("Data_ID") }; - gatewayTemp.clientDataPassthroughResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<ClientDataPassthroughResponseData>(jobject["Data"].ToString()); - - if (gatewayTemp.clientDataPassthroughResponseData == null) - { - result = new ResponseAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" }; - } - else - { - if (gatewayTemp.clientDataPassthroughResponseData?.PassData != null) - { - var data = gatewayTemp.clientDataPassthroughResponseData.PassData; - if (data.Length == 16) - { - var command = data[4].ToString() + data[5].ToString() + data[2].ToString() + data[3].ToString(); - if (command == "0002") - { - var tempD = new ResponseData(); - tempD.command = Convert.ToInt32(data[10].ToString() + data[11].ToString() + data[12].ToString() + data[13].ToString(), 16); - tempD.status = Convert.ToInt32(data[14].ToString() + data[15].ToString(), 16); - result = new ResponseAllData { responseData = tempD }; - System.Console.WriteLine($"UI鏀跺埌閫氱煡鍚庣殑涓婚_command:0300_{ topic}"); - } - } - } - } - } - }; - - Gateway.Actions += action; - System.Console.WriteLine("ClientDataPassthrough_Actions 鍚姩" + System.DateTime.Now.ToString()); - - try - { - var passData = SetPIRSensorData(configureParamates); - var jObject = new JObject { { "DeviceAddr", DeviceAddr }, { "Epoint", 200 }, { "Cluster_ID", 64513 }, { "Command", 0 } }; - var data = new JObject { { "PassData", passData } }; - jObject.Add("Data", data); - Gateway.Send(("ClientDataPassthrough"), jObject.ToString()); - } - catch { } - - var dateTime = DateTime.Now; - while ((DateTime.Now - dateTime).TotalMilliseconds < 9000)//WaitReceiveDataTime) - { - await System.Threading.Tasks.Task.Delay(10); - if (result != null) - { - break; - } - } - if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime) - { - result = new ResponseAllData { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" }; - } - Gateway.Actions -= action; - System.Console.WriteLine("ClientDataPassthrough_Actions 閫�鍑�" + System.DateTime.Now.ToString()); - - return result; - }); - } /// <summary> /// PIR閰嶇疆鍙傛暟鍥炲 /// </summary> - public ParamatesInfo paramatesInfo; [System.Serializable] - public class ParamatesInfo + public class ParamatesInfo : ErrorResponCommon { - /// <summary> - /// 閿欒淇℃伅 - /// </summary> - public string errorMessageBase; - /// <summary> - /// 缃戝叧淇℃伅閿欒鍙嶉 - /// <para>褰撶綉鍏虫帴鏀跺埌瀹㈡埛绔俊鎭悗锛屽嚭鐜颁互涓嬪紓甯告儏鍐靛皢鍙嶉閿欒銆�</para> - /// </summary> - public ErrorResponData errorResponData; /// <summary> /// PIR閰嶇疆鍙傛暟 /// </summary> public ConfigureParamates configureParamates; } - /// <summary> - /// PIR閰嶇疆鍙傛暟 - /// </summary> - public ConfigureParamates configureParamates; /// <summary> /// PIR閰嶇疆鍙傛暟 /// </summary> @@ -443,317 +310,6 @@ public int dimmerLevel = 0; } - /// <summary> - /// 閰嶇疆PIR閰嶇疆鍙傛暟 - /// <para>鍙戦厤缃寜閿寚绀虹伅棰滆壊鍛戒护鏃讹紝姝ゆ椂涓哄彂閫佸埌缃戝叧鐨勯�忎紶鏁版嵁</para> - /// </summary> - string SetPIRSensorData(ConfigureParamates configureParamates) - { - string data = ""; - string dataLength = "10"; - string dataComand1 = "00"; - string dataComand2 = "03"; - string dataSerialNum = "01"; - string addDataLength = "0C"; - string levelEnable = ""; - string levelSize = ""; - string controlDevEnable = ""; - string transitionTime = ""; - string iasReportPeriod = ""; - string mode = ""; - string type = ""; - string dimmerOnTime = ""; - string dimmerOffTime = ""; - string dimmerLevel = ""; - try - { - if (configureParamates != null) - { - //levelEnable - if (configureParamates.levelEnable) - { - levelEnable = "01"; - } - else - { - levelEnable = "00"; - } - //鍏夌収绛夌骇 - if (configureParamates.levelSize > 0) - { - var tempLevelEnable = Convert.ToString(configureParamates.levelSize, 16); - levelSize = tempLevelEnable.ToString().PadLeft(2, '0'); - } - else - { - levelSize = "00"; - } - //controlDevEnable - if (configureParamates.controlDevEnable) - { - controlDevEnable = "01"; - } - else - { - controlDevEnable = "00"; - } - //transitionTime,iasReportPeriod - for (int j = 0; j < 2; j++) - { - var tempBytes = new byte[2]; - if (j == 0) - { - for (int i = 0; i < 2; i++) - { - tempBytes[i] = (byte)(configureParamates.transitionTime >> (i * 8) & 0xff); - } - } - else - { - for (int i = 0; i < 2; i++) - { - tempBytes[i] = (byte)(configureParamates.iasReportPeriod >> (i * 8) & 0xff); - } - } - var time1 = Convert.ToString(tempBytes[0], 16); - var time2 = Convert.ToString(tempBytes[1], 16); - if (time1.Length == 1) - { - time1 = "0" + time1; - } - if (time2.Length == 1) - { - time2 = "0" + time2; - } - if (j == 0) - { - transitionTime = (time1 + time2).ToUpper(); - - } - else - { - iasReportPeriod = (time1 + time2).ToUpper(); - } - } - //mode - if (configureParamates.mode == 1) - { - mode = "01"; - } - else - { - mode = "00"; - } - //type - if (configureParamates.type == 1) - { - type = "01"; - } - else - { - type = "00"; - } - //dimmerOnTime - if (configureParamates.dimmerOnTime > 0) - { - var tempDimmerOnTime = Convert.ToString(configureParamates.dimmerOnTime, 16); - dimmerOnTime = tempDimmerOnTime.ToString().PadLeft(2, '0'); - } - else - { - dimmerOnTime = "00"; - } - dimmerOnTime = dimmerOnTime.ToUpper(); - if (configureParamates.dimmerOffTime > 0) - { - var tempDimmerOffTime = Convert.ToString(configureParamates.dimmerOffTime, 16); - dimmerOffTime = tempDimmerOffTime.ToString().PadLeft(2, '0'); - } - else - { - dimmerOffTime = "00"; - } - dimmerOffTime = dimmerOffTime.ToUpper(); - //dimmerLevel - string temp = ""; - var sbString = new System.Text.StringBuilder(); - string temp2 = Convert.ToString(configureParamates.dimmerLevel, 16); - switch (temp2.Length) - { - case 1: - temp = "0" + temp2; - break; - case 2: - temp = temp2; - break; - } - sbString.Append(temp.ToUpper()); - - data = dataLength + dataComand1 + dataComand2 + dataSerialNum + addDataLength + - levelEnable + levelSize + controlDevEnable + transitionTime + iasReportPeriod - + mode + type + dimmerOnTime + dimmerOffTime + sbString; - } - } - catch { }; - - return data; - } - #endregion - - #region 鑾峰彇PIR閰嶇疆鏁版嵁 - ///<summary > - ///PIR浼犳劅鍣ㄥ弬鏁伴厤缃� - /// <para>reserve:0-ff</para> - /// </summary> - public async System.Threading.Tasks.Task<ParamatesInfo> GetPIRSensorParamateAsync(string reserve = "01") - { - ParamatesInfo result = null; - if (Gateway == null) - { - result = new ParamatesInfo { errorMessageBase = "褰撳墠娌℃湁缃戝叧" }; - return result; - } - return await System.Threading.Tasks.Task.Run(async () => - { - Action<string, string> action = (topic, message) => - { - var gatewayID = topic.Split('/')[0]; - var jobject = Newtonsoft.Json.Linq.JObject.Parse(message); - - if (topic == gatewayID + "/" + "Error_Respon") - { - var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = Gateway.getGatewayBaseInfo.gwID }; - var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.ErrorResponData>(jobject["Data"].ToString()); - - if (temp == null) - { - result = new ParamatesInfo { errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖" }; - } - - else - { - result = new ParamatesInfo { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) }; - } - } - - if (topic == gatewayID + "/" + "ZbDataPassthrough") - { - var gatewayTemp = new ZbGateway() { DataID = jobject.Value<int>("Data_ID") }; - gatewayTemp.clientDataPassthroughResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<ClientDataPassthroughResponseData>(jobject["Data"].ToString()); - - if (gatewayTemp.clientDataPassthroughResponseData == null) - { - result = new ParamatesInfo { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" }; - } - else - { - if (gatewayTemp.clientDataPassthroughResponseData?.PassData != null) - { - var data = gatewayTemp.clientDataPassthroughResponseData.PassData; - if (data.Length == 34) - { - var command = data[4].ToString() + data[5].ToString() + data[2].ToString() + data[3].ToString(); - if (command == "0302") - { - var le = data[10].ToString() + data[11].ToString(); - var tempD = new ConfigureParamates(); - - if (le == "01") - { - tempD.levelEnable = true; - } - else - { - tempD.levelEnable = false; - } - - var size = data[12].ToString() + data[13].ToString(); - tempD.levelSize = Convert.ToInt32(size, 16); - - var cdl = data[14].ToString() + data[15].ToString(); - if (cdl == "01") - { - tempD.controlDevEnable = true; - } - else - { - tempD.controlDevEnable = false; - } - tempD.transitionTime = Convert.ToInt32(data[18].ToString() + data[19].ToString() + data[16].ToString() + data[17].ToString(), 16); - tempD.iasReportPeriod = Convert.ToInt32(data[22].ToString() + data[23].ToString() + data[20].ToString() + data[21].ToString(), 16); - tempD.mode = Convert.ToInt32(data[24].ToString() + data[25].ToString(), 16); - tempD.type = Convert.ToInt32(data[26].ToString() + data[27].ToString(), 16); - tempD.dimmerOnTime = Convert.ToInt32(data[28].ToString() + data[29].ToString(), 16); - tempD.dimmerOffTime = Convert.ToInt32(data[30].ToString() + data[31].ToString(), 16); - tempD.dimmerLevel = Convert.ToInt32(data[32].ToString() + data[33].ToString(), 16); - - configureParamates = tempD; - result = new ParamatesInfo { configureParamates = tempD }; - System.Console.WriteLine($"UI鏀跺埌閫氱煡鍚庣殑涓婚_command:0301_{ topic}"); - - } - } - } - } - } - }; - - Gateway.Actions += action; - System.Console.WriteLine("ClientDataPassthrough_Actions 鍚姩" + System.DateTime.Now.ToString()); - - try - { - var passData = GetPIRSensorData(reserve); - var jObject = new JObject { { "DeviceAddr", DeviceAddr }, { "Epoint", 200 }, { "Cluster_ID", 64513 }, { "Command", 0 } }; - var data = new JObject { { "PassData", passData } }; - jObject.Add("Data", data); - Gateway.Send(("ClientDataPassthrough"), jObject.ToString()); - } - catch { } - - var dateTime = DateTime.Now; - while ((DateTime.Now - dateTime).TotalMilliseconds < 9000)//WaitReceiveDataTime) - { - await System.Threading.Tasks.Task.Delay(10); - if (result != null) - { - break; - } - } - if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime) - { - result = new ParamatesInfo { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" }; - } - Gateway.Actions -= action; - System.Console.WriteLine("ClientDataPassthrough_Actions 閫�鍑�" + System.DateTime.Now.ToString()); - - return result; - }); - } - - /// <summary> - ///PIR鍏夌収鑳藉姏鍊� - /// <para>鍙戦厤缃寜閿寚绀虹伅棰滆壊鍛戒护鏃讹紝姝ゆ椂涓哄彂閫佸埌缃戝叧鐨勯�忎紶鏁版嵁</para> - /// </summary> - string GetPIRSensorData(string reserve) - { - string data = ""; - string dataLength = "05"; - string dataComand1 = "01"; - string dataComand2 = "03"; - string dataSerialNum = "01"; - string addDataLength = "01"; - string reserveData = reserve; - - try - { - data = dataLength + dataComand1 + dataComand2 + dataSerialNum + addDataLength + - reserveData; - } - catch { }; - - return data; - } #endregion #region 鑾峰彇PIR lux鍊硷紙Lux鍊硷級 @@ -778,8 +334,7 @@ if (topic == gatewayID + "/" + "Error_Respon") { - var gatewayTemp = new ZbGateway() { Time = jobject.Value<int>("Time"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = Gateway.getGatewayBaseInfo.gwID }; - var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.ErrorResponData>(jobject["Data"].ToString()); + var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString()); if (temp == null) { @@ -794,18 +349,17 @@ if (topic == gatewayID + "/" + "ZbDataPassthrough") { - var gatewayTemp = new ZbGateway() { DataID = jobject.Value<int>("Data_ID") }; - gatewayTemp.clientDataPassthroughResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<ClientDataPassthroughResponseData>(jobject["Data"].ToString()); + var clientDataPassthroughResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<ClientDataPassthroughResponseData>(jobject["Data"].ToString()); - if (gatewayTemp.clientDataPassthroughResponseData == null) + if (clientDataPassthroughResponseData == null) { result = new PirLuxAbilitySizeInfo { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" }; } else { - if (gatewayTemp.clientDataPassthroughResponseData?.PassData != null) + if (clientDataPassthroughResponseData?.PassData != null) { - var data = gatewayTemp.clientDataPassthroughResponseData.PassData; + var data = clientDataPassthroughResponseData.PassData; if (data.Length == 12) { var command = data[4].ToString() + data[5].ToString() + data[2].ToString() + data[3].ToString(); @@ -813,7 +367,6 @@ { var cou = data[10].ToString() + data[11].ToString(); int countTemp = Convert.ToInt32(cou, 16); - PirLux = countTemp; result = new PirLuxAbilitySizeInfo { pirLux = countTemp }; System.Console.WriteLine($"UI鏀跺埌閫氱煡鍚庣殑涓婚_command:0303_{ topic}"); } @@ -882,7 +435,6 @@ /// <summary> /// PIR閰嶇疆鍙傛暟鍥炲 /// </summary> - public PirLuxAbilitySizeInfo pirLuxAbilitySizeInfo; [System.Serializable] public class PirLuxAbilitySizeInfo { -- Gitblit v1.8.0