From 52005ed57f3f7bc796fdd1a878e4f298a126f1e8 Mon Sep 17 00:00:00 2001
From: gxc <guoxuecheng@guoxuechengdeMacBook-Pro.local>
Date: 星期二, 29 十月 2019 16:48:47 +0800
Subject: [PATCH] 2019.10.29-3
---
ZigbeeApp/Shared/Phone/ZigBee/Device/AC.cs | 99 +++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 94 insertions(+), 5 deletions(-)
diff --git a/ZigbeeApp/Shared/Phone/ZigBee/Device/AC.cs b/ZigbeeApp/Shared/Phone/ZigBee/Device/AC.cs
old mode 100644
new mode 100755
index 15ee0ba..2855c62
--- a/ZigbeeApp/Shared/Phone/ZigBee/Device/AC.cs
+++ b/ZigbeeApp/Shared/Phone/ZigBee/Device/AC.cs
@@ -27,6 +27,11 @@
public int currentCoolingSetpoint = 0;
/// <summary>
+ /// 褰撳墠鑷姩娓╁害
+ /// </summary>
+ public int currentAutoSetpoint;
+
+ /// <summary>
///鎭掓俯璁惧绫诲瀷
/// <para>鎭掓俯璁惧鍏峰鍔熻兘锛孉ttribute Values濡備笅</para>
/// <para>0:(Cooling Only) 鏃燞eat鍜孍mergency鍔熻兘</para>
@@ -101,6 +106,16 @@
public void ReadHeatingSetpoint()
{
ReadAttri(Device.Cluster_ID.Thermostat, AttriButeId.HeatingSetpoint);
+ }
+
+
+ /// <summary>
+ /// 鑾峰彇褰撳墠鑷姩搴︽暟.
+ /// <para>AttriButeId=18 (鍏堣皟鐢ㄥ彂鐜板睘鎬ф帴鍙o紝鏌ョ湅璁惧鏄惁鏀寔璇ユ帴鍙g殑灞炴�э級</para>
+ /// </summary>
+ public void ReadAutoSetpoint()
+ {
+ ReadAttri(Device.Cluster_ID.Thermostat, AttriButeId.AutoSetpoint);
}
/// <summary>
@@ -271,6 +286,84 @@
{
var jObject = new JObject { { "DeviceAddr", DeviceAddr }, { "Epoint", DeviceEpoint }, { "Cluster_ID", 513 }, { "Command", 120 } };
var data = new JObject { { "Undivided", 0 }, { "AttributeId", 18 }, { "AttributeDataType", 41 }, { "AttributeData", (int)temperature } };
+ jObject.Add("Data", data);
+ Gateway.Send("SetWritableValue", jObject.ToString());
+ }
+ catch { }
+
+ var dateTime = DateTime.Now;
+ while ((DateTime.Now - dateTime).TotalMilliseconds < WaitReceiveDataTime)
+ {
+ await System.Threading.Tasks.Task.Delay(10);
+ if (d != null)
+ {
+ break;
+ }
+ }
+ if ((DateTime.Now - dateTime).TotalMilliseconds > WaitReceiveDataTime)
+ {
+ d = new SetWritableValueResponAllData { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" };
+ }
+ Gateway.Actions -= action;
+ DebugPrintLog("SetWritableValue_Actions 閫�鍑�" + System.DateTime.Now.ToString());
+ return d;
+ });
+ }
+
+ ///<summary >
+ ///璁剧疆鑷姩搴︽暟.
+ /// </summary>
+ public async System.Threading.Tasks.Task<SetWritableValueResponAllData> SetAutoTemperatureAsync(int temperature)
+ {
+ if (Gateway == null)
+ {
+ return null;
+ }
+ return await System.Threading.Tasks.Task.Run(async () =>
+ {
+ 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 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)
+ {
+ d = new SetWritableValueResponAllData { errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖" };
+ }
+ else
+ {
+ d = new SetWritableValueResponAllData { errorResponData = temp, errorMessageBase = ErrorMess(temp.Error) };
+ }
+ }
+
+ if (topic == gatewayID + "/" + "SetWritableValue_Respon")
+ {
+ var gatewayTemp = new ZbGateway() { DeviceID = jobject.Value<int>("Device_ID"), DeviceAddr = jobject.Value<string>("DeviceAddr"), DeviceEpoint = jobject.Value<int>("Epoint"), DataID = jobject.Value<int>("Data_ID"), CurrentGateWayId = Gateway.getGatewayBaseInfo.gwID };
+ var tempData = Newtonsoft.Json.JsonConvert.DeserializeObject<SetWritableValueResponData>(jobject["Data"].ToString());
+
+ if (tempData == null)
+ {
+ d = new SetWritableValueResponAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" };
+ }
+ else
+ {
+ d = new SetWritableValueResponAllData { setWritableValueResponData = tempData };
+ DebugPrintLog($"UI鏀跺埌閫氱煡鍚庣殑涓婚_{ topic}");
+ }
+ }
+ };
+ Gateway.Actions += action;
+ DebugPrintLog("SetWritableValue_Actions 鍚姩" + "_" + System.DateTime.Now.ToString());
+ try
+ {
+ var jObject = new JObject { { "DeviceAddr", DeviceAddr }, { "Epoint", DeviceEpoint }, { "Cluster_ID", 513 }, { "Command", 120 } };
+ var data = new JObject { { "Undivided", 0 }, { "AttributeId", 4096 }, { "AttributeDataType", 41 }, { "AttributeData", (int)temperature } };
jObject.Add("Data", data);
Gateway.Send("SetWritableValue", jObject.ToString());
}
@@ -647,7 +740,6 @@
try
{
- OpenPassthroughControl(Gateway);
var passData = ReadACFirewareVersionData(reserve);
var jObject = new JObject { { "DeviceAddr", DeviceAddr }, { "Epoint", 200 }, { "Cluster_ID", 64513 }, { "Command", 0 } };
var data = new JObject { { "PassData", passData } };
@@ -815,7 +907,6 @@
try
{
- OpenPassthroughControl(Gateway);
var passData = UpggradeACNotificationData(firewareVer, firewareSize);
var jObject = new JObject { { "DeviceAddr", DeviceAddr }, { "Epoint", 200 }, { "Cluster_ID", 64513 }, { "Command", 0 } };
var data = new JObject { { "PassData", passData } };
@@ -968,7 +1059,6 @@
try
{
- OpenPassthroughControl(Gateway);
string passData = "";
if (upgradeData != null)
{
@@ -1031,7 +1121,7 @@
status = "ff";
}
-
+
offset = upgradeData.offset;
var dl = Convert.ToString(upgradeData.dataLength, 16);
@@ -1116,7 +1206,6 @@
try
{
- OpenPassthroughControl(Gateway);
var passData = SendFinishDataString(status);
var jObject = new JObject { { "DeviceAddr", DeviceAddr }, { "Epoint", 200 }, { "Cluster_ID", 64513 }, { "Command", 0 } };
var data = new JObject { { "PassData", passData } };
--
Gitblit v1.8.0