From 06978e3b15b8536e2d4511ae4612fec1d556e145 Mon Sep 17 00:00:00 2001 From: 黄学彪 <hxb@hdlchina.com.cn> Date: 星期四, 07 十一月 2019 11:19:56 +0800 Subject: [PATCH] 合并了全部的代码,IOS 图片需要从新引入工程 --- ZigbeeApp/Shared/Phone/ZigBee/Device/AC.cs | 108 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 107 insertions(+), 1 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/ZigBee/Device/AC.cs b/ZigbeeApp/Shared/Phone/ZigBee/Device/AC.cs index e76b505..b8477ee 100755 --- 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> @@ -74,7 +79,12 @@ /// 鏀寔鐨勯閫熸ā寮� /// </summary> public List<FanMode> fanModes = new List<FanMode> { }; - + /// <summary> + /// <para>鑷畾涔夌┖璋冩敮鎸佺殑妯″紡(榛樿鍏ㄥ叧)</para> + /// <para>鏁扮粍绱㈠紩 -> 0:鍒跺喎 1:鍒剁儹 2:閫侀 3:闄ゆ箍 4:鑷姩</para> + /// <para>鍊� -> 1:浠h〃浣跨敤 0:浠h〃涓嶄娇鐢�</para> + /// </summary> + public int[] listSupportMode = new int[5] { 0, 0, 0, 0, 0 }; /// <summary> /// 鑾峰彇褰撳墠瀹ゅ唴娓╁害. @@ -101,6 +111,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> @@ -137,6 +157,14 @@ public void ReadFanModeSequence() { ReadAttri(Device.Cluster_ID.FanControl, AttriButeId.FanModeSequence); + } + + /// <summary> + /// 鑾峰彇绌鸿皟鑷畾涔夎缃殑鏀寔妯″紡 + /// </summary> + public void ReadModeSupport() + { + ReadAttri(Device.Cluster_ID.Thermostat, AttriButeId.AcModeSupport); } ///<summary > @@ -296,6 +324,84 @@ } ///<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()); + } + 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> SetSystemModeAsync(AcMode acMode) -- Gitblit v1.8.0