From 7b60238359b94125d591678eff105ae2bf47843f Mon Sep 17 00:00:00 2001
From: gxc <guoxuecheng@guoxuechengdeMacBook-Pro.local>
Date: 星期五, 15 十一月 2019 13:16:21 +0800
Subject: [PATCH] 2019.11.15
---
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAttributeLogic.cs | 81 ++++++++++++++++++++++++++++++++++++++++
1 files changed, 81 insertions(+), 0 deletions(-)
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAttributeLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAttributeLogic.cs
index 63fc904..1a2bc3b 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAttributeLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAttributeLogic.cs
@@ -203,5 +203,86 @@
}
#endregion
+
+ #region 鈻� 鍐欏叆璁惧灞炴�______________________
+
+ /// <summary>
+ /// 璁剧疆绌鸿皟鐨勮嚜瀹氫箟妯″紡
+ /// </summary>
+ /// <param name="device">璁惧瀵硅薄</param>
+ /// <param name="clusterId">闀濱D</param>
+ /// <param name="attributeId">灞炴�D</param>
+ /// <param name="attributeDataType">鏁版嵁绫诲瀷</param>
+ /// <param name="attributeData">闇�瑕佸啓鍏ョ殑鏁版嵁</param>
+ /// <returns></returns>
+ public async System.Threading.Tasks.Task<CommonDevice.SetWritableValueResponAllData> WriteDeviceAttribute(CommonDevice device, int clusterId, int attributeId, int attributeDataType, int attributeData)
+ {
+ var MyGateway = device.Gateway;
+ if (MyGateway == null)
+ {
+ return null;
+ }
+
+ CommonDevice.SetWritableValueResponAllData d = null;
+ 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<ZbGateway.ErrorResponData>(jobject["Data"].ToString());
+ if (temp == null)
+ {
+ d = new CommonDevice.SetWritableValueResponAllData { errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖" };
+ }
+ else
+ {
+ d = new CommonDevice.SetWritableValueResponAllData { errorResponData = temp, errorMessageBase = HdlCheckLogic.Current.CheckCommonErrorCode(temp.Error) };
+ }
+ }
+
+ if (topic == gatewayID + "/" + "SetWritableValue_Respon")
+ {
+ var tempData = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.SetWritableValueResponData>(jobject["Data"].ToString());
+ if (tempData == null)
+ {
+ d = new CommonDevice.SetWritableValueResponAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" };
+ }
+ else
+ {
+ d = new CommonDevice.SetWritableValueResponAllData { setWritableValueResponData = tempData };
+ }
+ }
+ };
+ MyGateway.Actions += action;
+ try
+ {
+ var jObject = new Newtonsoft.Json.Linq.JObject { { "DeviceAddr", device.DeviceAddr }, { "Epoint", device.DeviceEpoint }, { "Cluster_ID", clusterId }, { "Command", 120 } };
+ var data = new Newtonsoft.Json.Linq.JObject { { "Undivided", 0 }, { "AttributeId", attributeId }, { "AttributeDataType", attributeDataType }, { "AttributeData", attributeData } };
+ jObject.Add("Data", data);
+ MyGateway.Send("SetWritableValue", jObject.ToString());
+ }
+ catch { }
+
+ var timeOut = 0;
+ while (timeOut <= 30)
+ {
+ await System.Threading.Tasks.Task.Delay(100);
+ if (d != null)
+ {
+ break;
+ }
+ timeOut++;
+ }
+ if (timeOut > 30 && d == null)
+ {
+ d = new CommonDevice.SetWritableValueResponAllData { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" };
+ }
+ MyGateway.Actions -= action;
+ return d;
+ }
+
+ #endregion
}
}
--
Gitblit v1.8.0