From 4f0ab0ad21ce450b7856d50f98322a7899361386 Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期二, 22 九月 2020 10:30:01 +0800
Subject: [PATCH] 不要下载这个备份
---
ZigbeeApp/Shared/Phone/ZigBee/Device/IASZone.cs | 658 +++++++++++++++++++++++------------------------------------
1 files changed, 255 insertions(+), 403 deletions(-)
diff --git a/ZigbeeApp/Shared/Phone/ZigBee/Device/IASZone.cs b/ZigbeeApp/Shared/Phone/ZigBee/Device/IASZone.cs
index 97b37d5..2db5d41 100755
--- a/ZigbeeApp/Shared/Phone/ZigBee/Device/IASZone.cs
+++ b/ZigbeeApp/Shared/Phone/ZigBee/Device/IASZone.cs
@@ -11,18 +11,43 @@
{
this.Type = DeviceType.IASZone;
}
- /// <summary>
- /// 鍏夋劅绛夌骇涓暟锛圠ux鑳藉姏锛�
- /// <para>鏈夊嚑涓瓑绾у氨鏄剧ず鍑犱釜鍒诲害</para>
- /// </summary>
- public int LightLevelCount = -1;
-
+
#region IAS瀹夐槻淇℃伅涓婃姤.
+ /// <summary>
+ /// 涓婁竴娆¤闂甶ASInfo鐨勬椂闂�
+ /// </summary>
+ [Newtonsoft.Json.JsonIgnore]
+ private DateTime oldiASInfoTime = DateTime.Now;
+ /// <summary>
+ /// IAS瀹夐槻淇℃伅涓婃姤
+ /// </summary>
+ [Newtonsoft.Json.JsonIgnore]
+ private IASInfoData m_iASInfo = null;
/// <summary>
- /// IAS瀹夐槻淇℃伅涓婃姤
+ /// IAS瀹夐槻淇℃伅涓婃姤(杩欎釜涓滆タ30绉掍箣鍚庡氨娓呮帀)
/// <para>褰撳畨闃茶澶囧睘鎬х姸鎬佹敼鍙樻椂鍊欙紙渚嬪涓�姘у寲纰充紶鎰熷櫒妫�娴嬪埌涓�姘у寲纰虫皵浣擄級锛岃澶囧皢涓婃姤灞炴�х姸鎬佸彉鍖栨暟鎹��</para>
/// </summary>
- public IASInfoData iASInfo;
+ [Newtonsoft.Json.JsonIgnore]
+ public IASInfoData iASInfo
+ {
+ get
+ {
+ if (m_iASInfo != null && (DateTime.Now - oldiASInfoTime).TotalMilliseconds > 30 * 1000)
+ {
+ //杩欎釜涓滆タ30绉掍箣鍚庡氨娓呮帀
+ m_iASInfo = null;
+ return null;
+ }
+ return m_iASInfo;
+ }
+ set
+ {
+ //璁板綍璧锋洿鏂版椂闂�
+ this.oldiASInfoTime = DateTime.Now;
+ m_iASInfo = value;
+ }
+ }
+
/// <summary>
/// IAS瀹夐槻淇℃伅涓婃姤
/// <para>褰撳畨闃茶澶囧睘鎬х姸鎬佹敼鍙樻椂鍊欙紙渚嬪涓�姘у寲纰充紶鎰熷櫒妫�娴嬪埌涓�姘у寲纰虫皵浣擄級锛岃澶囧皢涓婃姤灞炴�х姸鎬佸彉鍖栨暟鎹��</para>
@@ -124,8 +149,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)
{
@@ -140,18 +164,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();
@@ -159,7 +182,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}");
}
@@ -229,9 +251,221 @@
/// <summary>
/// PIR閰嶇疆鍙傛暟鍥炲
/// </summary>
- public PirLightAbilitySizeInfo lightLevelSizeInfo;
[System.Serializable]
- public class PirLightAbilitySizeInfo
+ public class PirLightAbilitySizeInfo : ErrorResponCommon
+ {
+ /// <summary>
+ /// 鍏夋劅绛夌骇涓暟锛圠ux鑳藉姏锛�
+ /// <para>鏈夊嚑涓瓑绾у氨鏄剧ず鍑犱釜鍒诲害</para>
+ /// </summary>
+ public int LightLevelCount = -1;
+ }
+
+ #endregion
+
+ #region PIR浼犳劅鍣ㄥ弬鏁伴厤缃�
+
+ /// <summary>
+ /// PIR閰嶇疆鍙傛暟鍥炲
+ /// </summary>
+ [System.Serializable]
+ public class ParamatesInfo : ErrorResponCommon
+ {
+ /// <summary>
+ /// PIR閰嶇疆鍙傛暟
+ /// </summary>
+ public ConfigureParamates configureParamates;
+ }
+
+ /// <summary>
+ /// PIR閰嶇疆鍙傛暟
+ /// </summary>
+ [System.Serializable]
+ public class ConfigureParamates
+ {
+ /// <summary>
+ /// 浜害锛堝厜鐓у害锛変娇鑳�
+ /// <para> false锛�0锛�:涓嶄娇鑳�</para>
+ /// <para>true锛�1锛�:浣胯兘</para>
+ /// </summary>
+ public bool levelEnable;
+ /// <summary>
+ /// 鍏夌収搴︾瓑绾�
+ /// <para>鍊硷細0-10</para>
+ /// </summary>
+ public int levelSize = -1;
+ /// <summary>
+ ///鎺у埗璁惧浣胯兘浣�
+ ///<para> false锛�0锛�:涓嶄娇鑳�</para>
+ /// <para>true锛�1锛�:浣胯兘</para>
+ /// </summary>
+ public bool controlDevEnable;
+ /// <summary>
+ /// 瑙﹀彂寮�鐏埌瑙﹀彂鍏崇伅鐨勬椂闂撮棿闅�
+ /// <para>0-65535 鍗曚綅绉�</para>
+ /// </summary>
+ public int transitionTime;
+ /// <summary>
+ /// IAS涓婃姤鍛ㄦ湡
+ /// <para>10-0xffff 绉�</para>
+ /// </summary>
+ public int iasReportPeriod;
+ /// <summary>
+ /// 鍏夌収搴︾瓑绾�
+ /// <para>0锛氬崐鑷姩妯″紡</para>
+ /// <para>1锛氳嚜鍔ㄦā寮�</para>
+ /// </summary>
+ public int mode = 0;
+ /// <summary>
+ /// 寮�鐏被鍨�
+ /// <para>鍊硷細0锛氳皟鍏�</para>
+ ///<para>1锛氬紑鍏� </para>
+ /// </summary>
+ public int type = 0;
+ /// <summary>
+ /// 璋冨厜妯″紡锛屽埌杈惧紑鐏寒搴︾殑鏃堕棿
+ /// <para>鍊硷細0-10 绉�</para>
+ /// </summary>
+ public int dimmerOnTime = 0;
+ /// <summary>
+ /// 璋冨厜妯″紡锛屽叧鐏埌杈�0%鎵�闇�瑕佺殑鏃堕棿
+ /// <para>鍊硷細0-10 绉�</para>
+ /// </summary>
+ public int dimmerOffTime = 0;
+ /// <summary>
+ /// 璋冨厜妯″紡寮�鐏殑浜害
+ /// <para>0-0xff 锛堥鐣欙級</para>
+ /// </summary>
+ public int dimmerLevel = 0;
+ }
+
+ #endregion
+
+ #region 鑾峰彇PIR lux鍊硷紙Lux鍊硷級
+ ///<summary >
+ ///鑾峰彇PIR lux鍊硷紙Lux鍊硷級
+ /// <para>reserve:0-ff</para>
+ /// </summary>
+ public async System.Threading.Tasks.Task<PirLuxAbilitySizeInfo> GetPirLuxAbilitySizeAsync(string reserve = "01")
+ {
+ PirLuxAbilitySizeInfo result = null;
+ if (Gateway == null)
+ {
+ result = new PirLuxAbilitySizeInfo { 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 temp = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.ErrorResponData>(jobject["Data"].ToString());
+
+ if (temp == null)
+ {
+ result = new PirLuxAbilitySizeInfo { errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖" };
+ }
+
+ else
+ {
+ result = new PirLuxAbilitySizeInfo { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) };
+ }
+ }
+
+ if (topic == gatewayID + "/" + "ZbDataPassthrough")
+ {
+ var clientDataPassthroughResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject<ClientDataPassthroughResponseData>(jobject["Data"].ToString());
+
+ if (clientDataPassthroughResponseData == null)
+ {
+ result = new PirLuxAbilitySizeInfo { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" };
+ }
+ else
+ {
+ if (clientDataPassthroughResponseData?.PassData != null)
+ {
+ var data = clientDataPassthroughResponseData.PassData;
+ if (data.Length == 12)
+ {
+ var command = data[4].ToString() + data[5].ToString() + data[2].ToString() + data[3].ToString();
+ if (command == "0306")
+ {
+ var cou = data[10].ToString() + data[11].ToString();
+ int countTemp = Convert.ToInt32(cou, 16);
+ result = new PirLuxAbilitySizeInfo { pirLux = countTemp };
+ System.Console.WriteLine($"UI鏀跺埌閫氱煡鍚庣殑涓婚_command:0303_{ topic}");
+ }
+ }
+ }
+ }
+ }
+ };
+
+ Gateway.Actions += action;
+ System.Console.WriteLine("ClientDataPassthrough_Actions 鍚姩" + System.DateTime.Now.ToString());
+
+ try
+ {
+ var passData = SendPIRLuxAbilitySizeData(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 PirLuxAbilitySizeInfo { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" };
+ }
+ Gateway.Actions -= action;
+ System.Console.WriteLine("ClientDataPassthrough_Actions 閫�鍑�" + System.DateTime.Now.ToString());
+
+ return result;
+ });
+ }
+
+ /// <summary>
+ ///鑾峰彇PIR lux鍊�
+ /// </summary>
+ string SendPIRLuxAbilitySizeData(string reserve)
+ {
+ string data = "";
+ string dataLength = "05";
+ string dataComand1 = "05";
+ string dataComand2 = "03";
+ string dataSerialNum = "01";
+ string addDataLength = "01";
+ string reserveData = reserve;
+
+ try
+ {
+ data = dataLength + dataComand1 + dataComand2 + dataSerialNum + addDataLength +
+ reserveData;
+ }
+ catch { };
+
+ return data;
+ }
+
+ /// <summary>
+ /// PIR閰嶇疆鍙傛暟鍥炲
+ /// </summary>
+ [System.Serializable]
+ public class PirLuxAbilitySizeInfo
{
/// <summary>
/// 閿欒淇℃伅
@@ -243,394 +477,12 @@
/// </summary>
public ErrorResponData errorResponData;
/// <summary>
- /// 鍏夋劅绛夌骇涓暟锛圠ux鑳藉姏锛�
- /// <para>鏈夊嚑涓瓑绾у氨鏄剧ず鍑犱釜鍒诲害</para>
+ /// 褰撳墠Lux鍊�
+ /// <para>0-0xff Lux</para>
/// </summary>
- public int LightLevelCount = -1;
+ public int pirLux = -1;
}
#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
- {
- /// <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>
- [System.Serializable]
- public class ConfigureParamates
- {
- /// <summary>
- ///浜害锛堝厜鐓у害锛変娇鑳�
- ///<para> false:涓嶄娇鑳�</para>
- /// <para>true:浣胯兘</para>
- /// </summary>
- public bool levelEnable;
- /// <summary>
- /// 鍏夌収搴︾瓑绾�
- /// <para>鍊硷細0-10</para>
- /// </summary>
- public int levelSize = -1;
- /// <summary>
- ///鎺у埗璁惧浣胯兘浣�
- ///<para> false:涓嶄娇鑳�</para>
- /// <para>true:浣胯兘</para>
- /// </summary>
- public bool controlDevEnable;
- /// <summary>
- /// 瑙﹀彂寮�鐏埌瑙﹀彂鍏崇伅鐨勬椂闂撮棿闅�
- /// <para>0-65535 鍗曚綅绉�</para>
- /// </summary>
- public int transitionTime;
-
- }
-
- /// <summary>
- /// 閰嶇疆PIR閰嶇疆鍙傛暟
- /// <para>鍙戦厤缃寜閿寚绀虹伅棰滆壊鍛戒护鏃讹紝姝ゆ椂涓哄彂閫佸埌缃戝叧鐨勯�忎紶鏁版嵁</para>
- /// </summary>
- string SetPIRSensorData(ConfigureParamates configureParamates)
- {
- string data = "";
- string dataLength = "09";
- string dataComand1 = "00";
- string dataComand2 = "03";
- string dataSerialNum = "01";
- string addDataLength = "05";
- string levelEnable = "";
- string levelSize = "";
- string controlDevEnable = "";
- string transitionTime = "";
- try
- {
- if (configureParamates != null)
- {
- if (configureParamates.levelEnable)
- {
- levelEnable = "01";
- }
- else
- {
- levelEnable = "00";
- }
- //鍏夌収绛夌骇
- if (configureParamates.levelSize > 0)
- {
- levelSize = configureParamates.levelSize.ToString().PadLeft(2, '0');
- }
- else
- {
- levelSize = "00";
- }
-
- if (configureParamates.controlDevEnable)
- {
- controlDevEnable = "01";
- }
- else
- {
- controlDevEnable = "00";
- }
-
- var tempBytes = new byte[2];
- for (int i = 0; i < 2; i++)
- {
- tempBytes[i] = (byte)(configureParamates.transitionTime >> (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;
- }
- transitionTime = (time1 + time2).ToUpper();
- }
-
- data = dataLength + dataComand1 + dataComand2 + dataSerialNum + addDataLength +
- levelEnable + levelSize + controlDevEnable + transitionTime;
- }
- 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 == 20)
- {
- 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);
-
- 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);
- 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
-
-
}
}
--
Gitblit v1.8.0